mirror of
https://github.com/apache/superset.git
synced 2026-04-26 03:24:53 +00:00
fix(embedded): CSV download for chart (#20261)
* move postForm to superset client * lint * fix lint * fix type * update tests * add tests * add test for form submit * add test for request form * lint * fix test * fix tests * more tests * more tests * test * lint * more test for postForm * lint * Update superset-frontend/packages/superset-ui-core/test/connection/SupersetClientClass.test.ts Co-authored-by: David Aaron Suddjian <1858430+suddjian@users.noreply.github.com> * update tests * remove useless test * make test cover happy * make test cover happy * make test cover happy * make codecov happy * make codecov happy Co-authored-by: David Aaron Suddjian <1858430+suddjian@users.noreply.github.com>
This commit is contained in:
@@ -21,13 +21,14 @@ import sinon from 'sinon';
|
||||
import URI from 'urijs';
|
||||
import {
|
||||
buildV1ChartDataPayload,
|
||||
exploreChart,
|
||||
getExploreUrl,
|
||||
shouldUseLegacyApi,
|
||||
getSimpleSQLExpression,
|
||||
shouldUseLegacyApi,
|
||||
} from 'src/explore/exploreUtils';
|
||||
import { DashboardStandaloneMode } from 'src/dashboard/util/constants';
|
||||
import * as hostNamesConfig from 'src/utils/hostNamesConfig';
|
||||
import { getChartMetadataRegistry } from '@superset-ui/core';
|
||||
import { getChartMetadataRegistry, SupersetClient } from '@superset-ui/core';
|
||||
|
||||
describe('exploreUtils', () => {
|
||||
const { location } = window;
|
||||
@@ -275,4 +276,16 @@ describe('exploreUtils', () => {
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe('.exploreChart()', () => {
|
||||
it('postForm', () => {
|
||||
const postFormSpy = jest.spyOn(SupersetClient, 'postForm');
|
||||
postFormSpy.mockImplementation(jest.fn());
|
||||
|
||||
exploreChart({
|
||||
formData: { ...formData, viz_type: 'my_custom_viz' },
|
||||
});
|
||||
expect(postFormSpy).toBeCalledTimes(1);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -25,6 +25,7 @@ import {
|
||||
ensureIsArray,
|
||||
getChartBuildQueryRegistry,
|
||||
getChartMetadataRegistry,
|
||||
SupersetClient,
|
||||
} from '@superset-ui/core';
|
||||
import { availableDomains } from 'src/utils/hostNamesConfig';
|
||||
import { safeStringify } from 'src/utils/safeStringify';
|
||||
@@ -234,31 +235,6 @@ export const buildV1ChartDataPayload = ({
|
||||
export const getLegacyEndpointType = ({ resultType, resultFormat }) =>
|
||||
resultFormat === 'csv' ? resultFormat : resultType;
|
||||
|
||||
export function postForm(url, payload, target = '_blank') {
|
||||
if (!url) {
|
||||
return;
|
||||
}
|
||||
|
||||
const hiddenForm = document.createElement('form');
|
||||
hiddenForm.action = url;
|
||||
hiddenForm.method = 'POST';
|
||||
hiddenForm.target = target;
|
||||
const token = document.createElement('input');
|
||||
token.type = 'hidden';
|
||||
token.name = 'csrf_token';
|
||||
token.value = (document.getElementById('csrf_token') || {}).value;
|
||||
hiddenForm.appendChild(token);
|
||||
const data = document.createElement('input');
|
||||
data.type = 'hidden';
|
||||
data.name = 'form_data';
|
||||
data.value = safeStringify(payload);
|
||||
hiddenForm.appendChild(data);
|
||||
|
||||
document.body.appendChild(hiddenForm);
|
||||
hiddenForm.submit();
|
||||
document.body.removeChild(hiddenForm);
|
||||
}
|
||||
|
||||
export const exportChart = ({
|
||||
formData,
|
||||
resultFormat = 'json',
|
||||
@@ -286,7 +262,8 @@ export const exportChart = ({
|
||||
ownState,
|
||||
});
|
||||
}
|
||||
postForm(url, payload);
|
||||
|
||||
SupersetClient.postForm(url, { form_data: safeStringify(payload) });
|
||||
};
|
||||
|
||||
export const exploreChart = formData => {
|
||||
@@ -295,7 +272,7 @@ export const exploreChart = formData => {
|
||||
endpointType: 'base',
|
||||
allowDomainSharding: false,
|
||||
});
|
||||
postForm(url, formData);
|
||||
SupersetClient.postForm(url, { form_data: safeStringify(formData) });
|
||||
};
|
||||
|
||||
export const useDebouncedEffect = (effect, delay, deps) => {
|
||||
|
||||
Reference in New Issue
Block a user