#164 column types, date formatting

This commit is contained in:
Denys Vuika
2016-06-08 13:11:50 +01:00
parent fd27fd0844
commit e657fcdcab
8 changed files with 59 additions and 11 deletions

View File

@@ -17,7 +17,7 @@
</empty-folder-content> </empty-folder-content>
--> -->
<content-columns> <content-columns>
<content-column source="$thumbnail"></content-column> <content-column source="$thumbnail" type="image"></content-column>
<content-column <content-column
title="{{'DOCUMENT_LIST.COLUMNS.DISPLAY_NAME' | translate}}" title="{{'DOCUMENT_LIST.COLUMNS.DISPLAY_NAME' | translate}}"
source="name" source="name"
@@ -35,7 +35,9 @@
</content-column> </content-column>
<content-column <content-column
title="{{'DOCUMENT_LIST.COLUMNS.CREATED_ON' | translate}}" title="{{'DOCUMENT_LIST.COLUMNS.CREATED_ON' | translate}}"
source="createdAt"> source="createdAt"
type="date"
format="medium">
</content-column> </content-column>
</content-columns> </content-columns>

View File

@@ -50,7 +50,7 @@ import {
<alfresco-document-list #doclist> <alfresco-document-list #doclist>
<content-columns> <content-columns>
<content-column source="$thumbnail"></content-column> <content-column source="$thumbnail" type="image"></content-column>
<content-column <content-column
title="{{'DOCUMENT_LIST.COLUMNS.DISPLAY_NAME' | translate}}" title="{{'DOCUMENT_LIST.COLUMNS.DISPLAY_NAME' | translate}}"
source="name" source="name"
@@ -66,7 +66,9 @@ import {
</content-column> </content-column>
<content-column <content-column
title="{{'DOCUMENT_LIST.COLUMNS.CREATED_ON' | translate}}" title="{{'DOCUMENT_LIST.COLUMNS.CREATED_ON' | translate}}"
source="createdAt"> source="createdAt"
type="date"
format="medium">
</content-column> </content-column>
</content-columns> </content-columns>
<content-actions> <content-actions>

View File

@@ -40,6 +40,12 @@ export class ContentColumn implements OnInit, OnChanges {
@Input('class') @Input('class')
cssClass: string; cssClass: string;
@Input()
type: string = 'text';
@Input()
format: string;
model: ContentColumnModel; model: ContentColumnModel;
constructor(private list: ContentColumnList) { constructor(private list: ContentColumnList) {
@@ -51,7 +57,9 @@ export class ContentColumn implements OnInit, OnChanges {
title: this.title, title: this.title,
srTitle: this.srTitle, srTitle: this.srTitle,
source: this.source, source: this.source,
cssClass: this.cssClass cssClass: this.cssClass,
type: this.type,
format: this.format
}); });
if (!this.model.srTitle && this.model.source === '$thumbnail') { if (!this.model.srTitle && this.model.source === '$thumbnail') {

View File

@@ -23,6 +23,8 @@
cursor: pointer; cursor: pointer;
} }
:host .cell-value {}
:host .folder-row-cell.name-column, :host .folder-row-cell.name-column,
:host .document-row-cell.name-column { :host .document-row-cell.name-column {
font-size: 15px; font-size: 15px;

View File

@@ -36,15 +36,18 @@
<tr *ngFor="#content of folder.list.entries; #idx = index" <tr *ngFor="#content of folder.list.entries; #idx = index"
[attr.data-automation-id]="getObjectValue(content.entry, 'name')"> [attr.data-automation-id]="getObjectValue(content.entry, 'name')">
<!-- Columns --> <!-- Columns -->
<td *ngFor="#col of columns" [ngSwitch]="col.source" <td *ngFor="#col of columns" [ngSwitch]="col.type"
class="mdl-data-table__cell--non-numeric {{content.entry.isFolder ? 'folder-row-cell' : 'document-row-cell'}} {{col.cssClass}}" class="mdl-data-table__cell--non-numeric {{content.entry.isFolder ? 'folder-row-cell' : 'document-row-cell'}} {{col.cssClass}}"
(click)="onItemClick(content, $event)" (click)="onItemClick(content, $event)"
[attr.data-automation-id]="col.source === '$thumbnail' ? '$thumbnail' : col.source + '_' + getObjectValue(content.entry, col.source)"> [attr.data-automation-id]="col.source === '$thumbnail' ? '$thumbnail' : col.source + '_' + getObjectValue(content.entry, col.source)">
<div *ngSwitchWhen="'$thumbnail'"> <div *ngSwitchWhen="'image'" class="cell-value">
<img class="thumbnail" src="{{getThumbnailUrl(content)}}"> <img class="thumbnail" [src]="getCellValue(content, col)">
</div> </div>
<span *ngSwitchDefault> <span *ngSwitchWhen="'date'" class="cell-value">
{{getObjectValue(content.entry, col.source)}} {{ getCellValue(content, col) }}
</span>
<span *ngSwitchDefault class="cell-value">
{{ getCellValue(content, col) }}
</span> </span>
</td> </td>

View File

@@ -59,7 +59,9 @@ describe('DocumentList', () => {
title: 'title', title: 'title',
source: 'source', source: 'source',
cssClass: 'css', cssClass: 'css',
srTitle: '' srTitle: '',
type: 'text',
format: ''
}; };
documentList.columns.push(column); documentList.columns.push(column);

View File

@@ -26,6 +26,7 @@ import {
OnChanges, OnChanges,
TemplateRef TemplateRef
} from 'angular2/core'; } from 'angular2/core';
import { DatePipe } from 'angular2/common';
import { AlfrescoService } from './../services/alfresco.service'; import { AlfrescoService } from './../services/alfresco.service';
import { MinimalNodeEntity, NodePaging } from './../models/document-library.model'; import { MinimalNodeEntity, NodePaging } from './../models/document-library.model';
import { ContentActionModel } from './../models/content-action.model'; import { ContentActionModel } from './../models/content-action.model';
@@ -345,12 +346,36 @@ export class DocumentList implements OnInit, AfterViewChecked, AfterContentInit,
return target; return target;
} }
getCellValue(row: MinimalNodeEntity, col: ContentColumnModel): any {
let value = this._getObjectValueRaw(row.entry, col.source);
if (col.type === 'date') {
let datePipe = new DatePipe();
if (datePipe.supports(value)) {
// TODO: to be changed to plan non-array value post angular2 beta.15
let pattern = col.format ? [col.format] : [];
return datePipe.transform(value, pattern);
}
}
if (col.type === 'image') {
if (col.source === '$thumbnail') {
return this.getThumbnailUrl(row);
}
}
return value;
}
/** /**
* Creates a set of predefined columns. * Creates a set of predefined columns.
*/ */
setupDefaultColumns(): void { setupDefaultColumns(): void {
let thumbnailCol = new ContentColumnModel(); let thumbnailCol = new ContentColumnModel();
thumbnailCol.source = '$thumbnail'; thumbnailCol.source = '$thumbnail';
thumbnailCol.type = 'image';
let nameCol = new ContentColumnModel(); let nameCol = new ContentColumnModel();
nameCol.title = 'Name'; nameCol.title = 'Name';

View File

@@ -20,6 +20,8 @@ export class ContentColumnModel {
srTitle: string; srTitle: string;
source: string; source: string;
cssClass: string; cssClass: string;
type: string = 'text'; // text|date|image|number
format: string = 'medium';
constructor(obj?: any) { constructor(obj?: any) {
if (obj) { if (obj) {
@@ -27,6 +29,8 @@ export class ContentColumnModel {
this.srTitle = obj.srTitle; this.srTitle = obj.srTitle;
this.source = obj.source; this.source = obj.source;
this.cssClass = obj.cssClass; this.cssClass = obj.cssClass;
this.type = obj.type || 'text';
this.format = obj.format;
} }
} }
} }