mirror of
https://github.com/apache/superset.git
synced 2026-05-06 16:34:32 +00:00
Disable adhoc
This commit is contained in:
@@ -142,6 +142,10 @@ const ColumnSelectPopover = ({
|
||||
const datasourceType = useSelector<ExplorePageState, string | undefined>(
|
||||
state => state.explore.datasource.type,
|
||||
);
|
||||
const compatibleDimensions = useSelector<
|
||||
ExplorePageState,
|
||||
string[] | null | undefined
|
||||
>(state => state.explore.compatibleDimensions);
|
||||
const [initialLabel] = useState(label);
|
||||
const [initialAdhocColumn, initialCalculatedColumn, initialSimpleColumn] =
|
||||
getInitialColumnValues(editedColumn);
|
||||
@@ -551,6 +555,11 @@ const ColumnSelectPopover = ({
|
||||
key: `column-${simpleColumn.column_name}`,
|
||||
column_name: simpleColumn.column_name,
|
||||
verbose_name: simpleColumn.verbose_name ?? '',
|
||||
disabled:
|
||||
compatibleDimensions != null &&
|
||||
!compatibleDimensions.includes(
|
||||
simpleColumn.column_name,
|
||||
),
|
||||
})),
|
||||
...availableMetrics.map(metric => ({
|
||||
value: metric.metric_name,
|
||||
@@ -565,6 +574,9 @@ const ColumnSelectPopover = ({
|
||||
key: `metric-${metric.metric_name}`,
|
||||
metric_name: metric.metric_name,
|
||||
verbose_name: metric.verbose_name ?? '',
|
||||
disabled:
|
||||
compatibleDimensions != null &&
|
||||
!compatibleDimensions.includes(metric.metric_name),
|
||||
})),
|
||||
]}
|
||||
optionFilterProps={[
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
*/
|
||||
/* eslint-disable camelcase */
|
||||
import { PureComponent, createRef } from 'react';
|
||||
import { useSelector } from 'react-redux';
|
||||
import { isDefined, ensureIsArray, DatasourceType } from '@superset-ui/core';
|
||||
import { t } from '@apache-superset/core/translation';
|
||||
import type { editors } from '@apache-superset/core';
|
||||
@@ -94,6 +95,8 @@ interface AdhocMetricEditPopoverProps {
|
||||
datasource?: DatasourceInfo;
|
||||
isNewMetric?: boolean;
|
||||
isLabelModified?: boolean;
|
||||
/** Names of metrics the user may select; null means no filtering. */
|
||||
compatibleMetrics?: string[] | null;
|
||||
}
|
||||
|
||||
interface AdhocMetricEditPopoverState {
|
||||
@@ -123,7 +126,7 @@ const StyledSelect = styled(Select)`
|
||||
|
||||
export const SAVED_TAB_KEY = 'SAVED';
|
||||
|
||||
export default class AdhocMetricEditPopover extends PureComponent<
|
||||
class AdhocMetricEditPopover extends PureComponent<
|
||||
AdhocMetricEditPopoverProps,
|
||||
AdhocMetricEditPopoverState
|
||||
> {
|
||||
@@ -445,6 +448,11 @@ export default class AdhocMetricEditPopover extends PureComponent<
|
||||
key: savedMetric.id,
|
||||
metric_name: savedMetric.metric_name,
|
||||
verbose_name: savedMetric.verbose_name ?? '',
|
||||
disabled:
|
||||
this.props.compatibleMetrics != null &&
|
||||
!this.props.compatibleMetrics.includes(
|
||||
savedMetric.metric_name,
|
||||
),
|
||||
}),
|
||||
)}
|
||||
optionFilterProps={['metric_name', 'verbose_name']}
|
||||
@@ -596,3 +604,22 @@ export default class AdhocMetricEditPopover extends PureComponent<
|
||||
}
|
||||
// @ts-expect-error - defaultProps for backward compatibility
|
||||
AdhocMetricEditPopover.defaultProps = defaultProps;
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Thin functional wrapper that injects compatibility data from Redux.
|
||||
// AdhocMetricEditPopover is a class component and cannot use hooks directly.
|
||||
// ---------------------------------------------------------------------------
|
||||
function AdhocMetricEditPopoverWithRedux(
|
||||
props: AdhocMetricEditPopoverProps,
|
||||
) {
|
||||
const compatibleMetrics = useSelector(
|
||||
(state: any) => state.explore?.compatibleMetrics as string[] | null | undefined,
|
||||
);
|
||||
return (
|
||||
<AdhocMetricEditPopover {...props} compatibleMetrics={compatibleMetrics} />
|
||||
);
|
||||
}
|
||||
|
||||
export { AdhocMetricEditPopover };
|
||||
export default AdhocMetricEditPopoverWithRedux;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user