mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
DocumentList component improvements
- expose ‘properties’ for the Node model - Row filtering support for Document List (refs #522) - Custom image resolver for Document List (refs #532) - readme updates
This commit is contained in:
@@ -41,6 +41,9 @@ export class ShareDataTableAdapter implements DataTableAdapter, PaginationProvid
|
||||
private page: NodePaging;
|
||||
private currentPath: string;
|
||||
|
||||
private filter: RowFilter;
|
||||
private imageResolver: ImageResolver;
|
||||
|
||||
private _count: number = 0;
|
||||
private _hasMoreItems: boolean = false;
|
||||
private _totalItems: number = 0;
|
||||
@@ -130,6 +133,13 @@ export class ShareDataTableAdapter implements DataTableAdapter, PaginationProvid
|
||||
|
||||
if (col.type === 'image') {
|
||||
|
||||
if (this.imageResolver) {
|
||||
let resolved = this.imageResolver(row, col);
|
||||
if (resolved) {
|
||||
return resolved;
|
||||
}
|
||||
}
|
||||
|
||||
if (col.key === '$thumbnail') {
|
||||
let node = (<ShareDataRow> row).node;
|
||||
|
||||
@@ -221,6 +231,18 @@ export class ShareDataTableAdapter implements DataTableAdapter, PaginationProvid
|
||||
}
|
||||
}
|
||||
|
||||
setFilter(filter: RowFilter) {
|
||||
this.filter = filter;
|
||||
|
||||
if (this.filter && this.currentPath) {
|
||||
this.loadPath(this.currentPath);
|
||||
}
|
||||
}
|
||||
|
||||
setImageResolver(resolver: ImageResolver) {
|
||||
this.imageResolver = resolver;
|
||||
}
|
||||
|
||||
private loadPage(page: NodePaging) {
|
||||
this.page = page;
|
||||
this.resetPagination();
|
||||
@@ -232,6 +254,10 @@ export class ShareDataTableAdapter implements DataTableAdapter, PaginationProvid
|
||||
if (data && data.length > 0) {
|
||||
rows = data.map(item => new ShareDataRow(item));
|
||||
|
||||
if (this.filter) {
|
||||
rows = rows.filter(this.filter);
|
||||
}
|
||||
|
||||
// Sort by first sortable or just first column
|
||||
if (this.columns && this.columns.length > 0) {
|
||||
let sortable = this.columns.filter(c => c.sortable);
|
||||
@@ -289,3 +315,11 @@ export class ShareDataRow implements DataRow {
|
||||
return this.getValue(key) ? true : false;
|
||||
}
|
||||
}
|
||||
|
||||
export interface RowFilter {
|
||||
(value: ShareDataRow, index: number, array: ShareDataRow[]): boolean;
|
||||
}
|
||||
|
||||
export interface ImageResolver {
|
||||
(row: DataRow, column: DataColumn): string;
|
||||
}
|
||||
|
Reference in New Issue
Block a user