fix(native-filters): show human readable time grain label in indicator (#15411)

* fix(native-filters): show human readable time grain label in indicator

* lint

* simplify
This commit is contained in:
Ville Brofeldt 2021-06-28 13:35:14 +03:00 committed by GitHub
parent 8205ea53ab
commit ddcf461749
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 14 additions and 1 deletions

View File

@ -24,7 +24,7 @@ import {
TimeGranularity,
tn,
} from '@superset-ui/core';
import React, { useEffect, useState } from 'react';
import React, { useEffect, useMemo, useState } from 'react';
import { Select } from 'src/common/components';
import { Styles, StyledSelect } from '../common';
import { PluginFilterTimeGrainProps } from './types';
@ -52,10 +52,22 @@ export default function PluginFilterTimegrain(
const { defaultValue, inputRef } = formData;
const [value, setValue] = useState<string[]>(defaultValue ?? []);
const durationMap = useMemo(
() =>
data.reduce(
(agg, { duration, name }: { duration: string; name: string }) => ({
...agg,
[duration]: name,
}),
{} as { [key in string]: string },
),
[JSON.stringify(data)],
);
const handleChange = (values: string[] | string | undefined | null) => {
const resultValue: string[] = ensureIsArray<string>(values);
const [timeGrain] = resultValue;
const label = timeGrain ? durationMap[timeGrain] : undefined;
const extraFormData: ExtraFormData = {};
if (timeGrain) {
@ -65,6 +77,7 @@ export default function PluginFilterTimegrain(
setDataMask({
extraFormData,
filterState: {
label,
value: resultValue.length ? resultValue : null,
},
});