From 5f7d690db504316b04090dcb869e47a5d6c7ecd9 Mon Sep 17 00:00:00 2001 From: Denys Vuika Date: Fri, 1 Sep 2017 11:51:02 +0100 Subject: [PATCH] dynamic column layout support (#2260) --- demo-shell-ng2/app/app.component.html | 20 +------- demo-shell-ng2/app/app.module.ts | 12 +---- demo-shell-ng2/app/app.routes.ts | 30 ++---------- .../files/custom-sources.component.html | 13 +++++ ...mponent.ts => custom-sources.component.ts} | 22 +++++++-- .../components/files/favorites.component.html | 4 -- .../components/files/favorites.component.ts | 25 ---------- .../components/files/recent.component.html | 4 -- .../app/components/files/recent.component.ts | 25 ---------- .../files/shared-links.component.html | 4 -- .../app/components/files/sites.component.html | 3 -- .../app/components/files/sites.component.ts | 25 ---------- .../components/files/trashcan.component.html | 4 -- .../components/files/trashcan.component.ts | 25 ---------- .../src/components/document-list.component.ts | 47 +++++++++++++------ 15 files changed, 70 insertions(+), 193 deletions(-) create mode 100644 demo-shell-ng2/app/components/files/custom-sources.component.html rename demo-shell-ng2/app/components/files/{shared-links.component.ts => custom-sources.component.ts} (50%) delete mode 100644 demo-shell-ng2/app/components/files/favorites.component.html delete mode 100644 demo-shell-ng2/app/components/files/favorites.component.ts delete mode 100644 demo-shell-ng2/app/components/files/recent.component.html delete mode 100644 demo-shell-ng2/app/components/files/recent.component.ts delete mode 100644 demo-shell-ng2/app/components/files/shared-links.component.html delete mode 100644 demo-shell-ng2/app/components/files/sites.component.html delete mode 100644 demo-shell-ng2/app/components/files/sites.component.ts delete mode 100644 demo-shell-ng2/app/components/files/trashcan.component.html delete mode 100644 demo-shell-ng2/app/components/files/trashcan.component.ts diff --git a/demo-shell-ng2/app/app.component.html b/demo-shell-ng2/app/app.component.html index ff54c49dbd..92feb69098 100644 --- a/demo-shell-ng2/app/app.component.html +++ b/demo-shell-ng2/app/app.component.html @@ -30,25 +30,9 @@ more_vert - + extension - DL: Trashcan - - - extension - DL: Shared Links - - - extension - DL: Sites - - - extension - DL: Favorites - - - extension - DL: Recent + DL: Custom Sources view_module diff --git a/demo-shell-ng2/app/app.module.ts b/demo-shell-ng2/app/app.module.ts index fa5c696895..d184360c00 100644 --- a/demo-shell-ng2/app/app.module.ts +++ b/demo-shell-ng2/app/app.module.ts @@ -45,11 +45,7 @@ import { ThemePickerModule } from './components/theme-picker/theme-picker'; import { MaterialModule } from './material.module'; import { DebugAppConfigService } from './services/debug-app-config.service'; -import { FavoritesComponent } from './components/files/favorites.component'; -import { RecentComponent } from './components/files/recent.component'; -import { SharedLinksComponent } from './components/files/shared-links.component'; -import { SitesComponent } from './components/files/sites.component'; -import { TrashcanComponent } from './components/files/trashcan.component'; +import { CustomSourcesComponent } from './components/files/custom-sources.component'; import { AboutComponent, @@ -128,11 +124,7 @@ if (process.env.ENV === 'production') { SettingsComponent, FormDemoComponent, FormListDemoComponent, - TrashcanComponent, - SharedLinksComponent, - SitesComponent, - FavoritesComponent, - RecentComponent + CustomSourcesComponent ], providers: [ { provide: AppConfigService, useClass: DebugAppConfigService }, diff --git a/demo-shell-ng2/app/app.routes.ts b/demo-shell-ng2/app/app.routes.ts index 6befb2aa7c..ecc6bea0a9 100644 --- a/demo-shell-ng2/app/app.routes.ts +++ b/demo-shell-ng2/app/app.routes.ts @@ -39,11 +39,7 @@ import { } from './components/index'; import { UploadButtonComponent } from 'ng2-alfresco-upload'; -import { FavoritesComponent } from './components/files/favorites.component'; -import { RecentComponent } from './components/files/recent.component'; -import { SharedLinksComponent } from './components/files/shared-links.component'; -import { SitesComponent } from './components/files/sites.component'; -import { TrashcanComponent } from './components/files/trashcan.component'; +import { CustomSourcesComponent } from './components/files/custom-sources.component'; import { FormListDemoComponent } from './components/form/form-list-demo.component'; export const appRoutes: Routes = [ @@ -69,28 +65,8 @@ export const appRoutes: Routes = [ canActivate: [AuthGuardEcm] }, { - path: 'trashcan', - component: TrashcanComponent, - canActivate: [AuthGuardEcm] - }, - { - path: 'shared-links', - component: SharedLinksComponent, - canActivate: [AuthGuardEcm] - }, - { - path: 'sites', - component: SitesComponent, - canActivate: [AuthGuardEcm] - }, - { - path: 'favorites', - component: FavoritesComponent, - canActivate: [AuthGuardEcm] - }, - { - path: 'recent', - component: RecentComponent, + path: 'dl-custom-sources', + component: CustomSourcesComponent, canActivate: [AuthGuardEcm] }, { diff --git a/demo-shell-ng2/app/components/files/custom-sources.component.html b/demo-shell-ng2/app/components/files/custom-sources.component.html new file mode 100644 index 0000000000..cff8d59ede --- /dev/null +++ b/demo-shell-ng2/app/components/files/custom-sources.component.html @@ -0,0 +1,13 @@ + + + + + {{ source.title }} + + + + + + diff --git a/demo-shell-ng2/app/components/files/shared-links.component.ts b/demo-shell-ng2/app/components/files/custom-sources.component.ts similarity index 50% rename from demo-shell-ng2/app/components/files/shared-links.component.ts rename to demo-shell-ng2/app/components/files/custom-sources.component.ts index af11fd29f3..d047a65729 100644 --- a/demo-shell-ng2/app/components/files/shared-links.component.ts +++ b/demo-shell-ng2/app/components/files/custom-sources.component.ts @@ -15,11 +15,25 @@ * limitations under the License. */ -import { Component } from '@angular/core'; +import { Component, Input } from '@angular/core'; @Component({ - selector: 'adf-shared-links-demo', - templateUrl: 'shared-links.component.html' + selector: 'adf-custom-sources-demo', + templateUrl: 'custom-sources.component.html' }) -export class SharedLinksComponent { +export class CustomSourcesComponent { + + @Input() + selectedSource = '-recent-'; + + sources = [ + { title: 'Favorites', value: '-favorites-' }, + { title: 'Recent', value: '-recent-' }, + { title: 'Shared Links', value: '-sharedlinks-' }, + { title: 'Sites', value: '-sites-' }, + { title: 'Trashcan', value: '-trashcan-' }, + { title: 'Root', value: '-root-' }, + { title: 'My', value: '-my-' }, + { title: 'Shared', value: '-shared-' } + ]; } diff --git a/demo-shell-ng2/app/components/files/favorites.component.html b/demo-shell-ng2/app/components/files/favorites.component.html deleted file mode 100644 index 68ead31ba3..0000000000 --- a/demo-shell-ng2/app/components/files/favorites.component.html +++ /dev/null @@ -1,4 +0,0 @@ - - diff --git a/demo-shell-ng2/app/components/files/favorites.component.ts b/demo-shell-ng2/app/components/files/favorites.component.ts deleted file mode 100644 index d6b7d4023e..0000000000 --- a/demo-shell-ng2/app/components/files/favorites.component.ts +++ /dev/null @@ -1,25 +0,0 @@ -/*! - * @license - * Copyright 2016 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Component } from '@angular/core'; - -@Component({ - selector: 'adf-favorites-demo', - templateUrl: 'favorites.component.html' -}) -export class FavoritesComponent { -} diff --git a/demo-shell-ng2/app/components/files/recent.component.html b/demo-shell-ng2/app/components/files/recent.component.html deleted file mode 100644 index d157bd5d93..0000000000 --- a/demo-shell-ng2/app/components/files/recent.component.html +++ /dev/null @@ -1,4 +0,0 @@ - - diff --git a/demo-shell-ng2/app/components/files/recent.component.ts b/demo-shell-ng2/app/components/files/recent.component.ts deleted file mode 100644 index b23a9e933e..0000000000 --- a/demo-shell-ng2/app/components/files/recent.component.ts +++ /dev/null @@ -1,25 +0,0 @@ -/*! - * @license - * Copyright 2016 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Component } from '@angular/core'; - -@Component({ - selector: 'adf-recent-demo', - templateUrl: 'recent.component.html' -}) -export class RecentComponent { -} diff --git a/demo-shell-ng2/app/components/files/shared-links.component.html b/demo-shell-ng2/app/components/files/shared-links.component.html deleted file mode 100644 index 16613db0df..0000000000 --- a/demo-shell-ng2/app/components/files/shared-links.component.html +++ /dev/null @@ -1,4 +0,0 @@ - - diff --git a/demo-shell-ng2/app/components/files/sites.component.html b/demo-shell-ng2/app/components/files/sites.component.html deleted file mode 100644 index 1a6dda4905..0000000000 --- a/demo-shell-ng2/app/components/files/sites.component.html +++ /dev/null @@ -1,3 +0,0 @@ - - diff --git a/demo-shell-ng2/app/components/files/sites.component.ts b/demo-shell-ng2/app/components/files/sites.component.ts deleted file mode 100644 index 01f2eff4ac..0000000000 --- a/demo-shell-ng2/app/components/files/sites.component.ts +++ /dev/null @@ -1,25 +0,0 @@ -/*! - * @license - * Copyright 2016 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Component } from '@angular/core'; - -@Component({ - selector: 'adf-sites-demo', - templateUrl: 'sites.component.html' -}) -export class SitesComponent { -} diff --git a/demo-shell-ng2/app/components/files/trashcan.component.html b/demo-shell-ng2/app/components/files/trashcan.component.html deleted file mode 100644 index 0771c06548..0000000000 --- a/demo-shell-ng2/app/components/files/trashcan.component.html +++ /dev/null @@ -1,4 +0,0 @@ - - diff --git a/demo-shell-ng2/app/components/files/trashcan.component.ts b/demo-shell-ng2/app/components/files/trashcan.component.ts deleted file mode 100644 index d92ab94ebd..0000000000 --- a/demo-shell-ng2/app/components/files/trashcan.component.ts +++ /dev/null @@ -1,25 +0,0 @@ -/*! - * @license - * Copyright 2016 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Component } from '@angular/core'; - -@Component({ - selector: 'adf-trashcan-demo', - templateUrl: 'trashcan.component.html' -}) -export class TrashcanComponent { -} diff --git a/ng2-components/ng2-alfresco-documentlist/src/components/document-list.component.ts b/ng2-components/ng2-alfresco-documentlist/src/components/document-list.component.ts index 6a8278bd96..6d466ba7ce 100644 --- a/ng2-components/ng2-alfresco-documentlist/src/components/document-list.component.ts +++ b/ng2-components/ng2-alfresco-documentlist/src/components/document-list.component.ts @@ -201,6 +201,10 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni } } + get hasCustomLayout(): boolean { + return this.columnList && this.columnList.columns && this.columnList.columns.length > 0; + } + ngOnInit() { this.data = new ShareDataTableAdapter(this.documentListService, null, this.getDefaultSorting()); this.data.thumbnails = this.thumbnails; @@ -222,7 +226,7 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni ngAfterContentInit() { let schema: DataColumn[] = []; - if (this.columnList && this.columnList.columns && this.columnList.columns.length > 0) { + if (this.hasCustomLayout) { schema = this.columnList.columns.map(c => c); } @@ -239,20 +243,23 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni } ngOnChanges(changes: SimpleChanges) { - if (changes['folderNode'] && changes['folderNode'].currentValue) { + if (changes.folderNode && changes.folderNode.currentValue) { this.loadFolder(); - } else if (changes['currentFolderId'] && changes['currentFolderId'].currentValue) { - this.loadFolderByNodeId(changes['currentFolderId'].currentValue); + } else if (changes.currentFolderId && changes.currentFolderId.currentValue) { + if (!this.hasCustomLayout) { + this.setupDefaultColumns(changes.currentFolderId.currentValue); + } + this.loadFolderByNodeId(changes.currentFolderId.currentValue); } else if (this.data) { - if (changes['node'] && changes['node'].currentValue) { - this.data.loadPage(changes['node'].currentValue); - } else if (changes['rowFilter']) { - this.data.setFilter(changes['rowFilter'].currentValue); + if (changes.node && changes.node.currentValue) { + this.data.loadPage(changes.node.currentValue); + } else if (changes.rowFilter) { + this.data.setFilter(changes.rowFilter.currentValue); if (this.currentFolderId) { this.loadFolderNodesByFolderNodeId(this.currentFolderId, this.pageSize, this.skipCount); } - } else if (changes['imageResolver']) { - this.data.setImageResolver(changes['imageResolver'].currentValue); + } else if (changes.imageResolver) { + this.data.setImageResolver(changes.imageResolver.currentValue); } } } @@ -561,8 +568,10 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni * Creates a set of predefined columns. */ setupDefaultColumns(preset: string = 'default'): void { - const columns = this.getLayoutPreset(preset); - this.data.setColumns(columns); + if (this.data) { + const columns = this.getLayoutPreset(preset); + this.data.setColumns(columns); + } } onPreviewFile(node: MinimalNodeEntity) { @@ -711,9 +720,7 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni } canNavigateFolder(node: MinimalNodeEntity): boolean { - const restricted = ['-trashcan-', '-sharedlinks-', '-sites-', '-favorites-', '-recent-']; - - if (restricted.indexOf(this.currentFolderId) > -1) { + if (this.isCustomSource(this.currentFolderId)) { return false; } @@ -724,6 +731,16 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni return false; } + isCustomSource(folderId: string): boolean { + const sources = ['-trashcan-', '-sharedlinks-', '-sites-', '-favorites-', '-recent-']; + + if (sources.indexOf(folderId) > -1) { + return true; + } + + return false; + } + updateSkipCount(newSkipCount) { this.skipCount = newSkipCount; }