@finos/legend-application-query 13.4.16 → 13.4.18
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/__lib__/LegendQueryEvent.d.ts +2 -1
 - package/lib/__lib__/LegendQueryEvent.d.ts.map +1 -1
 - package/lib/__lib__/LegendQueryEvent.js +1 -0
 - package/lib/__lib__/LegendQueryEvent.js.map +1 -1
 - package/lib/__lib__/LegendQueryUserDataHelper.d.ts +23 -3
 - package/lib/__lib__/LegendQueryUserDataHelper.d.ts.map +1 -1
 - package/lib/__lib__/LegendQueryUserDataHelper.js +94 -14
 - package/lib/__lib__/LegendQueryUserDataHelper.js.map +1 -1
 - package/lib/__lib__/LegendQueryUserDataSpaceHelper.d.ts +31 -0
 - package/lib/__lib__/LegendQueryUserDataSpaceHelper.d.ts.map +1 -0
 - package/lib/__lib__/LegendQueryUserDataSpaceHelper.js +54 -0
 - package/lib/__lib__/LegendQueryUserDataSpaceHelper.js.map +1 -0
 - package/lib/components/Core_LegendQueryApplicationPlugin.d.ts.map +1 -1
 - package/lib/components/Core_LegendQueryApplicationPlugin.js +29 -11
 - package/lib/components/Core_LegendQueryApplicationPlugin.js.map +1 -1
 - package/lib/components/LegendQueryAppInfo.d.ts +21 -0
 - package/lib/components/LegendQueryAppInfo.d.ts.map +1 -0
 - package/lib/components/LegendQueryAppInfo.js +46 -0
 - package/lib/components/LegendQueryAppInfo.js.map +1 -0
 - package/lib/components/QueryEditor.d.ts.map +1 -1
 - package/lib/components/QueryEditor.js +8 -7
 - package/lib/components/QueryEditor.js.map +1 -1
 - package/lib/components/data-space/DataSpaceQuerySetup.js +1 -1
 - package/lib/components/data-space/DataSpaceQuerySetup.js.map +1 -1
 - package/lib/index.css +2 -2
 - package/lib/index.css.map +1 -1
 - package/lib/package.json +3 -3
 - package/lib/stores/QueryEditorStore.d.ts +3 -0
 - package/lib/stores/QueryEditorStore.d.ts.map +1 -1
 - package/lib/stores/QueryEditorStore.js +13 -1
 - package/lib/stores/QueryEditorStore.js.map +1 -1
 - package/lib/stores/data-space/DataSpaceQueryCreatorStore.d.ts +2 -0
 - package/lib/stores/data-space/DataSpaceQueryCreatorStore.d.ts.map +1 -1
 - package/lib/stores/data-space/DataSpaceQueryCreatorStore.js +21 -2
 - package/lib/stores/data-space/DataSpaceQueryCreatorStore.js.map +1 -1
 - package/lib/stores/data-space/DataSpaceQuerySetupState.d.ts +10 -2
 - package/lib/stores/data-space/DataSpaceQuerySetupState.d.ts.map +1 -1
 - package/lib/stores/data-space/DataSpaceQuerySetupState.js +53 -3
 - package/lib/stores/data-space/DataSpaceQuerySetupState.js.map +1 -1
 - package/package.json +13 -13
 - package/src/__lib__/LegendQueryEvent.ts +2 -0
 - package/src/__lib__/LegendQueryUserDataHelper.ts +192 -18
 - package/src/__lib__/LegendQueryUserDataSpaceHelper.ts +98 -0
 - package/src/components/Core_LegendQueryApplicationPlugin.tsx +35 -20
 - package/src/components/LegendQueryAppInfo.tsx +153 -0
 - package/src/components/QueryEditor.tsx +18 -9
 - package/src/components/data-space/DataSpaceQuerySetup.tsx +1 -1
 - package/src/stores/QueryEditorStore.ts +19 -0
 - package/src/stores/data-space/DataSpaceQueryCreatorStore.ts +59 -0
 - package/src/stores/data-space/DataSpaceQuerySetupState.ts +92 -4
 - package/tsconfig.json +2 -0
 
| 
         @@ -0,0 +1,98 @@ 
     | 
|
| 
      
 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 type { DataSpaceInfo } from '@finos/legend-extension-dsl-data-space/application';
         
     | 
| 
      
 18 
     | 
    
         
            +
            import { GAV_DELIMITER, generateGAVCoordinates } from '@finos/legend-storage';
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            export interface VisitedDataspace {
         
     | 
| 
      
 21 
     | 
    
         
            +
              id: string;
         
     | 
| 
      
 22 
     | 
    
         
            +
              groupId: string;
         
     | 
| 
      
 23 
     | 
    
         
            +
              artifactId: string;
         
     | 
| 
      
 24 
     | 
    
         
            +
              path: string;
         
     | 
| 
      
 25 
     | 
    
         
            +
              versionId: string | undefined;
         
     | 
| 
      
 26 
     | 
    
         
            +
              execContext?: string | undefined;
         
     | 
| 
      
 27 
     | 
    
         
            +
            }
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
            export type SavedVisitedDataSpaces = VisitedDataspace[];
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            export const createVisitedDataSpaceId = (
         
     | 
| 
      
 32 
     | 
    
         
            +
              groupId: string,
         
     | 
| 
      
 33 
     | 
    
         
            +
              artifactId: string,
         
     | 
| 
      
 34 
     | 
    
         
            +
              dataSpace: string,
         
     | 
| 
      
 35 
     | 
    
         
            +
            ): string =>
         
     | 
| 
      
 36 
     | 
    
         
            +
              // we will consider unique dataSpace if it belongs to the same project. i.e we will not save 2 dataspaces visited for 2 different versionss
         
     | 
| 
      
 37 
     | 
    
         
            +
              generateGAVCoordinates(groupId, artifactId, undefined) +
         
     | 
| 
      
 38 
     | 
    
         
            +
              GAV_DELIMITER +
         
     | 
