mirror of
https://github.com/apache/superset.git
synced 2026-05-12 19:35:17 +00:00
chore: Restructure explore redux state (#20448)
* chore: Restructure explore redux state * fixes * fix tests * add new tests * Fix type * Address comments * Fix bug * Fix import * Add new test * Move unsaved chart id to a constant * Add todo
This commit is contained in:
committed by
GitHub
parent
20163361b9
commit
c7f1c7d5bd
@@ -37,6 +37,12 @@ import {
|
||||
LocalStorageKeys,
|
||||
} from 'src/utils/localStorageHelpers';
|
||||
import { RESERVED_CHART_URL_PARAMS, URL_PARAMS } from 'src/constants';
|
||||
import { areObjectsEqual } from 'src/reduxUtils';
|
||||
import * as logActions from 'src/logger/actions';
|
||||
import {
|
||||
LOG_ACTIONS_MOUNT_EXPLORER,
|
||||
LOG_ACTIONS_CHANGE_EXPLORE_CONTROLS,
|
||||
} from 'src/logger/LogUtils';
|
||||
import { getUrlParam } from 'src/utils/urlUtils';
|
||||
import cx from 'classnames';
|
||||
import * as chartActions from 'src/components/Chart/chartAction';
|
||||
@@ -44,21 +50,16 @@ import { fetchDatasourceMetadata } from 'src/dashboard/actions/datasources';
|
||||
import { chartPropShape } from 'src/dashboard/util/propShapes';
|
||||
import { mergeExtraFormData } from 'src/dashboard/components/nativeFilters/utils';
|
||||
import { postFormData, putFormData } from 'src/explore/exploreUtils/formData';
|
||||
import { datasourcesActions } from 'src/explore/actions/datasourcesActions';
|
||||
import { mountExploreUrl } from 'src/explore/exploreUtils';
|
||||
import { getFormDataFromControls } from 'src/explore/controlUtils';
|
||||
import * as exploreActions from 'src/explore/actions/exploreActions';
|
||||
import * as saveModalActions from 'src/explore/actions/saveModalActions';
|
||||
import { useTabId } from 'src/hooks/useTabId';
|
||||
import ExploreChartPanel from '../ExploreChartPanel';
|
||||
import ConnectedControlPanelsContainer from '../ControlPanelsContainer';
|
||||
import SaveModal from '../SaveModal';
|
||||
import DataSourcePanel from '../DatasourcePanel';
|
||||
import { mountExploreUrl } from '../../exploreUtils';
|
||||
import { areObjectsEqual } from '../../../reduxUtils';
|
||||
import { getFormDataFromControls } from '../../controlUtils';
|
||||
import * as exploreActions from '../../actions/exploreActions';
|
||||
import * as saveModalActions from '../../actions/saveModalActions';
|
||||
import * as logActions from '../../../logger/actions';
|
||||
import {
|
||||
LOG_ACTIONS_MOUNT_EXPLORER,
|
||||
LOG_ACTIONS_CHANGE_EXPLORE_CONTROLS,
|
||||
} from '../../../logger/LogUtils';
|
||||
import ConnectedExploreChartHeader from '../ExploreChartHeader';
|
||||
|
||||
const propTypes = {
|
||||
@@ -693,53 +694,62 @@ function ExploreViewContainer(props) {
|
||||
ExploreViewContainer.propTypes = propTypes;
|
||||
|
||||
function mapStateToProps(state) {
|
||||
const { explore, charts, impressionId, dataMask, reports } = state;
|
||||
const form_data = getFormDataFromControls(explore.controls);
|
||||
const {
|
||||
explore,
|
||||
charts,
|
||||
common,
|
||||
impressionId,
|
||||
dataMask,
|
||||
reports,
|
||||
datasources,
|
||||
user,
|
||||
} = state;
|
||||
const { controls, slice } = explore;
|
||||
const form_data = getFormDataFromControls(controls);
|
||||
const slice_id = form_data.slice_id ?? slice?.slice_id ?? 0; // 0 - unsaved chart
|
||||
form_data.extra_form_data = mergeExtraFormData(
|
||||
{ ...form_data.extra_form_data },
|
||||
{
|
||||
...dataMask[form_data.slice_id ?? 0]?.ownState, // 0 - unsaved chart
|
||||
...dataMask[slice_id]?.ownState,
|
||||
},
|
||||
);
|
||||
const chartKey = Object.keys(charts)[0];
|
||||
const chart = charts[chartKey];
|
||||
const chart = charts[slice_id];
|
||||
|
||||
let dashboardId = Number(explore.form_data?.dashboardId);
|
||||
if (Number.isNaN(dashboardId)) {
|
||||
dashboardId = undefined;
|
||||
}
|
||||
|
||||
const datasource = datasources[form_data.datasource];
|
||||
|
||||
return {
|
||||
isDatasourceMetaLoading: explore.isDatasourceMetaLoading,
|
||||
datasource: explore.datasource,
|
||||
datasource_type: explore.datasource.type,
|
||||
datasourceId: explore.datasource_id,
|
||||
datasource,
|
||||
datasource_type: datasource.type,
|
||||
datasourceId: datasource.datasource_id,
|
||||
dashboardId,
|
||||
controls: explore.controls,
|
||||
can_overwrite: !!explore.can_overwrite,
|
||||
can_add: !!explore.can_add,
|
||||
can_download: !!explore.can_download,
|
||||
column_formats: explore.datasource
|
||||
? explore.datasource.column_formats
|
||||
: null,
|
||||
containerId: explore.slice
|
||||
? `slice-container-${explore.slice.slice_id}`
|
||||
can_overwrite: !!explore.can_overwrite,
|
||||
column_formats: datasource?.column_formats ?? null,
|
||||
containerId: slice
|
||||
? `slice-container-${slice.slice_id}`
|
||||
: 'slice-container',
|
||||
isStarred: explore.isStarred,
|
||||
slice: explore.slice,
|
||||
sliceName: explore.sliceName,
|
||||
slice,
|
||||
sliceName: explore.sliceName ?? slice?.slice_name ?? null,
|
||||
triggerRender: explore.triggerRender,
|
||||
form_data,
|
||||
table_name: form_data.datasource_name,
|
||||
table_name: datasource.table_name,
|
||||
vizType: form_data.viz_type,
|
||||
standalone: explore.standalone,
|
||||
force: explore.force,
|
||||
forcedHeight: explore.forced_height,
|
||||
standalone: !!explore.standalone,
|
||||
force: !!explore.force,
|
||||
chart,
|
||||
timeout: explore.common.conf.SUPERSET_WEBSERVER_TIMEOUT,
|
||||
ownState: dataMask[form_data.slice_id ?? 0]?.ownState, // 0 - unsaved chart
|
||||
timeout: common.conf.SUPERSET_WEBSERVER_TIMEOUT,
|
||||
ownState: dataMask[slice_id]?.ownState,
|
||||
impressionId,
|
||||
user: explore.user,
|
||||
user,
|
||||
exploreState: explore,
|
||||
reports,
|
||||
};
|
||||
@@ -748,6 +758,7 @@ function mapStateToProps(state) {
|
||||
function mapDispatchToProps(dispatch) {
|
||||
const actions = {
|
||||
...exploreActions,
|
||||
...datasourcesActions,
|
||||
...saveModalActions,
|
||||
...chartActions,
|
||||
...logActions,
|
||||
|
||||
Reference in New Issue
Block a user