datatrails: debounce search and prefix filter (#81842)

fix: debounce search and prefix filter
This commit is contained in:
Darren Janeczek 2024-02-08 10:35:09 -05:00 committed by GitHub
parent 3756234de6
commit 312f8f0f69
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,5 +1,6 @@
import { css } from '@emotion/css';
import leven from 'leven';
import { debounce } from 'lodash';
import React, { useCallback } from 'react';
import { GrafanaTheme2, VariableRefresh } from '@grafana/data';
@ -288,18 +289,26 @@ export class MetricSelectScene extends SceneObjectBase<MetricSelectSceneState> {
}
};
public onSearchChange = (evt: React.SyntheticEvent<HTMLInputElement>) => {
public onSearchQueryChange = (evt: React.SyntheticEvent<HTMLInputElement>) => {
this.setState({ searchQuery: evt.currentTarget.value });
this.searchQueryChangedDebounced();
};
private searchQueryChangedDebounced = debounce(() => {
this.updateMetrics(); // Need to repeat entire pipeline
this.buildLayout();
};
}, 500);
public onPrefixFilterChange = (prefixFilter: string | undefined) => {
this.setState({ prefixFilter });
this.prefixFilterChangedDebounced();
};
private prefixFilterChangedDebounced = debounce(() => {
this.applyMetricPrefixFilter();
this.updateMetrics(false); // Only needed to applyMetricPrefixFilter
this.buildLayout();
};
}, 1000);
public onTogglePreviews = () => {
this.setState({ showPreviews: !this.state.showPreviews });
@ -339,7 +348,7 @@ export class MetricSelectScene extends SceneObjectBase<MetricSelectSceneState> {
placeholder="Search metrics"
prefix={<Icon name={'search'} />}
value={searchQuery}
onChange={model.onSearchChange}
onChange={model.onSearchQueryChange}
disabled={disableSearch}
/>
</Field>