@finos/legend-application-studio 22.3.8 → 22.4.0
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/lib/components/editor/edit-panel/project-configuration-editor/ProjectDependencyEditor.d.ts.map +1 -1
- package/lib/components/editor/edit-panel/project-configuration-editor/ProjectDependencyEditor.js +2 -2
- package/lib/components/editor/edit-panel/project-configuration-editor/ProjectDependencyEditor.js.map +1 -1
- package/lib/components/editor/side-bar/Explorer.d.ts.map +1 -1
- package/lib/components/editor/side-bar/Explorer.js +46 -29
- package/lib/components/editor/side-bar/Explorer.js.map +1 -1
- package/lib/components/editor/side-bar/ProjectDependantsEditor.d.ts +20 -0
- package/lib/components/editor/side-bar/ProjectDependantsEditor.d.ts.map +1 -0
- package/lib/components/editor/side-bar/ProjectDependantsEditor.js +62 -0
- package/lib/components/editor/side-bar/ProjectDependantsEditor.js.map +1 -0
- package/lib/components/editor/side-bar/ProjectOverview.d.ts.map +1 -1
- package/lib/components/editor/side-bar/ProjectOverview.js +4 -0
- package/lib/components/editor/side-bar/ProjectOverview.js.map +1 -1
- package/lib/index.css +2 -2
- package/lib/index.css.map +1 -1
- package/lib/package.json +1 -1
- package/lib/stores/ExplorerTreeState.d.ts.map +1 -1
- package/lib/stores/ExplorerTreeState.js +1 -0
- package/lib/stores/ExplorerTreeState.js.map +1 -1
- package/lib/stores/LegendStudioRouter.d.ts +2 -0
- package/lib/stores/LegendStudioRouter.d.ts.map +1 -1
- package/lib/stores/LegendStudioRouter.js +22 -0
- package/lib/stores/LegendStudioRouter.js.map +1 -1
- package/lib/stores/editor-state/element-editor-state/service/ServiceExecutionState.js +1 -1
- package/lib/stores/editor-state/element-editor-state/service/ServiceExecutionState.js.map +1 -1
- package/lib/stores/sidebar-state/ProjectDependantEditorState.d.ts +31 -0
- package/lib/stores/sidebar-state/ProjectDependantEditorState.d.ts.map +1 -0
- package/lib/stores/sidebar-state/ProjectDependantEditorState.js +42 -0
- package/lib/stores/sidebar-state/ProjectDependantEditorState.js.map +1 -0
- package/lib/stores/sidebar-state/ProjectOverviewState.d.ts +4 -0
- package/lib/stores/sidebar-state/ProjectOverviewState.d.ts.map +1 -1
- package/lib/stores/sidebar-state/ProjectOverviewState.js +48 -0
- package/lib/stores/sidebar-state/ProjectOverviewState.js.map +1 -1
- package/package.json +5 -5
- package/src/components/editor/edit-panel/project-configuration-editor/ProjectDependencyEditor.tsx +2 -6
- package/src/components/editor/side-bar/Explorer.tsx +69 -41
- package/src/components/editor/side-bar/ProjectDependantsEditor.tsx +223 -0
- package/src/components/editor/side-bar/ProjectOverview.tsx +4 -0
- package/src/stores/ExplorerTreeState.ts +1 -0
- package/src/stores/LegendStudioRouter.ts +42 -0
- package/src/stores/editor-state/element-editor-state/service/ServiceExecutionState.ts +1 -1
- package/src/stores/sidebar-state/ProjectDependantEditorState.ts +50 -0
- package/src/stores/sidebar-state/ProjectOverviewState.ts +88 -0
- package/tsconfig.json +2 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectDependantEditorState.js","sourceRoot":"","sources":["../../../src/stores/sidebar-state/ProjectDependantEditorState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAKnD,MAAM,OAAO,2BAA2B;IACtC,WAAW,CAAuB;IAClC,WAAW,CAAc;IACzB,UAAU,CAAU;IACpB,UAAU,CAAiD;IAC3D,0BAA0B,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;IAElD,YAAY,WAAiC,EAAE,WAAwB;QACrE,cAAc,CAAC,IAAI,EAAE;YACnB,UAAU,EAAE,UAAU;YACtB,0BAA0B,EAAE,UAAU;YACtC,aAAa,EAAE,MAAM;SACtB,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,cAAc,CAAC;IAC/C,CAAC;IAED,IAAI,oBAAoB;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,+BAA+B;aACpD,oBAAoB,CAAC;IAC1B,CAAC;IAED,aAAa,CAAC,KAAqD;QACjE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -17,9 +17,11 @@ import type { EditorStore } from '../EditorStore.js';
|
|
|
17
17
|
import type { EditorSDLCState } from '../EditorSDLCState.js';
|
|
18
18
|
import { type GeneratorFn } from '@finos/legend-shared';
|
|
19
19
|
import { type NewVersionType, CreateVersionCommand, Revision, Version, Workspace, Review } from '@finos/legend-server-sdlc';
|
|
20
|
+
import { ProjectDependantEditorState } from './ProjectDependantEditorState.js';
|
|
20
21
|
export declare enum PROJECT_OVERVIEW_ACTIVITY_MODE {
|
|
21
22
|
RELEASE = "RELEASE",
|
|
22
23
|
OVERVIEW = "OVERVIEW",
|
|
24
|
+
DEPENDANTS = "DEPENDANTS",
|
|
23
25
|
VERSIONS = "VERSIONS",
|
|
24
26
|
WORKSPACES = "WORKSPACES"
|
|
25
27
|
}
|
|
@@ -32,6 +34,7 @@ export declare class ProjectOverviewState {
|
|
|
32
34
|
latestProjectVersion?: Version | null;
|
|
33
35
|
currentProjectRevision?: Revision | undefined;
|
|
34
36
|
projectWorkspaces: Workspace[];
|
|
37
|
+
projectDependantEditorState: ProjectDependantEditorState;
|
|
35
38
|
isCreatingVersion: boolean;
|
|
36
39
|
isFetchingProjectWorkspaces: boolean;
|
|
37
40
|
isDeletingWorkspace: boolean;
|
|
@@ -43,6 +46,7 @@ export declare class ProjectOverviewState {
|
|
|
43
46
|
fetchProjectWorkspaces(): GeneratorFn<void>;
|
|
44
47
|
deleteWorkspace(workspace: Workspace): GeneratorFn<void>;
|
|
45
48
|
updateProject(name: string, description: string, tags: string[]): GeneratorFn<void>;
|
|
49
|
+
fetchDependants(): GeneratorFn<void>;
|
|
46
50
|
fetchLatestProjectVersion(): GeneratorFn<void>;
|
|
47
51
|
createVersion(versionType: NewVersionType): GeneratorFn<void>;
|
|
48
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectOverviewState.d.ts","sourceRoot":"","sources":["../../../src/stores/sidebar-state/ProjectOverviewState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,EACL,KAAK,WAAW,EAKjB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,KAAK,cAAc,EACnB,oBAAoB,EAEpB,QAAQ,EAER,OAAO,EACP,SAAS,EACT,MAAM,EAEP,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"ProjectOverviewState.d.ts","sourceRoot":"","sources":["../../../src/stores/sidebar-state/ProjectOverviewState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,EACL,KAAK,WAAW,EAKjB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,KAAK,cAAc,EACnB,oBAAoB,EAEpB,QAAQ,EAER,OAAO,EACP,SAAS,EACT,MAAM,EAEP,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAO/E,oBAAY,8BAA8B;IACxC,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,UAAU,eAAe;IACzB,QAAQ,aAAa;IACrB,UAAU,eAAe;CAC1B;AAED,qBAAa,oBAAoB;IAC/B,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,eAAe,CAAC;IAC3B,YAAY,iCAA2C;IACvD,cAAc,EAAE,oBAAoB,CAAC;IACrC,wDAAwD,EAAE,MAAM,EAAE,CAAM;IACxE,oBAAoB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACtC,sBAAsB,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC9C,iBAAiB,EAAE,SAAS,EAAE,CAAM;IACpC,2BAA2B,EAAE,2BAA2B,CAAC;IAEzD,iBAAiB,UAAS;IAC1B,2BAA2B,UAAS;IACpC,mBAAmB,UAAS;IAC5B,iBAAiB,UAAS;IAC1B,uBAAuB,UAAS;IAChC,gCAAgC,UAAS;gBAE7B,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe;IAiChE,eAAe,CAAC,YAAY,EAAE,8BAA8B,GAAG,IAAI;IAIlE,sBAAsB,IAAI,WAAW,CAAC,IAAI,CAAC;IAmB3C,eAAe,CAAC,SAAS,EAAE,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC;IAwCxD,aAAa,CACZ,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EAAE,GACb,WAAW,CAAC,IAAI,CAAC;IA2BnB,eAAe,IAAI,WAAW,CAAC,IAAI,CAAC;IA0EpC,yBAAyB,IAAI,WAAW,CAAC,IAAI,CAAC;IAyF9C,aAAa,CAAC,WAAW,EAAE,cAAc,GAAG,WAAW,CAAC,IAAI,CAAC;CA6B/D"}
|
|
@@ -18,10 +18,14 @@ import { assertErrorThrown, LogEvent, getNullableFirstElement, } from '@finos/le
|
|
|
18
18
|
import { generateSetupRoute } from '../LegendStudioRouter.js';
|
|
19
19
|
import { CreateVersionCommand, ReviewState, Revision, RevisionAlias, Version, Workspace, Review, areWorkspacesEquivalent, } from '@finos/legend-server-sdlc';
|
|
20
20
|
import { LEGEND_STUDIO_APP_EVENT } from '../LegendStudioAppEvent.js';
|
|
21
|
+
import { ProjectDependantEditorState } from './ProjectDependantEditorState.js';
|
|
22
|
+
import { ProjectData, ProjectVersionPlatformDependency, } from '@finos/legend-server-depot';
|
|
23
|
+
import { compareSemVerVersions } from '@finos/legend-storage';
|
|
21
24
|
export var PROJECT_OVERVIEW_ACTIVITY_MODE;
|
|
22
25
|
(function (PROJECT_OVERVIEW_ACTIVITY_MODE) {
|
|
23
26
|
PROJECT_OVERVIEW_ACTIVITY_MODE["RELEASE"] = "RELEASE";
|
|
24
27
|
PROJECT_OVERVIEW_ACTIVITY_MODE["OVERVIEW"] = "OVERVIEW";
|
|
28
|
+
PROJECT_OVERVIEW_ACTIVITY_MODE["DEPENDANTS"] = "DEPENDANTS";
|
|
25
29
|
PROJECT_OVERVIEW_ACTIVITY_MODE["VERSIONS"] = "VERSIONS";
|
|
26
30
|
PROJECT_OVERVIEW_ACTIVITY_MODE["WORKSPACES"] = "WORKSPACES";
|
|
27
31
|
})(PROJECT_OVERVIEW_ACTIVITY_MODE = PROJECT_OVERVIEW_ACTIVITY_MODE || (PROJECT_OVERVIEW_ACTIVITY_MODE = {}));
|
|
@@ -34,6 +38,7 @@ export class ProjectOverviewState {
|
|
|
34
38
|
latestProjectVersion; // `undefined` if API is not yet called, `null` if fetched but no version exists
|
|
35
39
|
currentProjectRevision;
|
|
36
40
|
projectWorkspaces = [];
|
|
41
|
+
projectDependantEditorState;
|
|
37
42
|
isCreatingVersion = false;
|
|
38
43
|
isFetchingProjectWorkspaces = false;
|
|
39
44
|
isDeletingWorkspace = false;
|
|
@@ -54,16 +59,19 @@ export class ProjectOverviewState {
|
|
|
54
59
|
isUpdatingProject: observable,
|
|
55
60
|
isFetchingLatestVersion: observable,
|
|
56
61
|
isFetchingCurrentProjectRevision: observable,
|
|
62
|
+
projectDependantEditorState: observable,
|
|
57
63
|
setActivityMode: action,
|
|
58
64
|
fetchProjectWorkspaces: flow,
|
|
59
65
|
deleteWorkspace: flow,
|
|
60
66
|
updateProject: flow,
|
|
61
67
|
fetchLatestProjectVersion: flow,
|
|
68
|
+
fetchDependants: flow,
|
|
62
69
|
createVersion: flow,
|
|
63
70
|
});
|
|
64
71
|
this.editorStore = editorStore;
|
|
65
72
|
this.sdlcState = sdlcState;
|
|
66
73
|
this.releaseVersion = new CreateVersionCommand();
|
|
74
|
+
this.projectDependantEditorState = new ProjectDependantEditorState(this, this.editorStore);
|
|
67
75
|
}
|
|
68
76
|
setActivityMode(activityMode) {
|
|
69
77
|
this.activityMode = activityMode;
|
|
@@ -121,6 +129,46 @@ export class ProjectOverviewState {
|
|
|
121
129
|
this.isUpdatingProject = false;
|
|
122
130
|
}
|
|
123
131
|
}
|
|
132
|
+
*fetchDependants() {
|
|
133
|
+
const groupId = this.editorStore.projectConfigurationEditorState
|
|
134
|
+
.currentProjectConfiguration.groupId;
|
|
135
|
+
const artifactId = this.editorStore.projectConfigurationEditorState
|
|
136
|
+
.currentProjectConfiguration.artifactId;
|
|
137
|
+
const version = this.editorStore.sdlcState.projectVersions[0]?.id.id;
|
|
138
|
+
if (!groupId || !artifactId || !version) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
try {
|
|
142
|
+
this.projectDependantEditorState.fetchingDependantInfoState.inProgress();
|
|
143
|
+
const fetchedDependants = (yield this.editorStore.depotServerClient.getIndexedDependantProjects(groupId, artifactId, version))
|
|
144
|
+
.map((v) => ProjectVersionPlatformDependency.serialization.fromJson(v))
|
|
145
|
+
.sort((a, b) => (a.groupId + a.artifactId > b.groupId + b.artifactId ? 1 : -1))
|
|
146
|
+
.sort((a, b) => compareSemVerVersions(a.versionId, b.versionId) > 0 ? 1 : -1)
|
|
147
|
+
.filter((filteredDependant) => filteredDependant.versionId !== 'master-SNAPSHOT');
|
|
148
|
+
const uniqueProjects = [
|
|
149
|
+
...new Map(fetchedDependants.map((item) => [
|
|
150
|
+
`${item.groupId}:${item.artifactId}`,
|
|
151
|
+
item,
|
|
152
|
+
])).values(),
|
|
153
|
+
];
|
|
154
|
+
this.projectDependantEditorState.setDependants(uniqueProjects);
|
|
155
|
+
this.projectDependantEditorState.dependants?.map(async (dependant) => {
|
|
156
|
+
try {
|
|
157
|
+
const project = ProjectData.serialization.fromJson(await this.editorStore.depotServerClient.getProject(dependant.groupId, dependant.artifactId));
|
|
158
|
+
dependant.projectId = project.projectId;
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
assertErrorThrown(error);
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
this.projectDependantEditorState.fetchingDependantInfoState.complete();
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
assertErrorThrown(error);
|
|
168
|
+
this.projectDependantEditorState.fetchingDependantInfoState.fail();
|
|
169
|
+
this.editorStore.applicationStore.log.error(LogEvent.create(LEGEND_STUDIO_APP_EVENT.DEPOT_MANAGER_FAILURE), error);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
124
172
|
*fetchLatestProjectVersion() {
|
|
125
173
|
try {
|
|
126
174
|
this.isFetchingLatestVersion = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectOverviewState.js","sourceRoot":"","sources":["../../../src/stores/sidebar-state/ProjectOverviewState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAC5E,OAAO,EAGL,iBAAiB,EACjB,QAAQ,EACR,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAEL,oBAAoB,EACpB,WAAW,EACX,QAAQ,EACR,aAAa,EACb,OAAO,EACP,SAAS,EACT,MAAM,EACN,uBAAuB,GACxB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"ProjectOverviewState.js","sourceRoot":"","sources":["../../../src/stores/sidebar-state/ProjectOverviewState.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@finos/legend-application-studio",
|
|
3
|
-
"version": "22.
|
|
3
|
+
"version": "22.4.0",
|
|
4
4
|
"description": "Legend Studio application core",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"legend",
|
|
@@ -44,11 +44,11 @@
|
|
|
44
44
|
"test:watch": "jest --watch"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@finos/legend-application": "10.2.
|
|
48
|
-
"@finos/legend-art": "5.0.
|
|
47
|
+
"@finos/legend-application": "10.2.14",
|
|
48
|
+
"@finos/legend-art": "5.0.24",
|
|
49
49
|
"@finos/legend-graph": "22.2.5",
|
|
50
|
-
"@finos/legend-query-builder": "0.6.
|
|
51
|
-
"@finos/legend-server-depot": "4.
|
|
50
|
+
"@finos/legend-query-builder": "0.6.23",
|
|
51
|
+
"@finos/legend-server-depot": "4.3.0",
|
|
52
52
|
"@finos/legend-server-sdlc": "4.1.20",
|
|
53
53
|
"@finos/legend-shared": "6.2.17",
|
|
54
54
|
"@finos/legend-storage": "3.0.32",
|
package/src/components/editor/edit-panel/project-configuration-editor/ProjectDependencyEditor.tsx
CHANGED
|
@@ -45,6 +45,7 @@ import {
|
|
|
45
45
|
BlankPanelContent,
|
|
46
46
|
VersionsIcon,
|
|
47
47
|
RepoIcon,
|
|
48
|
+
ModalFooterButton,
|
|
48
49
|
} from '@finos/legend-art';
|
|
49
50
|
import {
|
|
50
51
|
MASTER_SNAPSHOT_ALIAS,
|
|
@@ -735,12 +736,7 @@ const ProjectDependencyReportModal = observer(
|
|
|
735
736
|
</div>
|
|
736
737
|
</ModalBody>
|
|
737
738
|
<ModalFooter>
|
|
738
|
-
<
|
|
739
|
-
className="btn modal__footer__close-btn"
|
|
740
|
-
onClick={closeModal}
|
|
741
|
-
>
|
|
742
|
-
Close
|
|
743
|
-
</button>
|
|
739
|
+
<ModalFooterButton onClick={closeModal} text="Close" />
|
|
744
740
|
</ModalFooter>
|
|
745
741
|
</Modal>
|
|
746
742
|
</Dialog>
|
|
@@ -113,43 +113,55 @@ const ElementRenamer = observer(() => {
|
|
|
113
113
|
? getFunctionNameWithPath(element)
|
|
114
114
|
: element?.path) ?? '',
|
|
115
115
|
);
|
|
116
|
+
const [canRenameElement, setCanRenameElement] = useState(false);
|
|
117
|
+
const [
|
|
118
|
+
elementRenameValidationErrorMessage,
|
|
119
|
+
setElementRenameValidationErrorMessage,
|
|
120
|
+
] = useState('');
|
|
116
121
|
const pathInputRef = useRef<HTMLInputElement>(null);
|
|
117
122
|
const changePath: React.ChangeEventHandler<HTMLInputElement> = (
|
|
118
123
|
event,
|
|
119
|
-
): void =>
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
124
|
+
): void => {
|
|
125
|
+
const currentValue = event.target.value;
|
|
126
|
+
setPath(currentValue);
|
|
127
|
+
const isElementPathNonEmpty = currentValue !== '';
|
|
128
|
+
const isNotTopLevelElement =
|
|
129
|
+
element instanceof Package ||
|
|
130
|
+
currentValue.includes(ELEMENT_PATH_DELIMITER);
|
|
131
|
+
const isValidElementPath =
|
|
132
|
+
(element instanceof Package && isValidPath(currentValue)) ||
|
|
133
|
+
isValidFullPath(currentValue);
|
|
134
|
+
let existingElement =
|
|
135
|
+
editorStore.graphManagerState.graph.getNullableElement(
|
|
136
|
+
currentValue,
|
|
137
|
+
true,
|
|
138
|
+
);
|
|
139
|
+
existingElement =
|
|
140
|
+
existingElement instanceof Package
|
|
141
|
+
? isMainGraphElement(existingElement)
|
|
142
|
+
? existingElement
|
|
143
|
+
: undefined
|
|
144
|
+
: existingElement;
|
|
145
|
+
const isElementUnique = !existingElement || existingElement === element;
|
|
146
|
+
const errorMessage = !isElementPathNonEmpty
|
|
147
|
+
? `Element path cannot be empty`
|
|
148
|
+
: !isNotTopLevelElement
|
|
149
|
+
? `Creating top level element is not allowed`
|
|
150
|
+
: !isValidElementPath
|
|
151
|
+
? `Element path is not valid`
|
|
152
|
+
: !isElementUnique
|
|
153
|
+
? `Element of the same path already existed`
|
|
154
|
+
: '';
|
|
155
|
+
setElementRenameValidationErrorMessage(errorMessage);
|
|
156
|
+
setCanRenameElement(
|
|
157
|
+
isElementPathNonEmpty &&
|
|
158
|
+
isNotTopLevelElement &&
|
|
159
|
+
isValidElementPath &&
|
|
160
|
+
isElementUnique,
|
|
161
|
+
);
|
|
162
|
+
};
|
|
151
163
|
|
|
152
|
-
const
|
|
164
|
+
const rename = (event: React.MouseEvent<HTMLButtonElement>): void => {
|
|
153
165
|
event.preventDefault();
|
|
154
166
|
if (element && canRenameElement) {
|
|
155
167
|
explorerTreeState.setElementToRename(undefined);
|
|
@@ -160,11 +172,19 @@ const ElementRenamer = observer(() => {
|
|
|
160
172
|
? path + getFunctionSignature(element)
|
|
161
173
|
: path,
|
|
162
174
|
),
|
|
163
|
-
)
|
|
175
|
+
)
|
|
176
|
+
.then(() => {
|
|
177
|
+
setCanRenameElement(false);
|
|
178
|
+
setElementRenameValidationErrorMessage('');
|
|
179
|
+
})
|
|
180
|
+
.catch(applicationStore.alertUnhandledError);
|
|
164
181
|
}
|
|
165
182
|
};
|
|
166
|
-
|
|
167
|
-
|
|
183
|
+
const abort = (): void => {
|
|
184
|
+
setCanRenameElement(false);
|
|
185
|
+
setElementRenameValidationErrorMessage('');
|
|
186
|
+
explorerTreeState.setElementToRename(undefined);
|
|
187
|
+
};
|
|
168
188
|
const onEnter = (): void => pathInputRef.current?.focus();
|
|
169
189
|
|
|
170
190
|
useEffect(() => {
|
|
@@ -188,6 +208,7 @@ const ElementRenamer = observer(() => {
|
|
|
188
208
|
PaperProps={{ classes: { root: 'search-modal__inner-container' } }}
|
|
189
209
|
>
|
|
190
210
|
<form className="modal modal--dark search-modal explorer__element-renamer">
|
|
211
|
+
<div className="modal__title">Rename Element</div>
|
|
191
212
|
<div className="input-group">
|
|
192
213
|
<input
|
|
193
214
|
className="input-group__input input--dark explorer__element-renamer__input"
|
|
@@ -202,11 +223,18 @@ const ElementRenamer = observer(() => {
|
|
|
202
223
|
</div>
|
|
203
224
|
)}
|
|
204
225
|
</div>
|
|
205
|
-
<
|
|
206
|
-
type="
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
226
|
+
<div className="search-modal__actions">
|
|
227
|
+
<button type="button" className="btn btn--dark" onClick={abort}>
|
|
228
|
+
Cancel
|
|
229
|
+
</button>
|
|
230
|
+
<button
|
|
231
|
+
className="btn btn--dark"
|
|
232
|
+
disabled={!canRenameElement}
|
|
233
|
+
onClick={rename}
|
|
234
|
+
>
|
|
235
|
+
Rename
|
|
236
|
+
</button>
|
|
237
|
+
</div>
|
|
210
238
|
</form>
|
|
211
239
|
</Dialog>
|
|
212
240
|
);
|
|
@@ -0,0 +1,223 @@
|
|
|
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 { useEffect } from 'react';
|
|
18
|
+
import {
|
|
19
|
+
useApplicationStore,
|
|
20
|
+
generateExtensionUrlPattern,
|
|
21
|
+
} from '@finos/legend-application';
|
|
22
|
+
import {
|
|
23
|
+
PanelListItem,
|
|
24
|
+
Badge,
|
|
25
|
+
ExternalLinkSquareIcon,
|
|
26
|
+
DropdownMenu,
|
|
27
|
+
MenuContent,
|
|
28
|
+
MenuContentItem,
|
|
29
|
+
CaretDownIcon,
|
|
30
|
+
PanelLoadingIndicator,
|
|
31
|
+
PanelDivider,
|
|
32
|
+
PanelFormSection,
|
|
33
|
+
Panel,
|
|
34
|
+
InfoCircleIcon,
|
|
35
|
+
} from '@finos/legend-art';
|
|
36
|
+
import {
|
|
37
|
+
MASTER_SNAPSHOT_ALIAS,
|
|
38
|
+
SNAPSHOT_VERSION_ALIAS,
|
|
39
|
+
type ProjectVersionPlatformDependency,
|
|
40
|
+
} from '@finos/legend-server-depot';
|
|
41
|
+
import { generateGAVCoordinates } from '@finos/legend-storage';
|
|
42
|
+
import { flowResult } from 'mobx';
|
|
43
|
+
import { observer } from 'mobx-react-lite';
|
|
44
|
+
import { PROJECT_OVERVIEW_ACTIVITY_MODE } from '../../../stores/sidebar-state/ProjectOverviewState.js';
|
|
45
|
+
import { useEditorStore } from '../EditorStoreProvider.js';
|
|
46
|
+
import {
|
|
47
|
+
generateDependencyDashboardRoute,
|
|
48
|
+
generateViewProjectByGAVRoute,
|
|
49
|
+
generateViewVersionRoute,
|
|
50
|
+
} from '../../../stores/LegendStudioRouter.js';
|
|
51
|
+
|
|
52
|
+
const ProjectDependantEditor = observer(
|
|
53
|
+
(props: { dependant: ProjectVersionPlatformDependency }) => {
|
|
54
|
+
const { dependant } = props;
|
|
55
|
+
const editorStore = useEditorStore();
|
|
56
|
+
const applicationStore = useApplicationStore();
|
|
57
|
+
const configState = editorStore.projectConfigurationEditorState;
|
|
58
|
+
|
|
59
|
+
const viewProject = (
|
|
60
|
+
dependency: ProjectVersionPlatformDependency,
|
|
61
|
+
): void => {
|
|
62
|
+
applicationStore.navigator.visitAddress(
|
|
63
|
+
applicationStore.navigator.generateAddress(
|
|
64
|
+
generateViewProjectByGAVRoute(
|
|
65
|
+
dependency.groupId,
|
|
66
|
+
dependency.artifactId,
|
|
67
|
+
dependency.versionId === MASTER_SNAPSHOT_ALIAS
|
|
68
|
+
? SNAPSHOT_VERSION_ALIAS
|
|
69
|
+
: dependency.versionId,
|
|
70
|
+
),
|
|
71
|
+
),
|
|
72
|
+
);
|
|
73
|
+
};
|
|
74
|
+
// NOTE: This assumes that the dependant project is in the same studio instance as the current project
|
|
75
|
+
// In the future, the studio instance may be part of the project data
|
|
76
|
+
const viewSDLCProject = (
|
|
77
|
+
dependency: ProjectVersionPlatformDependency,
|
|
78
|
+
): void => {
|
|
79
|
+
if (dependency.projectId && dependency.versionId) {
|
|
80
|
+
applicationStore.navigator.visitAddress(
|
|
81
|
+
applicationStore.navigator.generateAddress(
|
|
82
|
+
generateViewVersionRoute(
|
|
83
|
+
dependency.projectId,
|
|
84
|
+
dependency.versionId,
|
|
85
|
+
),
|
|
86
|
+
),
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
return (
|
|
92
|
+
<div
|
|
93
|
+
className="project-dependency-editor"
|
|
94
|
+
key={dependant.artifactId + dependant.groupId}
|
|
95
|
+
>
|
|
96
|
+
<PanelListItem className="panel__content__form__list__item--expand-width">
|
|
97
|
+
<div className="project-dependency-editor">
|
|
98
|
+
<div className="project-overview__dependants__label">
|
|
99
|
+
<div className="project-overview__dependants__label__tag">
|
|
100
|
+
{dependant.projectId ?? 'UAT-52849100'}
|
|
101
|
+
</div>
|
|
102
|
+
<div className="project-overview__dependants__label__name">
|
|
103
|
+
{generateGAVCoordinates(
|
|
104
|
+
dependant.groupId,
|
|
105
|
+
dependant.artifactId,
|
|
106
|
+
undefined,
|
|
107
|
+
)}
|
|
108
|
+
<Badge
|
|
109
|
+
className="badge--right"
|
|
110
|
+
tooltip={`Depends on parent project ${configState.currentProjectConfiguration.projectId} version ${dependant.dependency.versionId}`}
|
|
111
|
+
title={dependant.dependency.versionId}
|
|
112
|
+
/>
|
|
113
|
+
</div>
|
|
114
|
+
</div>
|
|
115
|
+
</div>
|
|
116
|
+
|
|
117
|
+
<div className="project-dependency-editor__visit-project-btn">
|
|
118
|
+
<button
|
|
119
|
+
className="project-dependency-editor__visit-project-btn__btn btn--dark"
|
|
120
|
+
onClick={() => viewProject(dependant)}
|
|
121
|
+
tabIndex={-1}
|
|
122
|
+
title="View project"
|
|
123
|
+
>
|
|
124
|
+
<ExternalLinkSquareIcon />
|
|
125
|
+
</button>
|
|
126
|
+
<DropdownMenu
|
|
127
|
+
className="project-dependency-editor__visit-project-btn__dropdown-trigger btn--dark"
|
|
128
|
+
content={
|
|
129
|
+
<MenuContent>
|
|
130
|
+
<MenuContentItem
|
|
131
|
+
disabled={!dependant.projectId || !dependant.versionId}
|
|
132
|
+
onClick={() => viewSDLCProject(dependant)}
|
|
133
|
+
>
|
|
134
|
+
View SDLC project
|
|
135
|
+
</MenuContentItem>
|
|
136
|
+
</MenuContent>
|
|
137
|
+
}
|
|
138
|
+
>
|
|
139
|
+
<CaretDownIcon title="Show more options..." />
|
|
140
|
+
</DropdownMenu>
|
|
141
|
+
</div>
|
|
142
|
+
</PanelListItem>
|
|
143
|
+
</div>
|
|
144
|
+
);
|
|
145
|
+
},
|
|
146
|
+
);
|
|
147
|
+
|
|
148
|
+
export const ProjectDependantsEditor = observer(() => {
|
|
149
|
+
const editorStore = useEditorStore();
|
|
150
|
+
const applicationStore = useApplicationStore();
|
|
151
|
+
const projectOverviewState = editorStore.projectOverviewState;
|
|
152
|
+
const configState = editorStore.projectConfigurationEditorState;
|
|
153
|
+
const dependantEditorState = projectOverviewState.projectDependantEditorState;
|
|
154
|
+
const dependants = dependantEditorState.dependants;
|
|
155
|
+
const isLoading =
|
|
156
|
+
dependantEditorState.fetchingDependantInfoState.isInProgress;
|
|
157
|
+
|
|
158
|
+
useEffect(() => {
|
|
159
|
+
flowResult(projectOverviewState.fetchDependants()).catch(
|
|
160
|
+
applicationStore.alertUnhandledError,
|
|
161
|
+
);
|
|
162
|
+
}, [applicationStore, projectOverviewState]);
|
|
163
|
+
|
|
164
|
+
return (
|
|
165
|
+
<Panel className="side-bar__panel project-overview__panel">
|
|
166
|
+
<div className="panel__header">
|
|
167
|
+
<div className="panel__header__title">
|
|
168
|
+
<div className="panel__header__title__content">
|
|
169
|
+
{PROJECT_OVERVIEW_ACTIVITY_MODE.DEPENDANTS}
|
|
170
|
+
</div>
|
|
171
|
+
<div
|
|
172
|
+
className="side-bar__panel__title__info"
|
|
173
|
+
title={`List of projects that depend on current project (${projectOverviewState.sdlcState.currentProject?.projectId})`}
|
|
174
|
+
>
|
|
175
|
+
<InfoCircleIcon />
|
|
176
|
+
</div>
|
|
177
|
+
</div>
|
|
178
|
+
<div className="side-bar__panel__header__changes-count">
|
|
179
|
+
{projectOverviewState.projectDependantEditorState.dependants
|
|
180
|
+
?.length ?? 0}
|
|
181
|
+
</div>
|
|
182
|
+
</div>
|
|
183
|
+
|
|
184
|
+
<PanelFormSection>
|
|
185
|
+
<div className="panel__content__lists">
|
|
186
|
+
<PanelLoadingIndicator isLoading={isLoading} />
|
|
187
|
+
{isLoading && (
|
|
188
|
+
<div className="project-dependency-editor__progress-msg">
|
|
189
|
+
Fetching dependant versions
|
|
190
|
+
</div>
|
|
191
|
+
)}
|
|
192
|
+
{dependants?.map((dependant: ProjectVersionPlatformDependency) => (
|
|
193
|
+
<ProjectDependantEditor
|
|
194
|
+
key={dependant.groupId + dependant.artifactId}
|
|
195
|
+
dependant={dependant}
|
|
196
|
+
/>
|
|
197
|
+
))}
|
|
198
|
+
<PanelDivider />
|
|
199
|
+
<button
|
|
200
|
+
className="btn btn--dark"
|
|
201
|
+
tabIndex={-1}
|
|
202
|
+
onClick={() => {
|
|
203
|
+
applicationStore.navigator.visitAddress(
|
|
204
|
+
generateExtensionUrlPattern(
|
|
205
|
+
generateDependencyDashboardRoute(
|
|
206
|
+
configState.currentProjectConfiguration.projectId,
|
|
207
|
+
configState.currentProjectConfiguration.groupId,
|
|
208
|
+
configState.currentProjectConfiguration.artifactId,
|
|
209
|
+
undefined,
|
|
210
|
+
undefined,
|
|
211
|
+
),
|
|
212
|
+
),
|
|
213
|
+
);
|
|
214
|
+
}}
|
|
215
|
+
title="Open dependants dashboard"
|
|
216
|
+
>
|
|
217
|
+
Open Dependants Dashboard
|
|
218
|
+
</button>
|
|
219
|
+
</div>
|
|
220
|
+
</PanelFormSection>
|
|
221
|
+
</Panel>
|
|
222
|
+
);
|
|
223
|
+
});
|
|
@@ -56,6 +56,7 @@ import {
|
|
|
56
56
|
import { useEditorStore } from '../EditorStoreProvider.js';
|
|
57
57
|
import { useApplicationStore } from '@finos/legend-application';
|
|
58
58
|
import { useLegendStudioApplicationStore } from '../../LegendStudioBaseStoreProvider.js';
|
|
59
|
+
import { ProjectDependantsEditor } from './ProjectDependantsEditor.js';
|
|
59
60
|
|
|
60
61
|
const ShareProjectModal = observer(
|
|
61
62
|
(props: { open: boolean; closeModal: () => void }) => {
|
|
@@ -811,6 +812,7 @@ export const ProjectOverviewActivityBar = observer(() => {
|
|
|
811
812
|
mode: PROJECT_OVERVIEW_ACTIVITY_MODE.RELEASE,
|
|
812
813
|
title: 'Release',
|
|
813
814
|
},
|
|
815
|
+
{ mode: PROJECT_OVERVIEW_ACTIVITY_MODE.DEPENDANTS, title: 'Dependants' },
|
|
814
816
|
{ mode: PROJECT_OVERVIEW_ACTIVITY_MODE.VERSIONS, title: 'Versions' },
|
|
815
817
|
{ mode: PROJECT_OVERVIEW_ACTIVITY_MODE.WORKSPACES, title: 'Workspaces' },
|
|
816
818
|
].filter((activity): activity is ProjectOverviewActivityDisplay =>
|
|
@@ -861,6 +863,8 @@ export const ProjectOverview = observer(() => {
|
|
|
861
863
|
return <OverviewViewer />;
|
|
862
864
|
case PROJECT_OVERVIEW_ACTIVITY_MODE.RELEASE:
|
|
863
865
|
return <ReleaseEditor />;
|
|
866
|
+
case PROJECT_OVERVIEW_ACTIVITY_MODE.DEPENDANTS:
|
|
867
|
+
return <ProjectDependantsEditor />;
|
|
864
868
|
case PROJECT_OVERVIEW_ACTIVITY_MODE.VERSIONS:
|
|
865
869
|
return <VersionsViewer />;
|
|
866
870
|
case PROJECT_OVERVIEW_ACTIVITY_MODE.WORKSPACES:
|
|
@@ -78,6 +78,7 @@ export class ExplorerTreeState {
|
|
|
78
78
|
dependencyTreeData: observable.ref,
|
|
79
79
|
selectedNode: observable.ref,
|
|
80
80
|
fileGenerationTreeData: observable.ref,
|
|
81
|
+
elementToRename: observable.ref,
|
|
81
82
|
setTreeData: action,
|
|
82
83
|
setGenerationTreeData: action,
|
|
83
84
|
setSystemTreeData: action,
|