feat!: pass datasource_type and datasource_id to form_data (#19981)

* pass datasource_type and datasource_id to form_data

* add datasource_type to delete command

* add datasource_type to delete command

* fix old keys implementation

* add more tests
This commit is contained in:
Elizabeth Thompson
2022-06-02 16:48:16 -07:00
committed by GitHub
parent a813528958
commit 32bb1ce3ff
47 changed files with 959 additions and 176 deletions

View File

@@ -92,7 +92,7 @@ test('generates a new form_data param when none is available', async () => {
expect(replaceState).toHaveBeenCalledWith(
expect.anything(),
undefined,
expect.stringMatching('dataset_id'),
expect.stringMatching('datasource_id'),
);
replaceState.mockRestore();
});
@@ -109,7 +109,7 @@ test('generates a different form_data param when one is provided and is mounting
expect(replaceState).toHaveBeenCalledWith(
expect.anything(),
undefined,
expect.stringMatching('dataset_id'),
expect.stringMatching('datasource_id'),
);
replaceState.mockRestore();
});

View File

@@ -152,14 +152,24 @@ const ExplorePanelContainer = styled.div`
`;
const updateHistory = debounce(
async (formData, datasetId, isReplace, standalone, force, title, tabId) => {
async (
formData,
datasourceId,
datasourceType,
isReplace,
standalone,
force,
title,
tabId,
) => {
const payload = { ...formData };
const chartId = formData.slice_id;
const additionalParam = {};
if (chartId) {
additionalParam[URL_PARAMS.sliceId.name] = chartId;
} else {
additionalParam[URL_PARAMS.datasetId.name] = datasetId;
additionalParam[URL_PARAMS.datasourceId.name] = datasourceId;
additionalParam[URL_PARAMS.datasourceType.name] = datasourceType;
}
const urlParams = payload?.url_params || {};
@@ -173,11 +183,24 @@ const updateHistory = debounce(
let key;
let stateModifier;
if (isReplace) {
key = await postFormData(datasetId, formData, chartId, tabId);
key = await postFormData(
datasourceId,
datasourceType,
formData,
chartId,
tabId,
);
stateModifier = 'replaceState';
} else {
key = getUrlParam(URL_PARAMS.formDataKey);
await putFormData(datasetId, key, formData, chartId, tabId);
await putFormData(
datasourceId,
datasourceType,
key,
formData,
chartId,
tabId,
);
stateModifier = 'pushState';
}
const url = mountExploreUrl(
@@ -229,11 +252,12 @@ function ExploreViewContainer(props) {
dashboardId: props.dashboardId,
}
: props.form_data;
const datasetId = props.datasource.id;
const { id: datasourceId, type: datasourceType } = props.datasource;
updateHistory(
formData,
datasetId,
datasourceId,
datasourceType,
isReplace,
props.standalone,
props.force,
@@ -245,6 +269,7 @@ function ExploreViewContainer(props) {
props.dashboardId,
props.form_data,
props.datasource.id,
props.datasource.type,
props.standalone,
props.force,
tabId,