| 
      
 39 
     | 
    
         
            +
              dataSpace;
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
            export const createIdFromDataSpaceInfo = (
         
     | 
| 
      
 42 
     | 
    
         
            +
              info: DataSpaceInfo,
         
     | 
| 
      
 43 
     | 
    
         
            +
            ): string | undefined => {
         
     | 
| 
      
 44 
     | 
    
         
            +
              const groupId = info.groupId;
         
     | 
| 
      
 45 
     | 
    
         
            +
              const artifactId = info.artifactId;
         
     | 
| 
      
 46 
     | 
    
         
            +
              if (groupId && artifactId) {
         
     | 
| 
      
 47 
     | 
    
         
            +
                return createVisitedDataSpaceId(groupId, artifactId, info.path);
         
     | 
| 
      
 48 
     | 
    
         
            +
              }
         
     | 
| 
      
 49 
     | 
    
         
            +
              return undefined;
         
     | 
| 
      
 50 
     | 
    
         
            +
            };
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
            export const createSimpleVisitedDataspace = (
         
     | 
| 
      
 53 
     | 
    
         
            +
              groupId: string,
         
     | 
| 
      
 54 
     | 
    
         
            +
              artifactId: string,
         
     | 
| 
      
 55 
     | 
    
         
            +
              versionId: string | undefined,
         
     | 
| 
      
 56 
     | 
    
         
            +
              path: string,
         
     | 
| 
      
 57 
     | 
    
         
            +
              exec: string | undefined,
         
     | 
| 
      
 58 
     | 
    
         
            +
            ): VisitedDataspace => ({
         
     | 
| 
      
 59 
     | 
    
         
            +
              id: createVisitedDataSpaceId(groupId, artifactId, path),
         
     | 
| 
      
 60 
     | 
    
         
            +
              groupId,
         
     | 
| 
      
 61 
     | 
    
         
            +
              artifactId,
         
     | 
| 
      
 62 
     | 
    
         
            +
              versionId,
         
     | 
| 
      
 63 
     | 
    
         
            +
              path,
         
     | 
| 
      
 64 
     | 
    
         
            +
              execContext: exec,
         
     | 
| 
      
 65 
     | 
    
         
            +
            });
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
            export const createVisitedDataspaceFromInfo = (
         
     | 
| 
      
 68 
     | 
    
         
            +
              info: DataSpaceInfo,
         
     | 
| 
      
 69 
     | 
    
         
            +
              execContext: string | undefined,
         
     | 
| 
      
 70 
     | 
    
         
            +
            ): VisitedDataspace | undefined => {
         
     | 
| 
      
 71 
     | 
    
         
            +
              const groupId = info.groupId;
         
     | 
| 
      
 72 
     | 
    
         
            +
              const artifactId = info.artifactId;
         
     | 
| 
      
 73 
     | 
    
         
            +
              const versionId = info.versionId;
         
     | 
| 
      
 74 
     | 
    
         
            +
              const path = info.path;
         
     | 
| 
      
 75 
     | 
    
         
            +
              if (groupId && artifactId) {
         
     | 
| 
      
 76 
     | 
    
         
            +
                return createSimpleVisitedDataspace(
         
     | 
| 
      
 77 
     | 
    
         
            +
                  groupId,
         
     | 
| 
      
 78 
     | 
    
         
            +
                  artifactId,
         
     | 
| 
      
 79 
     | 
    
         
            +
                  versionId,
         
     | 
| 
      
 80 
     | 
    
         
            +
                  path,
         
     | 
| 
      
 81 
     | 
    
         
            +
                  execContext,
         
     | 
| 
      
 82 
     | 
    
         
            +
                );
         
     | 
| 
      
 83 
     | 
    
         
            +
              }
         
     | 
| 
      
 84 
     | 
    
         
            +
              return undefined;
         
     | 
| 
      
 85 
     | 
    
         
            +
            };
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
            export const hasDataSpaceInfoBeenVisited = (
         
     | 
| 
      
 88 
     | 
    
         
            +
              val: DataSpaceInfo,
         
     | 
| 
      
 89 
     | 
    
         
            +
              visited: SavedVisitedDataSpaces,
         
     | 
| 
      
 90 
     | 
    
         
            +
            ): boolean =>
         
     | 
| 
      
 91 
     | 
    
         
            +
              Boolean(
         
     | 
| 
      
 92 
     | 
    
         
            +
                visited.find((_visit) => {
         
     | 
| 
      
 93 
     | 
    
         
            +
                  if (_visit.id === createIdFromDataSpaceInfo(val)) {
         
     | 
| 
      
 94 
     | 
    
         
            +
                    return true;
         
     | 
| 
      
 95 
     | 
    
         
            +
                  }
         
     | 
| 
      
 96 
     | 
    
         
            +
                  return false;
         
     | 
| 
      
 97 
     | 
    
         
            +
                }),
         
     | 
| 
      
 98 
     | 
    
         
            +
              );
         
     | 
