|
|
@@ -1,4 +1,4 @@
|
|
|
-import { TableData, LogsModel, TimeSeries, GraphSeriesXY, DataFrame } from '@grafana/data';
|
|
|
+import { LogsModel, GraphSeriesXY, DataFrame, FieldType } from '@grafana/data';
|
|
|
|
|
|
import { ExploreItemState, ExploreMode } from 'app/types/explore';
|
|
|
import TableModel, { mergeTablesIntoModel } from 'app/core/table_model';
|
|
|
@@ -33,13 +33,46 @@ export class ResultProcessor {
|
|
|
return new TableModel();
|
|
|
}
|
|
|
|
|
|
- return new TableModel();
|
|
|
- // const tables = this.panelData.series.map(frame => {
|
|
|
- // });
|
|
|
- // const prevTableResults: any[] | TableModel = this.state.tableResult || [];
|
|
|
- // const tablesToMerge = this.replacePreviousResults ? this.tables : [].concat(prevTableResults, this.tables);
|
|
|
- //
|
|
|
- // return mergeTablesIntoModel(new TableModel(), ...tablesToMerge);
|
|
|
+ // For now ignore time series
|
|
|
+ // We can change this later, just need to figure out how to
|
|
|
+ // Ignore time series only for prometheus
|
|
|
+ const onlyTables = this.dataFrames.filter(frame => {
|
|
|
+ if (frame.fields.length === 2) {
|
|
|
+ if (frame.fields[1].type === FieldType.time) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ });
|
|
|
+
|
|
|
+ const tables = onlyTables.map(frame => {
|
|
|
+ const { fields } = frame;
|
|
|
+ const fieldCount = fields.length;
|
|
|
+ const rowCount = fields[0].values.length;
|
|
|
+
|
|
|
+ const columns = fields.map(field => ({
|
|
|
+ text: field.name,
|
|
|
+ type: field.type,
|
|
|
+ filterable: field.config.filterable,
|
|
|
+ }));
|
|
|
+
|
|
|
+ const rows: any[][] = [];
|
|
|
+ for (let i = 0; i < rowCount; i++) {
|
|
|
+ const row: any[] = [];
|
|
|
+ for (let j = 0; j < fieldCount; j++) {
|
|
|
+ row.push(frame.fields[j].values.get(i));
|
|
|
+ }
|
|
|
+ rows.push(row);
|
|
|
+ }
|
|
|
+
|
|
|
+ return new TableModel({
|
|
|
+ columns,
|
|
|
+ rows,
|
|
|
+ meta: frame.meta,
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ return mergeTablesIntoModel(new TableModel(), ...tables);
|
|
|
}
|
|
|
|
|
|
getLogsResult(): LogsModel {
|
|
|
@@ -79,54 +112,4 @@ export class ResultProcessor {
|
|
|
|
|
|
return { ...sortedNewResults, rows, series };
|
|
|
}
|
|
|
-
|
|
|
- // private isSameGraphSeries = (a: GraphSeriesXY, b: GraphSeriesXY) => {
|
|
|
- // if (a.hasOwnProperty('label') && b.hasOwnProperty('label')) {
|
|
|
- // const aValue = a.label;
|
|
|
- // const bValue = b.label;
|
|
|
- // if (aValue !== undefined && bValue !== undefined && aValue === bValue) {
|
|
|
- // return true;
|
|
|
- // }
|
|
|
- // }
|
|
|
- //
|
|
|
- // return false;
|
|
|
- // };
|
|
|
- //
|
|
|
- // private mergeGraphResults = (newResults: GraphSeriesXY[], prevResults: GraphSeriesXY[]): GraphSeriesXY[] => {
|
|
|
- // if (!prevResults || prevResults.length === 0 || this.replacePreviousResults) {
|
|
|
- // return newResults; // Hack before we use GraphSeriesXY instead
|
|
|
- // }
|
|
|
- //
|
|
|
- // const results: GraphSeriesXY[] = prevResults.slice() as GraphSeriesXY[];
|
|
|
- //
|
|
|
- // // update existing results
|
|
|
- // for (let index = 0; index < results.length; index++) {
|
|
|
- // const prevResult = results[index];
|
|
|
- // for (const newResult of newResults) {
|
|
|
- // const isSame = this.isSameGraphSeries(prevResult, newResult);
|
|
|
- //
|
|
|
- // if (isSame) {
|
|
|
- // prevResult.data = prevResult.data.concat(newResult.data);
|
|
|
- // break;
|
|
|
- // }
|
|
|
- // }
|
|
|
- // }
|
|
|
- //
|
|
|
- // // add new results
|
|
|
- // for (const newResult of newResults) {
|
|
|
- // let isNew = true;
|
|
|
- // for (const prevResult of results) {
|
|
|
- // const isSame = this.isSameGraphSeries(prevResult, newResult);
|
|
|
- // if (isSame) {
|
|
|
- // isNew = false;
|
|
|
- // break;
|
|
|
- // }
|
|
|
- // }
|
|
|
- //
|
|
|
- // if (isNew) {
|
|
|
- // results.push(newResult);
|
|
|
- // }
|
|
|
- // }
|
|
|
- // return results;
|
|
|
- // };
|
|
|
}
|