Skip to content

Commit

Permalink
Write filters to query log from default editor.
Browse files Browse the repository at this point in the history
  • Loading branch information
lukeelmers committed Jun 30, 2020
1 parent a95622e commit 33f0e41
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 16 deletions.
1 change: 1 addition & 0 deletions src/plugins/data/public/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -424,6 +424,7 @@ export {
syncQueryStateWithUrl,
QueryState,
getDefaultQuery,
getQueryLog,
FilterManager,
SavedQuery,
SavedQueryService,
Expand Down
1 change: 0 additions & 1 deletion src/plugins/data/public/query/lib/get_query_log.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ import { IStorageWrapper } from 'src/plugins/kibana_utils/public';
import { PersistedLog } from '../persisted_log';
import { UI_SETTINGS } from '../../../common';

/** @internal */
export function getQueryLog(
uiSettings: IUiSettingsClient,
storage: IStorageWrapper,
Expand Down
12 changes: 0 additions & 12 deletions src/plugins/data/public/search/aggs/buckets/filters.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,7 @@ import { createFilterFilters } from './create_filter/filters';
import { toAngularJSON } from '../utils';
import { BucketAggType } from './bucket_agg_type';
import { BUCKET_TYPES } from './bucket_agg_types';
import { Storage } from '../../../../../../plugins/kibana_utils/public';
import { getEsQueryConfig, buildEsQuery, Query, UI_SETTINGS } from '../../../../common';
import { getQueryLog } from '../../../query';
import { BaseAggParams } from '../types';

const filtersTitle = i18n.translate('data.search.aggs.buckets.filtersTitle', {
Expand Down Expand Up @@ -72,16 +70,6 @@ export const getFiltersBucketAgg = ({ uiSettings }: FiltersBucketAggDependencies
const inFilters: FilterValue[] = aggConfig.params.filters;
if (!size(inFilters)) return;

inFilters.forEach((filter) => {
const persistedLog = getQueryLog(
uiSettings,
new Storage(window.localStorage),
'vis_default_editor',
filter.input.language
);
persistedLog.add(filter.input.query);
});

const outFilters = transform(
inFilters,
function (filters, filter) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,23 @@ import {
PersistedState,
VisualizeEmbeddableContract,
} from 'src/plugins/visualizations/public';
import { TimeRange } from 'src/plugins/data/public';
import { SavedObject } from 'src/plugins/saved_objects/public';
import { getQueryLog, IAggConfigs, TimeRange, Query } from '../../../../../plugins/data/public';
import { useKibana } from '../../../../../plugins/kibana_react/public';
import { Storage } from '../../../../../plugins/kibana_utils/public';
import { DefaultEditorNavBar, OptionTab } from './navbar';
import { DefaultEditorControls } from './controls';
import { setStateParamValue, useEditorReducer, useEditorFormState, discardChanges } from './state';
import { DefaultEditorAggCommonProps } from '../agg_common_props';
import { SidebarTitle } from './sidebar_title';
import { Schema } from '../../schemas';

interface FilterValue {
input: Query;
label: string;
id: string;
}

interface DefaultEditorSideBarProps {
embeddableHandler: VisualizeEmbeddableContract;
isCollapsed: boolean;
Expand All @@ -62,6 +70,8 @@ function DefaultEditorSideBar({
savedSearch,
timeRange,
}: DefaultEditorSideBarProps) {
const { services } = useKibana();

const [selectedTab, setSelectedTab] = useState(optionTabs[0].name);
const [isDirty, setDirty] = useState(false);
const [state, dispatch] = useEditorReducer(vis, eventEmitter);
Expand Down Expand Up @@ -103,19 +113,47 @@ function DefaultEditorSideBar({
return;
}

const getAggsJSON = (aggs: IAggConfigs) => {
return aggs.aggs.map((agg) => {
if (agg.type.name === 'filters') {
// For filters aggs we need to store each filter to the query log
// so that it is made available in the autocomplete.
agg.params.filters.forEach((filter: FilterValue) => {
const persistedLog = getQueryLog(
services.uiSettings,
new Storage(window.localStorage),
'vis_default_editor',
filter.input.language
);
persistedLog.add(filter.input.query);
});
}
return agg.serialize();
});
};

vis.setState({
...vis.serialize(),
params: state.params,
data: {
aggs: state.data.aggs ? (state.data.aggs.aggs.map((agg) => agg.toJSON()) as any) : [],
aggs: state.data.aggs ? (getAggsJSON(state.data.aggs) as any) : [],
},
});
embeddableHandler.reload();
eventEmitter.emit('dirtyStateChange', {
isDirty: false,
});
setTouched(false);
}, [vis, state, formState.invalid, setTouched, isDirty, eventEmitter, embeddableHandler]);
}, [
vis,
state,
formState.invalid,
setTouched,
isDirty,
eventEmitter,
embeddableHandler,
services.uiSettings,
]);

const onSubmit: KeyboardEventHandler<HTMLFormElement> = useCallback(
(event) => {
Expand Down

0 comments on commit 33f0e41

Please sign in to comment.