From 76ac996c48643442dcc8121496787fe29b0297ef Mon Sep 17 00:00:00 2001 From: arditdomi <32884230+arditdomi@users.noreply.github.com> Date: Tue, 16 Feb 2021 16:16:06 +0100 Subject: [PATCH] =?UTF-8?q?[AAE-3326]=20Content=20node=20selector=20-=20so?= =?UTF-8?q?rt=20files=20by=20createdAt=20desc=20by=20de=E2=80=A6=20(#6674)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [AAE-3326] Content node selector - sort files by createdAt desc by default * Fix process custom filter cloud e2e --- .../process-custom-filters.e2e.ts | 2 +- ...content-node-selector-panel.component.html | 1 + ...tent-node-selector-panel.component.spec.ts | 28 ++++++++++++++++++- .../content-node-selector-panel.component.ts | 8 +++++- 4 files changed, 36 insertions(+), 3 deletions(-) diff --git a/e2e/process-services-cloud/process-custom-filters.e2e.ts b/e2e/process-services-cloud/process-custom-filters.e2e.ts index 50f2f11047..7456982787 100644 --- a/e2e/process-services-cloud/process-custom-filters.e2e.ts +++ b/e2e/process-services-cloud/process-custom-filters.e2e.ts @@ -160,7 +160,7 @@ describe('Process list cloud', () => { await setFilter({ order: SORT_DIRECTION.DESC}); await waitTillContentLoaded(); - await expect(await processList.getDataTable().checkListIsSorted(SORT_DIRECTION.ASC, 'Name')).toBe(true); + await expect(await processList.getDataTable().checkListIsSorted(SORT_DIRECTION.DESC, 'Name')).toBe(true); }); it('[C291783] Should display processes ordered by id when Id is selected from sort dropdown', async () => { diff --git a/lib/content-services/src/lib/content-node-selector/content-node-selector-panel.component.html b/lib/content-services/src/lib/content-node-selector/content-node-selector-panel.component.html index 974a5992c9..c1eb6b0a10 100644 --- a/lib/content-services/src/lib/content-node-selector/content-node-selector-panel.component.html +++ b/lib/content-services/src/lib/content-node-selector/content-node-selector-panel.component.html @@ -79,6 +79,7 @@ [contextMenuActions]="false" [contentActions]="false" [allowDropFiles]="false" + [sorting]="sorting" sortingMode="server" [where]="where" (folderChange)="onFolderChange($event)" diff --git a/lib/content-services/src/lib/content-node-selector/content-node-selector-panel.component.spec.ts b/lib/content-services/src/lib/content-node-selector/content-node-selector-panel.component.spec.ts index 8abb43ba14..79b0c3fbf7 100644 --- a/lib/content-services/src/lib/content-node-selector/content-node-selector-panel.component.spec.ts +++ b/lib/content-services/src/lib/content-node-selector/content-node-selector-panel.component.spec.ts @@ -19,7 +19,7 @@ import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { Node, NodeEntry, NodePaging, RequestScope, ResultSetPaging, SiteEntry, SitePaging } from '@alfresco/js-api'; -import { FileModel, FileUploadStatus, NodesApiService, setupTestBed, SitesService, UploadService } from '@alfresco/adf-core'; +import { AppConfigService, FileModel, FileUploadStatus, NodesApiService, setupTestBed, SitesService, UploadService } from '@alfresco/adf-core'; import { of, throwError } from 'rxjs'; import { DropdownBreadcrumbComponent } from '../breadcrumb'; import { ContentNodeSelectorPanelComponent } from './content-node-selector-panel.component'; @@ -1247,5 +1247,31 @@ describe('ContentNodeSelectorPanelComponent', () => { expect(toggleFiltersPanelButton).toEqual(null); }); }); + + describe('Sorting', () => { + let appConfigService: AppConfigService; + + beforeEach(() => { + appConfigService = TestBed.inject(AppConfigService); + }); + + it('should read the sorting value from appConfig json in case it is present', async () => { + const fakeSortingConfig = ['fakeKey', 'fakeAsc']; + + appConfigService.config = Object.assign(appConfigService.config, { + 'adf-content-node-selector': { sorting: fakeSortingConfig } + }); + fixture.detectChanges(); + + expect(component.sorting).toEqual(fakeSortingConfig); + }); + + it('should take default sorting when there is no content node selector sorting config in appConfig json', async () => { + appConfigService.config = null; + fixture.detectChanges(); + + expect(component.sorting).toEqual(['createdAt', 'desc']); + }); + }); }); }); diff --git a/lib/content-services/src/lib/content-node-selector/content-node-selector-panel.component.ts b/lib/content-services/src/lib/content-node-selector/content-node-selector-panel.component.ts index 28f83ae3a0..66edbed806 100644 --- a/lib/content-services/src/lib/content-node-selector/content-node-selector-panel.component.ts +++ b/lib/content-services/src/lib/content-node-selector/content-node-selector-panel.component.ts @@ -36,7 +36,9 @@ import { UploadService, FileUploadCompleteEvent, FileUploadDeleteEvent, - FileModel + FileModel, + AppConfigService, + DataSorting } from '@alfresco/adf-core'; import { FormControl } from '@angular/forms'; import { Node, NodePaging, Pagination, SiteEntry, SitePaging, NodeEntry, QueryBody, RequestScope } from '@alfresco/js-api'; @@ -250,6 +252,7 @@ export class ContentNodeSelectorPanelComponent implements OnInit, OnDestroy { target: PaginatedComponent; preselectedNodes: NodeEntry[] = []; + sorting: string[] | DataSorting; searchPanelExpanded: boolean = false; @@ -261,6 +264,7 @@ export class ContentNodeSelectorPanelComponent implements OnInit, OnDestroy { private nodesApiService: NodesApiService, private uploadService: UploadService, private sitesService: SitesService, + private appConfigService: AppConfigService, private contentNodeSelectorPanelService: ContentNodeSelectorPanelService) { } @@ -331,6 +335,8 @@ export class ContentNodeSelectorPanelComponent implements OnInit, OnDestroy { .subscribe((currentNode: Node) => { this.currentFolder.emit(currentNode); }); + + this.sorting = this.appConfigService.get('adf-content-node-selector.sorting', ['createdAt', 'desc']); } ngOnDestroy() {