| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382 |
- /**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
- import {
- ChartDataResponseResult,
- ChartProps,
- DatasourceType,
- QueryMode,
- supersetTheme,
- ComparisonType,
- VizType,
- } from '@superset-ui/core';
- import { GenericDataType } from '@apache-superset/core/api/core';
- import { TableChartProps, TableChartFormData } from '../src/types';
- const basicFormData: TableChartFormData = {
- datasource: '1__abc',
- viz_type: VizType.Table,
- align_pn: false,
- color_pn: false,
- show_cell_bars: true,
- include_search: false,
- order_desc: true,
- page_length: 20,
- metrics: [],
- percent_metrics: null,
- timeseries_limit_metric: '',
- table_filter: false,
- table_timestamp_format: '%Y-%m-%d %H:%M:%S',
- };
- const basicChartProps = {
- width: 200,
- height: 500,
- datasource: {
- id: 0,
- name: '',
- type: DatasourceType.Table,
- columns: [],
- metrics: [],
- columnFormats: {},
- verboseMap: {},
- },
- hooks: {},
- initialValues: {},
- queriesData: [
- {
- data: {
- columns: [],
- records: [],
- },
- },
- ],
- formData: basicFormData,
- theme: supersetTheme,
- };
- const basicQueryResult: ChartDataResponseResult = {
- annotation_data: null,
- cache_key: null,
- cached_dttm: null,
- cache_timeout: null,
- data: [],
- colnames: [],
- coltypes: [],
- error: null,
- is_cached: false,
- query: 'SELECT ...',
- rowcount: 100,
- sql_rowcount: 100,
- stacktrace: null,
- status: 'success',
- from_dttm: null,
- to_dttm: null,
- };
- /**
- * Basic data input
- */
- const basic: TableChartProps = {
- ...new ChartProps(basicChartProps),
- queriesData: [
- {
- ...basicQueryResult,
- colnames: ['__timestamp', 'name', 'sum__num', 'abc.com'],
- coltypes: [
- GenericDataType.Temporal,
- GenericDataType.String,
- GenericDataType.Numeric,
- GenericDataType.String,
- ],
- data: [
- {
- __timestamp: '2020-01-01T12:34:56',
- name: 'Michael',
- sum__num: 2467063,
- '%pct_nice': 0.123456,
- 'abc.com': 'foo',
- },
- {
- __timestamp: 1585932584140,
- name: 'Joe',
- sum__num: 2467,
- '%pct_nice': 0.00001,
- 'abc.com': 'bar',
- },
- {
- __timestamp: null,
- name: 'Maria',
- sum__num: 12342,
- '%pct_nice': 0.341,
- 'abc.com': 'baz',
- },
- ],
- },
- ],
- };
- /**
- * Advanced data input with
- * - verbose map
- * - metric columns
- */
- const advanced: TableChartProps = {
- ...basic,
- datasource: {
- ...basic.datasource,
- verboseMap: {
- sum__num: 'Sum of Num',
- },
- },
- rawFormData: {
- ...basicFormData,
- metrics: ['sum__num'],
- percent_metrics: ['pct_nice'],
- column_config: {
- name: {
- d3NumberFormat: '.3s',
- },
- sum__num: {
- d3NumberFormat: '.3s',
- },
- pct_nice: {
- d3NumberFormat: '.3s',
- },
- 'abc.com': {
- d3NumberFormat: '.3s',
- },
- },
- },
- queriesData: [
- {
- ...basicQueryResult,
- colnames: ['name', 'sum__num', '%pct_nice'],
- coltypes: [
- GenericDataType.String,
- GenericDataType.Numeric,
- GenericDataType.Numeric,
- ],
- data: [...(basic.queriesData[0].data || [])],
- },
- ],
- };
- const comparison: TableChartProps = {
- ...basic,
- rawFormData: {
- ...basicFormData,
- table_timestamp_format: 'smart_date',
- metrics: ['metric_1', 'metric_2'],
- percent_metrics: ['percent_metric_1'],
- column_config: {},
- align_pn: true,
- color_pn: true,
- show_cell_bars: true,
- include_search: true,
- page_length: 10,
- server_pagination: false,
- order_desc: false,
- query_mode: QueryMode.Aggregate,
- show_totals: true,
- conditional_formatting: [],
- allow_rearrange_columns: true,
- allow_render_html: false,
- time_compare: ['P1D'],
- comparison_color_enabled: true,
- comparison_color_scheme: 'Green',
- comparison_type: ComparisonType.Values,
- },
- queriesData: [
- {
- ...basicQueryResult,
- data: [
- {
- metric_1: 100,
- metric_2: 200,
- percent_metric_1: 0.5,
- date: '2023-01-01',
- },
- {
- metric_1: 110,
- metric_2: 210,
- percent_metric_1: 0.55,
- date: '2023-01-02',
- },
- ],
- colnames: ['metric_1', 'metric_2', 'percent_metric_1', 'date'],
- coltypes: [
- GenericDataType.Numeric,
- GenericDataType.Numeric,
- GenericDataType.Numeric,
- GenericDataType.Temporal,
- ],
- },
- {
- ...basicQueryResult,
- data: [
- {
- metric_1: 10,
- metric_2: 20,
- percent_metric_1: 0.05,
- date: '2023-01-01',
- },
- {
- metric_1: 11,
- metric_2: 21,
- percent_metric_1: 0.055,
- date: '2023-01-02',
- },
- ],
- },
- ],
- filterState: { filters: {} },
- ownState: {},
- hooks: {
- onAddFilter: jest.fn(),
- setDataMask: jest.fn(),
- onContextMenu: jest.fn(),
- },
- emitCrossFilters: true,
- };
- const comparisonWithConfig: TableChartProps = {
- ...comparison,
- height: 400,
- width: 400,
- rawFormData: {
- ...comparison.rawFormData,
- table_timestamp_format: 'smart_date',
- metrics: ['metric_1'],
- percent_metrics: ['percent_metric_1'],
- column_config: {
- 'Main metric_1': { d3NumberFormat: '.2f' },
- '# metric_1': { d3NumberFormat: '.1f' },
- '△ metric_1': { d3NumberFormat: '.0f' },
- '% metric_1': { d3NumberFormat: '.3f' },
- },
- time_compare: ['1 year ago'],
- comparison_color_enabled: true,
- comparison_type: ComparisonType.Values,
- },
- datasource: {
- ...comparison.datasource,
- columnFormats: { metric_1: '.2f' },
- currencyFormats: {},
- verboseMap: { metric_1: 'Metric 1' },
- },
- queriesData: [
- {
- ...basicQueryResult,
- data: [{ metric_1: 100, 'metric_1__1 year ago': 80 }],
- colnames: ['metric_1', 'metric_1__1 year ago'],
- coltypes: [GenericDataType.Numeric, GenericDataType.Numeric],
- },
- {
- ...basicQueryResult,
- data: [{ rowcount: 1 }],
- },
- ],
- filterState: { filters: {} },
- ownState: {},
- hooks: {
- onAddFilter: jest.fn(),
- setDataMask: jest.fn(),
- onContextMenu: jest.fn(),
- },
- emitCrossFilters: false,
- };
- const raw = {
- ...advanced,
- rawFormData: {
- ...advanced.rawFormData,
- query_mode: QueryMode.Raw,
- columns: ['num'],
- },
- queriesData: [
- {
- ...basicQueryResult,
- colnames: ['num'],
- coltypes: [GenericDataType.Numeric],
- data: [
- {
- num: 1234,
- },
- {
- num: 10000,
- },
- {
- num: 0,
- },
- ],
- },
- ],
- };
- const advancedWithCurrency = {
- ...advanced,
- datasource: {
- ...advanced.datasource,
- currencyFormats: {
- sum__num: { symbol: 'USD', symbolPosition: 'prefix' },
- },
- },
- };
- const empty = {
- ...advanced,
- queriesData: [
- {
- ...advanced.queriesData[0],
- data: [],
- },
- ],
- };
- const bigint = {
- ...advanced,
- queriesData: [
- {
- ...basicQueryResult,
- colnames: ['name', 'id'],
- coltypes: [GenericDataType.String, GenericDataType.Numeric],
- data: [
- {
- name: 'Michael',
- id: 4312,
- },
- {
- name: 'John',
- id: 1234567890123456789n,
- },
- ],
- },
- ],
- };
- export default {
- basic,
- advanced,
- advancedWithCurrency,
- comparison,
- comparisonWithConfig,
- empty,
- raw,
- bigint,
- };
|