chore: Add Loading icon to Filter Bar (#12158)

* Add Loading icon to Filter Bar

* Change Loading Box height to gridUnits
This commit is contained in:
Agata Stawarz 2020-12-23 03:19:18 +01:00 committed by GitHub
parent d2da25a621
commit 93af329078
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -31,6 +31,7 @@ import Button from 'src/components/Button';
import Icon from 'src/components/Icon'; import Icon from 'src/components/Icon';
import { getChartDataRequest } from 'src/chart/chartAction'; import { getChartDataRequest } from 'src/chart/chartAction';
import { areObjectsEqual } from 'src/reduxUtils'; import { areObjectsEqual } from 'src/reduxUtils';
import Loading from 'src/components/Loading';
import FilterConfigurationLink from './FilterConfigurationLink'; import FilterConfigurationLink from './FilterConfigurationLink';
// import FilterScopeModal from 'src/dashboard/components/filterscope/FilterScopeModal'; // import FilterScopeModal from 'src/dashboard/components/filterscope/FilterScopeModal';
@ -182,6 +183,12 @@ const StyledCaretIcon = styled(Icon)`
margin-top: ${({ theme }) => -theme.gridUnit}px; margin-top: ${({ theme }) => -theme.gridUnit}px;
`; `;
const StyledLoadingBox = styled.div`
position: relative;
height: ${({ theme }) => theme.gridUnit * 8}px;
margin-bottom: ${({ theme }) => theme.gridUnit * 6}px;
`;
interface FilterProps { interface FilterProps {
filter: Filter; filter: Filter;
icon?: React.ReactElement; icon?: React.ReactElement;
@ -206,6 +213,7 @@ const FilterValue: React.FC<FilterProps> = ({
defaultValue, defaultValue,
} = filter; } = filter;
const cascadingFilters = useCascadingFilters(id); const cascadingFilters = useCascadingFilters(id);
const [loading, setLoading] = useState<boolean>(true);
const [state, setState] = useState({ data: undefined }); const [state, setState] = useState({ data: undefined });
const [formData, setFormData] = useState<Partial<QueryFormData>>({}); const [formData, setFormData] = useState<Partial<QueryFormData>>({});
const [target] = targets; const [target] = targets;
@ -241,6 +249,7 @@ const FilterValue: React.FC<FilterProps> = ({
requestParams: { dashboardId: 0 }, requestParams: { dashboardId: 0 },
}).then(response => { }).then(response => {
setState({ data: response.result[0].data }); setState({ data: response.result[0].data });
setLoading(false);
}); });
} }
}, [cascadingFilters]); }, [cascadingFilters]);
@ -248,6 +257,14 @@ const FilterValue: React.FC<FilterProps> = ({
const setExtraFormData = (extraFormData: ExtraFormData) => const setExtraFormData = (extraFormData: ExtraFormData) =>
onExtraFormDataChange(filter, extraFormData); onExtraFormDataChange(filter, extraFormData);
if (loading) {
return (
<StyledLoadingBox>
<Loading />
</StyledLoadingBox>
);
}
return ( return (
<Form <Form
onFinish={values => { onFinish={values => {
@ -309,7 +326,7 @@ export const CascadeFilterControl: React.FC<CascadeFilterControlProps> = ({
<StyledCascadeChildrenList> <StyledCascadeChildrenList>
{filter.cascadeChildren?.map(childFilter => ( {filter.cascadeChildren?.map(childFilter => (
<li> <li key={childFilter.id}>
<CascadeFilterControl <CascadeFilterControl
filter={childFilter} filter={childFilter}
onExtraFormDataChange={onExtraFormDataChange} onExtraFormDataChange={onExtraFormDataChange}