controller.ts 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. ///<reference path="../../headers/common.d.ts" />
  2. import angular = require('angular');
  3. import _ = require('lodash');
  4. import moment = require('moment');
  5. import kbn = require('app/core/utils/kbn');
  6. import PanelMeta = require('app/features/panel/panel_meta');
  7. import {TableModel} from './table_model';
  8. import {transformers} from './transformers';
  9. export class TablePanelCtrl {
  10. constructor($scope, $rootScope, $q, panelSrv, panelHelper) {
  11. $scope.ctrl = this;
  12. $scope.transformers = transformers;
  13. $scope.pageIndex = 0;
  14. $scope.unitFormats = kbn.getUnitFormats();
  15. $scope.colorModes = {
  16. 'cell': {text: 'Cell'},
  17. 'value': {text: 'Value'},
  18. 'row': {text: 'Row'},
  19. };
  20. $scope.panelMeta = new PanelMeta({
  21. panelName: 'Table',
  22. editIcon: "fa fa-table",
  23. fullscreen: true,
  24. metricsEditor: true,
  25. });
  26. $scope.panelMeta.addEditorTab('Options', 'app/panels/table/options.html');
  27. $scope.panelMeta.addEditorTab('Time range', 'app/features/panel/partials/panelTime.html');
  28. var panelDefaults = {
  29. targets: [{}],
  30. transform: 'timeseries_to_rows',
  31. pageSize: 50,
  32. showHeader: true,
  33. columns: [{
  34. pattern: '/.*/',
  35. unit: 'short',
  36. decimals: 2,
  37. colors: ["rgba(245, 54, 54, 0.9)", "rgba(237, 129, 40, 0.89)", "rgba(50, 172, 45, 0.97)"],
  38. }],
  39. };
  40. _.defaults($scope.panel, panelDefaults);
  41. $scope.setUnitFormat = function(column, subItem) {
  42. column.unit = subItem.value;
  43. $scope.render();
  44. };
  45. $scope.refreshData = function(datasource) {
  46. panelHelper.updateTimeRange($scope);
  47. return panelHelper.issueMetricQuery($scope, datasource)
  48. .then($scope.dataHandler, function(err) {
  49. $scope.seriesList = [];
  50. $scope.render([]);
  51. throw err;
  52. });
  53. };
  54. $scope.dataHandler = function(results) {
  55. $scope.dataRaw = results.data;
  56. $scope.render();
  57. };
  58. $scope.render = function() {
  59. $scope.table = TableModel.transform($scope.dataRaw, $scope.panel);
  60. panelHelper.broadcastRender($scope, $scope.table);
  61. };
  62. panelSrv.init($scope);
  63. }
  64. }