@finos/legend-data-cube 0.1.16 → 0.1.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.
Files changed (69) hide show
  1. package/lib/__lib__/DataCubeEvent.d.ts +16 -1
  2. package/lib/__lib__/DataCubeEvent.d.ts.map +1 -1
  3. package/lib/__lib__/DataCubeEvent.js +15 -0
  4. package/lib/__lib__/DataCubeEvent.js.map +1 -1
  5. package/lib/components/DataCube.d.ts.map +1 -1
  6. package/lib/components/DataCube.js +23 -7
  7. package/lib/components/DataCube.js.map +1 -1
  8. package/lib/components/DataCubeStatusBar.d.ts.map +1 -1
  9. package/lib/components/DataCubeStatusBar.js +19 -1
  10. package/lib/components/DataCubeStatusBar.js.map +1 -1
  11. package/lib/components/view/editor/DataCubeEditor.d.ts.map +1 -1
  12. package/lib/components/view/editor/DataCubeEditor.js +6 -0
  13. package/lib/components/view/editor/DataCubeEditor.js.map +1 -1
  14. package/lib/components/view/extend/DataCubeColumnEditor.d.ts.map +1 -1
  15. package/lib/components/view/extend/DataCubeColumnEditor.js +5 -0
  16. package/lib/components/view/extend/DataCubeColumnEditor.js.map +1 -1
  17. package/lib/components/view/filter/DataCubeFilterEditor.d.ts.map +1 -1
  18. package/lib/components/view/filter/DataCubeFilterEditor.js +9 -1
  19. package/lib/components/view/filter/DataCubeFilterEditor.js.map +1 -1
  20. package/lib/index.css +1 -1
  21. package/lib/index.d.ts +1 -1
  22. package/lib/index.d.ts.map +1 -1
  23. package/lib/index.js +1 -1
  24. package/lib/index.js.map +1 -1
  25. package/lib/package.json +1 -1
  26. package/lib/stores/core/DataCubeEngine.d.ts +3 -1
  27. package/lib/stores/core/DataCubeEngine.d.ts.map +1 -1
  28. package/lib/stores/core/DataCubeEngine.js.map +1 -1
  29. package/lib/stores/core/DataCubeQueryEngine.d.ts +15 -0
  30. package/lib/stores/core/DataCubeQueryEngine.d.ts.map +1 -1
  31. package/lib/stores/core/DataCubeQueryEngine.js +17 -0
  32. package/lib/stores/core/DataCubeQueryEngine.js.map +1 -1
  33. package/lib/stores/core/model/DataCubeConfiguration.d.ts +1 -0
  34. package/lib/stores/core/model/DataCubeConfiguration.d.ts.map +1 -1
  35. package/lib/stores/core/model/DataCubeConfiguration.js +31 -1
  36. package/lib/stores/core/model/DataCubeConfiguration.js.map +1 -1
  37. package/lib/stores/view/DataCubeViewState.d.ts.map +1 -1
  38. package/lib/stores/view/DataCubeViewState.js +12 -1
  39. package/lib/stores/view/DataCubeViewState.js.map +1 -1
  40. package/lib/stores/view/grid/DataCubeGridClientEngine.d.ts.map +1 -1
  41. package/lib/stores/view/grid/DataCubeGridClientEngine.js +9 -0
  42. package/lib/stores/view/grid/DataCubeGridClientEngine.js.map +1 -1
  43. package/lib/stores/view/grid/DataCubeGridMenuBuilder.d.ts.map +1 -1
  44. package/lib/stores/view/grid/DataCubeGridMenuBuilder.js +168 -46
  45. package/lib/stores/view/grid/DataCubeGridMenuBuilder.js.map +1 -1
  46. package/lib/stores/view/grid/DataCubeGridState.d.ts.map +1 -1
  47. package/lib/stores/view/grid/DataCubeGridState.js +15 -1
  48. package/lib/stores/view/grid/DataCubeGridState.js.map +1 -1
  49. package/package.json +4 -4
  50. package/src/__lib__/DataCubeEvent.ts +15 -0
  51. package/src/components/DataCube.tsx +30 -7
  52. package/src/components/DataCubeStatusBar.tsx +27 -1
  53. package/src/components/view/editor/DataCubeEditor.tsx +10 -0
  54. package/src/components/view/extend/DataCubeColumnEditor.tsx +9 -0
  55. package/src/components/view/filter/DataCubeFilterEditor.tsx +16 -1
  56. package/src/index.tsx +1 -1
  57. package/src/stores/core/DataCubeEngine.tsx +9 -0
  58. package/src/stores/core/DataCubeQueryEngine.ts +17 -0
  59. package/src/stores/core/model/DataCubeConfiguration.ts +32 -1
  60. package/src/stores/view/DataCubeViewState.ts +16 -1
  61. package/src/stores/view/grid/DataCubeGridClientEngine.ts +13 -0
  62. package/src/stores/view/grid/DataCubeGridMenuBuilder.tsx +170 -41
  63. package/src/stores/view/grid/DataCubeGridState.ts +21 -1
  64. package/tsconfig.json +0 -1
  65. package/lib/__lib__/DataCubeTelemetryHelper.d.ts +0 -57
  66. package/lib/__lib__/DataCubeTelemetryHelper.d.ts.map +0 -1
  67. package/lib/__lib__/DataCubeTelemetryHelper.js +0 -33
  68. package/lib/__lib__/DataCubeTelemetryHelper.js.map +0 -1
  69. package/src/__lib__/DataCubeTelemetryHelper.ts +0 -96
