Skip to content

Commit

Permalink
savedSearch support
Browse files Browse the repository at this point in the history
  • Loading branch information
ppisljar committed Nov 20, 2018
1 parent 237e031 commit 5062baf
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 18 deletions.
54 changes: 36 additions & 18 deletions src/core_plugins/interpreter/public/functions/kibana_context.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
* under the License.
*/

import chrome from 'ui/chrome';

export default () => ({
name: 'kibana_context',
type: 'kibana_context',
Expand Down Expand Up @@ -44,29 +46,45 @@ export default () => ({
help: 'Sets date range to query',
default: null,
},
savedSearchId: {
types: ['string', 'null'],
help: 'Sets date range to query',
default: null,
}
},
fn(context, args) {
const queryArg = args.q ? JSON.parse(args.q) : [];
let queries = Array.isArray(queryArg) ? queryArg : [queryArg];
return chrome.dangerouslyGetActiveInjector().then(async $injector => {
const savedSearches = $injector.get('savedSearches');
const queryArg = args.q ? JSON.parse(args.q) : [];
let queries = Array.isArray(queryArg) ? queryArg : [queryArg];
let filters = args.filters ? JSON.parse(args.filters) : [];

if (context.query) {
const contextQueries = Array.isArray(context.query) ? context.query : [context.query];
queries = queries.concat(contextQueries);
}
if (args.savedSearchId) {
const savedSearch = await savedSearches.get(args.savedSearchId);
const searchQuery = savedSearch.searchSource.getField('query');
const searchFilters = savedSearch.searchSource.getField('filter');
queries = queries.concat(searchQuery);
filters = filters.concat(searchFilters);
}

let filters = args.filters ? JSON.parse(args.filters) : [];
if (context.filters) {
// merge filters
filters = context.filters.concat(JSON.parse(args.filters));
}
if (context.query) {
const contextQueries = Array.isArray(context.query) ? context.query : [context.query];
queries = queries.concat(contextQueries);
}

if (context.filters) {
// merge filters
filters = filters.concat(context.filters);
}

const timeRange = args.timeRange ? JSON.parse(args.timeRange) : context.timeRange;
const timeRange = args.timeRange ? JSON.parse(args.timeRange) : context.timeRange;

return {
type: 'kibana_context',
query: queries,
filters: filters,
timeRange: timeRange,
};
return {
type: 'kibana_context',
query: queries,
filters: filters,
timeRange: timeRange,
};
});
},
});
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@ uiModules
self.searchSource.getField('index'),
self.visState
);
self.vis.savedSearchId = self.savedSearchId;

return self.vis;
};
Expand All @@ -150,6 +151,7 @@ uiModules
self.vis.indexPattern = self.searchSource.getField('index');
self.visState.title = self.title;
self.vis.setState(self.visState);
self.vis.savedSearchId = self.savedSearchId;
};

return SavedVis;
Expand Down
3 changes: 3 additions & 0 deletions src/ui/public/visualize/loader/pipeline_helpers.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ export const buildPipeline = (vis, params) => {
if (filters) {
pipeline += `filters='${JSON.stringify(filters).replace(/'/g, `\\'`)}' `;
}
if (vis.savedSearchId) {
pipeline += `savedSearchId='${vis.savedSearchId}' `;
}
pipeline += '| ';
if (vis.type.name === 'vega') {
pipeline += `vega spec='${visState.params.spec.replace(/'/g, `\\'`)}'`;
Expand Down

0 comments on commit 5062baf

Please sign in to comment.