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

[ML] Migrate internal urls to non-hash paths #76735

Merged
merged 81 commits into from
Sep 17, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
81 commits
Select commit Hold shift + click to select a range
5ff3100
[ML] Update internal links
qn895 Sep 2, 2020
df33079
[ML] Update internal links
qn895 Sep 2, 2020
8c3adc1
[ML] Update links to datavisualizer results page
qn895 Sep 2, 2020
0333310
[ML] Update links to datavisualizer results page
qn895 Sep 2, 2020
65de961
[ML] Update links to filter list
qn895 Sep 2, 2020
4ec96fd
[ML] Update browser doc title whenever tab changes
qn895 Sep 3, 2020
49d0e7d
[ML] Update manageCalendarsHref
qn895 Sep 3, 2020
6827517
[ML] Update jobList and data frame list
qn895 Sep 3, 2020
6f86f70
[ML] Remove get_selected_ids_url
qn895 Sep 3, 2020
7f8decf
[ML] Update globalState to appropriate url states & retain only _g st…
qn895 Sep 3, 2020
ce2f3ec
[ML] Update link for register feature
qn895 Sep 3, 2020
6fbb599
[ML] Add i18n to main tabs
qn895 Sep 3, 2020
195929f
[ML] Add link to DFA list, remove commented preserve search, move aro…
qn895 Sep 4, 2020
f175d27
[ML] Update import for const ANALYSIS_CONFIG_TYPE
qn895 Sep 4, 2020
8ffd123
[ML] Revert change to APM
qn895 Sep 4, 2020
a30ec90
[ML] Fix broken Start trial link in data visualizer
qn895 Sep 4, 2020
0e9915b
[ML] Redirect to main job page if _g for global for dfa exploration i…
qn895 Sep 4, 2020
5b8c82e
[ML] Inject basepath to preConfiguredJobRedirect
qn895 Sep 4, 2020
7742303
[ML] Inject basepath to preConfiguredJobRedirect + update mock for Ti…
qn895 Sep 4, 2020
f56525c
[ML] Change to useNavigateToPath instead of href to avoid full page r…
qn895 Sep 4, 2020
25272ca
[ML] Update links within settings
qn895 Sep 4, 2020
adc1047
Merge remote-tracking branch 'upstream/master' into ml-replace-intern…
qn895 Sep 8, 2020
5d0c800
[ML] Fix eslint
qn895 Sep 8, 2020
c62a924
[ML] Change to using `docTitle.change`
qn895 Sep 8, 2020
ac70ed2
[ML] Update RecognizedResult
qn895 Sep 8, 2020
ad88c4e
[ML] Update redirectToTab to only retain refreshInterval + tab name c…
qn895 Sep 8, 2020
fb40acb
[ML] Only retain refresh interval for now
qn895 Sep 8, 2020
738f0b7
[ML] Update onClick to href with react-router Link
qn895 Sep 8, 2020
2d317c1
[ML] Update links for AD View Results, Recognize redirects, DFAnalyti…
qn895 Sep 8, 2020
df40e5f
[ML] Update links for recognize to also honor user's advanced setting…
qn895 Sep 8, 2020
a10374a
[ML] Remove # in fallback
qn895 Sep 8, 2020
4ee28a9
[ML] Replace usage of getResultsUrl
qn895 Sep 8, 2020
0e2ed56
[ML] Update links to group of AD jobs after Add sample data & create …
qn895 Sep 8, 2020
bb8230c
[ML] Update viewResults when AD job wizard finishes
qn895 Sep 8, 2020
7176749
[ML] Navigate to path /jobs as fallback
qn895 Sep 8, 2020
f561cf4
[ML] Preserve refreshInterval state even after navigating to settings…
qn895 Sep 8, 2020
ffa623a
[ML] Add refresh inerval to new job button
qn895 Sep 8, 2020
9272d37
[ML] Update mocks for jest tests
qn895 Sep 8, 2020
dd3517b
[ML] Refactor ANALYSIS_CONFIG_TYPE from enum -> const
qn895 Sep 9, 2020
4a50f1f
[ML] Fix issues with mlFilterListsTable
qn895 Sep 9, 2020
5eda3bf
Merge remote-tracking branch 'upstream/master' into ml-replace-intern…
qn895 Sep 9, 2020
fe633ae
[ML] Update returnToFiltersList
qn895 Sep 9, 2020
6461407
[ML] Add ANOMALY_DETECTION_CREATE_JOB
qn895 Sep 9, 2020
cf3edb7
[ML] Replace checkGetJobsCapabilitiesResolver
qn895 Sep 9, 2020
787bade
[ML] Update calendar & filter lists
qn895 Sep 9, 2020
de7c268
Merge remote-tracking branch 'upstream/master' into ml-replace-intern…
qn895 Sep 9, 2020
d0e20a4
[ML] Update broken DFA imports
qn895 Sep 9, 2020
853d5a3
[ML] Fix unnecessary links in MainTabs & add keys
qn895 Sep 9, 2020
662c756
[ML] Speed up DFA links from overview & extend MlUrlGen with exclude…
qn895 Sep 10, 2020
b530216
[ML] Improve breadcrumbs for settings page, introduce another level
qn895 Sep 10, 2020
a58a477
[ML] Fix broken navigation breadcrumbs
qn895 Sep 10, 2020
b76adb0
[ML] Fix jest tests
qn895 Sep 11, 2020
13abdba
Merge remote-tracking branch 'upstream/master' into ml-replace-intern…
qn895 Sep 11, 2020
dc3ba76
[ML] Update tst subjects, data frame, recently accessed, double elastic
qn895 Sep 14, 2020
40f8845
Merge remote-tracking branch 'upstream/master' into ml-replace-intern…
qn895 Sep 14, 2020
733e9fa
[ML] Fix i18n
qn895 Sep 14, 2020
1fa7026
[ML] Fix mlFilterListsRow
qn895 Sep 14, 2020
68e7519
[ML] Move ML_APP_NAME to constants ML_APP_NAME
qn895 Sep 14, 2020
3439383
[ML] Dima's feedback
qn895 Sep 14, 2020
cea397e
[ML] Misc fixes
qn895 Sep 14, 2020
0c29605
Merge branch 'ml-replace-internal-urls' of https://github.com/qn895/k…
qn895 Sep 14, 2020
e224267
Merge remote-tracking branch 'upstream/master' into ml-replace-intern…
qn895 Sep 14, 2020
f85413f
[ML] Update registerManagementSection, test for explorer_no_jobs_found
qn895 Sep 14, 2020
1efaed2
[ML] Update imports from discover plugins and fix i18n duplicate
qn895 Sep 14, 2020
29d8674
Merge remote-tracking branch 'upstream/master' into ml-replace-intern…
qn895 Sep 15, 2020
d3edff7
[ML] Rename DataFrameAnalyticsType -> DataFrameAnalysisConfigType
qn895 Sep 15, 2020
42313ae
[ML] Update useMlLink
qn895 Sep 15, 2020
f762277
[ML] Change redirectToMlAccessDeniedPage to using deps
qn895 Sep 15, 2020
ba56a81
[ML] Fix recently_accessed not working from non-ml pages
qn895 Sep 15, 2020
0d83eac
[ML] Add message
qn895 Sep 15, 2020
cc8f5dd
[ML] Use getAnalysisType, reorder import Link, rename AdJobLink
qn895 Sep 16, 2020
92dad64
[ML] Update clearSelectedJobIdFromUrl, update forecast tables linking…
qn895 Sep 16, 2020
0a4a559
[ML] Update links inside annotations_table
qn895 Sep 16, 2020
efe49ea
[ML] Update links in ExplorerChartContainerUI
qn895 Sep 16, 2020
abe0ce6
[ML] Rename single metric viewer links
qn895 Sep 16, 2020
b7f9be7
[ML] Update switch link btw SMV and AE
qn895 Sep 16, 2020
5dd7373
[ML] Update tests
qn895 Sep 16, 2020
0a0436b
Merge remote-tracking branch 'upstream/master' into ml-replace-intern…
qn895 Sep 16, 2020
75352f9
[ML] Fix model list linking
qn895 Sep 16, 2020
ee507b4
[ML] Update linking in AE Anomalies table
qn895 Sep 16, 2020
a39face
Merge branch 'master' into ml-replace-internal-urls
elasticmachine Sep 17, 2020
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
5 changes: 5 additions & 0 deletions x-pack/plugins/ml/common/constants/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@
* you may not use this file except in compliance with the Elastic License.
*/

