diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart-controls/src/sections.tsx b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart-controls/src/sections.tsx index b675d78bf7c8..f423df0faa2e 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart-controls/src/sections.tsx +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart-controls/src/sections.tsx @@ -75,7 +75,18 @@ export const datasourceAndVizType: ControlPanelSectionConfig = { type: 'HiddenControl', label: t('URL Parameters'), hidden: true, - description: t('Extra parameters for use in jinja templated queries'), + description: t('Extra url parameters for use in Jinja templated queries'), + }, + }, + { + name: 'custom_params', + config: { + type: 'HiddenControl', + label: t('Extra Parameters'), + hidden: true, + description: t( + 'Extra parameters that any plugins can choose to set for use in Jinja templated queries', + ), }, }, { diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/query/buildQueryObject.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/query/buildQueryObject.ts index 5f297ce27425..345a38da9bd7 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/query/buildQueryObject.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/query/buildQueryObject.ts @@ -32,6 +32,7 @@ export default function buildQueryObject( timeseries_limit_metric, granularity, url_params = {}, + custom_params = {}, ...residualFormData } = formData; const { append_form_data = {}, override_form_data = {} } = extra_form_data; @@ -65,6 +66,7 @@ export default function buildQueryObject( timeseries_limit_metric: timeseries_limit_metric || undefined, order_desc: typeof order_desc === 'undefined' ? true : order_desc, url_params: url_params || undefined, + custom_params, }; // append and override extra form data used by native filters queryObject = appendExtraFormData(queryObject, append_form_data); diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/query/types/Query.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/query/types/Query.ts index 17e6d0743ee0..8310aaa866b9 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/query/types/Query.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/query/types/Query.ts @@ -116,6 +116,8 @@ export interface QueryObject extends QueryFields, TimeRange, ResidualQueryObject url_params?: Record; + custom_params?: Record; + /** Free-form WHERE SQL: multiple clauses are concatenated by AND */ where?: string; } diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/query/types/QueryFormData.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/query/types/QueryFormData.ts index a5c569a31b04..2177432b1f74 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/query/types/QueryFormData.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/query/types/QueryFormData.ts @@ -143,6 +143,7 @@ export interface BaseFormData extends TimeRange, FormDataResidual { time_range_endpoints?: TimeRangeEndpoints; annotation_layers?: AnnotationLayer[]; url_params?: Record; + custom_params?: Record; } /** diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/test/query/buildQueryObject.test.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/test/query/buildQueryObject.test.ts index 1fb6add78d2a..411391a3783d 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/test/query/buildQueryObject.test.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/test/query/buildQueryObject.test.ts @@ -218,4 +218,15 @@ describe('buildQueryObject', () => { }).url_params, ).toBeUndefined(); }); + + it('should populate custom_params', () => { + const customParams = { customObject: { id: 137, name: 'C-137' } }; + query = buildQueryObject({ + datasource: '5__table', + granularity_sqla: 'ds', + viz_type: 'table', + custom_params: customParams, + }); + expect(query.custom_params).toEqual(customParams); + }); });