fix: Use config pinnedByDefault for filters created with filter editor (#20359)

This commit is contained in:
Lukas Olson 2018-07-10 10:42:54 -07:00
parent 9e6c4bfba9
commit 96f3f3415d
3 changed files with 33 additions and 5 deletions

View file

@ -35,7 +35,8 @@ import {
getParamsFromFilter,
isFilterValid,
buildFilter,
areIndexPatternsProvided
areIndexPatternsProvided,
isFilterPinned
} from './lib/filter_editor_utils';
import * as filterBuilder from '../filter_manager/lib';
import { keyMap } from '../utils/key_map';
@ -54,7 +55,9 @@ module.directive('filterEditor', function ($timeout, indexPatterns) {
},
controllerAs: 'filterEditor',
bindToController: true,
controller: callAfterBindingsWorkaround(function ($scope, $element) {
controller: callAfterBindingsWorkaround(function ($scope, $element, config) {
const pinnedByDefault = config.get('filters:pinnedByDefault');
this.init = async () => {
if (!areIndexPatternsProvided(this.indexPatterns)) {
const defaultIndexPattern = await indexPatterns.getDefault();
@ -144,8 +147,7 @@ module.directive('filterEditor', function ($timeout, indexPatterns) {
}
newFilter.meta.disabled = filter.meta.disabled;
newFilter.meta.alias = alias;
const isPinned = _.get(filter, ['$state', 'store']) === 'globalState';
const isPinned = isFilterPinned(filter, pinnedByDefault);
return this.onSave({ filter, newFilter, isPinned });
};

View file

@ -40,7 +40,8 @@ import {
getOperatorOptions,
isFilterValid,
buildFilter,
areIndexPatternsProvided
areIndexPatternsProvided,
isFilterPinned
} from '../filter_editor_utils';
describe('FilterEditorUtils', function () {
@ -372,4 +373,24 @@ describe('FilterEditorUtils', function () {
expect(areIndexPatternsProvided([indexPatternMock])).to.be(true);
});
});
describe('isFilterPinned', function () {
it('should return false when the store is appState', function () {
const filter = { $state: { store: 'appState' } };
expect(isFilterPinned(filter, false)).to.be(false);
expect(isFilterPinned(filter, true)).to.be(false);
});
it('should return true when the store is globalState', function () {
const filter = { $state: { store: 'globalState' } };
expect(isFilterPinned(filter, false)).to.be(true);
expect(isFilterPinned(filter, true)).to.be(true);
});
it('should return the default when the store does not exist', function () {
const filter = {};
expect(isFilterPinned(filter, false)).to.be(false);
expect(isFilterPinned(filter, true)).to.be(true);
});
});
});

View file

@ -104,3 +104,8 @@ export function buildFilter({ indexPattern, field, operator, params, filterBuild
export function areIndexPatternsProvided(indexPatterns) {
return _.compact(indexPatterns).length !== 0;
}
export function isFilterPinned(filter, pinnedByDefault) {
if (!filter.hasOwnProperty('$state')) return pinnedByDefault;
return filter.$state.store === 'globalState';
}