mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2026-07-31 16:15:58 +00:00
Add to management list
This commit is contained in:
@@ -11,10 +11,19 @@
|
||||
<li class="list-group-item py-3">
|
||||
<div [formGroupName]="view.id">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="col-md">
|
||||
<pngx-input-text title="Name" formControlName="name"></pngx-input-text>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="col-md">
|
||||
<pngx-input-select
|
||||
i18n-title
|
||||
title="Icon"
|
||||
formControlName="icon"
|
||||
[items]="savedViewIcons"
|
||||
iconField="icon">
|
||||
</pngx-input-select>
|
||||
</div>
|
||||
<div class="col-md">
|
||||
<div class="form-check form-switch mt-3">
|
||||
<input type="checkbox" class="form-check-input" id="show_on_dashboard_{{view.id}}" formControlName="show_on_dashboard">
|
||||
<label class="form-check-label" for="show_on_dashboard_{{view.id}}" i18n>Show on dashboard</label>
|
||||
|
||||
@@ -25,8 +25,20 @@ import { PageHeaderComponent } from '../../common/page-header/page-header.compon
|
||||
import { SavedViewsComponent } from './saved-views.component'
|
||||
|
||||
const savedViews = [
|
||||
{ id: 1, name: 'view1', show_in_sidebar: true, show_on_dashboard: true },
|
||||
{ id: 2, name: 'view2', show_in_sidebar: false, show_on_dashboard: false },
|
||||
{
|
||||
id: 1,
|
||||
name: 'view1',
|
||||
icon: 'archive',
|
||||
show_in_sidebar: true,
|
||||
show_on_dashboard: true,
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
name: 'view2',
|
||||
icon: 'funnel',
|
||||
show_in_sidebar: false,
|
||||
show_on_dashboard: false,
|
||||
},
|
||||
]
|
||||
|
||||
describe('SavedViewsComponent', () => {
|
||||
@@ -157,6 +169,24 @@ describe('SavedViewsComponent', () => {
|
||||
expect(patchBody.show_in_sidebar).toBeUndefined()
|
||||
})
|
||||
|
||||
it('should persist a changed icon', () => {
|
||||
const patchSpy = jest.spyOn(savedViewService, 'patchMany')
|
||||
const view = savedViews[0]
|
||||
const iconControl = component.savedViewsForm
|
||||
.get('savedViews')
|
||||
.get(view.id.toString())
|
||||
.get('icon')
|
||||
|
||||
iconControl.setValue('bell')
|
||||
iconControl.markAsDirty()
|
||||
component.save()
|
||||
|
||||
expect(patchSpy.mock.calls[0][0][0]).toMatchObject({
|
||||
id: view.id,
|
||||
icon: 'bell',
|
||||
})
|
||||
})
|
||||
|
||||
it('should persist visibility changes to user settings', () => {
|
||||
const patchSpy = jest.spyOn(savedViewService, 'patchMany')
|
||||
const updateVisibilitySpy = jest
|
||||
|
||||
@@ -13,6 +13,10 @@ import { BehaviorSubject, Observable, of, switchMap, takeUntil } from 'rxjs'
|
||||
import { PermissionsDialogComponent } from 'src/app/components/common/permissions-dialog/permissions-dialog.component'
|
||||
import { DisplayMode } from 'src/app/data/document'
|
||||
import { SavedView } from 'src/app/data/saved-view'
|
||||
import {
|
||||
DEFAULT_SAVED_VIEW_ICON,
|
||||
SAVED_VIEW_ICONS,
|
||||
} from 'src/app/data/saved-view-icons'
|
||||
import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive'
|
||||
import {
|
||||
PermissionAction,
|
||||
@@ -24,6 +28,7 @@ import { ToastService } from 'src/app/services/toast.service'
|
||||
import { ConfirmButtonComponent } from '../../common/confirm-button/confirm-button.component'
|
||||
import { DragDropSelectComponent } from '../../common/input/drag-drop-select/drag-drop-select.component'
|
||||
import { NumberComponent } from '../../common/input/number/number.component'
|
||||
import { SelectComponent } from '../../common/input/select/select.component'
|
||||
import { TextComponent } from '../../common/input/text/text.component'
|
||||
import { PageHeaderComponent } from '../../common/page-header/page-header.component'
|
||||
import { LoadingComponentWithPermissions } from '../../loading-component/loading.component'
|
||||
@@ -35,6 +40,7 @@ import { LoadingComponentWithPermissions } from '../../loading-component/loading
|
||||
PageHeaderComponent,
|
||||
ConfirmButtonComponent,
|
||||
NumberComponent,
|
||||
SelectComponent,
|
||||
TextComponent,
|
||||
IfPermissionsDirective,
|
||||
DragDropSelectComponent,
|
||||
@@ -55,6 +61,7 @@ export class SavedViewsComponent
|
||||
private readonly modalService = inject(NgbModal)
|
||||
|
||||
DisplayMode = DisplayMode
|
||||
readonly savedViewIcons = SAVED_VIEW_ICONS
|
||||
|
||||
readonly savedViews = signal<SavedView[]>(undefined)
|
||||
private savedViewsGroup = new FormGroup({})
|
||||
@@ -105,6 +112,7 @@ export class SavedViewsComponent
|
||||
storeData.savedViews[view.id.toString()] = {
|
||||
id: view.id,
|
||||
name: view.name,
|
||||
icon: view.icon ?? DEFAULT_SAVED_VIEW_ICON,
|
||||
show_on_dashboard: view.show_on_dashboard,
|
||||
show_in_sidebar: view.show_in_sidebar,
|
||||
page_size: view.page_size,
|
||||
@@ -117,6 +125,7 @@ export class SavedViewsComponent
|
||||
new FormGroup({
|
||||
id: new FormControl({ value: null, disabled: !canEdit }),
|
||||
name: new FormControl({ value: null, disabled: !canEdit }),
|
||||
icon: new FormControl({ value: null, disabled: !canEdit }),
|
||||
show_on_dashboard: new FormControl({
|
||||
value: null,
|
||||
disabled: false,
|
||||
@@ -195,6 +204,7 @@ export class SavedViewsComponent
|
||||
|
||||
const modelFieldsChanged =
|
||||
group.get('name')?.dirty ||
|
||||
group.get('icon')?.dirty ||
|
||||
group.get('page_size')?.dirty ||
|
||||
group.get('display_mode')?.dirty ||
|
||||
group.get('display_fields')?.dirty
|
||||
|
||||
Reference in New Issue
Block a user