mirror of
https://github.com/apache/superset.git
synced 2026-06-01 13:49:21 +00:00
feat(dashboard): chart customizations modal and plugins (#36062)
This commit is contained in:
@@ -48,8 +48,13 @@ interface SelectAsyncControlProps extends SelectAsyncProps {
|
||||
label?: string;
|
||||
}
|
||||
|
||||
function isLabeledValue(arg: any): arg is LabeledValue {
|
||||
return arg.value !== undefined;
|
||||
function isLabeledValue(arg: unknown): arg is LabeledValue {
|
||||
return (
|
||||
typeof arg === 'object' &&
|
||||
arg !== null &&
|
||||
'value' in arg &&
|
||||
arg.value !== undefined
|
||||
);
|
||||
}
|
||||
|
||||
const SelectAsyncControl = ({
|
||||
@@ -66,6 +71,7 @@ const SelectAsyncControl = ({
|
||||
}: SelectAsyncControlProps) => {
|
||||
const [options, setOptions] = useState<SelectOptionsType>([]);
|
||||
const [loaded, setLoaded] = useState<boolean>(false);
|
||||
const [rawData, setRawData] = useState<Record<string, unknown> | null>(null);
|
||||
|
||||
const handleOnChange = (val: SelectValue) => {
|
||||
let onChangeVal = val;
|
||||
@@ -101,6 +107,7 @@ const SelectAsyncControl = ({
|
||||
endpoint: dataEndpoint,
|
||||
})
|
||||
.then(response => {
|
||||
setRawData(response.json);
|
||||
const data = mutator
|
||||
? mutator(response.json, value)
|
||||
: response.json.result;
|
||||
@@ -116,6 +123,13 @@ const SelectAsyncControl = ({
|
||||
}
|
||||
}, [addDangerToast, dataEndpoint, mutator, value, loaded]);
|
||||
|
||||
useEffect(() => {
|
||||
if (rawData && mutator) {
|
||||
const data = mutator(rawData, value);
|
||||
setOptions(data);
|
||||
}
|
||||
}, [value, mutator, rawData]);
|
||||
|
||||
return (
|
||||
<Select
|
||||
allowClear={allowClear}
|
||||
|
||||
Reference in New Issue
Block a user