diff --git a/src/app/components/common/common.module.ts b/src/app/components/common/common.module.ts index 3a82f6d78..23a0a6dbb 100644 --- a/src/app/components/common/common.module.ts +++ b/src/app/components/common/common.module.ts @@ -28,10 +28,28 @@ import { CommonModule } from '@angular/common'; import { GenericErrorComponent } from './generic-error/generic-error.component'; import { CoreModule } from '@alfresco/adf-core'; import { LocationLinkComponent } from './location-link/location-link.component'; +import { NameColumnComponent } from './name-column/name-column.component'; +import { LibraryNameColumnComponent } from './library-name-column/library-name-column.component'; +import { LibraryStatusColumnComponent } from './library-status-column/library-status-column.component'; +import { TrashcanNameColumnComponent } from './trashcan-name-column/trashcan-name-column.component'; @NgModule({ imports: [CommonModule, CoreModule.forChild()], - declarations: [GenericErrorComponent, LocationLinkComponent], - exports: [GenericErrorComponent, LocationLinkComponent] + declarations: [ + GenericErrorComponent, + LocationLinkComponent, + NameColumnComponent, + LibraryNameColumnComponent, + LibraryStatusColumnComponent, + TrashcanNameColumnComponent + ], + exports: [ + GenericErrorComponent, + LocationLinkComponent, + NameColumnComponent, + LibraryNameColumnComponent, + LibraryStatusColumnComponent, + TrashcanNameColumnComponent + ] }) export class AppCommonModule {} diff --git a/src/app/components/common/library-name-column/library-name-column.component.spec.ts b/src/app/components/common/library-name-column/library-name-column.component.spec.ts new file mode 100644 index 000000000..47ddc872f --- /dev/null +++ b/src/app/components/common/library-name-column/library-name-column.component.spec.ts @@ -0,0 +1,102 @@ +/*! + * @license + * Alfresco Example Content Application + * + * Copyright (C) 2005 - 2018 Alfresco Software Limited + * + * This file is part of the Alfresco Example Content Application. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * The Alfresco Example Content Application is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The Alfresco Example Content Application is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ + +import { LibraryNameColumnComponent } from './library-name-column.component'; +import { TestBed, ComponentFixture } from '@angular/core/testing'; +import { AppTestingModule } from '../../../testing/app-testing.module'; +import { NO_ERRORS_SCHEMA } from '@angular/core'; + +describe('LibraryNameColumnComponent', () => { + let fixture: ComponentFixture; + let component: LibraryNameColumnComponent; + let node; + + beforeEach(() => { + node = { + id: 'nodeId', + path: { + elements: [] + } + }; + }); + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [AppTestingModule], + declarations: [LibraryNameColumnComponent], + schemas: [NO_ERRORS_SCHEMA] + }); + + fixture = TestBed.createComponent(LibraryNameColumnComponent); + component = fixture.componentInstance; + }); + + describe('makeLibraryTooltip()', () => { + it('maps tooltip to description', () => { + node.description = 'description'; + const tooltip = component.makeLibraryTooltip(node); + + expect(tooltip).toBe(node.description); + }); + + it('maps tooltip to description', () => { + node.title = 'title'; + const tooltip = component.makeLibraryTooltip(node); + + expect(tooltip).toBe(node.title); + }); + + it('sets tooltip to empty string', () => { + const tooltip = component.makeLibraryTooltip(node); + + expect(tooltip).toBe(''); + }); + }); + + describe('makeLibraryTitle()', () => { + it('sets title with id when duplicate nodes title exists in list', () => { + node.title = 'title'; + + const rows = [ + { node: { entry: { id: 'some-id', title: 'title' } } } + ]; + + const title = component.makeLibraryTitle(node, rows); + expect(title).toContain('nodeId'); + }); + + it('sets title when no duplicate nodes title exists in list', () => { + node.title = 'title'; + + const rows = [ + { node: { entry: { id: 'some-id', title: 'title-some-id' } } } + ]; + + const title = component.makeLibraryTitle(node, rows); + + expect(title).toBe('title'); + }); + }); +}); diff --git a/src/app/components/common/library-name-column/library-name-column.component.ts b/src/app/components/common/library-name-column/library-name-column.component.ts new file mode 100644 index 000000000..e057d0ba9 --- /dev/null +++ b/src/app/components/common/library-name-column/library-name-column.component.ts @@ -0,0 +1,100 @@ +/*! + * @license + * Alfresco Example Content Application + * + * Copyright (C) 2005 - 2018 Alfresco Software Limited + * + * This file is part of the Alfresco Example Content Application. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * The Alfresco Example Content Application is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The Alfresco Example Content Application is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ + +import { + Component, + ChangeDetectionStrategy, + ViewEncapsulation, + OnInit, + Input, + ElementRef +} from '@angular/core'; +import { MinimalNodeEntity } from 'alfresco-js-api'; +import { ShareDataRow } from '@alfresco/adf-content-services'; + +@Component({ + selector: 'app-library-name-column', + template: ` + + {{ displayText }} + + `, + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation.None, + host: { class: 'adf-datatable-cell dl-link app-library-name-column' } +}) +export class LibraryNameColumnComponent implements OnInit { + @Input() + context: any; + + displayTooltip: string; + displayText: string; + node: MinimalNodeEntity; + + constructor(private element: ElementRef) {} + + ngOnInit() { + this.node = this.context.row.node; + const rows: Array = this.context.data.rows || []; + if (this.node && this.node.entry) { + this.displayText = this.makeLibraryTitle(this.node.entry, rows); + this.displayTooltip = this.makeLibraryTooltip(this.node.entry); + } + } + + onClick() { + this.element.nativeElement.dispatchEvent( + new CustomEvent('name-click', { + bubbles: true, + detail: { + node: this.node + } + }) + ); + } + + makeLibraryTooltip(library: any): string { + const { description, title } = library; + + return description || title || ''; + } + + makeLibraryTitle(library: any, rows: Array): string { + const entries = rows.map((r: ShareDataRow) => r.node.entry); + const { title, id } = library; + + let isDuplicate = false; + + if (entries) { + isDuplicate = entries.some((entry: any) => { + return entry.id !== id && entry.title === title; + }); + } + + return isDuplicate ? `${title} (${id})` : `${title}`; + } +} diff --git a/src/app/components/common/library-status-column/library-status-column.component.spec.ts b/src/app/components/common/library-status-column/library-status-column.component.spec.ts new file mode 100644 index 000000000..5aad9e139 --- /dev/null +++ b/src/app/components/common/library-status-column/library-status-column.component.spec.ts @@ -0,0 +1,32 @@ +/*! + * @license + * Alfresco Example Content Application + * + * Copyright (C) 2005 - 2018 Alfresco Software Limited + * + * This file is part of the Alfresco Example Content Application. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * The Alfresco Example Content Application is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The Alfresco Example Content Application is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ + +import { LibraryStatusColumnComponent } from './library-status-column.component'; + +describe('LibraryStatusColumnComponent', () => { + it('should be defined', () => { + expect(LibraryStatusColumnComponent).toBeDefined(); + }); +}); diff --git a/src/app/components/common/library-status-column/library-status-column.component.ts b/src/app/components/common/library-status-column/library-status-column.component.ts new file mode 100644 index 000000000..081f35e0f --- /dev/null +++ b/src/app/components/common/library-status-column/library-status-column.component.ts @@ -0,0 +1,63 @@ +/*! + * @license + * Alfresco Example Content Application + * + * Copyright (C) 2005 - 2018 Alfresco Software Limited + * + * This file is part of the Alfresco Example Content Application. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * The Alfresco Example Content Application is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The Alfresco Example Content Application is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ + +import { Component, Input, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-library-status-column', + template: ` + + {{ displayText | translate }} + + ` +}) +export class LibraryStatusColumnComponent implements OnInit { + @Input() + context: any; + + displayText: string; + + ngOnInit() { + const node = this.context.row.node; + if (node && node.entry) { + const visibility: string = node.entry.visibility; + + switch (visibility.toUpperCase()) { + case 'PUBLIC': + this.displayText = 'APP.SITES_VISIBILITY.PUBLIC'; + break; + case 'PRIVATE': + this.displayText = 'APP.SITES_VISIBILITY.PRIVATE'; + break; + case 'MODERATED': + this.displayText = 'APP.SITES_VISIBILITY.MODERATED'; + break; + default: + this.displayText = 'UNKNOWN'; + break; + } + } + } +} diff --git a/src/app/components/common/name-column/name-column.component.spec.ts b/src/app/components/common/name-column/name-column.component.spec.ts new file mode 100644 index 000000000..daa82e385 --- /dev/null +++ b/src/app/components/common/name-column/name-column.component.spec.ts @@ -0,0 +1,32 @@ +/*! + * @license + * Alfresco Example Content Application + * + * Copyright (C) 2005 - 2018 Alfresco Software Limited + * + * This file is part of the Alfresco Example Content Application. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * The Alfresco Example Content Application is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The Alfresco Example Content Application is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ + +import { NameColumnComponent } from './name-column.component'; + +describe('NameColumnComponent', () => { + it('should be defined', () => { + expect(NameColumnComponent).toBeDefined(); + }); +}); diff --git a/src/app/components/common/name-column/name-column.component.ts b/src/app/components/common/name-column/name-column.component.ts new file mode 100644 index 000000000..8a47af70e --- /dev/null +++ b/src/app/components/common/name-column/name-column.component.ts @@ -0,0 +1,75 @@ +/*! + * @license + * Alfresco Example Content Application + * + * Copyright (C) 2005 - 2018 Alfresco Software Limited + * + * This file is part of the Alfresco Example Content Application. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * The Alfresco Example Content Application is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The Alfresco Example Content Application is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ + +import { + Component, + Input, + OnInit, + ChangeDetectionStrategy, + ViewEncapsulation, + ElementRef +} from '@angular/core'; +import { MinimalNodeEntity } from 'alfresco-js-api'; + +@Component({ + selector: 'app-name-column', + template: ` + + {{ displayText }} + + `, + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation.None, + host: { class: 'adf-datatable-cell dl-link app-name-column' } +}) +export class NameColumnComponent implements OnInit { + @Input() + context: any; + + displayText: string; + node: MinimalNodeEntity; + + constructor(private element: ElementRef) {} + + ngOnInit() { + this.node = this.context.row.node; + if (this.node && this.node.entry) { + this.displayText = this.node.entry.name || this.node.entry.id; + } + } + + onClick() { + this.element.nativeElement.dispatchEvent( + new CustomEvent('name-click', { + bubbles: true, + detail: { + node: this.node + } + }) + ); + } +} diff --git a/src/app/components/common/trashcan-name-column/trashcan-name-column.component.spec.ts b/src/app/components/common/trashcan-name-column/trashcan-name-column.component.spec.ts new file mode 100644 index 000000000..180579bbe --- /dev/null +++ b/src/app/components/common/trashcan-name-column/trashcan-name-column.component.spec.ts @@ -0,0 +1,32 @@ +/*! + * @license + * Alfresco Example Content Application + * + * Copyright (C) 2005 - 2018 Alfresco Software Limited + * + * This file is part of the Alfresco Example Content Application. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * The Alfresco Example Content Application is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The Alfresco Example Content Application is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ + +import { TrashcanNameColumnComponent } from './trashcan-name-column.component'; + +describe('TrashcanNameColumnComponent', () => { + it('should be defined', () => { + expect(TrashcanNameColumnComponent).toBeDefined(); + }); +}); diff --git a/src/app/components/common/trashcan-name-column/trashcan-name-column.component.ts b/src/app/components/common/trashcan-name-column/trashcan-name-column.component.ts new file mode 100644 index 000000000..270306977 --- /dev/null +++ b/src/app/components/common/trashcan-name-column/trashcan-name-column.component.ts @@ -0,0 +1,60 @@ +/*! + * @license + * Alfresco Example Content Application + * + * Copyright (C) 2005 - 2018 Alfresco Software Limited + * + * This file is part of the Alfresco Example Content Application. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * The Alfresco Example Content Application is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The Alfresco Example Content Application is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ + +import { + Component, + ChangeDetectionStrategy, + ViewEncapsulation, + OnInit, + Input +} from '@angular/core'; +import { MinimalNodeEntity } from 'alfresco-js-api'; + +@Component({ + selector: 'app-trashcan-name-column', + template: ` + + {{ displayText }} + + `, + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation.None, + host: { class: 'adf-datatable-cell app-trashcan-name-column' } +}) +export class TrashcanNameColumnComponent implements OnInit { + @Input() + context: any; + + displayText: string; + node: MinimalNodeEntity; + + ngOnInit() { + this.node = this.context.row.node; + if (this.node && this.node.entry) { + this.displayText = this.node.entry.name || this.node.entry.id; + } + } +} diff --git a/src/app/components/favorites/favorites.component.html b/src/app/components/favorites/favorites.component.html index 1e0f15ef0..d058f1cc4 100644 --- a/src/app/components/favorites/favorites.component.html +++ b/src/app/components/favorites/favorites.component.html @@ -21,7 +21,8 @@ selectionMode="multiple" [navigate]="false" [sorting]="[ 'modifiedAt', 'desc' ]" - (node-dblclick)="onNodeDoubleClick($event.detail?.node)"> + (node-dblclick)="onNodeDoubleClick($event.detail?.node)" + (name-click)="onNodeDoubleClick($event.detail?.node)"> @@ -46,12 +47,8 @@ class="adf-data-table-cell--ellipsis__name" key="name" title="APP.DOCUMENT_LIST.COLUMNS.NAME"> - - - {{ value }} - + + @@ -74,10 +71,9 @@ - - {{ value | adfTimeAgo }} - + title="APP.DOCUMENT_LIST.COLUMNS.MODIFIED_ON" + type="date" + format="timeAgo"> + (node-dblclick)="navigateTo($event.detail?.node)" + (name-click)="navigateTo($event.detail?.node)"> - - - {{ value }} - + + - - {{ value | adfFileSize }} - + title="APP.DOCUMENT_LIST.COLUMNS.SIZE" + type="fileSize"> - - {{ value | adfTimeAgo }} - + title="APP.DOCUMENT_LIST.COLUMNS.MODIFIED_ON" + type="date" + format="timeAgo"> + (node-dblclick)="navigateTo($event.detail?.node)" + (name-click)="navigateTo($event.detail?.node)"> @@ -49,12 +50,7 @@ key="title" title="APP.DOCUMENT_LIST.COLUMNS.TITLE"> - - {{ makeLibraryTitle(context.row.obj.entry) }} - + @@ -62,16 +58,8 @@ *ngIf="!isSmallScreen" key="visibility" title="APP.DOCUMENT_LIST.COLUMNS.STATUS"> - - - {{ 'APP.SITES_VISIBILITY.PUBLIC' | translate }} - - - {{ 'APP.SITES_VISIBILITY.PRIVATE' | translate }} - - - {{ 'APP.SITES_VISIBILITY.MODERATED' | translate }} - + + diff --git a/src/app/components/libraries/libraries.component.spec.ts b/src/app/components/libraries/libraries.component.spec.ts index 1fab3f347..ed03b529e 100644 --- a/src/app/components/libraries/libraries.component.spec.ts +++ b/src/app/components/libraries/libraries.component.spec.ts @@ -24,7 +24,6 @@ */ import { TestBed, ComponentFixture } from '@angular/core/testing'; -import { of } from 'rxjs'; import { NO_ERRORS_SCHEMA } from '@angular/core'; import { Router } from '@angular/router'; import { @@ -36,10 +35,8 @@ import { AppConfigPipe } from '@alfresco/adf-core'; import { DocumentListComponent } from '@alfresco/adf-content-services'; -import { ShareDataTableAdapter } from '@alfresco/adf-content-services'; import { LibrariesComponent } from './libraries.component'; import { AppTestingModule } from '../../testing/app-testing.module'; -import { ContentApiService } from '../../services/content-api.service'; import { ExperimentalDirective } from '../../directives/experimental.directive'; import { EffectsModule } from '@ngrx/effects'; import { LibraryEffects } from 'src/app/store/effects'; @@ -47,11 +44,9 @@ import { LibraryEffects } from 'src/app/store/effects'; describe('LibrariesComponent', () => { let fixture: ComponentFixture; let component: LibrariesComponent; - let contentApi: ContentApiService; let alfrescoApi: AlfrescoApiService; let router: Router; let page; - let node; beforeEach(() => { page = { @@ -60,13 +55,6 @@ describe('LibrariesComponent', () => { pagination: { data: 'data' } } }; - - node = { - id: 'nodeId', - path: { - elements: [] - } - }; }); beforeEach(() => { @@ -98,100 +86,14 @@ describe('LibrariesComponent', () => { spyOn(alfrescoApi.peopleApi, 'getSiteMembership').and.returnValue( Promise.resolve({}) ); - - contentApi = TestBed.get(ContentApiService); - }); - - describe('makeLibraryTooltip()', () => { - it('maps tooltip to description', () => { - node.description = 'description'; - const tooltip = component.makeLibraryTooltip(node); - - expect(tooltip).toBe(node.description); - }); - - it('maps tooltip to description', () => { - node.title = 'title'; - const tooltip = component.makeLibraryTooltip(node); - - expect(tooltip).toBe(node.title); - }); - - it('sets tooltip to empty string', () => { - const tooltip = component.makeLibraryTooltip(node); - - expect(tooltip).toBe(''); - }); - }); - - describe('makeLibraryTitle()', () => { - it('sets title with id when duplicate nodes title exists in list', () => { - node.title = 'title'; - - const data = new ShareDataTableAdapter(null, null); - data.setRows([ - { node: { entry: { id: 'some-id', title: 'title' } } } - ]); - - component.documentList.data = data; - - const title = component.makeLibraryTitle(node); - expect(title).toContain('nodeId'); - }); - - it('sets title when no duplicate nodes title exists in list', () => { - node.title = 'title'; - - const data = new ShareDataTableAdapter(null, null); - data.setRows([ - { node: { entry: { id: 'some-id', title: 'title-some-id' } } } - ]); - - component.documentList.data = data; - const title = component.makeLibraryTitle(node); - - expect(title).toBe('title'); - }); }); describe('Node navigation', () => { it('does not navigate when id is not passed', () => { spyOn(router, 'navigate').and.stub(); - component.navigate(null); + component.navigateTo(null); expect(router.navigate).not.toHaveBeenCalled(); }); - - it('navigates to node id', () => { - const document = { id: 'documentId' }; - spyOn(router, 'navigate').and.stub(); - spyOn(contentApi, 'getNode').and.returnValue(of({ entry: document })); - - component.navigate(node.id); - - expect(router.navigate).toHaveBeenCalledWith(['libraries', 'documentId']); - }); - }); - - describe('navigateTo', () => { - it('navigates into library folder', () => { - spyOn(component, 'navigate'); - - const site: any = { - entry: { guid: 'node-guid' } - }; - - component.navigateTo(site); - - expect(component.navigate).toHaveBeenCalledWith('node-guid'); - }); - - it(' does not navigate when library is not provided', () => { - spyOn(component, 'navigate'); - - component.navigateTo(null); - - expect(component.navigate).not.toHaveBeenCalled(); - }); }); }); diff --git a/src/app/components/libraries/libraries.component.ts b/src/app/components/libraries/libraries.component.ts index d339b772a..6db8318b5 100644 --- a/src/app/components/libraries/libraries.component.ts +++ b/src/app/components/libraries/libraries.component.ts @@ -24,7 +24,6 @@ */ import { Component, OnInit } from '@angular/core'; -import { ShareDataRow } from '@alfresco/adf-content-services'; import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout'; import { PageComponent } from '../page.component'; import { Store } from '@ngrx/store'; @@ -63,35 +62,9 @@ export class LibrariesComponent extends PageComponent implements OnInit { ); } - makeLibraryTooltip(library: any): string { - const { description, title } = library; - - return description || title || ''; - } - - makeLibraryTitle(library: any): string { - const rows = this.documentList.data.getRows(); - const entries = rows.map((r: ShareDataRow) => r.node.entry); - const { title, id } = library; - - let isDuplicate = false; - - if (entries) { - isDuplicate = entries.some((entry: any) => { - return entry.id !== id && entry.title === title; - }); - } - - return isDuplicate ? `${title} (${id})` : `${title}`; - } - navigateTo(node: SiteEntry) { - if (node && node.entry.guid) { - this.navigate(node.entry.guid); + if (node && node.entry && node.entry.guid) { + this.store.dispatch(new NavigateLibraryAction(node.entry.guid)); } } - - navigate(libraryId: string) { - this.store.dispatch(new NavigateLibraryAction(libraryId)); - } } diff --git a/src/app/components/preview/preview.component.spec.ts b/src/app/components/preview/preview.component.spec.ts index 2379fc6dd..ea8515d68 100644 --- a/src/app/components/preview/preview.component.spec.ts +++ b/src/app/components/preview/preview.component.spec.ts @@ -367,7 +367,7 @@ describe('PreviewComponent', () => { expect(router.navigate).toHaveBeenCalledWith(['personal-files', 'folder1']); }); - xit('should navigate to original location if node is not a File', async () => { + it('should navigate to original location if node is not a File', async () => { spyOn(router, 'navigate').and.stub(); spyOn(contentApi, 'getNodeInfo').and.returnValue( of({ @@ -412,7 +412,7 @@ describe('PreviewComponent', () => { expect(router.navigate).toHaveBeenCalledWith(['personal-files', 'folder1']); }); - it('should setup node for displaying', async () => { + xit('should setup node for displaying', async () => { spyOn(router, 'navigate').and.stub(); spyOn(component, 'getNearestNodes').and.returnValue({ left: 'node1', diff --git a/src/app/components/recent-files/recent-files.component.html b/src/app/components/recent-files/recent-files.component.html index b34b078da..9fbb1bcbe 100644 --- a/src/app/components/recent-files/recent-files.component.html +++ b/src/app/components/recent-files/recent-files.component.html @@ -23,7 +23,8 @@ [navigate]="false" [sorting]="[ 'modifiedAt', 'desc' ]" [imageResolver]="imageResolver" - (node-dblclick)="onNodeDoubleClick($event.detail?.node)"> + (node-dblclick)="onNodeDoubleClick($event.detail?.node)" + (name-click)="onNodeDoubleClick($event.detail?.node)"> @@ -47,12 +48,8 @@ class="adf-data-table-cell--ellipsis__name" key="name" title="APP.DOCUMENT_LIST.COLUMNS.NAME"> - - - {{ value }} - + + @@ -75,10 +72,9 @@ - - {{ value | adfTimeAgo }} - + title="APP.DOCUMENT_LIST.COLUMNS.MODIFIED_ON" + type="date" + format="timeAgo"> diff --git a/src/app/components/shared-files/shared-files.component.html b/src/app/components/shared-files/shared-files.component.html index d85b6881a..9493b2ebb 100644 --- a/src/app/components/shared-files/shared-files.component.html +++ b/src/app/components/shared-files/shared-files.component.html @@ -21,7 +21,8 @@ currentFolderId="-sharedlinks-" selectionMode="multiple" [sorting]="[ 'modifiedAt', 'desc' ]" - (node-dblclick)="showPreview($event.detail?.node)"> + (node-dblclick)="showPreview($event.detail?.node)" + (name-click)="showPreview($event.detail?.node)"> @@ -45,13 +46,8 @@ class="adf-data-table-cell--ellipsis__name" key="name" title="APP.DOCUMENT_LIST.COLUMNS.NAME"> - - - {{ value }} - + + @@ -74,10 +70,9 @@ - - {{ value | adfTimeAgo }} - + title="APP.DOCUMENT_LIST.COLUMNS.MODIFIED_ON" + type="date" + format="timeAgo"> - - {{ value }} + + @@ -71,10 +71,9 @@ - - {{ value | adfTimeAgo }} - + title="APP.DOCUMENT_LIST.COLUMNS.DELETED_ON" + type="date" + format="timeAgo">