import { i18n } from '@kbn/i18n';

export const PLUGIN_ID = 'ml';
export const PLUGIN_ICON = 'machineLearningApp';
export const PLUGIN_ICON_SOLUTION = 'logoKibana';
export const ML_APP_NAME = i18n.translate('xpack.ml.navMenu.mlAppNameText', {
defaultMessage: 'Machine Learning',
});
5 changes: 5 additions & 0 deletions x-pack/plugins/ml/common/constants/data_frame_analytics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,9 @@
* you may not use this file except in compliance with the Elastic License.
*/

export const ANALYSIS_CONFIG_TYPE = {
OUTLIER_DETECTION: 'outlier_detection',
REGRESSION: 'regression',
CLASSIFICATION: 'classification',
} as const;
Comment on lines +7 to +11
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have the same as an enum already in plugins/ml/public/application/data_frame_analytics/common/analytics.ts. This one using the const approach as well as the location here LGTM so suggest to try to get rid of the on mentioned in this comment.

Copy link
Member Author

@qn895 qn895 Sep 9, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Went through and updated the usage of enum ANALYSIS_CONFIG_TYPE to const ANALYSIS_CONFIG_TYPE here dd3517b

export const DEFAULT_RESULTS_FIELD = 'ml';
8 changes: 8 additions & 0 deletions x-pack/plugins/ml/common/constants/ml_url_generator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,16 @@ export const ML_PAGES = {
* Open index data visualizer viewer page
*/
DATA_VISUALIZER_INDEX_VIEWER: 'jobs/new_job/datavisualizer',
ANOMALY_DETECTION_CREATE_JOB: `jobs/new_job`,
ANOMALY_DETECTION_CREATE_JOB_SELECT_TYPE: `jobs/new_job/step/job_type`,
ANOMALY_DETECTION_CREATE_JOB_SELECT_INDEX: `jobs/new_job/step/index_or_search`,
SETTINGS: 'settings',
CALENDARS_MANAGE: 'settings/calendars_list',
CALENDARS_NEW: 'settings/calendars_list/new_calendar',
CALENDARS_EDIT: 'settings/calendars_list/edit_calendar',
FILTER_LISTS_MANAGE: 'settings/filter_lists',
FILTER_LISTS_NEW: 'settings/filter_lists/new_filter_list',
FILTER_LISTS_EDIT: 'settings/filter_lists/edit_filter_list',
ACCESS_DENIED: 'access-denied',
OVERVIEW: 'overview',
} as const;
7 changes: 2 additions & 5 deletions x-pack/plugins/ml/common/types/data_frame_analytics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