@@ -30,6 +30,7 @@ import {
30
30
  isPivotResultColumnName,
31
31
  getPivotResultColumnBaseColumnName,
32
32
  DataCubeOperationAdvancedValueType,
33
+ DataCubeOpenEditorSource,
33
34
  } from '../../core/DataCubeQueryEngine.js';
34
35
  import {
35
36
  guaranteeIsNumber,
@@ -49,6 +50,7 @@ import { DataCubeEditorTab } from '../editor/DataCubeEditorState.js';
49
50
  import { _findCol } from '../../core/model/DataCubeColumn.js';
50
51
  import { useGridMenuItem, type CustomMenuItemProps } from 'ag-grid-react';
51
52
  import { FormBadge_WIP } from '../../../components/core/DataCubeFormUtils.js';
53
+ import { DataCubeEvent } from '../../../__lib__/DataCubeEvent.js';
52
54
 
53
55
  export function WIP_GridMenuItem({
54
56
  name,
@@ -200,6 +202,57 @@ export function generateMenuBuilder(
200
202
  const editor = view.editor;
201
203
  const extend = view.extend;
202
204
 
205
+ const logEmail = (format: string) => {
206
+ view.dataCube.telemetryService.sendTelemetry(DataCubeEvent.EMAIL_DATACUBE, {
207
+ ...view.engine.getDataFromSource(view.getInitialSource()),
208
+ emailFormat: format,
209
+ });
210
+ };
211
+
212
+ const logExport = (format: string) => {
213
+ view.dataCube.telemetryService.sendTelemetry(
214
+ DataCubeEvent.EXPORT_DATACUBE,
215
+ {
216
+ ...view.engine.getDataFromSource(view.getInitialSource()),
217
+ exportFormat: format,
218
+ },
219
+ );
220
+ };
221
+
222
+ const logOpeningPropertiesEditor = () => {
223
+ view.dataCube.telemetryService.sendTelemetry(
224
+ DataCubeEvent.OPEN_EDITOR_PROPERTIES,
225
+ {
226
+ ...view.engine.getDataFromSource(view.getInitialSource()),
227
+ openedFrom: DataCubeOpenEditorSource.GRID_MENU,
228
+ },
229
+ );
230
+ };
231
+
232
+ const logOpeningFilterEditor = () => {
233
+ view.dataCube.telemetryService.sendTelemetry(
234
+ DataCubeEvent.OPEN_EDITOR_FILTER,
235
+ {
236
+ ...view.engine.getDataFromSource(view.getInitialSource()),
237
+ openedFrom: DataCubeOpenEditorSource.GRID_MENU,
238
+ },
239
+ );
240
+ };
241
+
242
+ const logMenuItem = (menuName: string, subMenuName?: string) => {
243
+ const menuItem =
244
+ subMenuName === undefined
245
+ ? { menuName: menuName }
246
+ : { menuName: menuName, subMenuName: subMenuName };
247
+ view.dataCube.telemetryService.sendTelemetry(
248
+ DataCubeEvent.SELECT_ITEM_GRIDMENU,
249
+ {
250
+ ...view.engine.getDataFromSource(view.getInitialSource()),
251
+ ...menuItem,
252
+ },
253
+ );
254
+ };
255
+
203
256
  return (
204
257
  params: GetContextMenuItemsParams | GetMainMenuItemsParams,
205
258
  fromHeader: boolean,
@@ -230,24 +283,31 @@ export function generateMenuBuilder(
230
283
  ? [
231
284
  {
232
285
  name: 'Ascending',
233
- action: () =>
286
+ action: () => {
234
287
  controller.setSortByColumn(
235
288
  columnName,
236
289
  DataCubeQuerySortDirection.ASCENDING,
237
- ),
290
+ );
291
+ logMenuItem('Sort', 'Ascending');
292
+ },
238
293
  },
239
294
  {
240
295
  name: 'Descending',
241
- action: () =>
296
+ action: () => {
242
297
  controller.setSortByColumn(
243
298
  columnName,
244
299
  DataCubeQuerySortDirection.DESCENDING,
245
- ),
300
+ );
301
+ logMenuItem('Sort', 'Descending');
302
+ },
246
303
  },
247
304
  {
248
305
  name: 'Clear Sort',
249
306
  disabled: !_findCol(controller.sortColumns, columnName),
250
- action: () => controller.clearSortByColumn(columnName),
307
+ action: () => {
308
+ controller.clearSortByColumn(columnName);
309
+ logMenuItem('Sort', 'Clear Sort');
310
+ },
251
311
  },
252
312
  'separator',
253
313
  {
@@ -259,11 +319,13 @@ export function generateMenuBuilder(
259
319
  col.direction === DataCubeQuerySortDirection.ASCENDING,
260
320
  ),
261
321
  ),
262
- action: () =>
322
+ action: () => {
263
323
  controller.addSortByColumn(
264
324
  columnName,
265
325
  DataCubeQuerySortDirection.ASCENDING,
266
- ),
326
+ );
327
+ logMenuItem('Sort', 'Add Ascending');
328
+ },
267
329
  },
268
330
  {
269
331
  name: 'Add Descending',
@@ -274,11 +336,13 @@ export function generateMenuBuilder(
274
336
  col.direction === DataCubeQuerySortDirection.DESCENDING,
275
337
  ),
276
338
  ),
277
- action: () =>
339
+ action: () => {
278
340
  controller.addSortByColumn(
279
341
  columnName,
280
342
  DataCubeQuerySortDirection.DESCENDING,
281
- ),
343
+ );
344
+ logMenuItem('Sort', 'Add Descending');
345
+ },
282
346
  },
283
347
  'separator',
284
348
  ]
