mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
dynamic column layout support (#2260)
This commit is contained in:
committed by
Mario Romano
parent
42ed604349
commit
5f7d690db5
@@ -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>
|
||||
|
@@ -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 },
|
||||
|
@@ -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]
|
||||
},
|
||||
{
|
||||
|
@@ -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>
|
@@ -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-' }
|
||||
];
|
||||
}
|
@@ -1,4 +0,0 @@
|
||||
<adf-document-list
|
||||
currentFolderId="-favorites-"
|
||||
locationFormat="/files">
|
||||
</adf-document-list>
|
@@ -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 {
|
||||
}
|
@@ -1,4 +0,0 @@
|
||||
<adf-document-list
|
||||
currentFolderId="-recent-"
|
||||
locationFormat="/files">
|
||||
</adf-document-list>
|
@@ -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 {
|
||||
}
|
@@ -1,4 +0,0 @@
|
||||
<adf-document-list
|
||||
currentFolderId="-sharedlinks-"
|
||||
locationFormat="/files">
|
||||
</adf-document-list>
|
@@ -1,3 +0,0 @@
|
||||
<adf-document-list
|
||||
currentFolderId="-sites-">
|
||||
</adf-document-list>
|
@@ -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 {
|
||||
}
|
@@ -1,4 +0,0 @@
|
||||
<adf-document-list
|
||||
currentFolderId="-trashcan-"
|
||||
locationFormat="/files">
|
||||
</adf-document-list>
|
@@ -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 {
|
||||
}
|
@@ -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,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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user