mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-04-02 13:45:10 -05:00
dynamic loading of settings tab contents
This commit is contained in:
parent
4333bd58cf
commit
bf28a512c6
@ -5,8 +5,8 @@
|
|||||||
<!-- <p>items per page, documents per view type</p> -->
|
<!-- <p>items per page, documents per view type</p> -->
|
||||||
<form [formGroup]="settingsForm" (ngSubmit)="saveSettings()">
|
<form [formGroup]="settingsForm" (ngSubmit)="saveSettings()">
|
||||||
|
|
||||||
<ul ngbNav #nav="ngbNav" class="nav-tabs">
|
<ul ngbNav #nav="ngbNav" (navChange)="maybeInitializeTab($event)" [(activeId)]="activeNavID" class="nav-tabs">
|
||||||
<li [ngbNavItem]="1">
|
<li [ngbNavItem]="SettingsNavIDs.General">
|
||||||
<a ngbNavLink i18n>General</a>
|
<a ngbNavLink i18n>General</a>
|
||||||
<ng-template ngbNavContent>
|
<ng-template ngbNavContent>
|
||||||
|
|
||||||
@ -162,7 +162,7 @@
|
|||||||
</ng-template>
|
</ng-template>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li [ngbNavItem]="2">
|
<li [ngbNavItem]="SettingsNavIDs.Notifications">
|
||||||
<a ngbNavLink i18n>Notifications</a>
|
<a ngbNavLink i18n>Notifications</a>
|
||||||
<ng-template ngbNavContent>
|
<ng-template ngbNavContent>
|
||||||
|
|
||||||
@ -180,7 +180,7 @@
|
|||||||
</ng-template>
|
</ng-template>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li [ngbNavItem]="3">
|
<li [ngbNavItem]="SettingsNavIDs.SavedViews" (mouseover)="maybeInitializeTab(SettingsNavIDs.SavedViews)" (focusin)="maybeInitializeTab(SettingsNavIDs.SavedViews)">
|
||||||
<a ngbNavLink i18n>Saved views</a>
|
<a ngbNavLink i18n>Saved views</a>
|
||||||
<ng-template ngbNavContent>
|
<ng-template ngbNavContent>
|
||||||
|
|
||||||
@ -210,7 +210,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div *ngIf="savedViews.length == 0" i18n>No saved views defined.</div>
|
<div *ngIf="savedViews && savedViews.length == 0" i18n>No saved views defined.</div>
|
||||||
|
|
||||||
|
<div *ngIf="!savedViews">
|
||||||
|
<div class="spinner-border spinner-border-sm fw-normal ms-2 me-auto" role="status"></div>
|
||||||
|
<div class="visually-hidden" i18n>Loading...</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -30,6 +30,16 @@ import { ActivatedRoute } from '@angular/router'
|
|||||||
import { ViewportScroller } from '@angular/common'
|
import { ViewportScroller } from '@angular/common'
|
||||||
import { TourService } from 'ngx-ui-tour-ng-bootstrap'
|
import { TourService } from 'ngx-ui-tour-ng-bootstrap'
|
||||||
import { ComponentWithPermissions } from '../../with-permissions/with-permissions.component'
|
import { ComponentWithPermissions } from '../../with-permissions/with-permissions.component'
|
||||||
|
import { NgbNavChangeEvent } from '@ng-bootstrap/ng-bootstrap'
|
||||||
|
import { Results } from 'src/app/data/results'
|
||||||
|
|
||||||
|
enum SettingsNavIDs {
|
||||||
|
General = 1,
|
||||||
|
Notifications = 2,
|
||||||
|
SavedViews = 3,
|
||||||
|
Mail = 4,
|
||||||
|
UsersGroups = 5,
|
||||||
|
}
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-settings',
|
selector: 'app-settings',
|
||||||
@ -40,6 +50,9 @@ export class SettingsComponent
|
|||||||
extends ComponentWithPermissions
|
extends ComponentWithPermissions
|
||||||
implements OnInit, AfterViewInit, OnDestroy, DirtyComponent
|
implements OnInit, AfterViewInit, OnDestroy, DirtyComponent
|
||||||
{
|
{
|
||||||
|
SettingsNavIDs = SettingsNavIDs
|
||||||
|
activeNavID: number
|
||||||
|
|
||||||
savedViewGroup = new FormGroup({})
|
savedViewGroup = new FormGroup({})
|
||||||
|
|
||||||
settingsForm = new FormGroup({
|
settingsForm = new FormGroup({
|
||||||
@ -150,17 +163,28 @@ export class SettingsComponent
|
|||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
|
this.initialize()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Load tab contents 'on demand', either on mouseover or focusin (i.e. before click) or on nav change event
|
||||||
|
maybeInitializeTab(navIDorEvent: number | NgbNavChangeEvent): void {
|
||||||
|
const navID =
|
||||||
|
typeof navIDorEvent == 'number' ? navIDorEvent : navIDorEvent.nextId
|
||||||
|
// initialize saved views
|
||||||
|
if (navID == SettingsNavIDs.SavedViews && !this.savedViews) {
|
||||||
this.savedViewService.listAll().subscribe((r) => {
|
this.savedViewService.listAll().subscribe((r) => {
|
||||||
this.savedViews = r.results
|
this.savedViews = r.results
|
||||||
this.initialize()
|
this.initialize()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
initialize() {
|
initialize() {
|
||||||
this.unsubscribeNotifier.next(true)
|
this.unsubscribeNotifier.next(true)
|
||||||
|
|
||||||
let storeData = this.getCurrentSettings()
|
let storeData = this.getCurrentSettings()
|
||||||
|
|
||||||
|
if (this.savedViews) {
|
||||||
for (let view of this.savedViews) {
|
for (let view of this.savedViews) {
|
||||||
storeData.savedViews[view.id.toString()] = {
|
storeData.savedViews[view.id.toString()] = {
|
||||||
id: view.id,
|
id: view.id,
|
||||||
@ -178,6 +202,7 @@ export class SettingsComponent
|
|||||||
})
|
})
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
this.store = new BehaviorSubject(storeData)
|
this.store = new BehaviorSubject(storeData)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user