@@ -286,7 +350,10 @@ export function generateMenuBuilder(
286
350
  {
287
351
  name: 'Clear All Sorts',
288
352
  disabled: controller.sortColumns.length === 0,
289
- action: () => controller.clearAllSorts(),
353
+ action: () => {
354
+ controller.clearAllSorts();
355
+ logMenuItem('Clear All Sorts');
356
+ },
290
357
  },
291
358
  ],
292
359
  },
@@ -395,17 +462,21 @@ export function generateMenuBuilder(
395
462
  },
396
463
  {
397
464
  name: 'Excel',
398
- action: () =>
465
+ action: () => {
399
466
  view.grid.exportEngine.exportFile(
400
467
  DataCubeGridClientExportFormat.EXCEL,
401
- ),
468
+ );
469
+ logExport(DataCubeGridClientExportFormat.EXCEL);
470
+ },
402
471
  },
403
472
  {
404
473
  name: 'CSV',
405
- action: () =>
474
+ action: () => {
406
475
  view.grid.exportEngine.exportFile(
407
476
  DataCubeGridClientExportFormat.CSV,
408
- ),
477
+ );
478
+ logExport(DataCubeGridClientExportFormat.CSV);
479
+ },
409
480
  },
410
481
  'separator',
411
482
  {
@@ -458,6 +529,7 @@ export function generateMenuBuilder(
458
529
  .catch((error) =>
459
530
  dataCube.alertService.alertUnhandledError(error),
460
531
  );
532
+ logEmail(DataCubeGridClientExportFormat.EXCEL);
461
533
  },
462
534
  },
