mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-04-02 13:45:10 -05:00
Settings UI with live updating
This commit is contained in:
parent
1330390b4f
commit
aa55162e2e
@ -89,6 +89,17 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-3 col-form-label">
|
||||||
|
<span i18n>Sidebar</span>
|
||||||
|
</div>
|
||||||
|
<div class="col">
|
||||||
|
|
||||||
|
<app-input-check i18n-title title="Use 'slim' sidebar (icons only)" formControlName="slimSidebarEnabled"></app-input-check>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="row mb-3">
|
<div class="row mb-3">
|
||||||
<div class="col-md-3 col-form-label">
|
<div class="col-md-3 col-form-label">
|
||||||
<span i18n>Dark mode</span>
|
<span i18n>Dark mode</span>
|
||||||
|
@ -1,11 +1,4 @@
|
|||||||
import {
|
import { Component, Inject, LOCALE_ID, OnInit, OnDestroy } from '@angular/core'
|
||||||
Component,
|
|
||||||
Inject,
|
|
||||||
LOCALE_ID,
|
|
||||||
OnInit,
|
|
||||||
OnDestroy,
|
|
||||||
Renderer2,
|
|
||||||
} from '@angular/core'
|
|
||||||
import { FormControl, FormGroup } from '@angular/forms'
|
import { FormControl, FormGroup } from '@angular/forms'
|
||||||
import { PaperlessSavedView } from 'src/app/data/paperless-saved-view'
|
import { PaperlessSavedView } from 'src/app/data/paperless-saved-view'
|
||||||
import { DocumentListViewService } from 'src/app/services/document-list-view.service'
|
import { DocumentListViewService } from 'src/app/services/document-list-view.service'
|
||||||
@ -18,6 +11,7 @@ import { Toast, ToastService } from 'src/app/services/toast.service'
|
|||||||
import { dirtyCheck, DirtyComponent } from '@ngneat/dirty-check-forms'
|
import { dirtyCheck, DirtyComponent } from '@ngneat/dirty-check-forms'
|
||||||
import { Observable, Subscription, BehaviorSubject, first } from 'rxjs'
|
import { Observable, Subscription, BehaviorSubject, first } from 'rxjs'
|
||||||
import { SETTINGS_KEYS } from 'src/app/data/paperless-uisettings'
|
import { SETTINGS_KEYS } from 'src/app/data/paperless-uisettings'
|
||||||
|
import { ForwardRefHandling } from '@angular/compiler'
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-settings',
|
selector: 'app-settings',
|
||||||
@ -31,6 +25,7 @@ export class SettingsComponent implements OnInit, OnDestroy, DirtyComponent {
|
|||||||
bulkEditConfirmationDialogs: new FormControl(null),
|
bulkEditConfirmationDialogs: new FormControl(null),
|
||||||
bulkEditApplyOnClose: new FormControl(null),
|
bulkEditApplyOnClose: new FormControl(null),
|
||||||
documentListItemPerPage: new FormControl(null),
|
documentListItemPerPage: new FormControl(null),
|
||||||
|
slimSidebarEnabled: new FormControl(null),
|
||||||
darkModeUseSystem: new FormControl(null),
|
darkModeUseSystem: new FormControl(null),
|
||||||
darkModeEnabled: new FormControl(null),
|
darkModeEnabled: new FormControl(null),
|
||||||
darkModeInvertThumbs: new FormControl(null),
|
darkModeInvertThumbs: new FormControl(null),
|
||||||
@ -75,12 +70,18 @@ export class SettingsComponent implements OnInit, OnDestroy, DirtyComponent {
|
|||||||
private toastService: ToastService,
|
private toastService: ToastService,
|
||||||
private settings: SettingsService,
|
private settings: SettingsService,
|
||||||
@Inject(LOCALE_ID) public currentLocale: string
|
@Inject(LOCALE_ID) public currentLocale: string
|
||||||
) {}
|
) {
|
||||||
|
this.settings.changed.subscribe({
|
||||||
|
next: () => {
|
||||||
|
this.settingsForm.patchValue(this.getCurrentSettings(), {
|
||||||
|
emitEvent: false,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
ngOnInit() {
|
private getCurrentSettings() {
|
||||||
this.savedViewService.listAll().subscribe((r) => {
|
return {
|
||||||
this.savedViews = r.results
|
|
||||||
let storeData = {
|
|
||||||
bulkEditConfirmationDialogs: this.settings.get(
|
bulkEditConfirmationDialogs: this.settings.get(
|
||||||
SETTINGS_KEYS.BULK_EDIT_CONFIRMATION_DIALOGS
|
SETTINGS_KEYS.BULK_EDIT_CONFIRMATION_DIALOGS
|
||||||
),
|
),
|
||||||
@ -90,9 +91,8 @@ export class SettingsComponent implements OnInit, OnDestroy, DirtyComponent {
|
|||||||
documentListItemPerPage: this.settings.get(
|
documentListItemPerPage: this.settings.get(
|
||||||
SETTINGS_KEYS.DOCUMENT_LIST_SIZE
|
SETTINGS_KEYS.DOCUMENT_LIST_SIZE
|
||||||
),
|
),
|
||||||
darkModeUseSystem: this.settings.get(
|
slimSidebarEnabled: this.settings.get(SETTINGS_KEYS.SLIM_SIDEBAR),
|
||||||
SETTINGS_KEYS.DARK_MODE_USE_SYSTEM
|
darkModeUseSystem: this.settings.get(SETTINGS_KEYS.DARK_MODE_USE_SYSTEM),
|
||||||
),
|
|
||||||
darkModeEnabled: this.settings.get(SETTINGS_KEYS.DARK_MODE_ENABLED),
|
darkModeEnabled: this.settings.get(SETTINGS_KEYS.DARK_MODE_ENABLED),
|
||||||
darkModeInvertThumbs: this.settings.get(
|
darkModeInvertThumbs: this.settings.get(
|
||||||
SETTINGS_KEYS.DARK_MODE_THUMB_INVERTED
|
SETTINGS_KEYS.DARK_MODE_THUMB_INVERTED
|
||||||
@ -119,6 +119,12 @@ export class SettingsComponent implements OnInit, OnDestroy, DirtyComponent {
|
|||||||
),
|
),
|
||||||
commentsEnabled: this.settings.get(SETTINGS_KEYS.COMMENTS_ENABLED),
|
commentsEnabled: this.settings.get(SETTINGS_KEYS.COMMENTS_ENABLED),
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit() {
|
||||||
|
this.savedViewService.listAll().subscribe((r) => {
|
||||||
|
this.savedViews = r.results
|
||||||
|
let storeData = this.getCurrentSettings()
|
||||||
|
|
||||||
for (let view of this.savedViews) {
|
for (let view of this.savedViews) {
|
||||||
storeData.savedViews[view.id.toString()] = {
|
storeData.savedViews[view.id.toString()] = {
|
||||||
@ -192,6 +198,10 @@ export class SettingsComponent implements OnInit, OnDestroy, DirtyComponent {
|
|||||||
SETTINGS_KEYS.DOCUMENT_LIST_SIZE,
|
SETTINGS_KEYS.DOCUMENT_LIST_SIZE,
|
||||||
this.settingsForm.value.documentListItemPerPage
|
this.settingsForm.value.documentListItemPerPage
|
||||||
)
|
)
|
||||||
|
this.settings.set(
|
||||||
|
SETTINGS_KEYS.SLIM_SIDEBAR,
|
||||||
|
this.settingsForm.value.slimSidebarEnabled
|
||||||
|
)
|
||||||
this.settings.set(
|
this.settings.set(
|
||||||
SETTINGS_KEYS.DARK_MODE_USE_SYSTEM,
|
SETTINGS_KEYS.DARK_MODE_USE_SYSTEM,
|
||||||
this.settingsForm.value.darkModeUseSystem
|
this.settingsForm.value.darkModeUseSystem
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import { DOCUMENT } from '@angular/common'
|
import { DOCUMENT } from '@angular/common'
|
||||||
import { HttpClient } from '@angular/common/http'
|
import { HttpClient } from '@angular/common/http'
|
||||||
import {
|
import {
|
||||||
|
EventEmitter,
|
||||||
Inject,
|
Inject,
|
||||||
Injectable,
|
Injectable,
|
||||||
LOCALE_ID,
|
LOCALE_ID,
|
||||||
@ -46,6 +47,8 @@ export class SettingsService {
|
|||||||
|
|
||||||
public displayName: string
|
public displayName: string
|
||||||
|
|
||||||
|
public changed = new EventEmitter()
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
rendererFactory: RendererFactory2,
|
rendererFactory: RendererFactory2,
|
||||||
@Inject(DOCUMENT) private document,
|
@Inject(DOCUMENT) private document,
|
||||||
@ -360,7 +363,9 @@ export class SettingsService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
storeSettings(): Observable<any> {
|
storeSettings(): Observable<any> {
|
||||||
return this.http.post(this.baseUrl, { settings: this.settings })
|
return this.http
|
||||||
|
.post(this.baseUrl, { settings: this.settings })
|
||||||
|
.pipe(tap((result) => this.changed.emit(!!result.success)))
|
||||||
}
|
}
|
||||||
|
|
||||||
maybeMigrateSettings() {
|
maybeMigrateSettings() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user