From 51184e5b16433ce6e93c73e28d97775f0b3e2b5e Mon Sep 17 00:00:00 2001 From: davidcanonieto Date: Mon, 28 Sep 2020 10:14:02 +0200 Subject: [PATCH] [ADF-5257] Refactor Document list header filters (#1691) * [ADF-5219] Refactor Document list header filters * Fix navigation * Remove unsued code * Push package-lock * Fix C306990 --- e2e/suites/navigation/single-click.test.ts | 2 + package-lock.json | 66 +++++++++---------- package.json | 6 +- src/app/components/files/files.component.html | 19 +----- src/app/components/files/files.component.ts | 31 +++++---- src/app/components/page.component.spec.ts | 12 ---- src/app/components/page.component.ts | 4 -- 7 files changed, 58 insertions(+), 82 deletions(-) diff --git a/e2e/suites/navigation/single-click.test.ts b/e2e/suites/navigation/single-click.test.ts index b0450b054..5882d0818 100755 --- a/e2e/suites/navigation/single-click.test.ts +++ b/e2e/suites/navigation/single-click.test.ts @@ -200,6 +200,8 @@ describe('Single click on item name', () => { describe('on Search Results', () => { beforeEach(async () => { + const initialRecentTotalItems = await apis.user.search.getTotalItems(username); + await apis.user.search.waitForApi(username, { expect: initialRecentTotalItems + 2 }); await searchInput.clickSearchButton(); await searchInput.checkFilesAndFolders(); }); diff --git a/package-lock.json b/package-lock.json index 3fc1627b0..523d77980 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,25 +29,25 @@ } }, "@alfresco/adf-content-services": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@alfresco/adf-content-services/-/adf-content-services-4.0.0.tgz", - "integrity": "sha512-dkqIabqiAROPabsxskyegsz7jCM9ao0D7lRdfvweBWUGMFIRTHWnVtbBRBbTAgghKf0lcLMgGuB0ScHYcEcCBQ==", + "version": "4.1.0-c84ef7318ff84a681971f7e3aa08065b13eb5e05", + "resolved": "https://registry.npmjs.org/@alfresco/adf-content-services/-/adf-content-services-4.1.0-c84ef7318ff84a681971f7e3aa08065b13eb5e05.tgz", + "integrity": "sha512-UIxRluX2+cjaeovBT8mv1IHNHHSKiwVZLCoe9+MroYSXiUNJRT/DwtxVmXjwLqgAta1hqe5BF5C4tncedXXODg==", "requires": { "tslib": "^2.0.0" } }, "@alfresco/adf-core": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@alfresco/adf-core/-/adf-core-4.0.0.tgz", - "integrity": "sha512-SKUF7Q4NpGd3BbdCE6FxxD4SgFO1RD709yFptPOCljO2mYRFppyAWldgcfpNYe+2gXJ8bUUF2AUDAlbHtPwUsA==", + "version": "4.1.0-c84ef7318ff84a681971f7e3aa08065b13eb5e05", + "resolved": "https://registry.npmjs.org/@alfresco/adf-core/-/adf-core-4.1.0-c84ef7318ff84a681971f7e3aa08065b13eb5e05.tgz", + "integrity": "sha512-PszXiBcU4DlY5BaLhz+SoOB8WAWsv8x9NwPysZpFAGA9LsI4UC6ma66tpfjCSIdM7y0QjIFi8crqaQ5NPwNGtQ==", "requires": { "tslib": "^2.0.0" } }, "@alfresco/adf-extensions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@alfresco/adf-extensions/-/adf-extensions-4.0.0.tgz", - "integrity": "sha512-UYP2agckKjOKH+MSLzsCJajfto8I/QsQwSX1/vHy7APVc/Mfauu8GLVuvryfkD+YdmHM1dxlkOjOkdcN3EohpQ==", + "version": "4.1.0-c84ef7318ff84a681971f7e3aa08065b13eb5e05", + "resolved": "https://registry.npmjs.org/@alfresco/adf-extensions/-/adf-extensions-4.1.0-c84ef7318ff84a681971f7e3aa08065b13eb5e05.tgz", + "integrity": "sha512-IXVUOMk2TSZUL61KM+abdsKSli0+lS5Y24ahZALqNFQq+n9DSi/r1SQeoJIuUb446ibyLJRhIIIyLeXrtsUmUA==", "requires": { "tslib": "^2.0.0" } @@ -3845,7 +3845,7 @@ }, "browserify-aes": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, "requires": { @@ -3882,7 +3882,7 @@ }, "browserify-rsa": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "dev": true, "requires": { @@ -5166,7 +5166,7 @@ }, "create-hash": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dev": true, "requires": { @@ -5179,7 +5179,7 @@ }, "create-hmac": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, "requires": { @@ -6237,7 +6237,7 @@ }, "globby": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "resolved": "http://registry.npmjs.org/globby/-/globby-6.1.0.tgz", "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", "dev": true, "requires": { @@ -6250,7 +6250,7 @@ "dependencies": { "pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true } @@ -6330,7 +6330,7 @@ }, "diffie-hellman": { "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dev": true, "requires": { @@ -6887,7 +6887,7 @@ }, "es6-promisify": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "resolved": "http://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "dev": true, "requires": { @@ -7150,7 +7150,7 @@ "dependencies": { "array-flatten": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "resolved": "http://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", "dev": true }, @@ -9029,7 +9029,7 @@ }, "is-accessor-descriptor": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "resolved": "http://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { @@ -9109,7 +9109,7 @@ }, "is-data-descriptor": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "resolved": "http://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { @@ -10899,7 +10899,7 @@ }, "media-typer": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, @@ -12091,13 +12091,13 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "resolved": "http://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, "os-tmpdir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "osenv": { @@ -12436,7 +12436,7 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, @@ -13858,7 +13858,7 @@ "dependencies": { "pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true } @@ -14103,7 +14103,7 @@ "dependencies": { "jsesc": { "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "resolved": "http://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", "dev": true } @@ -14627,7 +14627,7 @@ }, "safe-regex": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { @@ -15024,7 +15024,7 @@ }, "sha.js": { "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dev": true, "requires": { @@ -15781,7 +15781,7 @@ }, "sprintf-js": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "resolved": "http://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, @@ -16104,7 +16104,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { "ansi-regex": "^2.0.0" @@ -16118,7 +16118,7 @@ }, "strip-eof": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, @@ -16534,7 +16534,7 @@ }, "through": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, "through2": { @@ -16906,7 +16906,7 @@ }, "tty-browserify": { "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "resolved": "http://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", "dev": true }, diff --git a/package.json b/package.json index 54aa71f8f..3d047c82e 100644 --- a/package.json +++ b/package.json @@ -34,9 +34,9 @@ }, "private": true, "dependencies": { - "@alfresco/adf-content-services": "4.0.0", - "@alfresco/adf-core": "4.0.0", - "@alfresco/adf-extensions": "4.0.0", + "@alfresco/adf-content-services": "4.1.0-c84ef7318ff84a681971f7e3aa08065b13eb5e05", + "@alfresco/adf-core": "4.1.0-c84ef7318ff84a681971f7e3aa08065b13eb5e05", + "@alfresco/adf-extensions": "4.1.0-c84ef7318ff84a681971f7e3aa08065b13eb5e05", "@alfresco/js-api": "4.0.0", "@angular-custom-builders/lite-serve": "^0.2.2", "@angular/animations": "10.0.4", diff --git a/src/app/components/files/files.component.html b/src/app/components/files/files.component.html index c9630f8fe..4a18b1a72 100644 --- a/src/app/components/files/files.component.html +++ b/src/app/components/files/files.component.html @@ -29,26 +29,13 @@ [navigate]="false" [sorting]="['name', 'ASC']" [imageResolver]="imageResolver" + [headerFilters]="true" + [filterValue]="queryParams" (node-dblclick)="navigateTo($event.detail?.node)" (name-click)="navigateTo($event.detail?.node)" (sorting-changed)="onSortingChanged($event)" + (filterSelection)="onFilterSelected($event)" > - - - - - - diff --git a/src/app/components/files/files.component.ts b/src/app/components/files/files.component.ts index a03c45825..d5855136f 100644 --- a/src/app/components/files/files.component.ts +++ b/src/app/components/files/files.component.ts @@ -35,16 +35,11 @@ import { AppExtensionService, ContentApiService } from '@alfresco/aca-shared'; import { SetCurrentFolderAction, isAdmin, AppStore, UploadFileVersionAction } from '@alfresco/aca-shared/store'; import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout'; import { debounceTime, takeUntil } from 'rxjs/operators'; -import { ShareDataRow, SEARCH_QUERY_SERVICE_TOKEN, SearchHeaderQueryBuilderService } from '@alfresco/adf-content-services'; +import { ShareDataRow } from '@alfresco/adf-content-services'; +import { FilterSearch } from '@alfresco/adf-content-services/lib/search/filter-search.interface'; @Component({ - templateUrl: './files.component.html', - providers: [ - { - provide: SEARCH_QUERY_SERVICE_TOKEN, - useClass: SearchHeaderQueryBuilderService - } - ] + templateUrl: './files.component.html' }) export class FilesComponent extends PageComponent implements OnInit, OnDestroy { isValidPath = true; @@ -296,16 +291,24 @@ export class FilesComponent extends PageComponent implements OnInit, OnDestroy { return false; } - onFilterSelected(currentActiveFilters: Map) { + onFilterSelected(activeFilters: FilterSearch[]) { + if (activeFilters.length) { + this.navigateToFilter(activeFilters); + } else { + this.onAllFilterCleared(); + } + } + + navigateToFilter(activeFilters: FilterSearch[]) { const objectFromMap = {}; - currentActiveFilters.forEach((value: any, key) => { + activeFilters.forEach((filter: FilterSearch) => { let paramValue = null; - if (value && value.from && value.to) { - paramValue = `${value.from}||${value.to}`; + if (filter.value && filter.value.from && filter.value.to) { + paramValue = `${filter.value.from}||${filter.value.to}`; } else { - paramValue = value; + paramValue = filter.value; } - objectFromMap[key] = paramValue; + objectFromMap[filter.key] = paramValue; }); this.router.navigate([], { relativeTo: this.route, queryParams: objectFromMap }); diff --git a/src/app/components/page.component.spec.ts b/src/app/components/page.component.spec.ts index 322a09742..8057378a3 100644 --- a/src/app/components/page.component.spec.ts +++ b/src/app/components/page.component.spec.ts @@ -149,18 +149,6 @@ describe('PageComponent', () => { expect(store.dispatch['calls'].mostRecent().args[0]).toEqual(new SetSelectedNodesAction([node])); }); - it('should update source on onFilterUpdate event', () => { - const nodePaging = { - list: { - pagination: {}, - entries: [{ entry: { id: 'new-node-id' } }] - } - } as NodePaging; - - component.onFilterUpdate(nodePaging); - expect(component.nodeResult).toEqual(nodePaging); - }); - it('should clear results onAllFilterCleared event', () => { component.documentList = { node: { diff --git a/src/app/components/page.component.ts b/src/app/components/page.component.ts index b89cf24f7..2fa105e10 100644 --- a/src/app/components/page.component.ts +++ b/src/app/components/page.component.ts @@ -161,10 +161,6 @@ export abstract class PageComponent implements OnInit, OnDestroy, OnChanges { return location.href.includes('viewer:view'); } - onFilterUpdate(newNodePaging: NodePaging) { - this.nodeResult = newNodePaging; - } - onSortingChanged(event) { this.filterSorting = event.detail.key + '-' + event.detail.direction; }