463
535
  {
@@ -468,6 +540,7 @@ export function generateMenuBuilder(
468
540
  .catch((error) =>
469
541
  dataCube.alertService.alertUnhandledError(error),
470
542
  );
543
+ logEmail(DataCubeGridClientExportFormat.CSV);
471
544
  },
472
545
  },
473
546
  {
@@ -514,11 +587,15 @@ export function generateMenuBuilder(
514
587
  name: 'Filters...',
515
588
  action: () => {
516
589
  filter.display.open();
590
+ logOpeningFilterEditor();
517
591
  },
518
592
  },
519
593
  {
520
594
  name: 'Clear All Filters',
521
- action: () => controller.clearFilters(),
595
+ action: () => {
596
+ controller.clearFilters();
597
+ logMenuItem('Filter', 'Clear All Filters');
598
+ },
522
599
  },
523
600
  ].filter(isNonNullable),
524
601
  },
@@ -532,14 +609,20 @@ export function generateMenuBuilder(
532
609
  ? [
533
610
  {
534
611
  name: `Vertical Pivot on ${columnName}`,
535
- action: () => controller.setVerticalPivotOnColumn(columnName),
612
+ action: () => {
613
+ controller.setVerticalPivotOnColumn(columnName);
614
+ logMenuItem('Pivot', 'Vertical Pivot');
615
+ },
536
616
  },
537
617
  {
538
618
  name: `Add Vertical Pivot on ${columnName}`,
539
619
  disabled: Boolean(
540
620
  _findCol(controller.verticalPivotColumns, columnName),
541
621
  ),
542
- action: () => controller.addVerticalPivotOnColumn(columnName),
622
+ action: () => {
623
+ controller.addVerticalPivotOnColumn(columnName);
624
+ logMenuItem('Pivot', 'Add Vertical Pivot');
625
+ },
543
626
  },
544
627
  {
545
628
  name: `Remove Vertical Pivot on ${columnName}`,
@@ -547,8 +630,10 @@ export function generateMenuBuilder(
547
630
  controller.verticalPivotColumns,
548
631
  columnName,
549
632
  ),
550
- action: () =>
551
- controller.removeVerticalPivotOnColumn(columnName),
633
+ action: () => {
634
+ controller.removeVerticalPivotOnColumn(columnName);
635
+ logMenuItem('Pivot', 'Remove Vertical Pivot');
636
+ },
552
637
  },
553
638
  'separator',
554
639
  ]
@@ -560,16 +645,20 @@ export function generateMenuBuilder(
560
645
  ? [
561
646
  {
562
647
  name: `Horizontal Pivot on ${columnName}`,
563
- action: () =>
564
- controller.setHorizontalPivotOnColumn(columnName),
648
+ action: () => {
649
+ controller.setHorizontalPivotOnColumn(columnName);
650
+ logMenuItem('Pivot', 'Horizontal Pivot');
651
+ },
565
652
  },
566
653
  {
567
654
  name: `Add Horizontal Pivot on ${columnName}`,
568
655
  disabled: Boolean(
569
656
  _findCol(controller.horizontalPivotColumns, columnName),
570
657
  ),
571
- action: () =>
572
- controller.addHorizontalPivotOnColumn(columnName),
658
+ action: () => {
659
+ controller.addHorizontalPivotOnColumn(columnName);
660
+ logMenuItem('Pivot', 'Add Horizontal Pivot');
661
+ },
573
662
  },
574
663
  'separator',
575
664
  ]
@@ -582,8 +671,13 @@ export function generateMenuBuilder(
582
671
  ? [
583
672
  {
584
673
  name: `Exclude Column ${baseColumnConfiguration.name} from Horizontal Pivot`,
585
- action: () =>
586
- controller.excludeColumnFromHorizontalPivot(columnName),
674
+ action: () => {
675
+ controller.excludeColumnFromHorizontalPivot(columnName);
676
+ logMenuItem(
677
+ 'Pivot',
678
+ 'Exclude Column From Horizontal Pivot',
679
+ );
680
+ },
587
681
  },
588
682
  'separator',
589
683
  ]
@@ -596,8 +690,10 @@ export function generateMenuBuilder(
596
690
  ? [
597
691
  {
598
692
  name: `Include Column ${columnName} in Horizontal Pivot`,
599
- action: () =>
600
- controller.includeColumnInHorizontalPivot(columnName),
693
+ action: () => {
694
+ controller.includeColumnInHorizontalPivot(columnName);
695
+ logMenuItem('Pivot', 'Include Column in Horizontal Pivot');
696
+ },
601
697
  },
602
698
  'separator',
603
699
  ]
@@ -605,12 +701,18 @@ export function generateMenuBuilder(
605
701
  {
606
702
  name: `Clear All Vertical Pivots`,
607
703
  disabled: controller.verticalPivotColumns.length === 0,
608
- action: () => controller.clearAllVerticalPivots(),
704
+ action: () => {
705
+ controller.clearAllVerticalPivots();
706
+ logMenuItem('Pivot', 'Clear All Vertical Pivots');
707
+ },
609
708
  },
610
709
  {
611
710
  name: `Clear All Horizontal Pivots`,
612
711
  disabled: controller.horizontalPivotColumns.length === 0,
613
- action: () => controller.clearAllHorizontalPivots(),
712
+ action: () => {
713
+ controller.clearAllHorizontalPivots();
714
+ logMenuItem('Pivot', 'Clear All Horizontal Pivots');
715
+ },
614
716
  },
615
717
  ],
616
718
  },
@@ -625,6 +727,7 @@ export function generateMenuBuilder(
625
727
  .catch((error) =>
626
728
  dataCube.alertService.alertUnhandledError(error),
627
729
  );
730
+ logMenuItem('Extended Columns', 'Add New Column...');
628
731
  },
629
732
  },
630
733
  ...(columnConfiguration && columnName
@@ -637,6 +740,7 @@ export function generateMenuBuilder(
637
740
  .catch((error) =>
638
741
  dataCube.alertService.alertUnhandledError(error),
639
742
  );
743
+ logMenuItem('Extended Columns', 'Extend Column');
640
744
  },
641
745
  },
642
746
  ]
@@ -652,6 +756,7 @@ export function generateMenuBuilder(
652
756
  .catch((error) =>
653
757
  dataCube.alertService.alertUnhandledError(error),
654
758
  );
759
+ logMenuItem('Extended Columns', 'Edit Column');
655
760
  },
656
761
  },
