Files
Bridge-Multi/src-angular/app/components/tools/tools.component.ts
2025-03-09 16:55:53 -05:00

79 lines
2.2 KiB
TypeScript

import { Component, ElementRef, NgZone, ViewChild } from '@angular/core'
import { SettingsService } from 'src-angular/app/core/services/settings.service'
@Component({
selector: 'app-tools',
templateUrl: './tools.component.html',
standalone: false,
})
export class ToolsComponent {
@ViewChild('themeDropdown', { static: true }) themeDropdown: ElementRef
@ViewChild('scanErrorModal') scanErrorModal: ElementRef<HTMLDialogElement>
public scanning = false
public buttonText = 'Scan for issues'
public scanErrorText = ''
constructor(
zone: NgZone,
public settingsService: SettingsService,
) {
window.electron.on.updateIssueScan(({ status, message }) => zone.run(() => {
if (status === 'progress') {
this.buttonText = message
} else if (status === 'error') {
this.scanning = false
this.scanErrorText = message
this.scanErrorModal.nativeElement.showModal()
} else if (status === 'done') {
this.scanning = false
this.buttonText = message + ' (click to scan again)'
}
}))
}
openIssueScanDirectory() {
if (this.settingsService.issueScanDirectory) {
window.electron.emit.showFolder(this.settingsService.issueScanDirectory)
}
}
async getIssueScanDirectory() {
const result = await window.electron.invoke.showOpenDialog({
title: 'Choose issue scan folder',
defaultPath: this.settingsService.issueScanDirectory || '',
properties: ['openDirectory'],
})
if (result.canceled === false) {
this.settingsService.issueScanDirectory = result.filePaths[0]
}
}
openSpreadsheetOutputDirectory() {
if (this.settingsService.spreadsheetOutputDirectory) {
window.electron.emit.showFolder(this.settingsService.spreadsheetOutputDirectory)
}
}
async getSpreadsheetOutputDirectory() {
const result = await window.electron.invoke.showOpenDialog({
title: 'Choose spreadsheet output folder',
defaultPath: this.settingsService.spreadsheetOutputDirectory || '',
properties: ['openDirectory'],
})
if (result.canceled === false) {
this.settingsService.spreadsheetOutputDirectory = result.filePaths[0]
}
}
async scanIssues() {
if (this.settingsService.issueScanDirectory && this.settingsService.spreadsheetOutputDirectory) {
this.scanning = true
window.electron.emit.scanIssues()
}
}
}