-
Notifications
You must be signed in to change notification settings - Fork 8.3k
/
Copy pathcourier.js
58 lines (44 loc) · 1.87 KB
/
courier.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import _ from 'lodash';
import { VisRequestHandlersRegistryProvider } from 'ui/registry/vis_request_handlers';
const CourierRequestHandlerProvider = function (Private, courier, timefilter) {
return {
name: 'courier',
handler: function (vis, appState, uiState, queryFilter, searchSource) {
if (queryFilter && vis.editorMode) {
searchSource.set('filter', queryFilter.getFilters());
searchSource.set('query', appState.query);
}
const shouldQuery = () => {
if (!searchSource.lastQuery || vis.reload) return true;
if (!_.isEqual(_.cloneDeep(searchSource.get('filter')), searchSource.lastQuery.filter)) return true;
if (!_.isEqual(_.cloneDeep(searchSource.get('query')), searchSource.lastQuery.query)) return true;
if (!_.isEqual(_.cloneDeep(searchSource.get('aggs')()), searchSource.lastQuery.aggs)) return true;
if (!_.isEqual(_.cloneDeep(timefilter.time), searchSource.lastQuery.time)) return true;
return false;
};
return new Promise((resolve, reject) => {
if (shouldQuery()) {
delete vis.reload;
searchSource.onResults().then(resp => {
searchSource.lastQuery = {
filter: _.cloneDeep(searchSource.get('filter')),
query: _.cloneDeep(searchSource.get('query')),
aggs: _.cloneDeep(searchSource.get('aggs')()),
time: _.cloneDeep(timefilter.time)
};
searchSource.rawResponse = resp;
resolve(resp);
}).catch(e => reject(e));
searchSource.onError(e => {
reject(e);
}).catch(e => reject(e));
courier.fetch();
} else {
resolve(searchSource.rawResponse);
}
});
}
};
};
VisRequestHandlersRegistryProvider.register(CourierRequestHandlerProvider);
export { CourierRequestHandlerProvider };