From 08a22c806fbcb5e03aa1dda98e5d7527047fcd8f Mon Sep 17 00:00:00 2001 From: Ryan McKinley Date: Fri, 12 Apr 2019 10:13:36 -0700 Subject: [PATCH] DirectInput: new alpha datasource that lets you enter data via CSV Initial alpha datasource that saves data directly in a panel or in the shared datasource configs. --- .../components/Table/TableInputCSV.story.tsx | 18 +-- .../components/Table/TableInputCSV.test.tsx | 2 + .../src/components/Table/TableInputCSV.tsx | 45 +++---- .../src/components/Table/_TableInputCSV.scss | 4 +- packages/grafana-ui/src/components/index.ts | 3 + packages/grafana-ui/src/types/datasource.ts | 6 + packages/grafana-ui/src/utils/csv.ts | 4 + .../app/features/plugins/built_in_plugins.ts | 2 + public/app/features/plugins/datasource_srv.ts | 1 + .../plugins/specs/datasource_srv.test.ts | 3 + .../datasource/input/InputQueryEditor.tsx | 98 ++++++++++++++++ public/app/plugins/datasource/input/README.md | 3 + .../datasource/input/datasource.test.ts | 34 ++++++ .../plugins/datasource/input/datasource.ts | 110 ++++++++++++++++++ .../plugins/datasource/input/img/input.svg | 14 +++ .../input/legacy/CSVInputWrapper.tsx | 45 +++++++ .../input/legacy/InputConfigCtrl.ts | 21 ++++ .../datasource/input/legacy/config.html | 16 +++ public/app/plugins/datasource/input/module.ts | 6 + .../app/plugins/datasource/input/plugin.json | 24 ++++ public/app/plugins/datasource/input/types.ts | 6 + .../plugins/datasource/mixed/datasource.ts | 26 +++-- scripts/ci-frontend-metrics.sh | 4 +- 23 files changed, 450 insertions(+), 45 deletions(-) create mode 100644 public/app/plugins/datasource/input/InputQueryEditor.tsx create mode 100644 public/app/plugins/datasource/input/README.md create mode 100644 public/app/plugins/datasource/input/datasource.test.ts create mode 100644 public/app/plugins/datasource/input/datasource.ts create mode 100644 public/app/plugins/datasource/input/img/input.svg create mode 100644 public/app/plugins/datasource/input/legacy/CSVInputWrapper.tsx create mode 100644 public/app/plugins/datasource/input/legacy/InputConfigCtrl.ts create mode 100644 public/app/plugins/datasource/input/legacy/config.html create mode 100644 public/app/plugins/datasource/input/module.ts create mode 100644 public/app/plugins/datasource/input/plugin.json create mode 100644 public/app/plugins/datasource/input/types.ts diff --git a/packages/grafana-ui/src/components/Table/TableInputCSV.story.tsx b/packages/grafana-ui/src/components/Table/TableInputCSV.story.tsx index 94a9484b42a..4eaa1dca9ff 100644 --- a/packages/grafana-ui/src/components/Table/TableInputCSV.story.tsx +++ b/packages/grafana-ui/src/components/Table/TableInputCSV.story.tsx @@ -12,14 +12,14 @@ TableInputStories.addDecorator(withCenteredStory); TableInputStories.add('default', () => { return ( -
- { - console.log('Data', data, text); - action('Data')(data, text); - }} - /> -
+ { + console.log('Data', data, text); + action('Data')(data, text); + }} + /> ); }); diff --git a/packages/grafana-ui/src/components/Table/TableInputCSV.test.tsx b/packages/grafana-ui/src/components/Table/TableInputCSV.test.tsx index 62d63a9df45..7052c69fa4b 100644 --- a/packages/grafana-ui/src/components/Table/TableInputCSV.test.tsx +++ b/packages/grafana-ui/src/components/Table/TableInputCSV.test.tsx @@ -9,6 +9,8 @@ describe('TableInputCSV', () => { const tree = renderer .create( { // console.log('Table:', table, 'from:', text); diff --git a/packages/grafana-ui/src/components/Table/TableInputCSV.tsx b/packages/grafana-ui/src/components/Table/TableInputCSV.tsx index b75f0935276..b45a8fba4c0 100644 --- a/packages/grafana-ui/src/components/Table/TableInputCSV.tsx +++ b/packages/grafana-ui/src/components/Table/TableInputCSV.tsx @@ -1,12 +1,13 @@ import React from 'react'; import debounce from 'lodash/debounce'; import { SeriesData } from '../../types/data'; -import { AutoSizer } from 'react-virtualized'; import { CSVConfig, readCSV } from '../../utils/csv'; interface Props { config?: CSVConfig; text: string; + width: string | number; + height: string | number; onSeriesParsed: (data: SeriesData[], text: string) => void; } @@ -18,7 +19,7 @@ interface State { /** * Expects the container div to have size set and will fill it 100% */ -class TableInputCSV extends React.PureComponent { +export class TableInputCSV extends React.PureComponent { constructor(props: Props) { super(props); @@ -58,28 +59,30 @@ class TableInputCSV extends React.PureComponent { }; render() { + const { width, height } = this.props; const { data } = this.state; - return ( - - {({ height, width }) => ( -
-