Skip to content

Commit

Permalink
add support for saved search
Browse files Browse the repository at this point in the history
  • Loading branch information
alvarezmelissa87 committed Jul 20, 2022
1 parent 5908282 commit b459b4c
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -182,10 +182,9 @@ export function getEsQueryFromSavedSearch({
};
}

// TODO: support saved search
// If saved search is an json object with the original query and filter
// retrieve the parsed query and filter
const savedSearchData = undefined; // getQueryFromSavedSearchObject(savedSearch);
const savedSearchData = getQueryFromSavedSearchObject(savedSearch);

// If no saved search available, use user's query and filters
if (!savedSearchData && userQuery) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,12 @@ import { ProgressControls } from '@kbn/aiops-components';
import { useFetchStream } from '@kbn/aiops-utils';
import type { WindowParameters } from '@kbn/aiops-utils';
import { Filter, Query } from '@kbn/es-query';
import { SavedSearch } from '@kbn/discover-plugin/public';

import { useAiOpsKibana } from '../../kibana_context';
import { initialState, streamReducer } from '../../../common/api/stream_reducer';
import type { ApiExplainLogRateSpikes } from '../../../common/api';
import { SearchQueryLanguage } from '../../application/utils/search_utils';
import { SearchQueryLanguage, SavedSearchSavedObject } from '../../application/utils/search_utils';
import { useUrlState, usePageUrlState, AppStateKey } from '../../hooks/url_state';
import { useData } from '../../hooks/use_data';
import { SpikeAnalysisTable } from '../spike_analysis_table';
Expand All @@ -42,9 +43,11 @@ import { SearchPanel } from '../search_panel';
interface ExplainLogRateSpikesProps {
/** The data view to analyze. */
dataView: DataView;
/** The saved search to analyze. */
savedSearch: SavedSearch | SavedSearchSavedObject;
}

export const ExplainLogRateSpikes: FC<ExplainLogRateSpikesProps> = ({ dataView }) => {
export const ExplainLogRateSpikes: FC<ExplainLogRateSpikesProps> = ({ dataView, savedSearch }) => {
const { services } = useAiOpsKibana();
const { http, data: dataService } = services;
const basePath = http?.basePath.get() ?? '';
Expand All @@ -71,7 +74,11 @@ export const ExplainLogRateSpikes: FC<ExplainLogRateSpikesProps> = ({ dataView }
);

const { docStats, timefilter, earliest, latest, searchQueryLanguage, searchString, searchQuery } =
useData(dataView, aiopsListState, setGlobalState);
useData(
{ currentDataView: dataView, currentSavedSearch: savedSearch },
aiopsListState,
setGlobalState
);

useEffect(() => {
return () => {
Expand Down Expand Up @@ -104,7 +111,7 @@ export const ExplainLogRateSpikes: FC<ExplainLogRateSpikesProps> = ({ dataView }
useEffect(() => {
// Update data query manager if input string is updated
dataService?.query.queryString.setQuery({
query: searchString,
query: searchString ?? '',
language: searchQueryLanguage,
});
}, [dataService, searchQueryLanguage, searchString]);
Expand Down Expand Up @@ -176,7 +183,7 @@ export const ExplainLogRateSpikes: FC<ExplainLogRateSpikesProps> = ({ dataView }
<EuiFlexItem>
<SearchPanel
dataView={dataView}
searchString={searchString}
searchString={searchString ?? ''}
searchQuery={searchQuery}
searchQueryLanguage={searchQueryLanguage}
setSearchParams={setSearchParams}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,17 @@ import { parse, stringify } from 'query-string';
import { isEqual } from 'lodash';
import { encode } from 'rison-node';
import { useHistory, useLocation } from 'react-router-dom';
import { SavedSearch } from '@kbn/discover-plugin/public';

import { EuiPageBody } from '@elastic/eui';
import { DataView } from '@kbn/data-views-plugin/public';

import { ExplainLogRateSpikes } from './explain_log_rate_spikes';
import { SEARCH_QUERY_LANGUAGE, SearchQueryLanguage } from '../../application/utils/search_utils';
import {
SEARCH_QUERY_LANGUAGE,
SearchQueryLanguage,
SavedSearchSavedObject,
} from '../../application/utils/search_utils';
import { useAiOpsKibana } from '../../kibana_context';
import {
Accessor,
Expand All @@ -32,6 +37,8 @@ import {
export interface ExplainLogRateSpikesWrapperProps {
/** The data view to analyze. */
dataView: DataView;
/** The saved search to analyze. */
savedSearch: SavedSearch | SavedSearchSavedObject;
}

const defaultSearchQuery = {
Expand All @@ -57,7 +64,10 @@ export const getDefaultAiOpsListState = (

export const restorableDefaults = getDefaultAiOpsListState();

export const ExplainLogRateSpikesWrapper: FC<ExplainLogRateSpikesWrapperProps> = ({ dataView }) => {
export const ExplainLogRateSpikesWrapper: FC<ExplainLogRateSpikesWrapperProps> = ({
dataView,
savedSearch,
}) => {
const { services } = useAiOpsKibana();
const { notifications } = services;
const { toasts } = notifications;
Expand Down Expand Up @@ -149,7 +159,7 @@ export const ExplainLogRateSpikesWrapper: FC<ExplainLogRateSpikesWrapperProps> =
return (
<UrlStateContextProvider value={{ searchString: urlSearchString, setUrlState }}>
<EuiPageBody data-test-subj="aiopsIndexPage" paddingSize="none" panelled={false}>
<ExplainLogRateSpikes dataView={dataView} />
<ExplainLogRateSpikes dataView={dataView} savedSearch={savedSearch} />
</EuiPageBody>
</UrlStateContextProvider>
);
Expand Down
14 changes: 11 additions & 3 deletions x-pack/plugins/aiops/public/hooks/use_data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,25 @@ import { useEffect, useMemo, useState } from 'react'; // useCallback, useRef
import type { DataView } from '@kbn/data-views-plugin/public';
import { merge } from 'rxjs';
import { UI_SETTINGS } from '@kbn/data-plugin/common';
import { SavedSearch } from '@kbn/discover-plugin/public';
import { useAiOpsKibana } from '../kibana_context';
import { useTimefilter } from './use_time_filter';
import { aiopsRefresh$ } from '../application/services/timefilter_refresh_service';
import { TimeBuckets } from '../../common/time_buckets';
import { useDocumentCountStats } from './use_document_count_stats';
import { Dictionary } from './url_state';
import { DocumentStatsSearchStrategyParams } from '../get_document_stats';
import { getEsQueryFromSavedSearch } from '../application/utils/search_utils';
import {
getEsQueryFromSavedSearch,
SavedSearchSavedObject,
} from '../application/utils/search_utils';
import { AiOpsIndexBasedAppState } from '../components/explain_log_rate_spikes/explain_log_rate_spikes_wrapper';

export const useData = (
currentDataView: DataView,
{
currentDataView,
currentSavedSearch,
}: { currentDataView: DataView; currentSavedSearch: SavedSearch | SavedSearchSavedObject },
aiopsListState: AiOpsIndexBasedAppState,
onUpdate: (params: Dictionary<unknown>) => void
) => {
Expand All @@ -36,7 +43,7 @@ export const useData = (
const searchData = getEsQueryFromSavedSearch({
dataView: currentDataView,
uiSettings,
savedSearch: undefined,
savedSearch: currentSavedSearch,
});

if (searchData === undefined || aiopsListState.searchString !== '') {
Expand All @@ -57,6 +64,7 @@ export const useData = (
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [
currentSavedSearch?.id,
currentDataView.id,
aiopsListState.searchString,
aiopsListState.searchQueryLanguage,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ export const ExplainLogRateSpikesPage: FC = () => {

const context = useMlContext();
const dataView = context.currentDataView;
const savedSearch = context.currentSavedSearch;

return (
<>
Expand All @@ -32,7 +33,9 @@ export const ExplainLogRateSpikesPage: FC = () => {
defaultMessage="Explain log rate spikes"
/>
</MlPageHeader>
{dataView.timeFieldName && <ExplainLogRateSpikes dataView={dataView} />}
{dataView.timeFieldName && (
<ExplainLogRateSpikes dataView={dataView} savedSearch={savedSearch} />
)}
<HelpMenu docLink={docLinks.links.ml.guide} />
</>
);
Expand Down

0 comments on commit b459b4c

Please sign in to comment.