From 0558b17b9eeee4cc9b0c6969550ec326a923bd40 Mon Sep 17 00:00:00 2001 From: ryan Date: Wed, 20 Mar 2019 11:27:56 -0700 Subject: [PATCH] show all colums in graph --- .../grafana-ui/src/utils/processTableData.ts | 10 ++++ .../app/plugins/panel/graph2/GraphPanel.tsx | 48 +++++++++++++------ 2 files changed, 44 insertions(+), 14 deletions(-) diff --git a/packages/grafana-ui/src/utils/processTableData.ts b/packages/grafana-ui/src/utils/processTableData.ts index dc1582e1f39..1ce514e7474 100644 --- a/packages/grafana-ui/src/utils/processTableData.ts +++ b/packages/grafana-ui/src/utils/processTableData.ts @@ -149,6 +149,16 @@ function convertTimeSeriesToTableData(timeSeries: TimeSeries): TableData { }; } +export const getFirstTimeColumn = (table: TableData): number => { + const { columns } = table; + for (let i = 0; i < columns.length; i++) { + if (columns[i].type === ColumnType.time) { + return i; + } + } + return -1; +}; + /** * @returns a table Returns a copy of the table with the best guess for each column type */ diff --git a/public/app/plugins/panel/graph2/GraphPanel.tsx b/public/app/plugins/panel/graph2/GraphPanel.tsx index f04e73e56fb..1bd51cd97a7 100644 --- a/public/app/plugins/panel/graph2/GraphPanel.tsx +++ b/public/app/plugins/panel/graph2/GraphPanel.tsx @@ -2,14 +2,17 @@ import _ from 'lodash'; import React, { PureComponent } from 'react'; -// Utils -import { processTimeSeries } from '@grafana/ui/src/utils'; - -// Components -import { Graph } from '@grafana/ui'; - -// Types -import { PanelProps, NullValueMode, TimeSeriesVMs } from '@grafana/ui/src/types'; +import { + Graph, + PanelProps, + NullValueMode, + colors, + TimeSeriesVMs, + ColumnType, + guessColumnTypes, + getFirstTimeColumn, + processTimeSeries, +} from '@grafana/ui'; import { Options } from './types'; interface Props extends PanelProps {} @@ -19,12 +22,29 @@ export class GraphPanel extends PureComponent { const { data, timeRange, width, height } = this.props; const { showLines, showBars, showPoints } = this.props.options; - let vmSeries: TimeSeriesVMs; - if (data) { - vmSeries = processTimeSeries({ - data, - nullValueMode: NullValueMode.Ignore, - }); + const vmSeries: TimeSeriesVMs = []; + for (let t = 0; t < data.length; t++) { + const table = guessColumnTypes(data[t]); + const timeColumn = getFirstTimeColumn(table); + if (timeColumn >= 0) { + for (let i = 0; i < table.columns.length; i++) { + const column = table.columns[i]; + + // Show all numeric columns + if (column.type === ColumnType.number) { + const tsvm = processTimeSeries({ + data: [table], + xColumn: timeColumn, + yColumn: i, + nullValueMode: NullValueMode.Null, + })[0]; + + const colorIndex = vmSeries.length % colors.length; + tsvm.color = colors[colorIndex]; + vmSeries.push(tsvm); + } + } + } } return (