Implement a React-based table editor (#5186)

* A React table editor

* addressing comments

* Fix SelectAsyncControl error on clear

* fix tests

* more corrections

* Removed <strong>
This commit is contained in:
Maxime Beauchemin
2018-08-06 15:30:13 -07:00
committed by GitHub
parent aa14bac5c7
commit 68ba63fcd9
55 changed files with 1919 additions and 356 deletions

View File

@@ -9,7 +9,7 @@ import DashboardBuilder from '../../../../src/dashboard/containers/DashboardBuil
// mock data
import chartQueries, { sliceId as chartId } from '../fixtures/mockChartQueries';
import datasources from '../fixtures/mockDatasource';
import datasources from '../../../fixtures/mockDatasource';
import dashboardInfo from '../fixtures/mockDashboardInfo';
import { dashboardLayout } from '../fixtures/mockDashboardLayout';
import dashboardState from '../fixtures/mockDashboardState';

View File

@@ -8,7 +8,7 @@ import Chart from '../../../../../src/dashboard/components/gridComponents/Chart'
import SliceHeader from '../../../../../src/dashboard/components/SliceHeader';
import ChartContainer from '../../../../../src/chart/ChartContainer';
import mockDatasource from '../../fixtures/mockDatasource';
import mockDatasource from '../../../../fixtures/mockDatasource';
import {
sliceEntitiesForChart as sliceEntities,
sliceId,

View File

@@ -1,4 +1,4 @@
import { datasourceId } from './mockDatasource';
import { datasourceId } from '../../../fixtures/mockDatasource';
export const sliceId = 18;

View File

@@ -1,206 +0,0 @@
export const id = 7;
export const datasourceId = `${id}__table`;
export default {
[datasourceId]: {
verbose_map: {
count: 'COUNT(*)',
__timestamp: 'Time',
sum__sum_girls: 'sum__sum_girls',
name: 'name',
avg__sum_girls: 'avg__sum_girls',
gender: 'gender',
sum_girls: 'sum_girls',
ds: 'ds',
sum__sum_boys: 'sum__sum_boys',
state: 'state',
num: 'num',
sum__num: 'sum__num',
sum_boys: 'sum_boys',
avg__num: 'avg__num',
avg__sum_boys: 'avg__sum_boys',
},
gb_cols: [['gender', 'gender'], ['name', 'name'], ['state', 'state']],
metrics: [
{
expression: 'SUM(birth_names.num)',
warning_text: null,
verbose_name: 'sum__num',
metric_name: 'sum__num',
description: null,
},
{
expression: 'AVG(birth_names.num)',
warning_text: null,
verbose_name: 'avg__num',
metric_name: 'avg__num',
description: null,
},
{
expression: 'SUM(birth_names.sum_boys)',
warning_text: null,
verbose_name: 'sum__sum_boys',
metric_name: 'sum__sum_boys',
description: null,
},
{
expression: 'AVG(birth_names.sum_boys)',
warning_text: null,
verbose_name: 'avg__sum_boys',
metric_name: 'avg__sum_boys',
description: null,
},
{
expression: 'SUM(birth_names.sum_girls)',
warning_text: null,
verbose_name: 'sum__sum_girls',
metric_name: 'sum__sum_girls',
description: null,
},
{
expression: 'AVG(birth_names.sum_girls)',
warning_text: null,
verbose_name: 'avg__sum_girls',
metric_name: 'avg__sum_girls',
description: null,
},
{
expression: 'COUNT(*)',
warning_text: null,
verbose_name: 'COUNT(*)',
metric_name: 'count',
description: null,
},
],
column_formats: {},
columns: [
{
type: 'DATETIME',
description: null,
filterable: false,
verbose_name: null,
is_dttm: true,
expression: '',
groupby: false,
column_name: 'ds',
},
{
type: 'VARCHAR(16)',
description: null,
filterable: true,
verbose_name: null,
is_dttm: false,
expression: '',
groupby: true,
column_name: 'gender',
},
{
type: 'VARCHAR(255)',
description: null,
filterable: true,
verbose_name: null,
is_dttm: false,
expression: '',
groupby: true,
column_name: 'name',
},
{
type: 'BIGINT',
description: null,
filterable: false,
verbose_name: null,
is_dttm: false,
expression: '',
groupby: false,
column_name: 'num',
},
{
type: 'VARCHAR(10)',
description: null,
filterable: true,
verbose_name: null,
is_dttm: false,
expression: '',
groupby: true,
column_name: 'state',
},
{
type: 'BIGINT',
description: null,
filterable: false,
verbose_name: null,
is_dttm: false,
expression: '',
groupby: false,
column_name: 'sum_boys',
},
{
type: 'BIGINT',
description: null,
filterable: false,
verbose_name: null,
is_dttm: false,
expression: '',
groupby: false,
column_name: 'sum_girls',
},
],
id,
granularity_sqla: [['ds', 'ds']],
name: 'birth_names',
database: {
allow_multi_schema_metadata_fetch: null,
name: 'main',
backend: 'sqlite',
},
time_grain_sqla: [
[null, 'Time Column'],
['PT1H', 'hour'],
['P1D', 'day'],
['P1W', 'week'],
['P1M', 'month'],
],
filterable_cols: [
['gender', 'gender'],
['name', 'name'],
['state', 'state'],
],
all_cols: [
['ds', 'ds'],
['gender', 'gender'],
['name', 'name'],
['num', 'num'],
['state', 'state'],
['sum_boys', 'sum_boys'],
['sum_girls', 'sum_girls'],
],
filter_select: true,
order_by_choices: [
['["ds", true]', 'ds [asc]'],
['["ds", false]', 'ds [desc]'],
['["gender", true]', 'gender [asc]'],
['["gender", false]', 'gender [desc]'],
['["name", true]', 'name [asc]'],
['["name", false]', 'name [desc]'],
['["num", true]', 'num [asc]'],
['["num", false]', 'num [desc]'],
['["state", true]', 'state [asc]'],
['["state", false]', 'state [desc]'],
['["sum_boys", true]', 'sum_boys [asc]'],
['["sum_boys", false]', 'sum_boys [desc]'],
['["sum_girls", true]', 'sum_girls [asc]'],
['["sum_girls", false]', 'sum_girls [desc]'],
],
metrics_combo: [
['count', 'COUNT(*)'],
['avg__num', 'avg__num'],
['avg__sum_boys', 'avg__sum_boys'],
['avg__sum_girls', 'avg__sum_girls'],
['sum__num', 'sum__num'],
['sum__sum_boys', 'sum__sum_boys'],
['sum__sum_girls', 'sum__sum_girls'],
],
type: 'table',
edit_url: '/tablemodelview/edit/7',
},
};

View File

@@ -1,5 +1,5 @@
import { sliceId as id } from './mockChartQueries';
import { datasourceId } from './mockDatasource';
import { datasourceId } from '../../../fixtures/mockDatasource';
export const sliceId = id;

View File

@@ -3,7 +3,7 @@ import { dashboardLayout } from './mockDashboardLayout';
import dashboardInfo from './mockDashboardInfo';
import dashboardState from './mockDashboardState';
import messageToasts from '../../messageToasts/mockMessageToasts';
import datasources from './mockDatasource';
import datasources from '../../../fixtures/mockDatasource';
import sliceEntities from './mockSliceEntities';
export default {