浏览代码

feat(table): added support for column units overriding style units for table

Torkel Ödegaard 9 年之前
父节点
当前提交
5ffd57695c
共有 2 个文件被更改,包括 18 次插入6 次删除
  1. 3 3
      public/app/plugins/panel/table/renderer.ts
  2. 15 3
      public/app/plugins/panel/table/specs/renderer_specs.ts

+ 3 - 3
public/app/plugins/panel/table/renderer.ts

@@ -36,7 +36,7 @@ export class TableRenderer {
     return v;
   }
 
-  createColumnFormater(style) {
+  createColumnFormater(style, column) {
     if (!style) {
       return this.defaultCellFormater;
     }
@@ -53,7 +53,7 @@ export class TableRenderer {
     }
 
     if (style.type === 'number') {
-      let valueFormater = kbn.valueFormats[style.unit];
+      let valueFormater = kbn.valueFormats[column.unit || style.unit];
 
       return v =>  {
         if (v === null || v === void 0) {
@@ -85,7 +85,7 @@ export class TableRenderer {
       let column = this.table.columns[colIndex];
       var regex = kbn.stringToJsRegex(style.pattern);
       if (column.text.match(regex)) {
-        this.formaters[colIndex] = this.createColumnFormater(style);
+        this.formaters[colIndex] = this.createColumnFormater(style, column);
         return this.formaters[colIndex](value);
       }
     }

+ 15 - 3
public/app/plugins/panel/table/specs/renderer_specs.ts

@@ -11,7 +11,8 @@ describe('when rendering table', () => {
       {text: 'Value'},
       {text: 'Colored'},
       {text: 'Undefined'},
-      {text: 'String'}
+      {text: 'String'},
+      {text: 'United', unit: 'bps'},
     ];
 
     var panel = {
@@ -40,6 +41,12 @@ describe('when rendering table', () => {
         {
           pattern: 'String',
           type: 'string',
+        },
+        {
+          pattern: 'United',
+          type: 'number',
+          unit: 'ms',
+          decimals: 2,
         }
       ]
     };
@@ -51,6 +58,11 @@ describe('when rendering table', () => {
       expect(html).to.be('<td>2014-01-01T06:06:06+00:00</td>');
     });
 
+    it('number column with unit specified should ignore style unit', () => {
+      var html = renderer.renderCell(5, 1230);
+      expect(html).to.be('<td>1.23 kbps</td>');
+    });
+
     it('number column should be formated', () => {
       var html = renderer.renderCell(1, 1230);
       expect(html).to.be('<td>1.230 s</td>');
@@ -62,8 +74,8 @@ describe('when rendering table', () => {
     });
 
     it('colored cell should have style', () => {
-        var html = renderer.renderCell(2, 40);
-        expect(html).to.be('<td style="color:green">40.0</td>');
+      var html = renderer.renderCell(2, 40);
+      expect(html).to.be('<td style="color:green">40.0</td>');
     });
 
     it('colored cell should have style', () => {