@finos/legend-query-builder 4.19.12 → 4.19.14
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__/QueryBuilderDocumentation.d.ts +2 -1
- package/lib/__lib__/QueryBuilderDocumentation.d.ts.map +1 -1
- package/lib/__lib__/QueryBuilderDocumentation.js +1 -0
- package/lib/__lib__/QueryBuilderDocumentation.js.map +1 -1
- package/lib/__lib__/QueryBuilderEvent.d.ts +63 -2
- package/lib/__lib__/QueryBuilderEvent.d.ts.map +1 -1
- package/lib/__lib__/QueryBuilderEvent.js +74 -1
- package/lib/__lib__/QueryBuilderEvent.js.map +1 -1
- package/lib/__lib__/QueryBuilderTelemetryHelper.d.ts +204 -8
- package/lib/__lib__/QueryBuilderTelemetryHelper.d.ts.map +1 -1
- package/lib/__lib__/QueryBuilderTelemetryHelper.js +104 -0
- package/lib/__lib__/QueryBuilderTelemetryHelper.js.map +1 -1
- package/lib/components/QueryBuilder.d.ts.map +1 -1
- package/lib/components/QueryBuilder.js +83 -14
- package/lib/components/QueryBuilder.js.map +1 -1
- package/lib/components/QueryBuilderConstantExpressionPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderConstantExpressionPanel.js +18 -1
- package/lib/components/QueryBuilderConstantExpressionPanel.js.map +1 -1
- package/lib/components/QueryBuilderParametersPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderParametersPanel.js +18 -1
- package/lib/components/QueryBuilderParametersPanel.js.map +1 -1
- package/lib/components/QueryBuilderSideBar.d.ts.map +1 -1
- package/lib/components/QueryBuilderSideBar.js +19 -0
- package/lib/components/QueryBuilderSideBar.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.js +42 -1
- package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js +25 -5
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js +55 -0
- package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.js +95 -8
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSWindowPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSWindowPanel.js +37 -4
- package/lib/components/fetch-structure/QueryBuilderTDSWindowPanel.js.map +1 -1
- package/lib/components/filter/QueryBuilderFilterPanel.d.ts.map +1 -1
- package/lib/components/filter/QueryBuilderFilterPanel.js +24 -5
- package/lib/components/filter/QueryBuilderFilterPanel.js.map +1 -1
- package/lib/components/result/QueryBuilderDataProductErrorPanel.d.ts +61 -0
- package/lib/components/result/QueryBuilderDataProductErrorPanel.d.ts.map +1 -0
- package/lib/components/result/QueryBuilderDataProductErrorPanel.js +176 -0
- package/lib/components/result/QueryBuilderDataProductErrorPanel.js.map +1 -0
- package/lib/components/result/QueryBuilderResultPanel.d.ts.map +1 -1
- package/lib/components/result/QueryBuilderResultPanel.js +24 -18
- package/lib/components/result/QueryBuilderResultPanel.js.map +1 -1
- package/lib/data-access-overview.css +1 -1
- package/lib/index.css +2 -2
- package/lib/index.css.map +1 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/package.json +1 -1
- package/lib/stores/QueryBuilderResultState.d.ts +11 -1
- package/lib/stores/QueryBuilderResultState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderResultState.js +79 -15
- package/lib/stores/QueryBuilderResultState.js.map +1 -1
- package/lib/stores/QueryBuilderState.d.ts +139 -9
- package/lib/stores/QueryBuilderState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderState.js +134 -22
- package/lib/stores/QueryBuilderState.js.map +1 -1
- package/lib/stores/QueryBuilder_LegendApplicationPlugin_Extension.d.ts +13 -0
- package/lib/stores/QueryBuilder_LegendApplicationPlugin_Extension.d.ts.map +1 -1
- package/lib/stores/QueryLoaderState.d.ts +33 -5
- package/lib/stores/QueryLoaderState.d.ts.map +1 -1
- package/lib/stores/QueryLoaderState.js +10 -1
- package/lib/stores/QueryLoaderState.js.map +1 -1
- package/lib/stores/data-access/DataProductAccessInfo.d.ts +37 -0
- package/lib/stores/data-access/DataProductAccessInfo.d.ts.map +1 -0
- package/lib/stores/data-access/DataProductAccessInfo.js +17 -0
- package/lib/stores/data-access/DataProductAccessInfo.js.map +1 -0
- package/lib/stores/data-cube/QueryBuilderDataCubeEngine.js +1 -1
- package/lib/stores/data-cube/QueryBuilderDataCubeEngine.js.map +1 -1
- package/lib/stores/explorer/QueryBuilderExplorerState.js +1 -1
- package/lib/stores/explorer/QueryBuilderExplorerState.js.map +1 -1
- package/lib/stores/milestoning/QueryBuilderMilestoningHelper.d.ts.map +1 -1
- package/lib/stores/milestoning/QueryBuilderMilestoningHelper.js +34 -9
- package/lib/stores/milestoning/QueryBuilderMilestoningHelper.js.map +1 -1
- package/lib/stores/milestoning/QueryBuilderMilestoningState.d.ts +5 -0
- package/lib/stores/milestoning/QueryBuilderMilestoningState.d.ts.map +1 -1
- package/lib/stores/milestoning/QueryBuilderMilestoningState.js +13 -0
- package/lib/stores/milestoning/QueryBuilderMilestoningState.js.map +1 -1
- package/lib/stores/workflows/dataProduct/DataProductQueryBuilderState.d.ts +2 -0
- package/lib/stores/workflows/dataProduct/DataProductQueryBuilderState.d.ts.map +1 -1
- package/lib/stores/workflows/dataProduct/DataProductQueryBuilderState.js +50 -1
- package/lib/stores/workflows/dataProduct/DataProductQueryBuilderState.js.map +1 -1
- package/package.json +10 -10
- package/src/__lib__/QueryBuilderDocumentation.ts +1 -0
- package/src/__lib__/QueryBuilderEvent.ts +80 -1
- package/src/__lib__/QueryBuilderTelemetryHelper.ts +450 -8
- package/src/components/QueryBuilder.tsx +157 -38
- package/src/components/QueryBuilderConstantExpressionPanel.tsx +24 -2
- package/src/components/QueryBuilderParametersPanel.tsx +25 -2
- package/src/components/QueryBuilderSideBar.tsx +28 -0
- package/src/components/fetch-structure/QueryBuilderGraphFetchTreePanel.tsx +56 -1
- package/src/components/fetch-structure/QueryBuilderPostFilterPanel.tsx +31 -4
- package/src/components/fetch-structure/QueryBuilderResultModifierPanel.tsx +74 -0
- package/src/components/fetch-structure/QueryBuilderTDSPanel.tsx +123 -8
- package/src/components/fetch-structure/QueryBuilderTDSWindowPanel.tsx +49 -4
- package/src/components/filter/QueryBuilderFilterPanel.tsx +31 -4
- package/src/components/result/QueryBuilderDataProductErrorPanel.tsx +441 -0
- package/src/components/result/QueryBuilderResultPanel.tsx +49 -32
- package/src/index.ts +2 -0
- package/src/stores/QueryBuilderResultState.ts +107 -19
- package/src/stores/QueryBuilderState.ts +260 -29
- package/src/stores/QueryBuilder_LegendApplicationPlugin_Extension.ts +20 -0
- package/src/stores/QueryLoaderState.ts +47 -6
- package/src/stores/data-access/DataProductAccessInfo.ts +37 -0
- package/src/stores/data-cube/QueryBuilderDataCubeEngine.ts +1 -1
- package/src/stores/explorer/QueryBuilderExplorerState.ts +1 -1
- package/src/stores/milestoning/QueryBuilderMilestoningHelper.ts +63 -8
- package/src/stores/milestoning/QueryBuilderMilestoningState.ts +20 -0
- package/src/stores/workflows/dataProduct/DataProductQueryBuilderState.ts +68 -0
- package/tsconfig.json +2 -0
|
@@ -71,6 +71,7 @@ import {
|
|
|
71
71
|
import { QueryBuilderParametersPanel } from './QueryBuilderParametersPanel.js';
|
|
72
72
|
import { QueryBuilderFunctionsExplorerPanel } from './explorer/QueryBuilderFunctionsExplorerPanel.js';
|
|
73
73
|
import { QueryBuilderTDSState } from '../stores/fetch-structure/tds/QueryBuilderTDSState.js';
|
|
74
|
+
import { DataProductQueryBuilderState } from '../stores/workflows/dataProduct/DataProductQueryBuilderState.js';
|
|
74
75
|
import { QueryBuilderDiffViewPanelDiaglog } from './QueryBuilderDiffPanel.js';
|
|
75
76
|
import { guaranteeType, returnUndefOnError } from '@finos/legend-shared';
|
|
76
77
|
import { QueryBuilderGraphFetchTreeState } from '../stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.js';
|
|
@@ -265,18 +266,36 @@ export const QueryBuilder = observer(
|
|
|
265
266
|
);
|
|
266
267
|
};
|
|
267
268
|
const toggleShowParameterPanel = (): void => {
|
|
268
|
-
queryBuilderState.
|
|
269
|
-
|
|
269
|
+
const nextEnabled = !queryBuilderState.showParametersPanel;
|
|
270
|
+
queryBuilderState.setShowParametersPanel(nextEnabled);
|
|
271
|
+
QueryBuilderTelemetryHelper.logEvent_TogglePanelParameter(
|
|
272
|
+
applicationStore.telemetryService,
|
|
273
|
+
{
|
|
274
|
+
...queryBuilderState.safeGetTelemetryContext(),
|
|
275
|
+
enabled: nextEnabled,
|
|
276
|
+
},
|
|
270
277
|
);
|
|
271
278
|
};
|
|
272
279
|
const toggleConstantPanel = (): void => {
|
|
273
|
-
queryBuilderState.constantState.
|
|
274
|
-
|
|
280
|
+
const nextEnabled = !queryBuilderState.constantState.showConstantPanel;
|
|
281
|
+
queryBuilderState.constantState.setShowConstantPanel(nextEnabled);
|
|
282
|
+
QueryBuilderTelemetryHelper.logEvent_TogglePanelConstant(
|
|
283
|
+
applicationStore.telemetryService,
|
|
284
|
+
{
|
|
285
|
+
...queryBuilderState.safeGetTelemetryContext(),
|
|
286
|
+
enabled: nextEnabled,
|
|
287
|
+
},
|
|
275
288
|
);
|
|
276
289
|
};
|
|
277
290
|
const toggleShowFilterPanel = (): void => {
|
|
278
|
-
queryBuilderState.filterState.
|
|
279
|
-
|
|
291
|
+
const nextEnabled = !queryBuilderState.filterState.showPanel;
|
|
292
|
+
queryBuilderState.filterState.setShowPanel(nextEnabled);
|
|
293
|
+
QueryBuilderTelemetryHelper.logEvent_TogglePanelFilter(
|
|
294
|
+
applicationStore.telemetryService,
|
|
295
|
+
{
|
|
296
|
+
...queryBuilderState.safeGetTelemetryContext(),
|
|
297
|
+
enabled: nextEnabled,
|
|
298
|
+
},
|
|
280
299
|
);
|
|
281
300
|
};
|
|
282
301
|
const toggleShowPostFilterPanel = (): void => {
|
|
@@ -290,6 +309,13 @@ export const QueryBuilder = observer(
|
|
|
290
309
|
QUERY_BUILDER_SETTING_KEY.SHOW_POST_FILTER_PANEL,
|
|
291
310
|
tdsState.showPostFilterPanel,
|
|
292
311
|
);
|
|
312
|
+
QueryBuilderTelemetryHelper.logEvent_TogglePanelPostFilter(
|
|
313
|
+
applicationStore.telemetryService,
|
|
314
|
+
{
|
|
315
|
+
...queryBuilderState.safeGetTelemetryContext(),
|
|
316
|
+
enabled: tdsState.showPostFilterPanel,
|
|
317
|
+
},
|
|
318
|
+
);
|
|
293
319
|
}
|
|
294
320
|
};
|
|
295
321
|
|
|
@@ -311,6 +337,13 @@ export const QueryBuilder = observer(
|
|
|
311
337
|
) {
|
|
312
338
|
queryBuilderState.fetchStructureState.implementation.aggregationState.disableCalendar();
|
|
313
339
|
}
|
|
340
|
+
QueryBuilderTelemetryHelper.logEvent_ToggleCalendar(
|
|
341
|
+
applicationStore.telemetryService,
|
|
342
|
+
{
|
|
343
|
+
...queryBuilderState.safeGetTelemetryContext(),
|
|
344
|
+
enabled: false,
|
|
345
|
+
},
|
|
346
|
+
);
|
|
314
347
|
},
|
|
315
348
|
},
|
|
316
349
|
{
|
|
@@ -330,7 +363,16 @@ export const QueryBuilder = observer(
|
|
|
330
363
|
{
|
|
331
364
|
label: 'Proceed',
|
|
332
365
|
type: ActionAlertActionType.PROCEED_WITH_CAUTION,
|
|
333
|
-
handler: (): void =>
|
|
366
|
+
handler: (): void => {
|
|
367
|
+
queryBuilderState.setIsCalendarEnabled(true);
|
|
368
|
+
QueryBuilderTelemetryHelper.logEvent_ToggleCalendar(
|
|
369
|
+
applicationStore.telemetryService,
|
|
370
|
+
{
|
|
371
|
+
...queryBuilderState.safeGetTelemetryContext(),
|
|
372
|
+
enabled: true,
|
|
373
|
+
},
|
|
374
|
+
);
|
|
375
|
+
},
|
|
334
376
|
},
|
|
335
377
|
{
|
|
336
378
|
label: 'Cancel',
|
|
@@ -347,6 +389,13 @@ export const QueryBuilder = observer(
|
|
|
347
389
|
queryBuilderState.setLambdaWriteMode(
|
|
348
390
|
QUERY_BUILDER_LAMBDA_WRITER_MODE.STANDARD,
|
|
349
391
|
);
|
|
392
|
+
QueryBuilderTelemetryHelper.logEvent_ToggleTypedTDS(
|
|
393
|
+
applicationStore.telemetryService,
|
|
394
|
+
{
|
|
395
|
+
...queryBuilderState.safeGetTelemetryContext(),
|
|
396
|
+
enabled: false,
|
|
397
|
+
},
|
|
398
|
+
);
|
|
350
399
|
} else {
|
|
351
400
|
queryBuilderState.applicationStore.alertService.setActionAlertInfo({
|
|
352
401
|
message:
|
|
@@ -357,10 +406,18 @@ export const QueryBuilder = observer(
|
|
|
357
406
|
{
|
|
358
407
|
label: 'Proceed',
|
|
359
408
|
type: ActionAlertActionType.PROCEED_WITH_CAUTION,
|
|
360
|
-
handler: (): void =>
|
|
409
|
+
handler: (): void => {
|
|
361
410
|
queryBuilderState.setLambdaWriteMode(
|
|
362
411
|
QUERY_BUILDER_LAMBDA_WRITER_MODE.TYPED_FETCH_STRUCTURE,
|
|
363
|
-
)
|
|
412
|
+
);
|
|
413
|
+
QueryBuilderTelemetryHelper.logEvent_ToggleTypedTDS(
|
|
414
|
+
applicationStore.telemetryService,
|
|
415
|
+
{
|
|
416
|
+
...queryBuilderState.safeGetTelemetryContext(),
|
|
417
|
+
enabled: true,
|
|
418
|
+
},
|
|
419
|
+
);
|
|
420
|
+
},
|
|
364
421
|
},
|
|
365
422
|
{
|
|
366
423
|
label: 'Cancel',
|
|
@@ -373,16 +430,32 @@ export const QueryBuilder = observer(
|
|
|
373
430
|
};
|
|
374
431
|
|
|
375
432
|
const editPure = (): void => {
|
|
433
|
+
QueryBuilderTelemetryHelper.logEvent_EditPureLaunched(
|
|
434
|
+
applicationStore.telemetryService,
|
|
435
|
+
queryBuilderState.safeGetTelemetryContext(),
|
|
436
|
+
);
|
|
376
437
|
openLambdaEditor(QueryBuilderTextEditorMode.TEXT);
|
|
377
438
|
};
|
|
378
439
|
const showPure = (): void => {
|
|
440
|
+
QueryBuilderTelemetryHelper.logEvent_ShowPureLaunched(
|
|
441
|
+
applicationStore.telemetryService,
|
|
442
|
+
queryBuilderState.safeGetTelemetryContext(),
|
|
443
|
+
);
|
|
379
444
|
openPure();
|
|
380
445
|
};
|
|
381
446
|
const showProtocol = (): void => {
|
|
447
|
+
QueryBuilderTelemetryHelper.logEvent_ShowProtocolLaunched(
|
|
448
|
+
applicationStore.telemetryService,
|
|
449
|
+
queryBuilderState.safeGetTelemetryContext(),
|
|
450
|
+
);
|
|
382
451
|
openLambdaEditor(QueryBuilderTextEditorMode.JSON);
|
|
383
452
|
};
|
|
384
453
|
|
|
385
454
|
const openCheckEntitlmentsEditor = (): void => {
|
|
455
|
+
QueryBuilderTelemetryHelper.logEvent_CheckEntitlementsLaunched(
|
|
456
|
+
applicationStore.telemetryService,
|
|
457
|
+
queryBuilderState.safeGetTelemetryContext(),
|
|
458
|
+
);
|
|
386
459
|
queryBuilderState.checkEntitlementsState.setShowCheckEntitlementsViewer(
|
|
387
460
|
true,
|
|
388
461
|
);
|
|
@@ -399,7 +472,15 @@ export const QueryBuilder = observer(
|
|
|
399
472
|
queryBuilderState.fetchStructureState.implementation,
|
|
400
473
|
QueryBuilderTDSState,
|
|
401
474
|
);
|
|
402
|
-
|
|
475
|
+
const nextEnabled = !tdsState.showWindowFuncPanel;
|
|
476
|
+
tdsState.setShowWindowFuncPanel(nextEnabled);
|
|
477
|
+
QueryBuilderTelemetryHelper.logEvent_TogglePanelWindow(
|
|
478
|
+
applicationStore.telemetryService,
|
|
479
|
+
{
|
|
480
|
+
...queryBuilderState.safeGetTelemetryContext(),
|
|
481
|
+
enabled: nextEnabled,
|
|
482
|
+
},
|
|
483
|
+
);
|
|
403
484
|
}
|
|
404
485
|
};
|
|
405
486
|
const showPostFetchStructurePanel =
|
|
@@ -446,6 +527,10 @@ export const QueryBuilder = observer(
|
|
|
446
527
|
);
|
|
447
528
|
const openQueryTutorial = (): void => {
|
|
448
529
|
if (queryDocEntry?.url) {
|
|
530
|
+
QueryBuilderTelemetryHelper.logEvent_OpenDocumentationLaunched(
|
|
531
|
+
applicationStore.telemetryService,
|
|
532
|
+
queryBuilderState.safeGetTelemetryContext(),
|
|
533
|
+
);
|
|
449
534
|
applicationStore.navigationService.navigator.visitAddress(
|
|
450
535
|
queryDocEntry.url,
|
|
451
536
|
);
|
|
@@ -453,6 +538,10 @@ export const QueryBuilder = observer(
|
|
|
453
538
|
};
|
|
454
539
|
const openFrequentlyAskedQuestions = (): void => {
|
|
455
540
|
if (frequentlyAskedQuestionEntry?.url) {
|
|
541
|
+
QueryBuilderTelemetryHelper.logEvent_OpenFAQLaunched(
|
|
542
|
+
applicationStore.telemetryService,
|
|
543
|
+
queryBuilderState.safeGetTelemetryContext(),
|
|
544
|
+
);
|
|
456
545
|
applicationStore.navigationService.navigator.visitAddress(
|
|
457
546
|
frequentlyAskedQuestionEntry.url,
|
|
458
547
|
);
|
|
@@ -460,14 +549,28 @@ export const QueryBuilder = observer(
|
|
|
460
549
|
};
|
|
461
550
|
const openSupportTickets = (): void => {
|
|
462
551
|
if (supportTicketsEntry?.url) {
|
|
552
|
+
QueryBuilderTelemetryHelper.logEvent_OpenSupportTicketsLaunched(
|
|
553
|
+
applicationStore.telemetryService,
|
|
554
|
+
queryBuilderState.safeGetTelemetryContext(),
|
|
555
|
+
);
|
|
463
556
|
applicationStore.navigationService.navigator.visitAddress(
|
|
464
557
|
supportTicketsEntry.url,
|
|
465
558
|
);
|
|
466
559
|
}
|
|
467
560
|
};
|
|
468
561
|
|
|
469
|
-
const toggleAssistant = (): void =>
|
|
562
|
+
const toggleAssistant = (): void => {
|
|
470
563
|
applicationStore.assistantService.toggleAssistant();
|
|
564
|
+
// Read the post-toggle state directly rather than pre-computing it —
|
|
565
|
+
// avoids drifting if `toggleAssistant()` ever becomes non-symmetric.
|
|
566
|
+
QueryBuilderTelemetryHelper.logEvent_ToggleVirtualAssistant(
|
|
567
|
+
applicationStore.telemetryService,
|
|
568
|
+
{
|
|
569
|
+
...queryBuilderState.safeGetTelemetryContext(),
|
|
570
|
+
enabled: !applicationStore.assistantService.isHidden,
|
|
571
|
+
},
|
|
572
|
+
);
|
|
573
|
+
};
|
|
471
574
|
|
|
472
575
|
const extraHelpMenuContentItems = applicationStore.pluginManager
|
|
473
576
|
.getApplicationPlugins()
|
|
@@ -490,11 +593,20 @@ export const QueryBuilder = observer(
|
|
|
490
593
|
</MenuContentItem>
|
|
491
594
|
));
|
|
492
595
|
|
|
493
|
-
const compileQuery = applicationStore.guardUnhandledError(() =>
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
596
|
+
const compileQuery = applicationStore.guardUnhandledError(() => {
|
|
597
|
+
QueryBuilderTelemetryHelper.logEvent_CompileQueryLaunched(
|
|
598
|
+
applicationStore.telemetryService,
|
|
599
|
+
queryBuilderState.safeGetTelemetryContext(),
|
|
600
|
+
);
|
|
601
|
+
return flowResult(queryBuilderState.compileQuery());
|
|
602
|
+
});
|
|
603
|
+
const showDiff = (): void => {
|
|
604
|
+
QueryBuilderTelemetryHelper.logEvent_ShowQueryDiffLaunched(
|
|
605
|
+
applicationStore.telemetryService,
|
|
606
|
+
queryBuilderState.safeGetTelemetryContext(),
|
|
607
|
+
);
|
|
497
608
|
queryBuilderState.changeDetectionState.showDiffViewPanel();
|
|
609
|
+
};
|
|
498
610
|
|
|
499
611
|
useEffect(() => {
|
|
500
612
|
// this condition is for passing all exisitng tests because when we initialize a queryBuilderState for a test,
|
|
@@ -778,29 +890,36 @@ export const QueryBuilder = observer(
|
|
|
778
890
|
</MenuContentItemLabel>
|
|
779
891
|
</MenuContentItem>
|
|
780
892
|
<MenuContentDivider />
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
893
|
+
{!(
|
|
894
|
+
queryBuilderState instanceof
|
|
895
|
+
DataProductQueryBuilderState
|
|
896
|
+
) && (
|
|
897
|
+
<MenuContentItem
|
|
898
|
+
onClick={openCheckEntitlmentsEditor}
|
|
899
|
+
disabled={
|
|
900
|
+
(queryBuilderState.isQuerySupported &&
|
|
901
|
+
queryBuilderState.fetchStructureState
|
|
902
|
+
.implementation instanceof
|
|
903
|
+
QueryBuilderTDSState &&
|
|
904
|
+
queryBuilderState.fetchStructureState
|
|
905
|
+
.implementation.projectionColumns.length ===
|
|
906
|
+
0) ||
|
|
907
|
+
!queryBuilderState.canBuildQuery
|
|
908
|
+
}
|
|
909
|
+
title={
|
|
910
|
+
!queryBuilderState.canBuildQuery
|
|
911
|
+
? 'Please fix query errors to check entitlements'
|
|
912
|
+
: ''
|
|
913
|
+
}
|
|
914
|
+
>
|
|
915
|
+
<MenuContentItemIcon>
|
|
916
|
+
<DataAccessIcon />
|
|
917
|
+
</MenuContentItemIcon>
|
|
918
|
+
<MenuContentItemLabel>
|
|
919
|
+
Check Entitlements
|
|
920
|
+
</MenuContentItemLabel>
|
|
921
|
+
</MenuContentItem>
|
|
922
|
+
)}
|
|
804
923
|
<MenuContentItem
|
|
805
924
|
onClick={editPure}
|
|
806
925
|
disabled={!queryBuilderState.canBuildQuery}
|
|
@@ -58,6 +58,7 @@ import {
|
|
|
58
58
|
import { BasicValueSpecificationEditor } from './shared/BasicValueSpecificationEditor.js';
|
|
59
59
|
import { QUERY_BUILDER_TEST_ID } from '../__lib__/QueryBuilderTesting.js';
|
|
60
60
|
import { QUERY_BUILDER_DOCUMENTATION_KEY } from '../__lib__/QueryBuilderDocumentation.js';
|
|
61
|
+
import { QueryBuilderTelemetryHelper } from '../__lib__/QueryBuilderTelemetryHelper.js';
|
|
61
62
|
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
62
63
|
import { variableExpression_setName } from '../stores/shared/ValueSpecificationModifierHelper.js';
|
|
63
64
|
import { LambdaEditor } from './shared/LambdaEditor.js';
|
|
@@ -175,6 +176,16 @@ const QueryBuilderSimpleConstantExpressionEditor = observer(
|
|
|
175
176
|
if (isCreating) {
|
|
176
177
|
variableState.addConstant(constantState);
|
|
177
178
|
}
|
|
179
|
+
QueryBuilderTelemetryHelper.logEvent_ConstantChanged(
|
|
180
|
+
applicationStore.telemetryService,
|
|
181
|
+
{
|
|
182
|
+
...queryBuilderState.safeGetTelemetryContext(),
|
|
183
|
+
change: {
|
|
184
|
+
action: isCreating ? 'add' : 'edit',
|
|
185
|
+
constantCount: variableState.constants.length,
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
);
|
|
178
189
|
handleCancel();
|
|
179
190
|
};
|
|
180
191
|
|
|
@@ -547,8 +558,19 @@ export const QueryBuilderConstantExpressionPanel = observer(
|
|
|
547
558
|
actions={{
|
|
548
559
|
editVariable: () =>
|
|
549
560
|
constantState.setSelectedConstant(constState),
|
|
550
|
-
deleteVariable: () =>
|
|
551
|
-
constantState.removeConstant(constState)
|
|
561
|
+
deleteVariable: () => {
|
|
562
|
+
constantState.removeConstant(constState);
|
|
563
|
+
QueryBuilderTelemetryHelper.logEvent_ConstantChanged(
|
|
564
|
+
queryBuilderState.applicationStore.telemetryService,
|
|
565
|
+
{
|
|
566
|
+
...queryBuilderState.safeGetTelemetryContext(),
|
|
567
|
+
change: {
|
|
568
|
+
action: 'remove',
|
|
569
|
+
constantCount: constantState.constants.length,
|
|
570
|
+
},
|
|
571
|
+
},
|
|
572
|
+
);
|
|
573
|
+
},
|
|
552
574
|
}}
|
|
553
575
|
extraContextMenuActions={getExtraContextMenu(constState)}
|
|
554
576
|
isReadOnly={isReadOnly}
|
|
@@ -50,6 +50,7 @@ import { LambdaParameterValuesEditor } from './shared/LambdaParameterValuesEdito
|
|
|
50
50
|
import { VariableViewer } from './shared/QueryBuilderVariableSelector.js';
|
|
51
51
|
import { QUERY_BUILDER_TEST_ID } from '../__lib__/QueryBuilderTesting.js';
|
|
52
52
|
import { QUERY_BUILDER_DOCUMENTATION_KEY } from '../__lib__/QueryBuilderDocumentation.js';
|
|
53
|
+
import { QueryBuilderTelemetryHelper } from '../__lib__/QueryBuilderTelemetryHelper.js';
|
|
53
54
|
import { useCallback, useState } from 'react';
|
|
54
55
|
import {
|
|
55
56
|
buildElementOption,
|
|
@@ -166,6 +167,16 @@ const VariableExpressionEditor = observer(
|
|
|
166
167
|
defaultMilestoningValue,
|
|
167
168
|
);
|
|
168
169
|
}
|
|
170
|
+
QueryBuilderTelemetryHelper.logEvent_ParameterChanged(
|
|
171
|
+
applicationStore.telemetryService,
|
|
172
|
+
{
|
|
173
|
+
...queryBuilderState.safeGetTelemetryContext(),
|
|
174
|
+
change: {
|
|
175
|
+
action: isCreating ? 'add' : 'edit',
|
|
176
|
+
parameterCount: queryParametersState.parameterStates.length,
|
|
177
|
+
},
|
|
178
|
+
},
|
|
179
|
+
);
|
|
169
180
|
|
|
170
181
|
handleCancel();
|
|
171
182
|
};
|
|
@@ -390,8 +401,20 @@ export const QueryBuilderParametersPanel = observer(
|
|
|
390
401
|
actions={{
|
|
391
402
|
editVariable: () =>
|
|
392
403
|
queryParameterState.setSelectedParameter(pState),
|
|
393
|
-
deleteVariable: () =>
|
|
394
|
-
queryParameterState.removeParameter(pState)
|
|
404
|
+
deleteVariable: () => {
|
|
405
|
+
queryParameterState.removeParameter(pState);
|
|
406
|
+
QueryBuilderTelemetryHelper.logEvent_ParameterChanged(
|
|
407
|
+
queryBuilderState.applicationStore.telemetryService,
|
|
408
|
+
{
|
|
409
|
+
...queryBuilderState.safeGetTelemetryContext(),
|
|
410
|
+
change: {
|
|
411
|
+
action: 'remove',
|
|
412
|
+
parameterCount:
|
|
413
|
+
queryParameterState.parameterStates.length,
|
|
414
|
+
},
|
|
415
|
+
},
|
|
416
|
+
);
|
|
417
|
+
},
|
|
395
418
|
}}
|
|
396
419
|
/>
|
|
397
420
|
))}
|
|
@@ -47,6 +47,7 @@ import {
|
|
|
47
47
|
type PackageableElementOption,
|
|
48
48
|
} from '@finos/legend-lego/graph-editor';
|
|
49
49
|
import type { QueryBuilder_LegendApplicationPlugin_Extension } from '../stores/QueryBuilder_LegendApplicationPlugin_Extension.js';
|
|
50
|
+
import { QueryBuilderTelemetryHelper } from '../__lib__/QueryBuilderTelemetryHelper.js';
|
|
50
51
|
|
|
51
52
|
export const getParameterValue = (
|
|
52
53
|
parameter: ValueSpecification | undefined,
|
|
@@ -130,6 +131,15 @@ export const QueryBuilderClassSelector = observer(
|
|
|
130
131
|
return;
|
|
131
132
|
}
|
|
132
133
|
queryBuilderState.changeSourceElement(val.value);
|
|
134
|
+
QueryBuilderTelemetryHelper.logEvent_ExecutionContextChanged(
|
|
135
|
+
applicationStore.telemetryService,
|
|
136
|
+
{
|
|
137
|
+
...queryBuilderState.safeGetTelemetryContext(),
|
|
138
|
+
change: {
|
|
139
|
+
subtype: 'class',
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
);
|
|
133
143
|
onClassChange?.(val.value);
|
|
134
144
|
};
|
|
135
145
|
|
|
@@ -256,6 +266,15 @@ const BasicQueryBuilderSetup = observer(
|
|
|
256
266
|
return;
|
|
257
267
|
}
|
|
258
268
|
queryBuilderState.changeMapping(val.value);
|
|
269
|
+
QueryBuilderTelemetryHelper.logEvent_ExecutionContextChanged(
|
|
270
|
+
applicationStore.telemetryService,
|
|
271
|
+
{
|
|
272
|
+
...queryBuilderState.safeGetTelemetryContext(),
|
|
273
|
+
change: {
|
|
274
|
+
subtype: 'mapping',
|
|
275
|
+
},
|
|
276
|
+
},
|
|
277
|
+
);
|
|
259
278
|
};
|
|
260
279
|
const mappingFilterOption = createFilter({
|
|
261
280
|
ignoreCase: true,
|
|
@@ -287,6 +306,15 @@ const BasicQueryBuilderSetup = observer(
|
|
|
287
306
|
return;
|
|
288
307
|
}
|
|
289
308
|
queryBuilderState.changeRuntime(val.value);
|
|
309
|
+
QueryBuilderTelemetryHelper.logEvent_ExecutionContextChanged(
|
|
310
|
+
applicationStore.telemetryService,
|
|
311
|
+
{
|
|
312
|
+
...queryBuilderState.safeGetTelemetryContext(),
|
|
313
|
+
change: {
|
|
314
|
+
subtype: 'runtime',
|
|
315
|
+
},
|
|
316
|
+
},
|
|
317
|
+
);
|
|
290
318
|
};
|
|
291
319
|
const runtimeFilterOption = createFilter({
|
|
292
320
|
ignoreCase: true,
|
|
@@ -409,6 +409,17 @@ export const QueryBuilderGraphFetchExternalConfig = observer(
|
|
|
409
409
|
} else {
|
|
410
410
|
removeNodeRecursively(serializationTreeData, node);
|
|
411
411
|
serializationState.setGraphFetchTree({ ...serializationTreeData });
|
|
412
|
+
QueryBuilderTelemetryHelper.logEvent_GraphFetchChanged(
|
|
413
|
+
graphFetchState.queryBuilderState.applicationStore.telemetryService,
|
|
414
|
+
{
|
|
415
|
+
...graphFetchState.queryBuilderState.safeGetTelemetryContext(),
|
|
416
|
+
change: {
|
|
417
|
+
action: 'remove',
|
|
418
|
+
nodeCount: serializationTreeData.nodes.size,
|
|
419
|
+
serializationType: serializationState.getLabel(),
|
|
420
|
+
},
|
|
421
|
+
},
|
|
422
|
+
);
|
|
412
423
|
}
|
|
413
424
|
};
|
|
414
425
|
|
|
@@ -533,10 +544,31 @@ export const QueryBuilderGraphFetchTreeExplorer = observer(
|
|
|
533
544
|
updateTreeData({ ...serializationState.treeData });
|
|
534
545
|
}
|
|
535
546
|
updateTreeData({ ...treeData });
|
|
547
|
+
QueryBuilderTelemetryHelper.logEvent_GraphFetchChanged(
|
|
548
|
+
graphFetchState.queryBuilderState.applicationStore.telemetryService,
|
|
549
|
+
{
|
|
550
|
+
...graphFetchState.queryBuilderState.safeGetTelemetryContext(),
|
|
551
|
+
change: {
|
|
552
|
+
action: 'remove',
|
|
553
|
+
nodeCount: treeData.nodes.size,
|
|
554
|
+
},
|
|
555
|
+
},
|
|
556
|
+
);
|
|
536
557
|
};
|
|
537
558
|
|
|
538
|
-
const toggleChecked = (): void =>
|
|
559
|
+
const toggleChecked = (): void => {
|
|
539
560
|
graphFetchState.setChecked(!graphFetchState.isChecked);
|
|
561
|
+
QueryBuilderTelemetryHelper.logEvent_GraphFetchChanged(
|
|
562
|
+
graphFetchState.queryBuilderState.applicationStore.telemetryService,
|
|
563
|
+
{
|
|
564
|
+
...graphFetchState.queryBuilderState.safeGetTelemetryContext(),
|
|
565
|
+
change: {
|
|
566
|
+
action: 'check-toggle',
|
|
567
|
+
nodeCount: treeData.nodes.size,
|
|
568
|
+
},
|
|
569
|
+
},
|
|
570
|
+
);
|
|
571
|
+
};
|
|
540
572
|
|
|
541
573
|
const openConfigModal = (): void => {
|
|
542
574
|
if (serializationState instanceof GraphFetchPureSerializationState) {
|
|
@@ -594,6 +626,18 @@ export const QueryBuilderGraphFetchTreeExplorer = observer(
|
|
|
594
626
|
);
|
|
595
627
|
break;
|
|
596
628
|
}
|
|
629
|
+
QueryBuilderTelemetryHelper.logEvent_GraphFetchChanged(
|
|
630
|
+
graphFetchState.queryBuilderState.applicationStore
|
|
631
|
+
.telemetryService,
|
|
632
|
+
{
|
|
633
|
+
...graphFetchState.queryBuilderState.safeGetTelemetryContext(),
|
|
634
|
+
change: {
|
|
635
|
+
action: 'serialization-change',
|
|
636
|
+
nodeCount: treeData.nodes.size,
|
|
637
|
+
serializationType: implementationType,
|
|
638
|
+
},
|
|
639
|
+
},
|
|
640
|
+
);
|
|
597
641
|
},
|
|
598
642
|
),
|
|
599
643
|
},
|
|
@@ -769,6 +813,17 @@ const QueryBuilderGraphFetchTreePanel = observer(
|
|
|
769
813
|
refreshTreeData: true,
|
|
770
814
|
});
|
|
771
815
|
}
|
|
816
|
+
QueryBuilderTelemetryHelper.logEvent_GraphFetchChanged(
|
|
817
|
+
graphFetchTreeState.queryBuilderState.applicationStore
|
|
818
|
+
.telemetryService,
|
|
819
|
+
{
|
|
820
|
+
...graphFetchTreeState.queryBuilderState.safeGetTelemetryContext(),
|
|
821
|
+
change: {
|
|
822
|
+
action: 'add',
|
|
823
|
+
nodeCount: graphFetchTreeState.treeData?.nodes.size ?? 0,
|
|
824
|
+
},
|
|
825
|
+
},
|
|
826
|
+
);
|
|
772
827
|
},
|
|
773
828
|
[graphFetchTreeState, serializationState],
|
|
774
829
|
);
|
|
@@ -144,8 +144,19 @@ const QueryBuilderPostFilterConditionContextMenu = observer(
|
|
|
144
144
|
>(function QueryBuilderPostFilterConditionContextMenu(props, ref) {
|
|
145
145
|
const { tdsState, node } = props;
|
|
146
146
|
const postFilterState = tdsState.postFilterState;
|
|
147
|
-
const
|
|
147
|
+
const applicationStore = useApplicationStore();
|
|
148
|
+
const removeNode = (): void => {
|
|
148
149
|
postFilterState.removeNodeAndPruneBranch(node);
|
|
150
|
+
QueryBuilderTelemetryHelper.logEvent_PostFilterChanged(
|
|
151
|
+
applicationStore.telemetryService,
|
|
152
|
+
{
|
|
153
|
+
...tdsState.queryBuilderState.safeGetTelemetryContext(),
|
|
154
|
+
change: {
|
|
155
|
+
action: 'remove',
|
|
156
|
+
},
|
|
157
|
+
},
|
|
158
|
+
);
|
|
159
|
+
};
|
|
149
160
|
const createCondition = (): void => {
|
|
150
161
|
postFilterState.addNodeFromNode(
|
|
151
162
|
new QueryBuilderPostFilterTreeBlankConditionNodeData(undefined),
|
|
@@ -184,19 +195,34 @@ const QueryBuilderPostFilterConditionContextMenu = observer(
|
|
|
184
195
|
|
|
185
196
|
const QueryBuilderPostFilterGroupConditionEditor = observer(
|
|
186
197
|
(props: {
|
|
198
|
+
tdsState: QueryBuilderTDSState;
|
|
187
199
|
node: QueryBuilderPostFilterTreeGroupNodeData;
|
|
188
200
|
isDragOver: boolean;
|
|
189
201
|
isDroppable: boolean;
|
|
190
202
|
}) => {
|
|
191
|
-
const { node, isDragOver, isDroppable } = props;
|
|
203
|
+
const { tdsState, node, isDragOver, isDroppable } = props;
|
|
204
|
+
const applicationStore = useApplicationStore();
|
|
192
205
|
const switchOperation: React.MouseEventHandler<HTMLDivElement> = (
|
|
193
206
|
event,
|
|
194
207
|
): void => {
|
|
195
208
|
event.stopPropagation(); // prevent triggering selecting the node
|
|
196
|
-
|
|
209
|
+
const nextOperation =
|
|
197
210
|
node.groupOperation === QUERY_BUILDER_GROUP_OPERATION.AND
|
|
198
211
|
? QUERY_BUILDER_GROUP_OPERATION.OR
|
|
199
|
-
: QUERY_BUILDER_GROUP_OPERATION.AND
|
|
212
|
+
: QUERY_BUILDER_GROUP_OPERATION.AND;
|
|
213
|
+
node.setGroupOperation(nextOperation);
|
|
214
|
+
QueryBuilderTelemetryHelper.logEvent_PostFilterChanged(
|
|
215
|
+
applicationStore.telemetryService,
|
|
216
|
+
{
|
|
217
|
+
...tdsState.queryBuilderState.safeGetTelemetryContext(),
|
|
218
|
+
change: {
|
|
219
|
+
action: 'group-operation-change',
|
|
220
|
+
groupOperation:
|
|
221
|
+
nextOperation === QUERY_BUILDER_GROUP_OPERATION.AND
|
|
222
|
+
? 'and'
|
|
223
|
+
: 'or',
|
|
224
|
+
},
|
|
225
|
+
},
|
|
200
226
|
);
|
|
201
227
|
};
|
|
202
228
|
|
|
@@ -771,6 +797,7 @@ const QueryBuilderPostFilterTreeNodeContainer = observer(
|
|
|
771
797
|
>
|
|
772
798
|
{node instanceof QueryBuilderPostFilterTreeGroupNodeData && (
|
|
773
799
|
<QueryBuilderPostFilterGroupConditionEditor
|
|
800
|
+
tdsState={tdsState}
|
|
774
801
|
node={node}
|
|
775
802
|
isDroppable={isDroppable}
|
|
776
803
|
isDragOver={isDragOver}
|