@finos/legend-application-repl 1.0.35 → 1.0.36

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.
@@ -16,70 +16,66 @@
16
16
  import {} from './LegendREPLServerClient.js';
17
17
  import { _elementPtr, _function, _lambda, DataCubeEngine, DataCubeFunction, _deserializeValueSpecification, _serializeValueSpecification, } from '@finos/legend-data-cube';
18
18
  import { TDSExecutionResult, V1_buildExecutionResult, V1_deserializeExecutionResult, V1_buildEngineError, V1_EngineError, V1_getGenericTypeFullPath, V1_relationTypeModelSchema, } from '@finos/legend-graph';
19
- import { assertErrorThrown, guaranteeType, HttpStatus, isNonNullable, LogEvent, NetworkClientError, } from '@finos/legend-shared';
19
+ import { assertErrorThrown, guaranteeType, HttpStatus, isNonNullable, LogEvent, NetworkClientError, UnsupportedOperationError, } from '@finos/legend-shared';
20
20
  import { LegendREPLDataCubeSource, RawLegendREPLDataCubeSource, REPL_DATA_CUBE_SOURCE_TYPE, } from './LegendREPLDataCubeSource.js';
21
- import { APPLICATION_EVENT, shouldDisplayVirtualAssistantDocumentationEntry, } from '@finos/legend-application';
21
+ import { APPLICATION_EVENT } from '@finos/legend-application';
22
22
  import { deserialize } from 'serializr';