657
762
  {
@@ -662,6 +767,7 @@ export function generateMenuBuilder(
662
767
  .catch((error) =>
663
768
  dataCube.alertService.alertUnhandledError(error),
664
769
  );
770
+ logMenuItem('Extended Columns', 'Delete Column');
665
771
  },
666
772
  },
667
773
  ]
@@ -678,10 +784,12 @@ export function generateMenuBuilder(
678
784
  !column ||
679
785
  !columnConfiguration ||
680
786
  columnConfiguration.fixedWidth !== undefined,
681
- action: () =>
787
+ action: () => {
682
788
  params.api.autoSizeColumns(
683
789
  [column?.getColId()].filter(isNonNullable),
684
- ),
790
+ );
791
+ logMenuItem('Resize', 'Auto-size to Fit Content');
792
+ },
685
793
  },
686
794
  {
687
795
  name: `Minimize Column`,
@@ -699,12 +807,13 @@ export function generateMenuBuilder(
699
807
  },
700
808
  ]);
701
809
  }
810
+ logMenuItem('Resize', 'Minimize Column');
702
811
  },
703
812
  },
704
813
  'separator',
705
814
  {
706
815
  name: `Auto-size All Columns`,
707
- action: () =>
816
+ action: () => {
708
817
  params.api.autoSizeColumns([
709
818
  ...controller.configuration.columns
710
819
  .filter(
@@ -733,7 +842,9 @@ export function generateMenuBuilder(
733
842
  return undefined;
734
843
  })
735
844
  .filter(isNonNullable),
736
- ]),
845
+ ]);
846
+ logMenuItem('Resize', 'Auto-size All Columns');
847
+ },
737
848
  },
738
849
  {
739
850
  name: `Minimize All Columns`,
@@ -770,11 +881,15 @@ export function generateMenuBuilder(
770
881
  })
