diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/package.json b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/package.json index 2a23b3fa1867..930f25c17653 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/package.json +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/package.json @@ -43,6 +43,7 @@ "@superset-ui/connection": "^0.11.0", "@superset-ui/core": "^0.11.0", "@superset-ui/dimension": "^0.11.10", + "@superset-ui/query": "^0.11.10", "react": "^15 || ^16" } } diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/clients/ChartClient.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/clients/ChartClient.ts index 2968aa2a8c10..e703fd831eb5 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/clients/ChartClient.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/clients/ChartClient.ts @@ -6,19 +6,18 @@ import { Json, SupersetClientClass, } from '@superset-ui/connection'; +import { QueryFormData, Datasource } from '@superset-ui/query'; import getChartBuildQueryRegistry from '../registries/ChartBuildQueryRegistrySingleton'; import getChartMetadataRegistry from '../registries/ChartMetadataRegistrySingleton'; -import { AnnotationLayerMetadata } from '../types/Annotation'; -import { ChartFormData } from '../types/ChartFormData'; import { QueryData } from '../models/ChartProps'; -import { Datasource } from '../types/Datasource'; +import { AnnotationLayerMetadata } from '../types/Annotation'; // This expands to Partial & (union of all possible single-property types) type AtLeastOne }> = Partial & Each[keyof Each]; export type SliceIdAndOrFormData = AtLeastOne<{ sliceId: number; - formData: Partial; + formData: Partial; }>; interface AnnotationData { @@ -28,7 +27,7 @@ interface AnnotationData { export interface ChartData { annotationData: AnnotationData; datasource: object; - formData: ChartFormData; + formData: QueryFormData; queryData: QueryData; } @@ -47,7 +46,7 @@ export default class ChartClient { loadFormData( input: SliceIdAndOrFormData, options?: Partial, - ): Promise { + ): Promise { /* If sliceId is provided, use it to fetch stored formData from API */ if ('sliceId' in input) { const promise = this.client @@ -62,7 +61,7 @@ export default class ChartClient { * If formData is also specified, override API result * with user-specified formData */ - return promise.then((dbFormData: ChartFormData) => ({ + return promise.then((dbFormData: QueryFormData) => ({ ...dbFormData, ...input.formData, })); @@ -70,11 +69,11 @@ export default class ChartClient { /* If sliceId is not provided, returned formData wrapped in a Promise */ return input.formData - ? Promise.resolve(input.formData as ChartFormData) + ? Promise.resolve(input.formData as QueryFormData) : Promise.reject(new Error('At least one of sliceId or formData must be specified')); } - async loadQueryData(formData: ChartFormData, options?: Partial): Promise { + async loadQueryData(formData: QueryFormData, options?: Partial): Promise { const { viz_type: visType } = formData; const metaDataRegistry = getChartMetadataRegistry(); const buildQueryRegistry = getChartBuildQueryRegistry(); @@ -132,17 +131,23 @@ export default class ChartClient { } loadChartData(input: SliceIdAndOrFormData): Promise { - return this.loadFormData(input).then(formData => - Promise.all([ - this.loadAnnotations(formData.annotation_layers), - this.loadDatasource(formData.datasource), - this.loadQueryData(formData), - ]).then(([annotationData, datasource, queryData]) => ({ - annotationData, - datasource, - formData, - queryData, - })), + return this.loadFormData(input).then( + ( + formData: QueryFormData & { + // eslint-disable-next-line camelcase + annotation_layers?: AnnotationLayerMetadata[]; + }, + ) => + Promise.all([ + this.loadAnnotations(formData.annotation_layers), + this.loadDatasource(formData.datasource), + this.loadQueryData(formData), + ]).then(([annotationData, datasource, queryData]) => ({ + annotationData, + datasource, + formData, + queryData, + })), ); } } diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/components/ChartDataProvider.tsx b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/components/ChartDataProvider.tsx index 9831de750604..d73a68831003 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/components/ChartDataProvider.tsx +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/components/ChartDataProvider.tsx @@ -1,14 +1,12 @@ /* eslint react/sort-comp: 'off' */ import React, { ReactNode } from 'react'; import { SupersetClientInterface, RequestConfig } from '@superset-ui/connection'; - +import { QueryFormData, Datasource } from '@superset-ui/query'; import ChartClient, { SliceIdAndOrFormData } from '../clients/ChartClient'; -import { ChartFormData } from '../types/ChartFormData'; -import { Datasource } from '../types/Datasource'; import { QueryData } from '../models/ChartProps'; interface Payload { - formData: Partial; + formData: Partial; queryData: QueryData; datasource?: Datasource; } diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/index.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/index.ts index 0a992f95ecb9..0aeecb097d9f 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/index.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/index.ts @@ -16,14 +16,6 @@ export { default as getChartTransformPropsRegistry, } from './registries/ChartTransformPropsRegistrySingleton'; -export { default as buildQueryContext } from './query/buildQueryContext'; -export { default as DatasourceKey } from './query/DatasourceKey'; - export { default as ChartDataProvider } from './components/ChartDataProvider'; -export * from './types/Annotation'; -export * from './types/ChartFormData'; -export * from './types/Datasource'; -export * from './types/Metric'; -export * from './types/Query'; export * from './types/TransformFunction'; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/models/ChartPlugin.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/models/ChartPlugin.ts index b2e872d71f27..688639d4f2bc 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/models/ChartPlugin.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/models/ChartPlugin.ts @@ -1,11 +1,11 @@ import { FunctionComponent, ComponentType } from 'react'; import { isRequired, Plugin } from '@superset-ui/core'; +import { QueryFormData } from '@superset-ui/query'; import ChartMetadata from './ChartMetadata'; import getChartMetadataRegistry from '../registries/ChartMetadataRegistrySingleton'; import getChartBuildQueryRegistry from '../registries/ChartBuildQueryRegistrySingleton'; import getChartComponentRegistry from '../registries/ChartComponentRegistrySingleton'; import getChartTransformPropsRegistry from '../registries/ChartTransformPropsRegistrySingleton'; -import { ChartFormData } from '../types/ChartFormData'; import { BuildQueryFunction, TransformProps } from '../types/TransformFunction'; const IDENTITY = (x: any) => x; @@ -15,7 +15,7 @@ export type PromiseOrValueLoader = () => PromiseOrValue; export type ChartType = ComponentType | FunctionComponent; type ValueOrModuleWithValue = T | { default: T }; -interface ChartPluginConfig { +interface ChartPluginConfig { metadata: ChartMetadata; /** Use buildQuery for immediate value. For lazy-loading, use loadBuildQuery. */ buildQuery?: BuildQueryFunction; @@ -47,7 +47,7 @@ function sanitizeLoader( }; } -export default class ChartPlugin extends Plugin { +export default class ChartPlugin extends Plugin { metadata: ChartMetadata; loadBuildQuery?: PromiseOrValueLoader>; loadTransformProps: PromiseOrValueLoader; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/registries/ChartBuildQueryRegistrySingleton.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/registries/ChartBuildQueryRegistrySingleton.ts index a1927e3ceb7a..791df16b583b 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/registries/ChartBuildQueryRegistrySingleton.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/registries/ChartBuildQueryRegistrySingleton.ts @@ -1,7 +1,7 @@ import { Registry, makeSingleton, OverwritePolicy } from '@superset-ui/core'; -import { QueryContext } from '../types/Query'; +import { QueryContext } from '@superset-ui/query'; -// Ideally this would be +// Ideally this would be type BuildQuery = (formData: any) => QueryContext; class ChartBuildQueryRegistry extends Registry { diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/TransformFunction.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/TransformFunction.ts index 207145c599d3..933b7eae8ece 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/TransformFunction.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/TransformFunction.ts @@ -1,6 +1,5 @@ -import { ChartFormData } from './ChartFormData'; +import { QueryFormData, QueryContext } from '@superset-ui/query'; import ChartProps from '../models/ChartProps'; -import { QueryContext } from './Query'; export interface PlainProps { [key: string]: any; @@ -12,4 +11,4 @@ export type PreTransformProps = TransformFunction; export type TransformProps = TransformFunction; export type PostTransformProps = TransformFunction; -export type BuildQueryFunction = (formData: T) => QueryContext; +export type BuildQueryFunction = (formData: T) => QueryContext; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/clients/ChartClient.test.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/clients/ChartClient.test.ts index 56c223f6d465..d73c6fec1853 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/clients/ChartClient.test.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/clients/ChartClient.test.ts @@ -1,15 +1,12 @@ import fetchMock from 'fetch-mock'; import { SupersetClientClass, SupersetClient } from '@superset-ui/connection'; - +import { buildQueryContext, QueryFormData } from '@superset-ui/query'; import { ChartClient, getChartBuildQueryRegistry, - buildQueryContext, - ChartFormData, getChartMetadataRegistry, ChartMetadata, } from '../../src'; - import { SliceIdAndOrFormData } from '../../src/clients/ChartClient'; import { LOGIN_GLOB } from '../../../superset-ui-connection/test/fixtures/constants'; @@ -103,7 +100,7 @@ describe('ChartClient', () => { new ChartMetadata({ name: 'Word Cloud', thumbnail: '' }), ); - getChartBuildQueryRegistry().registerValue('word_cloud', (formData: ChartFormData) => + getChartBuildQueryRegistry().registerValue('word_cloud', (formData: QueryFormData) => buildQueryContext(formData), ); fetchMock.post('glob:*/api/v1/query/', { @@ -247,7 +244,7 @@ describe('ChartClient', () => { new ChartMetadata({ name: 'Line', thumbnail: '.gif' }), ); - getChartBuildQueryRegistry().registerValue('line', (formData: ChartFormData) => + getChartBuildQueryRegistry().registerValue('line', (formData: QueryFormData) => buildQueryContext(formData), ); diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/components/MockChartPlugins.tsx b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/components/MockChartPlugins.tsx index 8540cdd2a9dc..68c7819807dc 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/components/MockChartPlugins.tsx +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/components/MockChartPlugins.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { ChartMetadata, ChartPlugin, ChartFormData } from '../../src'; +import { ChartMetadata, ChartPlugin, QueryFormData } from '../../src'; const DIMENSION_STYLE = { fontSize: 36, @@ -52,7 +52,7 @@ export const ChartKeys = { BUGGY: 'buggy-chart', }; -export class DiligentChartPlugin extends ChartPlugin { +export class DiligentChartPlugin extends ChartPlugin { constructor() { super({ metadata: new ChartMetadata({ @@ -65,7 +65,7 @@ export class DiligentChartPlugin extends ChartPlugin { } } -export class LazyChartPlugin extends ChartPlugin { +export class LazyChartPlugin extends ChartPlugin { constructor() { super({ metadata: new ChartMetadata({ @@ -80,7 +80,7 @@ export class LazyChartPlugin extends ChartPlugin { } } -export class SlowChartPlugin extends ChartPlugin { +export class SlowChartPlugin extends ChartPlugin { constructor() { super({ metadata: new ChartMetadata({ @@ -98,7 +98,7 @@ export class SlowChartPlugin extends ChartPlugin { } } -export class BuggyChartPlugin extends ChartPlugin { +export class BuggyChartPlugin extends ChartPlugin { constructor() { super({ metadata: new ChartMetadata({ diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/models/ChartPlugin.test.tsx b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/models/ChartPlugin.test.tsx index f7d39ed8a2fe..863c1f3789a8 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/models/ChartPlugin.test.tsx +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/models/ChartPlugin.test.tsx @@ -1,10 +1,8 @@ import React from 'react'; - +import { QueryFormData, DatasourceType } from '@superset-ui/query'; import { ChartPlugin, ChartMetadata, - ChartFormData, - DatasourceType, ChartProps, BuildQueryFunction, TransformProps, @@ -61,7 +59,7 @@ describe('ChartPlugin', () => { loadBuildQuery: () => buildQuery, }); if (typeof plugin.loadBuildQuery === 'function') { - const fn = plugin.loadBuildQuery() as BuildQueryFunction; + const fn = plugin.loadBuildQuery() as BuildQueryFunction; expect(fn(FORM_DATA).queries[0]).toEqual({ granularity: 'day' }); } }); @@ -73,7 +71,7 @@ describe('ChartPlugin', () => { buildQuery, }); if (typeof plugin.loadBuildQuery === 'function') { - const fn = plugin.loadBuildQuery() as BuildQueryFunction; + const fn = plugin.loadBuildQuery() as BuildQueryFunction; expect(fn(FORM_DATA).queries[0]).toEqual({ granularity: 'day' }); } }); diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/README.md b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/README.md new file mode 100644 index 000000000000..c3cf310438bd --- /dev/null +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/README.md @@ -0,0 +1,23 @@ +## @superset-ui/query + +[![Version](https://img.shields.io/npm/v/@superset-ui/query.svg?style=flat)](https://img.shields.io/npm/v/@superset-ui/query.svg?style=flat) +[![David (path)](https://img.shields.io/david/apache-superset/superset-ui.svg?path=packages%2Fsuperset-ui-query&style=flat-square)](https://david-dm.org/apache-superset/superset-ui?path=packages/superset-ui-query) + +Description + +#### Example usage + +```js +import { xxx } from '@superset-ui/query'; +``` + +#### API + +`fn(args)` + +- Do something + +### Development + +`@data-ui/build-config` is used to manage the build configuration for this package including babel +builds, jest testing, eslint, and prettier. diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/package.json b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/package.json new file mode 100644 index 000000000000..36eefdce6c72 --- /dev/null +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/package.json @@ -0,0 +1,26 @@ +{ + "name": "@superset-ui/query", + "version": "0.0.0", + "description": "Superset UI query", + "sideEffects": false, + "main": "lib/index.js", + "module": "esm/index.js", + "files": [ + "esm", + "lib" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/apache-superset/superset-ui.git" + }, + "keywords": ["superset"], + "author": "Superset", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/apache-superset/superset-ui/issues" + }, + "homepage": "https://github.com/apache-superset/superset-ui#readme", + "publishConfig": { + "access": "public" + } +} diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/DatasourceKey.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/DatasourceKey.ts similarity index 89% rename from superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/DatasourceKey.ts rename to superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/DatasourceKey.ts index db69f57a561e..807345911884 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/DatasourceKey.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/DatasourceKey.ts @@ -1,4 +1,4 @@ -import { DatasourceType } from '../types/Datasource'; +import { DatasourceType } from './types/Datasource'; export default class DatasourceKey { readonly id: number; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/buildQueryContext.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/buildQueryContext.ts similarity index 75% rename from superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/buildQueryContext.ts rename to superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/buildQueryContext.ts index fabb1990e85b..de7b5813f4b5 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/buildQueryContext.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/buildQueryContext.ts @@ -1,12 +1,12 @@ import buildQueryObject from './buildQueryObject'; import DatasourceKey from './DatasourceKey'; -import { ChartFormData } from '../types/ChartFormData'; -import { QueryContext, QueryObject } from '../types/Query'; +import { QueryFormData } from './types/QueryFormData'; +import { QueryContext, QueryObject } from './types/Query'; const WRAP_IN_ARRAY = (baseQueryObject: QueryObject) => [baseQueryObject]; export default function buildQueryContext( - formData: ChartFormData, + formData: QueryFormData, buildQuery: (baseQueryObject: QueryObject) => QueryObject[] = WRAP_IN_ARRAY, ): QueryContext { return { diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/buildQueryObject.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/buildQueryObject.ts similarity index 71% rename from superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/buildQueryObject.ts rename to superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/buildQueryObject.ts index dadd72d992f1..71cbd0a32a8b 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/buildQueryObject.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/buildQueryObject.ts @@ -1,6 +1,6 @@ /* eslint-disable camelcase */ -import { QueryObject } from '../types/Query'; -import { ChartFormData, isSqlaFormData } from '../types/ChartFormData'; +import { QueryObject } from './types/Query'; +import { QueryFormData, isSqlaFormData } from './types/QueryFormData'; import convertMetric from './convertMetric'; import processFilters from './processFilters'; import processMetrics from './processMetrics'; @@ -8,16 +8,18 @@ import processExtras from './processExtras'; export const DTTM_ALIAS = '__timestamp'; -function processGranularity(formData: ChartFormData): string { +function processGranularity(formData: QueryFormData): string { return isSqlaFormData(formData) ? formData.granularity_sqla : formData.granularity; } -// Build the common segments of all query objects (e.g. the granularity field derived from -// either sql alchemy or druid). The segments specific to each viz type is constructed in the -// buildQuery method for each viz type (see `wordcloud/buildQuery.ts` for an example). -// Note the type of the formData argument passed in here is the type of the formData for a -// specific viz, which is a subtype of the generic formData shared among all viz types. -export default function buildQueryObject(formData: T): QueryObject { +/** + * Build the common segments of all query objects (e.g. the granularity field derived from + * either sql alchemy or druid). The segments specific to each viz type is constructed in the + * buildQuery method for each viz type (see `wordcloud/buildQuery.ts` for an example). + * Note the type of the formData argument passed in here is the type of the formData for a + * specific viz, which is a subtype of the generic formData shared among all viz types. + */ +export default function buildQueryObject(formData: T): QueryObject { const { time_range, since, diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/convertFilter.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/convertFilter.ts similarity index 87% rename from superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/convertFilter.ts rename to superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/convertFilter.ts index 713ed9374d9e..367b50d9bc95 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/convertFilter.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/convertFilter.ts @@ -1,5 +1,5 @@ -import { SimpleAdhocFilter, isBinaryAdhocFilter, isUnaryAdhocFilter } from '../types/Filter'; -import { QueryObjectFilterClause } from '../types/Query'; +import { SimpleAdhocFilter, isBinaryAdhocFilter, isUnaryAdhocFilter } from './types/Filter'; +import { QueryObjectFilterClause } from './types/Query'; export default function convertFilter(filter: SimpleAdhocFilter): QueryObjectFilterClause { const { subject } = filter; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/convertMetric.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/convertMetric.ts similarity index 79% rename from superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/convertMetric.ts rename to superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/convertMetric.ts index d6b3930e6b3c..4b0492027f67 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/convertMetric.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/convertMetric.ts @@ -1,6 +1,6 @@ -import { ChartFormDataMetric } from '../types/ChartFormData'; -import { QueryObjectMetric } from '../types/Query'; -import { AdhocMetric } from '../types/Metric'; +import { QueryFormDataMetric } from './types/QueryFormData'; +import { QueryObjectMetric } from './types/Query'; +import { AdhocMetric } from './types/Metric'; export const LABEL_MAX_LENGTH = 43; @@ -17,7 +17,7 @@ function getDefaultLabel(metric: AdhocMetric) { : `${label.substring(0, LABEL_MAX_LENGTH - 3)}...`; } -export default function convertMetric(metric: ChartFormDataMetric): QueryObjectMetric { +export default function convertMetric(metric: QueryFormDataMetric): QueryObjectMetric { let formattedMetric; if (typeof metric === 'string') { formattedMetric = { diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/index.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/index.ts new file mode 100644 index 000000000000..9357f1dc1dde --- /dev/null +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/index.ts @@ -0,0 +1,11 @@ +export { default as buildQueryContext } from './buildQueryContext'; +export { default as buildQueryObject } from './buildQueryObject'; +export { default as convertFilter } from './convertFilter'; +export { default as convertMetric } from './convertMetric'; +export { default as DatasourceKey } from './DatasourceKey'; + +export * from './types/QueryFormData'; +export * from './types/Column'; +export * from './types/Datasource'; +export * from './types/Metric'; +export * from './types/Query'; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/processExtras.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/processExtras.ts similarity index 64% rename from superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/processExtras.ts rename to superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/processExtras.ts index 4c3a4724f2bf..4f1c62ce6bde 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/processExtras.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/processExtras.ts @@ -1,8 +1,8 @@ /* eslint-disable camelcase */ -import { ChartFormData, isDruidFormData } from '../types/ChartFormData'; -import { QueryObjectExtras } from '../types/Query'; +import { QueryFormData, isDruidFormData } from './types/QueryFormData'; +import { QueryObjectExtras } from './types/Query'; -export default function processExtras(formData: ChartFormData): QueryObjectExtras { +export default function processExtras(formData: QueryFormData): QueryObjectExtras { const { where = '' } = formData; if (isDruidFormData(formData)) { diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/processFilters.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/processFilters.ts similarity index 86% rename from superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/processFilters.ts rename to superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/processFilters.ts index 0b7954a3ade3..8d9851e3d9e8 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/processFilters.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/processFilters.ts @@ -1,10 +1,10 @@ -import { ChartFormData } from '../types/ChartFormData'; -import { QueryObjectFilterClause } from '../types/Query'; -import { isSimpleAdhocFilter } from '../types/Filter'; +import { QueryFormData } from './types/QueryFormData'; +import { QueryObjectFilterClause } from './types/Query'; +import { isSimpleAdhocFilter } from './types/Filter'; import convertFilter from './convertFilter'; /** Logic formerly in viz.py's process_query_filters */ -export default function processFilters(formData: ChartFormData) { +export default function processFilters(formData: QueryFormData) { // TODO: Implement // utils.convert_legacy_filters_into_adhoc(self.form_data) diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/processMetrics.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/processMetrics.ts similarity index 70% rename from superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/processMetrics.ts rename to superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/processMetrics.ts index 7276088c03c4..aa07ee468751 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/processMetrics.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/processMetrics.ts @@ -1,9 +1,9 @@ -import { ChartFormData } from '../types/ChartFormData'; -import { QueryObjectMetric } from '../types/Query'; -import { MetricKey } from '../types/Metric'; +import { QueryFormData } from './types/QueryFormData'; +import { QueryObjectMetric } from './types/Query'; +import { MetricKey } from './types/Metric'; import convertMetric from './convertMetric'; -export default function processMetrics(formData: ChartFormData) { +export default function processMetrics(formData: QueryFormData) { // Use Array to maintain insertion order // for metrics that are order sensitive const metrics: QueryObjectMetric[] = []; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/Column.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/types/Column.ts similarity index 100% rename from superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/Column.ts rename to superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/types/Column.ts diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/Datasource.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/types/Datasource.ts similarity index 100% rename from superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/Datasource.ts rename to superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/types/Datasource.ts diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/Filter.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/types/Filter.ts similarity index 100% rename from superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/Filter.ts rename to superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/types/Filter.ts diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/Metric.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/types/Metric.ts similarity index 100% rename from superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/Metric.ts rename to superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/types/Metric.ts diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/Operator.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/types/Operator.ts similarity index 100% rename from superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/Operator.ts rename to superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/types/Operator.ts diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/Query.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/types/Query.ts similarity index 100% rename from superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/Query.ts rename to superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/types/Query.ts diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/ChartFormData.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/types/QueryFormData.ts similarity index 79% rename from superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/ChartFormData.ts rename to superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/types/QueryFormData.ts index 5b6f71c3b829..1a97cf99abad 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/ChartFormData.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/types/QueryFormData.ts @@ -2,18 +2,17 @@ /* eslint-disable import/prefer-default-export */ // FormData uses snake_cased keys. import { MetricKey, AdhocMetric } from './Metric'; -import { AnnotationLayerMetadata } from './Annotation'; import { TimeRange } from './Time'; import { AdhocFilter } from './Filter'; -export type ChartFormDataMetric = string | AdhocMetric; +export type QueryFormDataMetric = string | AdhocMetric; // Define mapped type separately to work around a limitation of TypeScript // https://github.com/Microsoft/TypeScript/issues/13573 // The Metrics in formData is either a string or a proper metric. It will be // unified into a proper Metric type during buildQuery (see `/query/Metrics.ts`). -export type ChartFormDataMetrics = Partial< - Record +export type QueryFormDataMetrics = Partial< + Record >; // Type signature for formData shared by all viz types @@ -46,11 +45,9 @@ export type BaseFormData = { /** limit number of row in the results */ row_limit?: number; /** The metric used to order timeseries for limiting */ - timeseries_limit_metric?: ChartFormDataMetric; - - annotation_layers?: AnnotationLayerMetadata[]; + timeseries_limit_metric?: QueryFormDataMetric; } & TimeRange & - ChartFormDataMetrics; + QueryFormDataMetrics; // FormData is either sqla-based or druid-based export type SqlaFormData = { @@ -65,16 +62,16 @@ export type DruidFormData = { druid_time_origin?: string; } & BaseFormData; -export type ChartFormData = SqlaFormData | DruidFormData; +export type QueryFormData = SqlaFormData | DruidFormData; //--------------------------------------------------- // Type guards //--------------------------------------------------- -export function isDruidFormData(formData: ChartFormData): formData is DruidFormData { +export function isDruidFormData(formData: QueryFormData): formData is DruidFormData { return 'granularity' in formData; } -export function isSqlaFormData(formData: ChartFormData): formData is SqlaFormData { +export function isSqlaFormData(formData: QueryFormData): formData is SqlaFormData { return 'granularity_sqla' in formData; } diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/Time.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/types/Time.ts similarity index 100% rename from superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/Time.ts rename to superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/src/types/Time.ts diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/DatasourceKey.test.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/test/DatasourceKey.test.ts similarity index 93% rename from superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/DatasourceKey.test.ts rename to superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/test/DatasourceKey.test.ts index 1bb1d015e632..fea3a34b8cec 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/DatasourceKey.test.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/test/DatasourceKey.test.ts @@ -1,4 +1,4 @@ -import { DatasourceKey } from '../../src'; +import { DatasourceKey } from '../src'; describe('DatasourceKey', () => { const tableKey = '5__table'; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/buildQueryContext.test.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/test/buildQueryContext.test.ts similarity index 93% rename from superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/buildQueryContext.test.ts rename to superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/test/buildQueryContext.test.ts index e4b62f66dd58..b51f0a182382 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/buildQueryContext.test.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/test/buildQueryContext.test.ts @@ -1,4 +1,4 @@ -import { buildQueryContext } from '../../src'; +import { buildQueryContext } from '../src'; describe('queryContextBuilder', () => { it('should build datasource for table sources', () => { diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/buildQueryObject.test.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/test/buildQueryObject.test.ts similarity index 93% rename from superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/buildQueryObject.test.ts rename to superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/test/buildQueryObject.test.ts index edf9dd4c3de3..76be285b02e2 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/buildQueryObject.test.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/test/buildQueryObject.test.ts @@ -1,5 +1,4 @@ -import buildQueryObject from '../../src/query/buildQueryObject'; -import { QueryObject } from '../../src'; +import { buildQueryObject, QueryObject } from '../src'; describe('queryObjectBuilder', () => { let query: QueryObject; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/convertFilter.test.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/test/convertFilter.test.ts similarity index 94% rename from superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/convertFilter.test.ts rename to superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/test/convertFilter.test.ts index 32f3e3a38dc7..cd591b86986a 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/convertFilter.test.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/test/convertFilter.test.ts @@ -1,4 +1,4 @@ -import convertFilter from '../../src/query/convertFilter'; +import { convertFilter } from '../src'; describe('convertFilter', () => { it('should handle unary filter', () => { diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/convertMetric.test.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/test/convertMetric.test.ts similarity index 92% rename from superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/convertMetric.test.ts rename to superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/test/convertMetric.test.ts index 6162ed7a9d82..ae2cbe5573ed 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/convertMetric.test.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/test/convertMetric.test.ts @@ -1,5 +1,5 @@ -import { ColumnType } from '../../src/types/Column'; -import convertMetric, { LABEL_MAX_LENGTH } from '../../src/query/convertMetric'; +import { ColumnType, convertMetric } from '../src'; +import { LABEL_MAX_LENGTH } from '../src/convertMetric'; describe('convertMetric', () => { it('should handle string metric name', () => { diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/processFilters.test.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/test/processFilters.test.ts similarity index 97% rename from superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/processFilters.test.ts rename to superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/test/processFilters.test.ts index faf94c2f7c3a..4fccd1ae2c92 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/processFilters.test.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/test/processFilters.test.ts @@ -1,4 +1,4 @@ -import processFilters from '../../src/query/processFilters'; +import processFilters from '../src/processFilters'; describe('processFilters', () => { it('should handle non-array adhoc_filters', () => { diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/processMetrics.test.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/test/processMetrics.test.ts similarity index 92% rename from superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/processMetrics.test.ts rename to superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/test/processMetrics.test.ts index 04a751f2682a..7536d815833d 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/processMetrics.test.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/test/processMetrics.test.ts @@ -1,5 +1,5 @@ -import { ColumnType } from '../../src/types/Column'; -import processMetrics from '../../src/query/processMetrics'; +import { ColumnType } from '../src'; +import processMetrics from '../src/processMetrics'; describe('processMetrics', () => { const formData = { diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/types/Filter.test.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/test/types/Filter.test.ts similarity index 100% rename from superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/types/Filter.test.ts rename to superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-query/test/types/Filter.test.ts