|
|
@@ -7,6 +7,7 @@ import kbn = require('app/core/utils/kbn');
|
|
|
import moment = require('moment');
|
|
|
|
|
|
import {TablePanelCtrl} from './controller';
|
|
|
+import {TableRenderer} from './renderer';
|
|
|
import {tablePanelEditor} from './editor';
|
|
|
|
|
|
export function tablePanel() {
|
|
|
@@ -29,76 +30,10 @@ export function tablePanel() {
|
|
|
return (panelHeight - 40) + 'px';
|
|
|
}
|
|
|
|
|
|
- function createColumnFormater(style) {
|
|
|
- return function(v) {
|
|
|
- if (v === null || v === void 0) {
|
|
|
- return '-';
|
|
|
- }
|
|
|
- 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);
|
|
|
- }
|
|
|
-
|
|
|
- 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;
|
|
|
- };
|
|
|
- }
|
|
|
-
|
|
|
- function formatColumnValue(colIndex, value) {
|
|
|
- if (formaters[colIndex]) {
|
|
|
- return formaters[colIndex](value);
|
|
|
- }
|
|
|
-
|
|
|
- for (let i = 0; i < panel.columns.length; i++) {
|
|
|
- let style = panel.columns[i];
|
|
|
- let column = data.columns[colIndex];
|
|
|
- var regex = kbn.stringToJsRegex(style.pattern);
|
|
|
- if (column.text.match(regex)) {
|
|
|
- formaters[colIndex] = createColumnFormater(style);
|
|
|
- return formaters[colIndex](value);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- formaters[colIndex] = function(v) {
|
|
|
- return v;
|
|
|
- };
|
|
|
-
|
|
|
- return formaters[colIndex](value);
|
|
|
- }
|
|
|
-
|
|
|
function appendTableRows(tbodyElem) {
|
|
|
- let rowElements = $(document.createDocumentFragment());
|
|
|
- let rowEnd = Math.min(panel.pageSize, data.rows.length);
|
|
|
- let rowStart = 0;
|
|
|
- // reset formater cache
|
|
|
- formaters = [];
|
|
|
-
|
|
|
- for (var y = rowStart; y < rowEnd; y++) {
|
|
|
- let row = data.rows[y];
|
|
|
- let rowElem = $('<tr></tr>');
|
|
|
- for (var i = 0; i < data.columns.length; i++) {
|
|
|
- var colValue = formatColumnValue(i, row[i]);
|
|
|
- let colElem = $('<td> ' + colValue + '</td>');
|
|
|
- rowElem.append(colElem);
|
|
|
- }
|
|
|
- rowElements.append(rowElem);
|
|
|
- }
|
|
|
-
|
|
|
+ var renderer = new TableRenderer(panel, data, scope.dashboard.timezone);
|
|
|
tbodyElem.empty();
|
|
|
- tbodyElem.append(rowElements);
|
|
|
+ tbodyElem.html(renderer.render(0));
|
|
|
}
|
|
|
|
|
|
function appendPaginationControls(footerElem) {
|