771
882
  .filter(isNonNullable),
772
883
  ]);
884
+ logMenuItem('Resize', 'Minimize All Columns');
773
885
  },
774
886
  },
775
887
  {
776
888
  name: `Size Grid to Fit Screen`,
777
- action: () => params.api.sizeColumnsToFit(),
889
+ action: () => {
890
+ params.api.sizeColumnsToFit();
891
+ logMenuItem('Resize', 'Size Grid to Fit Screen');
892
+ },
778
893
  },
779
894
  ],
780
895
  },
@@ -787,26 +902,33 @@ export function generateMenuBuilder(
787
902
  name: `Pin Left`,
788
903
  disabled: !column || column.isPinnedLeft(),
789
904
  checked: Boolean(column?.isPinnedLeft()),
790
- action: () =>
905
+ action: () => {
791
906
  controller.pinColumn(
792
907
  columnName,
793
908
  DataCubeColumnPinPlacement.LEFT,
794
- ),
909
+ );
910
+ logMenuItem('Pin', 'Pin Left');
911
+ },
795
912
  },
796
913
  {
797
914
  name: `Pin Right`,
798
915
  disabled: !column || column.isPinnedRight(),
799
916
  checked: Boolean(column?.isPinnedRight()),
800
- action: () =>
917
+ action: () => {
801
918
  controller.pinColumn(
802
919
  columnName,
803
920
  DataCubeColumnPinPlacement.RIGHT,
804
- ),
921
+ );
922
+ logMenuItem('Pin', 'Pin Right');
923
+ },
805
924
  },
806
925
  {
807
926
  name: `Unpin`,
808
927
  disabled: !column?.isPinned(),
809
- action: () => controller.pinColumn(columnName, undefined),
928
+ action: () => {
929
+ controller.pinColumn(columnName, undefined);
930
+ logMenuItem('Pin', 'Unpin');
931
+ },
810
932
  },
811
933
  'separator',
812
934
  ]
@@ -816,14 +938,20 @@ export function generateMenuBuilder(
816
938
  disabled: controller.configuration.columns.every(
817
939
  (col) => col.pinned === undefined,
818
940
  ),
819
- action: () => controller.removeAllPins(),
941
+ action: () => {
942
+ controller.removeAllPins();
943
+ logMenuItem('Pin', 'Remove All Pinnings');
944
+ },
820
945
  },
821
946
  ],
822
947
  },
823
948
  {
824
949
  name: 'Hide',
825
950
  disabled: !columnConfiguration,
826
- action: () => controller.showColumn(columnName, false),
951
+ action: () => {
952
+ controller.showColumn(columnName, false);
953
+ logMenuItem('Hide');
954
+ },
827
955
  },
828
956
  ...((columnName === INTERNAL__GRID_CLIENT_TREE_COLUMN_ID
829
957
  ? [
@@ -886,6 +1014,7 @@ export function generateMenuBuilder(
886
1014
  );
887
1015
  }
888
1016
  editor.display.open();
1017
+ logOpeningPropertiesEditor();
889
1018
  },
890
1019
  },
891
1020
  ] satisfies (DefaultMenuItem | MenuItemDef)[];
@@ -17,6 +17,7 @@
17
17
  import {
18
18
  debounce,
19
19
  guaranteeNonNullable,
20
+ StopWatch,
20
21
  type DebouncedFunc,
21
22
  } from '@finos/legend-shared';
22
23
  import { action, makeObservable, observable, runInAction } from 'mobx';
@@ -41,7 +42,7 @@ import { DataCubeSettingKey } from '../../../__lib__/DataCubeSetting.js';
41
42
  import { DEFAULT_ALERT_WINDOW_CONFIG } from '../../services/DataCubeLayoutService.js';
42
43
  import { AlertType } from '../../services/DataCubeAlertService.js';
43
44
  import { DataCubeGridMode } from '../../core/DataCubeQueryEngine.js';
