@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.
- package/lib/__lib__/DataCubeEvent.d.ts +16 -1
- package/lib/__lib__/DataCubeEvent.d.ts.map +1 -1
- package/lib/__lib__/DataCubeEvent.js +15 -0
- package/lib/__lib__/DataCubeEvent.js.map +1 -1
- package/lib/components/DataCube.d.ts.map +1 -1
- package/lib/components/DataCube.js +23 -7
- package/lib/components/DataCube.js.map +1 -1
- package/lib/components/DataCubeStatusBar.d.ts.map +1 -1
- package/lib/components/DataCubeStatusBar.js +19 -1
- package/lib/components/DataCubeStatusBar.js.map +1 -1
- package/lib/components/view/editor/DataCubeEditor.d.ts.map +1 -1
- package/lib/components/view/editor/DataCubeEditor.js +6 -0
- package/lib/components/view/editor/DataCubeEditor.js.map +1 -1
- package/lib/components/view/extend/DataCubeColumnEditor.d.ts.map +1 -1
- package/lib/components/view/extend/DataCubeColumnEditor.js +5 -0
- package/lib/components/view/extend/DataCubeColumnEditor.js.map +1 -1
- package/lib/components/view/filter/DataCubeFilterEditor.d.ts.map +1 -1
- package/lib/components/view/filter/DataCubeFilterEditor.js +9 -1
- package/lib/components/view/filter/DataCubeFilterEditor.js.map +1 -1
- package/lib/index.css +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/package.json +1 -1
- package/lib/stores/core/DataCubeEngine.d.ts +3 -1
- package/lib/stores/core/DataCubeEngine.d.ts.map +1 -1
- package/lib/stores/core/DataCubeEngine.js.map +1 -1
- package/lib/stores/core/DataCubeQueryEngine.d.ts +15 -0
- package/lib/stores/core/DataCubeQueryEngine.d.ts.map +1 -1
- package/lib/stores/core/DataCubeQueryEngine.js +17 -0
- package/lib/stores/core/DataCubeQueryEngine.js.map +1 -1
- package/lib/stores/core/model/DataCubeConfiguration.d.ts +1 -0
- package/lib/stores/core/model/DataCubeConfiguration.d.ts.map +1 -1
- package/lib/stores/core/model/DataCubeConfiguration.js +31 -1
- package/lib/stores/core/model/DataCubeConfiguration.js.map +1 -1
- package/lib/stores/view/DataCubeViewState.d.ts.map +1 -1
- package/lib/stores/view/DataCubeViewState.js +12 -1
- package/lib/stores/view/DataCubeViewState.js.map +1 -1
- package/lib/stores/view/grid/DataCubeGridClientEngine.d.ts.map +1 -1
- package/lib/stores/view/grid/DataCubeGridClientEngine.js +9 -0
- package/lib/stores/view/grid/DataCubeGridClientEngine.js.map +1 -1
- package/lib/stores/view/grid/DataCubeGridMenuBuilder.d.ts.map +1 -1
- package/lib/stores/view/grid/DataCubeGridMenuBuilder.js +168 -46
- package/lib/stores/view/grid/DataCubeGridMenuBuilder.js.map +1 -1
- package/lib/stores/view/grid/DataCubeGridState.d.ts.map +1 -1
- package/lib/stores/view/grid/DataCubeGridState.js +15 -1
- package/lib/stores/view/grid/DataCubeGridState.js.map +1 -1
- package/package.json +4 -4
- package/src/__lib__/DataCubeEvent.ts +15 -0
- package/src/components/DataCube.tsx +30 -7
- package/src/components/DataCubeStatusBar.tsx +27 -1
- package/src/components/view/editor/DataCubeEditor.tsx +10 -0
- package/src/components/view/extend/DataCubeColumnEditor.tsx +9 -0
- package/src/components/view/filter/DataCubeFilterEditor.tsx +16 -1
- package/src/index.tsx +1 -1
- package/src/stores/core/DataCubeEngine.tsx +9 -0
- package/src/stores/core/DataCubeQueryEngine.ts +17 -0
- package/src/stores/core/model/DataCubeConfiguration.ts +32 -1
- package/src/stores/view/DataCubeViewState.ts +16 -1
- package/src/stores/view/grid/DataCubeGridClientEngine.ts +13 -0
- package/src/stores/view/grid/DataCubeGridMenuBuilder.tsx +170 -41
- package/src/stores/view/grid/DataCubeGridState.ts +21 -1
- package/tsconfig.json +0 -1
- package/lib/__lib__/DataCubeTelemetryHelper.d.ts +0 -57
- package/lib/__lib__/DataCubeTelemetryHelper.d.ts.map +0 -1
- package/lib/__lib__/DataCubeTelemetryHelper.js +0 -33
- package/lib/__lib__/DataCubeTelemetryHelper.js.map +0 -1
- 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: () =>
|
|
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: () =>
|
|
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: () =>
|
|
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: () =>
|
|
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: () =>
|
|
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: () =>
|
|
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: () =>
|
|
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: () =>
|
|
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: () =>
|
|
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: () =>
|
|
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: () =>
|
|
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"}
|