dynamic column layout support (#2260)

This commit is contained in:
Denys Vuika
2017-09-01 11:51:02 +01:00
committed by Mario Romano
parent 42ed604349
commit 5f7d690db5
15 changed files with 70 additions and 193 deletions

View File

@@ -30,25 +30,9 @@
<md-icon>more_vert</md-icon>
</button>
<md-menu #appMenu="mdMenu">
<a md-menu-item href="" routerLink="/trashcan">
<a md-menu-item href="" routerLink="/dl-custom-sources">
<md-icon>extension</md-icon>
<span>DL: Trashcan</span>
</a>
<a md-menu-item href="" routerLink="/shared-links">
<md-icon>extension</md-icon>
<span>DL: Shared Links</span>
</a>
<a md-menu-item href="" routerLink="/sites">
<md-icon>extension</md-icon>
<span>DL: Sites</span>
</a>
<a md-menu-item href="" routerLink="/favorites">
<md-icon>extension</md-icon>
<span>DL: Favorites</span>
</a>
<a md-menu-item href="" routerLink="/recent">
<md-icon>extension</md-icon>
<span>DL: Recent</span>
<span>DL: Custom Sources</span>
</a>
<a md-menu-item href="" routerLink="/datatable">
<md-icon>view_module</md-icon>

View File

@@ -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 },

View File

@@ -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]
},
{

View File

@@ -0,0 +1,13 @@
<adf-toolbar>
<adf-toolbar-title>
<md-select [(ngModel)]="selectedSource">
<md-option *ngFor="let source of sources" [value]="source.value">
{{ source.title }}
</md-option>
</md-select>
</adf-toolbar-title>
</adf-toolbar>
<adf-document-list
[currentFolderId]="selectedSource"
locationFormat="/files">
</adf-document-list>

View File

@@ -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-' }
];
}

View File

@@ -1,4 +0,0 @@
<adf-document-list
currentFolderId="-favorites-"
locationFormat="/files">
</adf-document-list>

View File

@@ -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 {
}

View File

@@ -1,4 +0,0 @@
<adf-document-list
currentFolderId="-recent-"
locationFormat="/files">
</adf-document-list>

View File

@@ -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 {
}

View File

@@ -1,4 +0,0 @@
<adf-document-list
currentFolderId="-sharedlinks-"
locationFormat="/files">
</adf-document-list>

View File

@@ -1,3 +0,0 @@
<adf-document-list
currentFolderId="-sites-">
</adf-document-list>

View File

@@ -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 {
}

View File

@@ -1,4 +0,0 @@
<adf-document-list
currentFolderId="-trashcan-"
locationFormat="/files">
</adf-document-list>

View File

@@ -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 {
}

View File

@@ -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 => <DataColumn> 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,9 +568,11 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni
* Creates a set of predefined columns.
*/
setupDefaultColumns(preset: string = 'default'): void {
if (this.data) {
const columns = this.getLayoutPreset(preset);
this.data.setColumns(columns);
}
}
onPreviewFile(node: MinimalNodeEntity) {
if (node) {
@@ -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;
}