44
-
45
+ import { DataCubeEvent } from '../../../__lib__/DataCubeEvent.js';
45
46
  /**
46
47
  * This query editor state is responsible for syncing the internal state of ag-grid
47
48
  * server-side row model data source with the data cube query state. When new snapshot
@@ -124,6 +125,13 @@ export class DataCubeGridState extends DataCubeSnapshotController {
124
125
  ? INTERNAL__GRID_CLIENT_DEFAULT_CACHE_BLOCK_SIZE
125
126
  : INTERNAL__GRID_CLIENT_MAX_CACHE_BLOCK_SIZE,
126
127
  });
128
+
129
+ this._engine.sendTelemetry(
130
+ val
131
+ ? DataCubeEvent.PAGINATION_ENABLE__SUCCESS
132
+ : DataCubeEvent.PAGINATION_DISABLE__SUCCESS,
133
+ this._engine.getDataFromSource(this._view.getInitialSource()),
134
+ );
127
135
  }
128
136
 
129
137
  async setCachingEnabled(
@@ -138,6 +146,7 @@ export class DataCubeGridState extends DataCubeSnapshotController {
138
146
 
139
147
  // disable caching
140
148
  if (val === false) {
149
+ const stopWatch = new StopWatch();
141
150
  await this._view.disposeCache();
142
151
 
143
152
  runInAction(() => {
@@ -150,11 +159,17 @@ export class DataCubeGridState extends DataCubeSnapshotController {
150
159
  );
151
160
  });
152
161
 
162
+ this._engine.sendTelemetry(DataCubeEvent.CACHING_DISABLE__SUCCESS, {
163
+ ...this._engine.getDataFromSource(this._view.getInitialSource()),
164
+ timings: this._engine.finalizeTimingRecord(stopWatch),
165
+ });
166
+
153
167
  return;
154
168
  }
155
169
 
156
170
  // enable caching
157
171
  const run = async () => {
172
+ const stopWatch = new StopWatch();
158
173
  await this._view.initializeCache();
159
174
 
160
175
  // only update value if cache processing succeeds
@@ -169,6 +184,11 @@ export class DataCubeGridState extends DataCubeSnapshotController {
169
184
  );
170
185
  });
171
186
  }
187
+
188
+ this._engine.sendTelemetry(DataCubeEvent.CACHING_ENABLE__SUCCESS, {
189
+ ...this._engine.getDataFromSource(this._view.getInitialSource()),
190
+ timings: this._engine.finalizeTimingRecord(stopWatch),
191
+ });
172
192
  };
173
193
 
174
194
  // TODO?: we might want to do a quick check here for the amount of data the cache
package/tsconfig.json CHANGED
@@ -54,7 +54,6 @@
54
54
  "./src/__lib__/DataCubeDocumentation.ts",
55
55
  "./src/__lib__/DataCubeEvent.ts",
56
56
  "./src/__lib__/DataCubeSetting.ts",
57
- "./src/__lib__/DataCubeTelemetryHelper.ts",
58
57
  "./src/__lib__/DataCubeTesting.ts",
59
58
  "./src/stores/DataCubeAPI.ts",
60
59
  "./src/stores/DataCubeOptions.ts",
@@ -1,57 +0,0 @@
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
- import type { TelemetryService } from '@finos/legend-application';
17
- import type { ProjectGAVCoordinates } from '@finos/legend-storage';
18
- type DataCube_TelemetryData = {
19
- dataCubeId?: string | undefined;
20
- error?: string | undefined;
21
- };
22
- type DataCube_LegendQuery_TelemetryData = DataCube_TelemetryData & {
23
- project?: ProjectGAVCoordinates | undefined;
24
- query: {
25
- name?: string | undefined;
26
- id: string;
27
- };
28
- };
29
- type DataCube_UserDefinedFunction_TelemetryData = DataCube_TelemetryData & {
30
- project?: ProjectGAVCoordinates | undefined;
31
- function: {
32
- path: string;
33
- runtime?: string | undefined;
34
- };
35
- };
36
- type DataCube_LocalFile_TelemetryData = DataCube_TelemetryData & {
37
- file: {
38
- name: string;
39
- format: string;
40
- };
41
- };
42
- type DataCube_AdhocQuery_TelemetryData = DataCube_TelemetryData & {
43
- project?: ProjectGAVCoordinates | undefined;
44
- adhocQuery: {
45
- mapping?: string | undefined;
46
- runtime: string;
47
- };
48
- };
49
- export declare class DataCubeTelemetryHelper {
50
- static logEvent_Datacube(service: TelemetryService, data: DataCube_TelemetryData, eventType: string): void;
51
- static logEvent_Datacube_LegendQuery(service: TelemetryService, data: DataCube_LegendQuery_TelemetryData, eventType: string): void;
52
- static logEvent_Datacube_AdhocFunction(service: TelemetryService, data: DataCube_UserDefinedFunction_TelemetryData, eventType: string): void;
53
- static logEvent_Datacube_LocalFile(service: TelemetryService, data: DataCube_LocalFile_TelemetryData, eventType: string): void;
54
- static logEvent_Datacube_AdhocQuery(service: TelemetryService, data: DataCube_AdhocQuery_TelemetryData, eventType: string): void;
55
- }
56
- export {};
57
- //# sourceMappingURL=DataCubeTelemetryHelper.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DataCubeTelemetryHelper.d.ts","sourceRoot":"","sources":["../../src/__lib__/DataCubeTelemetryHelper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEnE,KAAK,sBAAsB,GAAG;IAC5B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,CAAC;AAEF,KAAK,kCAAkC,GAAG,sBAAsB,GAAG;IACjE,OAAO,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;IAC5C,KAAK,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;CACH,CAAC;AAEF,KAAK,0CAA0C,GAAG,sBAAsB,GAAG;IACzE,OAAO,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;IAC5C,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC9B,CAAC;CACH,CAAC;AAEF,KAAK,gCAAgC,GAAG,sBAAsB,GAAG;IAC/D,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CAAC;AAEF,KAAK,iCAAiC,GAAG,sBAAsB,GAAG;IAChE,OAAO,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;IAC5C,UAAU,EAAE;QACV,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC7B,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC;AAEF,qBAAa,uBAAuB;IAClC,MAAM,CAAC,iBAAiB,CACtB,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,sBAAsB,EAC5B,SAAS,EAAE,MAAM,GAChB,IAAI;IAIP,MAAM,CAAC,6BAA6B,CAClC,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,kCAAkC,EACxC,SAAS,EAAE,MAAM,GAChB,IAAI;IAIP,MAAM,CAAC,+BAA+B,CACpC,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,0CAA0C,EAChD,SAAS,EAAE,MAAM,GAChB,IAAI;IAIP,MAAM,CAAC,2BAA2B,CAChC,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,gCAAgC,EACtC,SAAS,EAAE,MAAM,GAChB,IAAI;IAIP,MAAM,CAAC,4BAA4B,CACjC,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,iCAAiC,EACvC,SAAS,EAAE,MAAM,GAChB,IAAI;CAGR"}
@@ -1,33 +0,0 @@
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
- export class DataCubeTelemetryHelper {
17
- static logEvent_Datacube(service, data, eventType) {
18
- service.logEvent(eventType, data);
19
- }
20
- static logEvent_Datacube_LegendQuery(service, data, eventType) {
21
- service.logEvent(eventType, data);
22
- }
23
- static logEvent_Datacube_AdhocFunction(service, data, eventType) {
24
- service.logEvent(eventType, data);
25
- }
26
- static logEvent_Datacube_LocalFile(service, data, eventType) {
27
- service.logEvent(eventType, data);
28
- }
29
- static logEvent_Datacube_AdhocQuery(service, data, eventType) {
30
- service.logEvent(eventType, data);
31
- }
32
- }
33
- //# sourceMappingURL=DataCubeTelemetryHelper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DataCubeTelemetryHelper.js","sourceRoot":"","sources":["../../src/__lib__/DataCubeTelemetryHelper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAyCH,MAAM,OAAO,uBAAuB;IAClC,MAAM,CAAC,iBAAiB,CACtB,OAAyB,EACzB,IAA4B,EAC5B,SAAiB;QAEjB,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,6BAA6B,CAClC,OAAyB,EACzB,IAAwC,EACxC,SAAiB;QAEjB,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,+BAA+B,CACpC,OAAyB,EACzB,IAAgD,EAChD,SAAiB;QAEjB,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,2BAA2B,CAChC,OAAyB,EACzB,IAAsC,EACtC,SAAiB;QAEjB,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,4BAA4B,CACjC,OAAyB,EACzB,IAAuC,EACvC,SAAiB;QAEjB,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;CACF"}