mirror of
https://github.com/elastic/kibana.git
synced 2025-04-25 10:23:14 -04:00
Fix Data Streams and Rollups Jobs deep-link bugs (#70903)
* Add extractQueryParams to es_ui_shared/public/url. Update CCR, Remote Clusters, and Rollup to consume this service via shared_imports. * Fix Data Streams bug in which clicking a data stream would apply a deep-link filter to the table. * Fix Rollup Job deep-link bug.
This commit is contained in:
parent
648468dae1
commit
e58cc173f1
28 changed files with 89 additions and 82 deletions
|
@ -68,6 +68,8 @@ export {
|
||||||
|
|
||||||
export { Monaco, Forms };
|
export { Monaco, Forms };
|
||||||
|
|
||||||
|
export { extractQueryParams } from './url';
|
||||||
|
|
||||||
/** dummy plugin, we just want esUiShared to have its own bundle */
|
/** dummy plugin, we just want esUiShared to have its own bundle */
|
||||||
export function plugin() {
|
export function plugin() {
|
||||||
return new (class EsUiSharedPlugin {
|
return new (class EsUiSharedPlugin {
|
||||||
|
|
29
src/plugins/es_ui_shared/public/url/extract_query_params.ts
Normal file
29
src/plugins/es_ui_shared/public/url/extract_query_params.ts
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
/*
|
||||||
|
* Licensed to Elasticsearch B.V. under one or more contributor
|
||||||
|
* license agreements. See the NOTICE file distributed with
|
||||||
|
* this work for additional information regarding copyright
|
||||||
|
* ownership. Elasticsearch B.V. licenses this file to you under
|
||||||
|
* the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
* not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { parse, ParsedQuery } from 'query-string';
|
||||||
|
|
||||||
|
export function extractQueryParams(queryString: string = ''): ParsedQuery<string> {
|
||||||
|
const hrefSplit = queryString.split('?');
|
||||||
|
if (!hrefSplit.length) {
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
return parse(hrefSplit[1], { sort: false });
|
||||||
|
}
|
20
src/plugins/es_ui_shared/public/url/index.ts
Normal file
20
src/plugins/es_ui_shared/public/url/index.ts
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
/*
|
||||||
|
* Licensed to Elasticsearch B.V. under one or more contributor
|
||||||
|
* license agreements. See the NOTICE file distributed with
|
||||||
|
* this work for additional information regarding copyright
|
||||||
|
* ownership. Elasticsearch B.V. licenses this file to you under
|
||||||
|
* the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
* not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export { extractQueryParams } from './extract_query_params';
|
|
@ -29,11 +29,10 @@ import {
|
||||||
EuiTitle,
|
EuiTitle,
|
||||||
} from '@elastic/eui';
|
} from '@elastic/eui';
|
||||||
|
|
||||||
import { indices } from '../../../../../../src/plugins/es_ui_shared/public';
|
|
||||||
import { indexPatterns } from '../../../../../../src/plugins/data/public';
|
import { indexPatterns } from '../../../../../../src/plugins/data/public';
|
||||||
|
|
||||||
|
import { extractQueryParams, indices } from '../../shared_imports';
|
||||||
import { routing } from '../services/routing';
|
import { routing } from '../services/routing';
|
||||||
import { extractQueryParams } from '../services/query_params';
|
|
||||||
import { getRemoteClusterName } from '../services/get_remote_cluster_name';
|
import { getRemoteClusterName } from '../services/get_remote_cluster_name';
|
||||||
import { API_STATUS } from '../constants';
|
import { API_STATUS } from '../constants';
|
||||||
import { SectionError } from './section_error';
|
import { SectionError } from './section_error';
|
||||||
|
|
|
@ -28,12 +28,14 @@ import {
|
||||||
EuiTitle,
|
EuiTitle,
|
||||||
} from '@elastic/eui';
|
} from '@elastic/eui';
|
||||||
|
|
||||||
import { indices } from '../../../../../../../src/plugins/es_ui_shared/public';
|
import { extractQueryParams, indices } from '../../../shared_imports';
|
||||||
import { indexNameValidator, leaderIndexValidator } from '../../services/input_validation';
|
import { indexNameValidator, leaderIndexValidator } from '../../services/input_validation';
|
||||||
import { routing } from '../../services/routing';
|
import { routing } from '../../services/routing';
|
||||||
import { getFatalErrors } from '../../services/notifications';
|
import { getFatalErrors } from '../../services/notifications';
|
||||||
import { loadIndices } from '../../services/api';
|
import { loadIndices } from '../../services/api';
|
||||||
import { API_STATUS } from '../../constants';
|
import { API_STATUS } from '../../constants';
|
||||||
|
import { getRemoteClusterName } from '../../services/get_remote_cluster_name';
|
||||||
|
import { RemoteClustersFormField } from '../remote_clusters_form_field';
|
||||||
import { SectionError } from '../section_error';
|
import { SectionError } from '../section_error';
|
||||||
import { FormEntryRow } from '../form_entry_row';
|
import { FormEntryRow } from '../form_entry_row';
|
||||||
import {
|
import {
|
||||||
|
@ -41,9 +43,6 @@ import {
|
||||||
emptyAdvancedSettings,
|
emptyAdvancedSettings,
|
||||||
areAdvancedSettingsEdited,
|
areAdvancedSettingsEdited,
|
||||||
} from './advanced_settings_fields';
|
} from './advanced_settings_fields';
|
||||||
import { extractQueryParams } from '../../services/query_params';
|
|
||||||
import { getRemoteClusterName } from '../../services/get_remote_cluster_name';
|
|
||||||
import { RemoteClustersFormField } from '../remote_clusters_form_field';
|
|
||||||
|
|
||||||
import { FollowerIndexRequestFlyout } from './follower_index_request_flyout';
|
import { FollowerIndexRequestFlyout } from './follower_index_request_flyout';
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ import {
|
||||||
} from '@elastic/eui';
|
} from '@elastic/eui';
|
||||||
|
|
||||||
import { reactRouterNavigate } from '../../../../../../../../src/plugins/kibana_react/public';
|
import { reactRouterNavigate } from '../../../../../../../../src/plugins/kibana_react/public';
|
||||||
import { extractQueryParams } from '../../../services/query_params';
|
import { extractQueryParams } from '../../../../shared_imports';
|
||||||
import { trackUiMetric, METRIC_TYPE } from '../../../services/track_ui_metric';
|
import { trackUiMetric, METRIC_TYPE } from '../../../services/track_ui_metric';
|
||||||
import { API_STATUS, UIM_AUTO_FOLLOW_PATTERN_LIST_LOAD } from '../../../constants';
|
import { API_STATUS, UIM_AUTO_FOLLOW_PATTERN_LIST_LOAD } from '../../../constants';
|
||||||
import { SectionLoading, SectionError, SectionUnauthorized } from '../../../components';
|
import { SectionLoading, SectionError, SectionUnauthorized } from '../../../components';
|
||||||
|
|
|
@ -18,7 +18,7 @@ import {
|
||||||
} from '@elastic/eui';
|
} from '@elastic/eui';
|
||||||
|
|
||||||
import { reactRouterNavigate } from '../../../../../../../../src/plugins/kibana_react/public';
|
import { reactRouterNavigate } from '../../../../../../../../src/plugins/kibana_react/public';
|
||||||
import { extractQueryParams } from '../../../services/query_params';
|
import { extractQueryParams } from '../../../../shared_imports';
|
||||||
import { trackUiMetric, METRIC_TYPE } from '../../../services/track_ui_metric';
|
import { trackUiMetric, METRIC_TYPE } from '../../../services/track_ui_metric';
|
||||||
import { API_STATUS, UIM_FOLLOWER_INDEX_LIST_LOAD } from '../../../constants';
|
import { API_STATUS, UIM_FOLLOWER_INDEX_LIST_LOAD } from '../../../constants';
|
||||||
import { SectionLoading, SectionError, SectionUnauthorized } from '../../../components';
|
import { SectionLoading, SectionError, SectionUnauthorized } from '../../../components';
|
||||||
|
|
|
@ -8,8 +8,8 @@ import React from 'react';
|
||||||
import { i18n } from '@kbn/i18n';
|
import { i18n } from '@kbn/i18n';
|
||||||
import { FormattedMessage } from '@kbn/i18n/react';
|
import { FormattedMessage } from '@kbn/i18n/react';
|
||||||
|
|
||||||
import { indices } from '../../../../../../src/plugins/es_ui_shared/public';
|
|
||||||
import { indexPatterns } from '../../../../../../src/plugins/data/public';
|
import { indexPatterns } from '../../../../../../src/plugins/data/public';
|
||||||
|
import { indices } from '../../shared_imports';
|
||||||
|
|
||||||
const {
|
const {
|
||||||
indexNameBeginsWithPeriod,
|
indexNameBeginsWithPeriod,
|
||||||
|
|
|
@ -6,7 +6,8 @@
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { FormattedMessage } from '@kbn/i18n/react';
|
import { FormattedMessage } from '@kbn/i18n/react';
|
||||||
import { indices } from '../../../../../../src/plugins/es_ui_shared/public';
|
|
||||||
|
import { indices } from '../../shared_imports';
|
||||||
|
|
||||||
const isEmpty = (value) => {
|
const isEmpty = (value) => {
|
||||||
return !value || !value.trim().length;
|
return !value || !value.trim().length;
|
||||||
|
|
|
@ -4,13 +4,4 @@
|
||||||
* you may not use this file except in compliance with the Elastic License.
|
* you may not use this file except in compliance with the Elastic License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { parse } from 'query-string';
|
export { extractQueryParams, indices } from '../../../../src/plugins/es_ui_shared/public';
|
||||||
|
|
||||||
export function extractQueryParams(queryString) {
|
|
||||||
const hrefSplit = queryString.split('?');
|
|
||||||
if (!hrefSplit.length) {
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
|
|
||||||
return parse(hrefSplit[1], { sort: false });
|
|
||||||
}
|
|
|
@ -11,7 +11,7 @@ import { i18n } from '@kbn/i18n';
|
||||||
import { EuiTitle, EuiText, EuiSpacer, EuiEmptyPrompt, EuiLink } from '@elastic/eui';
|
import { EuiTitle, EuiText, EuiSpacer, EuiEmptyPrompt, EuiLink } from '@elastic/eui';
|
||||||
import { ScopedHistory } from 'kibana/public';
|
import { ScopedHistory } from 'kibana/public';
|
||||||
|
|
||||||
import { reactRouterNavigate } from '../../../../shared_imports';
|
import { reactRouterNavigate, extractQueryParams } from '../../../../shared_imports';
|
||||||
import { useAppContext } from '../../../app_context';
|
import { useAppContext } from '../../../app_context';
|
||||||
import { SectionError, SectionLoading, Error } from '../../../components';
|
import { SectionError, SectionLoading, Error } from '../../../components';
|
||||||
import { useLoadDataStreams } from '../../../services/api';
|
import { useLoadDataStreams } from '../../../services/api';
|
||||||
|
@ -28,8 +28,11 @@ export const DataStreamList: React.FunctionComponent<RouteComponentProps<MatchPa
|
||||||
match: {
|
match: {
|
||||||
params: { dataStreamName },
|
params: { dataStreamName },
|
||||||
},
|
},
|
||||||
|
location: { search },
|
||||||
history,
|
history,
|
||||||
}) => {
|
}) => {
|
||||||
|
const { isDeepLink } = extractQueryParams(search);
|
||||||
|
|
||||||
const {
|
const {
|
||||||
core: { getUrlForApp },
|
core: { getUrlForApp },
|
||||||
plugins: { ingestManager },
|
plugins: { ingestManager },
|
||||||
|
@ -144,7 +147,9 @@ export const DataStreamList: React.FunctionComponent<RouteComponentProps<MatchPa
|
||||||
|
|
||||||
<DataStreamTable
|
<DataStreamTable
|
||||||
filters={
|
filters={
|
||||||
dataStreamName !== undefined ? `name=${decodePathFromReactRouter(dataStreamName)}` : ''
|
isDeepLink && dataStreamName !== undefined
|
||||||
|
? `name=${decodePathFromReactRouter(dataStreamName)}`
|
||||||
|
: ''
|
||||||
}
|
}
|
||||||
dataStreams={dataStreams}
|
dataStreams={dataStreams}
|
||||||
reload={reload}
|
reload={reload}
|
||||||
|
|
|
@ -277,6 +277,7 @@ export class IndexTable extends Component {
|
||||||
data-test-subj="dataStreamLink"
|
data-test-subj="dataStreamLink"
|
||||||
{...reactRouterNavigate(history, {
|
{...reactRouterNavigate(history, {
|
||||||
pathname: `/data_streams/${encodePathForReactRouter(value)}`,
|
pathname: `/data_streams/${encodePathForReactRouter(value)}`,
|
||||||
|
search: '?isDeepLink=true',
|
||||||
})}
|
})}
|
||||||
>
|
>
|
||||||
{value}
|
{value}
|
||||||
|
|
|
@ -11,6 +11,7 @@ export {
|
||||||
sendRequest,
|
sendRequest,
|
||||||
useRequest,
|
useRequest,
|
||||||
Forms,
|
Forms,
|
||||||
|
extractQueryParams,
|
||||||
} from '../../../../src/plugins/es_ui_shared/public/';
|
} from '../../../../src/plugins/es_ui_shared/public/';
|
||||||
|
|
||||||
export {
|
export {
|
||||||
|
|
|
@ -10,7 +10,8 @@ import { FormattedMessage } from '@kbn/i18n/react';
|
||||||
|
|
||||||
import { EuiPageContent } from '@elastic/eui';
|
import { EuiPageContent } from '@elastic/eui';
|
||||||
|
|
||||||
import { getRouter, redirect, extractQueryParams } from '../../services';
|
import { extractQueryParams } from '../../../shared_imports';
|
||||||
|
import { getRouter, redirect } from '../../services';
|
||||||
import { setBreadcrumbs } from '../../services/breadcrumb';
|
import { setBreadcrumbs } from '../../services/breadcrumb';
|
||||||
import { RemoteClusterPageTitle, RemoteClusterForm } from '../components';
|
import { RemoteClusterPageTitle, RemoteClusterForm } from '../components';
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,8 @@ import {
|
||||||
} from '@elastic/eui';
|
} from '@elastic/eui';
|
||||||
|
|
||||||
import { reactRouterNavigate } from '../../../../../../../src/plugins/kibana_react/public';
|
import { reactRouterNavigate } from '../../../../../../../src/plugins/kibana_react/public';
|
||||||
import { extractQueryParams, getRouter, redirect } from '../../services';
|
import { extractQueryParams } from '../../../shared_imports';
|
||||||
|
import { getRouter, redirect } from '../../services';
|
||||||
import { setBreadcrumbs } from '../../services/breadcrumb';
|
import { setBreadcrumbs } from '../../services/breadcrumb';
|
||||||
import { RemoteClusterPageTitle, RemoteClusterForm, ConfiguredByNodeWarning } from '../components';
|
import { RemoteClusterPageTitle, RemoteClusterForm, ConfiguredByNodeWarning } from '../components';
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ import {
|
||||||
} from '@elastic/eui';
|
} from '@elastic/eui';
|
||||||
|
|
||||||
import { reactRouterNavigate } from '../../../../../../../src/plugins/kibana_react/public';
|
import { reactRouterNavigate } from '../../../../../../../src/plugins/kibana_react/public';
|
||||||
import { extractQueryParams } from '../../services';
|
import { extractQueryParams } from '../../../shared_imports';
|
||||||
import { setBreadcrumbs } from '../../services/breadcrumb';
|
import { setBreadcrumbs } from '../../services/breadcrumb';
|
||||||
|
|
||||||
import { RemoteClusterTable } from './remote_cluster_table';
|
import { RemoteClusterTable } from './remote_cluster_table';
|
||||||
|
|
|
@ -12,8 +12,6 @@ export { initRedirect, redirect } from './redirect';
|
||||||
|
|
||||||
export { isAddressValid, isPortValid } from './validate_address';
|
export { isAddressValid, isPortValid } from './validate_address';
|
||||||
|
|
||||||
export { extractQueryParams } from './query_params';
|
|
||||||
|
|
||||||
export { setUserHasLeftApp, getUserHasLeftApp, registerRouter, getRouter } from './routing';
|
export { setUserHasLeftApp, getUserHasLeftApp, registerRouter, getRouter } from './routing';
|
||||||
|
|
||||||
export { trackUiMetric, METRIC_TYPE } from './ui_metric';
|
export { trackUiMetric, METRIC_TYPE } from './ui_metric';
|
||||||
|
|
|
@ -6,12 +6,8 @@
|
||||||
|
|
||||||
import { i18n } from '@kbn/i18n';
|
import { i18n } from '@kbn/i18n';
|
||||||
|
|
||||||
import {
|
import { extractQueryParams } from '../../../shared_imports';
|
||||||
addCluster as sendAddClusterRequest,
|
import { addCluster as sendAddClusterRequest, getRouter, redirect } from '../../services';
|
||||||
getRouter,
|
|
||||||
extractQueryParams,
|
|
||||||
redirect,
|
|
||||||
} from '../../services';
|
|
||||||
import { fatalError, toasts } from '../../services/notification';
|
import { fatalError, toasts } from '../../services/notification';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
|
|
|
@ -4,7 +4,8 @@
|
||||||
* you may not use this file except in compliance with the Elastic License.
|
* you may not use this file except in compliance with the Elastic License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { extractQueryParams, getRouter } from '../../services';
|
import { extractQueryParams } from '../../../shared_imports';
|
||||||
|
import { getRouter } from '../../services';
|
||||||
import { OPEN_DETAIL_PANEL, CLOSE_DETAIL_PANEL } from '../action_types';
|
import { OPEN_DETAIL_PANEL, CLOSE_DETAIL_PANEL } from '../action_types';
|
||||||
|
|
||||||
export const openDetailPanel = ({ name }) => (dispatch) => {
|
export const openDetailPanel = ({ name }) => (dispatch) => {
|
||||||
|
|
|
@ -9,12 +9,8 @@ import { i18n } from '@kbn/i18n';
|
||||||
import { toasts, fatalError } from '../../services/notification';
|
import { toasts, fatalError } from '../../services/notification';
|
||||||
import { loadClusters } from './load_clusters';
|
import { loadClusters } from './load_clusters';
|
||||||
|
|
||||||
import {
|
import { extractQueryParams } from '../../../shared_imports';
|
||||||
editCluster as sendEditClusterRequest,
|
import { editCluster as sendEditClusterRequest, getRouter, redirect } from '../../services';
|
||||||
extractQueryParams,
|
|
||||||
getRouter,
|
|
||||||
redirect,
|
|
||||||
} from '../../services';
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
EDIT_CLUSTER_START,
|
EDIT_CLUSTER_START,
|
||||||
|
|
|
@ -4,13 +4,4 @@
|
||||||
* you may not use this file except in compliance with the Elastic License.
|
* you may not use this file except in compliance with the Elastic License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { parse } from 'query-string';
|
export { extractQueryParams, indices } from '../../../../src/plugins/es_ui_shared/public';
|
||||||
|
|
||||||
export function extractQueryParams(queryString) {
|
|
||||||
const hrefSplit = queryString.split('?');
|
|
||||||
if (!hrefSplit.length) {
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
|
|
||||||
return parse(hrefSplit[1], { sort: false });
|
|
||||||
}
|
|
|
@ -27,10 +27,9 @@ import {
|
||||||
|
|
||||||
import { withKibana } from '../../../../../../../src/plugins/kibana_react/public';
|
import { withKibana } from '../../../../../../../src/plugins/kibana_react/public';
|
||||||
|
|
||||||
import { getRouterLinkProps, extractQueryParams, listBreadcrumb } from '../../services';
|
import { extractQueryParams } from '../../../shared_imports';
|
||||||
|
import { getRouterLinkProps, listBreadcrumb } from '../../services';
|
||||||
import { JobTable } from './job_table';
|
import { JobTable } from './job_table';
|
||||||
|
|
||||||
import { DetailPanel } from './detail_panel';
|
import { DetailPanel } from './detail_panel';
|
||||||
|
|
||||||
const REFRESH_RATE_MS = 30000;
|
const REFRESH_RATE_MS = 30000;
|
||||||
|
|
|
@ -265,7 +265,7 @@ export class JobTable extends Component {
|
||||||
<EuiLink
|
<EuiLink
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
trackUiMetric(METRIC_TYPE.CLICK, UIM_SHOW_DETAILS_CLICK);
|
trackUiMetric(METRIC_TYPE.CLICK, UIM_SHOW_DETAILS_CLICK);
|
||||||
openDetailPanel(job.id);
|
openDetailPanel(encodeURIComponent(job.id));
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{value}
|
{value}
|
||||||
|
|
|
@ -33,8 +33,6 @@ export { serializeJob, deserializeJob, deserializeJobs } from './jobs';
|
||||||
|
|
||||||
export { createNoticeableDelay } from './noticeable_delay';
|
export { createNoticeableDelay } from './noticeable_delay';
|
||||||
|
|
||||||
export { extractQueryParams } from './query_params';
|
|
||||||
|
|
||||||
export {
|
export {
|
||||||
setUserHasLeftApp,
|
setUserHasLeftApp,
|
||||||
getUserHasLeftApp,
|
getUserHasLeftApp,
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
||||||
* or more contributor license agreements. Licensed under the Elastic License;
|
|
||||||
* you may not use this file except in compliance with the Elastic License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
export function extractQueryParams(queryString) {
|
|
||||||
if (!queryString || queryString.trim().length === 0) {
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
|
|
||||||
const extractedQueryParams = {};
|
|
||||||
const queryParamPairs = queryString
|
|
||||||
.split('?')[1]
|
|
||||||
.split('&')
|
|
||||||
.map((paramString) => paramString.split('='));
|
|
||||||
|
|
||||||
queryParamPairs.forEach(([key, value]) => {
|
|
||||||
extractedQueryParams[key] = decodeURIComponent(value);
|
|
||||||
});
|
|
||||||
|
|
||||||
return extractedQueryParams;
|
|
||||||
}
|
|
|
@ -102,7 +102,7 @@ export const createJob = (jobConfig) => async (dispatch) => {
|
||||||
// here, because it would partially obscure the detail panel.
|
// here, because it would partially obscure the detail panel.
|
||||||
getRouter().history.push({
|
getRouter().history.push({
|
||||||
pathname: `/job_list`,
|
pathname: `/job_list`,
|
||||||
search: `?job=${jobConfig.id}`,
|
search: `?job=${encodeURIComponent(jobConfig.id)}`,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,8 @@
|
||||||
* you may not use this file except in compliance with the Elastic License.
|
* you may not use this file except in compliance with the Elastic License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { extractQueryParams, getRouter } from '../../services';
|
import { extractQueryParams } from '../../../shared_imports';
|
||||||
|
import { getRouter } from '../../services';
|
||||||
import { OPEN_DETAIL_PANEL, CLOSE_DETAIL_PANEL } from '../action_types';
|
import { OPEN_DETAIL_PANEL, CLOSE_DETAIL_PANEL } from '../action_types';
|
||||||
|
|
||||||
export const openDetailPanel = ({ panelType, jobId }) => (dispatch) => {
|
export const openDetailPanel = ({ panelType, jobId }) => (dispatch) => {
|
||||||
|
|
|
@ -4,4 +4,4 @@
|
||||||
* you may not use this file except in compliance with the Elastic License.
|
* you may not use this file except in compliance with the Elastic License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export { indices } from '../../../../src/plugins/es_ui_shared/public';
|
export { extractQueryParams, indices } from '../../../../src/plugins/es_ui_shared/public';
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue