diff --git a/public/app/panels/table/editor.html b/public/app/panels/table/editor.html index e7c76402974..8540885514d 100644 --- a/public/app/panels/table/editor.html +++ b/public/app/panels/table/editor.html @@ -60,10 +60,13 @@
-
    -
  • +
      +
    • +
    + +
    • Name or regex
    • @@ -86,9 +89,6 @@
    -
  • - -
  • Format
  • @@ -100,9 +100,6 @@
    -
  • - -
  • Coloring
  • @@ -136,9 +133,6 @@
    -
  • - -
  • Unit
  • diff --git a/public/app/panels/table/editor.ts b/public/app/panels/table/editor.ts index 4cd4070dd1b..ab10cba7f1d 100644 --- a/public/app/panels/table/editor.ts +++ b/public/app/panels/table/editor.ts @@ -63,10 +63,12 @@ export function tablePanelEditor() { scope.addJsonField = function(menuItem) { scope.panel.fields.push({name: menuItem.text}); + scope.render(); }; scope.removeJsonField = function(field) { scope.panel.fields = _.without(scope.panel.fields, field); + scope.render(); }; scope.setUnitFormat = function(column, subItem) { diff --git a/public/app/panels/table/module.ts b/public/app/panels/table/module.ts index 84955070be4..00610ca0e72 100644 --- a/public/app/panels/table/module.ts +++ b/public/app/panels/table/module.ts @@ -29,19 +29,6 @@ export function tablePanel() { return (panelHeight - 40) + 'px'; } - function appendTableHeader(tableElem) { - var rowElem = $(''); - for (var i = 0; i < data.columns.length; i++) { - var column = data.columns[i]; - var colElem = $('' + column.text + ''); - rowElem.append(colElem); - } - - var headElem = $(''); - headElem.append(rowElem); - headElem.appendTo(tableElem); - } - function createColumnFormater(style) { return function(v) { if (v === null || v === void 0) { @@ -50,12 +37,23 @@ export function tablePanel() { if (_.isString(v) || !style) { return v; } + if (style.type === 'date') { + if (_.isArray(v)) { v = v[0]; } var date = moment(v); return date.format(style.dateFormat); } - let valueFormater = kbn.valueFormats[style.unit]; - return valueFormater(v, style.decimals); + + if (_.isNumber(v) && style.type === 'number') { + let valueFormater = kbn.valueFormats[style.unit]; + return valueFormater(v, style.decimals); + } + + if (_.isArray(v)) { + v = v.join(', '); + } + + return v; }; } diff --git a/public/app/panels/table/renderer.ts b/public/app/panels/table/renderer.ts new file mode 100644 index 00000000000..c3b09ee45da --- /dev/null +++ b/public/app/panels/table/renderer.ts @@ -0,0 +1,31 @@ + +export class TableRenderer { + constructor(private panel, private table) { + } + + formatColumnValue(columnIndex, value) { + return "value"; + } + + renderCell(columnIndex, value) { + var colValue = this.formatColumnValue(columnIndex, value); + return '' + colValue + ''; + } + + render(page) { + let endPos = Math.min(this.panel.pageSize, this.table.rows.length); + let startPos = 0; + var html = ""; + + for (var y = startPos; y < endPos; y++) { + let row = this.table.rows[y]; + html += ''; + for (var i = 0; i < this.table.columns.length; i++) { + html += this.renderCell(i, row[i]); + } + html += ''; + } + + return html; + } +} diff --git a/public/app/panels/table/specs/renderer_specs.ts b/public/app/panels/table/specs/renderer_specs.ts new file mode 100644 index 00000000000..c4c5ff5d3c3 --- /dev/null +++ b/public/app/panels/table/specs/renderer_specs.ts @@ -0,0 +1,25 @@ +import {describe, beforeEach, it, sinon, expect} from 'test/lib/common'; + +import {TableModel} from '../table_model'; +import {TableRenderer} from '../renderer'; + +describe('when rendering table', () => { + describe('given 2 columns', () => { + var table = new TableModel(); + table.columns = [{text: 'Time'}, {text: 'Value'}]; + table.rows.push([1446733230253, 12.4]); + table.rows.push([1446733231253, 10.4]); + + var panel = { + pageSize: 10 + }; + + it('render should return html', () => { + var html = new TableRenderer(panel, table).render(0); + expect(html).to.be('value'); + }); + + }); +}); + + diff --git a/public/app/panels/table/specs/transformers_specs.ts b/public/app/panels/table/specs/transformers_specs.ts index af9dd880cf1..597b8913b82 100644 --- a/public/app/panels/table/specs/transformers_specs.ts +++ b/public/app/panels/table/specs/transformers_specs.ts @@ -96,7 +96,7 @@ describe('when transforming time series table', () => { }); it ('should return 2 rows', () => { - expect(table.rows.length).to.be(2); + expect(table.rows.length).to.be(1); expect(table.rows[0][0]).to.be('time'); expect(table.rows[0][1]).to.be('message'); }); diff --git a/public/app/panels/table/transformers.ts b/public/app/panels/table/transformers.ts index 096ebb73051..dce0098dde3 100644 --- a/public/app/panels/table/transformers.ts +++ b/public/app/panels/table/transformers.ts @@ -91,7 +91,7 @@ transformers['json'] = { } if (values.length === 0) { - values.push([JSON.stringify(dp)]); + values.push(JSON.stringify(dp)); } model.rows.push(values); }