23
23
  export class LegendREPLDataCubeEngine extends DataCubeEngine {
24
- application;
25
- baseStore;
26
- client;
27
- constructor(baseStore) {
24
+ _application;
25
+ _client;
26
+ constructor(application, client) {
28
27
  super();
29
- this.application = baseStore.application;
30
- this.baseStore = baseStore;
31
- this.client = baseStore.client;
28
+ this._application = application;
29
+ this._client = client;
32
30
  }
33
31
  // ---------------------------------- IMPLEMENTATION ----------------------------------
34
32
  async processQuerySource(value) {
35
- if (value._type !== REPL_DATA_CUBE_SOURCE_TYPE) {
36
- throw new Error(`Can't deserialize query source of type '${value._type}'. Only type(s) '${REPL_DATA_CUBE_SOURCE_TYPE}' are supported.`);
33
+ switch (value._type) {
34
+ case REPL_DATA_CUBE_SOURCE_TYPE: {
35
+ const rawSource = RawLegendREPLDataCubeSource.serialization.fromJson(value);
36
+ const source = new LegendREPLDataCubeSource();
37
+ source.query = await this.parseValueSpecification(rawSource.query, false);
38
+ try {
39
+ source.columns = (await this._getQueryRelationType(_lambda([], [source.query]))).columns;
40
+ }
41
+ catch (error) {
42
+ assertErrorThrown(error);
43
+ throw new Error(`Can't get query result columns. Make sure the source query return a relation (i.e. typed TDS). Error: ${error.message}`);
44
+ }
45
+ source.runtime = rawSource.runtime;
46
+ source.mapping = rawSource.mapping;
47
+ source.timestamp = rawSource.timestamp;
48
+ source.model = rawSource.model;
49
+ source.isLocal = rawSource.isLocal;
50
+ source.isPersistenceSupported = rawSource.isPersistenceSupported;
51
+ return source;
52
+ }
53
+ default: {
54
+ throw new UnsupportedOperationError(`Can't process query source of type '${value._type}'.`);
55
+ }
37
56
  }
38
- const rawSource = RawLegendREPLDataCubeSource.serialization.fromJson(value);
39
- this.baseStore.sourceQuery = rawSource.query;
40
- const source = new LegendREPLDataCubeSource();
41
- source.query = await this.parseValueSpecification(rawSource.query, false);
42
- source.columns = (await this.getQueryRelationType(_lambda([], [source.query]), source)).columns;
43
- source.runtime = rawSource.runtime;
44
- source.mapping = rawSource.mapping;
45
- source.timestamp = rawSource.timestamp;
46
- source.model = rawSource.model;
47
- source.isLocal = rawSource.isLocal;
48
- source.isPersistenceSupported = rawSource.isPersistenceSupported;
49
- return source;
50
57
  }
51
58
  async parseValueSpecification(code, returnSourceInformation) {
52
- return _deserializeValueSpecification(await this.client.parseValueSpecification({
59
+ return _deserializeValueSpecification(await this._client.parseValueSpecification({
53
60
  code,
54
61
  returnSourceInformation,
55
62
  }));
56
63
  }
57
64
  async getValueSpecificationCode(value, pretty) {
58
- return this.client.getValueSpecificationCode({
65
+ return this._client.getValueSpecificationCode({
59
66
  value: _serializeValueSpecification(value),
60
67
  pretty,
61
68
  });
62
69
  }
63
70
  async getQueryTypeahead(code, baseQuery, source) {
64
- return this.client.getQueryTypeahead({
71
+ return this._client.getQueryTypeahead({
65
72
  code,
66
73
  baseQuery: _serializeValueSpecification(baseQuery),
67
74
  });
68
75
  }
69
- async getQueryRelationType(query, source) {
70
- const relationType = deserialize(V1_relationTypeModelSchema, await this.client.getQueryRelationReturnType({
71
- query: _serializeValueSpecification(query),
72
- }));
73
- return {
74
- columns: relationType.columns.map((column) => ({
75
- name: column.name,
76
- type: V1_getGenericTypeFullPath(column.genericType),
77
- })),
78
- };
79
- }
80
76
  async getQueryCodeRelationReturnType(code, baseQuery, source) {
81
77
  try {
82
- const relationType = deserialize(V1_relationTypeModelSchema, await this.client.getQueryCodeRelationReturnType({
78
+ const relationType = deserialize(V1_relationTypeModelSchema, await this._client.getQueryCodeRelationReturnType({
83
79
  code,
84
80
  baseQuery: _serializeValueSpecification(baseQuery),
85
81
  }));
@@ -100,7 +96,7 @@ export class LegendREPLDataCubeEngine extends DataCubeEngine {
100
96
  }
101
97
  }
102
98
  async executeQuery(query, source, options) {
103
- const result = await this.client.executeQuery({
99
+ const result = await this._client.executeQuery({
104
100
  query: _serializeValueSpecification(query),
105
101
  debug: options?.debug,
106
102
  });
@@ -119,48 +115,54 @@ export class LegendREPLDataCubeEngine extends DataCubeEngine {
119
115
  }
120
116
  return undefined;
121
117
  }
122
- // ---------------------------------- APPLICATION ----------------------------------
123
- getDocumentationURL() {
124
- return this.application.documentationService.url;
125
- }
126
- getDocumentationEntry(key) {
127
- return this.application.documentationService.getDocEntry(key);
128
- }
129
- shouldDisplayDocumentationEntry(entry) {
130
- return shouldDisplayVirtualAssistantDocumentationEntry(entry);
131
- }
132
- openLink(url) {
133
- this.application.navigationService.navigator.visitAddress(url);
134
- }
135
- sendTelemetry(event, data) {
136
- this.application.telemetryService.logEvent(event, data);
118
+ // ---------------------------------- UTILITIES ----------------------------------
119
+ async _getQueryRelationType(query) {
120
+ const relationType = deserialize(V1_relationTypeModelSchema, await this._client.getQueryRelationReturnType({
121
+ query: _serializeValueSpecification(query),
122
+ }));
123
+ return {
124
+ columns: relationType.columns.map((column) => ({
125
+ name: column.name,
126
+ type: V1_getGenericTypeFullPath(column.genericType),
127
+ })),
128
+ };
137
129
  }
130
+ // ---------------------------------- APPLICATION ----------------------------------
138
131
  logDebug(message, ...data) {
139
- this.application.logService.debug(LogEvent.create(APPLICATION_EVENT.DEBUG), message, ...data);
132
+ this._application.logService.debug(LogEvent.create(APPLICATION_EVENT.DEBUG), message, ...data);
140
133
  }
141
134
  debugProcess(processName, ...data) {
142
135
  // eslint-disable-next-line no-process-env
143
136
  if (process.env.NODE_ENV === 'development') {
144
- this.application.logService.info(LogEvent.create(APPLICATION_EVENT.DEBUG), `\n------ START DEBUG PROCESS: ${processName} ------`, ...data.flatMap(([key, value]) => [`\n[${key.toUpperCase()}]:`, value]), `\n------- END DEBUG PROCESS: ${processName} -------\n\n`);
137
+ this._application.logService.info(LogEvent.create(APPLICATION_EVENT.DEBUG), `\n------ START DEBUG PROCESS: ${processName} ------`, ...data.flatMap(([key, value]) => [`\n[${key.toUpperCase()}]:`, value]), `\n------- END DEBUG PROCESS: ${processName} -------\n\n`);
145
138
  }
146
139
  else {
147
- this.application.logService.debug(LogEvent.create(APPLICATION_EVENT.DEBUG), `\n------ START DEBUG PROCESS: ${processName} ------`, ...data.flatMap(([key, value]) => [`\n[${key.toUpperCase()}]:`, value]), `\n------- END DEBUG PROCESS: ${processName} -------\n\n`);
140
+ this._application.logService.debug(LogEvent.create(APPLICATION_EVENT.DEBUG), `\n------ START DEBUG PROCESS: ${processName} ------`, ...data.flatMap(([key, value]) => [`\n[${key.toUpperCase()}]:`, value]), `\n------- END DEBUG PROCESS: ${processName} -------\n\n`);
148
141
  }
149
142
  }
150
143
  logInfo(event, ...data) {
151
- this.application.logService.info(event, ...data);
144
+ this._application.logService.info(event, ...data);
152
145
  }
153
146
  logWarning(event, ...data) {
154
- this.application.logService.warn(event, ...data);
147
+ this._application.logService.warn(event, ...data);
155
148
  }
156
149
  logError(event, ...data) {
157
- this.application.logService.error(event, ...data);
150
+ this._application.logService.error(event, ...data);
158
151
  }
159
152
  logUnhandledError(error) {
160
- this.application.logUnhandledError(error);
153
+ this._application.logUnhandledError(error);
161
154
  }
162
155
  logIllegalStateError(message, error) {
163
156
  this.logError(LogEvent.create(APPLICATION_EVENT.ILLEGAL_APPLICATION_STATE_OCCURRED), message, error);
164
157
  }
158
+ getDocumentationEntry(key) {
159
+ return this._application.documentationService.getDocEntry(key);
160
+ }
161
+ openLink(url) {
162
+ this._application.navigationService.navigator.visitAddress(url);
163
+ }
164
+ sendTelemetry(event, data) {
165
+ this._application.telemetryService.logEvent(event, data);
166
+ }
165
167
  }
166
168
  //# sourceMappingURL=LegendREPLDataCubeEngine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LegendREPLDataCubeEngine.js","sourceRoot":"","sources":["../../src/stores/LegendREPLDataCubeEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LegendREPLDataCubeEngine.js","sourceRoot":"","sources":["../../src/stores/LegendREPLDataCubeEngine.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@finos/legend-application-repl",
3
- "version": "1.0.35",
3
+ "version": "1.0.36",
4
4
  "description": "Legend REPL Grid client application core",
5
5
  "keywords": [
6
6
  "legend",
@@ -45,7 +45,7 @@
45
45
  "dependencies": {
46
46
  "@finos/legend-application": "16.0.16",
47
47
  "@finos/legend-art": "7.1.73",
48
- "@finos/legend-data-cube": "0.0.37",
48
+ "@finos/legend-data-cube": "0.0.38",
49
49
  "@finos/legend-graph": "32.0.0",
50
50
  "@finos/legend-shared": "10.0.65",
51
51
  "@types/react": "19.0.2",
@@ -14,25 +14,28 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { FormButton, type DataCubeState } from '@finos/legend-data-cube';
17
+ import {
18
+ FormButton,
19
+ type DataCubeInnerHeaderComponentParams,
20
+ } from '@finos/legend-data-cube';
18
21
  import { observer } from 'mobx-react-lite';
19
22
  import { LegendREPLDataCubeSource } from '../stores/LegendREPLDataCubeSource.js';
20
23
  import { useLegendREPLBaseStore } from './LegendREPLFramworkProvider.js';
21
24
 
22
25
  export const LegendREPLDataCubeHeader = observer(
23
- (props: { dataCube: DataCubeState }) => {
24
- const { dataCube } = props;
26
+ (props: DataCubeInnerHeaderComponentParams) => {
27
+ const { api } = props;
25
28
  const store = useLegendREPLBaseStore();
26
29
 
27
- if (!dataCube.view.isSourceProcessed || !store.queryServerBaseUrl) {
30
+ if (!store.source || !store.queryServerBaseUrl) {
28
31
  return null;
29
32
  }
30
33
 
31
34
  const isPublishAllowed =
32
- dataCube.view.source instanceof LegendREPLDataCubeSource &&
33
- dataCube.view.source.isPersistenceSupported &&
35
+ store.source instanceof LegendREPLDataCubeSource &&
36
+ store.source.isPersistenceSupported &&
34
37
  // eslint-disable-next-line no-process-env
35
- (process.env.NODE_ENV === 'development' || !dataCube.view.source.isLocal);
38
+ (process.env.NODE_ENV === 'development' || !store.source.isLocal);
36
39
 
37
40
  return (
38
41
  <div className="flex h-full items-center">
@@ -41,8 +44,8 @@ export const LegendREPLDataCubeHeader = observer(
41
44
  disabled={!isPublishAllowed || store.publishState.isInProgress}
42
45
  onClick={() => {
43
46
  store
44
- .publishDataCube(dataCube)
45
- .catch((error) => dataCube.engine.logUnhandledError(error));
47
+ .publishDataCube(api)
48
+ .catch((error) => store.alertService.alertUnhandledError(error));
46
49
  }}
47
50
  >
48
51
  Publish
@@ -24,6 +24,9 @@ import { useEffect } from 'react';
24
24
  import { formatDate, LogEvent } from '@finos/legend-shared';
25
25
  import {
26
26
  DataCube,
27
+ DataCubePlaceholder,
28
+ DataCubePlaceholderErrorDisplay,
29
+ DEFAULT_REPORT_NAME,
27
30
  type DataCubeQuery,
28
31
  type DataCubeSettingValues,
29
32
  } from '@finos/legend-data-cube';
@@ -64,29 +67,36 @@ const LegendREPLDataCube = observer((props: { query: DataCubeQuery }) => {
64
67
  query={query}
65
68
  engine={store.engine}
66
69
  options={{
67
- onNameChanged(name, source) {
70
+ gridClientLicense: store.gridClientLicense,
71
+ layoutManager: store.layoutService.manager,
72
+ taskManager: store.taskService.manager,
73
+ onNameChanged(event) {
68
74
  const timestamp =
69
- source instanceof LegendREPLDataCubeSource
70
- ? source.timestamp
75
+ event.source instanceof LegendREPLDataCubeSource
76
+ ? event.source.timestamp
71
77
  : undefined;
72
78
  application.layoutService.setWindowTitle(
73
79
  `\u229E ${name}${timestamp ? ` - ${formatDate(new Date(timestamp), 'HH:mm:ss EEE MMM dd yyyy')}` : ''}`,
74
80
  );
75
81
  },
76
- innerHeaderComponent: (dataCube) => (
77
- <LegendREPLDataCubeHeader dataCube={dataCube} />
82
+ onViewInitialized(event) {
83
+ store.setSource(event.source);
84
+ },
85
+ innerHeaderRenderer: (params) => (
86
+ <LegendREPLDataCubeHeader api={params.api} />
78
87
  ),
79
- getSettingValues() {
80
- return application.settingService.getObjectValue(
88
+ settingsData: {
89
+ values: application.settingService.getObjectValue(
81
90
  LegendREPLSettingStorageKey.DATA_CUBE,
82
- ) as DataCubeSettingValues | undefined;
91
+ ) as DataCubeSettingValues | undefined,
83
92
  },
84
- onSettingValuesChanged(values) {
93
+ onSettingsChanged(values) {
85
94
  application.settingService.persistValue(
86
95
  LegendREPLSettingStorageKey.DATA_CUBE,
87
96
  values,
88
97
  );
89
98
  },
99
+ documentationUrl: application.documentationService.url,
90
100
  }}
91
101
  />
92
102
  );
@@ -105,9 +115,24 @@ export const LegendREPLRouter = observer(() => {
105
115
  .catch((error) => store.application.alertUnhandledError(error));
106
116
  }, [store]);
107
117
 
118
+ if (!store.initializeState.hasSucceeded) {
119
+ return (
120
+ <DataCubePlaceholder
121
+ title={DEFAULT_REPORT_NAME}
122
+ layoutManager={store.layoutService.manager}
123
+ >
124
+ {store.initializeState.hasFailed && (
125
+ <DataCubePlaceholderErrorDisplay
126
+ message="Initialization Failure"
127
+ prompt="Resolve the issue and reload."
128
+ />
129
+ )}
130
+ </DataCubePlaceholder>
131
+ );
132
+ }
108
133
  return (
109
134
  <div className="h-full">
110
- {store.initializeState.hasSucceeded && store.query && (
135
+ {store.query && (
111
136
  <Routes>
112
137
  <Route
113
138
  path={LEGEND_REPL_GRID_CLIENT_ROUTE_PATTERN.DATA_CUBE}
@@ -25,14 +25,22 @@ import {
25
25
  import type { LegendREPLApplicationStore } from '../application/LegendREPLApplicationStore.js';
26
26
  import { LegendREPLServerClient } from './LegendREPLServerClient.js';
27
27
  import {
28
- DataCubeConfiguration,
29
28
  DataCubeQuery,
29
+ type DataCubeSource,
30
30
  LayoutConfiguration,
31
31
  RawAdhocQueryDataCubeSource,
32
32
  WindowState,
33
- type DataCubeState,
33
+ type DataCubeAPI,
34
+ DEFAULT_REPORT_NAME,
35
+ DataCubeLayoutService,
36
+ DataCubeAlertService,
37
+ DataCubeLogService,
38
+ DataCubeTaskService,
34
39
  } from '@finos/legend-data-cube';
35
- import { LegendREPLDataCubeSource } from './LegendREPLDataCubeSource.js';
40
+ import {
41
+ LegendREPLDataCubeSource,
42
+ RawLegendREPLDataCubeSource,
43
+ } from './LegendREPLDataCubeSource.js';
36
44
  import { PersistentDataCubeQuery } from '@finos/legend-graph';
37
45
  import { LegendREPLPublishDataCubeAlert } from '../components/LegendREPLPublishDataCubeAlert.js';
38
46
  import { APPLICATION_EVENT } from '@finos/legend-application';
@@ -40,14 +48,17 @@ import { action, makeObservable, observable } from 'mobx';
40
48
  import { LegendREPLDataCubeEngine } from './LegendREPLDataCubeEngine.js';
41
49
 
42
50
  export class LegendREPLBaseStore {
51
+ private readonly _client: LegendREPLServerClient;
43
52
  readonly application: LegendREPLApplicationStore;
44
- readonly client: LegendREPLServerClient;
45
53
  readonly engine: LegendREPLDataCubeEngine;
54
+ readonly taskService: DataCubeTaskService;
55
+ readonly layoutService: DataCubeLayoutService;
56
+ readonly alertService: DataCubeAlertService;
57
+
46
58
  readonly initializeState = ActionState.create();
47
59
  readonly publishState = ActionState.create();
48
60
 
49
- sourceQuery?: string | undefined;
50
- currentUser?: string | undefined;
61
+ source?: DataCubeSource | undefined;
51
62
  gridClientLicense?: string | undefined;
52
63
  queryServerBaseUrl?: string | undefined;
53
64
  hostedApplicationBaseUrl?: string | undefined;
@@ -56,11 +67,13 @@ export class LegendREPLBaseStore {
56
67
  constructor(application: LegendREPLApplicationStore) {
57
68
  makeObservable(this, {
58
69
  query: observable,
59
-
60
70
  setQuery: action,
71
+
72
+ source: observable,
73
+ setSource: action,
61
74
  });
62
75
  this.application = application;
63
- this.client = new LegendREPLServerClient(
76
+ this._client = new LegendREPLServerClient(
64
77
  new NetworkClient({
65
78
  baseUrl: application.config.useDynamicREPLServer
66
79
  ? window.location.origin +
@@ -71,18 +84,27 @@ export class LegendREPLBaseStore {
71
84
  : application.config.replUrl,
72
85
  }),
73
86
  );
74
- this.engine = new LegendREPLDataCubeEngine(this);
87
+ this.engine = new LegendREPLDataCubeEngine(this.application, this._client);
88
+ this.taskService = new DataCubeTaskService();
89
+ this.layoutService = new DataCubeLayoutService();
90
+ this.alertService = new DataCubeAlertService(
91
+ new DataCubeLogService(this.engine),
92
+ this.layoutService,
93
+ );
75
94
  }
76
95
 
77
- setQuery(query: DataCubeQuery | undefined): void {
96
+ setQuery(query: DataCubeQuery | undefined) {
78
97
  this.query = query;
79
98
  }
80
99
 
100
+ setSource(source: DataCubeSource | undefined) {
101
+ this.source = source;
102
+ }
103
+
81
104
  async initialize() {
82
105
  this.initializeState.inProgress();
83
106
  try {
84
- const info = await this.client.getInfrastructureInfo();
85
- this.currentUser = info.currentUser;
107
+ const info = await this._client.getInfrastructureInfo();
86
108
  if (info.currentUser) {
87
109
  this.application.identityService.setCurrentUser(info.currentUser);
88
110
  }
@@ -92,7 +114,7 @@ export class LegendREPLBaseStore {
92
114
  this.hostedApplicationBaseUrl = info.hostedApplicationBaseUrl;
93
115
  this.gridClientLicense = info.gridClientLicense;
94
116
  this.setQuery(
95
- DataCubeQuery.serialization.fromJson(await this.client.getBaseQuery()),
117
+ DataCubeQuery.serialization.fromJson(await this._client.getBaseQuery()),
96
118
  );
97
119
 
98
120
  this.initializeState.pass();
@@ -103,46 +125,48 @@ export class LegendREPLBaseStore {
103
125
  `Can't initialize REPL`,
104
126
  error,
105
127
  );
128
+ this.alertService.alertError(error, {
129
+ message: `Initialization Failure: ${error.message}`,
130
+ text: `Resolve the issue and reload the engine.`,
131
+ });
106
132
  this.initializeState.fail();
107
133
  }
108
134
  }
109
135
 
110
- async publishDataCube(dataCube: DataCubeState) {
136
+ async publishDataCube(api: DataCubeAPI) {
111
137
  if (
112
- !this.sourceQuery ||
113
- !dataCube.view.isSourceProcessed ||
114
138
  !this.queryServerBaseUrl ||
115
- !(dataCube.view.source instanceof LegendREPLDataCubeSource) ||
116
- !dataCube.view.source.isPersistenceSupported ||
117
- !dataCube.view.source.model ||
139
+ !(this.source instanceof LegendREPLDataCubeSource) ||
140
+ !this.source.isPersistenceSupported ||
141
+ !this.source.model ||
118
142
  // eslint-disable-next-line no-process-env
119
- !(process.env.NODE_ENV === 'development' || !dataCube.view.source.isLocal)
143
+ !(process.env.NODE_ENV === 'development' || !this.source.isLocal)
120
144
  ) {
121
145
  return;
122
146
  }
123
147
 
124
148
  this.publishState.inProgress();
125
- const task = dataCube.view.newTask('Publish query');
149
+ const task = this.taskService.newTask('Publish query');
126
150
 
127
151
  try {
128
- const query = new DataCubeQuery();
129
- query.query = await dataCube.engine.getPartialQueryCode(
130
- dataCube.view.snapshotManager.currentSnapshot,
131
- );
152
+ const query = await api.generateDataCubeQuery();
153
+
132
154
  const source = new RawAdhocQueryDataCubeSource();
133
- source.query = this.sourceQuery;
134
- source.runtime = dataCube.view.source.runtime;
135
- source.model = dataCube.view.source.model;
155
+ source.query = RawLegendREPLDataCubeSource.serialization.fromJson(
156
+ query.source,
157
+ ).query;
158
+ source.runtime = this.source.runtime;
159
+ source.model = this.source.model;
136
160
  query.source = RawAdhocQueryDataCubeSource.serialization.toJson(source);
161
+
137
162
  const newQuery = new PersistentDataCubeQuery();
138
163
  newQuery.id = uuid();
139
- newQuery.name = DataCubeConfiguration.serialization.fromJson(
140
- dataCube.view.snapshotManager.currentSnapshot.data.configuration,
141
- ).name;
164
+ newQuery.name = query.configuration?.name ?? DEFAULT_REPORT_NAME;
142
165
  newQuery.content = DataCubeQuery.serialization.toJson(query);
143
- newQuery.owner = this.currentUser;
166
+ newQuery.owner = this.application.identityService.currentUser;
167
+
144
168
  const publishedQuery = PersistentDataCubeQuery.serialization.fromJson(
145
- await this.client.publishQuery(
169
+ await this._client.publishQuery(
146
170
  PersistentDataCubeQuery.serialization.toJson(newQuery),
147
171
  this.queryServerBaseUrl,
148
172
  ),
@@ -160,15 +184,15 @@ export class LegendREPLBaseStore {
160
184
  minHeight: 100,
161
185
  center: true,
162
186
  };
163
- dataCube.engine.layout.newWindow(window);
187
+ this.layoutService.newWindow(window);
164
188
  } catch (error) {
165
189
  assertErrorThrown(error);
166
- dataCube.view.engine.alertError(error, {
190
+ this.alertService.alertError(error, {
167
191
  message: `Persistence Failure: Can't publish query.`,
168
192
  text: `Error: ${error.message}`,
169
193
  });
170
194
  } finally {
171
- dataCube.view.endTask(task);
195
+ this.taskService.endTask(task);
172
196
  this.publishState.complete();
173
197
  }
174
198
  }