@finos/legend-application-studio 28.19.74 → 28.19.76
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/__test-utils__/EditorComponentTestUtils.d.ts.map +1 -1
- package/lib/components/editor/__test-utils__/EditorComponentTestUtils.js +4 -0
- package/lib/components/editor/__test-utils__/EditorComponentTestUtils.js.map +1 -1
- package/lib/components/editor/panel-group/SQLPlaygroundPanel.d.ts.map +1 -1
- package/lib/components/editor/panel-group/SQLPlaygroundPanel.js +9 -298
- package/lib/components/editor/panel-group/SQLPlaygroundPanel.js.map +1 -1
- package/lib/components/editor/side-bar/Explorer.js +1 -1
- package/lib/components/editor/side-bar/Explorer.js.map +1 -1
- package/lib/index.css +1 -1
- package/lib/package.json +1 -1
- package/lib/stores/editor/EditorStore.d.ts +2 -2
- package/lib/stores/editor/EditorStore.d.ts.map +1 -1
- package/lib/stores/editor/EditorStore.js +3 -3
- package/lib/stores/editor/EditorStore.js.map +1 -1
- package/lib/stores/editor/GraphEditFormModeState.js +1 -1
- package/lib/stores/editor/GraphEditFormModeState.js.map +1 -1
- package/lib/stores/editor/__test-utils__/EditorStoreTestUtils.d.ts.map +1 -1
- package/lib/stores/editor/__test-utils__/EditorStoreTestUtils.js +4 -0
- package/lib/stores/editor/__test-utils__/EditorStoreTestUtils.js.map +1 -1
- package/lib/stores/editor/panel-group/{SQLPlaygroundPanelState.d.ts → StudioSQLPlaygroundPanelState.d.ts} +8 -15
- package/lib/stores/editor/panel-group/StudioSQLPlaygroundPanelState.d.ts.map +1 -0
- package/lib/stores/editor/panel-group/{SQLPlaygroundPanelState.js → StudioSQLPlaygroundPanelState.js} +29 -44
- package/lib/stores/editor/panel-group/StudioSQLPlaygroundPanelState.js.map +1 -0
- package/package.json +11 -11
- package/src/components/editor/__test-utils__/EditorComponentTestUtils.tsx +4 -0
- package/src/components/editor/panel-group/SQLPlaygroundPanel.tsx +12 -576
- package/src/components/editor/side-bar/Explorer.tsx +1 -1
- package/src/stores/editor/EditorStore.ts +3 -3
- package/src/stores/editor/GraphEditFormModeState.ts +1 -1
- package/src/stores/editor/__test-utils__/EditorStoreTestUtils.ts +4 -1
- package/src/stores/editor/panel-group/{SQLPlaygroundPanelState.ts → StudioSQLPlaygroundPanelState.ts} +47 -60
- package/tsconfig.json +1 -1
- package/lib/stores/editor/panel-group/SQLPlaygroundPanelState.d.ts.map +0 -1
- package/lib/stores/editor/panel-group/SQLPlaygroundPanelState.js.map +0 -1
|
@@ -20,6 +20,7 @@ import { SDLCServerClient } from '@finos/legend-server-sdlc';
|
|
|
20
20
|
import { DepotServerClient } from '@finos/legend-server-depot';
|
|
21
21
|
import { ApplicationStore } from '@finos/legend-application';
|
|
22
22
|
import { TEST__getLegendStudioApplicationConfig } from '../../__test-utils__/LegendStudioApplicationTestUtils.js';
|
|
23
|
+
import { MockedMonacoEditorAPI } from '@finos/legend-lego/code-editor/test';
|
|
23
24
|
|
|
24
25
|
export const TEST__getTestEditorStore = (
|
|
25
26
|
pluginManager = LegendStudioPluginManager.create(),
|
|
@@ -28,7 +29,9 @@ export const TEST__getTestEditorStore = (
|
|
|
28
29
|
TEST__getLegendStudioApplicationConfig(),
|
|
29
30
|
pluginManager,
|
|
30
31
|
);
|
|
31
|
-
|
|
32
|
+
MockedMonacoEditorAPI.createModel.mockReturnValue({
|
|
33
|
+
setValue(): void {},
|
|
34
|
+
});
|
|
32
35
|
return new EditorStore(
|
|
33
36
|
applicationStore,
|
|
34
37
|
new SDLCServerClient({
|
|
@@ -19,9 +19,10 @@ import {
|
|
|
19
19
|
assertErrorThrown,
|
|
20
20
|
LogEvent,
|
|
21
21
|
ActionState,
|
|
22
|
+
uniqBy,
|
|
22
23
|
} from '@finos/legend-shared';
|
|
23
24
|
import { observable, makeObservable, flow, flowResult, action } from 'mobx';
|
|
24
|
-
import {
|
|
25
|
+
import { languages as monacoLanguagesAPI } from 'monaco-editor';
|
|
25
26
|
import {
|
|
26
27
|
type Database,
|
|
27
28
|
type PackageableConnection,
|
|
@@ -29,14 +30,12 @@ import {
|
|
|
29
30
|
GRAPH_MANAGER_EVENT,
|
|
30
31
|
} from '@finos/legend-graph';
|
|
31
32
|
import type { EditorStore } from '../EditorStore.js';
|
|
32
|
-
|
|
33
|
-
CODE_EDITOR_LANGUAGE,
|
|
34
|
-
moveCursorToPosition,
|
|
35
|
-
} from '@finos/legend-code-editor';
|
|
33
|
+
|
|
36
34
|
import type { CommandRegistrar } from '@finos/legend-application';
|
|
37
35
|
import { STO_RELATIONAL_LEGEND_STUDIO_COMMAND_KEY } from '../../../__lib__/STO_Relational_LegendStudioCommand.js';
|
|
38
36
|
import { PANEL_MODE } from '../EditorConfig.js';
|
|
39
37
|
import { DatabaseSchemaExplorerState } from '../editor-state/element-editor-state/connection/DatabaseBuilderState.js';
|
|
38
|
+
import { AbstractSQLPlaygroundState } from '@finos/legend-lego/sql-playground';
|
|
40
39
|
|
|
41
40
|
const DEFAULT_SQL_TEXT = `--Start building your SQL. Note that you can also drag-and-drop nodes from schema explorer\n`;
|
|
42
41
|
|
|
@@ -45,50 +44,33 @@ export interface SQL_ExecutionResult {
|
|
|
45
44
|
sqlDuration: number;
|
|
46
45
|
}
|
|
47
46
|
|
|
48
|
-
export class
|
|
47
|
+
export class StudioSQLPlaygroundPanelState
|
|
48
|
+
extends AbstractSQLPlaygroundState
|
|
49
|
+
implements CommandRegistrar
|
|
50
|
+
{
|
|
49
51
|
readonly editorStore: EditorStore;
|
|
50
52
|
|
|
51
53
|
isFetchingSchema = ActionState.create();
|
|
52
|
-
executeRawSQLState = ActionState.create();
|
|
53
|
-
|
|
54
54
|
connection?: PackageableConnection | undefined;
|
|
55
55
|
database?: Database | undefined;
|
|
56
56
|
schemaExplorerState?: DatabaseSchemaExplorerState | undefined;
|
|
57
|
-
|
|
58
|
-
readonly sqlEditorTextModel: monacoEditorAPI.ITextModel;
|
|
59
|
-
sqlEditor?: monacoEditorAPI.IStandaloneCodeEditor | undefined;
|
|
60
|
-
sqlEditorViewState?: monacoEditorAPI.ICodeEditorViewState | undefined;
|
|
61
|
-
sqlText = DEFAULT_SQL_TEXT;
|
|
62
|
-
sqlExecutionResult?: SQL_ExecutionResult | undefined;
|
|
63
|
-
|
|
64
|
-
isLocalModeEnabled = false;
|
|
57
|
+
databaseSchema: monacoLanguagesAPI.CompletionItem[];
|
|
65
58
|
|
|
66
59
|
constructor(editorStore: EditorStore) {
|
|
60
|
+
super();
|
|
67
61
|
makeObservable(this, {
|
|
68
62
|
isFetchingSchema: observable,
|
|
69
|
-
executeRawSQLState: observable,
|
|
70
63
|
connection: observable,
|
|
71
64
|
database: observable,
|
|
72
65
|
schemaExplorerState: observable,
|
|
73
|
-
|
|
74
|
-
isLocalModeEnabled: observable,
|
|
75
|
-
sqlExecutionResult: observable,
|
|
76
|
-
sqlEditor: observable.ref,
|
|
77
|
-
sqlEditorViewState: observable.ref,
|
|
78
|
-
stopExecuteSQL: action,
|
|
79
|
-
toggleIsLocalModeEnabled: action,
|
|
66
|
+
databaseSchema: observable,
|
|
80
67
|
setConnection: action,
|
|
81
|
-
|
|
82
|
-
setSQLEditorViewState: action,
|
|
83
|
-
setSQLText: action,
|
|
68
|
+
setDataBaseSchema: action,
|
|
84
69
|
executeRawSQL: flow,
|
|
85
70
|
});
|
|
86
|
-
|
|
71
|
+
this.sqlEditorTextModel.setValue(DEFAULT_SQL_TEXT);
|
|
87
72
|
this.editorStore = editorStore;
|
|
88
|
-
this.
|
|
89
|
-
this.sqlText,
|
|
90
|
-
CODE_EDITOR_LANGUAGE.SQL,
|
|
91
|
-
);
|
|
73
|
+
this.databaseSchema = [];
|
|
92
74
|
}
|
|
93
75
|
|
|
94
76
|
setConnection(val: PackageableConnection | undefined): void {
|
|
@@ -107,32 +89,42 @@ export class SQLPlaygroundPanelState implements CommandRegistrar {
|
|
|
107
89
|
this.sqlEditorTextModel.setValue(DEFAULT_SQL_TEXT);
|
|
108
90
|
}
|
|
109
91
|
|
|
110
|
-
|
|
111
|
-
this.
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
setSQLEditor(val: monacoEditorAPI.IStandaloneCodeEditor | undefined): void {
|
|
115
|
-
this.sqlEditor = val;
|
|
116
|
-
if (val) {
|
|
117
|
-
const lines = this.sqlText.split('\n');
|
|
118
|
-
moveCursorToPosition(val, {
|
|
119
|
-
lineNumber: lines.length,
|
|
120
|
-
column: lines.at(-1)?.length ?? 0,
|
|
121
|
-
});
|
|
122
|
-
}
|
|
92
|
+
setDataBaseSchema(val: monacoLanguagesAPI.CompletionItem[]): void {
|
|
93
|
+
this.databaseSchema = val;
|
|
123
94
|
}
|
|
124
95
|
|
|
125
|
-
|
|
126
|
-
this.
|
|
96
|
+
fetchSchemaMetaData(): GeneratorFn<void> | undefined {
|
|
97
|
+
return this.schemaExplorerState?.fetchDatabaseMetadata();
|
|
127
98
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
99
|
+
override getCodeCompletionSuggestions(): string[] {
|
|
100
|
+
const base = super.getCodeCompletionSuggestions();
|
|
101
|
+
if (this.schemaExplorerState?.treeData) {
|
|
102
|
+
const dbLabelText = uniqBy(
|
|
103
|
+
Array.from(this.schemaExplorerState.treeData.nodes.values()).map(
|
|
104
|
+
(value) => value.label,
|
|
105
|
+
),
|
|
106
|
+
(label) => label,
|
|
107
|
+
);
|
|
108
|
+
const dbLabelsCompletionItem = uniqBy(
|
|
109
|
+
dbLabelText.map(
|
|
110
|
+
(value) =>
|
|
111
|
+
({
|
|
112
|
+
label: value,
|
|
113
|
+
kind: monacoLanguagesAPI.CompletionItemKind.Field,
|
|
114
|
+
insertTextRules:
|
|
115
|
+
monacoLanguagesAPI.CompletionItemInsertTextRule.InsertAsSnippet,
|
|
116
|
+
insertText: `${value} `,
|
|
117
|
+
}) as monacoLanguagesAPI.CompletionItem,
|
|
118
|
+
),
|
|
119
|
+
(val) => val.label,
|
|
120
|
+
);
|
|
121
|
+
this.setDataBaseSchema(dbLabelsCompletionItem);
|
|
122
|
+
return base.concat(dbLabelText);
|
|
123
|
+
}
|
|
124
|
+
return base;
|
|
133
125
|
}
|
|
134
126
|
|
|
135
|
-
registerCommands(): void {
|
|
127
|
+
override registerCommands(): void {
|
|
136
128
|
this.editorStore.applicationStore.commandService.registerCommand({
|
|
137
129
|
key: STO_RELATIONAL_LEGEND_STUDIO_COMMAND_KEY.SQL_PLAYGROUND_EXECUTE,
|
|
138
130
|
trigger: () =>
|
|
@@ -148,19 +140,14 @@ export class SQLPlaygroundPanelState implements CommandRegistrar {
|
|
|
148
140
|
});
|
|
149
141
|
}
|
|
150
142
|
|
|
151
|
-
deregisterCommands(): void {
|
|
143
|
+
override deregisterCommands(): void {
|
|
152
144
|
[STO_RELATIONAL_LEGEND_STUDIO_COMMAND_KEY.SQL_PLAYGROUND_EXECUTE].forEach(
|
|
153
145
|
(key) =>
|
|
154
146
|
this.editorStore.applicationStore.commandService.deregisterCommand(key),
|
|
155
147
|
);
|
|
156
148
|
}
|
|
157
149
|
|
|
158
|
-
|
|
159
|
-
this.isLocalModeEnabled = !this.isLocalModeEnabled;
|
|
160
|
-
this.sqlExecutionResult = undefined;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
*executeRawSQL(): GeneratorFn<void> {
|
|
150
|
+
override *executeRawSQL(): GeneratorFn<void> {
|
|
164
151
|
if (!this.connection || this.executeRawSQLState.isInProgress) {
|
|
165
152
|
return;
|
|
166
153
|
}
|
package/tsconfig.json
CHANGED
|
@@ -172,7 +172,7 @@
|
|
|
172
172
|
"./src/stores/editor/editor-state/project-configuration-editor-state/ProjectConfigurationEditorState.ts",
|
|
173
173
|
"./src/stores/editor/editor-state/project-configuration-editor-state/ProjectDependencyEditorState.ts",
|
|
174
174
|
"./src/stores/editor/panel-group/DevToolPanelState.ts",
|
|
175
|
-
"./src/stores/editor/panel-group/
|
|
175
|
+
"./src/stores/editor/panel-group/StudioSQLPlaygroundPanelState.ts",
|
|
176
176
|
"./src/stores/editor/sidebar-state/BulkServiceRegistrationState.ts",
|
|
177
177
|
"./src/stores/editor/sidebar-state/LocalChangesState.ts",
|
|
178
178
|
"./src/stores/editor/sidebar-state/ProjectOverviewState.ts",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SQLPlaygroundPanelState.d.ts","sourceRoot":"","sources":["../../../../src/stores/editor/panel-group/SQLPlaygroundPanelState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,KAAK,WAAW,EAGhB,WAAW,EACZ,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,qBAAqB,EAG3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAGlE,OAAO,EAAE,2BAA2B,EAAE,MAAM,yEAAyE,CAAC;AAItH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,uBAAwB,YAAW,gBAAgB;IAC9D,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAElC,gBAAgB,cAAwB;IACxC,kBAAkB,cAAwB;IAE1C,UAAU,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAChC,mBAAmB,CAAC,EAAE,2BAA2B,GAAG,SAAS,CAAC;IAE9D,QAAQ,CAAC,kBAAkB,EAAE,eAAe,CAAC,UAAU,CAAC;IACxD,SAAS,CAAC,EAAE,eAAe,CAAC,qBAAqB,GAAG,SAAS,CAAC;IAC9D,kBAAkB,CAAC,EAAE,eAAe,CAAC,oBAAoB,GAAG,SAAS,CAAC;IACtE,OAAO,SAAoB;IAC3B,kBAAkB,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAErD,kBAAkB,UAAS;gBAEf,WAAW,EAAE,WAAW;IA4BpC,aAAa,CAAC,GAAG,EAAE,qBAAqB,GAAG,SAAS,GAAG,IAAI;IAgB3D,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI7B,YAAY,CAAC,GAAG,EAAE,eAAe,CAAC,qBAAqB,GAAG,SAAS,GAAG,IAAI;IAW1E,cAAc,IAAI,IAAI;IAItB,qBAAqB,CACnB,GAAG,EAAE,eAAe,CAAC,oBAAoB,GAAG,SAAS,GACpD,IAAI;IAIP,gBAAgB,IAAI,IAAI;IAgBxB,kBAAkB,IAAI,IAAI;IAO1B,wBAAwB,IAAI,IAAI;IAK/B,aAAa,IAAI,WAAW,CAAC,IAAI,CAAC;CAsCpC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SQLPlaygroundPanelState.js","sourceRoot":"","sources":["../../../../src/stores/editor/panel-group/SQLPlaygroundPanelState.ts"],"names":[],"mappings":"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"}
|