feat(plugins): Update custom controls for BigNumber with Time Comparison chart (#27054)

This commit is contained in:
Antonio Rivero 2024-02-12 14:51:04 +01:00 committed by GitHub
parent faaf14bcc4
commit 435cd2705e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 43 additions and 18 deletions

View File

@ -16,12 +16,27 @@
* specific language governing permissions and limitations
* under the License.
*/
import { t, validateNonEmpty } from '@superset-ui/core';
import { ensureIsArray, t, validateNonEmpty } from '@superset-ui/core';
import {
ControlPanelConfig,
ControlPanelState,
ControlState,
sharedControls,
} from '@superset-ui/chart-controls';
const validateTimeComparisonRangeValues = (
timeRangeValue?: any,
controlValue?: any,
) => {
const isCustomTimeRange = timeRangeValue === 'c';
const isCustomControlEmpty = controlValue?.every(
(val: any) => ensureIsArray(val).length === 0,
);
return isCustomTimeRange && isCustomControlEmpty
? [t('Filters for comparison must have a value')]
: [];
};
const config: ControlPanelConfig = {
controlPanelSections: [
{
@ -54,6 +69,33 @@ const config: ControlPanelConfig = {
['r', 'Range'],
['c', 'Custom'],
],
rerender: ['adhoc_custom'],
},
},
],
[
{
name: `adhoc_custom`,
config: {
...sharedControls.adhoc_filters,
label: t('Filters for Comparison'),
description:
'This only applies when selecting the Range for Comparison Type: Custom',
visibility: ({ controls }) =>
controls?.time_comparison?.value === 'c',
mapStateToProps: (
state: ControlPanelState,
controlState: ControlState,
) => ({
...(sharedControls.adhoc_filters.mapStateToProps?.(
state,
controlState,
) || {}),
externalValidationErrors: validateTimeComparisonRangeValues(
state.controls?.time_comparison?.value,
controlState.value,
),
}),
},
},
],
@ -65,23 +107,6 @@ const config: ControlPanelConfig = {
],
],
},
{
label: t('Custom Time Range'),
expanded: true,
controlSetRows: [
[
{
name: `adhoc_custom`,
config: {
...sharedControls.adhoc_filters,
label: t('FILTERS (Custom)'),
description:
'This only applies when selecting the Range for Comparison Type- Custom',
},
},
],
],
},
{
label: t('Chart Options'),
expanded: true,