mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 17:28:26 -04:00
* Snaps built range filter to available min and max
* Restored filter meta key
(cherry picked from commit 1168c117cc
)
This commit is contained in:
parent
5913fc3588
commit
ca10ce05bf
1 changed files with 10 additions and 5 deletions
|
@ -264,8 +264,10 @@ export class RangeSliderEmbeddable extends Embeddable<RangeSliderEmbeddableInput
|
|||
|
||||
private buildFilter = async () => {
|
||||
const { value: [selectedMin, selectedMax] = ['', ''], ignoreParentSettings } = this.getInput();
|
||||
const availableMin = this.componentState.min;
|
||||
const availableMax = this.componentState.max;
|
||||
|
||||
const hasData = !isEmpty(this.componentState.min) && !isEmpty(this.componentState.max);
|
||||
const hasData = !isEmpty(availableMin) && !isEmpty(availableMax);
|
||||
const hasLowerSelection = !isEmpty(selectedMin);
|
||||
const hasUpperSelection = !isEmpty(selectedMax);
|
||||
const hasEitherSelection = hasLowerSelection || hasUpperSelection;
|
||||
|
@ -275,9 +277,9 @@ export class RangeSliderEmbeddable extends Embeddable<RangeSliderEmbeddableInput
|
|||
hasBothSelections &&
|
||||
parseFloat(selectedMin) > parseFloat(selectedMax);
|
||||
const isLowerSelectionOutOfRange =
|
||||
hasLowerSelection && parseFloat(selectedMin) > parseFloat(this.componentState.max);
|
||||
hasLowerSelection && parseFloat(selectedMin) > parseFloat(availableMax);
|
||||
const isUpperSelectionOutOfRange =
|
||||
hasUpperSelection && parseFloat(selectedMax) < parseFloat(this.componentState.min);
|
||||
hasUpperSelection && parseFloat(selectedMax) < parseFloat(availableMin);
|
||||
const isSelectionOutOfRange =
|
||||
(!ignoreParentSettings?.ignoreValidations && hasData && isLowerSelectionOutOfRange) ||
|
||||
isUpperSelectionOutOfRange;
|
||||
|
@ -292,15 +294,18 @@ export class RangeSliderEmbeddable extends Embeddable<RangeSliderEmbeddableInput
|
|||
const params = {} as RangeFilterParams;
|
||||
|
||||
if (selectedMin) {
|
||||
params.gte = selectedMin;
|
||||
params.gte = Math.max(parseFloat(selectedMin), parseFloat(availableMin));
|
||||
}
|
||||
|
||||
if (selectedMax) {
|
||||
params.lte = selectedMax;
|
||||
params.lte = Math.min(parseFloat(selectedMax), parseFloat(availableMax));
|
||||
}
|
||||
|
||||
const rangeFilter = buildRangeFilter(field, params, dataView);
|
||||
|
||||
rangeFilter.meta.key = field?.name;
|
||||
rangeFilter.meta.type = 'range';
|
||||
rangeFilter.meta.params = params;
|
||||
|
||||
this.updateComponentState({ loading: false });
|
||||
this.updateOutput({ filters: [rangeFilter], dataViews: [dataView], loading: false });
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue