Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Backport]2.x Merge pull request #538 #584

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions public/components/event_analytics/explorer/explorer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -556,7 +556,6 @@ export const Explorer = ({
<EuiHorizontalRule margin="xs" />
<LogPatterns
selectedIntervalUnit={selectedIntervalRef.current}
setTempQuery={setTempQuery}
handleTimeRangePickerRefresh={handleTimeRangePickerRefresh}
/>
</>
Expand Down Expand Up @@ -727,7 +726,7 @@ export const Explorer = ({
if (availability !== true) {
await updateQueryInStore(tempQuery);
}
await fetchData();
await fetchData(startTime, endTime);
},
[tempQuery, query]
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
*/

import { EuiFlexGroup, EuiFlexItem, EuiHorizontalRule, EuiLink, EuiText } from '@elastic/eui';
import React, { useContext, useState } from 'react';
import React, { useContext, useEffect, useState } from 'react';
import { connect, useDispatch } from 'react-redux';
import {
FILTERED_PATTERN,
Expand All @@ -25,15 +25,13 @@ export interface LogPatternProps {
text: string;
value: string;
};
setTempQuery: () => string;
handleTimeRangePickerRefresh: (flag: boolean) => {};
patterns: PatternTableData[];
query: IQuery;
}

const EventPatterns = ({
selectedIntervalUnit,
setTempQuery,
handleTimeRangePickerRefresh,
patterns,
query,
Expand All @@ -49,21 +47,35 @@ const EventPatterns = ({
requestParams: { tabId },
});

// refresh patterns on opening page
useEffect(() => {
getPatterns(selectedIntervalUnit?.value?.replace(/^auto_/, '') || 'y');
}, []);

const onPatternSelection = async (pattern: string) => {
if (query[FILTERED_PATTERN] === pattern) {
return;
}
dispatch(
// await here allows react to render update properly and display it.
// it forces the query to be changed before running it, without await the visual wont update.
await dispatch(
changeQuery({
tabId,
query: {
[FILTERED_PATTERN]: pattern,
},
})
);
// workaround to refresh callback and trigger fetch data
await setTempQuery(query[RAW_QUERY]);
await handleTimeRangePickerRefresh(true);
handleTimeRangePickerRefresh(true);
// after rendering the patterns visual, we want the pattern to be reset for future searches
await dispatch(
changeQuery({
tabId,
query: {
[FILTERED_PATTERN]: '',
},
})
);
};

const showToastError = (errorMsg: string) => {
Expand Down
17 changes: 6 additions & 11 deletions public/services/data_fetchers/ppl/ppl_data_fetcher.ts
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ export class PPLDataFetcher extends DataFetcherBase implements IDataFetcher {
} = this.searchContext;
const { dispatch, changeQuery } = this.storeContext;

await this.processTimestamp(query, appBaseQuery);
await this.processTimestamp(query);
if (isEmpty(this.timestamp)) return;

const curStartTime = startingTime || this.query[SELECTED_DATE_RANGE][0];
Expand All @@ -103,7 +103,7 @@ export class PPLDataFetcher extends DataFetcherBase implements IDataFetcher {
);

// update UI with new query state
await this.updateQueryState(this.query[RAW_QUERY], finalQuery, this.timestamp, appBaseQuery);
await this.updateQueryState(this.query[RAW_QUERY], finalQuery, this.timestamp);
// calculate proper time interval for count distribution
if (!selectedInterval.current || selectedInterval.current.text === 'Auto') {
findAutoInterval(curStartTime, curEndTime);
Expand Down Expand Up @@ -158,8 +158,8 @@ export class PPLDataFetcher extends DataFetcherBase implements IDataFetcher {
}
}

async processTimestamp(query: IQuery, appBaseQuery: string) {
if (query[SELECTED_TIMESTAMP] && appBaseQuery === '') {
async processTimestamp(query: IQuery) {
if (query[SELECTED_TIMESTAMP]) {
this.timestamp = query[SELECTED_TIMESTAMP];
} else {
await this.setTimestamp(this.queryIndex);
Expand All @@ -175,12 +175,7 @@ export class PPLDataFetcher extends DataFetcherBase implements IDataFetcher {
return await timestampUtils.getTimestamp(indexPattern);
}

async updateQueryState(
rawQuery: string,
finalQuery: string,
curTimestamp: string,
appBaseQuery: string
) {
async updateQueryState(rawQuery: string, finalQuery: string, curTimestamp: string) {
const { batch, dispatch, changeQuery, changeVizConfig } = this.storeContext;
const { query } = this.searchParams;
const {
Expand All @@ -197,7 +192,7 @@ export class PPLDataFetcher extends DataFetcherBase implements IDataFetcher {
tabId,
query: {
finalQuery,
[RAW_QUERY]: buildRawQuery(query, appBaseQuery),
[RAW_QUERY]: query.rawQuery,
[SELECTED_TIMESTAMP]: curTimestamp,
},
})
Expand Down
Loading