diff --git a/src-ui/messages.xlf b/src-ui/messages.xlf index 3fffe4f6e..88966edf9 100644 --- a/src-ui/messages.xlf +++ b/src-ui/messages.xlf @@ -322,20 +322,24 @@ 128 - src/app/components/manage/management-list/management-list.component.html - 90 + src/app/components/manage/custom-fields/custom-fields.component.html + 39 src/app/components/manage/management-list/management-list.component.html - 90 + 101 src/app/components/manage/management-list/management-list.component.html - 90 + 101 src/app/components/manage/management-list/management-list.component.html - 90 + 101 + + + src/app/components/manage/management-list/management-list.component.html + 101 @@ -1529,35 +1533,35 @@ src/app/components/manage/management-list/management-list.component.html - 84 + 83 src/app/components/manage/management-list/management-list.component.html - 84 + 83 src/app/components/manage/management-list/management-list.component.html - 84 + 83 src/app/components/manage/management-list/management-list.component.html - 84 + 83 src/app/components/manage/management-list/management-list.component.html - 96 + 95 src/app/components/manage/management-list/management-list.component.html - 96 + 95 src/app/components/manage/management-list/management-list.component.html - 96 + 95 src/app/components/manage/management-list/management-list.component.html - 96 + 95 src/app/components/manage/management-list/management-list.component.ts @@ -2219,7 +2223,7 @@ src/app/components/manage/custom-fields/custom-fields.component.ts - 73 + 80 src/app/components/manage/mail/mail.component.ts @@ -2438,35 +2442,35 @@ src/app/components/manage/management-list/management-list.component.html - 83 + 82 src/app/components/manage/management-list/management-list.component.html - 83 + 82 src/app/components/manage/management-list/management-list.component.html - 83 + 82 src/app/components/manage/management-list/management-list.component.html - 83 + 82 src/app/components/manage/management-list/management-list.component.html - 93 + 92 src/app/components/manage/management-list/management-list.component.html - 93 + 92 src/app/components/manage/management-list/management-list.component.html - 93 + 92 src/app/components/manage/management-list/management-list.component.html - 93 + 92 src/app/components/manage/workflows/workflows.component.html @@ -2570,7 +2574,7 @@ src/app/components/manage/custom-fields/custom-fields.component.ts - 75 + 82 src/app/components/manage/mail/mail.component.ts @@ -3286,7 +3290,7 @@ src/app/components/manage/custom-fields/custom-fields.component.ts - 56 + 63 @@ -3297,7 +3301,7 @@ src/app/components/manage/custom-fields/custom-fields.component.ts - 63 + 70 @@ -7479,35 +7483,35 @@ No fields defined. src/app/components/manage/custom-fields/custom-fields.component.html - 42 + 47 Confirm delete field src/app/components/manage/custom-fields/custom-fields.component.ts - 71 + 78 This operation will permanently delete this field. src/app/components/manage/custom-fields/custom-fields.component.ts - 72 + 79 Deleted field src/app/components/manage/custom-fields/custom-fields.component.ts - 81 + 88 Error deleting field. src/app/components/manage/custom-fields/custom-fields.component.ts - 86 + 93 @@ -7799,42 +7803,42 @@ 39 - - Filter Documents + + Filter Documents () src/app/components/manage/management-list/management-list.component.html - 82 + 85 src/app/components/manage/management-list/management-list.component.html - 82 + 85 src/app/components/manage/management-list/management-list.component.html - 82 + 85 src/app/components/manage/management-list/management-list.component.html - 82 + 85 {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 110 + 116 src/app/components/manage/management-list/management-list.component.html - 110 + 116 src/app/components/manage/management-list/management-list.component.html - 110 + 116 src/app/components/manage/management-list/management-list.component.html - 110 + 116 diff --git a/src-ui/src/app/components/manage/custom-fields/custom-fields.component.html b/src-ui/src/app/components/manage/custom-fields/custom-fields.component.html index c87a93050..e8878fb9f 100644 --- a/src-ui/src/app/components/manage/custom-fields/custom-fields.component.html +++ b/src-ui/src/app/components/manage/custom-fields/custom-fields.component.html @@ -34,6 +34,11 @@  Delete +
+ +
diff --git a/src-ui/src/app/components/manage/custom-fields/custom-fields.component.spec.ts b/src-ui/src/app/components/manage/custom-fields/custom-fields.component.spec.ts index 2bb6c82d7..59d5ff0e1 100644 --- a/src-ui/src/app/components/manage/custom-fields/custom-fields.component.spec.ts +++ b/src-ui/src/app/components/manage/custom-fields/custom-fields.component.spec.ts @@ -22,6 +22,12 @@ import { PageHeaderComponent } from '../../common/page-header/page-header.compon import { CustomFieldEditDialogComponent } from '../../common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component' import { NgxBootstrapIconsModule, allIcons } from 'ngx-bootstrap-icons' import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http' +import { DocumentListViewService } from 'src/app/services/document-list-view.service' +import { FILTER_CUSTOM_FIELDS_QUERY } from 'src/app/data/filter-rule-type' +import { + CustomFieldQueryLogicalOperator, + CustomFieldQueryOperator, +} from 'src/app/data/custom-field-query' const fields: CustomField[] = [ { @@ -42,6 +48,7 @@ describe('CustomFieldsComponent', () => { let customFieldsService: CustomFieldsService let modalService: NgbModal let toastService: ToastService + let listViewService: DocumentListViewService beforeEach(() => { TestBed.configureTestingModule({ @@ -83,6 +90,7 @@ describe('CustomFieldsComponent', () => { ) modalService = TestBed.inject(NgbModal) toastService = TestBed.inject(ToastService) + listViewService = TestBed.inject(DocumentListViewService) fixture = TestBed.createComponent(CustomFieldsComponent) component = fixture.componentInstance @@ -162,4 +170,18 @@ describe('CustomFieldsComponent', () => { editDialog.confirmClicked.emit() expect(reloadSpy).toHaveBeenCalled() }) + + it('should support filter documents', () => { + const filterSpy = jest.spyOn(listViewService, 'quickFilter') + component.filterDocuments(fields[0]) + expect(filterSpy).toHaveBeenCalledWith([ + { + rule_type: FILTER_CUSTOM_FIELDS_QUERY, + value: JSON.stringify([ + CustomFieldQueryLogicalOperator.Or, + [[fields[0].id, CustomFieldQueryOperator.Exists, true]], + ]), + }, + ]) + }) }) diff --git a/src-ui/src/app/components/manage/custom-fields/custom-fields.component.ts b/src-ui/src/app/components/manage/custom-fields/custom-fields.component.ts index 33f2751a9..60bbcc09c 100644 --- a/src-ui/src/app/components/manage/custom-fields/custom-fields.component.ts +++ b/src-ui/src/app/components/manage/custom-fields/custom-fields.component.ts @@ -9,6 +9,12 @@ import { ConfirmDialogComponent } from '../../common/confirm-dialog/confirm-dial import { CustomFieldEditDialogComponent } from '../../common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component' import { EditDialogMode } from '../../common/edit-dialog/edit-dialog.component' import { ComponentWithPermissions } from '../../with-permissions/with-permissions.component' +import { DocumentListViewService } from 'src/app/services/document-list-view.service' +import { FILTER_CUSTOM_FIELDS_QUERY } from 'src/app/data/filter-rule-type' +import { + CustomFieldQueryLogicalOperator, + CustomFieldQueryOperator, +} from 'src/app/data/custom-field-query' @Component({ selector: 'pngx-custom-fields', @@ -26,7 +32,8 @@ export class CustomFieldsComponent private customFieldsService: CustomFieldsService, public permissionsService: PermissionsService, private modalService: NgbModal, - private toastService: ToastService + private toastService: ToastService, + private documentListViewService: DocumentListViewService ) { super() } @@ -92,4 +99,16 @@ export class CustomFieldsComponent getDataType(field: CustomField): string { return DATA_TYPE_LABELS.find((l) => l.id === field.data_type).name } + + filterDocuments(field: CustomField) { + this.documentListViewService.quickFilter([ + { + rule_type: FILTER_CUSTOM_FIELDS_QUERY, + value: JSON.stringify([ + CustomFieldQueryLogicalOperator.Or, + [[field.id, CustomFieldQueryOperator.Exists, true]], + ]), + }, + ]) + } } diff --git a/src-ui/src/app/components/manage/management-list/management-list.component.html b/src-ui/src/app/components/manage/management-list/management-list.component.html index a180f4941..e9a181819 100644 --- a/src-ui/src/app/components/manage/management-list/management-list.component.html +++ b/src-ui/src/app/components/manage/management-list/management-list.component.html @@ -79,16 +79,15 @@
- + @if (object.document_count > 0) { + + }
-
- +
@@ -96,6 +95,13 @@  Delete
+ @if (object.document_count > 0) { +
+ +
+ } } diff --git a/src-ui/src/app/components/manage/management-list/management-list.component.spec.ts b/src-ui/src/app/components/manage/management-list/management-list.component.spec.ts index 557d5f388..9aa876da2 100644 --- a/src-ui/src/app/components/manage/management-list/management-list.component.spec.ts +++ b/src-ui/src/app/components/manage/management-list/management-list.component.spec.ts @@ -49,16 +49,19 @@ const tags: Tag[] = [ name: 'Tag1 Foo', matching_algorithm: MATCH_LITERAL, match: 'foo', + document_count: 35, }, { id: 2, name: 'Tag2', matching_algorithm: MATCH_NONE, + document_count: 0, }, { id: 3, name: 'Tag3', matching_algorithm: MATCH_AUTO, + document_count: 5, }, ] @@ -180,7 +183,7 @@ describe('ManagementListComponent', () => { const toastInfoSpy = jest.spyOn(toastService, 'showInfo') const reloadSpy = jest.spyOn(component, 'reloadData') - const editButton = fixture.debugElement.queryAll(By.css('button'))[7] + const editButton = fixture.debugElement.queryAll(By.css('button'))[6] editButton.triggerEventHandler('click') expect(modal).not.toBeUndefined() @@ -205,7 +208,7 @@ describe('ManagementListComponent', () => { const deleteSpy = jest.spyOn(tagService, 'delete') const reloadSpy = jest.spyOn(component, 'reloadData') - const deleteButton = fixture.debugElement.queryAll(By.css('button'))[8] + const deleteButton = fixture.debugElement.queryAll(By.css('button'))[7] deleteButton.triggerEventHandler('click') expect(modal).not.toBeUndefined() @@ -225,7 +228,7 @@ describe('ManagementListComponent', () => { it('should support quick filter for objects', () => { const qfSpy = jest.spyOn(documentListViewService, 'quickFilter') - const filterButton = fixture.debugElement.queryAll(By.css('button'))[6] + const filterButton = fixture.debugElement.queryAll(By.css('button'))[8] filterButton.triggerEventHandler('click') expect(qfSpy).toHaveBeenCalledWith([ { rule_type: FILTER_HAS_TAGS_ALL, value: tags[0].id.toString() },