@datawheel/data-explorer 0.3.3 → 0.3.5
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/dist/main.js +759 -798
- package/package.json +2 -8
- package/dist/main.d.ts +0 -1098
- package/dist/main.mjs +0 -8514
package/dist/main.js
CHANGED
|
@@ -1,47 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
var d3plusReact = require('d3plus-react');
|
|
20
|
-
|
|
21
|
-
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
22
|
-
|
|
23
|
-
function _interopNamespace(e) {
|
|
24
|
-
if (e && e.__esModule) return e;
|
|
25
|
-
var n = Object.create(null);
|
|
26
|
-
if (e) {
|
|
27
|
-
Object.keys(e).forEach(function (k) {
|
|
28
|
-
if (k !== 'default') {
|
|
29
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
30
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
31
|
-
enumerable: true,
|
|
32
|
-
get: function () { return e[k]; }
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
n.default = e;
|
|
38
|
-
return Object.freeze(n);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
var React19__namespace = /*#__PURE__*/_interopNamespace(React19);
|
|
42
|
-
var ISO6391__default = /*#__PURE__*/_interopDefault(ISO6391);
|
|
43
|
-
var debounce__default = /*#__PURE__*/_interopDefault(debounce);
|
|
44
|
-
var yn__default = /*#__PURE__*/_interopDefault(yn);
|
|
1
|
+
import { keyframes, createStyles, Select, rem, Input, Box, Text, Stack, Group, Button, SimpleGrid, Flex, ScrollArea, LoadingOverlay, Table, MultiSelect, Center, NumberInput, Menu, ActionIcon, UnstyledButton, Alert, Loader, Container, Title, useMantineTheme, MantineProvider, Modal, useComponentDefaultProps, Anchor, Paper, CloseButton, Tooltip, Tabs, Switch, ThemeIcon, packSx, Affix, Accordion, Drawer, Divider, Checkbox, Popover } from '@mantine/core';
|
|
2
|
+
import { useClipboard, useDebouncedState, useClickOutside, useFullscreen, useMediaQuery, useDisclosure } from '@mantine/hooks';
|
|
3
|
+
import { IconWorld, IconExternalLink, IconClipboard, IconSettings, IconMathGreater, IconMathLower, IconArrowsLeftRight, IconAlertCircle, IconAlertTriangle, IconCopy, IconDownload, IconDotsVertical, IconArrowRight, IconArrowLeft, IconBrandGithub, IconChevronLeft, IconChevronRight, IconSearch, IconLanguage, IconTrash, IconInfoCircleFilled, IconArrowsMinimize, IconArrowsMaximize, IconCircleOff, IconArrowsSort, IconSortDescendingNumbers, IconSortDescendingLetters, IconSortAscendingNumbers, IconSortAscendingLetters, IconPlus, IconStack3, IconFilterOff, IconFilter, IconAdjustments, IconBox, IconClock, IconHelpCircle, IconPhotoDown, IconVectorTriangle } from '@tabler/icons-react';
|
|
4
|
+
import * as React19 from 'react';
|
|
5
|
+
import React19__default, { createContext, forwardRef, useMemo, useCallback, useContext, useRef, useEffect, useState, Suspense, Component, useLayoutEffect } from 'react';
|
|
6
|
+
import { translationFactory } from '@datawheel/use-translation';
|
|
7
|
+
import { createSlice, createSelector, combineReducers, bindActionCreators, configureStore } from '@reduxjs/toolkit';
|
|
8
|
+
import { useSelector as useSelector$1, useStore, Provider as Provider$1 } from 'react-redux';
|
|
9
|
+
import ISO6391 from 'iso-639-1';
|
|
10
|
+
import { QueryClient, QueryClientProvider, useQuery, useQueryClient } from '@tanstack/react-query';
|
|
11
|
+
import debounce from 'lodash.debounce';
|
|
12
|
+
import { MRT_ProgressBar, flexRender, MRT_TableBodyCell, MRT_ToolbarAlertBanner, useMantineReactTable, MantineReactTable, MRT_TablePagination } from 'mantine-react-table';
|
|
13
|
+
import { formatAbbreviate, format } from 'd3plus-format';
|
|
14
|
+
import yn from 'yn';
|
|
15
|
+
import { matchSorter } from 'match-sorter';
|
|
16
|
+
import { TourProvider, useTour } from '@reactour/tour';
|
|
17
|
+
import { generateCharts } from '@datawheel/vizbuilder';
|
|
18
|
+
import { BarChart, Geomap, Donut, LinePlot, StackedArea, Treemap } from 'd3plus-react';
|
|
45
19
|
|
|
46
20
|
var __create = Object.create;
|
|
47
21
|
var __defProp = Object.defineProperty;
|
|
@@ -76,16 +50,16 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
76
50
|
mod
|
|
77
51
|
));
|
|
78
52
|
|
|
79
|
-
// node_modules/tsup/assets/
|
|
80
|
-
var
|
|
81
|
-
"node_modules/tsup/assets/
|
|
53
|
+
// node_modules/tsup/assets/esm_shims.js
|
|
54
|
+
var init_esm_shims = __esm({
|
|
55
|
+
"node_modules/tsup/assets/esm_shims.js"() {
|
|
82
56
|
}
|
|
83
57
|
});
|
|
84
58
|
|
|
85
59
|
// node_modules/file-saver/FileSaver.js
|
|
86
60
|
var require_FileSaver = __commonJS({
|
|
87
61
|
"node_modules/file-saver/FileSaver.js"(exports2, module2) {
|
|
88
|
-
|
|
62
|
+
init_esm_shims();
|
|
89
63
|
var saveAs2 = saveAs2 || function(view) {
|
|
90
64
|
if (typeof view === "undefined" || typeof navigator !== "undefined" && /MSIE [1-9]\./.test(navigator.userAgent)) {
|
|
91
65
|
return;
|
|
@@ -209,13 +183,13 @@ var require_FileSaver = __commonJS({
|
|
|
209
183
|
});
|
|
210
184
|
|
|
211
185
|
// src/main.ts
|
|
212
|
-
|
|
186
|
+
init_esm_shims();
|
|
213
187
|
|
|
214
188
|
// src/components/DebugView.tsx
|
|
215
|
-
|
|
189
|
+
init_esm_shims();
|
|
216
190
|
|
|
217
191
|
// src/hooks/translation.ts
|
|
218
|
-
|
|
192
|
+
init_esm_shims();
|
|
219
193
|
var defaultTranslation = {
|
|
220
194
|
action_copy: "Copy",
|
|
221
195
|
action_copy_done: "Copied",
|
|
@@ -508,7 +482,7 @@ var defaultTranslation = {
|
|
|
508
482
|
}
|
|
509
483
|
}
|
|
510
484
|
};
|
|
511
|
-
var { useTranslation, TranslationConsumer, TranslationProvider } =
|
|
485
|
+
var { useTranslation, TranslationConsumer, TranslationProvider } = translationFactory({
|
|
512
486
|
defaultLocale: "en",
|
|
513
487
|
defaultTranslation
|
|
514
488
|
});
|
|
@@ -517,59 +491,59 @@ var { useTranslation, TranslationConsumer, TranslationProvider } = useTranslatio
|
|
|
517
491
|
function DebugView(props) {
|
|
518
492
|
const { url } = props.result;
|
|
519
493
|
const { translate: t } = useTranslation();
|
|
520
|
-
const { copy, copied } =
|
|
521
|
-
const copyHandler =
|
|
522
|
-
const openHandler =
|
|
523
|
-
const headers =
|
|
494
|
+
const { copy, copied } = useClipboard({ timeout: 1e3 });
|
|
495
|
+
const copyHandler = useCallback(() => copy(url), [url, copy]);
|
|
496
|
+
const openHandler = useCallback(() => window.open(url, "_blank"), [url]);
|
|
497
|
+
const headers = useMemo(() => {
|
|
524
498
|
const headers2 = Object.entries(props.result.headers || {});
|
|
525
499
|
if (headers2.length === 0) return null;
|
|
526
|
-
return /* @__PURE__ */
|
|
500
|
+
return /* @__PURE__ */ React19__default.createElement(Input.Wrapper, { label: t("debug_view.httpheaders") }, /* @__PURE__ */ React19__default.createElement(Box, { component: "dl", sx: { fontFamily: "monospace", overflowWrap: "break-word" } }, headers2.map((entry) => /* @__PURE__ */ React19__default.createElement(React19__default.Fragment, { key: entry[0] }, /* @__PURE__ */ React19__default.createElement(Text, { component: "dt", fw: "bold", fz: "sm" }, entry[0]), /* @__PURE__ */ React19__default.createElement(Text, { component: "dd", c: "#5c940d", fz: "sm" }, entry[1])))));
|
|
527
501
|
}, [props.result.headers, t]);
|
|
528
|
-
return /* @__PURE__ */
|
|
529
|
-
|
|
502
|
+
return /* @__PURE__ */ React19__default.createElement(Box, { id: "query-results-debug-view" }, /* @__PURE__ */ React19__default.createElement(Stack, { spacing: "md", px: "md", py: "sm" }, url && /* @__PURE__ */ React19__default.createElement(Input.Wrapper, { label: t("debug_view.url_logiclayer") }, /* @__PURE__ */ React19__default.createElement(Group, { noWrap: true, spacing: "xs" }, /* @__PURE__ */ React19__default.createElement(
|
|
503
|
+
Input,
|
|
530
504
|
{
|
|
531
|
-
icon: /* @__PURE__ */
|
|
505
|
+
icon: /* @__PURE__ */ React19__default.createElement(IconWorld, null),
|
|
532
506
|
readOnly: true,
|
|
533
507
|
rightSectionWidth: "auto",
|
|
534
508
|
value: url,
|
|
535
509
|
w: "100%"
|
|
536
510
|
}
|
|
537
|
-
), /* @__PURE__ */
|
|
538
|
-
|
|
511
|
+
), /* @__PURE__ */ React19__default.createElement(Button.Group, null, /* @__PURE__ */ React19__default.createElement(
|
|
512
|
+
Button,
|
|
539
513
|
{
|
|
540
|
-
leftIcon: /* @__PURE__ */
|
|
514
|
+
leftIcon: /* @__PURE__ */ React19__default.createElement(IconExternalLink, null),
|
|
541
515
|
onClick: openHandler,
|
|
542
516
|
variant: "default"
|
|
543
517
|
},
|
|
544
518
|
t("action_open")
|
|
545
|
-
), /* @__PURE__ */
|
|
546
|
-
|
|
519
|
+
), /* @__PURE__ */ React19__default.createElement(
|
|
520
|
+
Button,
|
|
547
521
|
{
|
|
548
|
-
leftIcon: /* @__PURE__ */
|
|
522
|
+
leftIcon: /* @__PURE__ */ React19__default.createElement(IconClipboard, null),
|
|
549
523
|
onClick: copyHandler,
|
|
550
524
|
variant: "default"
|
|
551
525
|
},
|
|
552
526
|
copied ? t("action_copy_done") : t("action_copy")
|
|
553
|
-
)))), /* @__PURE__ */
|
|
527
|
+
)))), /* @__PURE__ */ React19__default.createElement(SimpleGrid, { cols: 2 }, headers)));
|
|
554
528
|
}
|
|
555
529
|
|
|
556
530
|
// src/components/Explorer.tsx
|
|
557
|
-
|
|
531
|
+
init_esm_shims();
|
|
558
532
|
|
|
559
533
|
// src/hooks/settings.tsx
|
|
560
|
-
|
|
534
|
+
init_esm_shims();
|
|
561
535
|
|
|
562
536
|
// src/hooks/permalink.tsx
|
|
563
|
-
|
|
537
|
+
init_esm_shims();
|
|
564
538
|
|
|
565
539
|
// src/api/tesseract/parse.ts
|
|
566
|
-
|
|
540
|
+
init_esm_shims();
|
|
567
541
|
|
|
568
542
|
// src/utils/array.ts
|
|
569
|
-
|
|
543
|
+
init_esm_shims();
|
|
570
544
|
|
|
571
545
|
// src/utils/string.js
|
|
572
|
-
|
|
546
|
+
init_esm_shims();
|
|
573
547
|
function randomKey() {
|
|
574
548
|
return Math.random().toString(16).slice(2);
|
|
575
549
|
}
|
|
@@ -620,10 +594,10 @@ function getLast(array) {
|
|
|
620
594
|
}
|
|
621
595
|
|
|
622
596
|
// src/utils/structs.ts
|
|
623
|
-
|
|
597
|
+
init_esm_shims();
|
|
624
598
|
|
|
625
599
|
// src/api/enum.ts
|
|
626
|
-
|
|
600
|
+
init_esm_shims();
|
|
627
601
|
var Comparison = /* @__PURE__ */ ((Comparison2) => {
|
|
628
602
|
Comparison2["!="] = "neq";
|
|
629
603
|
Comparison2["<"] = "lt";
|
|
@@ -763,7 +737,7 @@ function buildProperty(props) {
|
|
|
763
737
|
}
|
|
764
738
|
|
|
765
739
|
// src/utils/transform.js
|
|
766
|
-
|
|
740
|
+
init_esm_shims();
|
|
767
741
|
function identity(item) {
|
|
768
742
|
return `${item}`;
|
|
769
743
|
}
|
|
@@ -926,13 +900,13 @@ function filterParseCondition(value) {
|
|
|
926
900
|
}
|
|
927
901
|
|
|
928
902
|
// src/state/queries.ts
|
|
929
|
-
|
|
903
|
+
init_esm_shims();
|
|
930
904
|
|
|
931
905
|
// src/utils/object.ts
|
|
932
|
-
|
|
906
|
+
init_esm_shims();
|
|
933
907
|
|
|
934
908
|
// src/api/traverse.ts
|
|
935
|
-
|
|
909
|
+
init_esm_shims();
|
|
936
910
|
function entityFinder(cube, name4) {
|
|
937
911
|
const nameWithoutID = name4.replace(/\sID$/, "");
|
|
938
912
|
const nameWithID = `${nameWithoutID} ID`;
|
|
@@ -1038,7 +1012,7 @@ function yieldMeasures(cube) {
|
|
|
1038
1012
|
}
|
|
1039
1013
|
|
|
1040
1014
|
// src/utils/validation.ts
|
|
1041
|
-
|
|
1015
|
+
init_esm_shims();
|
|
1042
1016
|
function noop() {
|
|
1043
1017
|
}
|
|
1044
1018
|
function isOneOf(str, options) {
|
|
@@ -1165,7 +1139,7 @@ function getDomain(data, column) {
|
|
|
1165
1139
|
}
|
|
1166
1140
|
|
|
1167
1141
|
// src/state/server.ts
|
|
1168
|
-
|
|
1142
|
+
init_esm_shims();
|
|
1169
1143
|
var name = "explorerServer";
|
|
1170
1144
|
var initialState = {
|
|
1171
1145
|
cubeMap: {},
|
|
@@ -1174,7 +1148,7 @@ var initialState = {
|
|
|
1174
1148
|
online: void 0,
|
|
1175
1149
|
url: ""
|
|
1176
1150
|
};
|
|
1177
|
-
var serverSlice =
|
|
1151
|
+
var serverSlice = createSlice({
|
|
1178
1152
|
name,
|
|
1179
1153
|
initialState,
|
|
1180
1154
|
reducers: {
|
|
@@ -1195,12 +1169,12 @@ var serverActions = {
|
|
|
1195
1169
|
function selectServerState(state) {
|
|
1196
1170
|
return state[name];
|
|
1197
1171
|
}
|
|
1198
|
-
var selectOlapCubeMap =
|
|
1172
|
+
var selectOlapCubeMap = createSelector(
|
|
1199
1173
|
selectServerState,
|
|
1200
1174
|
(server) => server.cubeMap
|
|
1201
1175
|
);
|
|
1202
|
-
|
|
1203
|
-
var selectOlapCubeItems =
|
|
1176
|
+
createSelector(selectOlapCubeMap, getKeys);
|
|
1177
|
+
var selectOlapCubeItems = createSelector(selectOlapCubeMap, getValues);
|
|
1204
1178
|
|
|
1205
1179
|
// src/state/queries.ts
|
|
1206
1180
|
var name2 = "explorerQueries";
|
|
@@ -1210,7 +1184,7 @@ var initialState2 = {
|
|
|
1210
1184
|
default: buildQuery({ key: "default" })
|
|
1211
1185
|
}
|
|
1212
1186
|
};
|
|
1213
|
-
var queriesSlice =
|
|
1187
|
+
var queriesSlice = createSlice({
|
|
1214
1188
|
name: name2,
|
|
1215
1189
|
initialState: initialState2,
|
|
1216
1190
|
reducers: {
|
|
@@ -1438,74 +1412,74 @@ function taintCurrentQuery(state) {
|
|
|
1438
1412
|
function selectQueriesState(state) {
|
|
1439
1413
|
return state[name2];
|
|
1440
1414
|
}
|
|
1441
|
-
var selectQueryItems =
|
|
1415
|
+
var selectQueryItems = createSelector(
|
|
1442
1416
|
selectQueriesState,
|
|
1443
1417
|
(queries) => sortByDate(Object.values(queries.itemMap), "created", false)
|
|
1444
1418
|
);
|
|
1445
|
-
var selectCurrentQueryItem =
|
|
1419
|
+
var selectCurrentQueryItem = createSelector(
|
|
1446
1420
|
selectQueriesState,
|
|
1447
1421
|
(queries) => queries.itemMap[queries.current]
|
|
1448
1422
|
);
|
|
1449
|
-
var selectCurrentQueryParams =
|
|
1423
|
+
var selectCurrentQueryParams = createSelector(
|
|
1450
1424
|
selectCurrentQueryItem,
|
|
1451
1425
|
(query) => query.params
|
|
1452
1426
|
);
|
|
1453
|
-
var selectCubeName =
|
|
1454
|
-
var selectLocale =
|
|
1427
|
+
var selectCubeName = createSelector(selectCurrentQueryParams, (params) => params.cube);
|
|
1428
|
+
var selectLocale = createSelector(
|
|
1455
1429
|
[selectCurrentQueryParams, selectServerState],
|
|
1456
1430
|
(params, server) => {
|
|
1457
1431
|
const code = params.locale || server.localeOptions[0] || "";
|
|
1458
1432
|
return {
|
|
1459
1433
|
code,
|
|
1460
|
-
name:
|
|
1461
|
-
nativeName:
|
|
1434
|
+
name: ISO6391.getName(code),
|
|
1435
|
+
nativeName: ISO6391.getNativeName(code)
|
|
1462
1436
|
};
|
|
1463
1437
|
}
|
|
1464
1438
|
);
|
|
1465
|
-
var selectCutMap =
|
|
1466
|
-
|
|
1467
|
-
var selectCutItems =
|
|
1468
|
-
var selectDrilldownMap =
|
|
1439
|
+
var selectCutMap = createSelector(selectCurrentQueryParams, (params) => params.cuts);
|
|
1440
|
+
createSelector(selectCutMap, getKeys);
|
|
1441
|
+
var selectCutItems = createSelector(selectCutMap, getValues);
|
|
1442
|
+
var selectDrilldownMap = createSelector(
|
|
1469
1443
|
selectCurrentQueryParams,
|
|
1470
1444
|
(params) => params.drilldowns
|
|
1471
1445
|
);
|
|
1472
|
-
|
|
1473
|
-
var selectDrilldownItems =
|
|
1474
|
-
var selectFilterMap =
|
|
1475
|
-
|
|
1476
|
-
var selectFilterItems =
|
|
1477
|
-
var selectMeasureMap =
|
|
1478
|
-
|
|
1479
|
-
var selectMeasureItems =
|
|
1480
|
-
|
|
1481
|
-
var selectIsPreviewMode =
|
|
1446
|
+
createSelector(selectDrilldownMap, getKeys);
|
|
1447
|
+
var selectDrilldownItems = createSelector(selectDrilldownMap, getValues);
|
|
1448
|
+
var selectFilterMap = createSelector(selectCurrentQueryParams, (params) => params.filters);
|
|
1449
|
+
createSelector(selectFilterMap, getKeys);
|
|
1450
|
+
var selectFilterItems = createSelector(selectFilterMap, getValues);
|
|
1451
|
+
var selectMeasureMap = createSelector(selectCurrentQueryParams, (params) => params.measures);
|
|
1452
|
+
createSelector(selectMeasureMap, getKeys);
|
|
1453
|
+
var selectMeasureItems = createSelector(selectMeasureMap, getValues);
|
|
1454
|
+
createSelector(selectCurrentQueryParams, (params) => params.booleans);
|
|
1455
|
+
var selectIsPreviewMode = createSelector(
|
|
1482
1456
|
selectCurrentQueryParams,
|
|
1483
1457
|
(params) => params.isPreview
|
|
1484
1458
|
);
|
|
1485
|
-
var selectPaginationParams =
|
|
1459
|
+
var selectPaginationParams = createSelector(selectCurrentQueryParams, (params) => ({
|
|
1486
1460
|
limit: params.pagiLimit || 0,
|
|
1487
1461
|
offset: params.pagiOffset || 0
|
|
1488
1462
|
}));
|
|
1489
|
-
var selectSortingParams =
|
|
1463
|
+
var selectSortingParams = createSelector(selectCurrentQueryParams, (params) => ({
|
|
1490
1464
|
sortKey: params.sortKey || "",
|
|
1491
1465
|
sortDir: params.sortDir
|
|
1492
1466
|
}));
|
|
1493
|
-
|
|
1467
|
+
createSelector(
|
|
1494
1468
|
selectCurrentQueryParams,
|
|
1495
1469
|
(params) => isValidQueryVerbose(params)
|
|
1496
1470
|
);
|
|
1497
1471
|
|
|
1498
1472
|
// src/state/store.ts
|
|
1499
|
-
|
|
1473
|
+
init_esm_shims();
|
|
1500
1474
|
|
|
1501
1475
|
// src/api/index.ts
|
|
1502
|
-
|
|
1476
|
+
init_esm_shims();
|
|
1503
1477
|
|
|
1504
1478
|
// src/api/complexity/client.ts
|
|
1505
|
-
|
|
1479
|
+
init_esm_shims();
|
|
1506
1480
|
|
|
1507
1481
|
// src/api/tools.ts
|
|
1508
|
-
|
|
1482
|
+
init_esm_shims();
|
|
1509
1483
|
function toPlainObject(obj) {
|
|
1510
1484
|
return Object.fromEntries(
|
|
1511
1485
|
filterMap(Object.entries(obj), (entry) => {
|
|
@@ -1580,7 +1554,7 @@ var ComplexityModuleClient = class {
|
|
|
1580
1554
|
};
|
|
1581
1555
|
|
|
1582
1556
|
// src/api/tesseract/client.ts
|
|
1583
|
-
|
|
1557
|
+
init_esm_shims();
|
|
1584
1558
|
var TesseractModuleClient = class {
|
|
1585
1559
|
constructor(baseURL, config) {
|
|
1586
1560
|
this.baseURL = baseURL ? baseURL.replace(/\/?$/, "/") : "";
|
|
@@ -1627,11 +1601,11 @@ var TesseractModuleClient = class {
|
|
|
1627
1601
|
};
|
|
1628
1602
|
|
|
1629
1603
|
// src/api/context.tsx
|
|
1630
|
-
|
|
1631
|
-
|
|
1604
|
+
init_esm_shims();
|
|
1605
|
+
createContext(null);
|
|
1632
1606
|
|
|
1633
1607
|
// src/state/loading.ts
|
|
1634
|
-
|
|
1608
|
+
init_esm_shims();
|
|
1635
1609
|
var LOADINGSTATUS = {
|
|
1636
1610
|
FETCHING: "FETCHING",
|
|
1637
1611
|
SUCCESS: "SUCCESS",
|
|
@@ -1644,7 +1618,7 @@ var initialState3 = {
|
|
|
1644
1618
|
status: LOADINGSTATUS.FETCHING,
|
|
1645
1619
|
trigger: null
|
|
1646
1620
|
};
|
|
1647
|
-
var loadingSlice =
|
|
1621
|
+
var loadingSlice = createSlice({
|
|
1648
1622
|
name: name3,
|
|
1649
1623
|
initialState: initialState3,
|
|
1650
1624
|
reducers: {
|
|
@@ -1696,7 +1670,7 @@ var reducerMap = {
|
|
|
1696
1670
|
[queriesSlice.name]: queriesSlice.reducer,
|
|
1697
1671
|
[serverSlice.name]: serverSlice.reducer
|
|
1698
1672
|
};
|
|
1699
|
-
var reducer =
|
|
1673
|
+
var reducer = combineReducers(reducerMap);
|
|
1700
1674
|
function thunkExtraArg() {
|
|
1701
1675
|
return {
|
|
1702
1676
|
tesseract: new TesseractModuleClient(),
|
|
@@ -1704,7 +1678,7 @@ function thunkExtraArg() {
|
|
|
1704
1678
|
previewLimit: 50
|
|
1705
1679
|
};
|
|
1706
1680
|
}
|
|
1707
|
-
var storeFactory = () =>
|
|
1681
|
+
var storeFactory = () => configureStore({
|
|
1708
1682
|
reducer: reducerMap,
|
|
1709
1683
|
middleware(getDefaultMiddleware) {
|
|
1710
1684
|
return getDefaultMiddleware({
|
|
@@ -1714,7 +1688,7 @@ var storeFactory = () => toolkit.configureStore({
|
|
|
1714
1688
|
});
|
|
1715
1689
|
}
|
|
1716
1690
|
});
|
|
1717
|
-
var useSelector =
|
|
1691
|
+
var useSelector = useSelector$1;
|
|
1718
1692
|
|
|
1719
1693
|
// src/hooks/permalink.tsx
|
|
1720
1694
|
function serializePermalink(item) {
|
|
@@ -1736,19 +1710,19 @@ function parsePermalink(cube, value) {
|
|
|
1736
1710
|
function usePermalink(isEnabled, options) {
|
|
1737
1711
|
const cubeMap = useSelector(selectOlapCubeMap);
|
|
1738
1712
|
const queryItem = useSelector(selectCurrentQueryItem);
|
|
1739
|
-
const listener =
|
|
1713
|
+
const listener = useCallback(
|
|
1740
1714
|
(evt) => {
|
|
1741
1715
|
evt.state && options.onChange(evt.state);
|
|
1742
1716
|
},
|
|
1743
1717
|
[options.onChange]
|
|
1744
1718
|
);
|
|
1745
|
-
|
|
1719
|
+
useEffect(() => {
|
|
1746
1720
|
if (isEnabled) {
|
|
1747
1721
|
window.addEventListener("popstate", listener);
|
|
1748
1722
|
return () => window.removeEventListener("popstate", listener);
|
|
1749
1723
|
}
|
|
1750
1724
|
}, [isEnabled, listener]);
|
|
1751
|
-
|
|
1725
|
+
useEffect(() => {
|
|
1752
1726
|
const { isDirty, panel, params } = queryItem;
|
|
1753
1727
|
if (!isEnabled || isDirty || !cubeMap[params.cube]) return;
|
|
1754
1728
|
const currPermalink = window.location.search.slice(1);
|
|
@@ -1772,7 +1746,7 @@ function useUpdatePermaLink({
|
|
|
1772
1746
|
isLoading
|
|
1773
1747
|
}) {
|
|
1774
1748
|
const queryItem = useSelector(selectCurrentQueryItem);
|
|
1775
|
-
|
|
1749
|
+
useEffect(() => {
|
|
1776
1750
|
if (isFetched && cube && enabled && !isLoading) {
|
|
1777
1751
|
const currPermalink = window.location.search.slice(1);
|
|
1778
1752
|
const nextPermalink = serializePermalink(queryItem);
|
|
@@ -1796,11 +1770,11 @@ var defaultToolbarConfig = {
|
|
|
1796
1770
|
buttons: [],
|
|
1797
1771
|
showLabels: true
|
|
1798
1772
|
};
|
|
1799
|
-
var SettingsContext =
|
|
1773
|
+
var SettingsContext = createContext(void 0);
|
|
1800
1774
|
var { Consumer: ContextConsumer, Provider: ContextProvider } = SettingsContext;
|
|
1801
1775
|
function SettingsProvider(props) {
|
|
1802
1776
|
usePermalink(props.withPermalink, { onChange: props.actions.resetAllParams });
|
|
1803
|
-
const value =
|
|
1777
|
+
const value = useMemo(
|
|
1804
1778
|
() => {
|
|
1805
1779
|
var _a;
|
|
1806
1780
|
return {
|
|
@@ -1816,10 +1790,10 @@ function SettingsProvider(props) {
|
|
|
1816
1790
|
},
|
|
1817
1791
|
[props.formatters, props.previewLimit, props.toolbarConfig]
|
|
1818
1792
|
);
|
|
1819
|
-
return /* @__PURE__ */
|
|
1793
|
+
return /* @__PURE__ */ React19__default.createElement(ContextProvider, { value }, props.children);
|
|
1820
1794
|
}
|
|
1821
1795
|
function SettingsConsumer(props) {
|
|
1822
|
-
return /* @__PURE__ */
|
|
1796
|
+
return /* @__PURE__ */ React19__default.createElement(ContextConsumer, null, useCallback(
|
|
1823
1797
|
(context) => {
|
|
1824
1798
|
if (context === void 0) {
|
|
1825
1799
|
throw new Error("SettingsConsumer must be used within a SettingsProvider.");
|
|
@@ -1830,7 +1804,7 @@ function SettingsConsumer(props) {
|
|
|
1830
1804
|
));
|
|
1831
1805
|
}
|
|
1832
1806
|
function useSettings() {
|
|
1833
|
-
const context =
|
|
1807
|
+
const context = useContext(SettingsContext);
|
|
1834
1808
|
if (context === void 0) {
|
|
1835
1809
|
throw new Error("useSettings must be used within a SettingsProvider.");
|
|
1836
1810
|
}
|
|
@@ -1842,7 +1816,7 @@ function useActions() {
|
|
|
1842
1816
|
}
|
|
1843
1817
|
|
|
1844
1818
|
// src/state/index.ts
|
|
1845
|
-
|
|
1819
|
+
init_esm_shims();
|
|
1846
1820
|
|
|
1847
1821
|
// src/state/thunks.ts
|
|
1848
1822
|
var thunks_exports = {};
|
|
@@ -1859,10 +1833,10 @@ __export(thunks_exports, {
|
|
|
1859
1833
|
willSetCube: () => willSetCube,
|
|
1860
1834
|
willSetupClient: () => willSetupClient
|
|
1861
1835
|
});
|
|
1862
|
-
|
|
1836
|
+
init_esm_shims();
|
|
1863
1837
|
|
|
1864
1838
|
// src/state/utils.ts
|
|
1865
|
-
|
|
1839
|
+
init_esm_shims();
|
|
1866
1840
|
function pickDefaultDrilldowns(dimensions) {
|
|
1867
1841
|
const levels = [];
|
|
1868
1842
|
const findDefaultHierarchy = (dim) => dim.hierarchies.find((h) => h.name === dim.default_hierarchy) || dim.hierarchies[0];
|
|
@@ -2162,20 +2136,20 @@ var actions = {
|
|
|
2162
2136
|
};
|
|
2163
2137
|
|
|
2164
2138
|
// src/components/ExplorerContent.tsx
|
|
2165
|
-
|
|
2139
|
+
init_esm_shims();
|
|
2166
2140
|
|
|
2167
2141
|
// src/context/index.tsx
|
|
2168
|
-
|
|
2169
|
-
var queryClient = new
|
|
2142
|
+
init_esm_shims();
|
|
2143
|
+
var queryClient = new QueryClient();
|
|
2170
2144
|
function AppProviders({ children }) {
|
|
2171
|
-
return /* @__PURE__ */
|
|
2145
|
+
return /* @__PURE__ */ React19.createElement(QueryClientProvider, { client: queryClient }, children);
|
|
2172
2146
|
}
|
|
2173
2147
|
|
|
2174
2148
|
// src/hooks/setup.ts
|
|
2175
|
-
|
|
2149
|
+
init_esm_shims();
|
|
2176
2150
|
function useSetup(serverURL, serverConfig, defaultLocale, defaultCube) {
|
|
2177
2151
|
const { actions: actions2, paginationConfig } = useSettings();
|
|
2178
|
-
|
|
2152
|
+
useEffect(() => {
|
|
2179
2153
|
actions2.resetServer();
|
|
2180
2154
|
actions2.resetAllParams({});
|
|
2181
2155
|
actions2.setLoadingState("FETCHING");
|
|
@@ -2242,8 +2216,8 @@ function useSetup(serverURL, serverConfig, defaultLocale, defaultCube) {
|
|
|
2242
2216
|
}
|
|
2243
2217
|
|
|
2244
2218
|
// src/components/AnimatedCube.tsx
|
|
2245
|
-
|
|
2246
|
-
var colorShift =
|
|
2219
|
+
init_esm_shims();
|
|
2220
|
+
var colorShift = keyframes({
|
|
2247
2221
|
"from, to": {
|
|
2248
2222
|
fill: "var(--anicube-color1, #5c7080)"
|
|
2249
2223
|
},
|
|
@@ -2254,7 +2228,7 @@ var colorShift = core.keyframes({
|
|
|
2254
2228
|
fill: "var(--anicube-color3, #8a9ba8)"
|
|
2255
2229
|
}
|
|
2256
2230
|
});
|
|
2257
|
-
var useStyles =
|
|
2231
|
+
var useStyles = createStyles((theme, { color, shade }) => {
|
|
2258
2232
|
const vars = color ? {
|
|
2259
2233
|
"--anicube-color1": theme.colors[color][shade - 1],
|
|
2260
2234
|
"--anicube-color2": theme.colors[color][shade],
|
|
@@ -2289,9 +2263,9 @@ var defaultProps = {
|
|
|
2289
2263
|
shade: 5
|
|
2290
2264
|
};
|
|
2291
2265
|
function AnimatedCube(props) {
|
|
2292
|
-
const { color, shade } =
|
|
2266
|
+
const { color, shade } = useComponentDefaultProps(AnimatedCube.displayName, defaultProps, props);
|
|
2293
2267
|
const { classes, cx } = useStyles({ color, shade });
|
|
2294
|
-
return /* @__PURE__ */
|
|
2268
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
2295
2269
|
"svg",
|
|
2296
2270
|
{
|
|
2297
2271
|
className: cx("dataex-Anicube-root", classes.root),
|
|
@@ -2299,34 +2273,34 @@ function AnimatedCube(props) {
|
|
|
2299
2273
|
viewBox: "0 0 256 256",
|
|
2300
2274
|
height: props.size || 256
|
|
2301
2275
|
},
|
|
2302
|
-
/* @__PURE__ */
|
|
2303
|
-
/* @__PURE__ */
|
|
2304
|
-
/* @__PURE__ */
|
|
2305
|
-
/* @__PURE__ */
|
|
2306
|
-
/* @__PURE__ */
|
|
2307
|
-
/* @__PURE__ */
|
|
2276
|
+
/* @__PURE__ */ React19__default.createElement("path", { className: cx("dataex-Anicube-side", classes.side, "a"), d: "M128 128v128l111 -64v-128l-111 64z" }),
|
|
2277
|
+
/* @__PURE__ */ React19__default.createElement("path", { className: cx("dataex-Anicube-side", classes.side, "b"), d: "M128 128l111 -64l-111 -64l-111 64l111 64z" }),
|
|
2278
|
+
/* @__PURE__ */ React19__default.createElement("path", { className: cx("dataex-Anicube-side", classes.side, "c"), d: "M128 128l-111 -64v128l111 64v-128z" }),
|
|
2279
|
+
/* @__PURE__ */ React19__default.createElement("path", { className: cx("dataex-Anicube-side", classes.side, "a"), d: "M128 128v-64l-55 32v64l55 -32z" }),
|
|
2280
|
+
/* @__PURE__ */ React19__default.createElement("path", { className: cx("dataex-Anicube-side", classes.side, "b"), d: "M128 128l-55 32l55 32l55 -32l-55 -32z" }),
|
|
2281
|
+
/* @__PURE__ */ React19__default.createElement("path", { className: cx("dataex-Anicube-side", classes.side, "c"), d: "M128 128l55 32v-64l-55 -32v64z" })
|
|
2308
2282
|
);
|
|
2309
2283
|
}
|
|
2310
2284
|
AnimatedCube.displayName = "DataExplorer/Anicube";
|
|
2311
2285
|
|
|
2312
2286
|
// src/components/ExplorerResults.tsx
|
|
2313
|
-
|
|
2287
|
+
init_esm_shims();
|
|
2314
2288
|
|
|
2315
2289
|
// src/state/selectors.ts
|
|
2316
|
-
|
|
2317
|
-
var selectOlapCube =
|
|
2290
|
+
init_esm_shims();
|
|
2291
|
+
var selectOlapCube = createSelector(
|
|
2318
2292
|
[selectOlapCubeMap, selectCubeName],
|
|
2319
2293
|
(cubeMap, cubeName) => cubeName in cubeMap ? cubeMap[cubeName] : void 0
|
|
2320
2294
|
);
|
|
2321
|
-
var selectOlapMeasureItems =
|
|
2295
|
+
var selectOlapMeasureItems = createSelector(
|
|
2322
2296
|
selectOlapCube,
|
|
2323
2297
|
(cube) => cube ? cube.measures : []
|
|
2324
2298
|
);
|
|
2325
|
-
var selectOlapMeasureMap =
|
|
2299
|
+
var selectOlapMeasureMap = createSelector(
|
|
2326
2300
|
selectOlapMeasureItems,
|
|
2327
2301
|
(measures) => Object.fromEntries(measures.map((item) => [item.name, item]))
|
|
2328
2302
|
);
|
|
2329
|
-
var selectOlapDimensionItems =
|
|
2303
|
+
var selectOlapDimensionItems = createSelector(
|
|
2330
2304
|
selectOlapCube,
|
|
2331
2305
|
(cube) => !cube ? [] : cube.dimensions.map((dim) => ({
|
|
2332
2306
|
item: {
|
|
@@ -2342,28 +2316,28 @@ var selectOlapDimensionItems = toolkit.createSelector(
|
|
|
2342
2316
|
(a, b) => getOrderValue(a.item) - getOrderValue(b.item) || b.count - a.count || a.alpha.localeCompare(b.alpha)
|
|
2343
2317
|
).map((i) => i.item)
|
|
2344
2318
|
);
|
|
2345
|
-
|
|
2319
|
+
createSelector(
|
|
2346
2320
|
selectOlapDimensionItems,
|
|
2347
2321
|
(dimensions) => Object.fromEntries(dimensions.map((item) => [item.name, item]))
|
|
2348
2322
|
);
|
|
2349
|
-
var selectLevelTriadMap =
|
|
2323
|
+
var selectLevelTriadMap = createSelector(
|
|
2350
2324
|
selectOlapCube,
|
|
2351
2325
|
(cube) => cube ? mapDimensionHierarchyLevels(cube) : {}
|
|
2352
2326
|
);
|
|
2353
|
-
|
|
2327
|
+
createSelector(
|
|
2354
2328
|
selectOlapDimensionItems,
|
|
2355
2329
|
(dimensions) => dimensions.find((d) => d.type === "time" || d.name === "Year" || d.name === "Date")
|
|
2356
2330
|
);
|
|
2357
|
-
var selectSerializedParams =
|
|
2331
|
+
var selectSerializedParams = createSelector(
|
|
2358
2332
|
selectCurrentQueryItem,
|
|
2359
2333
|
(queryItem) => serializePermalink(queryItem)
|
|
2360
2334
|
);
|
|
2361
2335
|
|
|
2362
2336
|
// src/components/DrawerMenu.tsx
|
|
2363
|
-
|
|
2337
|
+
init_esm_shims();
|
|
2364
2338
|
|
|
2365
2339
|
// src/utils/format.js
|
|
2366
|
-
|
|
2340
|
+
init_esm_shims();
|
|
2367
2341
|
function abbreviateFullName(nameParts, joint = "/") {
|
|
2368
2342
|
if (!nameParts) {
|
|
2369
2343
|
return "";
|
|
@@ -2383,25 +2357,25 @@ function abbreviateFullName(nameParts, joint = "/") {
|
|
|
2383
2357
|
}
|
|
2384
2358
|
|
|
2385
2359
|
// src/components/TableView.tsx
|
|
2386
|
-
|
|
2360
|
+
init_esm_shims();
|
|
2387
2361
|
|
|
2388
2362
|
// src/hooks/formatter.ts
|
|
2389
|
-
|
|
2363
|
+
init_esm_shims();
|
|
2390
2364
|
var defaultFormatters = {
|
|
2391
2365
|
undefined: (n) => n,
|
|
2392
2366
|
identity: (n) => `${n}`,
|
|
2393
2367
|
Decimal: new Intl.NumberFormat(void 0, { useGrouping: false }).format,
|
|
2394
2368
|
Dollars: new Intl.NumberFormat(void 0, { style: "currency", currency: "USD" }).format,
|
|
2395
|
-
Human: (n) =>
|
|
2369
|
+
Human: (n) => formatAbbreviate(n, "en-US"),
|
|
2396
2370
|
Milliards: new Intl.NumberFormat(void 0, { useGrouping: true }).format,
|
|
2397
2371
|
Million: new Intl.NumberFormat(void 0, { useGrouping: true }).format
|
|
2398
2372
|
};
|
|
2399
2373
|
var basicFormatterKeys = ["Decimal", "Milliards", "Human"];
|
|
2400
2374
|
function useFormatter() {
|
|
2401
2375
|
const { formatters } = useSettings();
|
|
2402
|
-
const [formatMap, setFormatMap] =
|
|
2403
|
-
const formatterMap =
|
|
2404
|
-
return
|
|
2376
|
+
const [formatMap, setFormatMap] = useState({});
|
|
2377
|
+
const formatterMap = useRef(formatters);
|
|
2378
|
+
return useMemo(() => {
|
|
2405
2379
|
return {
|
|
2406
2380
|
currentFormats: formatMap,
|
|
2407
2381
|
getAvailableFormats(measure) {
|
|
@@ -2428,7 +2402,7 @@ function useFormatter() {
|
|
|
2428
2402
|
return formatter3;
|
|
2429
2403
|
}
|
|
2430
2404
|
try {
|
|
2431
|
-
formatter2 =
|
|
2405
|
+
formatter2 = format(key);
|
|
2432
2406
|
} catch (e) {
|
|
2433
2407
|
console.warn(`Formatter not configured: "${key}"`);
|
|
2434
2408
|
formatter2 = defaultFormatters.identity;
|
|
@@ -2450,7 +2424,7 @@ function useFormatter() {
|
|
|
2450
2424
|
}
|
|
2451
2425
|
|
|
2452
2426
|
// src/components/CustomActionIcon.tsx
|
|
2453
|
-
|
|
2427
|
+
init_esm_shims();
|
|
2454
2428
|
var CustomActionIcon = ({
|
|
2455
2429
|
disabled,
|
|
2456
2430
|
showTooltip,
|
|
@@ -2458,10 +2432,10 @@ var CustomActionIcon = ({
|
|
|
2458
2432
|
children,
|
|
2459
2433
|
label
|
|
2460
2434
|
}) => {
|
|
2461
|
-
const [popoverOpened, setPopoverOpened] =
|
|
2462
|
-
const actionIcon = /* @__PURE__ */
|
|
2463
|
-
return showTooltip ? /* @__PURE__ */
|
|
2464
|
-
|
|
2435
|
+
const [popoverOpened, setPopoverOpened] = React19__default.useState(false);
|
|
2436
|
+
const actionIcon = /* @__PURE__ */ React19__default.createElement(ActionIcon, { disabled, size: 25, ml: 5, onClick }, children);
|
|
2437
|
+
return showTooltip ? /* @__PURE__ */ React19__default.createElement("div", { onMouseEnter: () => setPopoverOpened(true), onMouseLeave: () => setPopoverOpened(false) }, /* @__PURE__ */ React19__default.createElement(
|
|
2438
|
+
Popover,
|
|
2465
2439
|
{
|
|
2466
2440
|
width: 200,
|
|
2467
2441
|
position: "left",
|
|
@@ -2480,26 +2454,26 @@ var CustomActionIcon = ({
|
|
|
2480
2454
|
}
|
|
2481
2455
|
})
|
|
2482
2456
|
},
|
|
2483
|
-
/* @__PURE__ */
|
|
2484
|
-
/* @__PURE__ */
|
|
2457
|
+
/* @__PURE__ */ React19__default.createElement(Popover.Target, null, actionIcon),
|
|
2458
|
+
/* @__PURE__ */ React19__default.createElement(Popover.Dropdown, null, /* @__PURE__ */ React19__default.createElement(Text, { size: "xs" }, label))
|
|
2485
2459
|
)) : actionIcon;
|
|
2486
2460
|
};
|
|
2487
2461
|
var CustomActionIcon_default = CustomActionIcon;
|
|
2488
2462
|
|
|
2489
2463
|
// src/components/TableFooter.tsx
|
|
2490
|
-
|
|
2464
|
+
init_esm_shims();
|
|
2491
2465
|
|
|
2492
2466
|
// src/hooks/useAsync.tsx
|
|
2493
|
-
|
|
2467
|
+
init_esm_shims();
|
|
2494
2468
|
function useSafeDispatch(dispatch) {
|
|
2495
|
-
const mounted =
|
|
2496
|
-
|
|
2469
|
+
const mounted = React19.useRef(false);
|
|
2470
|
+
React19.useLayoutEffect(() => {
|
|
2497
2471
|
mounted.current = true;
|
|
2498
2472
|
return () => {
|
|
2499
2473
|
mounted.current = false;
|
|
2500
2474
|
};
|
|
2501
2475
|
}, []);
|
|
2502
|
-
return
|
|
2476
|
+
return React19.useCallback(
|
|
2503
2477
|
(...args) => {
|
|
2504
2478
|
if (mounted.current) {
|
|
2505
2479
|
dispatch(...args);
|
|
@@ -2510,11 +2484,11 @@ function useSafeDispatch(dispatch) {
|
|
|
2510
2484
|
}
|
|
2511
2485
|
var defaultInitialState = { status: "idle", data: null, error: null };
|
|
2512
2486
|
function useAsync(initialState4) {
|
|
2513
|
-
const initialStateRef =
|
|
2487
|
+
const initialStateRef = React19.useRef({
|
|
2514
2488
|
...defaultInitialState,
|
|
2515
2489
|
...initialState4
|
|
2516
2490
|
});
|
|
2517
|
-
const [state, dispatch] =
|
|
2491
|
+
const [state, dispatch] = React19.useReducer(
|
|
2518
2492
|
(state2, action) => {
|
|
2519
2493
|
switch (action.type) {
|
|
2520
2494
|
case "idle":
|
|
@@ -2532,16 +2506,16 @@ function useAsync(initialState4) {
|
|
|
2532
2506
|
initialStateRef.current
|
|
2533
2507
|
);
|
|
2534
2508
|
const safeDispatch = useSafeDispatch(dispatch);
|
|
2535
|
-
const setData =
|
|
2509
|
+
const setData = React19.useCallback(
|
|
2536
2510
|
(data) => safeDispatch({ type: "resolved", data }),
|
|
2537
2511
|
[safeDispatch]
|
|
2538
2512
|
);
|
|
2539
|
-
const setError =
|
|
2513
|
+
const setError = React19.useCallback(
|
|
2540
2514
|
(error) => safeDispatch({ type: "rejected", error }),
|
|
2541
2515
|
[safeDispatch]
|
|
2542
2516
|
);
|
|
2543
|
-
const reset =
|
|
2544
|
-
const run =
|
|
2517
|
+
const reset = React19.useCallback(() => safeDispatch({ type: "idle" }), [safeDispatch]);
|
|
2518
|
+
const run = React19.useCallback(
|
|
2545
2519
|
(promise) => {
|
|
2546
2520
|
if (!promise || !promise.then) {
|
|
2547
2521
|
throw new Error(
|
|
@@ -2578,8 +2552,8 @@ function useAsync(initialState4) {
|
|
|
2578
2552
|
}
|
|
2579
2553
|
|
|
2580
2554
|
// src/components/Select.tsx
|
|
2581
|
-
|
|
2582
|
-
var SelectObject =
|
|
2555
|
+
init_esm_shims();
|
|
2556
|
+
var SelectObject = forwardRef(function(props, ref) {
|
|
2583
2557
|
var _a;
|
|
2584
2558
|
const {
|
|
2585
2559
|
getLabel,
|
|
@@ -2589,7 +2563,7 @@ var SelectObject = React19.forwardRef(function(props, ref) {
|
|
|
2589
2563
|
selectedItem,
|
|
2590
2564
|
selectProps = {}
|
|
2591
2565
|
} = props;
|
|
2592
|
-
const [itemList, itemMap] =
|
|
2566
|
+
const [itemList, itemMap] = useMemo(() => {
|
|
2593
2567
|
const valueAccessor = accesorFactory(getValue2);
|
|
2594
2568
|
const labelAccessor = getLabel ? accesorFactory(getLabel) : valueAccessor;
|
|
2595
2569
|
const list = items.map((item) => ({
|
|
@@ -2599,7 +2573,7 @@ var SelectObject = React19.forwardRef(function(props, ref) {
|
|
|
2599
2573
|
}));
|
|
2600
2574
|
return [list, keyBy(list, (option) => option.value)];
|
|
2601
2575
|
}, [items, getLabel, getValue2]);
|
|
2602
|
-
const selected =
|
|
2576
|
+
const selected = useMemo(() => {
|
|
2603
2577
|
if (selectedItem == null) return null;
|
|
2604
2578
|
if (typeof selectedItem === "string") return selectedItem;
|
|
2605
2579
|
const valueAccessor = accesorFactory(getValue2);
|
|
@@ -2611,8 +2585,8 @@ var SelectObject = React19.forwardRef(function(props, ref) {
|
|
|
2611
2585
|
if (items.length === 0 || !selected) {
|
|
2612
2586
|
return null;
|
|
2613
2587
|
}
|
|
2614
|
-
return /* @__PURE__ */
|
|
2615
|
-
|
|
2588
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
2589
|
+
Select,
|
|
2616
2590
|
{
|
|
2617
2591
|
ref,
|
|
2618
2592
|
data: itemList,
|
|
@@ -2633,11 +2607,11 @@ function inputFocusHandler(event) {
|
|
|
2633
2607
|
}
|
|
2634
2608
|
|
|
2635
2609
|
// src/components/CubeSource.tsx
|
|
2636
|
-
|
|
2610
|
+
init_esm_shims();
|
|
2637
2611
|
function CubeAnnotation(props) {
|
|
2638
2612
|
const { annotation, item, locale, ...textProps } = props;
|
|
2639
2613
|
const content = getAnnotation(item, annotation, locale);
|
|
2640
|
-
return content ? /* @__PURE__ */
|
|
2614
|
+
return content ? /* @__PURE__ */ React19__default.createElement(Text, { component: "p", ...textProps }, content) : null;
|
|
2641
2615
|
}
|
|
2642
2616
|
function CubeSourceAnchor(props) {
|
|
2643
2617
|
const { item, locale, ...textProps } = props;
|
|
@@ -2645,12 +2619,12 @@ function CubeSourceAnchor(props) {
|
|
|
2645
2619
|
const srcName = getAnnotation(item, "source_name", locale);
|
|
2646
2620
|
const srcLink = getAnnotation(item, "source_link", locale);
|
|
2647
2621
|
if (!srcName) return null;
|
|
2648
|
-
return /* @__PURE__ */
|
|
2622
|
+
return /* @__PURE__ */ React19__default.createElement(Text, { component: "p", ...textProps }, `${t("params.label_source")}: `, srcLink ? /* @__PURE__ */ React19__default.createElement(Anchor, { href: srcLink }, srcName) : /* @__PURE__ */ React19__default.createElement(Text, { span: true }, srcName));
|
|
2649
2623
|
}
|
|
2650
2624
|
function CubeSource() {
|
|
2651
|
-
const selectedItem =
|
|
2652
|
-
const { code: locale } =
|
|
2653
|
-
return selectedItem && /* @__PURE__ */
|
|
2625
|
+
const selectedItem = useSelector$1(selectOlapCube);
|
|
2626
|
+
const { code: locale } = useSelector$1(selectLocale);
|
|
2627
|
+
return selectedItem && /* @__PURE__ */ React19__default.createElement(Text, { sx: { "& p": { margin: 0 } } }, /* @__PURE__ */ React19__default.createElement(CubeAnnotation, { fz: "xs", fw: "bold", annotation: "table", item: selectedItem, locale }), /* @__PURE__ */ React19__default.createElement(
|
|
2654
2628
|
CubeAnnotation,
|
|
2655
2629
|
{
|
|
2656
2630
|
annotation: "description",
|
|
@@ -2658,7 +2632,7 @@ function CubeSource() {
|
|
|
2658
2632
|
item: selectedItem,
|
|
2659
2633
|
locale
|
|
2660
2634
|
}
|
|
2661
|
-
), /* @__PURE__ */
|
|
2635
|
+
), /* @__PURE__ */ React19__default.createElement(CubeSourceAnchor, { item: selectedItem, locale, fz: "xs" }), /* @__PURE__ */ React19__default.createElement(
|
|
2662
2636
|
CubeAnnotation,
|
|
2663
2637
|
{
|
|
2664
2638
|
annotation: "source_description",
|
|
@@ -2671,13 +2645,13 @@ function CubeSource() {
|
|
|
2671
2645
|
}
|
|
2672
2646
|
|
|
2673
2647
|
// src/components/LocaleSelector.tsx
|
|
2674
|
-
|
|
2648
|
+
init_esm_shims();
|
|
2675
2649
|
|
|
2676
2650
|
// src/components/SelectCubes.tsx
|
|
2677
|
-
|
|
2651
|
+
init_esm_shims();
|
|
2678
2652
|
|
|
2679
2653
|
// src/utils/graph.js
|
|
2680
|
-
|
|
2654
|
+
init_esm_shims();
|
|
2681
2655
|
var Graph = class {
|
|
2682
2656
|
constructor() {
|
|
2683
2657
|
this.nodes = /* @__PURE__ */ new Set([]);
|
|
@@ -2751,7 +2725,7 @@ var Graph = class {
|
|
|
2751
2725
|
const map = /* @__PURE__ */ new Map();
|
|
2752
2726
|
const matches = [];
|
|
2753
2727
|
if (filter !== "") {
|
|
2754
|
-
const results = matchSorter
|
|
2728
|
+
const results = matchSorter(this.items, filter, {
|
|
2755
2729
|
keys: [
|
|
2756
2730
|
"name",
|
|
2757
2731
|
(item) => getAnnotation(item, "topic", locale) || "",
|
|
@@ -2814,17 +2788,17 @@ var Graph = class {
|
|
|
2814
2788
|
var graph_default = Graph;
|
|
2815
2789
|
|
|
2816
2790
|
// src/components/Results.tsx
|
|
2817
|
-
|
|
2791
|
+
init_esm_shims();
|
|
2818
2792
|
|
|
2819
2793
|
// src/components/SideBar.tsx
|
|
2820
|
-
|
|
2794
|
+
init_esm_shims();
|
|
2821
2795
|
|
|
2822
2796
|
// src/utils/create-context.ts
|
|
2823
|
-
|
|
2797
|
+
init_esm_shims();
|
|
2824
2798
|
var createContext3 = (name4) => {
|
|
2825
|
-
const Context =
|
|
2799
|
+
const Context = React19__default.createContext(void 0);
|
|
2826
2800
|
const useContext3 = () => {
|
|
2827
|
-
const ctx =
|
|
2801
|
+
const ctx = React19__default.useContext(Context);
|
|
2828
2802
|
if (ctx === void 0) {
|
|
2829
2803
|
throw new Error(`useContext for must be inside a ${name4}Provider with a value`);
|
|
2830
2804
|
}
|
|
@@ -2834,9 +2808,9 @@ var createContext3 = (name4) => {
|
|
|
2834
2808
|
};
|
|
2835
2809
|
|
|
2836
2810
|
// src/components/icons/index.tsx
|
|
2837
|
-
|
|
2811
|
+
init_esm_shims();
|
|
2838
2812
|
function DataSetSVG() {
|
|
2839
|
-
return /* @__PURE__ */
|
|
2813
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
2840
2814
|
"svg",
|
|
2841
2815
|
{
|
|
2842
2816
|
width: "25",
|
|
@@ -2846,7 +2820,7 @@ function DataSetSVG() {
|
|
|
2846
2820
|
stroke: "currentColor",
|
|
2847
2821
|
xmlns: "http://www.w3.org/2000/svg"
|
|
2848
2822
|
},
|
|
2849
|
-
/* @__PURE__ */
|
|
2823
|
+
/* @__PURE__ */ React19__default.createElement(
|
|
2850
2824
|
"path",
|
|
2851
2825
|
{
|
|
2852
2826
|
d: "M3.33325 5C3.33325 5.66304 4.03563 6.29893 5.28587 6.76777C6.53612 7.23661 8.23181 7.5 9.99992 7.5C11.768 7.5 13.4637 7.23661 14.714 6.76777C15.9642 6.29893 16.6666 5.66304 16.6666 5C16.6666 4.33696 15.9642 3.70107 14.714 3.23223C13.4637 2.76339 11.768 2.5 9.99992 2.5C8.23181 2.5 6.53612 2.76339 5.28587 3.23223C4.03563 3.70107 3.33325 4.33696 3.33325 5Z",
|
|
@@ -2854,7 +2828,7 @@ function DataSetSVG() {
|
|
|
2854
2828
|
strokeLinejoin: "round"
|
|
2855
2829
|
}
|
|
2856
2830
|
),
|
|
2857
|
-
/* @__PURE__ */
|
|
2831
|
+
/* @__PURE__ */ React19__default.createElement(
|
|
2858
2832
|
"path",
|
|
2859
2833
|
{
|
|
2860
2834
|
d: "M3.33325 5V10C3.33325 10.663 4.03563 11.2989 5.28587 11.7678C6.53612 12.2366 8.23181 12.5 9.99992 12.5C11.768 12.5 13.4637 12.2366 14.714 11.7678C15.9642 11.2989 16.6666 10.663 16.6666 10V5",
|
|
@@ -2862,7 +2836,7 @@ function DataSetSVG() {
|
|
|
2862
2836
|
strokeLinejoin: "round"
|
|
2863
2837
|
}
|
|
2864
2838
|
),
|
|
2865
|
-
/* @__PURE__ */
|
|
2839
|
+
/* @__PURE__ */ React19__default.createElement(
|
|
2866
2840
|
"path",
|
|
2867
2841
|
{
|
|
2868
2842
|
d: "M3.33325 10V15C3.33325 15.663 4.03563 16.2989 5.28587 16.7678C6.53612 17.2366 8.23181 17.5 9.99992 17.5C11.768 17.5 13.4637 17.2366 14.714 16.7678C15.9642 16.2989 16.6666 15.663 16.6666 15V10",
|
|
@@ -2873,7 +2847,7 @@ function DataSetSVG() {
|
|
|
2873
2847
|
);
|
|
2874
2848
|
}
|
|
2875
2849
|
function StackSVG() {
|
|
2876
|
-
return /* @__PURE__ */
|
|
2850
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
2877
2851
|
"svg",
|
|
2878
2852
|
{
|
|
2879
2853
|
width: "15",
|
|
@@ -2882,12 +2856,12 @@ function StackSVG() {
|
|
|
2882
2856
|
fill: "currentColor",
|
|
2883
2857
|
xmlns: "http://www.w3.org/2000/svg"
|
|
2884
2858
|
},
|
|
2885
|
-
/* @__PURE__ */
|
|
2886
|
-
/* @__PURE__ */
|
|
2859
|
+
/* @__PURE__ */ React19__default.createElement("path", { d: "M14 3.38826C14 1.87066 10.7949 0.588257 7 0.588257C3.20513 0.588257 0 1.87066 0 3.38826V4.78826C0 6.30586 3.20513 7.58826 7 7.58826C10.7949 7.58826 14 6.30586 14 4.78826V3.38826ZM7 12.4883C3.20513 12.4883 0 11.2059 0 9.68826V11.7883C0 13.3059 3.20513 14.5883 7 14.5883C10.7949 14.5883 14 13.3059 14 11.7883V9.68826C14 11.2059 10.7949 12.4883 7 12.4883Z" }),
|
|
2860
|
+
/* @__PURE__ */ React19__default.createElement("path", { d: "M14 6.18823C14 7.70583 10.7949 8.98823 7 8.98823C3.20513 8.98823 0 7.70583 0 6.18823V8.28823C0 9.80583 3.20513 11.0882 7 11.0882C10.7949 11.0882 14 9.80583 14 8.28823V6.18823Z" })
|
|
2887
2861
|
);
|
|
2888
2862
|
}
|
|
2889
2863
|
function BarsSVG() {
|
|
2890
|
-
return /* @__PURE__ */
|
|
2864
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
2891
2865
|
"svg",
|
|
2892
2866
|
{
|
|
2893
2867
|
width: "15",
|
|
@@ -2896,11 +2870,11 @@ function BarsSVG() {
|
|
|
2896
2870
|
xmlns: "http://www.w3.org/2000/svg",
|
|
2897
2871
|
fill: "currentColor"
|
|
2898
2872
|
},
|
|
2899
|
-
/* @__PURE__ */
|
|
2873
|
+
/* @__PURE__ */ React19__default.createElement("path", { d: "M3.78947 9.6H0.631579V4.8H3.78947V9.6ZM7.57895 9.6H4.42105V2.4H7.57895V9.6ZM11.3684 9.6H8.21053V0H11.3684V9.6ZM12 12H0V10.8H12V12Z" })
|
|
2900
2874
|
);
|
|
2901
2875
|
}
|
|
2902
2876
|
function FullScreenSVG() {
|
|
2903
|
-
return /* @__PURE__ */
|
|
2877
|
+
return /* @__PURE__ */ React19__default.createElement("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", xmlns: "http://www.w3.org/2000/svg", strokeWidth: 1.5 }, /* @__PURE__ */ React19__default.createElement("g", { clipPath: "url(#clip0_905_15763)" }, /* @__PURE__ */ React19__default.createElement(
|
|
2904
2878
|
"path",
|
|
2905
2879
|
{
|
|
2906
2880
|
d: "M3.33325 6.66668V5.00001C3.33325 4.55798 3.50885 4.13406 3.82141 3.8215C4.13397 3.50894 4.55789 3.33334 4.99992 3.33334H6.66659",
|
|
@@ -2908,7 +2882,7 @@ function FullScreenSVG() {
|
|
|
2908
2882
|
strokeLinecap: "round",
|
|
2909
2883
|
strokeLinejoin: "round"
|
|
2910
2884
|
}
|
|
2911
|
-
), /* @__PURE__ */
|
|
2885
|
+
), /* @__PURE__ */ React19__default.createElement(
|
|
2912
2886
|
"path",
|
|
2913
2887
|
{
|
|
2914
2888
|
d: "M3.33325 13.3333V15C3.33325 15.442 3.50885 15.866 3.82141 16.1785C4.13397 16.4911 4.55789 16.6667 4.99992 16.6667H6.66659",
|
|
@@ -2916,7 +2890,7 @@ function FullScreenSVG() {
|
|
|
2916
2890
|
strokeLinecap: "round",
|
|
2917
2891
|
strokeLinejoin: "round"
|
|
2918
2892
|
}
|
|
2919
|
-
), /* @__PURE__ */
|
|
2893
|
+
), /* @__PURE__ */ React19__default.createElement(
|
|
2920
2894
|
"path",
|
|
2921
2895
|
{
|
|
2922
2896
|
d: "M13.3333 3.33334H14.9999C15.4419 3.33334 15.8659 3.50894 16.1784 3.8215C16.491 4.13406 16.6666 4.55798 16.6666 5.00001V6.66668",
|
|
@@ -2924,7 +2898,7 @@ function FullScreenSVG() {
|
|
|
2924
2898
|
strokeLinecap: "round",
|
|
2925
2899
|
strokeLinejoin: "round"
|
|
2926
2900
|
}
|
|
2927
|
-
), /* @__PURE__ */
|
|
2901
|
+
), /* @__PURE__ */ React19__default.createElement(
|
|
2928
2902
|
"path",
|
|
2929
2903
|
{
|
|
2930
2904
|
d: "M13.3333 16.6667H14.9999C15.4419 16.6667 15.8659 16.4911 16.1784 16.1785C16.491 15.866 16.6666 15.442 16.6666 15V13.3333",
|
|
@@ -2932,14 +2906,14 @@ function FullScreenSVG() {
|
|
|
2932
2906
|
strokeLinecap: "round",
|
|
2933
2907
|
strokeLinejoin: "round"
|
|
2934
2908
|
}
|
|
2935
|
-
)), /* @__PURE__ */
|
|
2909
|
+
)), /* @__PURE__ */ React19__default.createElement("defs", null, /* @__PURE__ */ React19__default.createElement("clipPath", { id: "clip0_905_15763" }, /* @__PURE__ */ React19__default.createElement("rect", { width: "20", height: "20", fill: "white" }))));
|
|
2936
2910
|
}
|
|
2937
2911
|
|
|
2938
2912
|
// src/hooks/buildGraph.tsx
|
|
2939
|
-
|
|
2913
|
+
init_esm_shims();
|
|
2940
2914
|
function useBuildGraph(locale) {
|
|
2941
2915
|
const items = useSelector(selectOlapCubeItems);
|
|
2942
|
-
const graph =
|
|
2916
|
+
const graph = useMemo(() => {
|
|
2943
2917
|
const graph2 = new graph_default();
|
|
2944
2918
|
const filteredItems = items.map((item) => {
|
|
2945
2919
|
const { name: name4 } = item;
|
|
@@ -2947,7 +2921,7 @@ function useBuildGraph(locale) {
|
|
|
2947
2921
|
const subtopic = getAnnotation(item, "subtopic", locale);
|
|
2948
2922
|
getAnnotation(item, "table", locale);
|
|
2949
2923
|
const hide = getAnnotation(item, "hide_in_ui", locale);
|
|
2950
|
-
if (!
|
|
2924
|
+
if (!yn(hide)) {
|
|
2951
2925
|
graph2.addNode(topic);
|
|
2952
2926
|
graph2.addNode(subtopic);
|
|
2953
2927
|
graph2.addNode(name4);
|
|
@@ -2964,10 +2938,10 @@ function useBuildGraph(locale) {
|
|
|
2964
2938
|
}
|
|
2965
2939
|
|
|
2966
2940
|
// src/hooks/cubeSearch.tsx
|
|
2967
|
-
|
|
2941
|
+
init_esm_shims();
|
|
2968
2942
|
function useCubeSearch(input, graph) {
|
|
2969
2943
|
const { code: locale } = useSelector(selectLocale);
|
|
2970
|
-
const results =
|
|
2944
|
+
const results = useMemo(() => {
|
|
2971
2945
|
if (graph.items.length > 0) {
|
|
2972
2946
|
const { matches, map } = graph.filter(locale, input);
|
|
2973
2947
|
return {
|
|
@@ -2986,11 +2960,11 @@ function useCubeSearch(input, graph) {
|
|
|
2986
2960
|
// src/components/SideBar.tsx
|
|
2987
2961
|
var [useSideBar, Provider] = createContext3("SideBar");
|
|
2988
2962
|
function SideBarProvider(props) {
|
|
2989
|
-
const [input, setInput] =
|
|
2990
|
-
const [expanded, setExpanded] =
|
|
2963
|
+
const [input, setInput] = useDebouncedState("", 200);
|
|
2964
|
+
const [expanded, setExpanded] = useState(true);
|
|
2991
2965
|
const graph = useBuildGraph(props.locale);
|
|
2992
2966
|
const { results, map } = useCubeSearch(input, graph);
|
|
2993
|
-
return /* @__PURE__ */
|
|
2967
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
2994
2968
|
Provider,
|
|
2995
2969
|
{
|
|
2996
2970
|
...props,
|
|
@@ -3013,15 +2987,15 @@ function SideBarControlBtn({ actionIconProps = {} }) {
|
|
|
3013
2987
|
color: t.colorScheme === "dark" ? t.white : t.colors.gray[7]
|
|
3014
2988
|
});
|
|
3015
2989
|
if (expanded) return null;
|
|
3016
|
-
return /* @__PURE__ */
|
|
3017
|
-
|
|
2990
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
2991
|
+
ActionIcon,
|
|
3018
2992
|
{
|
|
3019
2993
|
onClick: () => setExpanded(!expanded),
|
|
3020
2994
|
variant: "subtle",
|
|
3021
2995
|
...actionIconProps,
|
|
3022
|
-
sx: [sx, ...
|
|
2996
|
+
sx: [sx, ...packSx(actionIconProps.sx)]
|
|
3023
2997
|
},
|
|
3024
|
-
/* @__PURE__ */
|
|
2998
|
+
/* @__PURE__ */ React19__default.createElement(DataSetSVG, null)
|
|
3025
2999
|
);
|
|
3026
3000
|
}
|
|
3027
3001
|
function SideBarControlBtnFixed() {
|
|
@@ -3034,15 +3008,15 @@ function SideBarControlBtnFixed() {
|
|
|
3034
3008
|
height: 50
|
|
3035
3009
|
})
|
|
3036
3010
|
};
|
|
3037
|
-
return /* @__PURE__ */
|
|
3011
|
+
return /* @__PURE__ */ React19__default.createElement(Affix, { position: { left: "1rem", bottom: 150 } }, /* @__PURE__ */ React19__default.createElement(SideBarControlBtn, { actionIconProps }));
|
|
3038
3012
|
}
|
|
3039
3013
|
function SideBar(props) {
|
|
3040
3014
|
const { expanded, setExpanded } = useSideBar();
|
|
3041
3015
|
const { translate: t } = useTranslation();
|
|
3042
|
-
const theme =
|
|
3043
|
-
const smallerThanMd =
|
|
3044
|
-
return /* @__PURE__ */
|
|
3045
|
-
|
|
3016
|
+
const theme = useMantineTheme();
|
|
3017
|
+
const smallerThanMd = useMediaQuery(`(max-width: ${theme.breakpoints.md})`);
|
|
3018
|
+
return /* @__PURE__ */ React19__default.createElement(React19__default.Fragment, null, smallerThanMd && /* @__PURE__ */ React19__default.createElement(SideBarControlBtnFixed, null), /* @__PURE__ */ React19__default.createElement(
|
|
3019
|
+
Box,
|
|
3046
3020
|
{
|
|
3047
3021
|
id: "dex-sidebar",
|
|
3048
3022
|
py: "md",
|
|
@@ -3067,8 +3041,8 @@ function SideBar(props) {
|
|
|
3067
3041
|
}
|
|
3068
3042
|
})
|
|
3069
3043
|
},
|
|
3070
|
-
/* @__PURE__ */
|
|
3071
|
-
|
|
3044
|
+
/* @__PURE__ */ React19__default.createElement(Flex, { h: "100%", direction: "column", justify: "flex-start" }, /* @__PURE__ */ React19__default.createElement(Box, { px: "sm", my: "sm" }, /* @__PURE__ */ React19__default.createElement(Flex, { direction: "column", sx: { flex: 1 } }, /* @__PURE__ */ React19__default.createElement(Flex, { align: "center", justify: "apart" }, /* @__PURE__ */ React19__default.createElement(SideBarControlBtn, null), /* @__PURE__ */ React19__default.createElement(
|
|
3045
|
+
Group,
|
|
3072
3046
|
{
|
|
3073
3047
|
position: "apart",
|
|
3074
3048
|
noWrap: true,
|
|
@@ -3079,9 +3053,9 @@ function SideBar(props) {
|
|
|
3079
3053
|
width: expanded ? 300 : 0
|
|
3080
3054
|
}
|
|
3081
3055
|
},
|
|
3082
|
-
/* @__PURE__ */
|
|
3083
|
-
)), /* @__PURE__ */
|
|
3084
|
-
|
|
3056
|
+
/* @__PURE__ */ React19__default.createElement(Text, { sx: (t2) => ({ color: t2.colorScheme === "dark" ? t2.white : t2.black }), ml: "sm" }, t("params.label_dataset"))
|
|
3057
|
+
)), /* @__PURE__ */ React19__default.createElement(
|
|
3058
|
+
Box,
|
|
3085
3059
|
{
|
|
3086
3060
|
my: "md",
|
|
3087
3061
|
sx: {
|
|
@@ -3091,9 +3065,9 @@ function SideBar(props) {
|
|
|
3091
3065
|
width: expanded ? "100%" : 0
|
|
3092
3066
|
}
|
|
3093
3067
|
},
|
|
3094
|
-
/* @__PURE__ */
|
|
3095
|
-
), /* @__PURE__ */
|
|
3096
|
-
|
|
3068
|
+
/* @__PURE__ */ React19__default.createElement(Auto, null)
|
|
3069
|
+
), /* @__PURE__ */ React19__default.createElement(Box, { sx: { flexGrow: 1 } }))), /* @__PURE__ */ React19__default.createElement(
|
|
3070
|
+
ScrollArea,
|
|
3097
3071
|
{
|
|
3098
3072
|
id: "dex-select-cube-area",
|
|
3099
3073
|
sx: (theme2) => ({
|
|
@@ -3102,9 +3076,9 @@ function SideBar(props) {
|
|
|
3102
3076
|
borderTopStyle: expanded ? "solid" : "none"
|
|
3103
3077
|
})
|
|
3104
3078
|
},
|
|
3105
|
-
/* @__PURE__ */
|
|
3106
|
-
), /* @__PURE__ */
|
|
3107
|
-
|
|
3079
|
+
/* @__PURE__ */ React19__default.createElement(Box, { h: expanded ? "auto" : "0px" }, props.children)
|
|
3080
|
+
), /* @__PURE__ */ React19__default.createElement(
|
|
3081
|
+
Group,
|
|
3108
3082
|
{
|
|
3109
3083
|
align: "center",
|
|
3110
3084
|
position: expanded ? "right" : "center",
|
|
@@ -3113,8 +3087,8 @@ function SideBar(props) {
|
|
|
3113
3087
|
sx: { alignSelf: "flex-end", marginTop: "auto" },
|
|
3114
3088
|
noWrap: true
|
|
3115
3089
|
},
|
|
3116
|
-
/* @__PURE__ */
|
|
3117
|
-
|
|
3090
|
+
/* @__PURE__ */ React19__default.createElement(
|
|
3091
|
+
ActionIcon,
|
|
3118
3092
|
{
|
|
3119
3093
|
onClick: () => setExpanded(!expanded),
|
|
3120
3094
|
variant: "subtle",
|
|
@@ -3122,7 +3096,7 @@ function SideBar(props) {
|
|
|
3122
3096
|
color: "primaryColor",
|
|
3123
3097
|
sx: (t2) => ({ alignSelf: "flex-end" })
|
|
3124
3098
|
},
|
|
3125
|
-
expanded ? /* @__PURE__ */
|
|
3099
|
+
expanded ? /* @__PURE__ */ React19__default.createElement(IconChevronLeft, { size: "1.5rem" }) : /* @__PURE__ */ React19__default.createElement(IconChevronRight, { size: "1.5rem" })
|
|
3126
3100
|
)
|
|
3127
3101
|
))
|
|
3128
3102
|
));
|
|
@@ -3130,8 +3104,8 @@ function SideBar(props) {
|
|
|
3130
3104
|
var SideBar_default = SideBar;
|
|
3131
3105
|
function SideBarItem({ children }) {
|
|
3132
3106
|
const { expanded } = useSideBar();
|
|
3133
|
-
return /* @__PURE__ */
|
|
3134
|
-
|
|
3107
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
3108
|
+
Box,
|
|
3135
3109
|
{
|
|
3136
3110
|
sx: {
|
|
3137
3111
|
overflow: "hidden",
|
|
@@ -3146,10 +3120,10 @@ function SideBarItem({ children }) {
|
|
|
3146
3120
|
function Auto() {
|
|
3147
3121
|
const { translate: t } = useTranslation();
|
|
3148
3122
|
const { expanded, input, setInput } = useSideBar();
|
|
3149
|
-
return /* @__PURE__ */
|
|
3150
|
-
|
|
3123
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
3124
|
+
Input,
|
|
3151
3125
|
{
|
|
3152
|
-
icon: /* @__PURE__ */
|
|
3126
|
+
icon: /* @__PURE__ */ React19__default.createElement(IconSearch, null),
|
|
3153
3127
|
id: "dex-search",
|
|
3154
3128
|
radius: "xl",
|
|
3155
3129
|
size: "md",
|
|
@@ -3166,8 +3140,8 @@ function Auto() {
|
|
|
3166
3140
|
whiteSpace: "nowrap"
|
|
3167
3141
|
}
|
|
3168
3142
|
},
|
|
3169
|
-
rightSection: /* @__PURE__ */
|
|
3170
|
-
|
|
3143
|
+
rightSection: /* @__PURE__ */ React19__default.createElement(
|
|
3144
|
+
CloseButton,
|
|
3171
3145
|
{
|
|
3172
3146
|
"aria-label": "Clear input",
|
|
3173
3147
|
onClick: () => setInput(""),
|
|
@@ -3187,11 +3161,11 @@ function Results(props) {
|
|
|
3187
3161
|
if (map) {
|
|
3188
3162
|
for (let [key, items] of map) {
|
|
3189
3163
|
const [topic, subtopic] = key.split(" - ");
|
|
3190
|
-
const component = /* @__PURE__ */
|
|
3164
|
+
const component = /* @__PURE__ */ React19__default.createElement("div", { key }, /* @__PURE__ */ React19__default.createElement(Divider, { my: "xs", label: key }), items.map((item) => {
|
|
3191
3165
|
const cube = getCube2(graph.items, item, subtopic, locale);
|
|
3192
3166
|
const table = getAnnotation(cube, "table", locale);
|
|
3193
|
-
return /* @__PURE__ */
|
|
3194
|
-
|
|
3167
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
3168
|
+
Text,
|
|
3195
3169
|
{
|
|
3196
3170
|
key: cube.name,
|
|
3197
3171
|
component: "a",
|
|
@@ -3209,9 +3183,9 @@ function Results(props) {
|
|
|
3209
3183
|
result.push(component);
|
|
3210
3184
|
}
|
|
3211
3185
|
}
|
|
3212
|
-
return /* @__PURE__ */
|
|
3186
|
+
return /* @__PURE__ */ React19__default.createElement(Box, { px: "sm" }, result);
|
|
3213
3187
|
}
|
|
3214
|
-
var useStyles2 =
|
|
3188
|
+
var useStyles2 = createStyles((theme) => ({
|
|
3215
3189
|
link: {
|
|
3216
3190
|
...theme.fn.focusStyles(),
|
|
3217
3191
|
WebkitTapHighlightColor: "transparent",
|
|
@@ -3220,7 +3194,7 @@ var useStyles2 = core.createStyles((theme) => ({
|
|
|
3220
3194
|
textDecoration: "none",
|
|
3221
3195
|
color: theme.colorScheme === "dark" ? theme.colors.dark[1] : theme.colors.gray[7],
|
|
3222
3196
|
padding: theme.spacing.xs,
|
|
3223
|
-
minHeight:
|
|
3197
|
+
minHeight: rem(20),
|
|
3224
3198
|
fontSize: theme.fontSizes.sm,
|
|
3225
3199
|
whiteSpace: "wrap",
|
|
3226
3200
|
cursor: "pointer",
|
|
@@ -3245,24 +3219,24 @@ var EMPTY_RESPONSE = {
|
|
|
3245
3219
|
page: { offset: 0, limit: 0, total: 0 }
|
|
3246
3220
|
};
|
|
3247
3221
|
function SelectCube({ locale }) {
|
|
3248
|
-
const items =
|
|
3249
|
-
const selectedItem =
|
|
3222
|
+
const items = useSelector$1(selectOlapCubeItems);
|
|
3223
|
+
const selectedItem = useSelector$1(selectOlapCube);
|
|
3250
3224
|
if (items.length === 1) {
|
|
3251
3225
|
return null;
|
|
3252
3226
|
}
|
|
3253
|
-
return /* @__PURE__ */
|
|
3227
|
+
return /* @__PURE__ */ React19__default.createElement(SelectCubeInternal, { items, selectedItem, locale });
|
|
3254
3228
|
}
|
|
3255
3229
|
function SelectCubeInternal(props) {
|
|
3256
3230
|
const { measuresActive } = useSettings();
|
|
3257
3231
|
const { items, selectedItem, locale } = props;
|
|
3258
3232
|
const { updateMeasure, updateDrilldown, willFetchMembers: willFetchMembers2, updateCut } = useActions();
|
|
3259
|
-
const cutItems =
|
|
3260
|
-
const cube =
|
|
3261
|
-
const itemMap =
|
|
3262
|
-
const dimensions =
|
|
3263
|
-
const drilldowns =
|
|
3264
|
-
const ditems =
|
|
3265
|
-
const createCutHandler =
|
|
3233
|
+
const cutItems = useSelector$1(selectCutItems);
|
|
3234
|
+
const cube = useSelector$1(selectCubeName);
|
|
3235
|
+
const itemMap = useSelector$1(selectMeasureMap);
|
|
3236
|
+
const dimensions = useSelector$1(selectOlapDimensionItems);
|
|
3237
|
+
const drilldowns = useSelector$1(selectDrilldownMap);
|
|
3238
|
+
const ditems = useSelector$1(selectDrilldownItems);
|
|
3239
|
+
const createCutHandler = useCallback((level) => {
|
|
3266
3240
|
updateCut(buildCut({ ...level, active: false }));
|
|
3267
3241
|
}, []);
|
|
3268
3242
|
function createDrilldown(level, cuts) {
|
|
@@ -3282,7 +3256,7 @@ function SelectCubeInternal(props) {
|
|
|
3282
3256
|
return drilldown;
|
|
3283
3257
|
}
|
|
3284
3258
|
}
|
|
3285
|
-
|
|
3259
|
+
useEffect(() => {
|
|
3286
3260
|
const params = new URLSearchParams(location.search);
|
|
3287
3261
|
const cubeParam = params.get("cube");
|
|
3288
3262
|
if (selectedItem && cube && !cubeParam) {
|
|
@@ -3302,10 +3276,10 @@ function SelectCubeInternal(props) {
|
|
|
3302
3276
|
}
|
|
3303
3277
|
}
|
|
3304
3278
|
}, [selectedItem, cube, measuresActive]);
|
|
3305
|
-
return /* @__PURE__ */
|
|
3279
|
+
return /* @__PURE__ */ React19__default.createElement(Stack, { id: "dex-select-cube", spacing: "xs", w: "100%" }, /* @__PURE__ */ React19__default.createElement(CubeTree, { items, locale, selectedItem }));
|
|
3306
3280
|
}
|
|
3307
3281
|
function AccordionControl(props) {
|
|
3308
|
-
return /* @__PURE__ */
|
|
3282
|
+
return /* @__PURE__ */ React19__default.createElement(Box, { sx: { display: "flex", alignItems: "center" } }, /* @__PURE__ */ React19__default.createElement(Accordion.Control, { ...props }));
|
|
3309
3283
|
}
|
|
3310
3284
|
function getKeys2(items, k, locale, filter) {
|
|
3311
3285
|
let cubes = items;
|
|
@@ -3339,7 +3313,7 @@ function CubeTree({
|
|
|
3339
3313
|
const { translate: t } = useTranslation();
|
|
3340
3314
|
const { measuresActive } = useSettings();
|
|
3341
3315
|
const actions2 = useActions();
|
|
3342
|
-
const query =
|
|
3316
|
+
const query = useSelector$1(selectCurrentQueryParams);
|
|
3343
3317
|
const onSelectCube = (table, subtopic) => {
|
|
3344
3318
|
const cube = items.find(
|
|
3345
3319
|
(item) => item.name === table && getAnnotation(item, "subtopic", locale) === subtopic
|
|
@@ -3354,15 +3328,15 @@ function CubeTree({
|
|
|
3354
3328
|
});
|
|
3355
3329
|
}
|
|
3356
3330
|
};
|
|
3357
|
-
let topics =
|
|
3331
|
+
let topics = useMemo(
|
|
3358
3332
|
() => getKeys2(graph.items, "topic", locale),
|
|
3359
3333
|
[graph.items, locale]
|
|
3360
3334
|
);
|
|
3361
3335
|
topics = [topics[0], topics[1]];
|
|
3362
3336
|
if (input.length > 0 && map && !(map.size > 0)) {
|
|
3363
|
-
return /* @__PURE__ */
|
|
3337
|
+
return /* @__PURE__ */ React19__default.createElement(Text, { ta: "center", fz: "xs", my: "sm", italic: true }, t("params.label_no_results"));
|
|
3364
3338
|
}
|
|
3365
|
-
return map && map.size > 0 ? /* @__PURE__ */
|
|
3339
|
+
return map && map.size > 0 ? /* @__PURE__ */ React19__default.createElement(
|
|
3366
3340
|
Results_default,
|
|
3367
3341
|
{
|
|
3368
3342
|
onSelectCube,
|
|
@@ -3372,7 +3346,7 @@ function CubeTree({
|
|
|
3372
3346
|
graph,
|
|
3373
3347
|
locale
|
|
3374
3348
|
}
|
|
3375
|
-
) : graph.items.length > 0 && /* @__PURE__ */
|
|
3349
|
+
) : graph.items.length > 0 && /* @__PURE__ */ React19__default.createElement(
|
|
3376
3350
|
RootAccordions,
|
|
3377
3351
|
{
|
|
3378
3352
|
items: topics,
|
|
@@ -3384,9 +3358,9 @@ function CubeTree({
|
|
|
3384
3358
|
);
|
|
3385
3359
|
}
|
|
3386
3360
|
function useAccordionValue(key, locale) {
|
|
3387
|
-
const selectedItem =
|
|
3388
|
-
const [value, setValue] =
|
|
3389
|
-
|
|
3361
|
+
const selectedItem = useSelector$1(selectOlapCube);
|
|
3362
|
+
const [value, setValue] = useState(null);
|
|
3363
|
+
useEffect(() => {
|
|
3390
3364
|
if (selectedItem) {
|
|
3391
3365
|
const value2 = getAnnotation(selectedItem, key, locale);
|
|
3392
3366
|
setValue(`${key}-${value2}`);
|
|
@@ -3396,8 +3370,8 @@ function useAccordionValue(key, locale) {
|
|
|
3396
3370
|
}
|
|
3397
3371
|
function RootAccordions({ items, graph, locale, selectedItem, onSelectCube }) {
|
|
3398
3372
|
const { value, setValue } = useAccordionValue("topic", locale);
|
|
3399
|
-
return /* @__PURE__ */
|
|
3400
|
-
|
|
3373
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
3374
|
+
Accordion,
|
|
3401
3375
|
{
|
|
3402
3376
|
value,
|
|
3403
3377
|
onChange: setValue,
|
|
@@ -3427,7 +3401,7 @@ function RootAccordions({ items, graph, locale, selectedItem, onSelectCube }) {
|
|
|
3427
3401
|
})
|
|
3428
3402
|
},
|
|
3429
3403
|
items.map((item) => {
|
|
3430
|
-
return /* @__PURE__ */
|
|
3404
|
+
return /* @__PURE__ */ React19__default.createElement(Accordion.Item, { value: `topic-${item}`, key: `topic-${item}` }, /* @__PURE__ */ React19__default.createElement(AccordionControl, null, item), /* @__PURE__ */ React19__default.createElement(Accordion.Panel, null, /* @__PURE__ */ React19__default.createElement(
|
|
3431
3405
|
SubtopicAccordion,
|
|
3432
3406
|
{
|
|
3433
3407
|
graph,
|
|
@@ -3453,8 +3427,8 @@ function CubeButton({
|
|
|
3453
3427
|
const { classes } = useStyles2();
|
|
3454
3428
|
const table = graph.getName(item, locale);
|
|
3455
3429
|
const subtopic = parent != null ? parent : "";
|
|
3456
|
-
return /* @__PURE__ */
|
|
3457
|
-
|
|
3430
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
3431
|
+
Text,
|
|
3458
3432
|
{
|
|
3459
3433
|
key: `table-${item}`,
|
|
3460
3434
|
fz: "xs",
|
|
@@ -3481,8 +3455,8 @@ function SubtopicAccordion({
|
|
|
3481
3455
|
locale
|
|
3482
3456
|
}) {
|
|
3483
3457
|
const { value, setValue } = useAccordionValue("subtopic", locale);
|
|
3484
|
-
return /* @__PURE__ */
|
|
3485
|
-
|
|
3458
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
3459
|
+
Accordion,
|
|
3486
3460
|
{
|
|
3487
3461
|
value,
|
|
3488
3462
|
onChange: setValue,
|
|
@@ -3508,7 +3482,7 @@ function SubtopicAccordion({
|
|
|
3508
3482
|
},
|
|
3509
3483
|
[...items].map((item, index) => {
|
|
3510
3484
|
const filtered = [...graph.adjList[item]].filter((value2) => value2 !== parent);
|
|
3511
|
-
return /* @__PURE__ */
|
|
3485
|
+
return /* @__PURE__ */ React19__default.createElement(Accordion.Item, { value: `subtopic-${item}`, key: `subtopic-${item}-${index}` }, /* @__PURE__ */ React19__default.createElement(AccordionControl, null, item), /* @__PURE__ */ React19__default.createElement(Accordion.Panel, null, filtered.map((table, index2) => /* @__PURE__ */ React19__default.createElement(
|
|
3512
3486
|
CubeButton,
|
|
3513
3487
|
{
|
|
3514
3488
|
key: index2,
|
|
@@ -3548,11 +3522,11 @@ var localeSelectorStyle = (theme) => ({
|
|
|
3548
3522
|
function LocaleSelector() {
|
|
3549
3523
|
const actions2 = useActions();
|
|
3550
3524
|
const { translate: t, locale } = useTranslation();
|
|
3551
|
-
const { code: currentCode } =
|
|
3552
|
-
const { localeOptions } =
|
|
3553
|
-
const theme =
|
|
3554
|
-
const options =
|
|
3555
|
-
const languages =
|
|
3525
|
+
const { code: currentCode } = useSelector$1(selectLocale);
|
|
3526
|
+
const { localeOptions } = useSelector$1(selectServerState);
|
|
3527
|
+
const theme = useMantineTheme();
|
|
3528
|
+
const options = useMemo(() => {
|
|
3529
|
+
const languages = ISO6391.getLanguages(localeOptions);
|
|
3556
3530
|
return languages.map((lang) => ({
|
|
3557
3531
|
label: t("params.label_localeoption", {
|
|
3558
3532
|
code: lang.code,
|
|
@@ -3575,7 +3549,7 @@ function LocaleSelector() {
|
|
|
3575
3549
|
if (localeOptions.length < 2) {
|
|
3576
3550
|
return null;
|
|
3577
3551
|
}
|
|
3578
|
-
return /* @__PURE__ */
|
|
3552
|
+
return /* @__PURE__ */ React19__default.createElement(Box, { id: "dex-select-locale" }, /* @__PURE__ */ React19__default.createElement(Tooltip, { label: t("params.label_locale") }, /* @__PURE__ */ React19__default.createElement(
|
|
3579
3553
|
SelectObject,
|
|
3580
3554
|
{
|
|
3581
3555
|
getLabel: "value",
|
|
@@ -3585,8 +3559,8 @@ function LocaleSelector() {
|
|
|
3585
3559
|
selectedItem: currentCode,
|
|
3586
3560
|
selectProps: {
|
|
3587
3561
|
styles: localeSelectorStyle,
|
|
3588
|
-
icon: /* @__PURE__ */
|
|
3589
|
-
|
|
3562
|
+
icon: /* @__PURE__ */ React19__default.createElement(
|
|
3563
|
+
IconLanguage,
|
|
3590
3564
|
{
|
|
3591
3565
|
size: "0.8rem",
|
|
3592
3566
|
color: theme.colorScheme === "dark" ? theme.fn.lighten(theme.fn.primaryColor(), 0.8) : theme.fn.primaryColor()
|
|
@@ -3602,20 +3576,20 @@ var formatter = new Intl.NumberFormat("en-US", {
|
|
|
3602
3576
|
maximumFractionDigits: 0
|
|
3603
3577
|
});
|
|
3604
3578
|
function TableFooter(props) {
|
|
3605
|
-
const loading =
|
|
3579
|
+
const loading = useSelector$1(selectLoadingState);
|
|
3606
3580
|
const { paginationConfig } = useSettings();
|
|
3607
3581
|
const { result, table, data = [], isLoading, pagination, setPagination } = props;
|
|
3608
3582
|
const { translate: t } = useTranslation();
|
|
3609
3583
|
const { url } = result;
|
|
3610
|
-
const { copy, copied } =
|
|
3611
|
-
const copyHandler =
|
|
3584
|
+
const { copy, copied } = useClipboard({ timeout: 1e3 });
|
|
3585
|
+
const copyHandler = useCallback(() => copy(url), [url]);
|
|
3612
3586
|
const totalRowCount = table.options.rowCount;
|
|
3613
3587
|
const {
|
|
3614
3588
|
pagination: { pageSize }
|
|
3615
3589
|
} = table.getState();
|
|
3616
3590
|
const showPagination = totalRowCount && Boolean(totalRowCount > pageSize);
|
|
3617
|
-
return /* @__PURE__ */
|
|
3618
|
-
|
|
3591
|
+
return /* @__PURE__ */ React19__default.createElement(Box, { w: "100%", sx: { flex: "0 0 70px" } }, /* @__PURE__ */ React19__default.createElement(
|
|
3592
|
+
Flex,
|
|
3619
3593
|
{
|
|
3620
3594
|
p: "md",
|
|
3621
3595
|
justify: "space-between",
|
|
@@ -3623,8 +3597,8 @@ function TableFooter(props) {
|
|
|
3623
3597
|
direction: { base: "column-reverse", md: "row" },
|
|
3624
3598
|
gap: "sm"
|
|
3625
3599
|
},
|
|
3626
|
-
/* @__PURE__ */
|
|
3627
|
-
!loading.loading && !isLoading && /* @__PURE__ */
|
|
3600
|
+
/* @__PURE__ */ React19__default.createElement(CubeSource, null),
|
|
3601
|
+
!loading.loading && !isLoading && /* @__PURE__ */ React19__default.createElement(Group, { position: "right", spacing: "sm" }, /* @__PURE__ */ React19__default.createElement(LocaleSelector, null), /* @__PURE__ */ React19__default.createElement(Box, { maw: "7rem", miw: "fit" }, /* @__PURE__ */ React19__default.createElement(
|
|
3628
3602
|
SelectObject,
|
|
3629
3603
|
{
|
|
3630
3604
|
getValue: (item) => item.value,
|
|
@@ -3633,24 +3607,24 @@ function TableFooter(props) {
|
|
|
3633
3607
|
selectedItem: { value: pagination == null ? void 0 : pagination.pageSize },
|
|
3634
3608
|
onItemSelect: (item) => setPagination && setPagination({ pageIndex: 0, pageSize: item.value })
|
|
3635
3609
|
}
|
|
3636
|
-
)), totalRowCount && /* @__PURE__ */
|
|
3610
|
+
)), totalRowCount && /* @__PURE__ */ React19__default.createElement(Text, { c: "dimmed" }, t("results.count_rows_plural", { n: formatter.format(totalRowCount) })), showPagination && /* @__PURE__ */ React19__default.createElement(MRT_TablePagination, { table }), /* @__PURE__ */ React19__default.createElement(ApiAndCsvButtons, { copied, copyHandler, url, data }))
|
|
3637
3611
|
));
|
|
3638
3612
|
}
|
|
3639
3613
|
var ApiAndCsvButtons = (props) => {
|
|
3640
3614
|
const { copied, copyHandler, url, data } = props;
|
|
3641
3615
|
const { translate: t } = useTranslation();
|
|
3642
|
-
return /* @__PURE__ */
|
|
3643
|
-
|
|
3616
|
+
return /* @__PURE__ */ React19__default.createElement(Box, { id: "query-results-debug-view" }, /* @__PURE__ */ React19__default.createElement(Group, { spacing: "xs" }, url && /* @__PURE__ */ React19__default.createElement(
|
|
3617
|
+
Button,
|
|
3644
3618
|
{
|
|
3645
3619
|
id: "dex-api-btn",
|
|
3646
3620
|
variant: "subtle",
|
|
3647
|
-
leftIcon: /* @__PURE__ */
|
|
3621
|
+
leftIcon: /* @__PURE__ */ React19__default.createElement(IconCopy, { size: 20 }),
|
|
3648
3622
|
sx: { height: 30 },
|
|
3649
3623
|
onClick: copyHandler
|
|
3650
3624
|
},
|
|
3651
3625
|
copied ? t("action_copy_done") : t("action_copy"),
|
|
3652
3626
|
" API"
|
|
3653
|
-
), /* @__PURE__ */
|
|
3627
|
+
), /* @__PURE__ */ React19__default.createElement(DownloadQuery, { data })));
|
|
3654
3628
|
};
|
|
3655
3629
|
var DownloadQuery = ({ data }) => {
|
|
3656
3630
|
const actions2 = useActions();
|
|
@@ -3658,11 +3632,11 @@ var DownloadQuery = ({ data }) => {
|
|
|
3658
3632
|
const formats = Object.values(Format);
|
|
3659
3633
|
const components = [];
|
|
3660
3634
|
components.push(
|
|
3661
|
-
/* @__PURE__ */
|
|
3635
|
+
/* @__PURE__ */ React19__default.createElement(
|
|
3662
3636
|
ButtonDownload,
|
|
3663
3637
|
{
|
|
3664
3638
|
variant: "light",
|
|
3665
|
-
leftIcon: /* @__PURE__ */
|
|
3639
|
+
leftIcon: /* @__PURE__ */ React19__default.createElement(IconDownload, { size: 20 }),
|
|
3666
3640
|
sx: { height: 30 },
|
|
3667
3641
|
key: "download_csv",
|
|
3668
3642
|
provider: () => actions2.willDownloadQuery("csv")
|
|
@@ -3673,7 +3647,7 @@ var DownloadQuery = ({ data }) => {
|
|
|
3673
3647
|
if (components.length === 0 || data.length === 0) {
|
|
3674
3648
|
return null;
|
|
3675
3649
|
}
|
|
3676
|
-
return /* @__PURE__ */
|
|
3650
|
+
return /* @__PURE__ */ React19__default.createElement(Box, { id: "dex-btn-group-download" }, /* @__PURE__ */ React19__default.createElement(Group, { spacing: "xs" }, components, /* @__PURE__ */ React19__default.createElement(MenuOpts, { formats: formats.filter((f) => f !== "csv") })));
|
|
3677
3651
|
};
|
|
3678
3652
|
var mimeTypes = {
|
|
3679
3653
|
csv: "text/csv",
|
|
@@ -3685,7 +3659,7 @@ var mimeTypes = {
|
|
|
3685
3659
|
function useDownload(props) {
|
|
3686
3660
|
const { provider } = props;
|
|
3687
3661
|
const { run, data: file, error, isLoading } = useAsync();
|
|
3688
|
-
|
|
3662
|
+
useEffect(() => {
|
|
3689
3663
|
if (file) {
|
|
3690
3664
|
const blob = typeof file.content !== "string" ? file.content : new window.Blob([file.content], {
|
|
3691
3665
|
type: mimeTypes[file.extension] || "application/octet-stream"
|
|
@@ -3706,7 +3680,7 @@ function useDownload(props) {
|
|
|
3706
3680
|
anchor.click();
|
|
3707
3681
|
}
|
|
3708
3682
|
}, [file]);
|
|
3709
|
-
const onClick =
|
|
3683
|
+
const onClick = useCallback(
|
|
3710
3684
|
(evt) => {
|
|
3711
3685
|
evt.stopPropagation();
|
|
3712
3686
|
evt.preventDefault();
|
|
@@ -3719,13 +3693,13 @@ function useDownload(props) {
|
|
|
3719
3693
|
var ButtonDownload = (props) => {
|
|
3720
3694
|
const { provider, ...buttonProps } = props;
|
|
3721
3695
|
const { onClick, isLoading } = useDownload({ provider });
|
|
3722
|
-
return /* @__PURE__ */
|
|
3696
|
+
return /* @__PURE__ */ React19__default.createElement(Button, { ...buttonProps, onClick, loading: isLoading }, /* @__PURE__ */ React19__default.createElement(Text, { fz: "sm" }, props.children));
|
|
3723
3697
|
};
|
|
3724
3698
|
var ItemDownload = (props) => {
|
|
3725
3699
|
const { provider, icon, setOpened, ...itemProps } = props;
|
|
3726
3700
|
const { onClick, isLoading } = useDownload({ provider });
|
|
3727
|
-
return /* @__PURE__ */
|
|
3728
|
-
|
|
3701
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
3702
|
+
Menu.Item,
|
|
3729
3703
|
{
|
|
3730
3704
|
...itemProps,
|
|
3731
3705
|
icon: icon(isLoading),
|
|
@@ -3736,30 +3710,30 @@ var ItemDownload = (props) => {
|
|
|
3736
3710
|
});
|
|
3737
3711
|
}
|
|
3738
3712
|
},
|
|
3739
|
-
/* @__PURE__ */
|
|
3713
|
+
/* @__PURE__ */ React19__default.createElement(Text, { fz: "sm" }, props.children)
|
|
3740
3714
|
);
|
|
3741
3715
|
};
|
|
3742
3716
|
function MenuOpts({ formats }) {
|
|
3743
3717
|
const actions2 = useActions();
|
|
3744
3718
|
const { translate: t } = useTranslation();
|
|
3745
|
-
const [opened, setOpened] =
|
|
3746
|
-
const ref =
|
|
3747
|
-
const buttons =
|
|
3748
|
-
() => formats.map((format2) => /* @__PURE__ */
|
|
3719
|
+
const [opened, setOpened] = useState(false);
|
|
3720
|
+
const ref = useClickOutside(() => setOpened(false));
|
|
3721
|
+
const buttons = useMemo(
|
|
3722
|
+
() => formats.map((format2) => /* @__PURE__ */ React19__default.createElement(
|
|
3749
3723
|
ItemDownload,
|
|
3750
3724
|
{
|
|
3751
3725
|
component: "a",
|
|
3752
3726
|
key: format2,
|
|
3753
3727
|
provider: () => actions2.willDownloadQuery(format2),
|
|
3754
|
-
icon: (loading) => loading ? /* @__PURE__ */
|
|
3728
|
+
icon: (loading) => loading ? /* @__PURE__ */ React19__default.createElement(Loader, { size: 15 }) : /* @__PURE__ */ React19__default.createElement(IconDownload, { size: 15 }),
|
|
3755
3729
|
setOpened
|
|
3756
3730
|
},
|
|
3757
|
-
/* @__PURE__ */
|
|
3731
|
+
/* @__PURE__ */ React19__default.createElement(Text, { size: "xs" }, t(`formats.${format2}`))
|
|
3758
3732
|
)),
|
|
3759
3733
|
[formats, t]
|
|
3760
3734
|
);
|
|
3761
|
-
return /* @__PURE__ */
|
|
3762
|
-
|
|
3735
|
+
return /* @__PURE__ */ React19__default.createElement(Menu, { shadow: "md", width: 200, opened }, /* @__PURE__ */ React19__default.createElement(Menu.Target, null, /* @__PURE__ */ React19__default.createElement(
|
|
3736
|
+
ActionIcon,
|
|
3763
3737
|
{
|
|
3764
3738
|
onClick: () => setOpened((o) => !o),
|
|
3765
3739
|
variant: "filled",
|
|
@@ -3769,8 +3743,8 @@ function MenuOpts({ formats }) {
|
|
|
3769
3743
|
minWidth: 0
|
|
3770
3744
|
}
|
|
3771
3745
|
},
|
|
3772
|
-
/* @__PURE__ */
|
|
3773
|
-
)), /* @__PURE__ */
|
|
3746
|
+
/* @__PURE__ */ React19__default.createElement(IconDotsVertical, { size: "0.8rem" })
|
|
3747
|
+
)), /* @__PURE__ */ React19__default.createElement(Menu.Dropdown, null, /* @__PURE__ */ React19__default.createElement(Menu.Label, null, t("params.title_downloaddata")), /* @__PURE__ */ React19__default.createElement("div", { ref }, buttons)));
|
|
3774
3748
|
}
|
|
3775
3749
|
var TableFooter_default = TableFooter;
|
|
3776
3750
|
|
|
@@ -3814,9 +3788,9 @@ function showTrashIcon(columns, type) {
|
|
|
3814
3788
|
}
|
|
3815
3789
|
var getActionIcon = (entityType) => {
|
|
3816
3790
|
if (entityType === "measure") {
|
|
3817
|
-
return /* @__PURE__ */
|
|
3791
|
+
return /* @__PURE__ */ React19__default.createElement(ActionIcon, { size: "md", color: "red" }, /* @__PURE__ */ React19__default.createElement(BarsSVG, null));
|
|
3818
3792
|
} else if (entityType === "level") {
|
|
3819
|
-
return /* @__PURE__ */
|
|
3793
|
+
return /* @__PURE__ */ React19__default.createElement(ActionIcon, { size: "md", color: "blue" }, /* @__PURE__ */ React19__default.createElement(StackSVG, null));
|
|
3820
3794
|
}
|
|
3821
3795
|
};
|
|
3822
3796
|
var getEntityText = (entityType) => {
|
|
@@ -3840,11 +3814,11 @@ function getMantineFilterMultiSelectProps(isId, isNumeric, range) {
|
|
|
3840
3814
|
function getSortIcon(value, entityType) {
|
|
3841
3815
|
switch (value) {
|
|
3842
3816
|
case "asc":
|
|
3843
|
-
return entityType === "measure" ? /* @__PURE__ */
|
|
3817
|
+
return entityType === "measure" ? /* @__PURE__ */ React19__default.createElement(IconSortAscendingNumbers, null) : /* @__PURE__ */ React19__default.createElement(IconSortAscendingLetters, null);
|
|
3844
3818
|
case "desc":
|
|
3845
|
-
return entityType === "measure" ? /* @__PURE__ */
|
|
3819
|
+
return entityType === "measure" ? /* @__PURE__ */ React19__default.createElement(IconSortDescendingNumbers, null) : /* @__PURE__ */ React19__default.createElement(IconSortDescendingLetters, null);
|
|
3846
3820
|
default:
|
|
3847
|
-
return /* @__PURE__ */
|
|
3821
|
+
return /* @__PURE__ */ React19__default.createElement(IconArrowsSort, null);
|
|
3848
3822
|
}
|
|
3849
3823
|
}
|
|
3850
3824
|
function getFiltersConditions(fn, value) {
|
|
@@ -3879,18 +3853,18 @@ function getFiltersConditions(fn, value) {
|
|
|
3879
3853
|
return (_a = comparisonMap.get(fn)) == null ? void 0 : _a(value);
|
|
3880
3854
|
}
|
|
3881
3855
|
function useTableData({ columns, pagination, cube }) {
|
|
3882
|
-
const { code: locale } =
|
|
3856
|
+
const { code: locale } = useSelector$1(selectLocale);
|
|
3883
3857
|
const permaKey = useKey();
|
|
3884
|
-
const loadingState =
|
|
3858
|
+
const loadingState = useSelector$1(selectLoadingState);
|
|
3885
3859
|
const actions2 = useActions();
|
|
3886
3860
|
const pageSize = pagination.pageSize;
|
|
3887
3861
|
const page = pagination.pageIndex;
|
|
3888
3862
|
const enabled = Boolean(columns.length);
|
|
3889
3863
|
const initialKey = permaKey ? [permaKey, page, pageSize] : permaKey;
|
|
3890
|
-
const [filterKeydebouced, setDebouncedTerm] =
|
|
3891
|
-
|
|
3864
|
+
const [filterKeydebouced, setDebouncedTerm] = useState(initialKey);
|
|
3865
|
+
useEffect(() => {
|
|
3892
3866
|
if (!enabled && permaKey) return;
|
|
3893
|
-
const handler =
|
|
3867
|
+
const handler = debounce(
|
|
3894
3868
|
() => {
|
|
3895
3869
|
const term = [permaKey, page, pageSize];
|
|
3896
3870
|
setDebouncedTerm(term);
|
|
@@ -3900,7 +3874,7 @@ function useTableData({ columns, pagination, cube }) {
|
|
|
3900
3874
|
handler();
|
|
3901
3875
|
return () => handler.cancel();
|
|
3902
3876
|
}, [page, enabled, locale, pageSize, loadingState.loading, permaKey]);
|
|
3903
|
-
const query =
|
|
3877
|
+
const query = useQuery({
|
|
3904
3878
|
queryKey: ["table", filterKeydebouced],
|
|
3905
3879
|
queryFn: () => actions2.willFetchQuery().then((result) => {
|
|
3906
3880
|
actions2.updateResult(result);
|
|
@@ -3909,7 +3883,7 @@ function useTableData({ columns, pagination, cube }) {
|
|
|
3909
3883
|
staleTime: 3e5,
|
|
3910
3884
|
enabled: enabled && !!filterKeydebouced
|
|
3911
3885
|
});
|
|
3912
|
-
const client =
|
|
3886
|
+
const client = useQueryClient();
|
|
3913
3887
|
const cachedData = client.getQueryData(["table", filterKeydebouced]);
|
|
3914
3888
|
useUpdatePermaLink({
|
|
3915
3889
|
isFetched: Boolean(cachedData),
|
|
@@ -3926,14 +3900,14 @@ function usePrefetch({
|
|
|
3926
3900
|
pagination,
|
|
3927
3901
|
isFetching
|
|
3928
3902
|
}) {
|
|
3929
|
-
const queryClient2 =
|
|
3903
|
+
const queryClient2 = useQueryClient();
|
|
3930
3904
|
const actions2 = useActions();
|
|
3931
3905
|
const page = pagination.pageIndex + 1;
|
|
3932
3906
|
const pageSize = pagination.pageSize;
|
|
3933
3907
|
const hasMore = page * pageSize <= totalRowCount;
|
|
3934
3908
|
const off = page * pageSize;
|
|
3935
3909
|
const paramKey = useKey({ pagiLimit: pageSize, pagiOffset: off });
|
|
3936
|
-
|
|
3910
|
+
useEffect(() => {
|
|
3937
3911
|
const key = [paramKey, page, pageSize];
|
|
3938
3912
|
if (!isPlaceholderData && hasMore && !isFetching) {
|
|
3939
3913
|
queryClient2.prefetchQuery({
|
|
@@ -3963,37 +3937,37 @@ function useTable({
|
|
|
3963
3937
|
columnSorting = columnSrt,
|
|
3964
3938
|
...mantineTableProps
|
|
3965
3939
|
}) {
|
|
3966
|
-
const filterItems =
|
|
3967
|
-
const filtersMap =
|
|
3968
|
-
const measuresOlap =
|
|
3969
|
-
const measuresMap =
|
|
3970
|
-
const drilldowns =
|
|
3971
|
-
const { code: locale } =
|
|
3972
|
-
const measures =
|
|
3940
|
+
const filterItems = useSelector$1(selectFilterItems);
|
|
3941
|
+
const filtersMap = useSelector$1(selectFilterMap);
|
|
3942
|
+
const measuresOlap = useSelector$1(selectOlapMeasureItems);
|
|
3943
|
+
const measuresMap = useSelector$1(selectMeasureMap);
|
|
3944
|
+
const drilldowns = useSelector$1(selectDrilldownItems);
|
|
3945
|
+
const { code: locale } = useSelector$1(selectLocale);
|
|
3946
|
+
const measures = useSelector$1(selectMeasureItems);
|
|
3973
3947
|
const actions2 = useActions();
|
|
3974
|
-
const { limit, offset } =
|
|
3975
|
-
const [pagination, setPagination] =
|
|
3948
|
+
const { limit, offset } = useSelector$1(selectPaginationParams);
|
|
3949
|
+
const [pagination, setPagination] = useState({
|
|
3976
3950
|
pageIndex: offset,
|
|
3977
3951
|
pageSize: limit
|
|
3978
3952
|
});
|
|
3979
|
-
const finalUniqueKeys =
|
|
3953
|
+
const finalUniqueKeys = useMemo(
|
|
3980
3954
|
() => [
|
|
3981
3955
|
...measures.map((m) => m.active ? m.name : null),
|
|
3982
3956
|
...drilldowns.map((d) => d.active ? d.level : null)
|
|
3983
3957
|
].filter((a) => a !== null),
|
|
3984
3958
|
[measures, drilldowns]
|
|
3985
3959
|
);
|
|
3986
|
-
const handlerCreateMeasure =
|
|
3960
|
+
const handlerCreateMeasure = useCallback((data2) => {
|
|
3987
3961
|
const measure = buildMeasure(data2);
|
|
3988
3962
|
actions2.updateMeasure(measure);
|
|
3989
3963
|
return measure;
|
|
3990
3964
|
}, []);
|
|
3991
|
-
const handlerCreateFilter =
|
|
3965
|
+
const handlerCreateFilter = useCallback((data2) => {
|
|
3992
3966
|
const filter = buildFilter(data2);
|
|
3993
3967
|
actions2.updateFilter(filter);
|
|
3994
3968
|
return filter;
|
|
3995
3969
|
}, []);
|
|
3996
|
-
|
|
3970
|
+
useLayoutEffect(() => {
|
|
3997
3971
|
filterMap(measuresOlap, (m) => {
|
|
3998
3972
|
const measure = measuresMap[m.name] || handlerCreateMeasure({ ...m, active: false });
|
|
3999
3973
|
const foundFilter = filtersMap[m.name] || filterItems.find((f) => f.measure === measure.name);
|
|
@@ -4028,7 +4002,7 @@ function useTable({
|
|
|
4028
4002
|
pagination,
|
|
4029
4003
|
isFetching: isFetching || isLoading
|
|
4030
4004
|
});
|
|
4031
|
-
|
|
4005
|
+
useEffect(() => {
|
|
4032
4006
|
actions2.updatePagination({
|
|
4033
4007
|
limit: pagination.pageSize,
|
|
4034
4008
|
offset: pagination.pageIndex * pagination.pageSize
|
|
@@ -4036,8 +4010,8 @@ function useTable({
|
|
|
4036
4010
|
}, [pagination]);
|
|
4037
4011
|
const { translate: t } = useTranslation();
|
|
4038
4012
|
const { getFormat, getFormatter } = useFormatter();
|
|
4039
|
-
const { sortKey, sortDir } =
|
|
4040
|
-
const columns =
|
|
4013
|
+
const { sortKey, sortDir } = useSelector$1(selectSortingParams);
|
|
4014
|
+
const columns = useMemo(() => {
|
|
4041
4015
|
const indexColumn = {
|
|
4042
4016
|
id: "#",
|
|
4043
4017
|
header: "#",
|
|
@@ -4078,12 +4052,12 @@ function useTable({
|
|
|
4078
4052
|
},
|
|
4079
4053
|
Header: ({ column: column2 }) => {
|
|
4080
4054
|
const isSorted = isColumnSorted(entity.name, sortKey);
|
|
4081
|
-
return /* @__PURE__ */
|
|
4082
|
-
|
|
4055
|
+
return /* @__PURE__ */ React19__default.createElement(Box, { mb: rem(5), key: "header" }, /* @__PURE__ */ React19__default.createElement(Flex, { justify: "center", align: "center" }, /* @__PURE__ */ React19__default.createElement(Box, { sx: { flexGrow: 1 } }, /* @__PURE__ */ React19__default.createElement(Flex, { gap: "xs", align: "center" }, getActionIcon(entityType), /* @__PURE__ */ React19__default.createElement(Text, { size: "sm" }, header), /* @__PURE__ */ React19__default.createElement(
|
|
4056
|
+
ActionIcon,
|
|
4083
4057
|
{
|
|
4084
4058
|
key: `sort-${header}`,
|
|
4085
4059
|
size: 22,
|
|
4086
|
-
ml:
|
|
4060
|
+
ml: rem(5),
|
|
4087
4061
|
onClick: () => {
|
|
4088
4062
|
if (!isSorted) {
|
|
4089
4063
|
actions2.updateSorting({ key: entity.name, dir: "desc" });
|
|
@@ -4097,7 +4071,7 @@ function useTable({
|
|
|
4097
4071
|
}
|
|
4098
4072
|
},
|
|
4099
4073
|
getSortIcon(isSorted ? sortDir : false, entityType)
|
|
4100
|
-
))), /* @__PURE__ */
|
|
4074
|
+
))), /* @__PURE__ */ React19__default.createElement(
|
|
4101
4075
|
CustomActionIcon_default,
|
|
4102
4076
|
{
|
|
4103
4077
|
label: `At least one ${getEntityText(entityType)} is required.`,
|
|
@@ -4106,9 +4080,9 @@ function useTable({
|
|
|
4106
4080
|
onClick: () => removeColumn(actions2, entity, measures, drilldowns, entityType),
|
|
4107
4081
|
showTooltip: !showTrashIcon(finalKeys, entityType),
|
|
4108
4082
|
size: 25,
|
|
4109
|
-
ml:
|
|
4083
|
+
ml: rem(5)
|
|
4110
4084
|
},
|
|
4111
|
-
/* @__PURE__ */
|
|
4085
|
+
/* @__PURE__ */ React19__default.createElement(IconTrash, null)
|
|
4112
4086
|
)));
|
|
4113
4087
|
},
|
|
4114
4088
|
formatter: formatter2,
|
|
@@ -4118,8 +4092,8 @@ function useTable({
|
|
|
4118
4092
|
accessorFn: (item) => item[columnKey],
|
|
4119
4093
|
Cell: isNumeric ? ({ cell }) => formatter2(cell.getValue()) : ({ cell, renderedCellValue, row }) => {
|
|
4120
4094
|
const cellId = row.original[`${cell.column.id} ID`];
|
|
4121
|
-
return /* @__PURE__ */
|
|
4122
|
-
|
|
4095
|
+
return /* @__PURE__ */ React19__default.createElement(Flex, { justify: "space-between", sx: { width: "100%", maxWidth: 400 }, gap: "sm" }, /* @__PURE__ */ React19__default.createElement(
|
|
4096
|
+
Text,
|
|
4123
4097
|
{
|
|
4124
4098
|
size: "sm",
|
|
4125
4099
|
sx: {
|
|
@@ -4129,13 +4103,13 @@ function useTable({
|
|
|
4129
4103
|
}
|
|
4130
4104
|
},
|
|
4131
4105
|
renderedCellValue
|
|
4132
|
-
), /* @__PURE__ */
|
|
4106
|
+
), /* @__PURE__ */ React19__default.createElement(Box, null, cellId && /* @__PURE__ */ React19__default.createElement(Text, { color: "dimmed" }, cellId)));
|
|
4133
4107
|
}
|
|
4134
4108
|
};
|
|
4135
4109
|
});
|
|
4136
4110
|
return columnsDef.length ? [indexColumn, ...columnsDef] : [];
|
|
4137
4111
|
}, [drilldowns, measures, finalKeys, offset, getFormatter, getFormat, locale]);
|
|
4138
|
-
const constTableProps =
|
|
4112
|
+
const constTableProps = useMemo(
|
|
4139
4113
|
() => ({
|
|
4140
4114
|
mantineToolbarAlertBannerProps: isError ? {
|
|
4141
4115
|
color: "red",
|
|
@@ -4194,12 +4168,12 @@ function useTable({
|
|
|
4194
4168
|
}
|
|
4195
4169
|
},
|
|
4196
4170
|
renderBottomToolbar() {
|
|
4197
|
-
const [isOpen, setIsOpen] =
|
|
4171
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
4198
4172
|
if (!isOpen) return null;
|
|
4199
|
-
return /* @__PURE__ */
|
|
4200
|
-
|
|
4173
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
4174
|
+
Alert,
|
|
4201
4175
|
{
|
|
4202
|
-
icon: /* @__PURE__ */
|
|
4176
|
+
icon: /* @__PURE__ */ React19__default.createElement(IconAlertCircle, { size: "1rem" }),
|
|
4203
4177
|
color: "yellow",
|
|
4204
4178
|
withCloseButton: true,
|
|
4205
4179
|
onClose: () => setIsOpen(false)
|
|
@@ -4212,7 +4186,7 @@ function useTable({
|
|
|
4212
4186
|
);
|
|
4213
4187
|
const isTransitionState = status !== "success" && !isError;
|
|
4214
4188
|
const isLoad = isLoading || data === void 0 || isTransitionState;
|
|
4215
|
-
const table =
|
|
4189
|
+
const table = useMantineReactTable({
|
|
4216
4190
|
columns,
|
|
4217
4191
|
data: tableData,
|
|
4218
4192
|
onPaginationChange: setPagination,
|
|
@@ -4242,14 +4216,14 @@ function TableView({
|
|
|
4242
4216
|
setPagination
|
|
4243
4217
|
}) {
|
|
4244
4218
|
const isData = Boolean(table.getRowModel().rows.length);
|
|
4245
|
-
const loadingState =
|
|
4246
|
-
const viewport =
|
|
4247
|
-
|
|
4219
|
+
const loadingState = useSelector$1(selectLoadingState);
|
|
4220
|
+
const viewport = useRef(null);
|
|
4221
|
+
useEffect(() => {
|
|
4248
4222
|
var _a;
|
|
4249
4223
|
(_a = viewport.current) == null ? void 0 : _a.scrollTo({ top: 0, behavior: "smooth" });
|
|
4250
4224
|
}, [pagination == null ? void 0 : pagination.pageIndex, pagination == null ? void 0 : pagination.pageSize]);
|
|
4251
|
-
return /* @__PURE__ */
|
|
4252
|
-
|
|
4225
|
+
return /* @__PURE__ */ React19__default.createElement(Box, { sx: { height: "100%" } }, /* @__PURE__ */ React19__default.createElement(Flex, { direction: "column", justify: "space-between", sx: { height: "100%", flex: "1 1 auto" } }, /* @__PURE__ */ React19__default.createElement(MRT_ProgressBar, { isTopToolbar: false, table }), /* @__PURE__ */ React19__default.createElement(
|
|
4226
|
+
ScrollArea,
|
|
4253
4227
|
{
|
|
4254
4228
|
id: "dex-table",
|
|
4255
4229
|
h: isData ? "100%" : "auto",
|
|
@@ -4260,9 +4234,9 @@ function TableView({
|
|
|
4260
4234
|
overflow: "scroll"
|
|
4261
4235
|
}
|
|
4262
4236
|
},
|
|
4263
|
-
/* @__PURE__ */
|
|
4264
|
-
/* @__PURE__ */
|
|
4265
|
-
|
|
4237
|
+
/* @__PURE__ */ React19__default.createElement(LoadingOverlay, { visible: isLoading || loadingState.loading }),
|
|
4238
|
+
/* @__PURE__ */ React19__default.createElement(
|
|
4239
|
+
Table,
|
|
4266
4240
|
{
|
|
4267
4241
|
captionSide: "top",
|
|
4268
4242
|
fontSize: "md",
|
|
@@ -4273,8 +4247,8 @@ function TableView({
|
|
|
4273
4247
|
withBorder: true,
|
|
4274
4248
|
withColumnBorders: true
|
|
4275
4249
|
},
|
|
4276
|
-
/* @__PURE__ */
|
|
4277
|
-
|
|
4250
|
+
/* @__PURE__ */ React19__default.createElement(
|
|
4251
|
+
Box,
|
|
4278
4252
|
{
|
|
4279
4253
|
component: "thead",
|
|
4280
4254
|
sx: {
|
|
@@ -4283,7 +4257,7 @@ function TableView({
|
|
|
4283
4257
|
zIndex: 10
|
|
4284
4258
|
}
|
|
4285
4259
|
},
|
|
4286
|
-
table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */
|
|
4260
|
+
table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ React19__default.createElement(Box, { component: "tr", key: headerGroup.id, sx: { fontWeight: "normal" } }, headerGroup.headers.map((header) => {
|
|
4287
4261
|
var _a;
|
|
4288
4262
|
const column = table.getColumn(header.id);
|
|
4289
4263
|
const isNumeric = column.columnDef.dataType === "number";
|
|
@@ -4308,15 +4282,15 @@ function TableView({
|
|
|
4308
4282
|
maxWidth: 10,
|
|
4309
4283
|
size: 10
|
|
4310
4284
|
});
|
|
4311
|
-
return /* @__PURE__ */
|
|
4312
|
-
|
|
4285
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
4286
|
+
Box,
|
|
4313
4287
|
{
|
|
4314
4288
|
component: "th",
|
|
4315
4289
|
key: header.id,
|
|
4316
4290
|
sx: (theme) => isRowIndex ? index(theme) : base(theme)
|
|
4317
4291
|
},
|
|
4318
|
-
/* @__PURE__ */
|
|
4319
|
-
|
|
4292
|
+
/* @__PURE__ */ React19__default.createElement(
|
|
4293
|
+
Box,
|
|
4320
4294
|
{
|
|
4321
4295
|
sx: {
|
|
4322
4296
|
display: "flex",
|
|
@@ -4325,17 +4299,17 @@ function TableView({
|
|
|
4325
4299
|
justifyContent: "space-between"
|
|
4326
4300
|
}
|
|
4327
4301
|
},
|
|
4328
|
-
header.isPlaceholder ? null :
|
|
4302
|
+
header.isPlaceholder ? null : flexRender(
|
|
4329
4303
|
(_a = header.column.columnDef.Header) != null ? _a : header.column.columnDef.header,
|
|
4330
4304
|
header.getContext()
|
|
4331
4305
|
),
|
|
4332
|
-
!isRowIndex && /* @__PURE__ */
|
|
4306
|
+
!isRowIndex && /* @__PURE__ */ React19__default.createElement(ColumnFilterCell, { isNumeric, header, table })
|
|
4333
4307
|
)
|
|
4334
4308
|
);
|
|
4335
4309
|
})))
|
|
4336
4310
|
),
|
|
4337
|
-
isData && /* @__PURE__ */
|
|
4338
|
-
|
|
4311
|
+
isData && /* @__PURE__ */ React19__default.createElement(Box, { component: "tbody" }, table.getRowModel().rows.map((row) => /* @__PURE__ */ React19__default.createElement("tr", { key: row.id }, row.getVisibleCells().map((cell) => /* @__PURE__ */ React19__default.createElement(
|
|
4312
|
+
MRT_TableBodyCell,
|
|
4339
4313
|
{
|
|
4340
4314
|
key: cell.id,
|
|
4341
4315
|
cell,
|
|
@@ -4345,8 +4319,8 @@ function TableView({
|
|
|
4345
4319
|
}
|
|
4346
4320
|
)))))
|
|
4347
4321
|
),
|
|
4348
|
-
!isData && !isError && !isLoading && /* @__PURE__ */
|
|
4349
|
-
), /* @__PURE__ */
|
|
4322
|
+
!isData && !isError && !isLoading && /* @__PURE__ */ React19__default.createElement(NoRecords, null)
|
|
4323
|
+
), /* @__PURE__ */ React19__default.createElement(MRT_ToolbarAlertBanner, { stackAlertBanner: true, table }), /* @__PURE__ */ React19__default.createElement(
|
|
4350
4324
|
TableFooter_default,
|
|
4351
4325
|
{
|
|
4352
4326
|
table,
|
|
@@ -4365,38 +4339,38 @@ var ColumnFilterCell = ({
|
|
|
4365
4339
|
const filterVariant = header.column.columnDef.filterVariant;
|
|
4366
4340
|
const isMulti = filterVariant === "multi-select";
|
|
4367
4341
|
if (isMulti) {
|
|
4368
|
-
return /* @__PURE__ */
|
|
4342
|
+
return /* @__PURE__ */ React19__default.createElement(MultiFilter, { header });
|
|
4369
4343
|
}
|
|
4370
4344
|
if (isNumeric) {
|
|
4371
|
-
return /* @__PURE__ */
|
|
4345
|
+
return /* @__PURE__ */ React19__default.createElement(NumericFilter, { header });
|
|
4372
4346
|
}
|
|
4373
4347
|
};
|
|
4374
4348
|
function NumericFilter({ header }) {
|
|
4375
|
-
const filters =
|
|
4349
|
+
const filters = useSelector$1(selectFilterItems);
|
|
4376
4350
|
const { translate: t } = useTranslation();
|
|
4377
4351
|
const filter = filters.find((f) => f.measure === header.column.id);
|
|
4378
4352
|
if (filter) {
|
|
4379
4353
|
const filterFn = getFilterFn(filter);
|
|
4380
4354
|
const text = t(`comparison.${getFilterfnKey(filterFn)}`);
|
|
4381
4355
|
const isBetween = filterFn === "between";
|
|
4382
|
-
return /* @__PURE__ */
|
|
4356
|
+
return /* @__PURE__ */ React19__default.createElement(Flex, { gap: "xs", style: { fontWeight: "normal" } }, /* @__PURE__ */ React19__default.createElement(Box, { sx: { flex: "1 1 auto" } }, isBetween ? /* @__PURE__ */ React19__default.createElement(MinMax, { filter, hideControls: true }) : /* @__PURE__ */ React19__default.createElement(NumberInputComponent, { text, filter })), /* @__PURE__ */ React19__default.createElement(Box, { sx: { alignSelf: "flex-end" } }, /* @__PURE__ */ React19__default.createElement(FilterFnsMenu, { filter })));
|
|
4383
4357
|
}
|
|
4384
4358
|
}
|
|
4385
4359
|
function MultiFilter({ header }) {
|
|
4386
4360
|
const { translate: t } = useTranslation();
|
|
4387
|
-
const cutItems =
|
|
4388
|
-
const drilldownItems =
|
|
4361
|
+
const cutItems = useSelector$1(selectCutItems);
|
|
4362
|
+
const drilldownItems = useSelector$1(selectDrilldownItems);
|
|
4389
4363
|
const label = header.column.id;
|
|
4390
4364
|
const drilldown = drilldownItems.find((d) => d.level === header.column.id);
|
|
4391
4365
|
const actions2 = useActions();
|
|
4392
4366
|
const cut = cutItems.find((cut2) => {
|
|
4393
4367
|
return cut2.level === (drilldown == null ? void 0 : drilldown.level);
|
|
4394
4368
|
});
|
|
4395
|
-
const updatecutHandler =
|
|
4369
|
+
const updatecutHandler = React19__default.useCallback((item, members) => {
|
|
4396
4370
|
actions2.updateCut({ ...item, members });
|
|
4397
4371
|
}, []);
|
|
4398
|
-
return drilldown && cut && /* @__PURE__ */
|
|
4399
|
-
|
|
4372
|
+
return drilldown && cut && /* @__PURE__ */ React19__default.createElement(Box, { pt: "md", style: { fontWeight: "normal" } }, /* @__PURE__ */ React19__default.createElement(
|
|
4373
|
+
MultiSelect,
|
|
4400
4374
|
{
|
|
4401
4375
|
sx: { flex: "1 1 100%" },
|
|
4402
4376
|
searchable: true,
|
|
@@ -4417,7 +4391,7 @@ function MultiFilter({ header }) {
|
|
|
4417
4391
|
));
|
|
4418
4392
|
}
|
|
4419
4393
|
var NoRecords = () => {
|
|
4420
|
-
return /* @__PURE__ */
|
|
4394
|
+
return /* @__PURE__ */ React19__default.createElement(Center, { style: { height: "calc(100% - 210px)" } }, /* @__PURE__ */ React19__default.createElement(Text, { size: "xl", color: "gray", italic: true }, "No records to display."));
|
|
4421
4395
|
};
|
|
4422
4396
|
TableView.displayName = "TesseractExplorer:TableView";
|
|
4423
4397
|
|
|
@@ -4431,12 +4405,12 @@ var styles = (t) => ({
|
|
|
4431
4405
|
}
|
|
4432
4406
|
});
|
|
4433
4407
|
function AddColumnsDrawer() {
|
|
4434
|
-
const [opened, { open, close: close2 }] =
|
|
4408
|
+
const [opened, { open, close: close2 }] = useDisclosure(false);
|
|
4435
4409
|
const { translate: t } = useTranslation();
|
|
4436
|
-
const theme =
|
|
4437
|
-
const smallerThanMd =
|
|
4438
|
-
return /* @__PURE__ */
|
|
4439
|
-
|
|
4410
|
+
const theme = useMantineTheme();
|
|
4411
|
+
const smallerThanMd = useMediaQuery(`(max-width: ${theme.breakpoints.md})`);
|
|
4412
|
+
return /* @__PURE__ */ React19__default.createElement(React19__default.Fragment, null, /* @__PURE__ */ React19__default.createElement(
|
|
4413
|
+
Drawer,
|
|
4440
4414
|
{
|
|
4441
4415
|
id: "dex-column-drawer",
|
|
4442
4416
|
opened,
|
|
@@ -4445,19 +4419,19 @@ function AddColumnsDrawer() {
|
|
|
4445
4419
|
closeButtonProps: {
|
|
4446
4420
|
id: "dex-column-drawer-close"
|
|
4447
4421
|
},
|
|
4448
|
-
title: /* @__PURE__ */
|
|
4422
|
+
title: /* @__PURE__ */ React19__default.createElement(Group, null, /* @__PURE__ */ React19__default.createElement(IconPlus, { size: "1.2rem" }), /* @__PURE__ */ React19__default.createElement(Text, { fw: 700 }, t("params.add_columns"))),
|
|
4449
4423
|
styles,
|
|
4450
4424
|
overlayProps: {
|
|
4451
4425
|
opacity: 0.1
|
|
4452
4426
|
}
|
|
4453
4427
|
},
|
|
4454
|
-
/* @__PURE__ */
|
|
4455
|
-
/* @__PURE__ */
|
|
4456
|
-
), /* @__PURE__ */
|
|
4457
|
-
|
|
4428
|
+
/* @__PURE__ */ React19__default.createElement(MeasuresOptions, null),
|
|
4429
|
+
/* @__PURE__ */ React19__default.createElement(DrillDownOptions, null)
|
|
4430
|
+
), /* @__PURE__ */ React19__default.createElement(Group, { position: "center", sx: { flexWrap: "nowrap" } }, smallerThanMd ? /* @__PURE__ */ React19__default.createElement(ActionIcon, { onClick: open, size: "md", variant: "filled", color: theme.primaryColor }, /* @__PURE__ */ React19__default.createElement(IconStack3, { size: "0.75rem" })) : /* @__PURE__ */ React19__default.createElement(
|
|
4431
|
+
Button,
|
|
4458
4432
|
{
|
|
4459
4433
|
id: "dex-column-btn",
|
|
4460
|
-
leftIcon: /* @__PURE__ */
|
|
4434
|
+
leftIcon: /* @__PURE__ */ React19__default.createElement(IconPlus, { size: "1.2rem" }),
|
|
4461
4435
|
onClick: open,
|
|
4462
4436
|
m: "md",
|
|
4463
4437
|
size: "sm"
|
|
@@ -4466,12 +4440,12 @@ function AddColumnsDrawer() {
|
|
|
4466
4440
|
)));
|
|
4467
4441
|
}
|
|
4468
4442
|
function DrillDownOptions() {
|
|
4469
|
-
const locale =
|
|
4470
|
-
const selectedDimensions =
|
|
4471
|
-
const dimensions =
|
|
4443
|
+
const locale = useSelector$1(selectLocale);
|
|
4444
|
+
const selectedDimensions = useSelector$1(selectDrilldownItems);
|
|
4445
|
+
const dimensions = useSelector$1(selectOlapDimensionItems) || [];
|
|
4472
4446
|
const activeItems = selectedDimensions.filter((i) => i.active);
|
|
4473
|
-
const options =
|
|
4474
|
-
() => dimensions.map((dimension) => /* @__PURE__ */
|
|
4447
|
+
const options = useMemo(
|
|
4448
|
+
() => dimensions.map((dimension) => /* @__PURE__ */ React19__default.createElement(
|
|
4475
4449
|
DimensionItem,
|
|
4476
4450
|
{
|
|
4477
4451
|
dimension,
|
|
@@ -4490,7 +4464,7 @@ function DimensionItem({
|
|
|
4490
4464
|
activeItems
|
|
4491
4465
|
}) {
|
|
4492
4466
|
const isChildSubMenu = dimension.hierarchies.length !== 1;
|
|
4493
|
-
const options = dimension.hierarchies.map((hie) => /* @__PURE__ */
|
|
4467
|
+
const options = dimension.hierarchies.map((hie) => /* @__PURE__ */ React19__default.createElement(
|
|
4494
4468
|
HierarchyItem,
|
|
4495
4469
|
{
|
|
4496
4470
|
dimension,
|
|
@@ -4501,18 +4475,18 @@ function DimensionItem({
|
|
|
4501
4475
|
activeItems
|
|
4502
4476
|
}
|
|
4503
4477
|
));
|
|
4504
|
-
return /* @__PURE__ */
|
|
4478
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
4505
4479
|
"div",
|
|
4506
4480
|
{
|
|
4507
4481
|
key: dimension.name,
|
|
4508
4482
|
className: "dex-dimension-control",
|
|
4509
4483
|
id: `dex-dimension-${dimension.name}`
|
|
4510
4484
|
},
|
|
4511
|
-
/* @__PURE__ */
|
|
4512
|
-
|
|
4485
|
+
/* @__PURE__ */ React19__default.createElement(
|
|
4486
|
+
Divider,
|
|
4513
4487
|
{
|
|
4514
4488
|
my: "md",
|
|
4515
|
-
label: /* @__PURE__ */
|
|
4489
|
+
label: /* @__PURE__ */ React19__default.createElement(Group, null, getIconForDimensionType(dimension.type), /* @__PURE__ */ React19__default.createElement(Text, { italic: true }, getCaption(dimension, locale)))
|
|
4516
4490
|
}
|
|
4517
4491
|
),
|
|
4518
4492
|
options
|
|
@@ -4526,7 +4500,7 @@ function HierarchyItem({
|
|
|
4526
4500
|
activeItems
|
|
4527
4501
|
}) {
|
|
4528
4502
|
const { translate: t } = useTranslation();
|
|
4529
|
-
|
|
4503
|
+
useMemo(() => {
|
|
4530
4504
|
const captions = [getCaption(dimension, locale), getCaption(hierarchy, locale)];
|
|
4531
4505
|
if (isSubMenu) {
|
|
4532
4506
|
return captions[1];
|
|
@@ -4538,7 +4512,7 @@ function HierarchyItem({
|
|
|
4538
4512
|
});
|
|
4539
4513
|
}, [locale, dimension, hierarchy, isSubMenu, t]);
|
|
4540
4514
|
const isChildSubMenu = hierarchy.levels.length !== 1;
|
|
4541
|
-
const options = hierarchy.levels.map((lvl, index) => /* @__PURE__ */
|
|
4515
|
+
const options = hierarchy.levels.map((lvl, index) => /* @__PURE__ */ React19__default.createElement(
|
|
4542
4516
|
LevelItem,
|
|
4543
4517
|
{
|
|
4544
4518
|
dimension,
|
|
@@ -4565,14 +4539,14 @@ function LevelItem({
|
|
|
4565
4539
|
activeItems,
|
|
4566
4540
|
depth = 0
|
|
4567
4541
|
}) {
|
|
4568
|
-
const [activeFilter, setActiveFilter] =
|
|
4569
|
-
const [activePropertiesFilter, setActiveProperties] =
|
|
4542
|
+
const [activeFilter, setActiveFilter] = useState(false);
|
|
4543
|
+
const [activePropertiesFilter, setActiveProperties] = useState(false);
|
|
4570
4544
|
const { translate: t } = useTranslation();
|
|
4571
4545
|
const actions2 = useActions();
|
|
4572
|
-
const cutItems =
|
|
4573
|
-
let drilldowns =
|
|
4574
|
-
const ditems =
|
|
4575
|
-
const label =
|
|
4546
|
+
const cutItems = useSelector$1(selectCutItems);
|
|
4547
|
+
let drilldowns = useSelector$1(selectDrilldownMap);
|
|
4548
|
+
const ditems = useSelector$1(selectDrilldownItems);
|
|
4549
|
+
const label = useMemo(() => {
|
|
4576
4550
|
const captions = [
|
|
4577
4551
|
getCaption(dimension, locale),
|
|
4578
4552
|
getCaption(hierarchy, locale),
|
|
@@ -4588,7 +4562,7 @@ function LevelItem({
|
|
|
4588
4562
|
level: captions[2]
|
|
4589
4563
|
});
|
|
4590
4564
|
}, [locale, dimension, hierarchy, level, isSubMenu, t]);
|
|
4591
|
-
const createCutHandler =
|
|
4565
|
+
const createCutHandler = useCallback((level2) => {
|
|
4592
4566
|
const cutItem = buildCut({ ...level2, members: [], active: false });
|
|
4593
4567
|
actions2.updateCut(cutItem);
|
|
4594
4568
|
}, []);
|
|
@@ -4611,7 +4585,7 @@ function LevelItem({
|
|
|
4611
4585
|
const isOtherHierarchySelected = activeItems.some(
|
|
4612
4586
|
(activeItem) => activeItem.dimension === dimension.name && activeItem.hierarchy !== hierarchy.name
|
|
4613
4587
|
);
|
|
4614
|
-
|
|
4588
|
+
useLayoutEffect(() => {
|
|
4615
4589
|
if (!drilldowns[level.name] && !ditems.find((d) => d.level === level.name)) {
|
|
4616
4590
|
createDrilldown(level, cutItems);
|
|
4617
4591
|
}
|
|
@@ -4619,7 +4593,7 @@ function LevelItem({
|
|
|
4619
4593
|
const cut = cutItems.find((cut2) => {
|
|
4620
4594
|
return cut2.level === (currentDrilldown == null ? void 0 : currentDrilldown.level);
|
|
4621
4595
|
});
|
|
4622
|
-
const updatecutHandler =
|
|
4596
|
+
const updatecutHandler = React19__default.useCallback((item, members) => {
|
|
4623
4597
|
actions2.updateCut({ ...item, members });
|
|
4624
4598
|
}, []);
|
|
4625
4599
|
const checked = activeItems.map((i) => i.level).includes(level.name);
|
|
@@ -4628,8 +4602,8 @@ function LevelItem({
|
|
|
4628
4602
|
if (!currentDrilldown) return;
|
|
4629
4603
|
const paddingLeft = `${5 * depth + 5}px`;
|
|
4630
4604
|
const properities = currentDrilldown.properties.length ? currentDrilldown.properties : null;
|
|
4631
|
-
return currentDrilldown && /* @__PURE__ */
|
|
4632
|
-
|
|
4605
|
+
return currentDrilldown && /* @__PURE__ */ React19__default.createElement(React19__default.Fragment, null, /* @__PURE__ */ React19__default.createElement(Group, { className: "dex-level-control", mt: "sm", position: "apart", key: level.name, noWrap: true }, /* @__PURE__ */ React19__default.createElement(
|
|
4606
|
+
Checkbox,
|
|
4633
4607
|
{
|
|
4634
4608
|
sx: { cursor: "pointer", paddingLeft },
|
|
4635
4609
|
onChange: () => {
|
|
@@ -4647,17 +4621,17 @@ function LevelItem({
|
|
|
4647
4621
|
size: "xs",
|
|
4648
4622
|
disabled: isDisabled || disableUncheck
|
|
4649
4623
|
}
|
|
4650
|
-
), /* @__PURE__ */
|
|
4651
|
-
|
|
4624
|
+
), /* @__PURE__ */ React19__default.createElement(Group, { sx: { flexWrap: "nowrap" } }, /* @__PURE__ */ React19__default.createElement(
|
|
4625
|
+
ActionIcon,
|
|
4652
4626
|
{
|
|
4653
4627
|
className: "dex-level-filter",
|
|
4654
4628
|
size: "sm",
|
|
4655
4629
|
onClick: () => setActiveFilter((value) => !value),
|
|
4656
4630
|
disabled: isDisabled
|
|
4657
4631
|
},
|
|
4658
|
-
activeFilter ? /* @__PURE__ */
|
|
4659
|
-
), properities && /* @__PURE__ */
|
|
4660
|
-
|
|
4632
|
+
activeFilter ? /* @__PURE__ */ React19__default.createElement(IconFilterOff, null) : /* @__PURE__ */ React19__default.createElement(IconFilter, null)
|
|
4633
|
+
), properities && /* @__PURE__ */ React19__default.createElement(Tooltip, { label: t("params.add_metadata") }, /* @__PURE__ */ React19__default.createElement(ActionIcon, { onClick: () => setActiveProperties((value) => !value) }, /* @__PURE__ */ React19__default.createElement(IconAdjustments, null))), /* @__PURE__ */ React19__default.createElement(ThemeIcon, { size: "xs", color: "gray", variant: "light", bg: "transparent" }, /* @__PURE__ */ React19__default.createElement(StackSVG, null)))), activeFilter && /* @__PURE__ */ React19__default.createElement(Box, { pt: "md" }, /* @__PURE__ */ React19__default.createElement(
|
|
4634
|
+
MultiSelect,
|
|
4661
4635
|
{
|
|
4662
4636
|
sx: { flex: "1 1 100%" },
|
|
4663
4637
|
searchable: true,
|
|
@@ -4680,14 +4654,14 @@ function LevelItem({
|
|
|
4680
4654
|
nothingFound: "Nothing found",
|
|
4681
4655
|
disabled: isDisabled
|
|
4682
4656
|
}
|
|
4683
|
-
)), activePropertiesFilter && /* @__PURE__ */
|
|
4657
|
+
)), activePropertiesFilter && /* @__PURE__ */ React19__default.createElement(PropertiesMultiSelect, { item: currentDrilldown }));
|
|
4684
4658
|
}
|
|
4685
4659
|
function PropertiesMultiSelect({ item }) {
|
|
4686
|
-
const levelTriadMap =
|
|
4687
|
-
const locale =
|
|
4660
|
+
const levelTriadMap = useSelector$1(selectLevelTriadMap);
|
|
4661
|
+
const locale = useSelector$1(selectLocale);
|
|
4688
4662
|
const actions2 = useActions();
|
|
4689
4663
|
const { translate: t } = useTranslation();
|
|
4690
|
-
const propertiesUpdateHandler2 =
|
|
4664
|
+
const propertiesUpdateHandler2 = useCallback(
|
|
4691
4665
|
(activeProps) => {
|
|
4692
4666
|
const properties = item.properties.map(
|
|
4693
4667
|
(prop) => buildProperty({
|
|
@@ -4703,7 +4677,7 @@ function PropertiesMultiSelect({ item }) {
|
|
|
4703
4677
|
item.properties,
|
|
4704
4678
|
(item2) => isActiveItem(item2) ? item2.key : null
|
|
4705
4679
|
);
|
|
4706
|
-
const label =
|
|
4680
|
+
const label = useMemo(() => {
|
|
4707
4681
|
const triad = levelTriadMap[item.level] || [];
|
|
4708
4682
|
const triadCaptions = triad.map((item2) => getCaption(item2, locale.code)).reverse();
|
|
4709
4683
|
return t("params.tag_drilldowns", {
|
|
@@ -4714,8 +4688,8 @@ function PropertiesMultiSelect({ item }) {
|
|
|
4714
4688
|
propCount: activeProperties.length
|
|
4715
4689
|
});
|
|
4716
4690
|
}, [activeProperties.length, levelTriadMap, item, locale.code, t]);
|
|
4717
|
-
return /* @__PURE__ */
|
|
4718
|
-
|
|
4691
|
+
return /* @__PURE__ */ React19__default.createElement(Box, { pt: "md" }, /* @__PURE__ */ React19__default.createElement(
|
|
4692
|
+
MultiSelect,
|
|
4719
4693
|
{
|
|
4720
4694
|
sx: { flex: "1 1 100%" },
|
|
4721
4695
|
searchable: true,
|
|
@@ -4770,8 +4744,8 @@ function NumberInputComponent({ text, filter }) {
|
|
|
4770
4744
|
const active = !isEmpty;
|
|
4771
4745
|
actions2.updateFilter(buildFilter({ ...filter2, active, ...conditions }));
|
|
4772
4746
|
}
|
|
4773
|
-
return /* @__PURE__ */
|
|
4774
|
-
|
|
4747
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
4748
|
+
NumberInput,
|
|
4775
4749
|
{
|
|
4776
4750
|
description: text,
|
|
4777
4751
|
placeholder: text,
|
|
@@ -4798,8 +4772,8 @@ var MinMax = ({ filter, hideControls, ...rest }) => {
|
|
|
4798
4772
|
}
|
|
4799
4773
|
const min = getFilterValue(filter.conditionOne);
|
|
4800
4774
|
const max = getFilterValue(filter.conditionTwo);
|
|
4801
|
-
return /* @__PURE__ */
|
|
4802
|
-
|
|
4775
|
+
return /* @__PURE__ */ React19__default.createElement(Flex, { gap: "xs" }, /* @__PURE__ */ React19__default.createElement(
|
|
4776
|
+
NumberInput,
|
|
4803
4777
|
{
|
|
4804
4778
|
placeholder: "Min",
|
|
4805
4779
|
description: "Min",
|
|
@@ -4808,8 +4782,8 @@ var MinMax = ({ filter, hideControls, ...rest }) => {
|
|
|
4808
4782
|
hideControls,
|
|
4809
4783
|
...rest
|
|
4810
4784
|
}
|
|
4811
|
-
), /* @__PURE__ */
|
|
4812
|
-
|
|
4785
|
+
), /* @__PURE__ */ React19__default.createElement(
|
|
4786
|
+
NumberInput,
|
|
4813
4787
|
{
|
|
4814
4788
|
placeholder: "Max",
|
|
4815
4789
|
description: "Max",
|
|
@@ -4823,30 +4797,30 @@ var MinMax = ({ filter, hideControls, ...rest }) => {
|
|
|
4823
4797
|
function FilterFnsMenu({ filter }) {
|
|
4824
4798
|
const actions2 = useActions();
|
|
4825
4799
|
const { translate: t } = useTranslation();
|
|
4826
|
-
return /* @__PURE__ */
|
|
4827
|
-
|
|
4800
|
+
return /* @__PURE__ */ React19__default.createElement(React19__default.Fragment, null, /* @__PURE__ */ React19__default.createElement(Menu, { shadow: "md", width: 200 }, /* @__PURE__ */ React19__default.createElement(Menu.Target, null, /* @__PURE__ */ React19__default.createElement(ActionIcon, { size: "xs" }, /* @__PURE__ */ React19__default.createElement(IconSettings, null))), /* @__PURE__ */ React19__default.createElement(Menu.Dropdown, null, /* @__PURE__ */ React19__default.createElement(Menu.Label, null, t("params.filter_mode")), /* @__PURE__ */ React19__default.createElement(
|
|
4801
|
+
Menu.Item,
|
|
4828
4802
|
{
|
|
4829
|
-
icon: /* @__PURE__ */
|
|
4803
|
+
icon: /* @__PURE__ */ React19__default.createElement(IconMathGreater, { size: 14 }),
|
|
4830
4804
|
onClick: () => {
|
|
4831
4805
|
const conditions = getFiltersConditions("greaterThan", [0]) || {};
|
|
4832
4806
|
actions2.updateFilter(buildFilter({ ...filter, ...conditions, active: false }));
|
|
4833
4807
|
}
|
|
4834
4808
|
},
|
|
4835
4809
|
t("comparison.GT")
|
|
4836
|
-
), /* @__PURE__ */
|
|
4837
|
-
|
|
4810
|
+
), /* @__PURE__ */ React19__default.createElement(
|
|
4811
|
+
Menu.Item,
|
|
4838
4812
|
{
|
|
4839
|
-
icon: /* @__PURE__ */
|
|
4813
|
+
icon: /* @__PURE__ */ React19__default.createElement(IconMathLower, { size: 14 }),
|
|
4840
4814
|
onClick: () => {
|
|
4841
4815
|
const conditions = getFiltersConditions("lessThan", [0]) || {};
|
|
4842
4816
|
actions2.updateFilter(buildFilter({ ...filter, ...conditions, active: false }));
|
|
4843
4817
|
}
|
|
4844
4818
|
},
|
|
4845
4819
|
t("comparison.LT")
|
|
4846
|
-
), /* @__PURE__ */
|
|
4847
|
-
|
|
4820
|
+
), /* @__PURE__ */ React19__default.createElement(
|
|
4821
|
+
Menu.Item,
|
|
4848
4822
|
{
|
|
4849
|
-
icon: /* @__PURE__ */
|
|
4823
|
+
icon: /* @__PURE__ */ React19__default.createElement(IconArrowsLeftRight, { size: 14 }),
|
|
4850
4824
|
onClick: () => {
|
|
4851
4825
|
const conditions = getFiltersConditions("between", [0, 0]) || {};
|
|
4852
4826
|
actions2.updateFilter(buildFilter({ ...filter, ...conditions, active: false }));
|
|
@@ -4856,23 +4830,23 @@ function FilterFnsMenu({ filter }) {
|
|
|
4856
4830
|
))));
|
|
4857
4831
|
}
|
|
4858
4832
|
function MeasuresOptions() {
|
|
4859
|
-
const itemMap =
|
|
4860
|
-
const filtersMap =
|
|
4861
|
-
const filtersItems =
|
|
4862
|
-
const measures =
|
|
4833
|
+
const itemMap = useSelector$1(selectMeasureMap);
|
|
4834
|
+
const filtersMap = useSelector$1(selectFilterMap);
|
|
4835
|
+
const filtersItems = useSelector$1(selectFilterItems);
|
|
4836
|
+
const measures = useSelector$1(selectOlapMeasureItems);
|
|
4863
4837
|
const actions2 = useActions();
|
|
4864
|
-
const handlerCreateMeasure =
|
|
4838
|
+
const handlerCreateMeasure = useCallback((data) => {
|
|
4865
4839
|
const measure = buildMeasure(data);
|
|
4866
4840
|
actions2.updateMeasure(measure);
|
|
4867
4841
|
return measure;
|
|
4868
4842
|
}, []);
|
|
4869
|
-
const handlerCreateFilter =
|
|
4843
|
+
const handlerCreateFilter = useCallback((data) => {
|
|
4870
4844
|
const filter = buildFilter(data);
|
|
4871
4845
|
actions2.updateFilter(filter);
|
|
4872
4846
|
return filter;
|
|
4873
4847
|
}, []);
|
|
4874
4848
|
const measureCaptions = Object.values(measures).map((m) => `${m.caption}`).join(",");
|
|
4875
|
-
const filteredItems =
|
|
4849
|
+
const filteredItems = useMemo(() => {
|
|
4876
4850
|
return filterMap(measures, (m) => {
|
|
4877
4851
|
const measure = itemMap[m.name] || handlerCreateMeasure({ ...m, active: false });
|
|
4878
4852
|
const foundFilter = filtersMap[m.name] || filtersItems.find((f) => f.measure === measure.name);
|
|
@@ -4894,7 +4868,7 @@ function MeasuresOptions() {
|
|
|
4894
4868
|
]);
|
|
4895
4869
|
const activeItems = filteredItems.filter((f) => isActiveItem(f.measure));
|
|
4896
4870
|
const options = filteredItems.map(({ measure, filter }) => {
|
|
4897
|
-
return /* @__PURE__ */
|
|
4871
|
+
return /* @__PURE__ */ React19__default.createElement(FilterItem2, { key: measure.key, measure, filter, activeItems });
|
|
4898
4872
|
});
|
|
4899
4873
|
return options;
|
|
4900
4874
|
}
|
|
@@ -4903,7 +4877,7 @@ function FilterItem2({
|
|
|
4903
4877
|
filter,
|
|
4904
4878
|
activeItems
|
|
4905
4879
|
}) {
|
|
4906
|
-
const [activeFilter, setActiveFilter] =
|
|
4880
|
+
const [activeFilter, setActiveFilter] = useState(false);
|
|
4907
4881
|
const { translate: t } = useTranslation();
|
|
4908
4882
|
const filterFn = getFilterFn(filter);
|
|
4909
4883
|
const text = t(`comparison.${getFilterfnKey(filterFn)}`);
|
|
@@ -4911,8 +4885,8 @@ function FilterItem2({
|
|
|
4911
4885
|
const checked = activeItems.map((active) => active.measure.name).includes(measure.name);
|
|
4912
4886
|
const actions2 = useActions();
|
|
4913
4887
|
const isLastSelected = activeItems.length === 1 && checked;
|
|
4914
|
-
return /* @__PURE__ */
|
|
4915
|
-
|
|
4888
|
+
return /* @__PURE__ */ React19__default.createElement(Box, { key: measure.name }, /* @__PURE__ */ React19__default.createElement(Group, { mt: "sm", position: "apart" }, /* @__PURE__ */ React19__default.createElement(
|
|
4889
|
+
Checkbox,
|
|
4916
4890
|
{
|
|
4917
4891
|
sx: { cursor: "pointer" },
|
|
4918
4892
|
onChange: () => {
|
|
@@ -4926,22 +4900,22 @@ function FilterItem2({
|
|
|
4926
4900
|
size: "xs",
|
|
4927
4901
|
disabled: isLastSelected
|
|
4928
4902
|
}
|
|
4929
|
-
), /* @__PURE__ */
|
|
4903
|
+
), /* @__PURE__ */ React19__default.createElement(Group, { sx: { flexWrap: "nowrap" } }, activeFilter && /* @__PURE__ */ React19__default.createElement(FilterFnsMenu, { filter }), /* @__PURE__ */ React19__default.createElement(ActionIcon, { size: "sm", onClick: () => setActiveFilter((value) => !value) }, activeFilter ? /* @__PURE__ */ React19__default.createElement(IconFilterOff, null) : /* @__PURE__ */ React19__default.createElement(IconFilter, null)), /* @__PURE__ */ React19__default.createElement(ThemeIcon, { size: "xs", color: "gray", variant: "light", bg: "transparent" }, /* @__PURE__ */ React19__default.createElement(BarsSVG, null)))), activeFilter && /* @__PURE__ */ React19__default.createElement(Box, { pt: "md" }, isBetween ? /* @__PURE__ */ React19__default.createElement(MinMax, { filter }) : /* @__PURE__ */ React19__default.createElement(NumberInputComponent, { text, filter })));
|
|
4930
4904
|
}
|
|
4931
4905
|
var getIconForDimensionType = (dimensionType) => {
|
|
4932
4906
|
switch (dimensionType) {
|
|
4933
4907
|
case "geo" /* GEO */:
|
|
4934
|
-
return /* @__PURE__ */
|
|
4908
|
+
return /* @__PURE__ */ React19__default.createElement(IconWorld, { size: 20 });
|
|
4935
4909
|
case "time" /* TIME */:
|
|
4936
|
-
return /* @__PURE__ */
|
|
4910
|
+
return /* @__PURE__ */ React19__default.createElement(IconClock, { size: 20 });
|
|
4937
4911
|
default:
|
|
4938
|
-
return /* @__PURE__ */
|
|
4912
|
+
return /* @__PURE__ */ React19__default.createElement(IconBox, { size: 20 });
|
|
4939
4913
|
}
|
|
4940
4914
|
};
|
|
4941
4915
|
var DrawerMenu_default = AddColumnsDrawer;
|
|
4942
4916
|
|
|
4943
4917
|
// src/components/ExplorerTabs.tsx
|
|
4944
|
-
|
|
4918
|
+
init_esm_shims();
|
|
4945
4919
|
var tabsStyles = (t) => ({
|
|
4946
4920
|
root: {
|
|
4947
4921
|
alignSelf: "flex-end"
|
|
@@ -4964,8 +4938,8 @@ function ExplorerTabs({
|
|
|
4964
4938
|
value
|
|
4965
4939
|
}) {
|
|
4966
4940
|
const { translate: t } = useTranslation();
|
|
4967
|
-
return /* @__PURE__ */
|
|
4968
|
-
|
|
4941
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
4942
|
+
Tabs,
|
|
4969
4943
|
{
|
|
4970
4944
|
color: "blue",
|
|
4971
4945
|
id: "query-results-tabs",
|
|
@@ -4973,37 +4947,37 @@ function ExplorerTabs({
|
|
|
4973
4947
|
value,
|
|
4974
4948
|
styles: tabsStyles
|
|
4975
4949
|
},
|
|
4976
|
-
/* @__PURE__ */
|
|
4950
|
+
/* @__PURE__ */ React19__default.createElement(Tabs.List, null, panels.map((panel) => /* @__PURE__ */ React19__default.createElement(Tabs.Tab, { key: panel.key, id: panel.key, value: panel.key, h: 56 }, t(panel.label))))
|
|
4977
4951
|
);
|
|
4978
4952
|
}
|
|
4979
4953
|
|
|
4980
4954
|
// src/components/PreviewModeSwitch.jsx
|
|
4981
|
-
|
|
4955
|
+
init_esm_shims();
|
|
4982
4956
|
var PreviewModeSwitch = (props) => {
|
|
4983
4957
|
const withTooltip = !!props.withTooltip;
|
|
4984
4958
|
const actions2 = useActions();
|
|
4985
4959
|
const { translate: t } = useTranslation();
|
|
4986
|
-
const isPreviewMode =
|
|
4987
|
-
const serialParams =
|
|
4960
|
+
const isPreviewMode = useSelector$1(selectIsPreviewMode);
|
|
4961
|
+
const serialParams = useSelector$1(selectSerializedParams);
|
|
4988
4962
|
const { previewLimit } = useSettings();
|
|
4989
|
-
|
|
4963
|
+
useEffect(() => {
|
|
4990
4964
|
isPreviewMode && actions2.willRequestQuery();
|
|
4991
4965
|
}, [isPreviewMode, serialParams]);
|
|
4992
|
-
const onClickLoadAllResults =
|
|
4966
|
+
const onClickLoadAllResults = useCallback(() => {
|
|
4993
4967
|
actions2.updateIsPreview(!isPreviewMode);
|
|
4994
4968
|
}, [isPreviewMode]);
|
|
4995
|
-
const target = /* @__PURE__ */
|
|
4996
|
-
|
|
4969
|
+
const target = /* @__PURE__ */ React19__default.createElement(
|
|
4970
|
+
Switch,
|
|
4997
4971
|
{
|
|
4998
4972
|
checked: !isPreviewMode,
|
|
4999
4973
|
styles: { label: { display: "flex", alignContent: "center", gap: "0.25rem" } },
|
|
5000
|
-
label: /* @__PURE__ */
|
|
4974
|
+
label: /* @__PURE__ */ React19__default.createElement(React19__default.Fragment, null, t("params.label_boolean_full_results"), withTooltip && /* @__PURE__ */ React19__default.createElement(ThemeIcon, { variant: "subtle", size: "sm" }, /* @__PURE__ */ React19__default.createElement(IconInfoCircleFilled, null))),
|
|
5001
4975
|
onChange: onClickLoadAllResults
|
|
5002
4976
|
}
|
|
5003
4977
|
);
|
|
5004
4978
|
if (!withTooltip) return target;
|
|
5005
|
-
return /* @__PURE__ */
|
|
5006
|
-
|
|
4979
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
4980
|
+
Tooltip,
|
|
5007
4981
|
{
|
|
5008
4982
|
events: {
|
|
5009
4983
|
hover: true,
|
|
@@ -5015,12 +4989,12 @@ var PreviewModeSwitch = (props) => {
|
|
|
5015
4989
|
withArrow: true,
|
|
5016
4990
|
withinPortal: true
|
|
5017
4991
|
},
|
|
5018
|
-
/* @__PURE__ */
|
|
4992
|
+
/* @__PURE__ */ React19__default.createElement("div", null, target)
|
|
5019
4993
|
);
|
|
5020
4994
|
};
|
|
5021
4995
|
|
|
5022
4996
|
// src/components/Toolbar.tsx
|
|
5023
|
-
|
|
4997
|
+
init_esm_shims();
|
|
5024
4998
|
var toolbarSx = (t) => ({
|
|
5025
4999
|
background: t.colorScheme === "dark" ? t.black : t.white,
|
|
5026
5000
|
borderRadius: t.radius.xl,
|
|
@@ -5028,27 +5002,27 @@ var toolbarSx = (t) => ({
|
|
|
5028
5002
|
});
|
|
5029
5003
|
function ToolbarButton({ icon, label, onClick = () => void 0 }) {
|
|
5030
5004
|
const { toolbarConfig } = useSettings();
|
|
5031
|
-
return /* @__PURE__ */
|
|
5032
|
-
|
|
5005
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
5006
|
+
UnstyledButton,
|
|
5033
5007
|
{
|
|
5034
5008
|
onClick,
|
|
5035
5009
|
py: { base: "0.2rem", md: 0 },
|
|
5036
5010
|
sx: (t) => ({ "& svg path": { stroke: t.colorScheme === "dark" ? "white" : "black" } })
|
|
5037
5011
|
},
|
|
5038
|
-
/* @__PURE__ */
|
|
5012
|
+
/* @__PURE__ */ React19__default.createElement(Group, { spacing: "xs", noWrap: true }, icon, (toolbarConfig == null ? void 0 : toolbarConfig.showLabels) && label && /* @__PURE__ */ React19__default.createElement(Text, { size: "sm" }, label))
|
|
5039
5013
|
);
|
|
5040
5014
|
}
|
|
5041
5015
|
function TourButton() {
|
|
5042
|
-
const { setIsOpen, setCurrentStep } =
|
|
5016
|
+
const { setIsOpen, setCurrentStep } = useTour();
|
|
5043
5017
|
const { translate: t } = useTranslation();
|
|
5044
5018
|
const startTour = () => {
|
|
5045
5019
|
setCurrentStep(0);
|
|
5046
5020
|
setIsOpen(true);
|
|
5047
5021
|
};
|
|
5048
|
-
return /* @__PURE__ */
|
|
5022
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
5049
5023
|
ToolbarButton,
|
|
5050
5024
|
{
|
|
5051
|
-
icon: /* @__PURE__ */
|
|
5025
|
+
icon: /* @__PURE__ */ React19__default.createElement(IconHelpCircle, { strokeWidth: 1.5 }),
|
|
5052
5026
|
label: t("tour.controls.help"),
|
|
5053
5027
|
onClick: startTour
|
|
5054
5028
|
}
|
|
@@ -5059,11 +5033,11 @@ function Toolbar({
|
|
|
5059
5033
|
fullscreen
|
|
5060
5034
|
}) {
|
|
5061
5035
|
const { translate: t } = useTranslation();
|
|
5062
|
-
const theme =
|
|
5063
|
-
const smallerThanLg =
|
|
5036
|
+
const theme = useMantineTheme();
|
|
5037
|
+
const smallerThanLg = useMediaQuery(`(max-width: ${theme.breakpoints.lg})`);
|
|
5064
5038
|
const { toolbarConfig } = useSettings();
|
|
5065
|
-
const settings = /* @__PURE__ */
|
|
5066
|
-
|
|
5039
|
+
const settings = /* @__PURE__ */ React19__default.createElement(
|
|
5040
|
+
Flex,
|
|
5067
5041
|
{
|
|
5068
5042
|
direction: { base: "column", lg: "row" },
|
|
5069
5043
|
justify: "flex-start",
|
|
@@ -5073,22 +5047,22 @@ function Toolbar({
|
|
|
5073
5047
|
wrap: "nowrap",
|
|
5074
5048
|
gap: "xs"
|
|
5075
5049
|
},
|
|
5076
|
-
toolbarConfig == null ? void 0 : toolbarConfig.buttons.map((b) => /* @__PURE__ */
|
|
5077
|
-
/* @__PURE__ */
|
|
5078
|
-
/* @__PURE__ */
|
|
5050
|
+
toolbarConfig == null ? void 0 : toolbarConfig.buttons.map((b) => /* @__PURE__ */ React19__default.createElement(ToolbarButton, { key: b.label, ...b })),
|
|
5051
|
+
/* @__PURE__ */ React19__default.createElement(TourButton, null),
|
|
5052
|
+
/* @__PURE__ */ React19__default.createElement(
|
|
5079
5053
|
ToolbarButton,
|
|
5080
5054
|
{
|
|
5081
|
-
icon: /* @__PURE__ */
|
|
5055
|
+
icon: /* @__PURE__ */ React19__default.createElement(FullScreenSVG, null),
|
|
5082
5056
|
label: t("params.label_fullscreen"),
|
|
5083
5057
|
onClick: fullscreen.toggle
|
|
5084
5058
|
}
|
|
5085
5059
|
)
|
|
5086
5060
|
);
|
|
5087
|
-
return smallerThanLg ? /* @__PURE__ */
|
|
5061
|
+
return smallerThanLg ? /* @__PURE__ */ React19__default.createElement(Menu, null, /* @__PURE__ */ React19__default.createElement(Menu.Target, null, /* @__PURE__ */ React19__default.createElement(ActionIcon, null, /* @__PURE__ */ React19__default.createElement(IconSettings, null))), /* @__PURE__ */ React19__default.createElement(Menu.Dropdown, null, settings)) : settings;
|
|
5088
5062
|
}
|
|
5089
5063
|
|
|
5090
5064
|
// src/components/ExplorerResults.tsx
|
|
5091
|
-
var useStyles3 =
|
|
5065
|
+
var useStyles3 = createStyles(() => ({
|
|
5092
5066
|
container: {
|
|
5093
5067
|
minHeight: "40vh",
|
|
5094
5068
|
display: "flex",
|
|
@@ -5096,37 +5070,37 @@ var useStyles3 = core.createStyles(() => ({
|
|
|
5096
5070
|
}
|
|
5097
5071
|
}));
|
|
5098
5072
|
function ExplorerResults(props) {
|
|
5099
|
-
const cube =
|
|
5100
|
-
const serverStatus =
|
|
5101
|
-
const { params, result } =
|
|
5073
|
+
const cube = useSelector$1(selectOlapCube);
|
|
5074
|
+
const serverStatus = useSelector$1(selectServerState);
|
|
5075
|
+
const { params, result } = useSelector$1(selectCurrentQueryItem);
|
|
5102
5076
|
const { online: isServerOnline, url: serverUrl } = serverStatus;
|
|
5103
5077
|
const { error } = result;
|
|
5104
5078
|
const { translate: t } = useTranslation();
|
|
5105
5079
|
const { classes, cx } = useStyles3();
|
|
5106
5080
|
if (typeof window === "object" && window.navigator.onLine === false) {
|
|
5107
|
-
return /* @__PURE__ */
|
|
5081
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
5108
5082
|
FailureResult,
|
|
5109
5083
|
{
|
|
5110
5084
|
className: cx(classes.container, props.className),
|
|
5111
|
-
icon: /* @__PURE__ */
|
|
5085
|
+
icon: /* @__PURE__ */ React19__default.createElement(IconWorld, { color: "orange", size: "5rem" }),
|
|
5112
5086
|
title: t("results.error_disconnected_title")
|
|
5113
5087
|
}
|
|
5114
5088
|
);
|
|
5115
5089
|
}
|
|
5116
5090
|
if (isServerOnline === false) {
|
|
5117
|
-
return /* @__PURE__ */
|
|
5091
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
5118
5092
|
FailureResult,
|
|
5119
5093
|
{
|
|
5120
5094
|
className: cx(classes.container, props.className),
|
|
5121
|
-
icon: /* @__PURE__ */
|
|
5095
|
+
icon: /* @__PURE__ */ React19__default.createElement(IconAlertTriangle, { color: "orange", size: "5rem" }),
|
|
5122
5096
|
title: t("results.error_serveroffline_title"),
|
|
5123
|
-
description: /* @__PURE__ */
|
|
5097
|
+
description: /* @__PURE__ */ React19__default.createElement(Text, { span: true }, t("results.error_serveroffline_detail"), /* @__PURE__ */ React19__default.createElement(Anchor, { href: serverUrl, target: "_blank", rel: "noopener noreferrer" }, serverUrl), ".")
|
|
5124
5098
|
}
|
|
5125
5099
|
);
|
|
5126
5100
|
}
|
|
5127
5101
|
if (isServerOnline == null || !cube) {
|
|
5128
|
-
return /* @__PURE__ */
|
|
5129
|
-
|
|
5102
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
5103
|
+
Paper,
|
|
5130
5104
|
{
|
|
5131
5105
|
className: cx(classes.container, props.className),
|
|
5132
5106
|
id: "query-results-transient",
|
|
@@ -5136,16 +5110,16 @@ function ExplorerResults(props) {
|
|
|
5136
5110
|
);
|
|
5137
5111
|
}
|
|
5138
5112
|
if (error) {
|
|
5139
|
-
return /* @__PURE__ */
|
|
5113
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
5140
5114
|
FailureResult,
|
|
5141
5115
|
{
|
|
5142
5116
|
className: cx(classes.container, props.className),
|
|
5143
|
-
description: /* @__PURE__ */
|
|
5144
|
-
icon: /* @__PURE__ */
|
|
5117
|
+
description: /* @__PURE__ */ React19__default.createElement(Stack, { align: "center", spacing: "xs" }, /* @__PURE__ */ React19__default.createElement(Text, null, t("results.error_execquery_detail")), /* @__PURE__ */ React19__default.createElement(Text, null, error)),
|
|
5118
|
+
icon: /* @__PURE__ */ React19__default.createElement(IconAlertTriangle, { color: "orange", size: "5rem" })
|
|
5145
5119
|
}
|
|
5146
5120
|
);
|
|
5147
5121
|
}
|
|
5148
|
-
return /* @__PURE__ */
|
|
5122
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
5149
5123
|
SuccessResult,
|
|
5150
5124
|
{
|
|
5151
5125
|
className: cx(classes.container, props.className),
|
|
@@ -5158,8 +5132,8 @@ function ExplorerResults(props) {
|
|
|
5158
5132
|
);
|
|
5159
5133
|
}
|
|
5160
5134
|
function FailureResult(props) {
|
|
5161
|
-
return /* @__PURE__ */
|
|
5162
|
-
|
|
5135
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
5136
|
+
Paper,
|
|
5163
5137
|
{
|
|
5164
5138
|
id: "query-results-failure",
|
|
5165
5139
|
className: props.className,
|
|
@@ -5167,31 +5141,31 @@ function FailureResult(props) {
|
|
|
5167
5141
|
withBorder: true,
|
|
5168
5142
|
sx: { justifyContent: "center" }
|
|
5169
5143
|
},
|
|
5170
|
-
/* @__PURE__ */
|
|
5144
|
+
/* @__PURE__ */ React19__default.createElement(Stack, { align: "center", spacing: "xs" }, props.icon && props.icon, props.title && /* @__PURE__ */ React19__default.createElement(Title, { order: 5 }, props.title), props.description && /* @__PURE__ */ React19__default.createElement(Text, null, props.description), props.children && props.children, props.action && props.action)
|
|
5171
5145
|
);
|
|
5172
5146
|
}
|
|
5173
5147
|
function SuccessResult(props) {
|
|
5174
5148
|
const { cube, panels, params, result } = props;
|
|
5175
5149
|
const { translate: t } = useTranslation();
|
|
5176
5150
|
const { previewLimit, actions: actions2 } = useSettings();
|
|
5177
|
-
const queryItem =
|
|
5178
|
-
const isPreviewMode =
|
|
5151
|
+
const queryItem = useSelector$1(selectCurrentQueryItem);
|
|
5152
|
+
const isPreviewMode = useSelector$1(selectIsPreviewMode);
|
|
5179
5153
|
const { table, isError, isLoading, data, columns, pagination, setPagination } = useTable({
|
|
5180
5154
|
cube,
|
|
5181
5155
|
result
|
|
5182
5156
|
});
|
|
5183
|
-
const fullscreen =
|
|
5184
|
-
const [CurrentComponent, panelKey, panelMeta] =
|
|
5157
|
+
const fullscreen = useFullscreen();
|
|
5158
|
+
const [CurrentComponent, panelKey, panelMeta] = useMemo(() => {
|
|
5185
5159
|
const currentPanel = queryItem.panel || `${panels[0].key}-`;
|
|
5186
5160
|
const [panelKey2, ...panelMeta2] = currentPanel.split("-");
|
|
5187
5161
|
const panel = panels.find((item) => item.key === panelKey2) || panels[0];
|
|
5188
5162
|
return [panel.component, panel.key, panelMeta2.join("-")];
|
|
5189
5163
|
}, [panels, queryItem.panel]);
|
|
5190
|
-
const tabHandler =
|
|
5164
|
+
const tabHandler = useCallback((newTab) => {
|
|
5191
5165
|
actions2.switchPanel(newTab);
|
|
5192
5166
|
}, []);
|
|
5193
|
-
return /* @__PURE__ */
|
|
5194
|
-
|
|
5167
|
+
return /* @__PURE__ */ React19__default.createElement(Flex, { gap: "xs", direction: "column", w: "100%", className: props.className }, /* @__PURE__ */ React19__default.createElement(Paper, { ref: fullscreen.ref, id: "query-results-success", h: "100%" }, /* @__PURE__ */ React19__default.createElement(
|
|
5168
|
+
Flex,
|
|
5195
5169
|
{
|
|
5196
5170
|
sx: (t2) => ({
|
|
5197
5171
|
alignItems: "center",
|
|
@@ -5200,9 +5174,9 @@ function SuccessResult(props) {
|
|
|
5200
5174
|
}),
|
|
5201
5175
|
w: "100%"
|
|
5202
5176
|
},
|
|
5203
|
-
/* @__PURE__ */
|
|
5204
|
-
(!queryItem.panel || queryItem.panel === "table") && /* @__PURE__ */
|
|
5205
|
-
), isPreviewMode && /* @__PURE__ */
|
|
5177
|
+
/* @__PURE__ */ React19__default.createElement(ExplorerTabs, { panels, onChange: tabHandler, value: panelKey }),
|
|
5178
|
+
(!queryItem.panel || queryItem.panel === "table") && /* @__PURE__ */ React19__default.createElement(Group, { sx: { display: "flex", flex: "0 1 auto", gap: "0.5rem" }, mr: "sm", noWrap: true }, /* @__PURE__ */ React19__default.createElement(Toolbar, { table, fullscreen }), /* @__PURE__ */ React19__default.createElement(DrawerMenu_default, null))
|
|
5179
|
+
), isPreviewMode && /* @__PURE__ */ React19__default.createElement(Alert, { id: "alert-load-all-results", color: "yellow", radius: 0, sx: { flex: "0 0 auto" } }, /* @__PURE__ */ React19__default.createElement(Group, { position: "apart" }, /* @__PURE__ */ React19__default.createElement(Text, null, /* @__PURE__ */ React19__default.createElement(Text, { fw: 700, span: true }, t("previewMode.title_preview"), ":", " "), /* @__PURE__ */ React19__default.createElement(Text, { span: true }, t("previewMode.description_preview", { limit: previewLimit }))), /* @__PURE__ */ React19__default.createElement(PreviewModeSwitch, null))), /* @__PURE__ */ React19__default.createElement(Box, { id: "query-results-content", sx: { flex: "1 1", height: "calc(100% - 60px)" } }, /* @__PURE__ */ React19__default.createElement(Suspense, { fallback: props.children }, /* @__PURE__ */ React19__default.createElement(Flex, { h: "100%" }, /* @__PURE__ */ React19__default.createElement(Box, { sx: { flex: "1 1", overflowX: "scroll" } }, /* @__PURE__ */ React19__default.createElement(
|
|
5206
5180
|
CurrentComponent,
|
|
5207
5181
|
{
|
|
5208
5182
|
panelKey: `${panelKey}-${panelMeta}`,
|
|
@@ -5221,15 +5195,15 @@ function SuccessResult(props) {
|
|
|
5221
5195
|
}
|
|
5222
5196
|
|
|
5223
5197
|
// src/components/ParamsExplorer.tsx
|
|
5224
|
-
|
|
5198
|
+
init_esm_shims();
|
|
5225
5199
|
function ParamsExplorer(props) {
|
|
5226
5200
|
const { locale } = props;
|
|
5227
|
-
return /* @__PURE__ */
|
|
5201
|
+
return /* @__PURE__ */ React19__default.createElement(SelectCube, { locale });
|
|
5228
5202
|
}
|
|
5229
5203
|
var ParamsExplorer_default = ParamsExplorer;
|
|
5230
5204
|
|
|
5231
5205
|
// src/components/ExplorerContent.tsx
|
|
5232
|
-
var useStyles4 =
|
|
5206
|
+
var useStyles4 = createStyles((theme, params) => ({
|
|
5233
5207
|
container: {
|
|
5234
5208
|
height: "100%",
|
|
5235
5209
|
[theme.fn.largerThan("md")]: {
|
|
@@ -5266,14 +5240,14 @@ function ExplorerContent(props) {
|
|
|
5266
5240
|
props.defaultCube
|
|
5267
5241
|
);
|
|
5268
5242
|
const { classes } = useStyles4({ height: props.height });
|
|
5269
|
-
|
|
5243
|
+
useEffect(() => {
|
|
5270
5244
|
if (props.locale) translation.setLocale(props.locale);
|
|
5271
5245
|
}, [props.locale, translation]);
|
|
5272
|
-
const splash =
|
|
5246
|
+
const splash = useMemo(() => {
|
|
5273
5247
|
const SplashComponent = props.splash;
|
|
5274
|
-
return SplashComponent ? /* @__PURE__ */
|
|
5248
|
+
return SplashComponent ? /* @__PURE__ */ React19__default.createElement(SplashComponent, { translation }) : /* @__PURE__ */ React19__default.createElement(Center, { h: "100%", sx: { flex: 1 } }, /* @__PURE__ */ React19__default.createElement(AnimatedCube, null));
|
|
5275
5249
|
}, [props.splash, translation]);
|
|
5276
|
-
return /* @__PURE__ */
|
|
5250
|
+
return /* @__PURE__ */ React19__default.createElement("div", { className: classes.container }, /* @__PURE__ */ React19__default.createElement("div", { className: classes.root }, /* @__PURE__ */ React19__default.createElement(AppProviders, null, /* @__PURE__ */ React19__default.createElement(SideBarProvider, { locale: props.locale }, /* @__PURE__ */ React19__default.createElement(SideBar_default, null, /* @__PURE__ */ React19__default.createElement(SideBarItem, null, /* @__PURE__ */ React19__default.createElement(ParamsExplorer_default, { locale: props.locale })))), /* @__PURE__ */ React19__default.createElement(
|
|
5277
5251
|
ExplorerResults,
|
|
5278
5252
|
{
|
|
5279
5253
|
className: classes.flexCol,
|
|
@@ -5284,16 +5258,16 @@ function ExplorerContent(props) {
|
|
|
5284
5258
|
}
|
|
5285
5259
|
|
|
5286
5260
|
// src/components/PivotView.tsx
|
|
5287
|
-
|
|
5261
|
+
init_esm_shims();
|
|
5288
5262
|
|
|
5289
5263
|
// src/hooks/pivot.ts
|
|
5290
|
-
|
|
5264
|
+
init_esm_shims();
|
|
5291
5265
|
|
|
5292
5266
|
// src/utils/pivot.worker.js
|
|
5293
|
-
|
|
5267
|
+
init_esm_shims();
|
|
5294
5268
|
|
|
5295
5269
|
// src/utils/workerify.ts
|
|
5296
|
-
|
|
5270
|
+
init_esm_shims();
|
|
5297
5271
|
var SCRIPT_TYPE = "application/javascript";
|
|
5298
5272
|
var Worker = typeof window === "object" ? window.Worker : null;
|
|
5299
5273
|
if (Worker) {
|
|
@@ -5486,7 +5460,7 @@ var pivot_worker_default = shimWorker((self2) => {
|
|
|
5486
5460
|
function useFormatParams(measures, valueProperty) {
|
|
5487
5461
|
const { translate: t } = useTranslation();
|
|
5488
5462
|
const fmt = useFormatter();
|
|
5489
|
-
return
|
|
5463
|
+
return useMemo(() => {
|
|
5490
5464
|
const formatterKey = fmt.getFormat(valueProperty);
|
|
5491
5465
|
const formatter2 = fmt.getFormatter(formatterKey);
|
|
5492
5466
|
return {
|
|
@@ -5501,9 +5475,9 @@ function useFormatParams(measures, valueProperty) {
|
|
|
5501
5475
|
}, [valueProperty, fmt, t]);
|
|
5502
5476
|
}
|
|
5503
5477
|
function usePivottedData(data, colProp, rowProp, valProp, initialState4 = null) {
|
|
5504
|
-
const [pivottedData, setPivottedData] =
|
|
5505
|
-
const [error, setError] =
|
|
5506
|
-
|
|
5478
|
+
const [pivottedData, setPivottedData] = useState(initialState4);
|
|
5479
|
+
const [error, setError] = useState(null);
|
|
5480
|
+
useEffect(() => {
|
|
5507
5481
|
setPivottedData(initialState4);
|
|
5508
5482
|
setError(null);
|
|
5509
5483
|
serializeToArray(data, { colProp, rowProp, valProp }).then(setPivottedData, setError);
|
|
@@ -5534,7 +5508,7 @@ function serializeToArray(data, sides) {
|
|
|
5534
5508
|
}
|
|
5535
5509
|
|
|
5536
5510
|
// src/components/ButtonDownload.jsx
|
|
5537
|
-
|
|
5511
|
+
init_esm_shims();
|
|
5538
5512
|
var mimeTypes2 = {
|
|
5539
5513
|
csv: "text/csv",
|
|
5540
5514
|
json: "application/json",
|
|
@@ -5544,7 +5518,7 @@ var mimeTypes2 = {
|
|
|
5544
5518
|
};
|
|
5545
5519
|
var ButtonDownload2 = (props) => {
|
|
5546
5520
|
const { provider, ...buttonProps } = props;
|
|
5547
|
-
const onClick =
|
|
5521
|
+
const onClick = useCallback((evt) => {
|
|
5548
5522
|
evt.stopPropagation();
|
|
5549
5523
|
evt.preventDefault();
|
|
5550
5524
|
const anchor = document.createElement("a");
|
|
@@ -5566,22 +5540,22 @@ var ButtonDownload2 = (props) => {
|
|
|
5566
5540
|
console.error("Error downloading content:", error.message);
|
|
5567
5541
|
});
|
|
5568
5542
|
}, [provider]);
|
|
5569
|
-
return /* @__PURE__ */
|
|
5570
|
-
|
|
5543
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
5544
|
+
Button,
|
|
5571
5545
|
{
|
|
5572
5546
|
...buttonProps,
|
|
5573
5547
|
fullWidth: true,
|
|
5574
5548
|
onClick,
|
|
5575
5549
|
variant: "default"
|
|
5576
5550
|
},
|
|
5577
|
-
/* @__PURE__ */
|
|
5551
|
+
/* @__PURE__ */ React19__default.createElement(Text, { fz: "xs" }, props.children)
|
|
5578
5552
|
);
|
|
5579
5553
|
};
|
|
5580
5554
|
|
|
5581
5555
|
// src/components/NonIdealState.jsx
|
|
5582
|
-
|
|
5583
|
-
var NonIdealState = (props) => /* @__PURE__ */
|
|
5584
|
-
|
|
5556
|
+
init_esm_shims();
|
|
5557
|
+
var NonIdealState = (props) => /* @__PURE__ */ React19__default.createElement(
|
|
5558
|
+
Center,
|
|
5585
5559
|
{
|
|
5586
5560
|
h: "100%",
|
|
5587
5561
|
w: "100%",
|
|
@@ -5591,16 +5565,16 @@ var NonIdealState = (props) => /* @__PURE__ */ React19__namespace.default.create
|
|
|
5591
5565
|
}
|
|
5592
5566
|
})
|
|
5593
5567
|
},
|
|
5594
|
-
/* @__PURE__ */
|
|
5568
|
+
/* @__PURE__ */ React19__default.createElement(Stack, { align: "center", spacing: "xs" }, props.icon && props.icon, props.title && /* @__PURE__ */ React19__default.createElement(Title, { order: 5 }, props.title), props.description && /* @__PURE__ */ React19__default.createElement(Text, null, props.description), props.children && props.children, props.action && props.action)
|
|
5595
5569
|
);
|
|
5596
5570
|
|
|
5597
5571
|
// src/components/PivotView.tsx
|
|
5598
|
-
var SelectOption =
|
|
5572
|
+
var SelectOption = forwardRef(
|
|
5599
5573
|
(props, ref) => {
|
|
5600
|
-
return /* @__PURE__ */
|
|
5574
|
+
return /* @__PURE__ */ React19__default.createElement(SelectObject, { ref, ...props });
|
|
5601
5575
|
}
|
|
5602
5576
|
);
|
|
5603
|
-
var useStyles5 =
|
|
5577
|
+
var useStyles5 = createStyles((theme) => ({
|
|
5604
5578
|
container: {
|
|
5605
5579
|
[theme.fn.largerThan("md")]: {
|
|
5606
5580
|
height: "100%",
|
|
@@ -5624,9 +5598,9 @@ function PivotView(props) {
|
|
|
5624
5598
|
const { cube, params, result, ...mantineReactTableProps } = props;
|
|
5625
5599
|
const locale = params.locale;
|
|
5626
5600
|
const { translate: t } = useTranslation();
|
|
5627
|
-
const measureMap =
|
|
5601
|
+
const measureMap = useSelector$1(selectOlapMeasureMap);
|
|
5628
5602
|
const { classes, cx } = useStyles5();
|
|
5629
|
-
const measureOptions =
|
|
5603
|
+
const measureOptions = useMemo(
|
|
5630
5604
|
() => filterMap(Object.values(params.measures), (item) => {
|
|
5631
5605
|
const entity = measureMap[item.name];
|
|
5632
5606
|
return !isActiveItem(item) ? null : {
|
|
@@ -5637,7 +5611,7 @@ function PivotView(props) {
|
|
|
5637
5611
|
}),
|
|
5638
5612
|
[measureMap, params.measures, locale]
|
|
5639
5613
|
);
|
|
5640
|
-
const drilldownOptions =
|
|
5614
|
+
const drilldownOptions = useMemo(() => {
|
|
5641
5615
|
const levelMap = mapDimensionHierarchyLevels(cube);
|
|
5642
5616
|
return Object.values(params.drilldowns).filter(isActiveItem).flatMap((item) => {
|
|
5643
5617
|
const [level, hierarchy, dimension] = levelMap[item.level];
|
|
@@ -5660,13 +5634,13 @@ function PivotView(props) {
|
|
|
5660
5634
|
);
|
|
5661
5635
|
});
|
|
5662
5636
|
}, [cube, params.drilldowns, locale]);
|
|
5663
|
-
const [colProp, setColumnProp] =
|
|
5637
|
+
const [colProp, setColumnProp] = useState(
|
|
5664
5638
|
() => drilldownOptions.find((item) => item.type === "time") || drilldownOptions[0]
|
|
5665
5639
|
);
|
|
5666
|
-
const [rowProp, setRowProp] =
|
|
5640
|
+
const [rowProp, setRowProp] = useState(
|
|
5667
5641
|
() => drilldownOptions.find((item) => item !== colProp) || drilldownOptions[0]
|
|
5668
5642
|
);
|
|
5669
|
-
const [valProp, setValueProp] =
|
|
5643
|
+
const [valProp, setValueProp] = useState(() => measureOptions[0]);
|
|
5670
5644
|
const fileName = [params.cube, colProp.label, rowProp.label, valProp.value].join("_");
|
|
5671
5645
|
const [pivottedData, pivottingError] = usePivottedData(result.data, colProp.value, rowProp.value, valProp.value);
|
|
5672
5646
|
const {
|
|
@@ -5675,16 +5649,16 @@ function PivotView(props) {
|
|
|
5675
5649
|
formatterKeyOptions,
|
|
5676
5650
|
setFormat
|
|
5677
5651
|
} = useFormatParams(props.cube.measures, valProp.value);
|
|
5678
|
-
const warnings =
|
|
5652
|
+
const warnings = useMemo(() => {
|
|
5679
5653
|
const warnings2 = [];
|
|
5680
5654
|
if (rowProp.type === "prop" || colProp.type === "prop") {
|
|
5681
5655
|
warnings2.push(
|
|
5682
|
-
/* @__PURE__ */
|
|
5683
|
-
|
|
5656
|
+
/* @__PURE__ */ React19__default.createElement(
|
|
5657
|
+
Alert,
|
|
5684
5658
|
{
|
|
5685
5659
|
color: "yellow",
|
|
5686
5660
|
m: "sm",
|
|
5687
|
-
icon: /* @__PURE__ */
|
|
5661
|
+
icon: /* @__PURE__ */ React19__default.createElement(IconAlertCircle, { size: "2rem" }),
|
|
5688
5662
|
key: "propertypivot"
|
|
5689
5663
|
},
|
|
5690
5664
|
t("pivot_view.warning_propertypivot")
|
|
@@ -5694,21 +5668,21 @@ function PivotView(props) {
|
|
|
5694
5668
|
const drilldownCount = Object.values(params.drilldowns).filter(isActiveItem).length;
|
|
5695
5669
|
if (drilldownCount > 2) {
|
|
5696
5670
|
warnings2.push(
|
|
5697
|
-
valProp.type !== "Sum" /* SUM */ ? /* @__PURE__ */
|
|
5698
|
-
|
|
5671
|
+
valProp.type !== "Sum" /* SUM */ ? /* @__PURE__ */ React19__default.createElement(
|
|
5672
|
+
Alert,
|
|
5699
5673
|
{
|
|
5700
5674
|
color: "yellow",
|
|
5701
5675
|
m: "sm",
|
|
5702
|
-
icon: /* @__PURE__ */
|
|
5676
|
+
icon: /* @__PURE__ */ React19__default.createElement(IconAlertCircle, { size: "2rem" }),
|
|
5703
5677
|
key: "notsummeasure"
|
|
5704
5678
|
},
|
|
5705
5679
|
t("pivot_view.warning_notsummeasure")
|
|
5706
|
-
) : /* @__PURE__ */
|
|
5707
|
-
|
|
5680
|
+
) : /* @__PURE__ */ React19__default.createElement(
|
|
5681
|
+
Alert,
|
|
5708
5682
|
{
|
|
5709
5683
|
color: "yellow",
|
|
5710
5684
|
m: "sm",
|
|
5711
|
-
icon: /* @__PURE__ */
|
|
5685
|
+
icon: /* @__PURE__ */ React19__default.createElement(IconAlertCircle, { size: "2rem" }),
|
|
5712
5686
|
key: "sumdimensions"
|
|
5713
5687
|
},
|
|
5714
5688
|
t("pivot_view.warning_sumdimensions")
|
|
@@ -5717,9 +5691,9 @@ function PivotView(props) {
|
|
|
5717
5691
|
}
|
|
5718
5692
|
return warnings2;
|
|
5719
5693
|
}, [params.drilldowns, rowProp, colProp, valProp]);
|
|
5720
|
-
const downloadToolbar =
|
|
5694
|
+
const downloadToolbar = useMemo(() => {
|
|
5721
5695
|
if (!pivottedData) return null;
|
|
5722
|
-
return /* @__PURE__ */
|
|
5696
|
+
return /* @__PURE__ */ React19__default.createElement(Input.Wrapper, { label: t("pivot_view.title_download") }, /* @__PURE__ */ React19__default.createElement(Button.Group, null, /* @__PURE__ */ React19__default.createElement(
|
|
5723
5697
|
ButtonDownload2,
|
|
5724
5698
|
{
|
|
5725
5699
|
provider: () => ({
|
|
@@ -5729,7 +5703,7 @@ function PivotView(props) {
|
|
|
5729
5703
|
})
|
|
5730
5704
|
},
|
|
5731
5705
|
"CSV"
|
|
5732
|
-
), /* @__PURE__ */
|
|
5706
|
+
), /* @__PURE__ */ React19__default.createElement(
|
|
5733
5707
|
ButtonDownload2,
|
|
5734
5708
|
{
|
|
5735
5709
|
provider: () => ({
|
|
@@ -5742,51 +5716,51 @@ function PivotView(props) {
|
|
|
5742
5716
|
)));
|
|
5743
5717
|
}, [pivottedData, formatter2]);
|
|
5744
5718
|
if (drilldownOptions.length < 2) {
|
|
5745
|
-
return /* @__PURE__ */
|
|
5719
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
5746
5720
|
NonIdealState,
|
|
5747
5721
|
{
|
|
5748
|
-
icon: /* @__PURE__ */
|
|
5722
|
+
icon: /* @__PURE__ */ React19__default.createElement(IconAlertTriangle, { color: "orange", size: "5rem" }),
|
|
5749
5723
|
title: t("pivot_view.error_missingparams")
|
|
5750
5724
|
}
|
|
5751
5725
|
);
|
|
5752
5726
|
}
|
|
5753
5727
|
let preview;
|
|
5754
5728
|
if (!colProp || !rowProp || !valProp) {
|
|
5755
|
-
preview = /* @__PURE__ */
|
|
5729
|
+
preview = /* @__PURE__ */ React19__default.createElement(
|
|
5756
5730
|
NonIdealState,
|
|
5757
5731
|
{
|
|
5758
|
-
icon: /* @__PURE__ */
|
|
5732
|
+
icon: /* @__PURE__ */ React19__default.createElement(IconAlertTriangle, { color: "orange", size: "5rem" }),
|
|
5759
5733
|
title: t("pivot_view.error_missingparams")
|
|
5760
5734
|
}
|
|
5761
5735
|
);
|
|
5762
5736
|
} else if (colProp === rowProp) {
|
|
5763
|
-
preview = /* @__PURE__ */
|
|
5737
|
+
preview = /* @__PURE__ */ React19__default.createElement(
|
|
5764
5738
|
NonIdealState,
|
|
5765
5739
|
{
|
|
5766
|
-
icon: /* @__PURE__ */
|
|
5740
|
+
icon: /* @__PURE__ */ React19__default.createElement(IconAlertTriangle, { color: "orange", size: "5rem" }),
|
|
5767
5741
|
title: t("pivot_view.error_onedimension")
|
|
5768
5742
|
}
|
|
5769
5743
|
);
|
|
5770
5744
|
} else if (pivottingError != null) {
|
|
5771
|
-
preview = /* @__PURE__ */
|
|
5745
|
+
preview = /* @__PURE__ */ React19__default.createElement(
|
|
5772
5746
|
NonIdealState,
|
|
5773
5747
|
{
|
|
5774
|
-
icon: /* @__PURE__ */
|
|
5748
|
+
icon: /* @__PURE__ */ React19__default.createElement(IconAlertTriangle, { color: "orange", size: "5rem" }),
|
|
5775
5749
|
title: t("pivot_view.error_internal"),
|
|
5776
5750
|
description: t("pivot_view.error_internal_detail", { error: pivottingError.message })
|
|
5777
5751
|
}
|
|
5778
5752
|
);
|
|
5779
5753
|
} else if (!pivottedData) {
|
|
5780
|
-
preview = /* @__PURE__ */
|
|
5754
|
+
preview = /* @__PURE__ */ React19__default.createElement(
|
|
5781
5755
|
NonIdealState,
|
|
5782
5756
|
{
|
|
5783
|
-
icon: /* @__PURE__ */
|
|
5757
|
+
icon: /* @__PURE__ */ React19__default.createElement(Loader, { size: "xl" }),
|
|
5784
5758
|
title: t("pivot_view.loading_title"),
|
|
5785
5759
|
description: t("pivot_view.loading_details")
|
|
5786
5760
|
}
|
|
5787
5761
|
);
|
|
5788
5762
|
} else {
|
|
5789
|
-
preview = /* @__PURE__ */
|
|
5763
|
+
preview = /* @__PURE__ */ React19__default.createElement(
|
|
5790
5764
|
MatrixTable,
|
|
5791
5765
|
{
|
|
5792
5766
|
key: `${fileName} ${formatterKey}`,
|
|
@@ -5797,14 +5771,14 @@ function PivotView(props) {
|
|
|
5797
5771
|
}
|
|
5798
5772
|
);
|
|
5799
5773
|
}
|
|
5800
|
-
return /* @__PURE__ */
|
|
5801
|
-
|
|
5774
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
5775
|
+
Box,
|
|
5802
5776
|
{
|
|
5803
5777
|
id: "query-results-pivot-view",
|
|
5804
5778
|
className: cx(props.className, classes.container)
|
|
5805
5779
|
},
|
|
5806
|
-
/* @__PURE__ */
|
|
5807
|
-
|
|
5780
|
+
/* @__PURE__ */ React19__default.createElement(Box, { className: classes.colParams }, /* @__PURE__ */ React19__default.createElement(
|
|
5781
|
+
SimpleGrid,
|
|
5808
5782
|
{
|
|
5809
5783
|
id: "query-results-pivot-view-params",
|
|
5810
5784
|
px: "md",
|
|
@@ -5816,7 +5790,7 @@ function PivotView(props) {
|
|
|
5816
5790
|
{ minWidth: "md", cols: 1 }
|
|
5817
5791
|
]
|
|
5818
5792
|
},
|
|
5819
|
-
/* @__PURE__ */
|
|
5793
|
+
/* @__PURE__ */ React19__default.createElement(
|
|
5820
5794
|
SelectOption,
|
|
5821
5795
|
{
|
|
5822
5796
|
getLabel: "label",
|
|
@@ -5827,7 +5801,7 @@ function PivotView(props) {
|
|
|
5827
5801
|
label: colProp.type === "prop" ? t("pivot_view.label_ddcolumnprop") : t("pivot_view.label_ddcolumn")
|
|
5828
5802
|
}
|
|
5829
5803
|
),
|
|
5830
|
-
/* @__PURE__ */
|
|
5804
|
+
/* @__PURE__ */ React19__default.createElement(
|
|
5831
5805
|
SelectOption,
|
|
5832
5806
|
{
|
|
5833
5807
|
getLabel: "label",
|
|
@@ -5838,7 +5812,7 @@ function PivotView(props) {
|
|
|
5838
5812
|
label: rowProp.type === "prop" ? t("pivot_view.label_ddrowprop") : t("pivot_view.label_ddrow")
|
|
5839
5813
|
}
|
|
5840
5814
|
),
|
|
5841
|
-
/* @__PURE__ */
|
|
5815
|
+
/* @__PURE__ */ React19__default.createElement(
|
|
5842
5816
|
SelectOption,
|
|
5843
5817
|
{
|
|
5844
5818
|
getLabel: "label",
|
|
@@ -5849,7 +5823,7 @@ function PivotView(props) {
|
|
|
5849
5823
|
selectedItem: valProp.value
|
|
5850
5824
|
}
|
|
5851
5825
|
),
|
|
5852
|
-
/* @__PURE__ */
|
|
5826
|
+
/* @__PURE__ */ React19__default.createElement(
|
|
5853
5827
|
SelectObject,
|
|
5854
5828
|
{
|
|
5855
5829
|
getLabel: "label",
|
|
@@ -5862,12 +5836,12 @@ function PivotView(props) {
|
|
|
5862
5836
|
),
|
|
5863
5837
|
downloadToolbar
|
|
5864
5838
|
), warnings.length > 0 ? warnings : null),
|
|
5865
|
-
/* @__PURE__ */
|
|
5839
|
+
/* @__PURE__ */ React19__default.createElement(Box, { className: classes.colContent }, preview)
|
|
5866
5840
|
);
|
|
5867
5841
|
}
|
|
5868
5842
|
function MatrixTable(props) {
|
|
5869
5843
|
const { data, formatter: formatter2, headers, ...mantineReactTableProps } = props;
|
|
5870
|
-
const columns =
|
|
5844
|
+
const columns = useMemo(() => headers.map((header, colIndex) => ({
|
|
5871
5845
|
accesorKey: header,
|
|
5872
5846
|
Cell: ({ row }) => colIndex > 0 && typeof row.original[colIndex] === "number" ? formatter2(row.original[colIndex]) : row.original[colIndex],
|
|
5873
5847
|
header,
|
|
@@ -5875,7 +5849,7 @@ function MatrixTable(props) {
|
|
|
5875
5849
|
align: colIndex > 0 ? "right" : "left"
|
|
5876
5850
|
}
|
|
5877
5851
|
})), [headers]);
|
|
5878
|
-
const tableProps =
|
|
5852
|
+
const tableProps = useMemo(() => ({
|
|
5879
5853
|
enableBottomToolbar: false,
|
|
5880
5854
|
enableColumnFilterModes: true,
|
|
5881
5855
|
enableColumnResizing: true,
|
|
@@ -5918,13 +5892,13 @@ function MatrixTable(props) {
|
|
|
5918
5892
|
}
|
|
5919
5893
|
}
|
|
5920
5894
|
}), []);
|
|
5921
|
-
const table =
|
|
5895
|
+
const table = useMantineReactTable({
|
|
5922
5896
|
...tableProps,
|
|
5923
5897
|
...mantineReactTableProps,
|
|
5924
5898
|
columns,
|
|
5925
5899
|
data
|
|
5926
5900
|
});
|
|
5927
|
-
return /* @__PURE__ */
|
|
5901
|
+
return /* @__PURE__ */ React19__default.createElement(MantineReactTable, { table });
|
|
5928
5902
|
}
|
|
5929
5903
|
function stringifyMatrix(matrix, formatter2, format2) {
|
|
5930
5904
|
const joint = { csv: ",", tsv: " " }[format2];
|
|
@@ -5942,30 +5916,30 @@ function stringifyMatrix(matrix, formatter2, format2) {
|
|
|
5942
5916
|
}
|
|
5943
5917
|
|
|
5944
5918
|
// src/components/tour/ExplorerTour.tsx
|
|
5945
|
-
|
|
5919
|
+
init_esm_shims();
|
|
5946
5920
|
|
|
5947
5921
|
// src/components/tour/useTourSteps.tsx
|
|
5948
|
-
|
|
5922
|
+
init_esm_shims();
|
|
5949
5923
|
|
|
5950
5924
|
// src/components/tour/FirstStep.tsx
|
|
5951
|
-
|
|
5925
|
+
init_esm_shims();
|
|
5952
5926
|
function FirstStep({ introImage }) {
|
|
5953
5927
|
const { translate: t } = useTranslation();
|
|
5954
|
-
return /* @__PURE__ */
|
|
5928
|
+
return /* @__PURE__ */ React19__default.createElement(Container, { className: "tour-item tour-welcome", px: 0 }, introImage && /* @__PURE__ */ React19__default.createElement("div", { className: "tour-img" }, introImage), /* @__PURE__ */ React19__default.createElement(Box, { className: "tour-text", px: "md" }, /* @__PURE__ */ React19__default.createElement("h3", null, t("tour.steps.welcome.title")), /* @__PURE__ */ React19__default.createElement("p", null, t("tour.steps.welcome.text1")), /* @__PURE__ */ React19__default.createElement("p", null, t("tour.steps.welcome.text2"))));
|
|
5955
5929
|
}
|
|
5956
5930
|
|
|
5957
5931
|
// src/components/tour/TourStep.tsx
|
|
5958
|
-
|
|
5932
|
+
init_esm_shims();
|
|
5959
5933
|
function TourStep(props) {
|
|
5960
5934
|
const { title, texts } = props;
|
|
5961
5935
|
const paragraphs = Array.isArray(texts) ? texts : [texts];
|
|
5962
|
-
return /* @__PURE__ */
|
|
5936
|
+
return /* @__PURE__ */ React19__default.createElement(Container, { className: "tour-item tour-step", pt: "md" }, /* @__PURE__ */ React19__default.createElement("div", { className: "tour-text" }, /* @__PURE__ */ React19__default.createElement(Title, { order: 3 }, title), paragraphs.map((p, i) => /* @__PURE__ */ React19__default.createElement(Text, { component: "p", key: `p-${i + 1}` }, p))));
|
|
5963
5937
|
}
|
|
5964
5938
|
|
|
5965
5939
|
// src/components/tour/LastStep.tsx
|
|
5966
|
-
|
|
5940
|
+
init_esm_shims();
|
|
5967
5941
|
function LastStep({ t }) {
|
|
5968
|
-
return /* @__PURE__ */
|
|
5942
|
+
return /* @__PURE__ */ React19__default.createElement(Container, { className: "tour-item tour-last", pt: "md" }, /* @__PURE__ */ React19__default.createElement("div", { className: "tour-text" }, /* @__PURE__ */ React19__default.createElement(Title, { order: 3 }, t("tour.steps.last.title")), /* @__PURE__ */ React19__default.createElement(Text, { component: "p" }, t("tour.steps.last.text"))));
|
|
5969
5943
|
}
|
|
5970
5944
|
|
|
5971
5945
|
// src/components/tour/useTourSteps.tsx
|
|
@@ -5975,15 +5949,15 @@ var click = (selector) => () => {
|
|
|
5975
5949
|
};
|
|
5976
5950
|
var useTourSteps = (tourConfig) => {
|
|
5977
5951
|
const { translate: t } = useTranslation();
|
|
5978
|
-
const steps =
|
|
5952
|
+
const steps = useMemo(() => [
|
|
5979
5953
|
{
|
|
5980
5954
|
selector: "document",
|
|
5981
|
-
content: /* @__PURE__ */
|
|
5955
|
+
content: /* @__PURE__ */ React19__default.createElement(FirstStep, { introImage: tourConfig.introImage }),
|
|
5982
5956
|
position: "center"
|
|
5983
5957
|
},
|
|
5984
5958
|
{
|
|
5985
5959
|
selector: "#dex-select-locale",
|
|
5986
|
-
content: /* @__PURE__ */
|
|
5960
|
+
content: /* @__PURE__ */ React19__default.createElement(
|
|
5987
5961
|
TourStep,
|
|
5988
5962
|
{
|
|
5989
5963
|
title: t("tour.steps.locale.title"),
|
|
@@ -5996,7 +5970,7 @@ var useTourSteps = (tourConfig) => {
|
|
|
5996
5970
|
},
|
|
5997
5971
|
{
|
|
5998
5972
|
selector: "#dex-select-cube-area",
|
|
5999
|
-
content: /* @__PURE__ */
|
|
5973
|
+
content: /* @__PURE__ */ React19__default.createElement(
|
|
6000
5974
|
TourStep,
|
|
6001
5975
|
{
|
|
6002
5976
|
title: t("tour.steps.dataset.title"),
|
|
@@ -6009,7 +5983,7 @@ var useTourSteps = (tourConfig) => {
|
|
|
6009
5983
|
},
|
|
6010
5984
|
{
|
|
6011
5985
|
selector: "#dex-search",
|
|
6012
|
-
content: /* @__PURE__ */
|
|
5986
|
+
content: /* @__PURE__ */ React19__default.createElement(
|
|
6013
5987
|
TourStep,
|
|
6014
5988
|
{
|
|
6015
5989
|
title: t("tour.steps.search.title"),
|
|
@@ -6022,7 +5996,7 @@ var useTourSteps = (tourConfig) => {
|
|
|
6022
5996
|
},
|
|
6023
5997
|
{
|
|
6024
5998
|
selector: "#dex-table",
|
|
6025
|
-
content: /* @__PURE__ */
|
|
5999
|
+
content: /* @__PURE__ */ React19__default.createElement(
|
|
6026
6000
|
TourStep,
|
|
6027
6001
|
{
|
|
6028
6002
|
title: t("tour.steps.table.title"),
|
|
@@ -6037,7 +6011,7 @@ var useTourSteps = (tourConfig) => {
|
|
|
6037
6011
|
selector: "#dex-column-drawer-body",
|
|
6038
6012
|
actionBefore: click("#dex-column-btn"),
|
|
6039
6013
|
stepInteraction: true,
|
|
6040
|
-
content: /* @__PURE__ */
|
|
6014
|
+
content: /* @__PURE__ */ React19__default.createElement(
|
|
6041
6015
|
TourStep,
|
|
6042
6016
|
{
|
|
6043
6017
|
title: t("tour.steps.columns.title"),
|
|
@@ -6053,7 +6027,7 @@ var useTourSteps = (tourConfig) => {
|
|
|
6053
6027
|
actionBefore: click(".dex-level-filter"),
|
|
6054
6028
|
actionAfter: click("#dex-column-drawer-close"),
|
|
6055
6029
|
stepInteraction: true,
|
|
6056
|
-
content: /* @__PURE__ */
|
|
6030
|
+
content: /* @__PURE__ */ React19__default.createElement(
|
|
6057
6031
|
TourStep,
|
|
6058
6032
|
{
|
|
6059
6033
|
title: t("tour.steps.filters.title"),
|
|
@@ -6066,7 +6040,7 @@ var useTourSteps = (tourConfig) => {
|
|
|
6066
6040
|
},
|
|
6067
6041
|
{
|
|
6068
6042
|
selector: "#dex-btn-group-download",
|
|
6069
|
-
content: /* @__PURE__ */
|
|
6043
|
+
content: /* @__PURE__ */ React19__default.createElement(
|
|
6070
6044
|
TourStep,
|
|
6071
6045
|
{
|
|
6072
6046
|
title: t("tour.steps.download.title"),
|
|
@@ -6076,7 +6050,7 @@ var useTourSteps = (tourConfig) => {
|
|
|
6076
6050
|
},
|
|
6077
6051
|
{
|
|
6078
6052
|
selector: "#dex-api-btn",
|
|
6079
|
-
content: /* @__PURE__ */
|
|
6053
|
+
content: /* @__PURE__ */ React19__default.createElement(
|
|
6080
6054
|
TourStep,
|
|
6081
6055
|
{
|
|
6082
6056
|
title: t("tour.steps.api.title"),
|
|
@@ -6087,7 +6061,7 @@ var useTourSteps = (tourConfig) => {
|
|
|
6087
6061
|
...tourConfig.extraSteps || [],
|
|
6088
6062
|
{
|
|
6089
6063
|
selector: "viewport",
|
|
6090
|
-
content: /* @__PURE__ */
|
|
6064
|
+
content: /* @__PURE__ */ React19__default.createElement(LastStep, { t }),
|
|
6091
6065
|
position: "center"
|
|
6092
6066
|
}
|
|
6093
6067
|
// ...
|
|
@@ -6098,15 +6072,15 @@ var useTourSteps = (tourConfig) => {
|
|
|
6098
6072
|
// src/components/tour/ExplorerTour.tsx
|
|
6099
6073
|
function PrevButton(props) {
|
|
6100
6074
|
const { translate: t } = useTranslation();
|
|
6101
|
-
const theme =
|
|
6075
|
+
const theme = useMantineTheme();
|
|
6102
6076
|
const isRtl = theme.dir === "rtl";
|
|
6103
6077
|
const handleClick = () => props.setCurrentStep(
|
|
6104
6078
|
(s) => s === 0 ? props.steps.length - 1 : s - 1
|
|
6105
6079
|
);
|
|
6106
|
-
return /* @__PURE__ */
|
|
6107
|
-
|
|
6080
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
6081
|
+
Button,
|
|
6108
6082
|
{
|
|
6109
|
-
leftIcon: isRtl ? /* @__PURE__ */
|
|
6083
|
+
leftIcon: isRtl ? /* @__PURE__ */ React19__default.createElement(IconArrowRight, { size: "0.8rem" }) : /* @__PURE__ */ React19__default.createElement(IconArrowLeft, { size: "0.8rem" }),
|
|
6110
6084
|
onClick: handleClick,
|
|
6111
6085
|
radius: 0,
|
|
6112
6086
|
size: "lg",
|
|
@@ -6120,7 +6094,7 @@ function PrevButton(props) {
|
|
|
6120
6094
|
}
|
|
6121
6095
|
function NextButton(props) {
|
|
6122
6096
|
const { translate: t } = useTranslation();
|
|
6123
|
-
const theme =
|
|
6097
|
+
const theme = useMantineTheme();
|
|
6124
6098
|
const isRtl = theme.dir === "rtl";
|
|
6125
6099
|
const handleClick = () => {
|
|
6126
6100
|
if (props.currentStep === props.steps.length - 1) {
|
|
@@ -6136,15 +6110,15 @@ function NextButton(props) {
|
|
|
6136
6110
|
}
|
|
6137
6111
|
}
|
|
6138
6112
|
};
|
|
6139
|
-
return /* @__PURE__ */
|
|
6140
|
-
|
|
6113
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
6114
|
+
Button,
|
|
6141
6115
|
{
|
|
6142
6116
|
variant: "filled",
|
|
6143
6117
|
w: "50%",
|
|
6144
6118
|
size: "lg",
|
|
6145
6119
|
sx: { flex: "0 0 50%" },
|
|
6146
6120
|
onClick: handleClick,
|
|
6147
|
-
rightIcon: isRtl ? /* @__PURE__ */
|
|
6121
|
+
rightIcon: isRtl ? /* @__PURE__ */ React19__default.createElement(IconArrowLeft, { size: "0.8rem" }) : /* @__PURE__ */ React19__default.createElement(IconArrowRight, { size: "0.8rem" }),
|
|
6148
6122
|
radius: 0
|
|
6149
6123
|
},
|
|
6150
6124
|
t("tour.controls.next")
|
|
@@ -6195,7 +6169,7 @@ var keyboardHandler = (rtl) => (e, clickProps) => {
|
|
|
6195
6169
|
}
|
|
6196
6170
|
};
|
|
6197
6171
|
function ExplorerTour({ children, tourConfig }) {
|
|
6198
|
-
const theme =
|
|
6172
|
+
const theme = useMantineTheme();
|
|
6199
6173
|
const steps = useTourSteps(tourConfig);
|
|
6200
6174
|
const styles2 = {
|
|
6201
6175
|
popover: withBase({ padding: 0, borderRadius: theme.radius.md, overflow: "hidden" }),
|
|
@@ -6214,8 +6188,8 @@ function ExplorerTour({ children, tourConfig }) {
|
|
|
6214
6188
|
})
|
|
6215
6189
|
};
|
|
6216
6190
|
const rtl = theme.dir === "rtl";
|
|
6217
|
-
return /* @__PURE__ */
|
|
6218
|
-
|
|
6191
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
6192
|
+
TourProvider,
|
|
6219
6193
|
{
|
|
6220
6194
|
steps,
|
|
6221
6195
|
position: "right",
|
|
@@ -6250,7 +6224,7 @@ function ExplorerComponent(props) {
|
|
|
6250
6224
|
tourConfig,
|
|
6251
6225
|
measuresActive
|
|
6252
6226
|
} = props;
|
|
6253
|
-
const panels =
|
|
6227
|
+
const panels = useMemo(
|
|
6254
6228
|
() => props.panels || [
|
|
6255
6229
|
{ key: "table", label: "table_view.tab_label", component: TableView },
|
|
6256
6230
|
{ key: "pivot", label: "pivot_view.tab_label", component: PivotView },
|
|
@@ -6258,12 +6232,12 @@ function ExplorerComponent(props) {
|
|
|
6258
6232
|
],
|
|
6259
6233
|
[props.panels]
|
|
6260
6234
|
);
|
|
6261
|
-
const store = withinReduxProvider ?
|
|
6262
|
-
const boundActions =
|
|
6263
|
-
() =>
|
|
6235
|
+
const store = withinReduxProvider ? useMemo(storeFactory, []) : useStore();
|
|
6236
|
+
const boundActions = useMemo(
|
|
6237
|
+
() => bindActionCreators(actions, store.dispatch),
|
|
6264
6238
|
[]
|
|
6265
6239
|
);
|
|
6266
|
-
let content = /* @__PURE__ */
|
|
6240
|
+
let content = /* @__PURE__ */ React19__default.createElement(
|
|
6267
6241
|
SettingsProvider,
|
|
6268
6242
|
{
|
|
6269
6243
|
actions: boundActions,
|
|
@@ -6275,7 +6249,7 @@ function ExplorerComponent(props) {
|
|
|
6275
6249
|
measuresActive,
|
|
6276
6250
|
toolbarConfig: props.toolbarConfig
|
|
6277
6251
|
},
|
|
6278
|
-
/* @__PURE__ */
|
|
6252
|
+
/* @__PURE__ */ React19__default.createElement(TranslationProvider, { defaultLocale: locale, translations: props.translations }, /* @__PURE__ */ React19__default.createElement(ExplorerTour, { tourConfig: { ...defaultTourConfig, ...tourConfig } }, /* @__PURE__ */ React19__default.createElement(
|
|
6279
6253
|
ExplorerContent,
|
|
6280
6254
|
{
|
|
6281
6255
|
defaultCube: props.defaultCube,
|
|
@@ -6292,8 +6266,8 @@ function ExplorerComponent(props) {
|
|
|
6292
6266
|
)))
|
|
6293
6267
|
);
|
|
6294
6268
|
if (withinMantineProvider) {
|
|
6295
|
-
content = /* @__PURE__ */
|
|
6296
|
-
|
|
6269
|
+
content = /* @__PURE__ */ React19__default.createElement(
|
|
6270
|
+
MantineProvider,
|
|
6297
6271
|
{
|
|
6298
6272
|
withNormalizeCSS: true,
|
|
6299
6273
|
theme: {
|
|
@@ -6329,20 +6303,20 @@ function ExplorerComponent(props) {
|
|
|
6329
6303
|
);
|
|
6330
6304
|
}
|
|
6331
6305
|
if (withinReduxProvider) {
|
|
6332
|
-
content = /* @__PURE__ */
|
|
6306
|
+
content = /* @__PURE__ */ React19__default.createElement(Provider$1, { store }, content);
|
|
6333
6307
|
}
|
|
6334
6308
|
return content;
|
|
6335
6309
|
}
|
|
6336
6310
|
ExplorerComponent.displayName = "TesseractExplorer";
|
|
6337
6311
|
|
|
6338
6312
|
// src/vizbuilder/index.ts
|
|
6339
|
-
|
|
6313
|
+
init_esm_shims();
|
|
6340
6314
|
|
|
6341
6315
|
// src/vizbuilder/components/VizbuilderView.tsx
|
|
6342
|
-
|
|
6316
|
+
init_esm_shims();
|
|
6343
6317
|
|
|
6344
6318
|
// src/vizbuilder/tooling/columns.ts
|
|
6345
|
-
|
|
6319
|
+
init_esm_shims();
|
|
6346
6320
|
function buildColumn(cube, name4, columns) {
|
|
6347
6321
|
const nameWithoutID = name4.replace(/\sID$/, "");
|
|
6348
6322
|
const nameWithID = `${nameWithoutID} ID`;
|
|
@@ -6397,10 +6371,10 @@ function getColumnEntity(column) {
|
|
|
6397
6371
|
}
|
|
6398
6372
|
|
|
6399
6373
|
// src/vizbuilder/components/Vizbuilder.tsx
|
|
6400
|
-
|
|
6374
|
+
init_esm_shims();
|
|
6401
6375
|
|
|
6402
6376
|
// node_modules/clsx/dist/clsx.m.js
|
|
6403
|
-
|
|
6377
|
+
init_esm_shims();
|
|
6404
6378
|
function r(e) {
|
|
6405
6379
|
var t, f, n = "";
|
|
6406
6380
|
if ("string" == typeof e || "number" == typeof e) n += e;
|
|
@@ -6415,25 +6389,25 @@ function clsx() {
|
|
|
6415
6389
|
var clsx_m_default = clsx;
|
|
6416
6390
|
|
|
6417
6391
|
// src/vizbuilder/components/ChartCard.tsx
|
|
6418
|
-
|
|
6392
|
+
init_esm_shims();
|
|
6419
6393
|
|
|
6420
6394
|
// node_modules/d3plus-export/es/index.js
|
|
6421
|
-
|
|
6395
|
+
init_esm_shims();
|
|
6422
6396
|
|
|
6423
6397
|
// node_modules/d3plus-export/es/src/saveElement.js
|
|
6424
|
-
|
|
6398
|
+
init_esm_shims();
|
|
6425
6399
|
|
|
6426
6400
|
// node_modules/html-to-image/es/index.js
|
|
6427
|
-
|
|
6401
|
+
init_esm_shims();
|
|
6428
6402
|
|
|
6429
6403
|
// node_modules/html-to-image/es/clone-node.js
|
|
6430
|
-
|
|
6404
|
+
init_esm_shims();
|
|
6431
6405
|
|
|
6432
6406
|
// node_modules/html-to-image/es/clone-pseudos.js
|
|
6433
|
-
|
|
6407
|
+
init_esm_shims();
|
|
6434
6408
|
|
|
6435
6409
|
// node_modules/html-to-image/es/util.js
|
|
6436
|
-
|
|
6410
|
+
init_esm_shims();
|
|
6437
6411
|
function resolveUrl(url, baseUrl) {
|
|
6438
6412
|
if (url.match(/^[a-z]+:\/\//i)) {
|
|
6439
6413
|
return url;
|
|
@@ -6625,7 +6599,7 @@ function clonePseudoElements(nativeNode, clonedNode) {
|
|
|
6625
6599
|
}
|
|
6626
6600
|
|
|
6627
6601
|
// node_modules/html-to-image/es/mimes.js
|
|
6628
|
-
|
|
6602
|
+
init_esm_shims();
|
|
6629
6603
|
var WOFF = "application/font-woff";
|
|
6630
6604
|
var JPEG = "image/jpeg";
|
|
6631
6605
|
var mimes = {
|
|
@@ -6651,7 +6625,7 @@ function getMimeType(url) {
|
|
|
6651
6625
|
}
|
|
6652
6626
|
|
|
6653
6627
|
// node_modules/html-to-image/es/dataurl.js
|
|
6654
|
-
|
|
6628
|
+
init_esm_shims();
|
|
6655
6629
|
function getContentFromDataUrl(dataURL) {
|
|
6656
6630
|
return dataURL.split(/,/)[1];
|
|
6657
6631
|
}
|
|
@@ -6884,10 +6858,10 @@ async function cloneNode(node, options, isRoot) {
|
|
|
6884
6858
|
}
|
|
6885
6859
|
|
|
6886
6860
|
// node_modules/html-to-image/es/embed-images.js
|
|
6887
|
-
|
|
6861
|
+
init_esm_shims();
|
|
6888
6862
|
|
|
6889
6863
|
// node_modules/html-to-image/es/embed-resources.js
|
|
6890
|
-
|
|
6864
|
+
init_esm_shims();
|
|
6891
6865
|
var URL_REGEX = /url\((['"]?)([^'"]+?)\1\)/g;
|
|
6892
6866
|
var URL_WITH_FORMAT_REGEX = /url\([^)]+\)\s*format\((["']?)([^"']+)\1\)/g;
|
|
6893
6867
|
var FONT_SRC_REGEX = /src:\s*(?:url\([^)]+\)\s*format\([^)]+\)[,;]\s*)+/g;
|
|
@@ -6999,7 +6973,7 @@ async function embedImages(clonedNode, options) {
|
|
|
6999
6973
|
}
|
|
7000
6974
|
|
|
7001
6975
|
// node_modules/html-to-image/es/apply-style.js
|
|
7002
|
-
|
|
6976
|
+
init_esm_shims();
|
|
7003
6977
|
function applyStyle(node, options) {
|
|
7004
6978
|
const { style } = node;
|
|
7005
6979
|
if (options.backgroundColor) {
|
|
@@ -7021,7 +6995,7 @@ function applyStyle(node, options) {
|
|
|
7021
6995
|
}
|
|
7022
6996
|
|
|
7023
6997
|
// node_modules/html-to-image/es/embed-webfonts.js
|
|
7024
|
-
|
|
6998
|
+
init_esm_shims();
|
|
7025
6999
|
var cssFetchCache = {};
|
|
7026
7000
|
async function fetchCSS(url) {
|
|
7027
7001
|
let cache2 = cssFetchCache[url];
|
|
@@ -7244,22 +7218,22 @@ function saveElement_default(elem) {
|
|
|
7244
7218
|
}
|
|
7245
7219
|
|
|
7246
7220
|
// src/vizbuilder/hooks/useD3plusConfig.ts
|
|
7247
|
-
|
|
7221
|
+
init_esm_shims();
|
|
7248
7222
|
|
|
7249
7223
|
// node_modules/lodash-es/lodash.js
|
|
7250
|
-
|
|
7224
|
+
init_esm_shims();
|
|
7251
7225
|
|
|
7252
7226
|
// node_modules/lodash-es/_baseGetTag.js
|
|
7253
|
-
|
|
7227
|
+
init_esm_shims();
|
|
7254
7228
|
|
|
7255
7229
|
// node_modules/lodash-es/_Symbol.js
|
|
7256
|
-
|
|
7230
|
+
init_esm_shims();
|
|
7257
7231
|
|
|
7258
7232
|
// node_modules/lodash-es/_root.js
|
|
7259
|
-
|
|
7233
|
+
init_esm_shims();
|
|
7260
7234
|
|
|
7261
7235
|
// node_modules/lodash-es/_freeGlobal.js
|
|
7262
|
-
|
|
7236
|
+
init_esm_shims();
|
|
7263
7237
|
var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
|
|
7264
7238
|
var freeGlobal_default = freeGlobal;
|
|
7265
7239
|
|
|
@@ -7273,7 +7247,7 @@ var Symbol2 = root_default.Symbol;
|
|
|
7273
7247
|
var Symbol_default = Symbol2;
|
|
7274
7248
|
|
|
7275
7249
|
// node_modules/lodash-es/_getRawTag.js
|
|
7276
|
-
|
|
7250
|
+
init_esm_shims();
|
|
7277
7251
|
var objectProto = Object.prototype;
|
|
7278
7252
|
var hasOwnProperty2 = objectProto.hasOwnProperty;
|
|
7279
7253
|
var nativeObjectToString = objectProto.toString;
|
|
@@ -7298,7 +7272,7 @@ function getRawTag(value) {
|
|
|
7298
7272
|
var getRawTag_default = getRawTag;
|
|
7299
7273
|
|
|
7300
7274
|
// node_modules/lodash-es/_objectToString.js
|
|
7301
|
-
|
|
7275
|
+
init_esm_shims();
|
|
7302
7276
|
var objectProto2 = Object.prototype;
|
|
7303
7277
|
var nativeObjectToString2 = objectProto2.toString;
|
|
7304
7278
|
function objectToString(value) {
|
|
@@ -7319,19 +7293,19 @@ function baseGetTag(value) {
|
|
|
7319
7293
|
var baseGetTag_default = baseGetTag;
|
|
7320
7294
|
|
|
7321
7295
|
// node_modules/lodash-es/isObjectLike.js
|
|
7322
|
-
|
|
7296
|
+
init_esm_shims();
|
|
7323
7297
|
function isObjectLike(value) {
|
|
7324
7298
|
return value != null && typeof value == "object";
|
|
7325
7299
|
}
|
|
7326
7300
|
var isObjectLike_default = isObjectLike;
|
|
7327
7301
|
|
|
7328
7302
|
// node_modules/lodash-es/isArray.js
|
|
7329
|
-
|
|
7303
|
+
init_esm_shims();
|
|
7330
7304
|
var isArray = Array.isArray;
|
|
7331
7305
|
var isArray_default = isArray;
|
|
7332
7306
|
|
|
7333
7307
|
// node_modules/lodash-es/isObject.js
|
|
7334
|
-
|
|
7308
|
+
init_esm_shims();
|
|
7335
7309
|
function isObject(value) {
|
|
7336
7310
|
var type = typeof value;
|
|
7337
7311
|
return value != null && (type == "object" || type == "function");
|
|
@@ -7339,20 +7313,20 @@ function isObject(value) {
|
|
|
7339
7313
|
var isObject_default = isObject;
|
|
7340
7314
|
|
|
7341
7315
|
// node_modules/lodash-es/identity.js
|
|
7342
|
-
|
|
7316
|
+
init_esm_shims();
|
|
7343
7317
|
function identity2(value) {
|
|
7344
7318
|
return value;
|
|
7345
7319
|
}
|
|
7346
7320
|
var identity_default = identity2;
|
|
7347
7321
|
|
|
7348
7322
|
// node_modules/lodash-es/_getNative.js
|
|
7349
|
-
|
|
7323
|
+
init_esm_shims();
|
|
7350
7324
|
|
|
7351
7325
|
// node_modules/lodash-es/_baseIsNative.js
|
|
7352
|
-
|
|
7326
|
+
init_esm_shims();
|
|
7353
7327
|
|
|
7354
7328
|
// node_modules/lodash-es/isFunction.js
|
|
7355
|
-
|
|
7329
|
+
init_esm_shims();
|
|
7356
7330
|
var asyncTag = "[object AsyncFunction]";
|
|
7357
7331
|
var funcTag = "[object Function]";
|
|
7358
7332
|
var genTag = "[object GeneratorFunction]";
|
|
@@ -7367,10 +7341,10 @@ function isFunction(value) {
|
|
|
7367
7341
|
var isFunction_default = isFunction;
|
|
7368
7342
|
|
|
7369
7343
|
// node_modules/lodash-es/_isMasked.js
|
|
7370
|
-
|
|
7344
|
+
init_esm_shims();
|
|
7371
7345
|
|
|
7372
7346
|
// node_modules/lodash-es/_coreJsData.js
|
|
7373
|
-
|
|
7347
|
+
init_esm_shims();
|
|
7374
7348
|
var coreJsData = root_default["__core-js_shared__"];
|
|
7375
7349
|
var coreJsData_default = coreJsData;
|
|
7376
7350
|
|
|
@@ -7385,7 +7359,7 @@ function isMasked(func) {
|
|
|
7385
7359
|
var isMasked_default = isMasked;
|
|
7386
7360
|
|
|
7387
7361
|
// node_modules/lodash-es/_toSource.js
|
|
7388
|
-
|
|
7362
|
+
init_esm_shims();
|
|
7389
7363
|
var funcProto = Function.prototype;
|
|
7390
7364
|
var funcToString = funcProto.toString;
|
|
7391
7365
|
function toSource(func) {
|
|
@@ -7423,7 +7397,7 @@ function baseIsNative(value) {
|
|
|
7423
7397
|
var baseIsNative_default = baseIsNative;
|
|
7424
7398
|
|
|
7425
7399
|
// node_modules/lodash-es/_getValue.js
|
|
7426
|
-
|
|
7400
|
+
init_esm_shims();
|
|
7427
7401
|
function getValue(object, key) {
|
|
7428
7402
|
return object == null ? void 0 : object[key];
|
|
7429
7403
|
}
|
|
@@ -7437,7 +7411,7 @@ function getNative(object, key) {
|
|
|
7437
7411
|
var getNative_default = getNative;
|
|
7438
7412
|
|
|
7439
7413
|
// node_modules/lodash-es/_apply.js
|
|
7440
|
-
|
|
7414
|
+
init_esm_shims();
|
|
7441
7415
|
function apply(func, thisArg, args) {
|
|
7442
7416
|
switch (args.length) {
|
|
7443
7417
|
case 0:
|
|
@@ -7454,7 +7428,7 @@ function apply(func, thisArg, args) {
|
|
|
7454
7428
|
var apply_default = apply;
|
|
7455
7429
|
|
|
7456
7430
|
// node_modules/lodash-es/_shortOut.js
|
|
7457
|
-
|
|
7431
|
+
init_esm_shims();
|
|
7458
7432
|
var HOT_COUNT = 800;
|
|
7459
7433
|
var HOT_SPAN = 16;
|
|
7460
7434
|
var nativeNow = Date.now;
|
|
@@ -7476,13 +7450,13 @@ function shortOut(func) {
|
|
|
7476
7450
|
var shortOut_default = shortOut;
|
|
7477
7451
|
|
|
7478
7452
|
// node_modules/lodash-es/_setToString.js
|
|
7479
|
-
|
|
7453
|
+
init_esm_shims();
|
|
7480
7454
|
|
|
7481
7455
|
// node_modules/lodash-es/_baseSetToString.js
|
|
7482
|
-
|
|
7456
|
+
init_esm_shims();
|
|
7483
7457
|
|
|
7484
7458
|
// node_modules/lodash-es/constant.js
|
|
7485
|
-
|
|
7459
|
+
init_esm_shims();
|
|
7486
7460
|
function constant(value) {
|
|
7487
7461
|
return function() {
|
|
7488
7462
|
return value;
|
|
@@ -7491,7 +7465,7 @@ function constant(value) {
|
|
|
7491
7465
|
var constant_default = constant;
|
|
7492
7466
|
|
|
7493
7467
|
// node_modules/lodash-es/_defineProperty.js
|
|
7494
|
-
|
|
7468
|
+
init_esm_shims();
|
|
7495
7469
|
var defineProperty = function() {
|
|
7496
7470
|
try {
|
|
7497
7471
|
var func = getNative_default(Object, "defineProperty");
|
|
@@ -7518,7 +7492,7 @@ var setToString = shortOut_default(baseSetToString_default);
|
|
|
7518
7492
|
var setToString_default = setToString;
|
|
7519
7493
|
|
|
7520
7494
|
// node_modules/lodash-es/_isIndex.js
|
|
7521
|
-
|
|
7495
|
+
init_esm_shims();
|
|
7522
7496
|
var MAX_SAFE_INTEGER = 9007199254740991;
|
|
7523
7497
|
var reIsUint = /^(?:0|[1-9]\d*)$/;
|
|
7524
7498
|
function isIndex(value, length) {
|
|
@@ -7529,13 +7503,13 @@ function isIndex(value, length) {
|
|
|
7529
7503
|
var isIndex_default = isIndex;
|
|
7530
7504
|
|
|
7531
7505
|
// node_modules/lodash-es/assign.js
|
|
7532
|
-
|
|
7506
|
+
init_esm_shims();
|
|
7533
7507
|
|
|
7534
7508
|
// node_modules/lodash-es/_assignValue.js
|
|
7535
|
-
|
|
7509
|
+
init_esm_shims();
|
|
7536
7510
|
|
|
7537
7511
|
// node_modules/lodash-es/_baseAssignValue.js
|
|
7538
|
-
|
|
7512
|
+
init_esm_shims();
|
|
7539
7513
|
function baseAssignValue(object, key, value) {
|
|
7540
7514
|
if (key == "__proto__" && defineProperty_default) {
|
|
7541
7515
|
defineProperty_default(object, key, {
|
|
@@ -7551,7 +7525,7 @@ function baseAssignValue(object, key, value) {
|
|
|
7551
7525
|
var baseAssignValue_default = baseAssignValue;
|
|
7552
7526
|
|
|
7553
7527
|
// node_modules/lodash-es/eq.js
|
|
7554
|
-
|
|
7528
|
+
init_esm_shims();
|
|
7555
7529
|
function eq(value, other) {
|
|
7556
7530
|
return value === other || value !== value && other !== other;
|
|
7557
7531
|
}
|
|
@@ -7569,7 +7543,7 @@ function assignValue(object, key, value) {
|
|
|
7569
7543
|
var assignValue_default = assignValue;
|
|
7570
7544
|
|
|
7571
7545
|
// node_modules/lodash-es/_copyObject.js
|
|
7572
|
-
|
|
7546
|
+
init_esm_shims();
|
|
7573
7547
|
function copyObject(source, props, object, customizer) {
|
|
7574
7548
|
var isNew = !object;
|
|
7575
7549
|
object || (object = {});
|
|
@@ -7591,13 +7565,13 @@ function copyObject(source, props, object, customizer) {
|
|
|
7591
7565
|
var copyObject_default = copyObject;
|
|
7592
7566
|
|
|
7593
7567
|
// node_modules/lodash-es/_createAssigner.js
|
|
7594
|
-
|
|
7568
|
+
init_esm_shims();
|
|
7595
7569
|
|
|
7596
7570
|
// node_modules/lodash-es/_baseRest.js
|
|
7597
|
-
|
|
7571
|
+
init_esm_shims();
|
|
7598
7572
|
|
|
7599
7573
|
// node_modules/lodash-es/_overRest.js
|
|
7600
|
-
|
|
7574
|
+
init_esm_shims();
|
|
7601
7575
|
var nativeMax = Math.max;
|
|
7602
7576
|
function overRest(func, start, transform) {
|
|
7603
7577
|
start = nativeMax(start === void 0 ? func.length - 1 : start, 0);
|
|
@@ -7624,13 +7598,13 @@ function baseRest(func, start) {
|
|
|
7624
7598
|
var baseRest_default = baseRest;
|
|
7625
7599
|
|
|
7626
7600
|
// node_modules/lodash-es/_isIterateeCall.js
|
|
7627
|
-
|
|
7601
|
+
init_esm_shims();
|
|
7628
7602
|
|
|
7629
7603
|
// node_modules/lodash-es/isArrayLike.js
|
|
7630
|
-
|
|
7604
|
+
init_esm_shims();
|
|
7631
7605
|
|
|
7632
7606
|
// node_modules/lodash-es/isLength.js
|
|
7633
|
-
|
|
7607
|
+
init_esm_shims();
|
|
7634
7608
|
var MAX_SAFE_INTEGER2 = 9007199254740991;
|
|
7635
7609
|
function isLength(value) {
|
|
7636
7610
|
return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER2;
|
|
@@ -7678,7 +7652,7 @@ function createAssigner(assigner) {
|
|
|
7678
7652
|
var createAssigner_default = createAssigner;
|
|
7679
7653
|
|
|
7680
7654
|
// node_modules/lodash-es/_isPrototype.js
|
|
7681
|
-
|
|
7655
|
+
init_esm_shims();
|
|
7682
7656
|
var objectProto5 = Object.prototype;
|
|
7683
7657
|
function isPrototype(value) {
|
|
7684
7658
|
var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto5;
|
|
@@ -7687,13 +7661,13 @@ function isPrototype(value) {
|
|
|
7687
7661
|
var isPrototype_default = isPrototype;
|
|
7688
7662
|
|
|
7689
7663
|
// node_modules/lodash-es/keys.js
|
|
7690
|
-
|
|
7664
|
+
init_esm_shims();
|
|
7691
7665
|
|
|
7692
7666
|
// node_modules/lodash-es/_arrayLikeKeys.js
|
|
7693
|
-
|
|
7667
|
+
init_esm_shims();
|
|
7694
7668
|
|
|
7695
7669
|
// node_modules/lodash-es/_baseTimes.js
|
|
7696
|
-
|
|
7670
|
+
init_esm_shims();
|
|
7697
7671
|
function baseTimes(n, iteratee) {
|
|
7698
7672
|
var index = -1, result = Array(n);
|
|
7699
7673
|
while (++index < n) {
|
|
@@ -7704,10 +7678,10 @@ function baseTimes(n, iteratee) {
|
|
|
7704
7678
|
var baseTimes_default = baseTimes;
|
|
7705
7679
|
|
|
7706
7680
|
// node_modules/lodash-es/isArguments.js
|
|
7707
|
-
|
|
7681
|
+
init_esm_shims();
|
|
7708
7682
|
|
|
7709
7683
|
// node_modules/lodash-es/_baseIsArguments.js
|
|
7710
|
-
|
|
7684
|
+
init_esm_shims();
|
|
7711
7685
|
var argsTag = "[object Arguments]";
|
|
7712
7686
|
function baseIsArguments(value) {
|
|
7713
7687
|
return isObjectLike_default(value) && baseGetTag_default(value) == argsTag;
|
|
@@ -7726,10 +7700,10 @@ var isArguments = baseIsArguments_default(/* @__PURE__ */ function() {
|
|
|
7726
7700
|
var isArguments_default = isArguments;
|
|
7727
7701
|
|
|
7728
7702
|
// node_modules/lodash-es/isBuffer.js
|
|
7729
|
-
|
|
7703
|
+
init_esm_shims();
|
|
7730
7704
|
|
|
7731
7705
|
// node_modules/lodash-es/stubFalse.js
|
|
7732
|
-
|
|
7706
|
+
init_esm_shims();
|
|
7733
7707
|
function stubFalse() {
|
|
7734
7708
|
return false;
|
|
7735
7709
|
}
|
|
@@ -7745,10 +7719,10 @@ var isBuffer = nativeIsBuffer || stubFalse_default;
|
|
|
7745
7719
|
var isBuffer_default = isBuffer;
|
|
7746
7720
|
|
|
7747
7721
|
// node_modules/lodash-es/isTypedArray.js
|
|
7748
|
-
|
|
7722
|
+
init_esm_shims();
|
|
7749
7723
|
|
|
7750
7724
|
// node_modules/lodash-es/_baseIsTypedArray.js
|
|
7751
|
-
|
|
7725
|
+
init_esm_shims();
|
|
7752
7726
|
var argsTag2 = "[object Arguments]";
|
|
7753
7727
|
var arrayTag = "[object Array]";
|
|
7754
7728
|
var boolTag = "[object Boolean]";
|
|
@@ -7782,7 +7756,7 @@ function baseIsTypedArray(value) {
|
|
|
7782
7756
|
var baseIsTypedArray_default = baseIsTypedArray;
|
|
7783
7757
|
|
|
7784
7758
|
// node_modules/lodash-es/_baseUnary.js
|
|
7785
|
-
|
|
7759
|
+
init_esm_shims();
|
|
7786
7760
|
function baseUnary(func) {
|
|
7787
7761
|
return function(value) {
|
|
7788
7762
|
return func(value);
|
|
@@ -7791,7 +7765,7 @@ function baseUnary(func) {
|
|
|
7791
7765
|
var baseUnary_default = baseUnary;
|
|
7792
7766
|
|
|
7793
7767
|
// node_modules/lodash-es/_nodeUtil.js
|
|
7794
|
-
|
|
7768
|
+
init_esm_shims();
|
|
7795
7769
|
var freeExports2 = typeof exports == "object" && exports && !exports.nodeType && exports;
|
|
7796
7770
|
var freeModule2 = freeExports2 && typeof module == "object" && module && !module.nodeType && module;
|
|
7797
7771
|
var moduleExports2 = freeModule2 && freeModule2.exports === freeExports2;
|
|
@@ -7832,13 +7806,13 @@ function arrayLikeKeys(value, inherited) {
|
|
|
7832
7806
|
var arrayLikeKeys_default = arrayLikeKeys;
|
|
7833
7807
|
|
|
7834
7808
|
// node_modules/lodash-es/_baseKeys.js
|
|
7835
|
-
|
|
7809
|
+
init_esm_shims();
|
|
7836
7810
|
|
|
7837
7811
|
// node_modules/lodash-es/_nativeKeys.js
|
|
7838
|
-
|
|
7812
|
+
init_esm_shims();
|
|
7839
7813
|
|
|
7840
7814
|
// node_modules/lodash-es/_overArg.js
|
|
7841
|
-
|
|
7815
|
+
init_esm_shims();
|
|
7842
7816
|
function overArg(func, transform) {
|
|
7843
7817
|
return function(arg) {
|
|
7844
7818
|
return func(transform(arg));
|
|
@@ -7891,27 +7865,27 @@ var assign_default = assign;
|
|
|
7891
7865
|
function useD3plusConfig(chart, params) {
|
|
7892
7866
|
const { fullMode, getMeasureConfig, showConfidenceInt, t } = params;
|
|
7893
7867
|
const { getFormatter } = useFormatter();
|
|
7894
|
-
return
|
|
7868
|
+
return useMemo(() => {
|
|
7895
7869
|
if (!chart) return [null, { data: "", locale: "" }];
|
|
7896
7870
|
const params2 = { fullMode, getFormatter, getMeasureConfig, showConfidenceInt, t };
|
|
7897
7871
|
const { locale } = chart.datagroup;
|
|
7898
7872
|
if (chart.type === "barchart") {
|
|
7899
|
-
return [
|
|
7873
|
+
return [BarChart, buildBarchartConfig(chart, params2)];
|
|
7900
7874
|
}
|
|
7901
7875
|
if (chart.type === "choropleth") {
|
|
7902
|
-
return [
|
|
7876
|
+
return [Geomap, buildChoroplethConfig(chart, params2)];
|
|
7903
7877
|
}
|
|
7904
7878
|
if (chart.type === "donut") {
|
|
7905
|
-
return [
|
|
7879
|
+
return [Donut, buildDonutConfig(chart, params2)];
|
|
7906
7880
|
}
|
|
7907
7881
|
if (chart.type === "lineplot") {
|
|
7908
|
-
return [
|
|
7882
|
+
return [LinePlot, buildLineplotConfig(chart, params2)];
|
|
7909
7883
|
}
|
|
7910
7884
|
if (chart.type === "stackedarea") {
|
|
7911
|
-
return [
|
|
7885
|
+
return [StackedArea, buildStackedareaConfig(chart, params2)];
|
|
7912
7886
|
}
|
|
7913
7887
|
if (chart.type === "treemap") {
|
|
7914
|
-
return [
|
|
7888
|
+
return [Treemap, buildTreemapConfig(chart, params2)];
|
|
7915
7889
|
}
|
|
7916
7890
|
return [null, { data: "", locale }];
|
|
7917
7891
|
}, [chart, fullMode, getFormatter, getMeasureConfig, showConfidenceInt, t]);
|
|
@@ -8215,8 +8189,8 @@ function _buildTranslatedList(t, list) {
|
|
|
8215
8189
|
}
|
|
8216
8190
|
|
|
8217
8191
|
// src/vizbuilder/components/ErrorBoundary.tsx
|
|
8218
|
-
|
|
8219
|
-
var ErrorBoundary = class extends
|
|
8192
|
+
init_esm_shims();
|
|
8193
|
+
var ErrorBoundary = class extends Component {
|
|
8220
8194
|
constructor() {
|
|
8221
8195
|
super(...arguments);
|
|
8222
8196
|
this.state = {
|
|
@@ -8233,10 +8207,10 @@ var ErrorBoundary = class extends React19.Component {
|
|
|
8233
8207
|
if (!message) {
|
|
8234
8208
|
return this.props.children;
|
|
8235
8209
|
}
|
|
8236
|
-
return /* @__PURE__ */
|
|
8210
|
+
return /* @__PURE__ */ React19__default.createElement(TranslationConsumer, null, ({ translate: t }) => {
|
|
8237
8211
|
const detailText = t("vizbuilder.error.detail");
|
|
8238
|
-
return /* @__PURE__ */
|
|
8239
|
-
|
|
8212
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
8213
|
+
Flex,
|
|
8240
8214
|
{
|
|
8241
8215
|
p: "xl",
|
|
8242
8216
|
align: "center",
|
|
@@ -8244,10 +8218,10 @@ var ErrorBoundary = class extends React19.Component {
|
|
|
8244
8218
|
direction: "column",
|
|
8245
8219
|
className: "chart-card error"
|
|
8246
8220
|
},
|
|
8247
|
-
/* @__PURE__ */
|
|
8248
|
-
detailText.length ? /* @__PURE__ */
|
|
8249
|
-
/* @__PURE__ */
|
|
8250
|
-
/* @__PURE__ */
|
|
8221
|
+
/* @__PURE__ */ React19__default.createElement(Title, { order: 3 }, t("vizbuilder.error.title")),
|
|
8222
|
+
detailText.length ? /* @__PURE__ */ React19__default.createElement(Text, null, detailText) : null,
|
|
8223
|
+
/* @__PURE__ */ React19__default.createElement(Text, null, t("vizbuilder.error.message", { message })),
|
|
8224
|
+
/* @__PURE__ */ React19__default.createElement(Group, { spacing: "xs", my: "sm" }, /* @__PURE__ */ React19__default.createElement(Button, { onClick: this.clearError, size: "xs", variant: "light" }, t("vizbuilder.action_retry")), /* @__PURE__ */ React19__default.createElement(IssueButton, { error: name4, message }))
|
|
8251
8225
|
);
|
|
8252
8226
|
});
|
|
8253
8227
|
}
|
|
@@ -8266,12 +8240,12 @@ function IssueButton(props) {
|
|
|
8266
8240
|
"**Detail of the issue:**\n"
|
|
8267
8241
|
].join("\n")
|
|
8268
8242
|
});
|
|
8269
|
-
return /* @__PURE__ */
|
|
8270
|
-
|
|
8243
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
8244
|
+
Button,
|
|
8271
8245
|
{
|
|
8272
8246
|
component: "a",
|
|
8273
8247
|
href: `https://github.com/Datawheel/vizbuilder/issues/new?${issueParams}`,
|
|
8274
|
-
leftIcon: /* @__PURE__ */
|
|
8248
|
+
leftIcon: /* @__PURE__ */ React19__default.createElement(IconBrandGithub, { size: "1rem" }),
|
|
8275
8249
|
rel: "noopener noreferrer",
|
|
8276
8250
|
role: "button",
|
|
8277
8251
|
size: "xs",
|
|
@@ -8285,31 +8259,31 @@ function IssueButton(props) {
|
|
|
8285
8259
|
|
|
8286
8260
|
// src/vizbuilder/components/ChartCard.tsx
|
|
8287
8261
|
var iconByFormat = {
|
|
8288
|
-
jpg:
|
|
8289
|
-
png:
|
|
8290
|
-
svg:
|
|
8262
|
+
jpg: IconPhotoDown,
|
|
8263
|
+
png: IconPhotoDown,
|
|
8264
|
+
svg: IconVectorTriangle
|
|
8291
8265
|
};
|
|
8292
8266
|
function ChartCard(props) {
|
|
8293
8267
|
const { chart, downloadFormats, isFullMode, onFocus, showConfidenceInt } = props;
|
|
8294
8268
|
const { translate } = useTranslation();
|
|
8295
|
-
const nodeRef =
|
|
8269
|
+
const nodeRef = useRef(null);
|
|
8296
8270
|
const [ChartComponent, config] = useD3plusConfig(chart, {
|
|
8297
8271
|
fullMode: !!isFullMode,
|
|
8298
8272
|
showConfidenceInt: !!showConfidenceInt,
|
|
8299
8273
|
getMeasureConfig: props.measureConfig,
|
|
8300
8274
|
t: translate
|
|
8301
8275
|
});
|
|
8302
|
-
const downloadButtons =
|
|
8276
|
+
const downloadButtons = useMemo(() => {
|
|
8303
8277
|
const filename = (typeof config.title === "function" ? config.title() : config.title || "").replace(/[^\w]/g, "_").replace(/[_]+/g, "_");
|
|
8304
8278
|
return asArray(downloadFormats).map((format2) => {
|
|
8305
8279
|
const formatLower = format2.toLowerCase();
|
|
8306
|
-
const Icon = iconByFormat[formatLower] ||
|
|
8307
|
-
return /* @__PURE__ */
|
|
8308
|
-
|
|
8280
|
+
const Icon = iconByFormat[formatLower] || IconDownload;
|
|
8281
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
8282
|
+
Button,
|
|
8309
8283
|
{
|
|
8310
8284
|
key: format2,
|
|
8311
8285
|
compact: true,
|
|
8312
|
-
leftIcon: /* @__PURE__ */
|
|
8286
|
+
leftIcon: /* @__PURE__ */ React19__default.createElement(Icon, { size: 16 }),
|
|
8313
8287
|
onClick: () => {
|
|
8314
8288
|
const { current: boxElement } = nodeRef;
|
|
8315
8289
|
const svgElement = boxElement == null ? void 0 : boxElement.querySelector("svg");
|
|
@@ -8328,13 +8302,13 @@ function ChartCard(props) {
|
|
|
8328
8302
|
);
|
|
8329
8303
|
});
|
|
8330
8304
|
}, [config, downloadFormats]);
|
|
8331
|
-
const focusButton =
|
|
8332
|
-
const Icon = isFullMode ?
|
|
8333
|
-
return /* @__PURE__ */
|
|
8334
|
-
|
|
8305
|
+
const focusButton = useMemo(() => {
|
|
8306
|
+
const Icon = isFullMode ? IconArrowsMinimize : IconArrowsMaximize;
|
|
8307
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
8308
|
+
Button,
|
|
8335
8309
|
{
|
|
8336
8310
|
compact: true,
|
|
8337
|
-
leftIcon: /* @__PURE__ */
|
|
8311
|
+
leftIcon: /* @__PURE__ */ React19__default.createElement(Icon, { size: 16 }),
|
|
8338
8312
|
onClick: onFocus,
|
|
8339
8313
|
size: "sm",
|
|
8340
8314
|
variant: isFullMode ? "filled" : "light"
|
|
@@ -8344,7 +8318,7 @@ function ChartCard(props) {
|
|
|
8344
8318
|
}, [isFullMode, translate, onFocus]);
|
|
8345
8319
|
const height = isFullMode ? "calc(100vh - 3rem)" : 300;
|
|
8346
8320
|
if (!ChartComponent) return null;
|
|
8347
|
-
return /* @__PURE__ */
|
|
8321
|
+
return /* @__PURE__ */ React19__default.createElement(Paper, { h: height, w: "100%", style: { overflow: "hidden" } }, /* @__PURE__ */ React19__default.createElement(ErrorBoundary, null, /* @__PURE__ */ React19__default.createElement(Stack, { spacing: 0, h: height, style: { position: "relative" }, w: "100%" }, /* @__PURE__ */ React19__default.createElement(Group, { position: "right", p: "xs", spacing: "xs", align: "center" }, downloadButtons, onFocus && focusButton), /* @__PURE__ */ React19__default.createElement(Box, { style: { flex: "1 1 auto" }, ref: nodeRef, pb: "xs", px: "xs" }, /* @__PURE__ */ React19__default.createElement(ChartComponent, { config })))));
|
|
8348
8322
|
}
|
|
8349
8323
|
var getBackground = (node) => {
|
|
8350
8324
|
if (node.nodeType !== Node.ELEMENT_NODE) return "white";
|
|
@@ -8354,17 +8328,17 @@ var getBackground = (node) => {
|
|
|
8354
8328
|
};
|
|
8355
8329
|
|
|
8356
8330
|
// src/vizbuilder/components/NonIdealState.tsx
|
|
8357
|
-
|
|
8331
|
+
init_esm_shims();
|
|
8358
8332
|
function NonIdealState2(props) {
|
|
8359
8333
|
const { status } = props;
|
|
8360
8334
|
const { translate: t } = useTranslation();
|
|
8361
|
-
const description =
|
|
8335
|
+
const description = useMemo(() => {
|
|
8362
8336
|
if (status === "loading") {
|
|
8363
|
-
return /* @__PURE__ */
|
|
8337
|
+
return /* @__PURE__ */ React19__default.createElement(Flex, { justify: "center", align: "center", direction: "column" }, /* @__PURE__ */ React19__default.createElement(Loader, { size: "xl" }), /* @__PURE__ */ React19__default.createElement(Title, { mt: "md", order: 4 }, t("vizbuilder.transient.title_loading")));
|
|
8364
8338
|
}
|
|
8365
|
-
return /* @__PURE__ */
|
|
8339
|
+
return /* @__PURE__ */ React19__default.createElement(Flex, { justify: "center", align: "center", direction: "column", w: "50%" }, /* @__PURE__ */ React19__default.createElement(IconCircleOff, { size: 92 }), /* @__PURE__ */ React19__default.createElement(Title, { mt: "md", mb: "md", order: 4 }, t("vizbuilder.transient.title_empty")), /* @__PURE__ */ React19__default.createElement(Text, null, t("vizbuilder.transient.description_empty")));
|
|
8366
8340
|
}, [status, t]);
|
|
8367
|
-
return /* @__PURE__ */
|
|
8341
|
+
return /* @__PURE__ */ React19__default.createElement(Center, { h: "100%" }, description);
|
|
8368
8342
|
}
|
|
8369
8343
|
|
|
8370
8344
|
// src/vizbuilder/components/Vizbuilder.tsx
|
|
@@ -8381,17 +8355,17 @@ function Vizbuilder(props) {
|
|
|
8381
8355
|
topojsonConfig,
|
|
8382
8356
|
userConfig
|
|
8383
8357
|
} = props;
|
|
8384
|
-
const [currentChart, setCurrentChart] =
|
|
8385
|
-
const getMeasureConfig =
|
|
8358
|
+
const [currentChart, setCurrentChart] = useState("");
|
|
8359
|
+
const getMeasureConfig = useMemo(() => {
|
|
8386
8360
|
const config = measureConfig || {};
|
|
8387
8361
|
return typeof config === "function" ? config : (item) => config[item.name];
|
|
8388
8362
|
}, [measureConfig]);
|
|
8389
|
-
const getTopojsonConfig =
|
|
8363
|
+
const getTopojsonConfig = useMemo(() => {
|
|
8390
8364
|
const config = topojsonConfig || {};
|
|
8391
8365
|
return typeof config === "function" ? config : (item) => config[item.name];
|
|
8392
8366
|
}, [topojsonConfig]);
|
|
8393
|
-
const charts =
|
|
8394
|
-
const charts2 =
|
|
8367
|
+
const charts = useMemo(() => {
|
|
8368
|
+
const charts2 = generateCharts(asArray(datasets), {
|
|
8395
8369
|
chartLimits,
|
|
8396
8370
|
chartTypes,
|
|
8397
8371
|
datacap,
|
|
@@ -8399,20 +8373,20 @@ function Vizbuilder(props) {
|
|
|
8399
8373
|
});
|
|
8400
8374
|
return Object.fromEntries(charts2.map((chart) => [chart.key, chart]));
|
|
8401
8375
|
}, [chartLimits, chartTypes, datacap, datasets, getTopojsonConfig]);
|
|
8402
|
-
const content =
|
|
8376
|
+
const content = useMemo(() => {
|
|
8403
8377
|
const Notice = nonIdealState || NonIdealState2;
|
|
8404
8378
|
const isLoading = asArray(datasets).some(
|
|
8405
8379
|
(dataset) => Object.keys(dataset.columns).length === 0
|
|
8406
8380
|
);
|
|
8407
8381
|
if (isLoading) {
|
|
8408
8382
|
console.debug("Loading datasets...", datasets);
|
|
8409
|
-
return /* @__PURE__ */
|
|
8383
|
+
return /* @__PURE__ */ React19__default.createElement(Notice, { status: "loading" });
|
|
8410
8384
|
}
|
|
8411
8385
|
const chartList = Object.values(charts);
|
|
8412
|
-
if (chartList.length === 0) return /* @__PURE__ */
|
|
8386
|
+
if (chartList.length === 0) return /* @__PURE__ */ React19__default.createElement(Notice, { status: "empty" });
|
|
8413
8387
|
const isSingleChart = chartList.length === 1;
|
|
8414
|
-
return /* @__PURE__ */
|
|
8415
|
-
|
|
8388
|
+
return /* @__PURE__ */ React19__default.createElement(ErrorBoundary, null, /* @__PURE__ */ React19__default.createElement(
|
|
8389
|
+
SimpleGrid,
|
|
8416
8390
|
{
|
|
8417
8391
|
breakpoints: [
|
|
8418
8392
|
{ minWidth: "xs", cols: 1 },
|
|
@@ -8422,7 +8396,7 @@ function Vizbuilder(props) {
|
|
|
8422
8396
|
],
|
|
8423
8397
|
className: clsx_m_default({ unique: isSingleChart })
|
|
8424
8398
|
},
|
|
8425
|
-
chartList.map((chart) => /* @__PURE__ */
|
|
8399
|
+
chartList.map((chart) => /* @__PURE__ */ React19__default.createElement(
|
|
8426
8400
|
ChartCard,
|
|
8427
8401
|
{
|
|
8428
8402
|
key: chart.key,
|
|
@@ -8444,10 +8418,10 @@ function Vizbuilder(props) {
|
|
|
8444
8418
|
showConfidenceInt,
|
|
8445
8419
|
userConfig
|
|
8446
8420
|
]);
|
|
8447
|
-
const focusContent =
|
|
8421
|
+
const focusContent = useMemo(() => {
|
|
8448
8422
|
const chart = charts[currentChart];
|
|
8449
8423
|
if (!chart) return null;
|
|
8450
|
-
return /* @__PURE__ */
|
|
8424
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
8451
8425
|
ChartCard,
|
|
8452
8426
|
{
|
|
8453
8427
|
key: `${chart.key}-focus`,
|
|
@@ -8468,11 +8442,11 @@ function Vizbuilder(props) {
|
|
|
8468
8442
|
showConfidenceInt,
|
|
8469
8443
|
userConfig
|
|
8470
8444
|
]);
|
|
8471
|
-
return /* @__PURE__ */
|
|
8472
|
-
|
|
8445
|
+
return /* @__PURE__ */ React19__default.createElement("div", { style: { height: "100%" }, className: clsx_m_default("vb-wrapper", props.className) }, props.customHeader, content, props.customFooter, /* @__PURE__ */ React19__default.createElement(
|
|
8446
|
+
Modal,
|
|
8473
8447
|
{
|
|
8474
8448
|
centered: true,
|
|
8475
|
-
onClose:
|
|
8449
|
+
onClose: useCallback(() => setCurrentChart(""), []),
|
|
8476
8450
|
opened: currentChart !== "",
|
|
8477
8451
|
padding: 0,
|
|
8478
8452
|
size: "calc(100vw - 3rem)",
|
|
@@ -8501,7 +8475,7 @@ var CHART_LIMITS = {
|
|
|
8501
8475
|
var DOWNLOAD_FORMATS = ["SVG", "PNG"];
|
|
8502
8476
|
function VizbuilderView(props) {
|
|
8503
8477
|
const { cube, params, result } = props;
|
|
8504
|
-
const dataset =
|
|
8478
|
+
const dataset = useMemo(() => {
|
|
8505
8479
|
const columns = Object.keys(result.types);
|
|
8506
8480
|
return {
|
|
8507
8481
|
columns: Object.fromEntries(
|
|
@@ -8511,7 +8485,7 @@ function VizbuilderView(props) {
|
|
|
8511
8485
|
locale: params.locale || "en"
|
|
8512
8486
|
};
|
|
8513
8487
|
}, [cube, result, params.locale]);
|
|
8514
|
-
return /* @__PURE__ */
|
|
8488
|
+
return /* @__PURE__ */ React19__default.createElement(
|
|
8515
8489
|
Vizbuilder,
|
|
8516
8490
|
{
|
|
8517
8491
|
datasets: dataset,
|
|
@@ -8537,17 +8511,4 @@ lodash-es/lodash.js:
|
|
|
8537
8511
|
*)
|
|
8538
8512
|
*/
|
|
8539
8513
|
|
|
8540
|
-
|
|
8541
|
-
exports.Explorer = ExplorerComponent;
|
|
8542
|
-
exports.PivotView = PivotView;
|
|
8543
|
-
exports.SettingsConsumer = SettingsConsumer;
|
|
8544
|
-
exports.TableView = TableView;
|
|
8545
|
-
exports.ToolbarButton = ToolbarButton;
|
|
8546
|
-
exports.TourStep = TourStep;
|
|
8547
|
-
exports.TranslationConsumer = TranslationConsumer;
|
|
8548
|
-
exports.VizbuilderView = VizbuilderView;
|
|
8549
|
-
exports.explorerReducer = reducer;
|
|
8550
|
-
exports.explorerThunkExtraArg = thunkExtraArg;
|
|
8551
|
-
exports.translationDict = defaultTranslation;
|
|
8552
|
-
exports.useSettings = useSettings;
|
|
8553
|
-
exports.useTranslation = useTranslation;
|
|
8514
|
+
export { DebugView, ExplorerComponent as Explorer, PivotView, SettingsConsumer, TableView, ToolbarButton, TourStep, TranslationConsumer, VizbuilderView, reducer as explorerReducer, thunkExtraArg as explorerThunkExtraArg, defaultTranslation as translationDict, useSettings, useTranslation };
|