| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- ///<reference path="../../../headers/common.d.ts" />
- import _ from "lodash";
- import { transformers } from "./transformers";
- export class TablePanelEditorCtrl {
- panel: any;
- panelCtrl: any;
- transformers: any;
- fontSizes: any;
- addColumnSegment: any;
- getColumnNames: any;
- canSetColumns: boolean;
- columnsHelpMessage: string;
- /** @ngInject */
- constructor($scope, private $q, private uiSegmentSrv) {
- $scope.editor = this;
- this.panelCtrl = $scope.ctrl;
- this.panel = this.panelCtrl.panel;
- this.transformers = transformers;
- this.fontSizes = [
- "80%",
- "90%",
- "100%",
- "110%",
- "120%",
- "130%",
- "150%",
- "160%",
- "180%",
- "200%",
- "220%",
- "250%"
- ];
- this.addColumnSegment = uiSegmentSrv.newPlusButton();
- this.updateTransformHints();
- }
- updateTransformHints() {
- this.canSetColumns = false;
- this.columnsHelpMessage = "";
- switch (this.panel.transform) {
- case "timeseries_aggregations": {
- this.canSetColumns = true;
- break;
- }
- case "json": {
- this.canSetColumns = true;
- break;
- }
- case "table": {
- this.columnsHelpMessage =
- "Columns and their order are determined by the data query";
- }
- }
- }
- getColumnOptions() {
- if (!this.panelCtrl.dataRaw) {
- return this.$q.when([]);
- }
- var columns = this.transformers[this.panel.transform].getColumns(
- this.panelCtrl.dataRaw
- );
- var segments = _.map(columns, (c: any) =>
- this.uiSegmentSrv.newSegment({ value: c.text })
- );
- return this.$q.when(segments);
- }
- addColumn() {
- var columns = transformers[this.panel.transform].getColumns(
- this.panelCtrl.dataRaw
- );
- var column = _.find(columns, { text: this.addColumnSegment.value });
- if (column) {
- this.panel.columns.push(column);
- this.render();
- }
- var plusButton = this.uiSegmentSrv.newPlusButton();
- this.addColumnSegment.html = plusButton.html;
- this.addColumnSegment.value = plusButton.value;
- }
- transformChanged() {
- this.panel.columns = [];
- if (this.panel.transform === "timeseries_aggregations") {
- this.panel.columns.push({ text: "Avg", value: "avg" });
- }
- this.updateTransformHints();
- this.render();
- }
- render() {
- this.panelCtrl.render();
- }
- removeColumn(column) {
- this.panel.columns = _.without(this.panel.columns, column);
- this.panelCtrl.render();
- }
- }
- /** @ngInject */
- export function tablePanelEditor($q, uiSegmentSrv) {
- "use strict";
- return {
- restrict: "E",
- scope: true,
- templateUrl: "public/app/plugins/panel/table/editor.html",
- controller: TablePanelEditorCtrl
- };
- }
|