mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 01:38:56 -04:00
Merge pull request #5899 from rashidkpc/fix/null-filters
Fix null filters
This commit is contained in:
commit
78d815b134
4 changed files with 52 additions and 3 deletions
|
@ -6,6 +6,7 @@ define(function (require) {
|
|||
this.on = _.noop;
|
||||
this.off = _.noop;
|
||||
this.save = sinon.stub();
|
||||
this.replace = sinon.stub();
|
||||
_.assign(this, defaults);
|
||||
}
|
||||
|
||||
|
|
|
@ -39,7 +39,8 @@ describe('get filters', function () {
|
|||
beforeEach(function () {
|
||||
filters = [
|
||||
{ query: { match: { extension: { query: 'jpg', type: 'phrase' } } } },
|
||||
{ query: { match: { '@tags': { query: 'info', type: 'phrase' } } } }
|
||||
{ query: { match: { '@tags': { query: 'info', type: 'phrase' } } } },
|
||||
null
|
||||
];
|
||||
});
|
||||
|
||||
|
@ -69,16 +70,40 @@ describe('get filters', function () {
|
|||
expect(res[1].$state.store).to.be(storeNames.app);
|
||||
});
|
||||
|
||||
it('should return filters from specific states', function () {
|
||||
it('should return non-null filters from specific states', function () {
|
||||
var states = [
|
||||
[ globalState, queryFilter.getGlobalFilters ],
|
||||
[ appState, queryFilter.getAppFilters ],
|
||||
];
|
||||
|
||||
_.each(states, function (state) {
|
||||
state[0].filters = filters;
|
||||
state[0].filters = filters.slice(0);
|
||||
expect(state[0].filters).to.contain(null);
|
||||
|
||||
var res = state[1]();
|
||||
expect(res.length).to.be(state[0].filters.length);
|
||||
expect(state[0].filters).to.not.contain(null);
|
||||
});
|
||||
});
|
||||
|
||||
it('should replace the state, not save it', function () {
|
||||
var states = [
|
||||
[ globalState, queryFilter.getGlobalFilters ],
|
||||
[ appState, queryFilter.getAppFilters ],
|
||||
];
|
||||
|
||||
expect(appState.save.called).to.be(false);
|
||||
expect(appState.replace.called).to.be(false);
|
||||
|
||||
|
||||
_.each(states, function (state) {
|
||||
expect(state[0].save.called).to.be(false);
|
||||
expect(state[0].replace.called).to.be(false);
|
||||
|
||||
state[0].filters = filters.slice(0);
|
||||
var res = state[1]();
|
||||
expect(state[0].save.called).to.be(false);
|
||||
expect(state[0].replace.called).to.be(true);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -39,7 +39,9 @@ describe('Query Filter', function () {
|
|||
expect(queryFilter.pinFilter).to.be.a('function');
|
||||
expect(queryFilter.pinAll).to.be.a('function');
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('Actions', function () {
|
||||
|
|
|
@ -23,11 +23,19 @@ define(function (require) {
|
|||
queryFilter.getAppFilters = function () {
|
||||
var appState = getAppState();
|
||||
if (!appState || !appState.filters) return [];
|
||||
|
||||
// Work around for https://github.com/elastic/kibana/issues/5896
|
||||
appState.filters = validateStateFilters(appState);
|
||||
|
||||
return (appState.filters) ? _.map(appState.filters, appendStoreType('appState')) : [];
|
||||
};
|
||||
|
||||
queryFilter.getGlobalFilters = function () {
|
||||
if (!globalState.filters) return [];
|
||||
|
||||
// Work around for https://github.com/elastic/kibana/issues/5896
|
||||
globalState.filters = validateStateFilters(globalState);
|
||||
|
||||
return _.map(globalState.filters, appendStoreType('globalState'));
|
||||
};
|
||||
|
||||
|
@ -213,6 +221,19 @@ define(function (require) {
|
|||
|
||||
return queryFilter;
|
||||
|
||||
/**
|
||||
* Rids filter list of null values and replaces state if any nulls are found
|
||||
*/
|
||||
function validateStateFilters(state) {
|
||||
var compacted = _.compact(state.filters);
|
||||
if (state.filters.length !== compacted.length) {
|
||||
state.filters = compacted;
|
||||
state.replace();
|
||||
}
|
||||
return state.filters;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Saves both app and global states, ensuring filters are persisted
|
||||
* @returns {object} Resulting filter list, app and global combined
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue