paperless-ngx/src-ui/src/app/components/manage/settings/settings.component.ts

111 lines
4.7 KiB
TypeScript
Raw Normal View History

2021-01-21 21:05:16 +01:00
import { Component, Inject, LOCALE_ID, OnInit, Renderer2 } from '@angular/core';
2020-11-04 19:28:08 +01:00
import { FormControl, FormGroup } from '@angular/forms';
import { PaperlessSavedView } from 'src/app/data/paperless-saved-view';
2020-11-04 19:28:08 +01:00
import { DocumentListViewService } from 'src/app/services/document-list-view.service';
import { SavedViewService } from 'src/app/services/rest/saved-view.service';
import { LanguageOption, SettingsService, SETTINGS_KEYS } from 'src/app/services/settings.service';
2020-12-28 21:52:09 +01:00
import { ToastService } from 'src/app/services/toast.service';
2020-10-27 01:10:18 +01:00
@Component({
selector: 'app-settings',
templateUrl: './settings.component.html',
styleUrls: ['./settings.component.scss']
2020-10-27 01:10:18 +01:00
})
2020-12-15 02:35:04 +01:00
export class SettingsComponent implements OnInit {
savedViewGroup = new FormGroup({})
2020-10-27 01:10:18 +01:00
2020-11-04 19:28:08 +01:00
settingsForm = new FormGroup({
2020-12-29 17:09:07 +01:00
'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)),
'useNativePdfViewer': new FormControl(this.settings.get(SETTINGS_KEYS.USE_NATIVE_PDF_VIEWER)),
2021-01-15 12:50:34 +01:00
'savedViews': this.savedViewGroup,
'displayLanguage': new FormControl(this.settings.getLanguage()),
'dateLocale': new FormControl(this.settings.get(SETTINGS_KEYS.DATE_LOCALE)),
'dateFormat': new FormControl(this.settings.get(SETTINGS_KEYS.DATE_FORMAT)),
2020-11-04 19:28:08 +01:00
})
2020-12-27 23:05:19 -08:00
savedViews: PaperlessSavedView[]
2021-01-17 12:14:19 +01:00
get computedDateLocale(): string {
2021-01-16 20:49:12 -08:00
return this.settingsForm.value.dateLocale || this.settingsForm.value.displayLanguage
}
2020-10-30 22:46:43 +01:00
constructor(
public savedViewService: SavedViewService,
2020-12-14 21:14:33 +01:00
private documentListViewService: DocumentListViewService,
2020-12-27 23:05:19 -08:00
private toastService: ToastService,
2021-01-21 21:05:16 +01:00
private settings: SettingsService,
@Inject(LOCALE_ID) public currentLocale: string
2020-10-30 22:46:43 +01:00
) { }
2020-12-15 02:35:04 +01:00
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) {
2020-12-14 21:14:33 +01:00
this.savedViewService.delete(savedView).subscribe(() => {
2020-12-15 02:35:04 +01:00
this.savedViewGroup.removeControl(savedView.id.toString())
this.savedViews.splice(this.savedViews.indexOf(savedView), 1)
2021-01-02 14:18:20 +01:00
this.toastService.showInfo($localize`Saved view "${savedView.name}" deleted.`)
2020-12-14 21:14:33 +01:00
})
2020-10-30 22:46:43 +01:00
}
private saveLocalSettings() {
2020-12-29 17:09:07 +01:00
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.settings.set(SETTINGS_KEYS.USE_NATIVE_PDF_VIEWER, this.settingsForm.value.useNativePdfViewer)
this.settings.set(SETTINGS_KEYS.DATE_LOCALE, this.settingsForm.value.dateLocale)
this.settings.set(SETTINGS_KEYS.DATE_FORMAT, this.settingsForm.value.dateFormat)
2021-01-15 12:50:34 +01:00
this.settings.setLanguage(this.settingsForm.value.displayLanguage)
this.documentListViewService.updatePageSize()
2021-01-01 22:38:26 +01:00
this.settings.updateDarkModeSettings()
2020-12-28 21:52:09 +01:00
this.toastService.showInfo($localize`Settings saved successfully.`)
}
get displayLanguageOptions(): LanguageOption[] {
return [{code: "", name: $localize`Use system language`}].concat(this.settings.getLanguageOptions())
}
get dateLocaleOptions(): LanguageOption[] {
2021-01-17 00:25:40 +01:00
return [{code: "", name: $localize`Use date format of display language`}].concat(this.settings.getLanguageOptions())
}
get today() {
return new Date()
2021-01-15 12:50:34 +01:00
}
2020-11-04 19:28:08 +01:00
saveSettings() {
2020-12-15 02:35:04 +01:00
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 => {
2020-12-28 21:52:09 +01:00
this.toastService.showError($localize`Error while storing settings on server: ${JSON.stringify(error.error)}`)
})
} else {
this.saveLocalSettings()
}
2020-12-15 02:35:04 +01:00
2020-11-04 19:28:08 +01:00
}
2020-10-27 01:10:18 +01:00
}