diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/query/extractExtras.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/query/extractExtras.ts index f868977b867f..f4eaa6a37807 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/query/extractExtras.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/query/extractExtras.ts @@ -1,14 +1,18 @@ /* eslint-disable camelcase */ import { isDruidFormData, QueryFormData } from './types/QueryFormData'; import { QueryObject } from './types/Query'; +import { AppliedTimeExtras, TimeColumnConfigKey } from './types/Time'; export default function extractExtras(formData: QueryFormData): Partial { + const applied_time_extras: AppliedTimeExtras = {}; + const { extras = {}, filters = [] } = formData; const partialQueryObject: Partial = { - filters: formData.filters || [], - extras: formData.extras || {}, + filters, + extras, + applied_time_extras, }; - const reservedColumnsToQueryField: Record = { + const reservedColumnsToQueryField: Record = { __time_range: 'time_range', __time_col: 'granularity_sqla', __time_grain: 'time_grain_sqla', @@ -18,26 +22,22 @@ export default function extractExtras(formData: QueryFormData): Partial { if (filter.col in reservedColumnsToQueryField) { - const queryField = reservedColumnsToQueryField[filter.col]; + const key = filter.col as TimeColumnConfigKey; + const queryField = reservedColumnsToQueryField[key]; partialQueryObject[queryField] = filter.val; + applied_time_extras[key] = filter.val as string; } else { - // @ts-ignore - partialQueryObject.filters.push(filter); + filters.push(filter); } }); // map to undeprecated names and remove deprecated fields if (isDruidFormData(formData) && !partialQueryObject.druid_time_origin) { - partialQueryObject.extras = { - druid_time_origin: formData.druid_time_origin, - }; + extras.druid_time_origin = formData.druid_time_origin; delete partialQueryObject.druid_time_origin; } else { // SQL - partialQueryObject.extras = { - ...partialQueryObject.extras, - time_grain_sqla: partialQueryObject.time_grain_sqla || formData.time_grain_sqla, - }; + extras.time_grain_sqla = partialQueryObject.time_grain_sqla || formData.time_grain_sqla; partialQueryObject.granularity = partialQueryObject.granularity_sqla || formData.granularity || formData.granularity_sqla; delete partialQueryObject.granularity_sqla; @@ -45,8 +45,7 @@ export default function extractExtras(formData: QueryFormData): Partial>; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/test/query/extractExtras.test.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/test/query/extractExtras.test.ts index 60adbb7bf4e7..f9097d0bbbb6 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/test/query/extractExtras.test.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/test/query/extractExtras.test.ts @@ -39,6 +39,11 @@ describe('extractExtras', () => { ], }), ).toEqual({ + applied_time_extras: { + __time_col: 'ds2', + __time_grain: 'PT5M', + __time_range: '2009-07-17T00:00:00 : 2020-07-17T00:00:00', + }, extras: { time_grain_sqla: 'PT5M', time_range_endpoints: ['inclusive', 'exclusive'], @@ -68,6 +73,7 @@ describe('extractExtras', () => { ], }), ).toEqual({ + applied_time_extras: {}, extras: { time_grain_sqla: 'PT1M', },