Commit fb9e8d21 by Torkel Ödegaard

feat(table panel): fixed issue with column selection for new table panel

parent 3668cb6d
...@@ -20,7 +20,6 @@ function (_, $, coreModule) { ...@@ -20,7 +20,6 @@ function (_, $, coreModule) {
getOptions: "&", getOptions: "&",
onChange: "&", onChange: "&",
}, },
link: function($scope, elem) { link: function($scope, elem) {
var $input = $(inputTemplate); var $input = $(inputTemplate);
var $button = $(buttonTemplate); var $button = $(buttonTemplate);
......
...@@ -60,7 +60,6 @@ export class TablePanelCtrl { ...@@ -60,7 +60,6 @@ export class TablePanelCtrl {
} }
_.defaults($scope.panel, panelDefaults); _.defaults($scope.panel, panelDefaults);
panelSrv.init($scope); panelSrv.init($scope);
}; };
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
</ul> </ul>
<div class="clearfix"></div> <div class="clearfix"></div>
</div> </div>
<div class="tight-form" ng-if="showColumnOptions"> <div class="tight-form">
<ul class="tight-form-list"> <ul class="tight-form-list">
<li class="tight-form-item" style="width: 140px"> <li class="tight-form-item" style="width: 140px">
Columns Columns
...@@ -27,7 +27,8 @@ ...@@ -27,7 +27,8 @@
{{column.text}} {{column.text}}
</span> </span>
</li> </li>
<li class="dropdown" dropdown-typeahead="columnsMenu" dropdown-typeahead-on-select="addColumn($item, $subItem)"> <li>
<metric-segment segment="addColumnSegment" get-options="getColumnOptions()" on-change="addColumn()"></metric-segment>
</li> </li>
</ul> </ul>
<div class="clearfix"></div> <div class="clearfix"></div>
......
///<reference path="../../headers/common.d.ts" /> ///<reference path="../../headers/common.d.ts" />
import angular = require('angular'); import angular = require('angular');
import $ = require('jquery'); import $ = require('jquery');
import _ = require('lodash'); import _ = require('lodash');
...@@ -9,64 +9,65 @@ import moment = require('moment'); ...@@ -9,64 +9,65 @@ import moment = require('moment');
import {transformers} from './transformers'; import {transformers} from './transformers';
export function tablePanelEditor() { export class TablePanelEditorCtrl {
'use strict';
return { /** @ngInject */
restrict: 'E', constructor($scope, $q, uiSegmentSrv) {
scope: true, $scope.transformers = transformers;
templateUrl: 'app/panels/table/editor.html', $scope.unitFormats = kbn.getUnitFormats();
link: function(scope, elem) { $scope.colorModes = [
scope.transformers = transformers;
scope.unitFormats = kbn.getUnitFormats();
scope.colorModes = [
{text: 'Disabled', value: null}, {text: 'Disabled', value: null},
{text: 'Cell', value: 'cell'}, {text: 'Cell', value: 'cell'},
{text: 'Value', value: 'value'}, {text: 'Value', value: 'value'},
{text: 'Row', value: 'row'}, {text: 'Row', value: 'row'},
]; ];
scope.columnTypes = [ $scope.columnTypes = [
{text: 'Number', value: 'number'}, {text: 'Number', value: 'number'},
{text: 'String', value: 'string'}, {text: 'String', value: 'string'},
{text: 'Date', value: 'date'}, {text: 'Date', value: 'date'},
]; ];
scope.fontSizes = ['80%', '90%', '100%', '110%', '120%', '130%', '150%', '160%', '180%', '200%', '220%', '250%']; $scope.fontSizes = ['80%', '90%', '100%', '110%', '120%', '130%', '150%', '160%', '180%', '200%', '220%', '250%'];
scope.dateFormats = [ $scope.dateFormats = [
{text: 'YYYY-MM-DD HH:mm:ss', value: 'YYYY-MM-DD HH:mm:ss'}, {text: 'YYYY-MM-DD HH:mm:ss', value: 'YYYY-MM-DD HH:mm:ss'},
{text: 'MM/DD/YY h:mm:ss a', value: 'MM/DD/YY h:mm:ss a'}, {text: 'MM/DD/YY h:mm:ss a', value: 'MM/DD/YY h:mm:ss a'},
{text: 'MMMM D, YYYY LT', value: 'MMMM D, YYYY LT'}, {text: 'MMMM D, YYYY LT', value: 'MMMM D, YYYY LT'},
]; ];
scope.updateColumnsMenu = function(data) { $scope.addColumnSegment = uiSegmentSrv.newPlusButton();
scope.columnsMenu = transformers[scope.panel.transform].getColumns(data);
scope.showColumnOptions = true; $scope.getColumnOptions = function() {
if (!$scope.dataRaw) {
return $q.when([]);
}
var columns = transformers[$scope.panel.transform].getColumns($scope.dataRaw);
var segments = _.map(columns, (c: any) => uiSegmentSrv.newSegment({value: c.text}));
return $q.when(segments);
}; };
scope.$on('render', function(event, table, rawData) { $scope.addColumn = function() {
scope.updateColumnsMenu(rawData); $scope.panel.columns.push({text: $scope.addColumnSegment.value, value: $scope.addColumnSegment.value});
}); $scope.render();
scope.addColumn = function(menuItem) { var plusButton = uiSegmentSrv.newPlusButton();
scope.panel.columns.push({text: menuItem.text, value: menuItem.value}); $scope.addColumnSegment.html = plusButton.html;
scope.render();
}; };
scope.transformChanged = function() { $scope.transformChanged = function() {
scope.panel.columns = []; $scope.panel.columns = [];
scope.updateColumnsMenu(); $scope.render();
scope.render();
}; };
scope.removeColumn = function(column) { $scope.removeColumn = function(column) {
scope.panel.columns = _.without(scope.panel.columns, column); $scope.panel.columns = _.without($scope.panel.columns, column);
scope.render(); $scope.render();
}; };
scope.setUnitFormat = function(column, subItem) { $scope.setUnitFormat = function(column, subItem) {
column.unit = subItem.value; column.unit = subItem.value;
scope.render(); $scope.render();
}; };
scope.addColumnStyle = function() { $scope.addColumnStyle = function() {
var columnStyleDefaults = { var columnStyleDefaults = {
unit: 'short', unit: 'short',
type: 'number', type: 'number',
...@@ -78,24 +79,33 @@ export function tablePanelEditor() { ...@@ -78,24 +79,33 @@ export function tablePanelEditor() {
thresholds: [], thresholds: [],
}; };
scope.panel.styles.push(angular.copy(columnStyleDefaults)); $scope.panel.styles.push(angular.copy(columnStyleDefaults));
}; };
scope.removeColumnStyle = function(style) { $scope.removeColumnStyle = function(style) {
scope.panel.styles = _.without(scope.panel.styles, style); $scope.panel.styles = _.without($scope.panel.styles, style);
}; };
scope.getColumnNames = function() { $scope.getColumnNames = function() {
if (!scope.table) { if (!$scope.table) {
return []; return [];
} }
return _.map(scope.table.columns, function(col: any) { return _.map($scope.table.columns, function(col: any) {
return col.text; return col.text;
}); });
}; };
scope.updateColumnsMenu(scope.dataRaw);
} }
}
export function tablePanelEditor($q, uiSegmentSrv) {
'use strict';
return {
restrict: 'E',
scope: true,
templateUrl: 'app/panels/table/editor.html',
controller: TablePanelEditorCtrl,
}; };
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment