Skip to content

Commit

Permalink
fix(data-table): format columns correctly when displaying them. closes(
Browse files Browse the repository at this point in the history
…#187) (#188)

* feat(data-table): filter properly the data in the data-table

* added correct type to format function

* fix(data-table): handle undefined data array propertly.

* removed hack for tooltip in data-table since now an empty tooltip is not shown

* updated docs demo with format example in atomic components (data-table)
  • Loading branch information
emoralesb05 authored and kyleledbetter committed Dec 16, 2016
1 parent de393fd commit 66ab3f6
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ <h4 class="md-subhead">with custom headings, columns, and inline editing</h4>
<button md-button [class.md-accent]="!row['comments']">{{row['comments'] || 'Add Comment'}}</button>
</td>
<td td-data-table-cell *ngFor="let column of columns" [numeric]="column.numeric">
{{row[column.name]}}
{{column.format ? column.format(row[column.name]) : row[column.name]}}
</td>
</tr>
</table>
Expand All @@ -51,7 +51,7 @@ <h4 class="md-subhead">with custom headings, columns, and inline editing</h4>
<button md-button [class.md-accent]="!row['comments']">{ {row['comments'] || 'Add Comment'}}</button>
</td>
<td td-data-table-cell *ngFor="let column of columns" [numeric]="column.numeric">
{ {row[column.name]}}
{ {column.format ? column.format(row[column.name]) : row[column.name]}}
</td>
</tr>
</table>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import { TdDataTableSortingOrder, TdDataTableService,
import { IPageChangeEvent } from '../../../../platform/paging';
import { TdDialogService } from '../../../../platform/core';

const NUMBER_FORMAT: any = (v: number) => v;
const DECIMAL_FORMAT: any = (v: number) => v.toFixed(2);
const NUMBER_FORMAT: (v: any) => any = (v: number) => v;
const DECIMAL_FORMAT: (v: any) => any = (v: number) => v.toFixed(2);

@Component({
selector: 'data-table-demo',
Expand Down
5 changes: 2 additions & 3 deletions src/platform/data-table/data-table.component.html
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,7 @@
[sortable]="_sortable"
[sortOrder]="_sortOrder"
(sortChange)="handleSort(column)">
<span *ngIf="column.tooltip" [md-tooltip]="column.tooltip">{{column.label}}</span>
<span *ngIf="!column.tooltip">{{column.label}}</span>
<span [md-tooltip]="column.tooltip">{{column.label}}</span>
</th>
<tr td-data-table-row
[class.md-selected]="_selectable && isRowSelected(row)"
Expand All @@ -32,7 +31,7 @@
<td td-data-table-cell
[numeric]="column.numeric"
*ngFor="let column of columns">
<span class="md-body-1" *ngIf="!getTemplateRef(column.name)">{{row[column.name]}}</span>
<span class="md-body-1" *ngIf="!getTemplateRef(column.name)">{{column.format ? column.format(row[column.name]) : row[column.name]}}</span>
<template
*ngIf="getTemplateRef(column.name)"
[ngTemplateOutlet]="getTemplateRef(column.name)"
Expand Down
30 changes: 8 additions & 22 deletions src/platform/data-table/data-table.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ export interface ITdDataTableColumn {
label: string;
tooltip?: string;
numeric?: boolean;
format?: { (value: any): any };
format?: (value: any) => any;
};

export interface ITdDataTableSelectEvent {
Expand Down Expand Up @@ -104,22 +104,19 @@ export class TdDataTableComponent implements ControlValueAccessor, AfterContentI
return this._columns;
}

if (!this._data) {
return [];
}

this._columns = [];
// if columns is undefined, use key in [data] rows as name and label for column headers.
if (this._data.length > 0) {
if (this.hasData) {
this._columns = [];
// if columns is undefined, use key in [data] rows as name and label for column headers.
let row: any = this._data[0];
Object.keys(row).forEach((k: string) => {
if (!this._columns.find((c: any) => c.name === k)) {
this._columns.push({ name: k, label: k });
}
});
return this._columns;
} else {
return [];
}

return this._columns;
}

/**
Expand Down Expand Up @@ -186,7 +183,7 @@ export class TdDataTableComponent implements ControlValueAccessor, AfterContentI
}

get hasData(): boolean {
return this._data.length > 0;
return this._data && this._data.length > 0;
}

/**
Expand Down Expand Up @@ -235,7 +232,6 @@ export class TdDataTableComponent implements ControlValueAccessor, AfterContentI
*/
refresh(): void {
this.clearModel();
this._preprocessData();
}

/**
Expand Down Expand Up @@ -336,14 +332,4 @@ export class TdDataTableComponent implements ControlValueAccessor, AfterContentI
onChange = (_: any) => noop;
onTouched = () => noop;

private _preprocessData(): void {
let data: Object[] = JSON.parse(JSON.stringify(this._data));
this._data = data.map((row: any) => {
this.columns.filter((c: any) => c.format).forEach((c: any) => {
row[c.name] = c.format(row[c.name]);
});
return row;
});
}

}

0 comments on commit 66ab3f6

Please sign in to comment.