import { Component, OnInit, Renderer2 } from '@angular/core'; import { FormControl, FormGroup } from '@angular/forms'; import { PaperlessSavedView } from 'src/app/data/paperless-saved-view'; import { DocumentListViewService } from 'src/app/services/document-list-view.service'; import { SavedViewService } from 'src/app/services/rest/saved-view.service'; import { SettingsService, SETTINGS_KEYS } from 'src/app/services/settings.service'; import { ToastService } from 'src/app/services/toast.service'; @Component({ selector: 'app-settings', templateUrl: './settings.component.html', styleUrls: ['./settings.component.scss'] }) export class SettingsComponent implements OnInit { savedViewGroup = new FormGroup({}) settingsForm = new FormGroup({ 'bulkEditConfirmationDialogs': new FormControl(this.settings.get(SETTINGS_KEYS.BULK_EDIT_CONFIRMATION_DIALOGS)), 'bulkEditApplyOnClose': new FormControl(this.settings.get(SETTINGS_KEYS.BULK_EDIT_APPLY_ON_CLOSE)), 'documentListItemPerPage': new FormControl(this.settings.get(SETTINGS_KEYS.DOCUMENT_LIST_SIZE)), 'darkModeUseSystem': new FormControl(this.settings.get(SETTINGS_KEYS.DARK_MODE_USE_SYSTEM)), 'darkModeEnabled': new FormControl(this.settings.get(SETTINGS_KEYS.DARK_MODE_ENABLED)), 'savedViews': this.savedViewGroup }) savedViews: PaperlessSavedView[] constructor( public savedViewService: SavedViewService, private documentListViewService: DocumentListViewService, private toastService: ToastService, private settings: SettingsService ) { } ngOnInit() { this.savedViewService.listAll().subscribe(r => { this.savedViews = r.results for (let view of this.savedViews) { this.savedViewGroup.addControl(view.id.toString(), new FormGroup({ "id": new FormControl(view.id), "name": new FormControl(view.name), "show_on_dashboard": new FormControl(view.show_on_dashboard), "show_in_sidebar": new FormControl(view.show_in_sidebar) })) } }) } deleteSavedView(savedView: PaperlessSavedView) { this.savedViewService.delete(savedView).subscribe(() => { this.savedViewGroup.removeControl(savedView.id.toString()) this.savedViews.splice(this.savedViews.indexOf(savedView), 1) this.toastService.showInfo($localize`Saved view "${savedView.name}" deleted.`) }) } toggleDarkModeSetting() { if (this.settingsForm.value.darkModeUseSystem) { (this.settingsForm.controls.darkModeEnabled as FormControl).disable() } else { (this.settingsForm.controls.darkModeEnabled as FormControl).enable() } } private saveLocalSettings() { this.settings.set(SETTINGS_KEYS.BULK_EDIT_APPLY_ON_CLOSE, this.settingsForm.value.bulkEditApplyOnClose) this.settings.set(SETTINGS_KEYS.BULK_EDIT_CONFIRMATION_DIALOGS, this.settingsForm.value.bulkEditConfirmationDialogs) this.settings.set(SETTINGS_KEYS.DOCUMENT_LIST_SIZE, this.settingsForm.value.documentListItemPerPage) this.settings.set(SETTINGS_KEYS.DARK_MODE_USE_SYSTEM, this.settingsForm.value.darkModeUseSystem) this.settings.set(SETTINGS_KEYS.DARK_MODE_ENABLED, (this.settingsForm.value.darkModeEnabled == true).toString()) this.documentListViewService.updatePageSize() this.settings.updateDarkModeSettings() this.toastService.showInfo($localize`Settings saved successfully.`) } saveSettings() { let x = [] for (let id in this.savedViewGroup.value) { x.push(this.savedViewGroup.value[id]) } if (x.length > 0) { this.savedViewService.patchMany(x).subscribe(s => { this.saveLocalSettings() }, error => { this.toastService.showError($localize`Error while storing settings on server: ${JSON.stringify(error.error)}`) }) } else { this.saveLocalSettings() } } }