diff --git a/public/app/panels/table/controller.ts b/public/app/panels/table/controller.ts index 463096f097c..cfd2fdf7786 100644 --- a/public/app/panels/table/controller.ts +++ b/public/app/panels/table/controller.ts @@ -9,7 +9,7 @@ import {TableModel} from './table_model'; export class TablePanelCtrl { - constructor($scope, $rootScope, $q, panelSrv, panelHelper) { + constructor($scope, $rootScope, $q, panelSrv, panelHelper, annotationsSrv) { $scope.ctrl = this; $scope.pageIndex = 0; @@ -36,19 +36,22 @@ export class TablePanelCtrl { $scope.init = function() { _.defaults($scope.panel, panelDefaults); - if ($scope.panel.columns.length === 0) { - } - panelSrv.init($scope); }; $scope.refreshData = function(datasource) { panelHelper.updateTimeRange($scope); + if ($scope.panel.transform === 'annotations') { + return annotationsSrv.getAnnotations($scope.dashboard).then(annotations => { + $scope.dataRaw = annotations; + $scope.render(); + }); + } + return panelHelper.issueMetricQuery($scope, datasource) .then($scope.dataHandler, function(err) { - $scope.seriesList = []; - $scope.render([]); + $scope.render(); throw err; }); }; diff --git a/public/app/panels/table/renderer.ts b/public/app/panels/table/renderer.ts index acfef961f07..fae851e54b5 100644 --- a/public/app/panels/table/renderer.ts +++ b/public/app/panels/table/renderer.ts @@ -24,9 +24,22 @@ export class TableRenderer { return null; } + defaultCellFormater(v) { + if (v === null || v === void 0) { + return ''; + } + + if (_.isArray(v)) { + v = v.join(', '); + } + + return v; + } + + createColumnFormater(style) { if (!style) { - return v => v; + return this.defaultCellFormater; } if (style.type === 'date') { @@ -60,17 +73,7 @@ export class TableRenderer { }; } - return v => { - if (v === null || v === void 0) { - return '-'; - } - - if (_.isArray(v)) { - v = v.join(', '); - } - - return v; - }; + return this.defaultCellFormater; } formatColumnValue(colIndex, value) { @@ -88,10 +91,7 @@ export class TableRenderer { } } - this.formaters[colIndex] = function(v) { - return v; - }; - + this.formaters[colIndex] = this.defaultCellFormater; return this.formaters[colIndex](value); } diff --git a/public/app/panels/table/specs/renderer_specs.ts b/public/app/panels/table/specs/renderer_specs.ts index fad4f993acf..43b60c1b364 100644 --- a/public/app/panels/table/specs/renderer_specs.ts +++ b/public/app/panels/table/specs/renderer_specs.ts @@ -9,7 +9,8 @@ describe('when rendering table', () => { table.columns = [ {text: 'Time'}, {text: 'Value'}, - {text: 'Colored'} + {text: 'Colored'}, + {text: 'Undefined'}, ]; var panel = { @@ -59,6 +60,11 @@ describe('when rendering table', () => { var html = renderer.renderCell(2, 55); expect(html).to.be('