@finos/legend-application-data-cube 0.2.4 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/lib/__lib__/LegendDataCubeNavigation.d.ts +9 -5
- package/lib/__lib__/LegendDataCubeNavigation.d.ts.map +1 -1
- package/lib/__lib__/LegendDataCubeNavigation.js +9 -5
- package/lib/__lib__/LegendDataCubeNavigation.js.map +1 -1
- package/lib/__lib__/LegendDataCubeUserData.d.ts +2 -2
- package/lib/__lib__/LegendDataCubeUserData.d.ts.map +1 -1
- package/lib/__lib__/LegendDataCubeUserData.js +2 -2
- package/lib/__lib__/LegendDataCubeUserData.js.map +1 -1
- package/lib/application/LegendDataCubeApplicationConfig.d.ts +4 -0
- package/lib/application/LegendDataCubeApplicationConfig.d.ts.map +1 -1
- package/lib/application/LegendDataCubeApplicationConfig.js +5 -0
- package/lib/application/LegendDataCubeApplicationConfig.js.map +1 -1
- package/lib/components/LegendDataCubeBlockingWindow.d.ts +29 -0
- package/lib/components/LegendDataCubeBlockingWindow.d.ts.map +1 -0
- package/lib/components/LegendDataCubeBlockingWindow.js +75 -0
- package/lib/components/LegendDataCubeBlockingWindow.js.map +1 -0
- package/lib/components/LegendDataCubeWebApplication.js +2 -2
- package/lib/components/LegendDataCubeWebApplication.js.map +1 -1
- package/lib/components/builder/LegendDataCubeBuilder.d.ts +20 -0
- package/lib/components/builder/LegendDataCubeBuilder.d.ts.map +1 -0
- package/lib/components/builder/LegendDataCubeBuilder.js +162 -0
- package/lib/components/builder/LegendDataCubeBuilder.js.map +1 -0
- package/lib/components/builder/LegendDataCubeBuilderStoreProvider.d.ts +19 -0
- package/lib/components/builder/LegendDataCubeBuilderStoreProvider.d.ts.map +1 -0
- package/lib/components/builder/LegendDataCubeBuilderStoreProvider.js +34 -0
- package/lib/components/builder/LegendDataCubeBuilderStoreProvider.js.map +1 -0
- package/lib/components/{query-builder/LegendDataCubeQuerySaver.d.ts → builder/LegendDataCubeCreator.d.ts} +2 -2
- package/lib/components/builder/LegendDataCubeCreator.d.ts.map +1 -0
- package/lib/components/{query-builder/LegendDataCubeNewQueryBuilder.js → builder/LegendDataCubeCreator.js} +10 -10
- package/lib/components/builder/LegendDataCubeCreator.js.map +1 -0
- package/lib/components/builder/LegendDataCubeDeleteConfirmation.d.ts +19 -0
- package/lib/components/builder/LegendDataCubeDeleteConfirmation.d.ts.map +1 -0
- package/lib/components/builder/LegendDataCubeDeleteConfirmation.js +43 -0
- package/lib/components/builder/LegendDataCubeDeleteConfirmation.js.map +1 -0
- package/lib/components/{query-builder/LegendDataCubeQueryLoader.d.ts → builder/LegendDataCubeLoader.d.ts} +2 -2
- package/lib/components/builder/LegendDataCubeLoader.d.ts.map +1 -0
- package/lib/components/builder/LegendDataCubeLoader.js +113 -0
- package/lib/components/builder/LegendDataCubeLoader.js.map +1 -0
- package/lib/components/{query-builder/LegendDataCubeNewQueryBuilder.d.ts → builder/LegendDataCubeSaver.d.ts} +2 -2
- package/lib/components/builder/LegendDataCubeSaver.d.ts.map +1 -0
- package/lib/components/builder/LegendDataCubeSaver.js +73 -0
- package/lib/components/builder/LegendDataCubeSaver.js.map +1 -0
- package/lib/components/{query-builder/LegendDataCubeQueryBuilder.d.ts → builder/LegendDataCubeSourceViewer.d.ts} +4 -2
- package/lib/components/builder/LegendDataCubeSourceViewer.d.ts.map +1 -0
- package/lib/components/builder/LegendDataCubeSourceViewer.js +46 -0
- package/lib/components/builder/LegendDataCubeSourceViewer.js.map +1 -0
- package/lib/components/{query-builder/source-builder → builder/source}/AdhocQueryDataCubeSourceBuilder.d.ts +1 -1
- package/lib/components/builder/source/AdhocQueryDataCubeSourceBuilder.d.ts.map +1 -0
- package/lib/components/builder/source/AdhocQueryDataCubeSourceBuilder.js.map +1 -0
- package/lib/components/{query-builder/source-builder → builder/source}/LegendQueryDataCubeSourceBuilder.d.ts +1 -1
- package/lib/components/builder/source/LegendQueryDataCubeSourceBuilder.d.ts.map +1 -0
- package/lib/components/{query-builder/source-builder → builder/source}/LegendQueryDataCubeSourceBuilder.js +13 -13
- package/lib/components/builder/source/LegendQueryDataCubeSourceBuilder.js.map +1 -0
- package/lib/index.css +1 -1
- package/lib/package.json +1 -1
- package/lib/stores/LegendDataCubeCacheManager.d.ts.map +1 -1
- package/lib/stores/LegendDataCubeCacheManager.js +11 -12
- package/lib/stores/LegendDataCubeCacheManager.js.map +1 -1
- package/lib/stores/LegendDataCubeDataCubeEngine.d.ts +1 -1
- package/lib/stores/LegendDataCubeDataCubeEngine.d.ts.map +1 -1
- package/lib/stores/LegendDataCubeDataCubeEngine.js +5 -11
- package/lib/stores/LegendDataCubeDataCubeEngine.js.map +1 -1
- package/lib/stores/builder/LegendDataCubeBuilderStore.d.ts +80 -0
- package/lib/stores/builder/LegendDataCubeBuilderStore.d.ts.map +1 -0
- package/lib/stores/builder/LegendDataCubeBuilderStore.js +353 -0
- package/lib/stores/builder/LegendDataCubeBuilderStore.js.map +1 -0
- package/lib/stores/{query-builder/LegendDataCubeNewQueryState.d.ts → builder/LegendDataCubeCreatorState.d.ts} +5 -5
- package/lib/stores/builder/LegendDataCubeCreatorState.d.ts.map +1 -0
- package/lib/stores/{query-builder/LegendDataCubeNewQueryState.js → builder/LegendDataCubeCreatorState.js} +17 -17
- package/lib/stores/builder/LegendDataCubeCreatorState.js.map +1 -0
- package/lib/stores/{query-builder/LegendDataCubeQueryLoaderState.d.ts → builder/LegendDataCubeLoaderState.d.ts} +20 -20
- package/lib/stores/builder/LegendDataCubeLoaderState.d.ts.map +1 -0
- package/lib/stores/builder/LegendDataCubeLoaderState.js +187 -0
- package/lib/stores/builder/LegendDataCubeLoaderState.js.map +1 -0
- package/lib/stores/builder/source/AdhocQueryDataCubeSourceBuilderState.d.ts.map +1 -0
- package/lib/stores/builder/source/AdhocQueryDataCubeSourceBuilderState.js.map +1 -0
- package/lib/stores/builder/source/LegendDataCubeSourceBuilderState.d.ts.map +1 -0
- package/lib/stores/{query-builder/source-builder → builder/source}/LegendDataCubeSourceBuilderState.js +1 -1
- package/lib/stores/builder/source/LegendDataCubeSourceBuilderState.js.map +1 -0
- package/lib/stores/builder/source/LegendQueryDataCubeSourceBuilderState.d.ts.map +1 -0
- package/lib/stores/builder/source/LegendQueryDataCubeSourceBuilderState.js.map +1 -0
- package/package.json +5 -5
- package/src/__lib__/LegendDataCubeNavigation.ts +15 -7
- package/src/__lib__/LegendDataCubeUserData.ts +2 -2
- package/src/application/LegendDataCubeApplicationConfig.ts +12 -0
- package/src/components/LegendDataCubeBlockingWindow.tsx +120 -0
- package/src/components/LegendDataCubeWebApplication.tsx +3 -3
- package/src/components/builder/LegendDataCubeBuilder.tsx +331 -0
- package/src/components/{query-builder/LegendDataCubeQueryBuilderStoreProvider.tsx → builder/LegendDataCubeBuilderStoreProvider.tsx} +19 -16
- package/src/components/{query-builder/LegendDataCubeNewQueryBuilder.tsx → builder/LegendDataCubeCreator.tsx} +9 -9
- package/src/components/builder/LegendDataCubeDeleteConfirmation.tsx +87 -0
- package/src/components/{query-builder/LegendDataCubeQueryLoader.tsx → builder/LegendDataCubeLoader.tsx} +122 -59
- package/src/components/builder/LegendDataCubeSaver.tsx +184 -0
- package/src/components/builder/LegendDataCubeSourceViewer.tsx +108 -0
- package/src/components/{query-builder/source-builder → builder/source}/AdhocQueryDataCubeSourceBuilder.tsx +1 -1
- package/src/components/{query-builder/source-builder → builder/source}/LegendQueryDataCubeSourceBuilder.tsx +16 -15
- package/src/stores/LegendDataCubeCacheManager.ts +11 -12
- package/src/stores/LegendDataCubeDataCubeEngine.ts +4 -14
- package/src/stores/builder/LegendDataCubeBuilderStore.tsx +516 -0
- package/src/stores/{query-builder/LegendDataCubeNewQueryState.tsx → builder/LegendDataCubeCreatorState.tsx} +23 -21
- package/src/stores/builder/LegendDataCubeLoaderState.tsx +248 -0
- package/src/stores/{query-builder/source-builder → builder/source}/LegendDataCubeSourceBuilderState.ts +1 -1
- package/tsconfig.json +16 -13
- package/lib/components/query-builder/LegendDataCubeNewQueryBuilder.d.ts.map +0 -1
- package/lib/components/query-builder/LegendDataCubeNewQueryBuilder.js.map +0 -1
- package/lib/components/query-builder/LegendDataCubeQueryBuilder.d.ts.map +0 -1
- package/lib/components/query-builder/LegendDataCubeQueryBuilder.js +0 -93
- package/lib/components/query-builder/LegendDataCubeQueryBuilder.js.map +0 -1
- package/lib/components/query-builder/LegendDataCubeQueryBuilderStoreProvider.d.ts +0 -19
- package/lib/components/query-builder/LegendDataCubeQueryBuilderStoreProvider.d.ts.map +0 -1
- package/lib/components/query-builder/LegendDataCubeQueryBuilderStoreProvider.js +0 -33
- package/lib/components/query-builder/LegendDataCubeQueryBuilderStoreProvider.js.map +0 -1
- package/lib/components/query-builder/LegendDataCubeQueryLoader.d.ts.map +0 -1
- package/lib/components/query-builder/LegendDataCubeQueryLoader.js +0 -97
- package/lib/components/query-builder/LegendDataCubeQueryLoader.js.map +0 -1
- package/lib/components/query-builder/LegendDataCubeQuerySaver.d.ts.map +0 -1
- package/lib/components/query-builder/LegendDataCubeQuerySaver.js +0 -51
- package/lib/components/query-builder/LegendDataCubeQuerySaver.js.map +0 -1
- package/lib/components/query-builder/source-builder/AdhocQueryDataCubeSourceBuilder.d.ts.map +0 -1
- package/lib/components/query-builder/source-builder/AdhocQueryDataCubeSourceBuilder.js.map +0 -1
- package/lib/components/query-builder/source-builder/LegendQueryDataCubeSourceBuilder.d.ts.map +0 -1
- package/lib/components/query-builder/source-builder/LegendQueryDataCubeSourceBuilder.js.map +0 -1
- package/lib/stores/query-builder/LegendDataCubeNewQueryState.d.ts.map +0 -1
- package/lib/stores/query-builder/LegendDataCubeNewQueryState.js.map +0 -1
- package/lib/stores/query-builder/LegendDataCubeQueryBuilderStore.d.ts +0 -58
- package/lib/stores/query-builder/LegendDataCubeQueryBuilderStore.d.ts.map +0 -1
- package/lib/stores/query-builder/LegendDataCubeQueryBuilderStore.js +0 -228
- package/lib/stores/query-builder/LegendDataCubeQueryBuilderStore.js.map +0 -1
- package/lib/stores/query-builder/LegendDataCubeQueryLoaderState.d.ts.map +0 -1
- package/lib/stores/query-builder/LegendDataCubeQueryLoaderState.js +0 -198
- package/lib/stores/query-builder/LegendDataCubeQueryLoaderState.js.map +0 -1
- package/lib/stores/query-builder/source-builder/AdhocQueryDataCubeSourceBuilderState.d.ts.map +0 -1
- package/lib/stores/query-builder/source-builder/AdhocQueryDataCubeSourceBuilderState.js.map +0 -1
- package/lib/stores/query-builder/source-builder/LegendDataCubeSourceBuilderState.d.ts.map +0 -1
- package/lib/stores/query-builder/source-builder/LegendDataCubeSourceBuilderState.js.map +0 -1
- package/lib/stores/query-builder/source-builder/LegendQueryDataCubeSourceBuilderState.d.ts.map +0 -1
- package/lib/stores/query-builder/source-builder/LegendQueryDataCubeSourceBuilderState.js.map +0 -1
- package/src/components/query-builder/LegendDataCubeQueryBuilder.tsx +0 -164
- package/src/components/query-builder/LegendDataCubeQuerySaver.tsx +0 -116
- package/src/stores/query-builder/LegendDataCubeQueryBuilderStore.tsx +0 -323
- package/src/stores/query-builder/LegendDataCubeQueryLoaderState.tsx +0 -260
- /package/lib/components/{query-builder/source-builder → builder/source}/AdhocQueryDataCubeSourceBuilder.js +0 -0
- /package/lib/stores/{query-builder/source-builder → builder/source}/AdhocQueryDataCubeSourceBuilderState.d.ts +0 -0
- /package/lib/stores/{query-builder/source-builder → builder/source}/AdhocQueryDataCubeSourceBuilderState.js +0 -0
- /package/lib/stores/{query-builder/source-builder → builder/source}/LegendDataCubeSourceBuilderState.d.ts +0 -0
- /package/lib/stores/{query-builder/source-builder → builder/source}/LegendQueryDataCubeSourceBuilderState.d.ts +0 -0
- /package/lib/stores/{query-builder/source-builder → builder/source}/LegendQueryDataCubeSourceBuilderState.js +0 -0
- /package/src/stores/{query-builder/source-builder → builder/source}/AdhocQueryDataCubeSourceBuilderState.ts +0 -0
- /package/src/stores/{query-builder/source-builder → builder/source}/LegendQueryDataCubeSourceBuilderState.ts +0 -0
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2020-present, Goldman Sachs
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import { APPLICATION_EVENT, DEFAULT_TYPEAHEAD_SEARCH_MINIMUM_SEARCH_LENGTH, } from '@finos/legend-application';
|
|
18
|
+
import { QuerySearchSpecification, QuerySearchSortBy, } from '@finos/legend-graph';
|
|
19
|
+
import { ActionState, assertErrorThrown, LogEvent } from '@finos/legend-shared';
|
|
20
|
+
import { makeObservable, observable, action } from 'mobx';
|
|
21
|
+
import { LegendDataCubeUserDataKey } from '../../__lib__/LegendDataCubeUserData.js';
|
|
22
|
+
import { DEFAULT_TOOL_PANEL_WINDOW_CONFIG, } from '@finos/legend-data-cube';
|
|
23
|
+
import { LegendDataCubeLoader } from '../../components/builder/LegendDataCubeLoader.js';
|
|
24
|
+
import { generateBuilderRoute } from '../../__lib__/LegendDataCubeNavigation.js';
|
|
25
|
+
export const DATA_CUBE_LOADER_TYPEAHEAD_SEARCH_LIMIT = 50;
|
|
26
|
+
export const DATA_CUBE_LOADER_DEFAULT_SEARCH_LIMIT = 10;
|
|
27
|
+
export var DataCubeSortByType;
|
|
28
|
+
(function (DataCubeSortByType) {
|
|
29
|
+
DataCubeSortByType["LAST_CREATED"] = "Last Created";
|
|
30
|
+
DataCubeSortByType["LAST_VIEWED"] = "Last Viewed";
|
|
31
|
+
DataCubeSortByType["LAST_UPDATED"] = "Last Updated";
|
|
32
|
+
})(DataCubeSortByType || (DataCubeSortByType = {}));
|
|
33
|
+
export class LegendDataCubeLoaderState {
|
|
34
|
+
_application;
|
|
35
|
+
_store;
|
|
36
|
+
_graphManager;
|
|
37
|
+
_alertService;
|
|
38
|
+
display;
|
|
39
|
+
searchState = ActionState.create();
|
|
40
|
+
finalizeState = ActionState.create();
|
|
41
|
+
searchResults = [];
|
|
42
|
+
selectedResult;
|
|
43
|
+
searchText = '';
|
|
44
|
+
showCurrentUserResultsOnly = false;
|
|
45
|
+
showingDefaultResults = true;
|
|
46
|
+
sortBy = DataCubeSortByType.LAST_VIEWED;
|
|
47
|
+
constructor(store) {
|
|
48
|
+
makeObservable(this, {
|
|
49
|
+
showingDefaultResults: observable,
|
|
50
|
+
setShowingDefaultResults: action,
|
|
51
|
+
searchText: observable,
|
|
52
|
+
setSearchText: action,
|
|
53
|
+
searchResults: observable,
|
|
54
|
+
setSearchResults: action,
|
|
55
|
+
selectedResult: observable,
|
|
56
|
+
setSelectedResult: action,
|
|
57
|
+
showCurrentUserResultsOnly: observable,
|
|
58
|
+
setShowCurrentUserResultsOnly: action,
|
|
59
|
+
sortBy: observable,
|
|
60
|
+
setSortBy: action,
|
|
61
|
+
});
|
|
62
|
+
this._application = store.application;
|
|
63
|
+
this._store = store;
|
|
64
|
+
this._graphManager = store.graphManager;
|
|
65
|
+
this._alertService = store.alertService;
|
|
66
|
+
this.display = store.layoutService.newDisplay('Load DataCube', () => _jsx(LegendDataCubeLoader, {}), {
|
|
67
|
+
...DEFAULT_TOOL_PANEL_WINDOW_CONFIG,
|
|
68
|
+
width: 500,
|
|
69
|
+
minWidth: 500,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
setSearchText(val) {
|
|
73
|
+
this.searchText = val;
|
|
74
|
+
}
|
|
75
|
+
setSearchResults(results) {
|
|
76
|
+
this.searchResults = results;
|
|
77
|
+
}
|
|
78
|
+
setSelectedResult(result) {
|
|
79
|
+
this.selectedResult = result;
|
|
80
|
+
}
|
|
81
|
+
setShowingDefaultResults(val) {
|
|
82
|
+
this.showingDefaultResults = val;
|
|
83
|
+
}
|
|
84
|
+
setShowCurrentUserResultsOnly(val) {
|
|
85
|
+
this.showCurrentUserResultsOnly = val;
|
|
86
|
+
}
|
|
87
|
+
setSortBy(val) {
|
|
88
|
+
this.sortBy = val;
|
|
89
|
+
}
|
|
90
|
+
getSearchSortBy(sortByValue) {
|
|
91
|
+
switch (sortByValue) {
|
|
92
|
+
case DataCubeSortByType.LAST_CREATED:
|
|
93
|
+
return QuerySearchSortBy.SORT_BY_CREATE;
|
|
94
|
+
case DataCubeSortByType.LAST_UPDATED:
|
|
95
|
+
return QuerySearchSortBy.SORT_BY_UPDATE;
|
|
96
|
+
case DataCubeSortByType.LAST_VIEWED:
|
|
97
|
+
return QuerySearchSortBy.SORT_BY_VIEW;
|
|
98
|
+
default:
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
canPerformAdvancedSearch(searchText) {
|
|
103
|
+
return !(searchText.length < DEFAULT_TYPEAHEAD_SEARCH_MINIMUM_SEARCH_LENGTH &&
|
|
104
|
+
!this.showCurrentUserResultsOnly);
|
|
105
|
+
}
|
|
106
|
+
async searchDataCubes(searchText) {
|
|
107
|
+
// for the initial search, i.e. no search config is specified, fetch the default entries if possible
|
|
108
|
+
if (!this.canPerformAdvancedSearch(searchText)) {
|
|
109
|
+
if (!searchText) {
|
|
110
|
+
this.setShowingDefaultResults(true);
|
|
111
|
+
this.searchState.inProgress();
|
|
112
|
+
this.setSearchResults([]);
|
|
113
|
+
let defaultResults = [];
|
|
114
|
+
try {
|
|
115
|
+
// first, try to fetch recently viewed entries
|
|
116
|
+
try {
|
|
117
|
+
const recentlyViewedDataCubeIDs = this._store.getRecentlyViewedDataCubes();
|
|
118
|
+
if (recentlyViewedDataCubeIDs.length) {
|
|
119
|
+
defaultResults = await this._graphManager.getDataCubes(recentlyViewedDataCubeIDs);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
assertErrorThrown(error);
|
|
124
|
+
// if there's an error fetching recently viewed entries, most likely because
|
|
125
|
+
// some entries have been removed, just remove them all from the cached user data
|
|
126
|
+
this._application.userDataService.persistValue(LegendDataCubeUserDataKey.RECENTLY_VIEWED_DATA_CUBES, undefined);
|
|
127
|
+
}
|
|
128
|
+
// if there's no recently viewed entries, just fetch entries of the current user
|
|
129
|
+
if (!defaultResults.length) {
|
|
130
|
+
const searchSpecification = new QuerySearchSpecification();
|
|
131
|
+
searchSpecification.limit = DATA_CUBE_LOADER_DEFAULT_SEARCH_LIMIT;
|
|
132
|
+
searchSpecification.showCurrentUserQueriesOnly = true;
|
|
133
|
+
defaultResults =
|
|
134
|
+
await this._graphManager.searchDataCubes(searchSpecification);
|
|
135
|
+
}
|
|
136
|
+
this.setSearchResults(defaultResults);
|
|
137
|
+
this.searchState.pass();
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
assertErrorThrown(error);
|
|
141
|
+
this._application.logService.error(LogEvent.create(APPLICATION_EVENT.GENERIC_FAILURE), error);
|
|
142
|
+
this.searchState.fail();
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
this.setShowingDefaultResults(false);
|
|
148
|
+
this.searchState.inProgress();
|
|
149
|
+
try {
|
|
150
|
+
const searchSpecification = QuerySearchSpecification.createDefault(searchText);
|
|
151
|
+
searchSpecification.limit = DATA_CUBE_LOADER_TYPEAHEAD_SEARCH_LIMIT + 1;
|
|
152
|
+
searchSpecification.showCurrentUserQueriesOnly =
|
|
153
|
+
this.showCurrentUserResultsOnly;
|
|
154
|
+
const searchSortBy = this.getSearchSortBy(this.sortBy);
|
|
155
|
+
if (searchSortBy) {
|
|
156
|
+
searchSpecification.sortByOption = searchSortBy;
|
|
157
|
+
}
|
|
158
|
+
this.setSearchResults(await this._graphManager.searchDataCubes(searchSpecification));
|
|
159
|
+
// if sorting is not configured, sort by name
|
|
160
|
+
if (!searchSortBy) {
|
|
161
|
+
this.setSearchResults(this.searchResults.toSorted((a, b) => a.name.localeCompare(b.name)));
|
|
162
|
+
}
|
|
163
|
+
this.searchState.pass();
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
assertErrorThrown(error);
|
|
167
|
+
this._alertService.alertError(error, {
|
|
168
|
+
message: `DataCube Search Failure: ${error.message}`,
|
|
169
|
+
});
|
|
170
|
+
this.searchState.fail();
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
async finalize() {
|
|
174
|
+
if (!this.selectedResult) {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
this.finalizeState.inProgress();
|
|
178
|
+
// just simply change the route here and the new DataCube ID will get picked up
|
|
179
|
+
// and handled by the builder to load the new DataCube.
|
|
180
|
+
this._application.navigationService.navigator.updateCurrentLocation(generateBuilderRoute(this.selectedResult.id));
|
|
181
|
+
// reset
|
|
182
|
+
this.setSelectedResult(undefined);
|
|
183
|
+
this.display.close();
|
|
184
|
+
this.finalizeState.pass();
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=LegendDataCubeLoaderState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LegendDataCubeLoaderState.js","sourceRoot":"","sources":["../../../src/stores/builder/LegendDataCubeLoaderState.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdhocQueryDataCubeSourceBuilderState.d.ts","sourceRoot":"","sources":["../../../../src/stores/builder/source/AdhocQueryDataCubeSourceBuilderState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EACL,gCAAgC,EAChC,+BAA+B,EAChC,MAAM,uCAAuC,CAAC;AAE/C,qBAAa,oCAAqC,SAAQ,gCAAgC;IACxF,IAAa,KAAK,IAAI,+BAA+B,CAEpD;IAED,IAAa,OAAO,IAAI,OAAO,CAE9B;IAEQ,kBAAkB,IAAI,OAAO,CAAC,WAAW,CAAC;CAGpD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdhocQueryDataCubeSourceBuilderState.js","sourceRoot":"","sources":["../../../../src/stores/builder/source/AdhocQueryDataCubeSourceBuilderState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAoB,MAAM,sBAAsB,CAAC;AACxD,OAAO,EACL,gCAAgC,EAChC,+BAA+B,GAChC,MAAM,uCAAuC,CAAC;AAE/C,MAAM,OAAO,oCAAqC,SAAQ,gCAAgC;IACxF,IAAa,KAAK;QAChB,OAAO,+BAA+B,CAAC,WAAW,CAAC;IACrD,CAAC;IAED,IAAa,OAAO;QAClB,OAAO,KAAK,CAAC;IACf,CAAC;IAEQ,kBAAkB;QACzB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LegendDataCubeSourceBuilderState.d.ts","sourceRoot":"","sources":["../../../../src/stores/builder/source/LegendDataCubeSourceBuilderState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AACvF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAC1F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAErE,oBAAY,+BAA+B;IACzC,YAAY,iBAAiB;IAC7B,WAAW,iBAAiB;CAC7B;AAED,8BAAsB,gCAAgC;IACpD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,8BAA8B,CAAC;IAChE,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,4BAA4B,CAAC;gBAGvD,WAAW,EAAE,8BAA8B,EAC3C,MAAM,EAAE,4BAA4B;IAMtC,QAAQ,KAAK,KAAK,IAAI,+BAA+B,CAAC;IACtD,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC;IAChC,QAAQ,CAAC,kBAAkB,IAAI,OAAO,CAAC,WAAW,CAAC;IAGnD,qBAAqB,CAAC,aAAa,EAAE,qBAAqB;CAG3D"}
|
|
@@ -26,7 +26,7 @@ export class LegendDataCubeSourceBuilderState {
|
|
|
26
26
|
this._application = application;
|
|
27
27
|
this._engine = engine;
|
|
28
28
|
}
|
|
29
|
-
/* Modifies the configuration of the finalized DataCube
|
|
29
|
+
/* Modifies the configuration of the finalized DataCube based on the source builder */
|
|
30
30
|
finalizeConfiguration(configuration) {
|
|
31
31
|
// do nothing
|
|
32
32
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LegendDataCubeSourceBuilderState.js","sourceRoot":"","sources":["../../../../src/stores/builder/source/LegendDataCubeSourceBuilderState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAoB,MAAM,sBAAsB,CAAC;AAKxD,MAAM,CAAN,IAAY,+BAGX;AAHD,WAAY,+BAA+B;IACzC,gEAA6B,CAAA;IAC7B,+DAA4B,CAAA;AAC9B,CAAC,EAHW,+BAA+B,KAA/B,+BAA+B,QAG1C;AAED,MAAM,OAAgB,gCAAgC;IACjC,YAAY,CAAiC;IAC7C,OAAO,CAA+B;IAEzD,YACE,WAA2C,EAC3C,MAAoC;QAEpC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAMD,sFAAsF;IACtF,qBAAqB,CAAC,aAAoC;QACxD,aAAa;IACf,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LegendQueryDataCubeSourceBuilderState.d.ts","sourceRoot":"","sources":["../../../../src/stores/builder/source/LegendQueryDataCubeSourceBuilderState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EAExB,KAAK,UAAU,EAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,gBAAgB,EACjB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,gCAAgC,EAChC,+BAA+B,EAChC,MAAM,uCAAuC,CAAC;AAG/C,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAC1F,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AACvF,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,qCAAsC,SAAQ,gCAAgC;IACzF,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAwB;IAC5D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsB;IACpD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuB;IAErD,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;IAEvC,KAAK,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;gBAG7B,WAAW,EAAE,8BAA8B,EAC3C,MAAM,EAAE,4BAA4B,EACpC,kBAAkB,EAAE,qBAAqB,EACzC,YAAY,EAAE,mBAAmB,EACjC,YAAY,EAAE,oBAAoB;IAqC9B,QAAQ,CAAC,UAAU,EAAE,UAAU;IA0BrC,UAAU,IAAI,IAAI;IAKlB,IAAa,KAAK,oCAEjB;IAED,IAAa,OAAO,IAAI,OAAO,CAE9B;IAEc,kBAAkB;IASxB,qBAAqB,CAAC,aAAa,EAAE,qBAAqB;CAKpE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LegendQueryDataCubeSourceBuilderState.js","sourceRoot":"","sources":["../../../../src/stores/builder/source/LegendQueryDataCubeSourceBuilderState.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@finos/legend-application-data-cube",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.6",
|
|
4
4
|
"description": "Legend DataCube application core",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"legend",
|
|
@@ -45,10 +45,10 @@
|
|
|
45
45
|
"@duckdb/duckdb-wasm": "1.29.0",
|
|
46
46
|
"@finos/legend-application": "16.0.24",
|
|
47
47
|
"@finos/legend-art": "7.1.81",
|
|
48
|
-
"@finos/legend-code-editor": "2.0.
|
|
49
|
-
"@finos/legend-data-cube": "0.1.
|
|
50
|
-
"@finos/legend-graph": "32.1.
|
|
51
|
-
"@finos/legend-query-builder": "4.16.
|
|
48
|
+
"@finos/legend-code-editor": "2.0.45",
|
|
49
|
+
"@finos/legend-data-cube": "0.1.5",
|
|
50
|
+
"@finos/legend-graph": "32.1.3",
|
|
51
|
+
"@finos/legend-query-builder": "4.16.5",
|
|
52
52
|
"@finos/legend-server-depot": "6.0.80",
|
|
53
53
|
"@finos/legend-shared": "11.0.3",
|
|
54
54
|
"@finos/legend-storage": "3.0.122",
|
|
@@ -17,20 +17,28 @@
|
|
|
17
17
|
import { generatePath } from '@finos/legend-application/browser';
|
|
18
18
|
|
|
19
19
|
export enum LEGEND_DATA_CUBE_ROUTE_PATTERN_TOKEN {
|
|
20
|
-
|
|
20
|
+
DATA_CUBE_ID = 'dataCubeId',
|
|
21
21
|
SOURCE_DATA = 'sourceData',
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
export const LEGEND_DATA_CUBE_ROUTE_PATTERN = Object.freeze({
|
|
25
|
-
|
|
25
|
+
BUILDER: `/:${LEGEND_DATA_CUBE_ROUTE_PATTERN_TOKEN.DATA_CUBE_ID}?`,
|
|
26
26
|
});
|
|
27
27
|
|
|
28
|
-
export type
|
|
29
|
-
[LEGEND_DATA_CUBE_ROUTE_PATTERN_TOKEN.
|
|
28
|
+
export type LegendDataCubeBuilderPathParams = {
|
|
29
|
+
[LEGEND_DATA_CUBE_ROUTE_PATTERN_TOKEN.DATA_CUBE_ID]: string;
|
|
30
30
|
};
|
|
31
31
|
|
|
32
|
-
export const
|
|
33
|
-
return generatePath(LEGEND_DATA_CUBE_ROUTE_PATTERN.
|
|
34
|
-
[LEGEND_DATA_CUBE_ROUTE_PATTERN_TOKEN.
|
|
32
|
+
export const generateBuilderRoute = (dataCubeId: string | null): string => {
|
|
33
|
+
return generatePath(LEGEND_DATA_CUBE_ROUTE_PATTERN.BUILDER, {
|
|
34
|
+
[LEGEND_DATA_CUBE_ROUTE_PATTERN_TOKEN.DATA_CUBE_ID]: dataCubeId,
|
|
35
35
|
});
|
|
36
36
|
};
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* @external_application_navigation This depends on Legend Query routing and is hardcoded so it's potentially brittle
|
|
40
|
+
*/
|
|
41
|
+
export const EXTERNAL_APPLICATION_NAVIGATION__generateQueryViewUrl = (
|
|
42
|
+
queryApplicationUrl: string,
|
|
43
|
+
queryId: string,
|
|
44
|
+
) => `${queryApplicationUrl}/edit/${queryId}`;
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
export const
|
|
17
|
+
export const RECENTLY_VIEWED_DATA_CUBES_LIMIT = 10;
|
|
18
18
|
|
|
19
19
|
export enum LegendDataCubeUserDataKey {
|
|
20
|
-
|
|
20
|
+
RECENTLY_VIEWED_DATA_CUBES = 'recentlyViewedDataCubes',
|
|
21
21
|
}
|
|
@@ -30,12 +30,16 @@ export interface LegendDataCubeApplicationConfigurationData
|
|
|
30
30
|
url: string;
|
|
31
31
|
};
|
|
32
32
|
engine: { url: string; queryUrl: string };
|
|
33
|
+
query?: {
|
|
34
|
+
url: string;
|
|
35
|
+
};
|
|
33
36
|
}
|
|
34
37
|
|
|
35
38
|
export class LegendDataCubeApplicationConfig extends LegendApplicationConfig {
|
|
36
39
|
readonly engineServerUrl: string;
|
|
37
40
|
readonly depotServerUrl: string;
|
|
38
41
|
readonly engineQueryServerUrl?: string | undefined;
|
|
42
|
+
readonly queryApplicationUrl?: string | undefined;
|
|
39
43
|
|
|
40
44
|
constructor(
|
|
41
45
|
input: LegendApplicationConfigurationInput<LegendDataCubeApplicationConfigurationData>,
|
|
@@ -58,6 +62,7 @@ export class LegendDataCubeApplicationConfig extends LegendApplicationConfig {
|
|
|
58
62
|
input.configData.engine.queryUrl,
|
|
59
63
|
)
|
|
60
64
|
: undefined;
|
|
65
|
+
|
|
61
66
|
// depot
|
|
62
67
|
assertNonNullable(
|
|
63
68
|
input.configData.depot,
|
|
@@ -69,6 +74,13 @@ export class LegendDataCubeApplicationConfig extends LegendApplicationConfig {
|
|
|
69
74
|
`Can't configure application: 'depot.url' field is missing or empty`,
|
|
70
75
|
),
|
|
71
76
|
);
|
|
77
|
+
|
|
78
|
+
// query
|
|
79
|
+
if (input.configData.query?.url) {
|
|
80
|
+
this.queryApplicationUrl = LegendApplicationConfig.resolveAbsoluteUrl(
|
|
81
|
+
input.configData.query.url,
|
|
82
|
+
);
|
|
83
|
+
}
|
|
72
84
|
}
|
|
73
85
|
getDefaultApplicationStorageKey(): string {
|
|
74
86
|
return 'legend-data-cube';
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2020-present, Goldman Sachs
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { DataCubeIcon, Dialog } from '@finos/legend-art';
|
|
18
|
+
import {
|
|
19
|
+
DEFAULT_TOOL_PANEL_WINDOW_CONFIG,
|
|
20
|
+
LayoutConfiguration,
|
|
21
|
+
type WindowConfiguration,
|
|
22
|
+
} from '@finos/legend-data-cube';
|
|
23
|
+
import { action, makeObservable, observable } from 'mobx';
|
|
24
|
+
import { observer } from 'mobx-react-lite';
|
|
25
|
+
import { useRef } from 'react';
|
|
26
|
+
|
|
27
|
+
export const LegendDataCubeBlockingWindow = observer(
|
|
28
|
+
(props: { windowState: LegendDataCubeBlockingWindowState }) => {
|
|
29
|
+
const { windowState } = props;
|
|
30
|
+
const ref = useRef<HTMLDivElement>(null);
|
|
31
|
+
|
|
32
|
+
// set the width and height of the dialog to make sure content overflow works properly
|
|
33
|
+
const handleEnter = () => {
|
|
34
|
+
if (ref.current?.parentElement) {
|
|
35
|
+
const { width, height } =
|
|
36
|
+
ref.current.parentElement.getBoundingClientRect();
|
|
37
|
+
ref.current.style.width = `${windowState.configuration.window.width ?? width}px`;
|
|
38
|
+
ref.current.style.height = `${windowState.configuration.window.height ?? height}px`;
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
if (!windowState.isOpen) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
return (
|
|
46
|
+
<Dialog
|
|
47
|
+
open={windowState.isOpen}
|
|
48
|
+
onClose={() => windowState.close()}
|
|
49
|
+
slotProps={{
|
|
50
|
+
transition: {
|
|
51
|
+
onEnter: handleEnter,
|
|
52
|
+
},
|
|
53
|
+
paper: {
|
|
54
|
+
elevation: 0,
|
|
55
|
+
},
|
|
56
|
+
backdrop: {
|
|
57
|
+
classes: {
|
|
58
|
+
root: 'bg-black !opacity-25',
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
}}
|
|
62
|
+
classes={{
|
|
63
|
+
root: 'data-cube h-full w-full flex items-center justify-center',
|
|
64
|
+
paper: 'min-h-10 min-w-40 rounded-none shadow-md',
|
|
65
|
+
}}
|
|
66
|
+
>
|
|
67
|
+
<div
|
|
68
|
+
className="border border-neutral-400 bg-neutral-200 shadow-xl"
|
|
69
|
+
ref={ref}
|
|
70
|
+
>
|
|
71
|
+
<div className="flex h-6 w-full select-none items-center justify-between border-b border-b-neutral-300 bg-white">
|
|
72
|
+
<div className="px-2">{windowState.configuration.title}</div>
|
|
73
|
+
<button
|
|
74
|
+
className="flex h-[23px] w-6 items-center justify-center hover:bg-red-500 hover:text-white"
|
|
75
|
+
onClick={() => windowState.close()}
|
|
76
|
+
>
|
|
77
|
+
<DataCubeIcon.X />
|
|
78
|
+
</button>
|
|
79
|
+
</div>
|
|
80
|
+
<div className="h-[calc(100%_-_24px)] w-full overflow-auto">
|
|
81
|
+
{windowState.configuration.contentRenderer(
|
|
82
|
+
windowState.configuration,
|
|
83
|
+
)}
|
|
84
|
+
</div>
|
|
85
|
+
</div>
|
|
86
|
+
</Dialog>
|
|
87
|
+
);
|
|
88
|
+
},
|
|
89
|
+
);
|
|
90
|
+
|
|
91
|
+
export class LegendDataCubeBlockingWindowState {
|
|
92
|
+
isOpen = false;
|
|
93
|
+
readonly configuration: LayoutConfiguration;
|
|
94
|
+
|
|
95
|
+
constructor(
|
|
96
|
+
title: string,
|
|
97
|
+
contentRenderer: (config: LayoutConfiguration) => React.ReactNode,
|
|
98
|
+
windowConfiguration?: WindowConfiguration | undefined,
|
|
99
|
+
) {
|
|
100
|
+
makeObservable(this, {
|
|
101
|
+
isOpen: observable,
|
|
102
|
+
open: action,
|
|
103
|
+
close: action,
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
this.configuration = new LayoutConfiguration(title, contentRenderer);
|
|
107
|
+
this.configuration.window = DEFAULT_TOOL_PANEL_WINDOW_CONFIG;
|
|
108
|
+
if (windowConfiguration) {
|
|
109
|
+
this.configuration.window = windowConfiguration;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
open() {
|
|
114
|
+
this.isOpen = true;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
close() {
|
|
118
|
+
this.isOpen = false;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
useLegendDataCubeBaseStore,
|
|
22
22
|
} from './LegendDataCubeFrameworkProvider.js';
|
|
23
23
|
import { observer } from 'mobx-react-lite';
|
|
24
|
-
import {
|
|
24
|
+
import { LegendDataCubeBuilder } from './builder/LegendDataCubeBuilder.js';
|
|
25
25
|
import { LEGEND_DATA_CUBE_ROUTE_PATTERN } from '../__lib__/LegendDataCubeNavigation.js';
|
|
26
26
|
import { useEffect } from 'react';
|
|
27
27
|
|
|
@@ -39,8 +39,8 @@ const LegendDataCubeWebApplicationRouter = observer(() => {
|
|
|
39
39
|
{store.initializeState.hasSucceeded && (
|
|
40
40
|
<Routes>
|
|
41
41
|
<Route
|
|
42
|
-
path={LEGEND_DATA_CUBE_ROUTE_PATTERN.
|
|
43
|
-
element={<
|
|
42
|
+
path={LEGEND_DATA_CUBE_ROUTE_PATTERN.BUILDER}
|
|
43
|
+
element={<LegendDataCubeBuilder />}
|
|
44
44
|
/>
|
|
45
45
|
</Routes>
|
|
46
46
|
)}
|