diff --git a/src/app/components/files/files.component.html b/src/app/components/files/files.component.html index 6ea76a7a9..6461f7859 100644 --- a/src/app/components/files/files.component.html +++ b/src/app/components/files/files.component.html @@ -101,7 +101,7 @@ [imageResolver]="imageResolver" (node-dblclick)="onNodeDoubleClick($event)" - (node-select)="onNodeSelect($event)"> + (node-select)="onNodeSelect($event, documentList)"> !item.entry.isLocked); - - const dataTable = this.documentList.dataTable; - if (dataTable && dataTable.data) { - const rows = dataTable.data.getRows(); - - if (rows && rows.length > 0) { - rows.forEach(r => { - if (r.getValue('isLocked')) { - r.isSelected = false; - } - }); - } - } - } - onBreadcrumbNavigate(route: PathElementEntity) { // todo: review this approach once 5.2.3 is out if (this.nodePath && this.nodePath.length > 2) { @@ -316,13 +286,4 @@ export class FilesComponent extends PageComponent implements OnInit, OnDestroy { } return false; } - - imageResolver(row: ShareDataRow): string | null { - const entry: MinimalNodeEntryEntity = row.node.entry; - - if (entry.isLocked) { - return '/assets/images/ic_lock_black_24dp_1x.png'; - } - return null; - } } diff --git a/src/app/components/page.component.ts b/src/app/components/page.component.ts index 48dd3ea02..64c19d0b3 100644 --- a/src/app/components/page.component.ts +++ b/src/app/components/page.component.ts @@ -25,6 +25,7 @@ import { MinimalNodeEntity, MinimalNodeEntryEntity, NodePaging, Pagination } from 'alfresco-js-api'; import { UserPreferencesService } from '@alfresco/adf-core'; +import { ShareDataRow } from '@alfresco/adf-content-services'; export abstract class PageComponent { @@ -38,6 +39,10 @@ export abstract class PageComponent { node: MinimalNodeEntryEntity; + static isLockedNode(node) { + return node.isLocked || (node.properties && node.properties['cm:lockType'] === 'READ_ONLY_LOCK'); + } + abstract fetchNodes(parentNodeId?: string, options?: any): void; constructor(private preferences: UserPreferencesService) { @@ -137,4 +142,46 @@ export abstract class PageComponent { onChangePageSize(event: Pagination): void { this.preferences.paginationSize = event.maxItems; } + + onNodeSelect(event, documentList) { + if (!!event.detail && !!event.detail.node) { + + const node: MinimalNodeEntryEntity = event.detail.node.entry; + if (node && PageComponent.isLockedNode(node)) { + this.unSelectLockedNodes(documentList); + } + } + } + + unSelectLockedNodes(documentList) { + documentList.selection = documentList.selection.filter(item => !PageComponent.isLockedNode(item.entry)); + + const dataTable = documentList.dataTable; + if (dataTable && dataTable.data) { + const rows = dataTable.data.getRows(); + + if (rows && rows.length > 0) { + rows.forEach(r => { + if (this.isLockedRow(r)) { + r.isSelected = false; + } + }); + } + } + } + + isLockedRow(row) { + return row.getValue('isLocked') || + (row.getValue('properties') && row.getValue('properties')['cm:lockType'] === 'READ_ONLY_LOCK'); + } + + imageResolver(row: ShareDataRow): string | null { + const entry: MinimalNodeEntryEntity = row.node.entry; + + if (PageComponent.isLockedNode(entry)) { + return '/assets/images/ic_lock_black_24dp_1x.png'; + } + return null; + } + } diff --git a/src/app/components/recent-files/recent-files.component.html b/src/app/components/recent-files/recent-files.component.html index b41966666..daaf8a436 100644 --- a/src/app/components/recent-files/recent-files.component.html +++ b/src/app/components/recent-files/recent-files.component.html @@ -77,7 +77,9 @@ [sorting]="[ 'modifiedAt', 'desc' ]" [contextMenuActions]="true" [contentActions]="false" - (node-dblclick)="onNodeDoubleClick($event.detail?.node?.entry)"> + [imageResolver]="imageResolver" + (node-dblclick)="onNodeDoubleClick($event.detail?.node?.entry)" + (node-select)="onNodeSelect($event, documentList)"> diff --git a/src/app/components/recent-files/recent-files.component.ts b/src/app/components/recent-files/recent-files.component.ts index a926a9b06..1e2617b36 100644 --- a/src/app/components/recent-files/recent-files.component.ts +++ b/src/app/components/recent-files/recent-files.component.ts @@ -63,7 +63,10 @@ export class RecentFilesComponent extends PageComponent implements OnInit, OnDes } onNodeDoubleClick(node: MinimalNodeEntryEntity) { - if (node && node.isFile) { + if (node && PageComponent.isLockedNode(node)) { + event.preventDefault(); + + } else if (node && node.isFile) { this.router.navigate(['/preview', node.id]); } }