| 
         @@ -74,7 +74,6 @@ import { 
     | 
|
| 
       74 
74 
     | 
    
         
             
            import {
         
     | 
| 
       75 
75 
     | 
    
         
             
              ExistingQueryEditorStore,
         
     | 
| 
       76 
76 
     | 
    
         
             
              QueryBuilderActionConfig_QueryApplication,
         
     | 
| 
       77 
     | 
    
         
            -
              createViewProjectHandler,
         
     | 
| 
       78 
77 
     | 
    
         
             
              createViewSDLCProjectHandler,
         
     | 
| 
       79 
78 
     | 
    
         
             
            } from '../stores/QueryEditorStore.js';
         
     | 
| 
       80 
79 
     | 
    
         
             
            import {
         
     | 
| 
         @@ -318,6 +317,19 @@ export class Core_LegendQueryApplicationPlugin extends LegendQueryApplicationPlu 
     | 
|
| 
       318 
317 
     | 
    
         
             
                    key: 'about-query-info',
         
     | 
| 
       319 
318 
     | 
    
         
             
                    title: 'Get Query Info',
         
     | 
| 
       320 
319 
     | 
    
         
             
                    label: 'About Query Info',
         
     | 
| 
      
 320 
     | 
    
         
            +
                    disableFunc: (queryBuilderState): boolean => {
         
     | 
| 
      
 321 
     | 
    
         
            +
                      if (
         
     | 
| 
      
 322 
     | 
    
         
            +
                        queryBuilderState.workflowState.actionConfig instanceof
         
     | 
| 
      
 323 
     | 
    
         
            +
                        QueryBuilderActionConfig_QueryApplication
         
     | 
| 
      
 324 
     | 
    
         
            +
                      ) {
         
     | 
| 
      
 325 
     | 
    
         
            +
                        const editorStore =
         
     | 
| 
      
 326 
     | 
    
         
            +
                          queryBuilderState.workflowState.actionConfig.editorStore;
         
     | 
| 
      
 327 
     | 
    
         
            +
                        if (editorStore instanceof ExistingQueryEditorStore) {
         
     | 
| 
      
 328 
     | 
    
         
            +
                          return false;
         
     | 
| 
      
 329 
     | 
    
         
            +
                        }
         
     | 
| 
      
 330 
     | 
    
         
            +
                      }
         
     | 
| 
      
 331 
     | 
    
         
            +
                      return true;
         
     | 
| 
      
 332 
     | 
    
         
            +
                    },
         
     | 
| 
       321 
333 
     | 
    
         
             
                    onClick: (queryBuilderState): void => {
         
     | 
| 
       322 
334 
     | 
    
         
             
                      if (
         
     | 
| 
       323 
335 
     | 
    
         
             
                        queryBuilderState.workflowState.actionConfig instanceof
         
     | 
| 
         @@ -333,35 +345,22 @@ export class Core_LegendQueryApplicationPlugin extends LegendQueryApplicationPlu 
     | 
|
| 
       333 
345 
     | 
    
         
             
                    icon: <InfoCircleIcon />,
         
     | 
| 
       334 
346 
     | 
    
         
             
                  },
         
     | 
| 
       335 
347 
     | 
    
         
             
                  {
         
     | 
| 
       336 
     | 
    
         
            -
                    key: 'about-query-project',
         
     | 
| 
      
 348 
     | 
    
         
            +
                    key: 'about-query-sdlc-project',
         
     | 
| 
       337 
349 
     | 
    
         
             
                    title: 'Go to Project',
         
     | 
| 
       338 
350 
     | 
    
         
             
                    label: 'Go to Project',
         
     | 
| 
       339 
     | 
    
         
            -
                     
     | 
| 
      
 351 
     | 
    
         
            +
                    disableFunc: (queryBuilderState): boolean => {
         
     | 
| 
       340 
352 
     | 
    
         
             
                      if (
         
     | 
| 
       341 
353 
     | 
    
         
             
                        queryBuilderState.workflowState.actionConfig instanceof
         
     | 
| 
       342 
354 
     | 
    
         
             
                        QueryBuilderActionConfig_QueryApplication
         
     | 
| 
       343 
355 
     | 
    
         
             
                      ) {
         
     | 
| 
       344 
356 
     | 
    
         
             
                        const editorStore =
         
     | 
| 
       345 
357 
     | 
    
         
             
                          queryBuilderState.workflowState.actionConfig.editorStore;
         
     | 
| 
       346 
     | 
    
         
            -
                         
     | 
| 
       347 
     | 
    
         
            -
                           
     | 
| 
       348 
     | 
    
         
            -
                         
     | 
| 
       349 
     | 
    
         
            -
                        const { groupId, artifactId, versionId } =
         
     | 
| 
       350 
     | 
    
         
            -
                          editorStore.getProjectInfo();
         
     | 
| 
       351 
     | 
    
         
            -
                        createViewProjectHandler(editorStore.applicationStore)(
         
     | 
| 
       352 
     | 
    
         
            -
                          groupId,
         
     | 
| 
       353 
     | 
    
         
            -
                          artifactId,
         
     | 
| 
       354 
     | 
    
         
            -
                          versionId,
         
     | 
| 
       355 
     | 
    
         
            -
                          undefined,
         
     | 
| 
       356 
     | 
    
         
            -
                        );
         
     | 
| 
      
 358 
     | 
    
         
            +
                        if (editorStore instanceof ExistingQueryEditorStore) {
         
     | 
| 
      
 359 
     | 
    
         
            +
                          return false;
         
     | 
| 
      
 360 
     | 
    
         
            +
                        }
         
     | 
| 
       357 
361 
     | 
    
         
             
                      }
         
     | 
| 
      
 362 
     | 
    
         
            +
                      return true;
         
     | 
| 
       358 
363 
     | 
    
         
             
                    },
         
     | 
| 
       359 
     | 
    
         
            -
                    icon: <InfoCircleIcon />,
         
     | 
| 
       360 
     | 
    
         
            -
                  },
         
     | 
| 
       361 
     | 
    
         
            -
                  {
         
     | 
| 
       362 
     | 
    
         
            -
                    key: 'about-query-sdlc-project',
         
     | 
| 
       363 
     | 
    
         
            -
                    title: 'Go to SDLC Project',
         
     | 
| 
       364 
     | 
    
         
            -
                    label: 'Go to SDLC Project',
         
     | 
| 
       365 
364 
     | 
    
         
             
                    onClick: (queryBuilderState): void => {
         
     | 
| 
       366 
365 
     | 
    
         
             
                      if (
         
     | 
| 
       367 
366 
     | 
    
         
             
                        queryBuilderState.workflowState.actionConfig instanceof
         
     | 
| 
         @@ -383,6 +382,22 @@ export class Core_LegendQueryApplicationPlugin extends LegendQueryApplicationPlu 
     | 
|
| 
       383 
382 
     | 
    
         
             
                    },
         
     | 
| 
       384 
383 
     | 
    
         
             
                    icon: <InfoCircleIcon />,
         
     | 
| 
       385 
384 
     | 
    
         
             
                  },
         
     | 
| 
      
 385 
     | 
    
         
            +
                  {
         
     | 
| 
      
 386 
     | 
    
         
            +
                    key: 'about-legend-query',
         
     | 
| 
      
 387 
     | 
    
         
            +
                    title: 'About Legend Query',
         
     | 
| 
      
 388 
     | 
    
         
            +
                    label: 'About Legend Query',
         
     | 
| 
      
 389 
     | 
    
         
            +
                    onClick: (queryBuilderState): void => {
         
     | 
| 
      
 390 
     | 
    
         
            +
                      if (
         
     | 
| 
      
 391 
     | 
    
         
            +
                        queryBuilderState.workflowState.actionConfig instanceof
         
     | 
| 
      
 392 
     | 
    
         
            +
                        QueryBuilderActionConfig_QueryApplication
         
     | 
| 
      
 393 
     | 
    
         
            +
                      ) {
         
     | 
| 
      
 394 
     | 
    
         
            +
                        const editorStore =
         
     | 
| 
      
 395 
     | 
    
         
            +
                          queryBuilderState.workflowState.actionConfig.editorStore;
         
     | 
| 
      
 396 
     | 
    
         
            +
                        editorStore.setShowAppInfo(true);
         
     | 
| 
      
 397 
     | 
    
         
            +
                      }
         
     | 
| 
      
 398 
     | 
    
         
            +
                    },
         
     | 
| 
      
 399 
     | 
    
         
            +
                    icon: <InfoCircleIcon />,
         
     | 
| 
      
 400 
     | 
    
         
            +
                  },
         
     | 
| 
       386 
401 
     | 
    
         
             
                ];
         
     | 
| 
       387 
402 
     | 
    
         
             
              }
         
     | 
| 
       388 
403 
     | 
    
         | 
| 
         @@ -0,0 +1,153 @@ 
     | 
|
| 
      
 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 {
         
     | 
| 
      
 18 
     | 
    
         
            +
              CopyIcon,
         
     | 
| 
      
 19 
     | 
    
         
            +
              Dialog,
         
     | 
| 
      
 20 
     | 
    
         
            +
              InfoCircleIcon,
         
     | 
| 
      
 21 
     | 
    
         
            +
              Modal,
         
     | 
| 
      
 22 
     | 
    
         
            +
              ModalBody,
         
     | 
| 
      
 23 
     | 
    
         
            +
              ModalHeader,
         
     | 
| 
      
 24 
     | 
    
         
            +
              ModalHeaderActions,
         
     | 
| 
      
 25 
     | 
    
         
            +
              ModalTitle,
         
     | 
| 
      
 26 
     | 
    
         
            +
              TimesIcon,
         
     | 
| 
      
 27 
     | 
    
         
            +
            } from '@finos/legend-art';
         
     | 
| 
      
 28 
     | 
    
         
            +
            import { isNonNullable } from '@finos/legend-shared';
         
     | 
| 
      
 29 
     | 
    
         
            +
            import { useQueryEditorStore } from './QueryEditorStoreProvider.js';
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            export const LegendQueryInfo: React.FC<{
         
     | 
| 
      
 32 
     | 
    
         
            +
              open: boolean;
         
     | 
| 
      
 33 
     | 
    
         
            +
              closeModal: () => void;
         
     | 
| 
      
 34 
     | 
    
         
            +
            }> = (props) => {
         
     | 
| 
      
 35 
     | 
    
         
            +
              const { open, closeModal } = props;
         
     | 
| 
      
 36 
     | 
    
         
            +
              const editorStore = useQueryEditorStore();
         
     | 
| 
      
 37 
     | 
    
         
            +
              const applicationStore = editorStore.applicationStore;
         
     | 
| 
      
 38 
     | 
    
         
            +
              const config = applicationStore.config;
         
     | 
| 
      
 39 
     | 
    
         
            +
              const copyInfo = (): void => {
         
     | 
| 
      
 40 
     | 
    
         
            +
                applicationStore.clipboardService
         
     | 
| 
      
 41 
     | 
    
         
            +
                  .copyTextToClipboard(
         
     | 
| 
      
 42 
     | 
    
         
            +
                    [
         
     | 
| 
      
 43 
     | 
    
         
            +
                      `Environment: ${config.env}`,
         
     | 
| 
      
 44 
     | 
    
         
            +
                      `Version: ${config.appVersion}`,
         
     | 
| 
      
 45 
     | 
    
         
            +
                      `Revision: ${config.appVersionCommitId}`,
         
     | 
| 
      
 46 
     | 
    
         
            +
                      `Build Time: ${config.appVersionBuildTime}`,
         
     | 
| 
      
 47 
     | 
    
         
            +
                      `Engine Server: ${config.engineServerUrl}`,
         
     | 
| 
      
 48 
     | 
    
         
            +
                      `Depot Server: ${config.depotServerUrl}`,
         
     | 
| 
      
 49 
     | 
    
         
            +
                    ]
         
     | 
| 
      
 50 
     | 
    
         
            +
                      .filter(isNonNullable)
         
     | 
| 
      
 51 
     | 
    
         
            +
                      .join('\n'),
         
     | 
| 
      
 52 
     | 
    
         
            +
                  )
         
     | 
| 
      
 53 
     | 
    
         
            +
                  .then(() =>
         
     | 
| 
      
 54 
     | 
    
         
            +
                    applicationStore.notificationService.notifySuccess(
         
     | 
| 
      
 55 
     | 
    
         
            +
                      'Copied application info to clipboard',
         
     | 
| 
      
 56 
     | 
    
         
            +
                    ),
         
     | 
| 
      
 57 
     | 
    
         
            +
                  )
         
     | 
| 
      
 58 
     | 
    
         
            +
                  .catch(applicationStore.alertUnhandledError);
         
     | 
| 
      
 59 
     | 
    
         
            +
              };
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
              const goToReleaseLog = (): void => {
         
     | 
| 
      
 62 
     | 
    
         
            +
                closeModal();
         
     | 
| 
      
 63 
     | 
    
         
            +
                applicationStore.releaseNotesService.setReleaseLog(true);
         
     | 
| 
      
 64 
     | 
    
         
            +
              };
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
              return (
         
     | 
| 
      
 67 
     | 
    
         
            +
                <Dialog onClose={closeModal} open={open}>
         
     | 
| 
      
 68 
     | 
    
         
            +
                  <Modal
         
     | 
| 
      
 69 
     | 
    
         
            +
                    darkMode={
         
     | 
| 
      
 70 
     | 
    
         
            +
                      !applicationStore.layoutService.TEMPORARY__isLightColorThemeEnabled
         
     | 
| 
      
 71 
     | 
    
         
            +
                    }
         
     | 
| 
      
 72 
     | 
    
         
            +
                    className="modal--scrollable app__info"
         
     | 
| 
      
 73 
     | 
    
         
            +
                  >
         
     | 
| 
      
 74 
     | 
    
         
            +
                    <ModalHeader>
         
     | 
| 
      
 75 
     | 
    
         
            +
                      <ModalTitle icon={<InfoCircleIcon />} title="About Legend Query" />
         
     | 
| 
      
 76 
     | 
    
         
            +
                      <ModalHeaderActions>
         
     | 
| 
      
 77 
     | 
    
         
            +
                        <button
         
     | 
| 
      
 78 
     | 
    
         
            +
                          className="modal__header__action"
         
     | 
| 
      
 79 
     | 
    
         
            +
                          tabIndex={-1}
         
     | 
| 
      
 80 
     | 
    
         
            +
                          onClick={copyInfo}
         
     | 
| 
      
 81 
     | 
    
         
            +
                          title="Copy application info"
         
     | 
| 
      
 82 
     | 
    
         
            +
                        >
         
     | 
| 
      
 83 
     | 
    
         
            +
                          <CopyIcon />
         
     | 
| 
      
 84 
     | 
    
         
            +
                        </button>
         
     | 
| 
      
 85 
     | 
    
         
            +
                        <button
         
     | 
| 
      
 86 
     | 
    
         
            +
                          className="modal__header__action"
         
     | 
| 
      
 87 
     | 
    
         
            +
                          tabIndex={-1}
         
     | 
| 
      
 88 
     | 
    
         
            +
                          onClick={closeModal}
         
     | 
| 
      
 89 
     | 
    
         
            +
                        >
         
     | 
| 
      
 90 
     | 
    
         
            +
                          <TimesIcon />
         
     | 
| 
      
 91 
     | 
    
         
            +
                        </button>
         
     | 
| 
      
 92 
     | 
    
         
            +
                      </ModalHeaderActions>
         
     | 
| 
      
 93 
     | 
    
         
            +
                    </ModalHeader>
         
     | 
| 
      
 94 
     | 
    
         
            +
                    <ModalBody>
         
     | 
| 
      
 95 
     | 
    
         
            +
                      <div className="app__info__entry">
         
     | 
| 
      
 96 
     | 
    
         
            +
                        <div className="app__info__entry__title">Environment:</div>
         
     | 
| 
      
 97 
     | 
    
         
            +
                        <div className="app__info__entry__value">{config.env}</div>
         
     | 
| 
      
 98 
     | 
    
         
            +
                      </div>
         
     | 
| 
      
 99 
     | 
    
         
            +
                      <div className="app__info__entry">
         
     | 
| 
      
 100 
     | 
    
         
            +
                        <div className="app__info__entry__title">Version:</div>
         
     | 
| 
      
 101 
     | 
    
         
            +
                        <div className="app__info__entry__value">{config.appVersion}</div>
         
     | 
| 
      
 102 
     | 
    
         
            +
                      </div>
         
     | 
| 
      
 103 
     | 
    
         
            +
                      <div className="app__info__entry">
         
     | 
| 
      
 104 
     | 
    
         
            +
                        <div className="app__info__entry__title">Revision:</div>
         
     | 
| 
      
 105 
     | 
    
         
            +
                        <div className="app__info__entry__value">
         
     | 
| 
      
 106 
     | 
    
         
            +
                          {config.appVersionCommitId}
         
     | 
| 
      
 107 
     | 
    
         
            +
                        </div>
         
     | 
| 
      
 108 
     | 
    
         
            +
                      </div>
         
     | 
| 
      
 109 
     | 
    
         
            +
                      <div className="app__info__entry">
         
     | 
| 
      
 110 
     | 
    
         
            +
                        <div className="app__info__entry__title">Build Time:</div>
         
     | 
| 
      
 111 
     | 
    
         
            +
                        <div className="app__info__entry__value">
         
     | 
| 
      
 112 
     | 
    
         
            +
                          {config.appVersionBuildTime}
         
     | 
| 
      
 113 
     | 
    
         
            +
                        </div>
         
     | 
| 
      
 114 
     | 
    
         
            +
                      </div>
         
     | 
| 
      
 115 
     | 
    
         
            +
                      <div className="app__info__entry">
         
     | 
| 
      
 116 
     | 
    
         
            +
                        <div
         
     | 
| 
      
 117 
     | 
    
         
            +
                          onClick={goToReleaseLog}
         
     | 
| 
      
 118 
     | 
    
         
            +
                          className="app__info__entry__value app__info__entry__value__action"
         
     | 
| 
      
 119 
     | 
    
         
            +
                        >
         
     | 
| 
      
 120 
     | 
    
         
            +
                          Details of Released Versions
         
     | 
| 
      
 121 
     | 
    
         
            +
                        </div>
         
     | 
| 
      
 122 
     | 
    
         
            +
                      </div>
         
     | 
| 
      
 123 
     | 
    
         
            +
                      <div className="app__info__group">
         
     | 
| 
      
 124 
     | 
    
         
            +
                        <div className="app__info__entry">
         
     | 
| 
      
 125 
     | 
    
         
            +
                          <div className="app__info__entry__title">Engine Server:</div>
         
     | 
| 
      
 126 
     | 
    
         
            +
                          <div className="app__info__entry__value">
         
     | 
| 
      
 127 
     | 
    
         
            +
                            <a
         
     | 
| 
      
 128 
     | 
    
         
            +
                              href={config.engineServerUrl}
         
     | 
| 
      
 129 
     | 
    
         
            +
                              target="_blank"
         
     | 
| 
      
 130 
     | 
    
         
            +
                              rel="noopener noreferrer"
         
     | 
| 
      
 131 
     | 
    
         
            +
                            >
         
     | 
| 
      
 132 
     | 
    
         
            +
                              {config.engineServerUrl}
         
     | 
| 
      
 133 
     | 
    
         
            +
                            </a>
         
     | 
| 
      
 134 
     | 
    
         
            +
                          </div>
         
     | 
| 
      
 135 
     | 
    
         
            +
                        </div>
         
     | 
| 
      
 136 
     | 
    
         
            +
                        <div className="app__info__entry">
         
     | 
| 
      
 137 
     | 
    
         
            +
                          <div className="app__info__entry__title">Depot Server:</div>
         
     | 
| 
      
 138 
     | 
    
         
            +
                          <div className="app__info__entry__value">
         
     | 
| 
      
 139 
     | 
    
         
            +
                            <a
         
     | 
| 
      
 140 
     | 
    
         
            +
                              href={config.depotServerUrl}
         
     | 
| 
      
 141 
     | 
    
         
            +
                              target="_blank"
         
     | 
| 
      
 142 
     | 
    
         
            +
                              rel="noopener noreferrer"
         
     | 
| 
      
 143 
     | 
    
         
            +
                            >
         
     | 
| 
      
 144 
     | 
    
         
            +
                              {config.depotServerUrl}
         
     | 
| 
      
 145 
     | 
    
         
            +
                            </a>
         
     | 
| 
      
 146 
     | 
    
         
            +
                          </div>
         
     | 
| 
      
 147 
     | 
    
         
            +
                        </div>
         
     | 
| 
      
 148 
     | 
    
         
            +
                      </div>
         
     | 
| 
      
 149 
     | 
    
         
            +
                    </ModalBody>
         
     | 
| 
      
 150 
     | 
    
         
            +
                  </Modal>
         
     | 
| 
      
 151 
     | 
    
         
            +
                </Dialog>
         
     | 
| 
      
 152 
     | 
    
         
            +
              );
         
     | 
| 
      
 153 
     | 
    
         
            +
            };
         
     | 
| 
         @@ -45,7 +45,7 @@ import { 
     | 
|
| 
       45 
45 
     | 
    
         
             
              SunIcon,
         
     | 
| 
       46 
46 
     | 
    
         
             
            } from '@finos/legend-art';
         
     | 
| 
       47 
47 
     | 
    
         
             
            import { observer } from 'mobx-react-lite';
         
     | 
| 
       48 
     | 
    
         
            -
            import {  
     | 
| 
      
 48 
     | 
    
         
            +
            import { useEffect, useMemo, useRef, useState } from 'react';
         
     | 
| 
       49 
49 
     | 
    
         
             
            import {
         
     | 
| 
       50 
50 
     | 
    
         
             
              type MappingQueryCreatorPathParams,
         
     | 
| 
       51 
51 
     | 
    
         
             
              type ExistingQueryEditorPathParams,
         
     | 
| 
         @@ -58,6 +58,8 @@ import { 
     | 
|
| 
       58 
58 
     | 
    
         
             
            import { ExistingQueryEditorStore } from '../stores/QueryEditorStore.js';
         
     | 
| 
       59 
59 
     | 
    
         
             
            import {
         
     | 
| 
       60 
60 
     | 
    
         
             
              LEGEND_APPLICATION_COLOR_THEME,
         
     | 
| 
      
 61 
     | 
    
         
            +
              ReleaseLogManager,
         
     | 
| 
      
 62 
     | 
    
         
            +
              ReleaseNotesManager,
         
     | 
| 
       61 
63 
     | 
    
         
             
              useApplicationStore,
         
     | 
| 
       62 
64 
     | 
    
         
             
            } from '@finos/legend-application';
         
     | 
| 
       63 
65 
     | 
    
         
             
            import { useParams } from '@finos/legend-application/browser';
         
     | 
| 
         @@ -86,6 +88,7 @@ import { LATEST_VERSION_ALIAS } from '@finos/legend-server-depot'; 
     | 
|
| 
       86 
88 
     | 
    
         
             
            import { buildVersionOption, type VersionOption } from './QuerySetup.js';
         
     | 
| 
       87 
89 
     | 
    
         
             
            import { QueryEditorExistingQueryVersionRevertModal } from './QueryEdtiorExistingQueryVersionRevertModal.js';
         
     | 
| 
       88 
90 
     | 
    
         
             
            import { debounce, compareSemVerVersions } from '@finos/legend-shared';
         
     | 
| 
      
 91 
     | 
    
         
            +
            import { LegendQueryInfo } from './LegendQueryAppInfo.js';
         
     | 
| 
       89 
92 
     | 
    
         | 
| 
       90 
93 
     | 
    
         
             
            const CreateQueryDialog = observer(() => {
         
     | 
| 
       91 
94 
     | 
    
         
             
              const editorStore = useQueryEditorStore();
         
     | 
| 
         @@ -361,12 +364,14 @@ export const QueryEditorExistingQueryHeader = observer( 
     | 
|
| 
       361 
364 
     | 
    
         
             
                    ) : (
         
     | 
| 
       362 
365 
     | 
    
         
             
                      <div
         
     | 
| 
       363 
366 
     | 
    
         
             
                        onDoubleClick={enableRename}
         
     | 
| 
       364 
     | 
    
         
            -
                        className="query-editor__header__content__main query-editor__header__content__title 
     | 
| 
      
 367 
     | 
    
         
            +
                        className="query-editor__header__content__main query-editor__header__content__title"
         
     | 
| 
       365 
368 
     | 
    
         
             
                        title="Double-click to rename query"
         
     | 
| 
       366 
369 
     | 
    
         
             
                      >
         
     | 
| 
       367 
     | 
    
         
            -
                         
     | 
| 
      
 370 
     | 
    
         
            +
                        <div className="query-editor__header__content__title__text">
         
     | 
| 
      
 371 
     | 
    
         
            +
                          {existingEditorStore.lightQuery.name}
         
     | 
| 
      
 372 
     | 
    
         
            +
                        </div>
         
     | 
| 
       368 
373 
     | 
    
         
             
                        <button
         
     | 
| 
       369 
     | 
    
         
            -
                          className="panel__content__form__section__list__item__edit-btn"
         
     | 
| 
      
 374 
     | 
    
         
            +
                          className="query-editor__header__conten__title__btn panel__content__form__section__list__item__edit-btn"
         
     | 
| 
       370 
375 
     | 
    
         
             
                          onClick={enableRename}
         
     | 
| 
       371 
376 
     | 
    
         
             
                        >
         
     | 
| 
       372 
377 
     | 
    
         
             
                          <PencilIcon />
         
     | 
| 
         @@ -585,8 +590,6 @@ export const QueryEditor = observer(() => { 
     | 
|
| 
       585 
590 
     | 
    
         
             
                    generateQuerySetupRoute(),
         
     | 
| 
       586 
591 
     | 
    
         
             
                  ),
         
     | 
| 
       587 
592 
     | 
    
         
             
                );
         
     | 
| 
       588 
     | 
    
         
            -
              const goToReleaseLog = (): void =>
         
     | 
| 
       589 
     | 
    
         
            -
                applicationStore.releaseNotesService.setReleaseLog(true);
         
     | 
| 
       590 
593 
     | 
    
         
             
              // settings
         
     | 
| 
       591 
594 
     | 
    
         
             
              // NOTE: this is temporary until we find a better home for these settings in query builder
         
     | 
| 
       592 
595 
     | 
    
         
             
              const engineConfig =
         
     | 
| 
         @@ -609,6 +612,7 @@ export const QueryEditor = observer(() => { 
     | 
|
| 
       609 
612 
     | 
    
         
             
                flowResult(editorStore.initialize()).catch(
         
     | 
| 
       610 
613 
     | 
    
         
             
                  applicationStore.alertUnhandledError,
         
     | 
| 
       611 
614 
     | 
    
         
             
                );
         
     | 
| 
      
 615 
     | 
    
         
            +
                applicationStore.releaseNotesService.updateViewedVersion();
         
     | 
| 
       612 
616 
     | 
    
         
             
              }, [editorStore, applicationStore]);
         
     | 
| 
       613 
617 
     | 
    
         | 
| 
       614 
618 
     | 
    
         
             
              return (
         
     | 
| 
         @@ -628,9 +632,6 @@ export const QueryEditor = observer(() => { 
     | 
|
| 
       628 
632 
     | 
    
         
             
                              <MenuContentItem onClick={goToQuerySetup}>
         
     | 
| 
       629 
633 
     | 
    
         
             
                                Back to query setup
         
     | 
| 
       630 
634 
     | 
    
         
             
                              </MenuContentItem>
         
     | 
| 
       631 
     | 
    
         
            -
                              <MenuContentItem onClick={goToReleaseLog}>
         
     | 
| 
       632 
     | 
    
         
            -
                                Legend Query Release Log
         
     | 
| 
       633 
     | 
    
         
            -
                              </MenuContentItem>
         
     | 
| 
       634 
635 
     | 
    
         
             
                              <MenuContentItem
         
     | 
| 
       635 
636 
     | 
    
         
             
                                disabled={!appDocUrl}
         
     | 
| 
       636 
637 
     | 
    
         
             
                                onClick={goToDocumentation}
         
     | 
| 
         @@ -721,6 +722,12 @@ export const QueryEditor = observer(() => { 
     | 
|
| 
       721 
722 
     | 
    
         
             
                    />
         
     | 
| 
       722 
723 
     | 
    
         
             
                  )}
         
     | 
| 
       723 
724 
     | 
    
         
             
                  {editorStore.queryCreatorState.showCreateModal && <CreateQueryDialog />}
         
     | 
| 
      
 725 
     | 
    
         
            +
                  {editorStore.showAppInfo && (
         
     | 
| 
      
 726 
     | 
    
         
            +
                    <LegendQueryInfo
         
     | 
| 
      
 727 
     | 
    
         
            +
                      open={editorStore.showAppInfo}
         
     | 
| 
      
 728 
     | 
    
         
            +
                      closeModal={() => editorStore.setShowAppInfo(false)}
         
     | 
| 
      
 729 
     | 
    
         
            +
                    />
         
     | 
| 
      
 730 
     | 
    
         
            +
                  )}
         
     | 
| 
       724 
731 
     | 
    
         
             
                  {isExistingQuery &&
         
     | 
| 
       725 
732 
     | 
    
         
             
                    editorStore.updateState.showQueryInfo &&
         
     | 
| 
       726 
733 
     | 
    
         
             
                    editorStore.query && (
         
     | 
| 
         @@ -729,6 +736,8 @@ export const QueryEditor = observer(() => { 
     | 
|
| 
       729 
736 
     | 
    
         
             
                        query={editorStore.query}
         
     | 
| 
       730 
737 
     | 
    
         
             
                      />
         
     | 
| 
       731 
738 
     | 
    
         
             
                    )}
         
     | 
| 
      
 739 
     | 
    
         
            +
                  <ReleaseLogManager />
         
     | 
| 
      
 740 
     | 
    
         
            +
                  <ReleaseNotesManager />
         
     | 
| 
       732 
741 
     | 
    
         
             
                </div>
         
     | 
| 
       733 
742 
     | 
    
         
             
              );
         
     | 
| 
       734 
743 
     | 
    
         
             
            });
         
     | 
| 
         @@ -95,7 +95,7 @@ const DataSpaceQuerySetupSetupPanelContent = observer( 
     | 
|
| 
       95 
95 
     | 
    
         
             
                  queryBuilderState.showAdvancedSearchPanel();
         
     | 
| 
       96 
96 
     | 
    
         | 
| 
       97 
97 
     | 
    
         
             
                useEffect(() => {
         
     | 
| 
       98 
     | 
    
         
            -
                  flowResult(queryBuilderState. 
     | 
| 
      
 98 
     | 
    
         
            +
                  flowResult(queryBuilderState.initializeDataSpaceSetup()).catch(
         
     | 
| 
       99 
99 
     | 
    
         
             
                    applicationStore.alertUnhandledError,
         
     | 
| 
       100 
100 
     | 
    
         
             
                  );
         
     | 
| 
       101 
101 
     | 
    
         
             
                }, [queryBuilderState, applicationStore]);
         
     | 
| 
         @@ -123,6 +123,7 @@ import { 
     | 
|
| 
       123 
123 
     | 
    
         
             
              retrieveAnalyticsResultCache,
         
     | 
| 
       124 
124 
     | 
    
         
             
            } from '@finos/legend-extension-dsl-data-space/graph';
         
     | 
| 
       125 
125 
     | 
    
         
             
            import { generateDataSpaceQueryCreatorRoute } from '../__lib__/DSL_DataSpace_LegendQueryNavigation.js';
         
     | 
| 
      
 126 
     | 
    
         
            +
            import { hasDataSpaceInfoBeenVisited } from '../__lib__/LegendQueryUserDataSpaceHelper.js';
         
     | 
| 
       126 
127 
     | 
    
         | 
| 
       127 
128 
     | 
    
         
             
            export const createViewProjectHandler =
         
     | 
| 
       128 
129 
     | 
    
         
             
              (applicationStore: LegendQueryApplicationStore) =>
         
     | 
| 
         @@ -314,6 +315,7 @@ export abstract class QueryEditorStore { 
     | 
|
| 
       314 
315 
     | 
    
         
             
              queryCreatorState: QueryCreatorState;
         
     | 
| 
       315 
316 
     | 
    
         
             
              existingQueryName: string | undefined;
         
     | 
| 
       316 
317 
     | 
    
         
             
              showRegisterServiceModal = false;
         
     | 
| 
      
 318 
     | 
    
         
            +
              showAppInfo = false;
         
     | 
| 
       317 
319 
     | 
    
         | 
| 
       318 
320 
     | 
    
         
             
              constructor(
         
     | 
| 
       319 
321 
     | 
    
         
             
                applicationStore: LegendQueryApplicationStore,
         
     | 
| 
         @@ -324,10 +326,12 @@ export abstract class QueryEditorStore { 
     | 
|
| 
       324 
326 
     | 
    
         
             
                  queryLoaderState: observable,
         
     | 
| 
       325 
327 
     | 
    
         
             
                  existingQueryName: observable,
         
     | 
| 
       326 
328 
     | 
    
         
             
                  showRegisterServiceModal: observable,
         
     | 
| 
      
 329 
     | 
    
         
            +
                  showAppInfo: observable,
         
     | 
| 
       327 
330 
     | 
    
         
             
                  queryBuilderState: observable,
         
     | 
| 
       328 
331 
     | 
    
         
             
                  isPerformingBlockingAction: computed,
         
     | 
| 
       329 
332 
     | 
    
         
             
                  setExistingQueryName: action,
         
     | 
| 
       330 
333 
     | 
    
         
             
                  setShowRegisterServiceModal: action,
         
     | 
| 
      
 334 
     | 
    
         
            +
                  setShowAppInfo: action,
         
     | 
| 
       331 
335 
     | 
    
         
             
                  initialize: flow,
         
     | 
| 
       332 
336 
     | 
    
         
             
                  buildGraph: flow,
         
     | 
| 
       333 
337 
     | 
    
         
             
                  searchExistingQueryName: flow,
         
     | 
| 
         @@ -405,6 +409,10 @@ export abstract class QueryEditorStore { 
     | 
|
| 
       405 
409 
     | 
    
         
             
                this.existingQueryName = val;
         
     | 
| 
       406 
410 
     | 
    
         
             
              }
         
     | 
| 
       407 
411 
     | 
    
         | 
| 
      
 412 
     | 
    
         
            +
              setShowAppInfo(val: boolean): void {
         
     | 
| 
      
 413 
     | 
    
         
            +
                this.showAppInfo = val;
         
     | 
| 
      
 414 
     | 
    
         
            +
              }
         
     | 
| 
      
 415 
     | 
    
         
            +
             
     | 
| 
       408 
416 
     | 
    
         
             
              setShowRegisterServiceModal(val: boolean): void {
         
     | 
| 
       409 
417 
     | 
    
         
             
                this.showRegisterServiceModal = val;
         
     | 
| 
       410 
418 
     | 
    
         
             
              }
         
     | 
| 
         @@ -534,10 +542,15 @@ export abstract class QueryEditorStore { 
     | 
|
| 
       534 
542 
     | 
    
         
             
                    error,
         
     | 
| 
       535 
543 
     | 
    
         
             
                  );
         
     | 
| 
       536 
544 
     | 
    
         
             
                  this.applicationStore.notificationService.notifyError(error);
         
     | 
| 
      
 545 
     | 
    
         
            +
                  this.onInitializeFailure();
         
     | 
| 
       537 
546 
     | 
    
         
             
                  this.initState.fail();
         
     | 
| 
       538 
547 
     | 
    
         
             
                }
         
     | 
| 
       539 
548 
     | 
    
         
             
              }
         
     | 
| 
       540 
549 
     | 
    
         | 
| 
      
 550 
     | 
    
         
            +
              onInitializeFailure(): void {
         
     | 
| 
      
 551 
     | 
    
         
            +
                // Do Nothing
         
     | 
| 
      
 552 
     | 
    
         
            +
              }
         
     | 
| 
      
 553 
     | 
    
         
            +
             
     | 
| 
       541 
554 
     | 
    
         
             
              *searchExistingQueryName(searchText: string): GeneratorFn<void> {
         
     | 
| 
       542 
555 
     | 
    
         
             
                const isValidSearchString =
         
     | 
| 
       543 
556 
     | 
    
         
             
                  searchText.length >= DEFAULT_TYPEAHEAD_SEARCH_MINIMUM_SEARCH_LENGTH;
         
     | 
| 
         @@ -1234,6 +1247,10 @@ export class ExistingQueryEditorStore extends QueryEditorStore { 
     | 
|
| 
       1234 
1247 
     | 
    
         
             
                      versionId: projectInfo.versionId,
         
     | 
| 
       1235 
1248 
     | 
    
         
             
                      dataSpace: dataSpace.path,
         
     | 
| 
       1236 
1249 
     | 
    
         
             
                    };
         
     | 
| 
      
 1250 
     | 
    
         
            +
                    const visitedDataSpaces =
         
     | 
| 
      
 1251 
     | 
    
         
            +
                      LegendQueryUserDataHelper.getRecentlyVisitedDataSpaces(
         
     | 
| 
      
 1252 
     | 
    
         
            +
                        this.applicationStore.userDataService,
         
     | 
| 
      
 1253 
     | 
    
         
            +
                      );
         
     | 
| 
       1237 
1254 
     | 
    
         
             
                    const dataSpaceQueryBuilderState = new DataSpaceQueryBuilderState(
         
     | 
| 
       1238 
1255 
     | 
    
         
             
                      this.applicationStore,
         
     | 
| 
       1239 
1256 
     | 
    
         
             
                      this.graphManagerState,
         
     | 
| 
         @@ -1313,6 +1330,8 @@ export class ExistingQueryEditorStore extends QueryEditorStore { 
     | 
|
| 
       1313 
1330 
     | 
    
         
             
                      projectInfo,
         
     | 
| 
       1314 
1331 
     | 
    
         
             
                      this.applicationStore.config.options.queryBuilderConfig,
         
     | 
| 
       1315 
1332 
     | 
    
         
             
                      sourceInfo,
         
     | 
| 
      
 1333 
     | 
    
         
            +
                      (dataSpaceInfo: DataSpaceInfo) =>
         
     | 
| 
      
 1334 
     | 
    
         
            +
                        hasDataSpaceInfoBeenVisited(dataSpaceInfo, visitedDataSpaces),
         
     | 
| 
       1316 
1335 
     | 
    
         
             
                    );
         
     | 
| 
       1317 
1336 
     | 
    
         
             
                    const mappingModelCoverageAnalysisResult =
         
     | 
| 
       1318 
1337 
     | 
    
         
             
                      dataSpaceAnalysisResult?.executionContextsIndex.get(
         
     | 
| 
         @@ -29,8 +29,11 @@ import { 
     | 
|
| 
       29 
29 
     | 
    
         
             
              LATEST_VERSION_ALIAS,
         
     | 
| 
       30 
30 
     | 
    
         
             
            } from '@finos/legend-server-depot';
         
     | 
| 
       31 
31 
     | 
    
         
             
            import {
         
     | 
| 
      
 32 
     | 
    
         
            +
              LogEvent,
         
     | 
| 
      
 33 
     | 
    
         
            +
              assertErrorThrown,
         
     | 
| 
       32 
34 
     | 
    
         
             
              guaranteeNonNullable,
         
     | 
| 
       33 
35 
     | 
    
         
             
              guaranteeType,
         
     | 
| 
      
 36 
     | 
    
         
            +
              returnUndefOnError,
         
     | 
| 
       34 
37 
     | 
    
         
             
              uuid,
         
     | 
| 
       35 
38 
     | 
    
         
             
            } from '@finos/legend-shared';
         
     | 
| 
       36 
39 
     | 
    
         
             
            import {
         
     | 
| 
         @@ -59,6 +62,13 @@ import { 
     | 
|
| 
       59 
62 
     | 
    
         
             
              type DataSpaceInfo,
         
     | 
| 
       60 
63 
     | 
    
         
             
            } from '@finos/legend-extension-dsl-data-space/application';
         
     | 
| 
       61 
64 
     | 
    
         
             
            import { generateDataSpaceQueryCreatorRoute } from '../../__lib__/DSL_DataSpace_LegendQueryNavigation.js';
         
     | 
| 
      
 65 
     | 
    
         
            +
            import { LegendQueryUserDataHelper } from '../../__lib__/LegendQueryUserDataHelper.js';
         
     | 
| 
      
 66 
     | 
    
         
            +
            import {
         
     | 
| 
      
 67 
     | 
    
         
            +
              createVisitedDataSpaceId,
         
     | 
| 
      
 68 
     | 
    
         
            +
              hasDataSpaceInfoBeenVisited,
         
     | 
| 
      
 69 
     | 
    
         
            +
              createSimpleVisitedDataspace,
         
     | 
| 
      
 70 
     | 
    
         
            +
            } from '../../__lib__/LegendQueryUserDataSpaceHelper.js';
         
     | 
| 
      
 71 
     | 
    
         
            +
            import { LEGEND_QUERY_APP_EVENT } from '../../__lib__/LegendQueryEvent.js';
         
     | 
| 
       62 
72 
     | 
    
         | 
| 
       63 
73 
     | 
    
         
             
            export class DataSpaceQueryCreatorStore extends QueryEditorStore {
         
     | 
| 
       64 
74 
     | 
    
         
             
              readonly groupId: string;
         
     | 
| 
         @@ -144,6 +154,10 @@ export class DataSpaceQueryCreatorStore extends QueryEditorStore { 
     | 
|
| 
       144 
154 
     | 
    
         
             
                  versionId: projectInfo.versionId,
         
     | 
| 
       145 
155 
     | 
    
         
             
                  dataSpace: dataSpace.path,
         
     | 
| 
       146 
156 
     | 
    
         
             
                };
         
     | 
| 
      
 157 
     | 
    
         
            +
                const visitedDataSpaces =
         
     | 
| 
      
 158 
     | 
    
         
            +
                  LegendQueryUserDataHelper.getRecentlyVisitedDataSpaces(
         
     | 
| 
      
 159 
     | 
    
         
            +
                    this.applicationStore.userDataService,
         
     | 
| 
      
 160 
     | 
    
         
            +
                  );
         
     | 
| 
       147 
161 
     | 
    
         
             
                const queryBuilderState = new DataSpaceQueryBuilderState(
         
     | 
| 
       148 
162 
     | 
    
         
             
                  this.applicationStore,
         
     | 
| 
       149 
163 
     | 
    
         
             
                  this.graphManagerState,
         
     | 
| 
         @@ -193,6 +207,15 @@ export class DataSpaceQueryCreatorStore extends QueryEditorStore { 
     | 
|
| 
       193 
207 
     | 
    
         
             
                        queryBuilderState.class?.path,
         
     | 
| 
       194 
208 
     | 
    
         
             
                      ),
         
     | 
| 
       195 
209 
     | 
    
         
             
                    );
         
     | 
| 
      
 210 
     | 
    
         
            +
                    returnUndefOnError(() =>
         
     | 
| 
      
 211 
     | 
    
         
            +
                      LegendQueryUserDataHelper.updateVisitedDataSpaceExecContext(
         
     | 
| 
      
 212 
     | 
    
         
            +
                        this.applicationStore.userDataService,
         
     | 
| 
      
 213 
     | 
    
         
            +
                        this.groupId,
         
     | 
| 
      
 214 
     | 
    
         
            +
                        this.artifactId,
         
     | 
| 
      
 215 
     | 
    
         
            +
                        dataSpace.path,
         
     | 
| 
      
 216 
     | 
    
         
            +
                        ec.name,
         
     | 
| 
      
 217 
     | 
    
         
            +
                      ),
         
     | 
| 
      
 218 
     | 
    
         
            +
                    );
         
     | 
| 
       196 
219 
     | 
    
         
             
                  },
         
     | 
| 
       197 
220 
     | 
    
         
             
                  (runtimeValue: Runtime) => {
         
     | 
| 
       198 
221 
     | 
    
         
             
                    const runtimePointer = guaranteeType(runtimeValue, RuntimePointer);
         
     | 
| 
         @@ -235,6 +258,8 @@ export class DataSpaceQueryCreatorStore extends QueryEditorStore { 
     | 
|
| 
       235 
258 
     | 
    
         
             
                  projectInfo,
         
     | 
| 
       236 
259 
     | 
    
         
             
                  this.applicationStore.config.options.queryBuilderConfig,
         
     | 
| 
       237 
260 
     | 
    
         
             
                  sourceInfo,
         
     | 
| 
      
 261 
     | 
    
         
            +
                  (dataSpaceInfo: DataSpaceInfo) =>
         
     | 
| 
      
 262 
     | 
    
         
            +
                    hasDataSpaceInfoBeenVisited(dataSpaceInfo, visitedDataSpaces),
         
     | 
| 
       238 
263 
     | 
    
         
             
                );
         
     | 
| 
       239 
264 
     | 
    
         
             
                queryBuilderState.setExecutionContext(executionContext);
         
     | 
| 
       240 
265 
     | 
    
         
             
                queryBuilderState.propagateExecutionContextChange(executionContext);
         
     | 
| 
         @@ -257,9 +282,32 @@ export class DataSpaceQueryCreatorStore extends QueryEditorStore { 
     | 
|
| 
       257 
282 
     | 
    
         
             
                  );
         
     | 
| 
       258 
283 
     | 
    
         
             
                }
         
     | 
| 
       259 
284 
     | 
    
         | 
| 
      
 285 
     | 
    
         
            +
                // add to visited dataspaces
         
     | 
| 
      
 286 
     | 
    
         
            +
                this.addVisitedDataSpace(executionContext.name);
         
     | 
| 
       260 
287 
     | 
    
         
             
                return queryBuilderState;
         
     | 
| 
       261 
288 
     | 
    
         
             
              }
         
     | 
| 
       262 
289 
     | 
    
         | 
| 
      
 290 
     | 
    
         
            +
              addVisitedDataSpace(execName: string | undefined): void {
         
     | 
| 
      
 291 
     | 
    
         
            +
                try {
         
     | 
| 
      
 292 
     | 
    
         
            +
                  LegendQueryUserDataHelper.addVisitedDatspace(
         
     | 
| 
      
 293 
     | 
    
         
            +
                    this.applicationStore.userDataService,
         
     | 
| 
      
 294 
     | 
    
         
            +
                    createSimpleVisitedDataspace(
         
     | 
| 
      
 295 
     | 
    
         
            +
                      this.groupId,
         
     | 
| 
      
 296 
     | 
    
         
            +
                      this.artifactId,
         
     | 
| 
      
 297 
     | 
    
         
            +
                      this.versionId,
         
     | 
| 
      
 298 
     | 
    
         
            +
                      this.dataSpacePath,
         
     | 
| 
      
 299 
     | 
    
         
            +
                      execName,
         
     | 
| 
      
 300 
     | 
    
         
            +
                    ),
         
     | 
| 
      
 301 
     | 
    
         
            +
                  );
         
     | 
| 
      
 302 
     | 
    
         
            +
                } catch (error) {
         
     | 
| 
      
 303 
     | 
    
         
            +
                  assertErrorThrown(error);
         
     | 
| 
      
 304 
     | 
    
         
            +
                  this.applicationStore.logService.warn(
         
     | 
| 
      
 305 
     | 
    
         
            +
                    LogEvent.create(LEGEND_QUERY_APP_EVENT.LOCAL_STORAGE_PERSIST_ERROR),
         
     | 
| 
      
 306 
     | 
    
         
            +
                    error.message,
         
     | 
| 
      
 307 
     | 
    
         
            +
                  );
         
     | 
| 
      
 308 
     | 
    
         
            +
                }
         
     | 
| 
      
 309 
     | 
    
         
            +
              }
         
     | 
| 
      
 310 
     | 
    
         
            +
             
     | 
| 
       263 
311 
     | 
    
         
             
              getPersistConfiguration(
         
     | 
| 
       264 
312 
     | 
    
         
             
                lambda: RawLambda,
         
     | 
| 
       265 
313 
     | 
    
         
             
                options?: { update?: boolean | undefined },
         
     | 
| 
         @@ -283,4 +331,15 @@ export class DataSpaceQueryCreatorStore extends QueryEditorStore { 
     | 
|
| 
       283 
331 
     | 
    
         
             
                  },
         
     | 
| 
       284 
332 
     | 
    
         
             
                };
         
     | 
| 
       285 
333 
     | 
    
         
             
              }
         
     | 
| 
      
 334 
     | 
    
         
            +
             
     | 
| 
      
 335 
     | 
    
         
            +
              override onInitializeFailure(): void {
         
     | 
| 
      
 336 
     | 
    
         
            +
                LegendQueryUserDataHelper.removeRecentlyViewedDataSpace(
         
     | 
| 
      
 337 
     | 
    
         
            +
                  this.applicationStore.userDataService,
         
     | 
| 
      
 338 
     | 
    
         
            +
                  createVisitedDataSpaceId(
         
     | 
| 
      
 339 
     | 
    
         
            +
                    this.groupId,
         
     | 
| 
      
 340 
     | 
    
         
            +
                    this.artifactId,
         
     | 
| 
      
 341 
     | 
    
         
            +
                    this.dataSpacePath,
         
     | 
| 
      
 342 
     | 
    
         
            +
                  ),
         
     | 
| 
      
 343 
     | 
    
         
            +
                );
         
     | 
| 
      
 344 
     | 
    
         
            +
              }
         
     | 
| 
       286 
345 
     | 
    
         
             
            }
         
     |