import Boom from 'boom';
import { EsErrorBody } from '../util/errors';
import { ANALYSIS_CONFIG_TYPE } from '../constants/data_frame_analytics';

export interface DeleteDataFrameAnalyticsWithIndexStatus {
success: boolean;
Expand Down Expand Up @@ -81,8 +82,4 @@ export interface DataFrameAnalyticsConfig {
allow_lazy_start?: boolean;
}

export enum ANALYSIS_CONFIG_TYPE {
OUTLIER_DETECTION = 'outlier_detection',
REGRESSION = 'regression',
CLASSIFICATION = 'classification',
}
export type DataFrameAnalysisConfigType = typeof ANALYSIS_CONFIG_TYPE[keyof typeof ANALYSIS_CONFIG_TYPE];
82 changes: 52 additions & 30 deletions x-pack/plugins/ml/common/types/ml_url_generator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,27 +5,21 @@
*/

import { RefreshInterval, TimeRange } from '../../../../../src/plugins/data/common/query';
import { JobId } from '../../../reporting/common/types';
import { JobId } from './anomaly_detection_jobs/job';
import { ML_PAGES } from '../constants/ml_url_generator';
import { DataFrameAnalysisConfigType } from './data_frame_analytics';

type OptionalPageState = object | undefined;

export type MLPageState<PageType, PageState> = PageState extends OptionalPageState
? { page: PageType; pageState?: PageState }
? { page: PageType; pageState?: PageState; excludeBasePath?: boolean }
: PageState extends object
? { page: PageType; pageState: PageState }
: { page: PageType };

export const ANALYSIS_CONFIG_TYPE = {
OUTLIER_DETECTION: 'outlier_detection',
REGRESSION: 'regression',
CLASSIFICATION: 'classification',
} as const;

type DataFrameAnalyticsType = typeof ANALYSIS_CONFIG_TYPE[keyof typeof ANALYSIS_CONFIG_TYPE];
? { page: PageType; pageState: PageState; excludeBasePath?: boolean }
: { page: PageType; excludeBasePath?: boolean };

export interface MlCommonGlobalState {
time?: TimeRange;
refreshInterval?: RefreshInterval;
}
export interface MlCommonAppState {
[key: string]: any;
Expand All @@ -42,16 +36,28 @@ export interface MlGenericUrlPageState extends MlIndexBasedSearchState {
[key: string]: any;
}

export interface MlGenericUrlState {
page:
| typeof ML_PAGES.DATA_VISUALIZER_INDEX_VIEWER
| typeof ML_PAGES.ANOMALY_DETECTION_CREATE_JOB_SELECT_TYPE;
pageState: MlGenericUrlPageState;
}
export type MlGenericUrlState = MLPageState<
| typeof ML_PAGES.DATA_VISUALIZER_INDEX_VIEWER
| typeof ML_PAGES.ANOMALY_DETECTION_CREATE_JOB
| typeof ML_PAGES.ANOMALY_DETECTION_CREATE_JOB_SELECT_TYPE
| typeof ML_PAGES.ANOMALY_DETECTION_CREATE_JOB_SELECT_INDEX
| typeof ML_PAGES.OVERVIEW
| typeof ML_PAGES.CALENDARS_MANAGE
| typeof ML_PAGES.CALENDARS_NEW
| typeof ML_PAGES.FILTER_LISTS_MANAGE
| typeof ML_PAGES.FILTER_LISTS_NEW
| typeof ML_PAGES.SETTINGS
| typeof ML_PAGES.ACCESS_DENIED
| typeof ML_PAGES.DATA_VISUALIZER
| typeof ML_PAGES.DATA_VISUALIZER_FILE
| typeof ML_PAGES.DATA_VISUALIZER_INDEX_SELECT,
MlGenericUrlPageState | undefined
>;

export interface AnomalyDetectionQueryState {
jobId?: JobId;
groupIds?: string[];
globalState?: MlCommonGlobalState;
}

export type AnomalyDetectionUrlState = MLPageState<
Expand Down Expand Up @@ -86,7 +92,7 @@ export interface ExplorerUrlPageState {
/**
* Job IDs
*/
jobIds: JobId[];
jobIds?: JobId[];
/**
* Optionally set the time range in the time picker.
*/
Expand All @@ -104,6 +110,7 @@ export interface ExplorerUrlPageState {
*/
mlExplorerSwimlane?: ExplorerAppState['mlExplorerSwimlane'];
mlExplorerFilter?: ExplorerAppState['mlExplorerFilter'];
globalState?: MlCommonGlobalState;
}

export type ExplorerUrlState = MLPageState<typeof ML_PAGES.ANOMALY_EXPLORER, ExplorerUrlPageState>;
Expand All @@ -122,6 +129,7 @@ export interface TimeSeriesExplorerAppState {
to?: string;
};
mlTimeSeriesExplorer?: {
forecastId?: string;
detectorIndex?: number;
entities?: Record<string, string>;
};
Expand All @@ -131,10 +139,12 @@ export interface TimeSeriesExplorerAppState {
export interface TimeSeriesExplorerPageState
extends Pick<TimeSeriesExplorerAppState, 'zoom' | 'query'>,
Pick<TimeSeriesExplorerGlobalState, 'refreshInterval'> {
jobIds: JobId[];
jobIds?: JobId[];
timeRange?: TimeRange;
detectorIndex?: number;
entities?: Record<string, string>;
forecastId?: string;
globalState?: MlCommonGlobalState;
}

export type TimeSeriesExplorerUrlState = MLPageState<
Expand All @@ -145,32 +155,43 @@ export type TimeSeriesExplorerUrlState = MLPageState<
export interface DataFrameAnalyticsQueryState {
jobId?: JobId | JobId[];
groupIds?: string[];
globalState?: MlCommonGlobalState;
}

export type DataFrameAnalyticsUrlState = MLPageState<
typeof ML_PAGES.DATA_FRAME_ANALYTICS_JOBS_MANAGE,
DataFrameAnalyticsQueryState | undefined
>;

export interface DataVisualizerUrlState {
page:
| typeof ML_PAGES.DATA_VISUALIZER
| typeof ML_PAGES.DATA_VISUALIZER_FILE
| typeof ML_PAGES.DATA_VISUALIZER_INDEX_SELECT;
}

export interface DataFrameAnalyticsExplorationQueryState {
ml: {
jobId: JobId;
analysisType: DataFrameAnalyticsType;
analysisType: DataFrameAnalysisConfigType;
};
}

export type DataFrameAnalyticsExplorationUrlState = MLPageState<
typeof ML_PAGES.DATA_FRAME_ANALYTICS_EXPLORATION,
{
jobId: JobId;
analysisType: DataFrameAnalyticsType;
analysisType: DataFrameAnalysisConfigType;
globalState?: MlCommonGlobalState;
}
>;

export type CalendarEditUrlState = MLPageState<
typeof ML_PAGES.CALENDARS_EDIT,
{
calendarId: string;
globalState?: MlCommonGlobalState;
}
>;

export type FilterEditUrlState = MLPageState<
typeof ML_PAGES.FILTER_LISTS_EDIT,
{
filterId: string;
globalState?: MlCommonGlobalState;
}
>;

Expand All @@ -183,5 +204,6 @@ export type MlUrlGeneratorState =
| TimeSeriesExplorerUrlState
| DataFrameAnalyticsUrlState
| DataFrameAnalyticsExplorationUrlState
| DataVisualizerUrlState
| CalendarEditUrlState
| FilterEditUrlState
| MlGenericUrlState;
2 changes: 1 addition & 1 deletion x-pack/plugins/ml/common/util/analytics_utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ import {
ClassificationAnalysis,
OutlierAnalysis,
RegressionAnalysis,
ANALYSIS_CONFIG_TYPE,
} from '../types/data_frame_analytics';
import { ANALYSIS_CONFIG_TYPE } from '../../common/constants/data_frame_analytics';

export const isOutlierAnalysis = (arg: any): arg is OutlierAnalysis => {
const keys = Object.keys(arg);
Expand Down
3 changes: 2 additions & 1 deletion x-pack/plugins/ml/kibana.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@
"embeddable",
"uiActions",
"kibanaLegacy",
"indexPatternManagement"
"indexPatternManagement",
"discover"
],
"optionalPlugins": [
"home",
Expand Down
11 changes: 11 additions & 0 deletions x-pack/plugins/ml/public/application/app.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import { MlSetupDependencies, MlStartDependencies } from '../plugin';
import { MlRouter } from './routing';
import { mlApiServicesProvider } from './services/ml_api_service';
import { HttpService } from './services/http_service';
import { ML_APP_URL_GENERATOR, ML_PAGES } from '../../common/constants/ml_url_generator';

export type MlDependencies = Omit<MlSetupDependencies, 'share' | 'indexPatternManagement'> &
MlStartDependencies;
Expand Down Expand Up @@ -50,11 +51,21 @@ export interface MlServicesContext {
export type MlGlobalServices = ReturnType<typeof getMlGlobalServices>;

const App: FC<AppProps> = ({ coreStart, deps, appMountParams }) => {
const redirectToMlAccessDeniedPage = async () => {
const accessDeniedPageUrl = await deps.share.urlGenerators
.getUrlGenerator(ML_APP_URL_GENERATOR)
.createUrl({
page: ML_PAGES.ACCESS_DENIED,
});
await coreStart.application.navigateToUrl(accessDeniedPageUrl);
};

const pageDeps = {
history: appMountParams.history,
indexPatterns: deps.data.indexPatterns,
config: coreStart.uiSettings!,
setBreadcrumbs: coreStart.chrome!.setBreadcrumbs,
redirectToMlAccessDeniedPage,
walterra marked this conversation as resolved.
Show resolved Hide resolved
};
const services = {
appName: 'ML',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,12 @@ export function checkGetManagementMlJobsResolver() {
});
}

export function checkGetJobsCapabilitiesResolver(): Promise<MlCapabilities> {
export function checkGetJobsCapabilitiesResolver(
redirectToMlAccessDeniedPage: () => Promise<void>
): Promise<MlCapabilities> {
return new Promise((resolve, reject) => {
getCapabilities()
.then(({ capabilities, isPlatinumOrTrialLicense }) => {
.then(async ({ capabilities, isPlatinumOrTrialLicense }) => {
Comment on lines +38 to +41
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is no need to wrap in Promise, just an async function with try...catch

_capabilities = capabilities;
// the minimum privilege for using ML with a platinum or trial license is being able to get the transforms list.
// all other functionality is controlled by the return capabilities object.
Expand All @@ -46,21 +48,23 @@ export function checkGetJobsCapabilitiesResolver(): Promise<MlCapabilities> {
if (_capabilities.canGetJobs || isPlatinumOrTrialLicense === false) {
return resolve(_capabilities);
} else {
window.location.href = '#/access-denied';
await redirectToMlAccessDeniedPage();
return reject();
}
})
.catch((e) => {
window.location.href = '#/access-denied';
.catch(async (e) => {
await redirectToMlAccessDeniedPage();
return reject();
});
});
}

export function checkCreateJobsCapabilitiesResolver(): Promise<MlCapabilities> {
export function checkCreateJobsCapabilitiesResolver(
redirectToJobsManagementPage: () => Promise<void>
): Promise<MlCapabilities> {
return new Promise((resolve, reject) => {
getCapabilities()
.then(({ capabilities, isPlatinumOrTrialLicense }) => {
.then(async ({ capabilities, isPlatinumOrTrialLicense }) => {
_capabilities = capabilities;
// if the license is basic (isPlatinumOrTrialLicense === false) then do not redirect,
// allow the promise to resolve as the separate license check will redirect then user to
Expand All @@ -69,34 +73,36 @@ export function checkCreateJobsCapabilitiesResolver(): Promise<MlCapabilities> {
return resolve(_capabilities);
} else {
// if the user has no permission to create a job,
// redirect them back to the Transforms Management page
window.location.href = '#/jobs';
// redirect them back to the Anomaly Detection Management page
await redirectToJobsManagementPage();
return reject();
}
})
.catch((e) => {
window.location.href = '#/jobs';
.catch(async (e) => {
await redirectToJobsManagementPage();
return reject();
});
});
}

export function checkFindFileStructurePrivilegeResolver(): Promise<MlCapabilities> {
export function checkFindFileStructurePrivilegeResolver(
redirectToMlAccessDeniedPage: () => Promise<void>
): Promise<MlCapabilities> {
return new Promise((resolve, reject) => {
getCapabilities()
.then(({ capabilities }) => {
.then(async ({ capabilities }) => {
_capabilities = capabilities;
// the minimum privilege for using ML with a basic license is being able to use the datavisualizer.
// all other functionality is controlled by the return _capabilities object
if (_capabilities.canFindFileStructure) {
return resolve(_capabilities);
} else {
window.location.href = '#/access-denied';
await redirectToMlAccessDeniedPage();
return reject();
}
})
.catch((e) => {
window.location.href = '#/access-denied';
.catch(async (e) => {
await redirectToMlAccessDeniedPage();
return reject();
});
});
Expand Down
Loading