fix: Overhead when changing the filter name (#16877)

This commit is contained in:
Michael S. Molina 2021-09-29 07:37:02 -03:00 committed by GitHub
parent 0ea83c5a00
commit e3b14fe170
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 20 additions and 13 deletions

View File

@ -17,8 +17,9 @@
* under the License.
*/
import React, { useCallback, useMemo, useState, useRef } from 'react';
import { uniq } from 'lodash';
import { uniq, debounce } from 'lodash';
import { t, styled } from '@superset-ui/core';
import { SLOW_DEBOUNCE } from 'src/constants';
import { Form } from 'src/common/components';
import { StyledModal } from 'src/components/Modal';
import ErrorBoundary from 'src/components/ErrorBoundary';
@ -233,6 +234,23 @@ export function FiltersConfigModal({
}
};
const onValuesChange = useMemo(
() =>
debounce((changes: any, values: NativeFiltersForm) => {
if (
changes.filters &&
Object.values(changes.filters).some(
(filter: any) => filter.name != null,
)
) {
// we only need to set this if a name changed
setFormValues(values);
}
setSaveAlertVisible(false);
}, SLOW_DEBOUNCE),
[],
);
return (
<StyledModalWrapper
visible={isOpen}
@ -259,18 +277,7 @@ export function FiltersConfigModal({
<StyledForm
preserve={false}
form={form}
onValuesChange={(changes, values: NativeFiltersForm) => {
if (
changes.filters &&
Object.values(changes.filters).some(
(filter: any) => filter.name != null,
)
) {
// we only need to set this if a name changed
setFormValues(values);
}
setSaveAlertVisible(false);
}}
onValuesChange={onValuesChange}
layout="vertical"
>
<FilterTabs