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>
|
<md-icon>more_vert</md-icon>
|
||||||
</button>
|
</button>
|
||||||
<md-menu #appMenu="mdMenu">
|
<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>
|
<md-icon>extension</md-icon>
|
||||||
<span>DL: Trashcan</span>
|
<span>DL: Custom Sources</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>
|
|
||||||
</a>
|
</a>
|
||||||
<a md-menu-item href="" routerLink="/datatable">
|
<a md-menu-item href="" routerLink="/datatable">
|
||||||
<md-icon>view_module</md-icon>
|
<md-icon>view_module</md-icon>
|
||||||
|
@@ -45,11 +45,7 @@ import { ThemePickerModule } from './components/theme-picker/theme-picker';
|
|||||||
import { MaterialModule } from './material.module';
|
import { MaterialModule } from './material.module';
|
||||||
import { DebugAppConfigService } from './services/debug-app-config.service';
|
import { DebugAppConfigService } from './services/debug-app-config.service';
|
||||||
|
|
||||||
import { FavoritesComponent } from './components/files/favorites.component';
|
import { CustomSourcesComponent } from './components/files/custom-sources.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 {
|
import {
|
||||||
AboutComponent,
|
AboutComponent,
|
||||||
@@ -128,11 +124,7 @@ if (process.env.ENV === 'production') {
|
|||||||
SettingsComponent,
|
SettingsComponent,
|
||||||
FormDemoComponent,
|
FormDemoComponent,
|
||||||
FormListDemoComponent,
|
FormListDemoComponent,
|
||||||
TrashcanComponent,
|
CustomSourcesComponent
|
||||||
SharedLinksComponent,
|
|
||||||
SitesComponent,
|
|
||||||
FavoritesComponent,
|
|
||||||
RecentComponent
|
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
{ provide: AppConfigService, useClass: DebugAppConfigService },
|
{ provide: AppConfigService, useClass: DebugAppConfigService },
|
||||||
|
@@ -39,11 +39,7 @@ import {
|
|||||||
} from './components/index';
|
} from './components/index';
|
||||||
|
|
||||||
import { UploadButtonComponent } from 'ng2-alfresco-upload';
|
import { UploadButtonComponent } from 'ng2-alfresco-upload';
|
||||||
import { FavoritesComponent } from './components/files/favorites.component';
|
import { CustomSourcesComponent } from './components/files/custom-sources.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 { FormListDemoComponent } from './components/form/form-list-demo.component';
|
import { FormListDemoComponent } from './components/form/form-list-demo.component';
|
||||||
|
|
||||||
export const appRoutes: Routes = [
|
export const appRoutes: Routes = [
|
||||||
@@ -69,28 +65,8 @@ export const appRoutes: Routes = [
|
|||||||
canActivate: [AuthGuardEcm]
|
canActivate: [AuthGuardEcm]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'trashcan',
|
path: 'dl-custom-sources',
|
||||||
component: TrashcanComponent,
|
component: CustomSourcesComponent,
|
||||||
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,
|
|
||||||
canActivate: [AuthGuardEcm]
|
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.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { Component } from '@angular/core';
|
import { Component, Input } from '@angular/core';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'adf-shared-links-demo',
|
selector: 'adf-custom-sources-demo',
|
||||||
templateUrl: 'shared-links.component.html'
|
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() {
|
ngOnInit() {
|
||||||
this.data = new ShareDataTableAdapter(this.documentListService, null, this.getDefaultSorting());
|
this.data = new ShareDataTableAdapter(this.documentListService, null, this.getDefaultSorting());
|
||||||
this.data.thumbnails = this.thumbnails;
|
this.data.thumbnails = this.thumbnails;
|
||||||
@@ -222,7 +226,7 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni
|
|||||||
ngAfterContentInit() {
|
ngAfterContentInit() {
|
||||||
let schema: DataColumn[] = [];
|
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);
|
schema = this.columnList.columns.map(c => <DataColumn> c);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -239,20 +243,23 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni
|
|||||||
}
|
}
|
||||||
|
|
||||||
ngOnChanges(changes: SimpleChanges) {
|
ngOnChanges(changes: SimpleChanges) {
|
||||||
if (changes['folderNode'] && changes['folderNode'].currentValue) {
|
if (changes.folderNode && changes.folderNode.currentValue) {
|
||||||
this.loadFolder();
|
this.loadFolder();
|
||||||
} else if (changes['currentFolderId'] && changes['currentFolderId'].currentValue) {
|
} else if (changes.currentFolderId && changes.currentFolderId.currentValue) {
|
||||||
this.loadFolderByNodeId(changes['currentFolderId'].currentValue);
|
if (!this.hasCustomLayout) {
|
||||||
|
this.setupDefaultColumns(changes.currentFolderId.currentValue);
|
||||||
|
}
|
||||||
|
this.loadFolderByNodeId(changes.currentFolderId.currentValue);
|
||||||
} else if (this.data) {
|
} else if (this.data) {
|
||||||
if (changes['node'] && changes['node'].currentValue) {
|
if (changes.node && changes.node.currentValue) {
|
||||||
this.data.loadPage(changes['node'].currentValue);
|
this.data.loadPage(changes.node.currentValue);
|
||||||
} else if (changes['rowFilter']) {
|
} else if (changes.rowFilter) {
|
||||||
this.data.setFilter(changes['rowFilter'].currentValue);
|
this.data.setFilter(changes.rowFilter.currentValue);
|
||||||
if (this.currentFolderId) {
|
if (this.currentFolderId) {
|
||||||
this.loadFolderNodesByFolderNodeId(this.currentFolderId, this.pageSize, this.skipCount);
|
this.loadFolderNodesByFolderNodeId(this.currentFolderId, this.pageSize, this.skipCount);
|
||||||
}
|
}
|
||||||
} else if (changes['imageResolver']) {
|
} else if (changes.imageResolver) {
|
||||||
this.data.setImageResolver(changes['imageResolver'].currentValue);
|
this.data.setImageResolver(changes.imageResolver.currentValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -561,8 +568,10 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni
|
|||||||
* Creates a set of predefined columns.
|
* Creates a set of predefined columns.
|
||||||
*/
|
*/
|
||||||
setupDefaultColumns(preset: string = 'default'): void {
|
setupDefaultColumns(preset: string = 'default'): void {
|
||||||
const columns = this.getLayoutPreset(preset);
|
if (this.data) {
|
||||||
this.data.setColumns(columns);
|
const columns = this.getLayoutPreset(preset);
|
||||||
|
this.data.setColumns(columns);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onPreviewFile(node: MinimalNodeEntity) {
|
onPreviewFile(node: MinimalNodeEntity) {
|
||||||
@@ -711,9 +720,7 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni
|
|||||||
}
|
}
|
||||||
|
|
||||||
canNavigateFolder(node: MinimalNodeEntity): boolean {
|
canNavigateFolder(node: MinimalNodeEntity): boolean {
|
||||||
const restricted = ['-trashcan-', '-sharedlinks-', '-sites-', '-favorites-', '-recent-'];
|
if (this.isCustomSource(this.currentFolderId)) {
|
||||||
|
|
||||||
if (restricted.indexOf(this.currentFolderId) > -1) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -724,6 +731,16 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isCustomSource(folderId: string): boolean {
|
||||||
|
const sources = ['-trashcan-', '-sharedlinks-', '-sites-', '-favorites-', '-recent-'];
|
||||||
|
|
||||||
|
if (sources.indexOf(folderId) > -1) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
updateSkipCount(newSkipCount) {
|
updateSkipCount(newSkipCount) {
|
||||||
this.skipCount = newSkipCount;
|
this.skipCount = newSkipCount;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user