@dexteel/mesf-core 7.11.0 → 7.11.1
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/.release-please-manifest.json +1 -1
- package/CHANGELOG.md +7 -0
- package/dist/MESFMain.d.ts +1 -1
- package/dist/components/navigation/Header.d.ts +1 -2
- package/dist/components/navigation/Navigation.d.ts +1 -2
- package/dist/index.d.ts +0 -1
- package/dist/index.esm.js +637 -3353
- package/dist/index.esm.js.map +1 -1
- package/dist/pages/trendings-v2/TrendingsPageV2.d.ts +2 -2
- package/dist/pages/trendings-v2/components/chart/components/TagFolderCustomNodeV2.d.ts +1 -1
- package/dist/pages/trendings-v2/components/chart/components/TagSearchInput.d.ts +1 -1
- package/dist/pages/trendings-v2/components/chart/components/TagsTreeModalV2.d.ts +1 -1
- package/dist/pages/{trendings/components/chart/components/modals/tagsTreeModal/ContextMenu → trendings-v2/components/chart/components/modals/tagsTreeModal}/ContextMenu.d.ts +1 -1
- package/dist/pages/{trendings → trendings-v2}/components/chart/components/modals/tagsTreeModal/CustomDragView.d.ts +1 -1
- package/dist/pages/{trendings/components/chart/components/modals/tagsTreeModal/ContextMenu/NewFolder/NewFolder.d.ts → trendings-v2/components/chart/components/modals/tagsTreeModal/NewFolderModal.d.ts} +1 -1
- package/dist/pages/{trendings/components/chart/components/modals/tagsTreeModal/ContextMenu/RemoveFolder/RemoveFolder.d.ts → trendings-v2/components/chart/components/modals/tagsTreeModal/RemoveFolderModal.d.ts} +1 -1
- package/dist/pages/trendings-v2/components/chart/context/TrendingContextV2.d.ts +1 -2
- package/dist/pages/trendings-v2/components/chart/hooks/useTagSearch.d.ts +1 -1
- package/dist/pages/trendings-v2/components/chart/models/TrendingModelsV2.d.ts +1 -0
- package/dist/pages/trendings-v2/components/chart/repository/TrendingRepositoryV2.d.ts +47 -1
- package/dist/pages/trendings-v2/components/chart/utils/buildTagsTree.d.ts +3 -0
- package/dist/pages/trendings-v2/components/chart/utils/calculateDateFromPeriod.d.ts +1 -1
- package/dist/pages/{trendings → trendings-v2}/components/chart/utils/dateNavigator.d.ts +1 -1
- package/package.json +1 -1
- package/dist/pages/trendings/TrendingsPage.d.ts +0 -3
- package/dist/pages/trendings/components/chart/DateComponent.d.ts +0 -6
- package/dist/pages/trendings/components/chart/TableComponent.d.ts +0 -14
- package/dist/pages/trendings/components/chart/Trending.d.ts +0 -9
- package/dist/pages/trendings/components/chart/components/CellComponent.d.ts +0 -11
- package/dist/pages/trendings/components/chart/components/ColorPicker.d.ts +0 -8
- package/dist/pages/trendings/components/chart/components/DraggableLineControl.d.ts +0 -11
- package/dist/pages/trendings/components/chart/components/modals/deleteViewModal/DeleteViewModal.d.ts +0 -9
- package/dist/pages/trendings/components/chart/components/modals/editViewModal/EditViewModal.d.ts +0 -9
- package/dist/pages/trendings/components/chart/components/modals/loadView/LoadViewModal.d.ts +0 -7
- package/dist/pages/trendings/components/chart/components/modals/saveAsView/SaveAsViewModal.d.ts +0 -7
- package/dist/pages/trendings/components/chart/components/modals/saveView/SaveViewModal.d.ts +0 -7
- package/dist/pages/trendings/components/chart/components/modals/tagsTreeModal/TagFolderCustomNode.d.ts +0 -20
- package/dist/pages/trendings/components/chart/components/modals/tagsTreeModal/TagSelectionModal.d.ts +0 -9
- package/dist/pages/trendings/components/chart/components/modals/tagsTreeModal/TagsTreeModal.d.ts +0 -9
- package/dist/pages/trendings/components/chart/context/TrendingContext.d.ts +0 -120
- package/dist/pages/trendings/components/chart/customOptionsComponent.d.ts +0 -10
- package/dist/pages/trendings/components/chart/hooks/useGetVerticalLinePlugin.d.ts +0 -2
- package/dist/pages/trendings/components/chart/hooks/useTagsDataTable.d.ts +0 -24
- package/dist/pages/trendings/components/chart/hooks/useUpdateCursorData.d.ts +0 -2
- package/dist/pages/trendings/components/chart/hooks/useXAxisDatePlugin.d.ts +0 -2
- package/dist/pages/trendings/components/chart/hooks/useYAxisPlugin.d.ts +0 -2
- package/dist/pages/trendings/components/chart/models/TagsTree.model.d.ts +0 -12
- package/dist/pages/trendings/components/chart/models/TrendingModels.d.ts +0 -65
- package/dist/pages/trendings/components/chart/models/scopes.model.d.ts +0 -1
- package/dist/pages/trendings/components/chart/repository/TrendingRepository.d.ts +0 -48
- package/dist/pages/trendings/components/chart/sections/chart/hooks/useChartOptions.d.ts +0 -105
- package/dist/pages/trendings/components/chart/sections/header.d.ts +0 -8
- package/dist/pages/trendings/components/chart/sections/trending-chart.d.ts +0 -12
- package/dist/pages/trendings/components/chart/utils/areRangeSimilar.d.ts +0 -2
- package/dist/pages/trendings/components/chart/utils/buildTagsTree.d.ts +0 -4
- package/dist/pages/trendings/components/chart/utils/calculateScales.d.ts +0 -4
- package/dist/pages/trendings/components/chart/utils/formatDateTimeToString.d.ts +0 -4
- package/dist/pages/trendings/components/chart/utils/formatTimeDiffWithMs.d.ts +0 -1
- package/dist/pages/trendings/components/chart/utils/timeDifference.d.ts +0 -1
- package/dist/pages/trendings/hooks/useTrendingQueries.d.ts +0 -15
- package/dist/pages/trendings/index.d.ts +0 -3
- package/dist/pages/trendings/reducers/trendings.reducer.d.ts +0 -115
- /package/dist/pages/{trendings → trendings-v2}/components/chart/utils/tagColors.d.ts +0 -0
package/dist/index.esm.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { HubConnectionBuilder, LogLevel } from '@microsoft/signalr';
|
|
2
2
|
export * from '@microsoft/signalr';
|
|
3
3
|
export { LicenseManager } from 'ag-grid-enterprise';
|
|
4
|
-
import { styled, DialogTitle as DialogTitle$1, DialogContent as DialogContent$1, DialogActions as DialogActions$1, Grid2, Button, Box, MenuItem, ListItemIcon, createTheme, TextField, Alert as Alert$2, useTheme, InputAdornment, Popover, MenuList, ListItemText, alpha, Dialog as Dialog$1, Paper, List, ListItem, Chip, SvgIcon, Typography as Typography$1, Checkbox, IconButton as IconButton$1, CircularProgress, FormControl, FormHelperText, FormControlLabel, Snackbar, DialogContentText, Badge, InputLabel, Select, Input, Divider, Card, CardContent, CardActions, Collapse, Tooltip, CssBaseline, AppBar, Toolbar, Container, Menu, Switch, Hidden, Drawer, Grid, Accordion, AccordionSummary, AccordionDetails, Tabs, Tab, Autocomplete as Autocomplete$1, useMediaQuery, ListSubheader, ListItemButton,
|
|
4
|
+
import { styled, DialogTitle as DialogTitle$1, DialogContent as DialogContent$1, DialogActions as DialogActions$1, Grid2, Button, Box, MenuItem, ListItemIcon, createTheme, TextField, Alert as Alert$2, useTheme, InputAdornment, Popover, MenuList, ListItemText, alpha, Dialog as Dialog$1, Paper, List, ListItem, Chip, SvgIcon, Typography as Typography$1, Checkbox, IconButton as IconButton$1, CircularProgress, FormControl, FormHelperText, FormControlLabel, Snackbar, DialogContentText, Badge, InputLabel, Select, Input, Divider, Card, CardContent, CardActions, Collapse, Tooltip, CssBaseline, AppBar, Toolbar, Container, Menu, Switch, Hidden, Drawer, Grid, Accordion, AccordionSummary, AccordionDetails, Tabs, Tab, Autocomplete as Autocomplete$1, useMediaQuery, ListSubheader, ListItemButton, StyledEngineProvider, ThemeProvider, ListItemSecondaryAction } from '@mui/material';
|
|
5
5
|
import { useMutation, useQuery, useQueryClient, QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
6
6
|
import * as React from 'react';
|
|
7
7
|
import React__default, { createContext, useContext, useRef, useState, useEffect, useCallback, useMemo, Component, lazy, Suspense } from 'react';
|
|
8
8
|
import SearchIcon from '@mui/icons-material/Search';
|
|
9
9
|
import { AgGridReact } from 'ag-grid-react';
|
|
10
10
|
import { createPart, themeMaterial, provideGlobalGridOptions } from 'ag-grid-community';
|
|
11
|
-
import { values, get, isEmpty, isNil
|
|
11
|
+
import { values, get, isEmpty, isNil } from 'lodash-es';
|
|
12
12
|
import { useForm, Controller } from 'react-hook-form';
|
|
13
13
|
import { isAncestor, Tree, DndProvider as DndProvider$1 } from '@minoru/react-dnd-treeview';
|
|
14
14
|
import { Alert as Alert$4, AlertTitle, Autocomplete } from '@mui/lab';
|
|
@@ -54,7 +54,6 @@ import { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment';
|
|
|
54
54
|
import { DndProvider } from 'react-dnd';
|
|
55
55
|
import { HTML5Backend } from 'react-dnd-html5-backend';
|
|
56
56
|
import MenuIcon from '@mui/icons-material/Menu';
|
|
57
|
-
import ShowChartIcon from '@mui/icons-material/ShowChart';
|
|
58
57
|
import { DateTimePicker as DateTimePicker$1 } from '@mui/x-date-pickers/DateTimePicker';
|
|
59
58
|
import ClearAllIcon from '@mui/icons-material/ClearAll';
|
|
60
59
|
import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
|
|
@@ -63,14 +62,6 @@ import { Group as Group$1, Panel, Separator, useDefaultLayout } from 'react-resi
|
|
|
63
62
|
import { LocalizationProvider as LocalizationProvider$1 } from '@mui/x-date-pickers/LocalizationProvider';
|
|
64
63
|
import InsertChartIcon from '@mui/icons-material/InsertChart';
|
|
65
64
|
import ReactECharts from 'echarts-for-react';
|
|
66
|
-
import { _adapters, Chart, CategoryScale, LinearScale, PointElement, LineElement, Title, Tooltip as Tooltip$1, Legend, TimeScale } from 'chart.js';
|
|
67
|
-
import zoomPlugin from 'chartjs-plugin-zoom';
|
|
68
|
-
import SaveIcon from '@mui/icons-material/Save';
|
|
69
|
-
import Button$1 from '@mui/material/Button';
|
|
70
|
-
import Popover$1 from '@mui/material/Popover';
|
|
71
|
-
import CreateIcon from '@mui/icons-material/Create';
|
|
72
|
-
import ArrowDropDownIcon$1 from '@mui/icons-material/ArrowDropDown';
|
|
73
|
-
import { Line } from 'react-chartjs-2';
|
|
74
65
|
import MarkdownIt from 'markdown-it';
|
|
75
66
|
import MdEditor, { PluginComponent } from 'react-markdown-editor-lite';
|
|
76
67
|
import 'react-markdown-editor-lite/lib/index.css';
|
|
@@ -291,8 +282,8 @@ var HelmetDexteel = function (_a) {
|
|
|
291
282
|
|
|
292
283
|
var e=[],t=[];function n(n,r){if(n&&"undefined"!=typeof document){var a,s=!0===r.prepend?"prepend":"append",d=!0===r.singleTag,i="string"==typeof r.container?document.querySelector(r.container):document.getElementsByTagName("head")[0];if(d){var u=e.indexOf(i);-1===u&&(u=e.push(i)-1,t[u]={}),a=t[u]&&t[u][s]?t[u][s]:t[u][s]=c();}else a=c();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n));}function c(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),r.attributes)for(var t=Object.keys(r.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],r.attributes[t[n]]);var a="prepend"===s?"afterbegin":"beforeend";return i.insertAdjacentElement(a,e),e}}
|
|
293
284
|
|
|
294
|
-
var css
|
|
295
|
-
n(css
|
|
285
|
+
var css = ".lds-ring {\n\tdisplay: inline-block;\n\tposition: relative;\n\twidth: 80px;\n\theight: 80px;\n}\n.lds-ring div {\n\tbox-sizing: border-box;\n\tdisplay: block;\n\tposition: absolute;\n\twidth: 64px;\n\theight: 64px;\n\tmargin: 8px;\n\tborder: 5px solid rgb(63, 81, 181);\n\tborder-radius: 50%;\n\tanimation: lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n\tborder-color: rgb(63, 81, 181) transparent transparent transparent;\n}\n.lds-ring div:nth-child(1) {\n\tanimation-delay: -0.45s;\n}\n.lds-ring div:nth-child(2) {\n\tanimation-delay: -0.3s;\n}\n.lds-ring div:nth-child(3) {\n\tanimation-delay: -0.15s;\n}\n@keyframes lds-ring {\n\t0% {\n\t\ttransform: rotate(0deg);\n\t}\n\t100% {\n\t\ttransform: rotate(360deg);\n\t}\n}\n";
|
|
286
|
+
n(css,{});
|
|
296
287
|
|
|
297
288
|
var LazyLoading = function () {
|
|
298
289
|
return (React__default.createElement(React__default.Fragment, null,
|
|
@@ -3330,7 +3321,7 @@ var useAssetOptionsFunctions = function (_a) {
|
|
|
3330
3321
|
};
|
|
3331
3322
|
};
|
|
3332
3323
|
|
|
3333
|
-
var customStyles$
|
|
3324
|
+
var customStyles$1 = "\n ul, ol {\n list-style-type: none;\n margin: 0;\n padding: 0;\n }\n";
|
|
3334
3325
|
var CustomNode = function (_a) {
|
|
3335
3326
|
var openAssets = _a.openAssets, setOpenAssets = _a.setOpenAssets, setContextMenuOver = _a.setContextMenuOver, onDoubleClick = _a.onDoubleClick; _a.testIdPrefix; var isSelected = _a.isSelected, props = __rest(_a, ["openAssets", "setOpenAssets", "setContextMenuOver", "onDoubleClick", "testIdPrefix", "isSelected"]);
|
|
3336
3327
|
var _c = props.node, id = _c.id, droppable = _c.droppable, data = _c.data;
|
|
@@ -3384,7 +3375,7 @@ var CustomNode = function (_a) {
|
|
|
3384
3375
|
listStyleType: "none",
|
|
3385
3376
|
backgroundColor: isSelected ? "#e8f0fe" : "",
|
|
3386
3377
|
}, style: { paddingInlineStart: indent }, "data-node-id": id, onClick: handleClick, title: "".concat(props.node.id, " - ").concat(props.node.text) },
|
|
3387
|
-
React__default.createElement("style", null, customStyles$
|
|
3378
|
+
React__default.createElement("style", null, customStyles$1),
|
|
3388
3379
|
props.node.droppable ? (React__default.createElement(Box, { sx: {
|
|
3389
3380
|
alignItems: "center",
|
|
3390
3381
|
cursor: "pointer",
|
|
@@ -10569,11 +10560,11 @@ var AreaSelector$1 = lazy(function () {
|
|
|
10569
10560
|
default: mod.AreaSelector,
|
|
10570
10561
|
}); });
|
|
10571
10562
|
});
|
|
10572
|
-
function Header
|
|
10573
|
-
var _b = _a.showAreaSelector, showAreaSelector = _b === void 0 ? false : _b, _c = _a.
|
|
10574
|
-
var
|
|
10563
|
+
function Header(_a) {
|
|
10564
|
+
var _b = _a.showAreaSelector, showAreaSelector = _b === void 0 ? false : _b, _c = _a.showTrendingsV2Icon, showTrendingsV2Icon = _c === void 0 ? true : _c, _d = _a.navbarTitle, navbarTitle = _d === void 0 ? "MESF" : _d;
|
|
10565
|
+
var _e = useState(""), error = _e[0], setError = _e[1];
|
|
10575
10566
|
var CustomNavbar = useContext(NavbarContext);
|
|
10576
|
-
var
|
|
10567
|
+
var _f = useState(false), drawerOpen = _f[0], setDrawerOpen = _f[1];
|
|
10577
10568
|
var hasPermissionTo = useHasPermission();
|
|
10578
10569
|
useUserContext().state.userLogged;
|
|
10579
10570
|
var handleDrawerToggle = function () {
|
|
@@ -10631,9 +10622,6 @@ function Header$1(_a) {
|
|
|
10631
10622
|
alignItems: "center",
|
|
10632
10623
|
color: "white",
|
|
10633
10624
|
} },
|
|
10634
|
-
showTrendingsIcon && (React__default.createElement(Tooltip, { title: "Trendings", placement: "bottom", arrow: true, enterDelay: 1500 },
|
|
10635
|
-
React__default.createElement(IconButton$1, { color: "inherit", component: Link, to: "/trendings" },
|
|
10636
|
-
React__default.createElement(ShowChartIcon, null)))),
|
|
10637
10625
|
showTrendingsV2Icon && (React__default.createElement(Tooltip, { title: "Trendings V2 (ECharts)", placement: "bottom", arrow: true, enterDelay: 1500 },
|
|
10638
10626
|
React__default.createElement(IconButton$1, { color: "inherit", component: Link, to: "/trendings-v2" },
|
|
10639
10627
|
React__default.createElement(Timeline, null)))),
|
|
@@ -11672,45 +11660,7 @@ var Configuration = function () {
|
|
|
11672
11660
|
React__default.createElement(route.main, null)) })); })))));
|
|
11673
11661
|
};
|
|
11674
11662
|
|
|
11675
|
-
var
|
|
11676
|
-
"#00AA00", // green
|
|
11677
|
-
"#0000FF", // blue
|
|
11678
|
-
"#FF0000", // red
|
|
11679
|
-
"#9C27B0", // purple
|
|
11680
|
-
"#FFA500", // orange
|
|
11681
|
-
"#397234", // forest green
|
|
11682
|
-
"#283F23", // dark olive
|
|
11683
|
-
"#3F2617", // dark brown
|
|
11684
|
-
"#0B0F08", // charcoal black
|
|
11685
|
-
"#889c2dff", // olive green
|
|
11686
|
-
"#B78449", // tan brown
|
|
11687
|
-
"#5D9F96", // teal
|
|
11688
|
-
"#1d5e74ff", // dark teal
|
|
11689
|
-
"#FA7305", // bright orange
|
|
11690
|
-
"#072684", // navy blue
|
|
11691
|
-
"#269473ff", // emerald green
|
|
11692
|
-
"#5d74b9ff", // slate blue
|
|
11693
|
-
"#0C8EF4", // sky blue
|
|
11694
|
-
"#8d481cff", // rust brown
|
|
11695
|
-
"#2B384C", // dark slate
|
|
11696
|
-
];
|
|
11697
|
-
var availableColors = __spreadArray([], tagColors$1, true);
|
|
11698
|
-
var lastColor = null;
|
|
11699
|
-
var getRandomColor = function () {
|
|
11700
|
-
if (availableColors.length === 0) {
|
|
11701
|
-
availableColors = __spreadArray([], tagColors$1, true);
|
|
11702
|
-
if (lastColor && availableColors.length > 1) {
|
|
11703
|
-
availableColors.splice(availableColors.indexOf(lastColor), 1);
|
|
11704
|
-
}
|
|
11705
|
-
}
|
|
11706
|
-
var randomIndex = Math.floor(Math.random() * availableColors.length);
|
|
11707
|
-
var color = availableColors[randomIndex];
|
|
11708
|
-
availableColors.splice(randomIndex, 1);
|
|
11709
|
-
lastColor = color;
|
|
11710
|
-
return color;
|
|
11711
|
-
};
|
|
11712
|
-
|
|
11713
|
-
var TrendingContext$1 = createContext(undefined);
|
|
11663
|
+
var TrendingContext = createContext(undefined);
|
|
11714
11664
|
var getDefaultTimeScope = function () {
|
|
11715
11665
|
var end = new Date();
|
|
11716
11666
|
var start = new Date(end.getTime() - 8 * 60 * 60 * 1000); // 8 hours ago
|
|
@@ -11861,10 +11811,10 @@ var TrendingProviderV2 = function (_a) {
|
|
|
11861
11811
|
state: state,
|
|
11862
11812
|
actions: actions,
|
|
11863
11813
|
}); }, [state, actions]);
|
|
11864
|
-
return (React__default.createElement(TrendingContext
|
|
11814
|
+
return (React__default.createElement(TrendingContext.Provider, { value: value }, children));
|
|
11865
11815
|
};
|
|
11866
11816
|
var useTrendingContextV2 = function () {
|
|
11867
|
-
var context = useContext(TrendingContext
|
|
11817
|
+
var context = useContext(TrendingContext);
|
|
11868
11818
|
if (!context) {
|
|
11869
11819
|
throw new Error("useTrendingContextV2 must be used within TrendingProviderV2");
|
|
11870
11820
|
}
|
|
@@ -12166,39 +12116,6 @@ var deleteAllViewTagsFromView = function (ViewId) { return __awaiter(void 0, voi
|
|
|
12166
12116
|
});
|
|
12167
12117
|
}); };
|
|
12168
12118
|
|
|
12169
|
-
var dateNavigator = function (startDate, endDate, scope, operator, current) {
|
|
12170
|
-
if (current === void 0) { current = false; }
|
|
12171
|
-
var newStartDate;
|
|
12172
|
-
var newEndDate = endDate;
|
|
12173
|
-
if (current) {
|
|
12174
|
-
newEndDate = new Date();
|
|
12175
|
-
if (scope === "custom") {
|
|
12176
|
-
// If scope is custom, keep the same startDate
|
|
12177
|
-
newStartDate = startDate;
|
|
12178
|
-
}
|
|
12179
|
-
else {
|
|
12180
|
-
var _a = scope.split(" "), quantity = _a[0], duration = _a[1];
|
|
12181
|
-
newStartDate = moment$f(newEndDate)
|
|
12182
|
-
.subtract(quantity, duration[0])
|
|
12183
|
-
.toDate();
|
|
12184
|
-
}
|
|
12185
|
-
}
|
|
12186
|
-
else {
|
|
12187
|
-
if (scope === "custom") {
|
|
12188
|
-
var durationInMs = moment$f(endDate).diff(moment$f(startDate));
|
|
12189
|
-
newStartDate = moment$f(startDate)[operator](durationInMs).toDate();
|
|
12190
|
-
}
|
|
12191
|
-
else {
|
|
12192
|
-
var _b = scope.split(" "), quantity = _b[0], duration = _b[1];
|
|
12193
|
-
newStartDate = moment$f(startDate)[operator](quantity, duration[0])
|
|
12194
|
-
.toDate();
|
|
12195
|
-
newEndDate = moment$f(endDate)[operator](quantity, duration[0])
|
|
12196
|
-
.toDate();
|
|
12197
|
-
}
|
|
12198
|
-
}
|
|
12199
|
-
return { newStartDate: newStartDate, newEndDate: newEndDate };
|
|
12200
|
-
};
|
|
12201
|
-
|
|
12202
12119
|
var ConfirmationDialogRaw = function (_a) {
|
|
12203
12120
|
var title = _a.title, message = _a.message, open = _a.open, onClose = _a.onClose, suffixTitle = _a.suffixTitle, other = __rest(_a, ["title", "message", "open", "onClose", "suffixTitle"]);
|
|
12204
12121
|
var handleCancel = function () {
|
|
@@ -12604,6 +12521,39 @@ var calculateCounterpartDate = function (changedDate, changedField, scope) {
|
|
|
12604
12521
|
}
|
|
12605
12522
|
};
|
|
12606
12523
|
|
|
12524
|
+
var dateNavigator = function (startDate, endDate, scope, operator, current) {
|
|
12525
|
+
if (current === void 0) { current = false; }
|
|
12526
|
+
var newStartDate;
|
|
12527
|
+
var newEndDate = endDate;
|
|
12528
|
+
if (current) {
|
|
12529
|
+
newEndDate = new Date();
|
|
12530
|
+
if (scope === "custom") {
|
|
12531
|
+
// If scope is custom, keep the same startDate
|
|
12532
|
+
newStartDate = startDate;
|
|
12533
|
+
}
|
|
12534
|
+
else {
|
|
12535
|
+
var _a = scope.split(" "), quantity = _a[0], duration = _a[1];
|
|
12536
|
+
newStartDate = moment$f(newEndDate)
|
|
12537
|
+
.subtract(quantity, duration[0])
|
|
12538
|
+
.toDate();
|
|
12539
|
+
}
|
|
12540
|
+
}
|
|
12541
|
+
else {
|
|
12542
|
+
if (scope === "custom") {
|
|
12543
|
+
var durationInMs = moment$f(endDate).diff(moment$f(startDate));
|
|
12544
|
+
newStartDate = moment$f(startDate)[operator](durationInMs).toDate();
|
|
12545
|
+
}
|
|
12546
|
+
else {
|
|
12547
|
+
var _b = scope.split(" "), quantity = _b[0], duration = _b[1];
|
|
12548
|
+
newStartDate = moment$f(startDate)[operator](quantity, duration[0])
|
|
12549
|
+
.toDate();
|
|
12550
|
+
newEndDate = moment$f(endDate)[operator](quantity, duration[0])
|
|
12551
|
+
.toDate();
|
|
12552
|
+
}
|
|
12553
|
+
}
|
|
12554
|
+
return { newStartDate: newStartDate, newEndDate: newEndDate };
|
|
12555
|
+
};
|
|
12556
|
+
|
|
12607
12557
|
var HeaderSectionV2 = React__default.memo(function (_a) {
|
|
12608
12558
|
var autoRefresh = _a.autoRefresh, setAutoRefresh = _a.setAutoRefresh, setChartOptions = _a.setChartOptions, chartInstance = _a.chartInstance;
|
|
12609
12559
|
var queryClient = useQueryClient();
|
|
@@ -12934,7 +12884,7 @@ var HeaderSectionV2 = React__default.memo(function (_a) {
|
|
|
12934
12884
|
});
|
|
12935
12885
|
HeaderSectionV2.displayName = "HeaderSectionV2";
|
|
12936
12886
|
|
|
12937
|
-
var tagColors = [
|
|
12887
|
+
var tagColors$1 = [
|
|
12938
12888
|
"#5eaf60", // light green
|
|
12939
12889
|
"green", // green
|
|
12940
12890
|
"#62bd9c", // turquoise green
|
|
@@ -13003,7 +12953,7 @@ var ColorPickerV2 = function (_a) {
|
|
|
13003
12953
|
flexWrap: "wrap",
|
|
13004
12954
|
padding: "10px",
|
|
13005
12955
|
maxWidth: "165px",
|
|
13006
|
-
} }, tagColors.map(function (tagColor) { return (React__default.createElement(ColorSwatch, { key: tagColor, color: tagColor, onSelect: handleColorSelect })); })))));
|
|
12956
|
+
} }, tagColors$1.map(function (tagColor) { return (React__default.createElement(ColorSwatch, { key: tagColor, color: tagColor, onSelect: handleColorSelect })); })))));
|
|
13007
12957
|
};
|
|
13008
12958
|
|
|
13009
12959
|
var NotificationSnackBar = function (_a) {
|
|
@@ -13022,274 +12972,88 @@ var NotificationSnackBar = function (_a) {
|
|
|
13022
12972
|
React__default.createElement(Alert$3, { elevation: 6, variant: "filled", severity: severity, onClose: handleClose }, message)));
|
|
13023
12973
|
};
|
|
13024
12974
|
|
|
13025
|
-
|
|
13026
|
-
var
|
|
13027
|
-
|
|
13028
|
-
|
|
13029
|
-
|
|
13030
|
-
|
|
13031
|
-
|
|
13032
|
-
|
|
13033
|
-
|
|
13034
|
-
}
|
|
12975
|
+
function buildTagsTreeV2(data) {
|
|
12976
|
+
var tagsForTree = [];
|
|
12977
|
+
data.forEach(function (el) {
|
|
12978
|
+
var tagForTree = {
|
|
12979
|
+
id: el.TagId,
|
|
12980
|
+
parent: el.ParentTagFolderId || 0,
|
|
12981
|
+
text: el.TagName,
|
|
12982
|
+
data: el,
|
|
12983
|
+
droppable: el.TagTypeCode === "F",
|
|
12984
|
+
};
|
|
12985
|
+
return tagsForTree.push(tagForTree);
|
|
13035
12986
|
});
|
|
13036
|
-
|
|
13037
|
-
|
|
12987
|
+
return tagsForTree;
|
|
12988
|
+
}
|
|
12989
|
+
|
|
12990
|
+
var customStyles = "\n ul, ol {\n list-style-type: none;\n margin: 0;\n padding: 0;\n }\n";
|
|
12991
|
+
var TagFolderCustomNodeV2 = function (_a) {
|
|
12992
|
+
var _b, _c, _d, _e, _f, _g, _h, _j;
|
|
12993
|
+
var node = _a.node, _k = _a.options, depth = _k.depth, isOpen = _k.isOpen, onToggle = _k.onToggle, containerRef = _k.containerRef, options = _a.options, setOpenTagFolders = _a.setOpenTagFolders, openTagFolders = _a.openTagFolders, handleSelect = _a.handleSelect, setContextMenuOver = _a.setContextMenuOver, isSelected = _a.isSelected;
|
|
12994
|
+
var onClickHandler = function () {
|
|
13038
12995
|
var _a;
|
|
13039
|
-
|
|
13040
|
-
|
|
13041
|
-
|
|
13042
|
-
|
|
13043
|
-
|
|
13044
|
-
|
|
13045
|
-
? Number(tagNodeSelectedInTree.id)
|
|
13046
|
-
: parentId;
|
|
13047
|
-
setIsLoading(true);
|
|
13048
|
-
if (!name) return [3 /*break*/, 2];
|
|
13049
|
-
return [4 /*yield*/, updateTagFolder.mutate({
|
|
13050
|
-
tagFolderId: null,
|
|
13051
|
-
parentTagFolderId: parentTagId,
|
|
13052
|
-
tagFolderName: name,
|
|
13053
|
-
isActive: true,
|
|
13054
|
-
})];
|
|
13055
|
-
case 1:
|
|
13056
|
-
_b.sent();
|
|
13057
|
-
_b.label = 2;
|
|
13058
|
-
case 2:
|
|
13059
|
-
handleClose(true);
|
|
13060
|
-
setName("");
|
|
13061
|
-
setIsLoading(false);
|
|
13062
|
-
return [2 /*return*/];
|
|
12996
|
+
var _b;
|
|
12997
|
+
if (options.hasChild || ((_b = node.data) === null || _b === void 0 ? void 0 : _b.TagTypeCode) === "F") {
|
|
12998
|
+
if (openTagFolders[node.id]) {
|
|
12999
|
+
var newOpenTagFolders = __assign({}, openTagFolders);
|
|
13000
|
+
delete newOpenTagFolders[node.id];
|
|
13001
|
+
setOpenTagFolders(newOpenTagFolders);
|
|
13063
13002
|
}
|
|
13064
|
-
|
|
13065
|
-
|
|
13066
|
-
|
|
13067
|
-
|
|
13068
|
-
|
|
13069
|
-
|
|
13070
|
-
|
|
13071
|
-
|
|
13072
|
-
|
|
13073
|
-
|
|
13074
|
-
|
|
13075
|
-
|
|
13076
|
-
|
|
13077
|
-
|
|
13078
|
-
|
|
13079
|
-
|
|
13080
|
-
|
|
13081
|
-
|
|
13082
|
-
|
|
13083
|
-
|
|
13084
|
-
|
|
13085
|
-
|
|
13086
|
-
|
|
13087
|
-
|
|
13088
|
-
|
|
13089
|
-
|
|
13090
|
-
|
|
13091
|
-
|
|
13092
|
-
|
|
13093
|
-
|
|
13094
|
-
|
|
13095
|
-
|
|
13096
|
-
|
|
13097
|
-
|
|
13098
|
-
|
|
13099
|
-
|
|
13100
|
-
|
|
13101
|
-
|
|
13102
|
-
|
|
13103
|
-
|
|
13104
|
-
|
|
13105
|
-
|
|
13106
|
-
|
|
13107
|
-
|
|
13108
|
-
|
|
13109
|
-
|
|
13110
|
-
|
|
13111
|
-
|
|
13112
|
-
|
|
13113
|
-
|
|
13114
|
-
|
|
13115
|
-
|
|
13116
|
-
|
|
13117
|
-
|
|
13118
|
-
_a.sent();
|
|
13119
|
-
_a.label = 4;
|
|
13120
|
-
case 4:
|
|
13121
|
-
handleClose(true);
|
|
13122
|
-
setIsLoading(false);
|
|
13123
|
-
return [2 /*return*/];
|
|
13124
|
-
}
|
|
13125
|
-
});
|
|
13126
|
-
}); };
|
|
13127
|
-
return (React__default.createElement(React__default.Fragment, null,
|
|
13128
|
-
React__default.createElement(MesfModal, { open: open, handleClose: function () { return handleClose(false); }, maxWidth: "lg", "aria-labelledby": "modal-modal-title", "aria-describedby": "modal-modal-description", title: "Remove Folder" },
|
|
13129
|
-
React__default.createElement(MesfModal.Content, null,
|
|
13130
|
-
React__default.createElement(Box, null,
|
|
13131
|
-
React__default.createElement(Typography$1, null,
|
|
13132
|
-
"Are you sure you want to remove",
|
|
13133
|
-
" ",
|
|
13134
|
-
React__default.createElement("strong", null, tagNodeSelectedInTree === null || tagNodeSelectedInTree === void 0 ? void 0 : tagNodeSelectedInTree.text),
|
|
13135
|
-
" folder?"))),
|
|
13136
|
-
React__default.createElement(MesfModal.Actions, null,
|
|
13137
|
-
React__default.createElement("div", null,
|
|
13138
|
-
React__default.createElement(Button, { color: "secondary", variant: "outlined", onClick: function () { return handleClose(false); } }, "Cancel")),
|
|
13139
|
-
React__default.createElement("div", null,
|
|
13140
|
-
React__default.createElement(ButtonWithLoading, { isLoading: isLoading, onClick: onSubmit, color: "primary", variant: "contained" }, "Remove")))),
|
|
13141
|
-
React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(""); } })));
|
|
13142
|
-
};
|
|
13143
|
-
|
|
13144
|
-
var ContextMenu = function (_a) {
|
|
13145
|
-
var _b;
|
|
13146
|
-
var isOpen = _a.isOpen, anchorPoint = _a.anchorPoint, tagNodeSelectedInTree = _a.tagNodeSelectedInTree, getTagsTreeData = _a.getTagsTreeData, setShowContextMenu = _a.setShowContextMenu;
|
|
13147
|
-
var _c = useState(false), showNewTagModal = _c[0], setShowNewTagModal = _c[1];
|
|
13148
|
-
var _d = useState(false), showRemoveTagModal = _d[0], setShowRemoveTagModal = _d[1];
|
|
13149
|
-
var isFolder = ((_b = tagNodeSelectedInTree === null || tagNodeSelectedInTree === void 0 ? void 0 : tagNodeSelectedInTree.data) === null || _b === void 0 ? void 0 : _b.TagTypeCode) === "F";
|
|
13150
|
-
return (React__default.createElement(React__default.Fragment, null,
|
|
13151
|
-
isOpen && anchorPoint ? (React__default.createElement("ul", { style: {
|
|
13152
|
-
top: anchorPoint.y,
|
|
13153
|
-
left: anchorPoint.x,
|
|
13154
|
-
fontSize: "0.875rem",
|
|
13155
|
-
backgroundColor: "#fff",
|
|
13156
|
-
borderRadius: "2px",
|
|
13157
|
-
padding: "5px 10px;",
|
|
13158
|
-
width: "140px",
|
|
13159
|
-
height: "auto",
|
|
13160
|
-
margin: "0",
|
|
13161
|
-
position: "fixed",
|
|
13162
|
-
boxShadow: "0 0 20px 0 #ccc",
|
|
13163
|
-
display: "flex",
|
|
13164
|
-
flexDirection: "column",
|
|
13165
|
-
} },
|
|
13166
|
-
React__default.createElement(MenuItem, { style: { width: "100%", justifyContent: "left" }, onClick: function () { return setShowNewTagModal(true); } }, "New Folder"),
|
|
13167
|
-
tagNodeSelectedInTree && isFolder && (React__default.createElement(MenuItem, { style: { width: "100%", justifyContent: "left" }, onClick: function () { return setShowRemoveTagModal(true); } }, "Remove Folder")))) : null,
|
|
13168
|
-
React__default.createElement(NewFolderModal, { open: showNewTagModal, handleClose: function (shouldUpdate) {
|
|
13169
|
-
if (shouldUpdate) {
|
|
13170
|
-
getTagsTreeData();
|
|
13171
|
-
}
|
|
13172
|
-
setShowContextMenu(false);
|
|
13173
|
-
setShowNewTagModal(false);
|
|
13174
|
-
}, tagNodeSelectedInTree: tagNodeSelectedInTree }),
|
|
13175
|
-
React__default.createElement(RemoveFolderModal, { open: showRemoveTagModal, handleClose: function (shouldUpdate) {
|
|
13176
|
-
if (shouldUpdate) {
|
|
13177
|
-
getTagsTreeData();
|
|
13178
|
-
}
|
|
13179
|
-
setShowContextMenu(false);
|
|
13180
|
-
setShowRemoveTagModal(false);
|
|
13181
|
-
}, tagNodeSelectedInTree: tagNodeSelectedInTree })));
|
|
13182
|
-
};
|
|
13183
|
-
|
|
13184
|
-
var CustomDragPreview = function (props) {
|
|
13185
|
-
var _a, _b, _c;
|
|
13186
|
-
var item = props.monitorProps.item;
|
|
13187
|
-
var isFolder = ((_a = item.data) === null || _a === void 0 ? void 0 : _a.TagTypeCode) === "F" ? true : false;
|
|
13188
|
-
return (React__default.createElement(Box, { sx: {
|
|
13189
|
-
alignItems: "center",
|
|
13190
|
-
backgroundColor: "#1967d2",
|
|
13191
|
-
borderRadius: "4px",
|
|
13192
|
-
boxShadow: " 0 12px 24px -6px rgba(0, 0, 0, .25); 0 0 0 1px rgba(0, 0, 0, .08)",
|
|
13193
|
-
color: "#fff",
|
|
13194
|
-
display: "inline-grid",
|
|
13195
|
-
fontSize: "0.875rem",
|
|
13196
|
-
gap: "8px",
|
|
13197
|
-
gridTemplateColumns: "auto auto",
|
|
13198
|
-
padding: "4px 8px",
|
|
13199
|
-
pointerEvents: "none",
|
|
13200
|
-
} },
|
|
13201
|
-
React__default.createElement(Box, { sx: {
|
|
13202
|
-
alignItems: "center",
|
|
13203
|
-
display: "flex",
|
|
13204
|
-
} }, isFolder ? React__default.createElement(FolderIcon, null) : React__default.createElement(InsertChartIcon, { fontSize: "small" })),
|
|
13205
|
-
React__default.createElement(Box, { sx: {
|
|
13206
|
-
alignItems: "center",
|
|
13207
|
-
display: "flex",
|
|
13208
|
-
} }, ((_b = item.data) === null || _b === void 0 ? void 0 : _b.Alias) || ((_c = item.data) === null || _c === void 0 ? void 0 : _c.TagName))));
|
|
13209
|
-
};
|
|
13210
|
-
|
|
13211
|
-
function buildTagsTreeV2(data) {
|
|
13212
|
-
var tagsForTree = [];
|
|
13213
|
-
data.forEach(function (el) {
|
|
13214
|
-
var tagForTree = {
|
|
13215
|
-
id: el.TagId,
|
|
13216
|
-
parent: el.ParentTagId || 0,
|
|
13217
|
-
text: el.TagName,
|
|
13218
|
-
data: el,
|
|
13219
|
-
droppable: el.TagTypeCode === "F",
|
|
13220
|
-
};
|
|
13221
|
-
return tagsForTree.push(tagForTree);
|
|
13222
|
-
});
|
|
13223
|
-
return tagsForTree;
|
|
13224
|
-
}
|
|
13225
|
-
|
|
13226
|
-
var customStyles$1 = "\n ul, ol {\n list-style-type: none;\n margin: 0;\n padding: 0;\n }\n";
|
|
13227
|
-
var TagFolderCustomNodeV2 = function (_a) {
|
|
13228
|
-
var _b, _c, _d, _e, _f, _g, _h, _j;
|
|
13229
|
-
var node = _a.node, _k = _a.options, depth = _k.depth, isOpen = _k.isOpen, onToggle = _k.onToggle, containerRef = _k.containerRef, options = _a.options, setOpenTagFolders = _a.setOpenTagFolders, openTagFolders = _a.openTagFolders, handleSelect = _a.handleSelect, setContextMenuOver = _a.setContextMenuOver, isSelected = _a.isSelected;
|
|
13230
|
-
var onClickHandler = function () {
|
|
13231
|
-
var _a;
|
|
13232
|
-
var _b;
|
|
13233
|
-
if (options.hasChild || ((_b = node.data) === null || _b === void 0 ? void 0 : _b.TagTypeCode) === "F") {
|
|
13234
|
-
if (openTagFolders[node.id]) {
|
|
13235
|
-
var newOpenTagFolders = __assign({}, openTagFolders);
|
|
13236
|
-
delete newOpenTagFolders[node.id];
|
|
13237
|
-
setOpenTagFolders(newOpenTagFolders);
|
|
13238
|
-
}
|
|
13239
|
-
else {
|
|
13240
|
-
setOpenTagFolders(__assign(__assign({}, openTagFolders), (_a = {}, _a[node.id] = node.id, _a)));
|
|
13241
|
-
}
|
|
13242
|
-
onToggle();
|
|
13243
|
-
return;
|
|
13244
|
-
}
|
|
13245
|
-
if (!options.hasChild) {
|
|
13246
|
-
handleSelect(node);
|
|
13247
|
-
}
|
|
13248
|
-
};
|
|
13249
|
-
var handleContextMenu = useCallback(function (ev) {
|
|
13250
|
-
ev.stopPropagation();
|
|
13251
|
-
ev.preventDefault();
|
|
13252
|
-
setContextMenuOver(node, ev);
|
|
13253
|
-
}, [node.id, setContextMenuOver]);
|
|
13254
|
-
useEffect(function () {
|
|
13255
|
-
var _a;
|
|
13256
|
-
(_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener("contextmenu", handleContextMenu);
|
|
13257
|
-
return function () {
|
|
13258
|
-
var _a;
|
|
13259
|
-
(_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener("contextmenu", handleContextMenu);
|
|
13260
|
-
};
|
|
13261
|
-
}, []);
|
|
13262
|
-
return (React__default.createElement(Box, { "data-node-id": node.id, onClick: onClickHandler, sx: {
|
|
13263
|
-
paddingInlineStart: depth * 2,
|
|
13264
|
-
cursor: "pointer",
|
|
13265
|
-
alignItems: "center",
|
|
13266
|
-
display: "flex",
|
|
13267
|
-
height: "32px",
|
|
13268
|
-
backgroundColor: isSelected ? "#e8f0fe" : "",
|
|
13269
|
-
"&:hover": {
|
|
13270
|
-
backgroundColor: "#f2f2f2",
|
|
13271
|
-
},
|
|
13272
|
-
} },
|
|
13273
|
-
React__default.createElement("style", null, customStyles$1),
|
|
13274
|
-
React__default.createElement(React__default.Fragment, null,
|
|
13275
|
-
options.hasChild ? (React__default.createElement("div", null, isOpen ? React__default.createElement(ArrowDropDownIcon, null) : React__default.createElement(ArrowRight, null))) : null,
|
|
13276
|
-
React__default.createElement("div", null, options.hasChild || ((_b = node.data) === null || _b === void 0 ? void 0 : _b.TagTypeCode) === "F" ? (React__default.createElement(Folder, null)) : (React__default.createElement(InsertChart, { fontSize: "small" })))),
|
|
13277
|
-
((_c = node.data) === null || _c === void 0 ? void 0 : _c.TagName) && (React__default.createElement(React__default.Fragment, null,
|
|
13278
|
-
((_d = node.data) === null || _d === void 0 ? void 0 : _d.TagTypeCode) && ((_e = node.data) === null || _e === void 0 ? void 0 : _e.TagTypeCode) !== "F" && (React__default.createElement(Box, { sx: {
|
|
13279
|
-
width: "20px",
|
|
13280
|
-
height: "20px",
|
|
13281
|
-
color: "white",
|
|
13282
|
-
display: "flex",
|
|
13283
|
-
justifyContent: "center",
|
|
13284
|
-
alignItems: "center",
|
|
13285
|
-
fontSize: "10px",
|
|
13286
|
-
fontWeight: "bold",
|
|
13287
|
-
borderRadius: "3px",
|
|
13288
|
-
border: "1px solid rgba(0, 0, 0, 0.2)",
|
|
13289
|
-
backgroundColor: ((_f = node.data) === null || _f === void 0 ? void 0 : _f.TagTypeCode) === "A" ? "#AD48C4" : "#C46F48",
|
|
13290
|
-
} }, (_g = node.data) === null || _g === void 0 ? void 0 : _g.TagTypeCode)),
|
|
13291
|
-
React__default.createElement(Tooltip, { title: node.data.TagName, placement: "top", arrow: true },
|
|
13292
|
-
React__default.createElement(Typography$1, { variant: "body2" }, ((_h = node.data) === null || _h === void 0 ? void 0 : _h.Alias) || ((_j = node.data) === null || _j === void 0 ? void 0 : _j.TagName)))))));
|
|
13003
|
+
else {
|
|
13004
|
+
setOpenTagFolders(__assign(__assign({}, openTagFolders), (_a = {}, _a[node.id] = node.id, _a)));
|
|
13005
|
+
}
|
|
13006
|
+
onToggle();
|
|
13007
|
+
return;
|
|
13008
|
+
}
|
|
13009
|
+
if (!options.hasChild) {
|
|
13010
|
+
handleSelect(node);
|
|
13011
|
+
}
|
|
13012
|
+
};
|
|
13013
|
+
var handleContextMenu = useCallback(function (ev) {
|
|
13014
|
+
ev.stopPropagation();
|
|
13015
|
+
ev.preventDefault();
|
|
13016
|
+
setContextMenuOver(node, ev);
|
|
13017
|
+
}, [node.id, setContextMenuOver]);
|
|
13018
|
+
useEffect(function () {
|
|
13019
|
+
var _a;
|
|
13020
|
+
(_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener("contextmenu", handleContextMenu);
|
|
13021
|
+
return function () {
|
|
13022
|
+
var _a;
|
|
13023
|
+
(_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener("contextmenu", handleContextMenu);
|
|
13024
|
+
};
|
|
13025
|
+
}, []);
|
|
13026
|
+
return (React__default.createElement(Box, { "data-node-id": node.id, onClick: onClickHandler, sx: {
|
|
13027
|
+
paddingInlineStart: depth * 2,
|
|
13028
|
+
cursor: "pointer",
|
|
13029
|
+
alignItems: "center",
|
|
13030
|
+
display: "flex",
|
|
13031
|
+
height: "32px",
|
|
13032
|
+
backgroundColor: isSelected ? "#e8f0fe" : "",
|
|
13033
|
+
"&:hover": {
|
|
13034
|
+
backgroundColor: "#f2f2f2",
|
|
13035
|
+
},
|
|
13036
|
+
} },
|
|
13037
|
+
React__default.createElement("style", null, customStyles),
|
|
13038
|
+
React__default.createElement(React__default.Fragment, null,
|
|
13039
|
+
options.hasChild ? (React__default.createElement("div", null, isOpen ? React__default.createElement(ArrowDropDownIcon, null) : React__default.createElement(ArrowRight, null))) : null,
|
|
13040
|
+
React__default.createElement("div", null, options.hasChild || ((_b = node.data) === null || _b === void 0 ? void 0 : _b.TagTypeCode) === "F" ? (React__default.createElement(Folder, null)) : (React__default.createElement(InsertChart, { fontSize: "small" })))),
|
|
13041
|
+
((_c = node.data) === null || _c === void 0 ? void 0 : _c.TagName) && (React__default.createElement(React__default.Fragment, null,
|
|
13042
|
+
((_d = node.data) === null || _d === void 0 ? void 0 : _d.TagTypeCode) && ((_e = node.data) === null || _e === void 0 ? void 0 : _e.TagTypeCode) !== "F" && (React__default.createElement(Box, { sx: {
|
|
13043
|
+
width: "20px",
|
|
13044
|
+
height: "20px",
|
|
13045
|
+
color: "white",
|
|
13046
|
+
display: "flex",
|
|
13047
|
+
justifyContent: "center",
|
|
13048
|
+
alignItems: "center",
|
|
13049
|
+
fontSize: "10px",
|
|
13050
|
+
fontWeight: "bold",
|
|
13051
|
+
borderRadius: "3px",
|
|
13052
|
+
border: "1px solid rgba(0, 0, 0, 0.2)",
|
|
13053
|
+
backgroundColor: ((_f = node.data) === null || _f === void 0 ? void 0 : _f.TagTypeCode) === "A" ? "#AD48C4" : "#C46F48",
|
|
13054
|
+
} }, (_g = node.data) === null || _g === void 0 ? void 0 : _g.TagTypeCode)),
|
|
13055
|
+
React__default.createElement(Tooltip, { title: node.data.TagName, placement: "top", arrow: true },
|
|
13056
|
+
React__default.createElement(Typography$1, { variant: "body2" }, ((_h = node.data) === null || _h === void 0 ? void 0 : _h.Alias) || ((_j = node.data) === null || _j === void 0 ? void 0 : _j.TagName)))))));
|
|
13293
13057
|
};
|
|
13294
13058
|
|
|
13295
13059
|
var useTagSearch = function (_a) {
|
|
@@ -13528,70 +13292,256 @@ var TagSearchInput = function (_a) {
|
|
|
13528
13292
|
} }))); })))));
|
|
13529
13293
|
};
|
|
13530
13294
|
|
|
13531
|
-
|
|
13532
|
-
var
|
|
13533
|
-
|
|
13534
|
-
queryKey: ["tagsTree-v2"],
|
|
13535
|
-
queryFn: function () { return getTagsTree(); },
|
|
13536
|
-
enabled: false, // Only fetch when explicitly called
|
|
13537
|
-
});
|
|
13538
|
-
};
|
|
13539
|
-
var TagsTreeModalV2 = function (_a) {
|
|
13540
|
-
var open = _a.open, handleClose = _a.handleClose, onTagSelect = _a.onTagSelect;
|
|
13541
|
-
var _b = useState(false), isLoading = _b[0], setIsLoading = _b[1];
|
|
13295
|
+
var NewFolderModal = function (_a) {
|
|
13296
|
+
var open = _a.open, handleClose = _a.handleClose, tagNodeSelectedInTree = _a.tagNodeSelectedInTree;
|
|
13297
|
+
var _b = useState(), name = _b[0], setName = _b[1];
|
|
13542
13298
|
var _c = useState(""), error = _c[0], setError = _c[1];
|
|
13543
|
-
var _d = useState(
|
|
13544
|
-
var _e = useState([]), tagsTreeData = _e[0], setTagsTreeData = _e[1];
|
|
13545
|
-
var _f = useState(null), tagNodeSelectedInTree = _f[0], setTagNodeSelectedInTree = _f[1];
|
|
13546
|
-
var _g = useState(null), anchorPoint = _g[0], setAnchorPoint = _g[1];
|
|
13547
|
-
var _h = useState(false), showContextMenu = _h[0], setShowContextMenu = _h[1];
|
|
13548
|
-
var backendOffset = 1000000;
|
|
13549
|
-
var _j = useState({}), openTagFolders = _j[0], setOpenTagFolders = _j[1];
|
|
13550
|
-
var _k = useState([]), selectedNodes = _k[0], setSelectedNodes = _k[1];
|
|
13551
|
-
var handleContextMenu = function (data, e) {
|
|
13552
|
-
e.preventDefault();
|
|
13553
|
-
var top = e.clientY;
|
|
13554
|
-
var left = e.clientX;
|
|
13555
|
-
setAnchorPoint({ x: left, y: top });
|
|
13556
|
-
setSelectedNodes([data]);
|
|
13557
|
-
setShowContextMenu(true);
|
|
13558
|
-
var selectedNode = tagsTreeData.find(function (node) { var _a; return ((_a = node.data) === null || _a === void 0 ? void 0 : _a.TagId) === data.id; });
|
|
13559
|
-
if (selectedNode) {
|
|
13560
|
-
setTagNodeSelectedInTree(selectedNode);
|
|
13561
|
-
}
|
|
13562
|
-
};
|
|
13563
|
-
var _l = useSearchTagsTree$1(), tagsTree = _l.data, tagsTreeLoading = _l.isLoading, tagsTreeIsError = _l.isError, tagsTreeError = _l.error, tagsTreeIsSuccess = _l.isSuccess, tagsTreeIsFetched = _l.isFetched, refetch = _l.refetch;
|
|
13299
|
+
var _d = useState(false), isLoading = _d[0], setIsLoading = _d[1];
|
|
13564
13300
|
var updateTagFolder = useMutation({
|
|
13565
|
-
mutationFn:
|
|
13566
|
-
var tagFolderId = _a.tagFolderId, parentTagFolderId = _a.parentTagFolderId, tagFolderName = _a.tagFolderName, isActive = _a.isActive;
|
|
13567
|
-
return upsertTagFolder({
|
|
13568
|
-
tagFolderId: tagFolderId,
|
|
13569
|
-
parentTagFolderId: parentTagFolderId,
|
|
13570
|
-
tagFolderName: tagFolderName,
|
|
13571
|
-
isActive: isActive,
|
|
13572
|
-
});
|
|
13573
|
-
},
|
|
13574
|
-
onError: function (error) {
|
|
13575
|
-
setError(error.message);
|
|
13576
|
-
},
|
|
13577
|
-
});
|
|
13578
|
-
var changeTagFolderTag = useMutation({
|
|
13579
|
-
mutationFn: function (_a) {
|
|
13580
|
-
var tagId = _a.tagId, tagFolderId = _a.tagFolderId;
|
|
13581
|
-
return changeTagFolderToTag({ tagId: tagId, tagFolderId: tagFolderId });
|
|
13582
|
-
},
|
|
13301
|
+
mutationFn: upsertTagFolder,
|
|
13583
13302
|
onError: function (error) {
|
|
13584
13303
|
setError(error.message);
|
|
13585
13304
|
},
|
|
13586
13305
|
});
|
|
13587
|
-
var
|
|
13588
|
-
|
|
13589
|
-
|
|
13590
|
-
|
|
13591
|
-
|
|
13592
|
-
|
|
13593
|
-
|
|
13594
|
-
|
|
13306
|
+
var onSubmit = function (e) { return __awaiter(void 0, void 0, void 0, function () {
|
|
13307
|
+
var parentId, parentTagId;
|
|
13308
|
+
var _a;
|
|
13309
|
+
return __generator(this, function (_b) {
|
|
13310
|
+
switch (_b.label) {
|
|
13311
|
+
case 0:
|
|
13312
|
+
e.preventDefault();
|
|
13313
|
+
parentId = Number(tagNodeSelectedInTree === null || tagNodeSelectedInTree === void 0 ? void 0 : tagNodeSelectedInTree.parent) || null;
|
|
13314
|
+
parentTagId = ((_a = tagNodeSelectedInTree === null || tagNodeSelectedInTree === void 0 ? void 0 : tagNodeSelectedInTree.data) === null || _a === void 0 ? void 0 : _a.TagTypeCode) === "F"
|
|
13315
|
+
? Number(tagNodeSelectedInTree.id)
|
|
13316
|
+
: parentId;
|
|
13317
|
+
setIsLoading(true);
|
|
13318
|
+
if (!name) return [3 /*break*/, 2];
|
|
13319
|
+
return [4 /*yield*/, updateTagFolder.mutate({
|
|
13320
|
+
tagFolderId: null,
|
|
13321
|
+
parentTagFolderId: parentTagId,
|
|
13322
|
+
tagFolderName: name,
|
|
13323
|
+
isActive: true,
|
|
13324
|
+
})];
|
|
13325
|
+
case 1:
|
|
13326
|
+
_b.sent();
|
|
13327
|
+
_b.label = 2;
|
|
13328
|
+
case 2:
|
|
13329
|
+
handleClose(true);
|
|
13330
|
+
setName("");
|
|
13331
|
+
setIsLoading(false);
|
|
13332
|
+
return [2 /*return*/];
|
|
13333
|
+
}
|
|
13334
|
+
});
|
|
13335
|
+
}); };
|
|
13336
|
+
return (React__default.createElement(React__default.Fragment, null,
|
|
13337
|
+
React__default.createElement(MesfModal, { open: open, handleClose: function () { return handleClose(false); }, maxWidth: "lg", "aria-labelledby": "modal-modal-title", "aria-describedby": "modal-modal-description", title: "New folder" },
|
|
13338
|
+
React__default.createElement(MesfModal.Content, null,
|
|
13339
|
+
React__default.createElement(Box, null,
|
|
13340
|
+
React__default.createElement(TextField, { style: { minWidth: "600px" }, id: "outlined-basic", label: "Folder name", variant: "outlined", value: name, onChange: function (e) { return setName(e.target.value); } }))),
|
|
13341
|
+
React__default.createElement(MesfModal.Actions, null,
|
|
13342
|
+
React__default.createElement("div", null,
|
|
13343
|
+
React__default.createElement(Button, { color: "secondary", variant: "outlined", onClick: function () { return handleClose(false); } }, "Cancel")),
|
|
13344
|
+
React__default.createElement("div", null,
|
|
13345
|
+
React__default.createElement(ButtonWithLoading, { isLoading: isLoading, onClick: onSubmit, color: "primary", variant: "contained" }, "Save")))),
|
|
13346
|
+
React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(""); } })));
|
|
13347
|
+
};
|
|
13348
|
+
|
|
13349
|
+
var RemoveFolderModal = function (_a) {
|
|
13350
|
+
var open = _a.open, handleClose = _a.handleClose, tagNodeSelectedInTree = _a.tagNodeSelectedInTree;
|
|
13351
|
+
var _b = useState(""), error = _b[0], setError = _b[1];
|
|
13352
|
+
var _c = useState(false), isLoading = _c[0], setIsLoading = _c[1];
|
|
13353
|
+
var updateTagFolder = useMutation({
|
|
13354
|
+
mutationFn: upsertTagFolder,
|
|
13355
|
+
onError: function (error) {
|
|
13356
|
+
setError(error.message);
|
|
13357
|
+
},
|
|
13358
|
+
});
|
|
13359
|
+
var removeFolder = useMutation({
|
|
13360
|
+
mutationFn: deleteTagFolder,
|
|
13361
|
+
onError: function (error) {
|
|
13362
|
+
setError(error.message);
|
|
13363
|
+
},
|
|
13364
|
+
});
|
|
13365
|
+
var onSubmit = function (e) { return __awaiter(void 0, void 0, void 0, function () {
|
|
13366
|
+
var parentId, name_1, id;
|
|
13367
|
+
return __generator(this, function (_a) {
|
|
13368
|
+
switch (_a.label) {
|
|
13369
|
+
case 0:
|
|
13370
|
+
e.preventDefault();
|
|
13371
|
+
if (!tagNodeSelectedInTree) return [3 /*break*/, 4];
|
|
13372
|
+
parentId = Number(tagNodeSelectedInTree === null || tagNodeSelectedInTree === void 0 ? void 0 : tagNodeSelectedInTree.parent) || null;
|
|
13373
|
+
name_1 = tagNodeSelectedInTree === null || tagNodeSelectedInTree === void 0 ? void 0 : tagNodeSelectedInTree.text;
|
|
13374
|
+
id = Number(tagNodeSelectedInTree === null || tagNodeSelectedInTree === void 0 ? void 0 : tagNodeSelectedInTree.id);
|
|
13375
|
+
setIsLoading(true);
|
|
13376
|
+
if (!parentId) return [3 /*break*/, 2];
|
|
13377
|
+
return [4 /*yield*/, removeFolder.mutate(id)];
|
|
13378
|
+
case 1:
|
|
13379
|
+
_a.sent();
|
|
13380
|
+
return [3 /*break*/, 4];
|
|
13381
|
+
case 2: return [4 /*yield*/, updateTagFolder.mutate({
|
|
13382
|
+
tagFolderId: id,
|
|
13383
|
+
parentTagFolderId: parentId,
|
|
13384
|
+
tagFolderName: name_1,
|
|
13385
|
+
isActive: false,
|
|
13386
|
+
})];
|
|
13387
|
+
case 3:
|
|
13388
|
+
_a.sent();
|
|
13389
|
+
_a.label = 4;
|
|
13390
|
+
case 4:
|
|
13391
|
+
handleClose(true);
|
|
13392
|
+
setIsLoading(false);
|
|
13393
|
+
return [2 /*return*/];
|
|
13394
|
+
}
|
|
13395
|
+
});
|
|
13396
|
+
}); };
|
|
13397
|
+
return (React__default.createElement(React__default.Fragment, null,
|
|
13398
|
+
React__default.createElement(MesfModal, { open: open, handleClose: function () { return handleClose(false); }, maxWidth: "lg", "aria-labelledby": "modal-modal-title", "aria-describedby": "modal-modal-description", title: "Remove Folder" },
|
|
13399
|
+
React__default.createElement(MesfModal.Content, null,
|
|
13400
|
+
React__default.createElement(Box, null,
|
|
13401
|
+
React__default.createElement(Typography$1, null,
|
|
13402
|
+
"Are you sure you want to remove",
|
|
13403
|
+
" ",
|
|
13404
|
+
React__default.createElement("strong", null, tagNodeSelectedInTree === null || tagNodeSelectedInTree === void 0 ? void 0 : tagNodeSelectedInTree.text),
|
|
13405
|
+
" folder?"))),
|
|
13406
|
+
React__default.createElement(MesfModal.Actions, null,
|
|
13407
|
+
React__default.createElement("div", null,
|
|
13408
|
+
React__default.createElement(Button, { color: "secondary", variant: "outlined", onClick: function () { return handleClose(false); } }, "Cancel")),
|
|
13409
|
+
React__default.createElement("div", null,
|
|
13410
|
+
React__default.createElement(ButtonWithLoading, { isLoading: isLoading, onClick: onSubmit, color: "primary", variant: "contained" }, "Remove")))),
|
|
13411
|
+
React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(""); } })));
|
|
13412
|
+
};
|
|
13413
|
+
|
|
13414
|
+
var ContextMenu = function (_a) {
|
|
13415
|
+
var _b;
|
|
13416
|
+
var isOpen = _a.isOpen, anchorPoint = _a.anchorPoint, tagNodeSelectedInTree = _a.tagNodeSelectedInTree, getTagsTreeData = _a.getTagsTreeData, setShowContextMenu = _a.setShowContextMenu;
|
|
13417
|
+
var _c = useState(false), showNewTagModal = _c[0], setShowNewTagModal = _c[1];
|
|
13418
|
+
var _d = useState(false), showRemoveTagModal = _d[0], setShowRemoveTagModal = _d[1];
|
|
13419
|
+
var isFolder = ((_b = tagNodeSelectedInTree === null || tagNodeSelectedInTree === void 0 ? void 0 : tagNodeSelectedInTree.data) === null || _b === void 0 ? void 0 : _b.TagTypeCode) === "F";
|
|
13420
|
+
return (React__default.createElement(React__default.Fragment, null,
|
|
13421
|
+
isOpen && anchorPoint ? (React__default.createElement("ul", { style: {
|
|
13422
|
+
top: anchorPoint.y,
|
|
13423
|
+
left: anchorPoint.x,
|
|
13424
|
+
fontSize: "0.875rem",
|
|
13425
|
+
backgroundColor: "#fff",
|
|
13426
|
+
borderRadius: "2px",
|
|
13427
|
+
padding: "5px 10px;",
|
|
13428
|
+
width: "140px",
|
|
13429
|
+
height: "auto",
|
|
13430
|
+
margin: "0",
|
|
13431
|
+
position: "fixed",
|
|
13432
|
+
boxShadow: "0 0 20px 0 #ccc",
|
|
13433
|
+
display: "flex",
|
|
13434
|
+
flexDirection: "column",
|
|
13435
|
+
} },
|
|
13436
|
+
React__default.createElement(MenuItem, { style: { width: "100%", justifyContent: "left" }, onClick: function () { return setShowNewTagModal(true); } }, "New Folder"),
|
|
13437
|
+
tagNodeSelectedInTree && isFolder && (React__default.createElement(MenuItem, { style: { width: "100%", justifyContent: "left" }, onClick: function () { return setShowRemoveTagModal(true); } }, "Remove Folder")))) : null,
|
|
13438
|
+
React__default.createElement(NewFolderModal, { open: showNewTagModal, handleClose: function (shouldUpdate) {
|
|
13439
|
+
if (shouldUpdate) {
|
|
13440
|
+
getTagsTreeData();
|
|
13441
|
+
}
|
|
13442
|
+
setShowContextMenu(false);
|
|
13443
|
+
setShowNewTagModal(false);
|
|
13444
|
+
}, tagNodeSelectedInTree: tagNodeSelectedInTree }),
|
|
13445
|
+
React__default.createElement(RemoveFolderModal, { open: showRemoveTagModal, handleClose: function (shouldUpdate) {
|
|
13446
|
+
if (shouldUpdate) {
|
|
13447
|
+
getTagsTreeData();
|
|
13448
|
+
}
|
|
13449
|
+
setShowContextMenu(false);
|
|
13450
|
+
setShowRemoveTagModal(false);
|
|
13451
|
+
}, tagNodeSelectedInTree: tagNodeSelectedInTree })));
|
|
13452
|
+
};
|
|
13453
|
+
|
|
13454
|
+
var CustomDragPreview = function (props) {
|
|
13455
|
+
var _a, _b, _c;
|
|
13456
|
+
var item = props.monitorProps.item;
|
|
13457
|
+
var isFolder = ((_a = item.data) === null || _a === void 0 ? void 0 : _a.TagTypeCode) === "F" ? true : false;
|
|
13458
|
+
return (React__default.createElement(Box, { sx: {
|
|
13459
|
+
alignItems: "center",
|
|
13460
|
+
backgroundColor: "#1967d2",
|
|
13461
|
+
borderRadius: "4px",
|
|
13462
|
+
boxShadow: " 0 12px 24px -6px rgba(0, 0, 0, .25); 0 0 0 1px rgba(0, 0, 0, .08)",
|
|
13463
|
+
color: "#fff",
|
|
13464
|
+
display: "inline-grid",
|
|
13465
|
+
fontSize: "0.875rem",
|
|
13466
|
+
gap: "8px",
|
|
13467
|
+
gridTemplateColumns: "auto auto",
|
|
13468
|
+
padding: "4px 8px",
|
|
13469
|
+
pointerEvents: "none",
|
|
13470
|
+
} },
|
|
13471
|
+
React__default.createElement(Box, { sx: {
|
|
13472
|
+
alignItems: "center",
|
|
13473
|
+
display: "flex",
|
|
13474
|
+
} }, isFolder ? React__default.createElement(FolderIcon, null) : React__default.createElement(InsertChartIcon, { fontSize: "small" })),
|
|
13475
|
+
React__default.createElement(Box, { sx: {
|
|
13476
|
+
alignItems: "center",
|
|
13477
|
+
display: "flex",
|
|
13478
|
+
} }, ((_b = item.data) === null || _b === void 0 ? void 0 : _b.Alias) || ((_c = item.data) === null || _c === void 0 ? void 0 : _c.TagName))));
|
|
13479
|
+
};
|
|
13480
|
+
|
|
13481
|
+
// React Query hook for fetching tags tree
|
|
13482
|
+
var useSearchTagsTree = function () {
|
|
13483
|
+
return useQuery({
|
|
13484
|
+
queryKey: ["tagsTree-v2"],
|
|
13485
|
+
queryFn: function () { return getTagsTree(); },
|
|
13486
|
+
enabled: false, // Only fetch when explicitly called
|
|
13487
|
+
});
|
|
13488
|
+
};
|
|
13489
|
+
var TagsTreeModalV2 = function (_a) {
|
|
13490
|
+
var open = _a.open, handleClose = _a.handleClose, onTagSelect = _a.onTagSelect;
|
|
13491
|
+
var _b = useState(false), isLoading = _b[0], setIsLoading = _b[1];
|
|
13492
|
+
var _c = useState(""), error = _c[0], setError = _c[1];
|
|
13493
|
+
var _d = useState(null), snackbarMessage = _d[0], setSnackbarMessage = _d[1];
|
|
13494
|
+
var _e = useState([]), tagsTreeData = _e[0], setTagsTreeData = _e[1];
|
|
13495
|
+
var _f = useState(null), tagNodeSelectedInTree = _f[0], setTagNodeSelectedInTree = _f[1];
|
|
13496
|
+
var _g = useState(null), anchorPoint = _g[0], setAnchorPoint = _g[1];
|
|
13497
|
+
var _h = useState(false), showContextMenu = _h[0], setShowContextMenu = _h[1];
|
|
13498
|
+
var backendOffset = 1000000;
|
|
13499
|
+
var _j = useState({}), openTagFolders = _j[0], setOpenTagFolders = _j[1];
|
|
13500
|
+
var _k = useState([]), selectedNodes = _k[0], setSelectedNodes = _k[1];
|
|
13501
|
+
var handleContextMenu = function (data, e) {
|
|
13502
|
+
e.preventDefault();
|
|
13503
|
+
var top = e.clientY;
|
|
13504
|
+
var left = e.clientX;
|
|
13505
|
+
setAnchorPoint({ x: left, y: top });
|
|
13506
|
+
setSelectedNodes([data]);
|
|
13507
|
+
setShowContextMenu(true);
|
|
13508
|
+
var selectedNode = tagsTreeData.find(function (node) { var _a; return ((_a = node.data) === null || _a === void 0 ? void 0 : _a.TagId) === data.id; });
|
|
13509
|
+
if (selectedNode) {
|
|
13510
|
+
setTagNodeSelectedInTree(selectedNode);
|
|
13511
|
+
}
|
|
13512
|
+
};
|
|
13513
|
+
var _l = useSearchTagsTree(), tagsTree = _l.data, tagsTreeLoading = _l.isLoading, tagsTreeIsError = _l.isError, tagsTreeError = _l.error, tagsTreeIsSuccess = _l.isSuccess, tagsTreeIsFetched = _l.isFetched, refetch = _l.refetch;
|
|
13514
|
+
var updateTagFolder = useMutation({
|
|
13515
|
+
mutationFn: function (_a) {
|
|
13516
|
+
var tagFolderId = _a.tagFolderId, parentTagFolderId = _a.parentTagFolderId, tagFolderName = _a.tagFolderName, isActive = _a.isActive;
|
|
13517
|
+
return upsertTagFolder({
|
|
13518
|
+
tagFolderId: tagFolderId,
|
|
13519
|
+
parentTagFolderId: parentTagFolderId,
|
|
13520
|
+
tagFolderName: tagFolderName,
|
|
13521
|
+
isActive: isActive,
|
|
13522
|
+
});
|
|
13523
|
+
},
|
|
13524
|
+
onError: function (error) {
|
|
13525
|
+
setError(error.message);
|
|
13526
|
+
},
|
|
13527
|
+
});
|
|
13528
|
+
var changeTagFolderTag = useMutation({
|
|
13529
|
+
mutationFn: function (_a) {
|
|
13530
|
+
var tagId = _a.tagId, tagFolderId = _a.tagFolderId;
|
|
13531
|
+
return changeTagFolderToTag({ tagId: tagId, tagFolderId: tagFolderId });
|
|
13532
|
+
},
|
|
13533
|
+
onError: function (error) {
|
|
13534
|
+
setError(error.message);
|
|
13535
|
+
},
|
|
13536
|
+
});
|
|
13537
|
+
var expanded = useMemo(function () {
|
|
13538
|
+
return Object.keys(openTagFolders).map(function (el) { return Number.parseInt(el); });
|
|
13539
|
+
}, [openTagFolders]);
|
|
13540
|
+
var handleDrop = function (tree, options) { return __awaiter(void 0, void 0, void 0, function () {
|
|
13541
|
+
var tagId, newFolderId;
|
|
13542
|
+
var _a, _b;
|
|
13543
|
+
return __generator(this, function (_c) {
|
|
13544
|
+
switch (_c.label) {
|
|
13595
13545
|
case 0:
|
|
13596
13546
|
setIsLoading(true);
|
|
13597
13547
|
if (!options.dragSource) return [3 /*break*/, 5];
|
|
@@ -14058,24 +14008,62 @@ var LoadViewModalV2 = function (_a) {
|
|
|
14058
14008
|
React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(""); } })));
|
|
14059
14009
|
};
|
|
14060
14010
|
|
|
14061
|
-
var
|
|
14062
|
-
|
|
14063
|
-
|
|
14064
|
-
|
|
14065
|
-
//
|
|
14066
|
-
|
|
14067
|
-
|
|
14068
|
-
|
|
14069
|
-
|
|
14070
|
-
|
|
14071
|
-
|
|
14072
|
-
|
|
14073
|
-
|
|
14074
|
-
|
|
14075
|
-
|
|
14076
|
-
|
|
14077
|
-
|
|
14078
|
-
//
|
|
14011
|
+
var tagColors = [
|
|
14012
|
+
"#00AA00", // green
|
|
14013
|
+
"#0000FF", // blue
|
|
14014
|
+
"#FF0000", // red
|
|
14015
|
+
"#9C27B0", // purple
|
|
14016
|
+
"#FFA500", // orange
|
|
14017
|
+
"#397234", // forest green
|
|
14018
|
+
"#283F23", // dark olive
|
|
14019
|
+
"#3F2617", // dark brown
|
|
14020
|
+
"#0B0F08", // charcoal black
|
|
14021
|
+
"#889c2dff", // olive green
|
|
14022
|
+
"#B78449", // tan brown
|
|
14023
|
+
"#5D9F96", // teal
|
|
14024
|
+
"#1d5e74ff", // dark teal
|
|
14025
|
+
"#FA7305", // bright orange
|
|
14026
|
+
"#072684", // navy blue
|
|
14027
|
+
"#269473ff", // emerald green
|
|
14028
|
+
"#5d74b9ff", // slate blue
|
|
14029
|
+
"#0C8EF4", // sky blue
|
|
14030
|
+
"#8d481cff", // rust brown
|
|
14031
|
+
"#2B384C", // dark slate
|
|
14032
|
+
];
|
|
14033
|
+
var availableColors = __spreadArray([], tagColors, true);
|
|
14034
|
+
var lastColor = null;
|
|
14035
|
+
var getRandomColor = function () {
|
|
14036
|
+
if (availableColors.length === 0) {
|
|
14037
|
+
availableColors = __spreadArray([], tagColors, true);
|
|
14038
|
+
if (lastColor && availableColors.length > 1) {
|
|
14039
|
+
availableColors.splice(availableColors.indexOf(lastColor), 1);
|
|
14040
|
+
}
|
|
14041
|
+
}
|
|
14042
|
+
var randomIndex = Math.floor(Math.random() * availableColors.length);
|
|
14043
|
+
var color = availableColors[randomIndex];
|
|
14044
|
+
availableColors.splice(randomIndex, 1);
|
|
14045
|
+
lastColor = color;
|
|
14046
|
+
return color;
|
|
14047
|
+
};
|
|
14048
|
+
|
|
14049
|
+
var TagsTableV2 = function () {
|
|
14050
|
+
var queryClient = useQueryClient();
|
|
14051
|
+
var _a = useContextMenuMESF(), registerConfig = _a.registerConfig, showContextMenu = _a.showContextMenu;
|
|
14052
|
+
var _b = useTrendingContextV2(), _c = _b.state, viewTags = _c.viewTags, cursorData = _c.cursorData, viewSelected = _c.viewSelected; _c.views; var seriesMinMax = _c.seriesMinMax, _d = _b.actions, setViewTags = _d.setViewTags, setViewTagsAndRefetch = _d.setViewTagsAndRefetch; _d.setViewSelected; _d.setViews; var highlightSeries = _d.highlightSeries;
|
|
14053
|
+
// Number formatters for consistent thousand separator and decimal formatting
|
|
14054
|
+
var numberFormatterOneDecimal = useMemo(function () {
|
|
14055
|
+
return new Intl.NumberFormat("en-US", {
|
|
14056
|
+
minimumFractionDigits: 1,
|
|
14057
|
+
maximumFractionDigits: 1,
|
|
14058
|
+
});
|
|
14059
|
+
}, []);
|
|
14060
|
+
var numberFormatterNoDecimal = useMemo(function () {
|
|
14061
|
+
return new Intl.NumberFormat("en-US", {
|
|
14062
|
+
minimumFractionDigits: 0,
|
|
14063
|
+
maximumFractionDigits: 0,
|
|
14064
|
+
});
|
|
14065
|
+
}, []);
|
|
14066
|
+
// State management
|
|
14079
14067
|
var _e = useState(""), error = _e[0], setError = _e[1];
|
|
14080
14068
|
var _f = useState(false); _f[0]; var setIsLoading = _f[1];
|
|
14081
14069
|
var _g = useState(null); _g[0]; var setSelectedRowTagId = _g[1];
|
|
@@ -16332,7 +16320,7 @@ var TrendingChartV2 = function (_a) {
|
|
|
16332
16320
|
};
|
|
16333
16321
|
|
|
16334
16322
|
// React Query hooks for data fetching
|
|
16335
|
-
var useSearchViews
|
|
16323
|
+
var useSearchViews = function (_a) {
|
|
16336
16324
|
var _b = _a.autoRefresh, autoRefresh = _b === void 0 ? false : _b;
|
|
16337
16325
|
return useQuery({
|
|
16338
16326
|
queryKey: ["views-v2"],
|
|
@@ -16340,7 +16328,7 @@ var useSearchViews$1 = function (_a) {
|
|
|
16340
16328
|
refetchInterval: autoRefresh ? 10000 : false,
|
|
16341
16329
|
});
|
|
16342
16330
|
};
|
|
16343
|
-
var useSearchViewTags
|
|
16331
|
+
var useSearchViewTags = function (_a) {
|
|
16344
16332
|
var viewId = _a.viewId;
|
|
16345
16333
|
return useQuery({
|
|
16346
16334
|
queryKey: ["viewTags-v2", viewId],
|
|
@@ -16353,7 +16341,7 @@ var useSearchViewTags$1 = function (_a) {
|
|
|
16353
16341
|
enabled: viewId !== null,
|
|
16354
16342
|
});
|
|
16355
16343
|
};
|
|
16356
|
-
var useSearchSeries
|
|
16344
|
+
var useSearchSeries = function (_a) {
|
|
16357
16345
|
var start = _a.start, end = _a.end, tagIds = _a.tagIds, _b = _a.autoRefresh, autoRefresh = _b === void 0 ? false : _b;
|
|
16358
16346
|
return useQuery({
|
|
16359
16347
|
queryKey: ["series-v2", start, end, tagIds],
|
|
@@ -16401,9 +16389,9 @@ var TrendingsPageV2 = function () {
|
|
|
16401
16389
|
var _f = useState(0), dataLoadedTrigger = _f[0], setDataLoadedTrigger = _f[1];
|
|
16402
16390
|
var _g = useTrendingContextV2(), _h = _g.state, viewSelected = _h.viewSelected, viewTags = _h.viewTags, timeScopeStart = _h.timeScopeStart, timeScopeEnd = _h.timeScopeEnd, _j = _g.actions, setViews = _j.setViews, setViewTagsAndRefetch = _j.setViewTagsAndRefetch, setViewSelected = _j.setViewSelected, setSeriesMinMax = _j.setSeriesMinMax, resetCursors = _j.resetCursors;
|
|
16403
16391
|
// Fetch views
|
|
16404
|
-
var _k = useSearchViews
|
|
16392
|
+
var _k = useSearchViews({ autoRefresh: autoRefresh }), views = _k.data, viewsLoading = _k.isLoading, viewsIsError = _k.isError, viewsError = _k.error, viewSuccess = _k.isSuccess;
|
|
16405
16393
|
// Fetch view tags
|
|
16406
|
-
var _l = useSearchViewTags
|
|
16394
|
+
var _l = useSearchViewTags({ viewId: viewId }), viewTagsData = _l.data, viewTagsLoading = _l.isLoading, viewTagsIsError = _l.isError, viewTagsError = _l.error, viewTagsSuccess = _l.isSuccess;
|
|
16407
16395
|
// Memoize tagIds for series query
|
|
16408
16396
|
// Tags are sorted in DESCENDING order to match TrendingChartV2 processing
|
|
16409
16397
|
var tagIds = useMemo(function () {
|
|
@@ -16444,7 +16432,7 @@ var TrendingsPageV2 = function () {
|
|
|
16444
16432
|
return stableTagIdsRef.current;
|
|
16445
16433
|
}, [realTagIds, timeScopeStart, timeScopeEnd]);
|
|
16446
16434
|
// Fetch series data using stable query key
|
|
16447
|
-
var _m = useSearchSeries
|
|
16435
|
+
var _m = useSearchSeries({
|
|
16448
16436
|
start: timeScopeStart.getTime(),
|
|
16449
16437
|
end: timeScopeEnd.getTime(),
|
|
16450
16438
|
tagIds: queryTagIds,
|
|
@@ -16490,2891 +16478,96 @@ var TrendingsPageV2 = function () {
|
|
|
16490
16478
|
// BitIndex 0 = LSB (least significant bit)
|
|
16491
16479
|
return sourceData.map(function (point) { return ({
|
|
16492
16480
|
timestamp: point.timestamp,
|
|
16493
|
-
value: point.value !== null
|
|
16494
|
-
? (Math.floor(point.value) >> viewTag.BitIndex) & 1
|
|
16495
|
-
: null,
|
|
16496
|
-
}); });
|
|
16497
|
-
}
|
|
16498
|
-
// Regular tag - use series data directly
|
|
16499
|
-
return seriesMap.get(tagId);
|
|
16500
|
-
})
|
|
16501
|
-
.filter(Boolean);
|
|
16502
|
-
}, [series, tagIds, queryTagIds, viewTags]);
|
|
16503
|
-
// Calculate overall min/max values from filtered series data
|
|
16504
|
-
var seriesMinMaxData = useSeriesMinMax(filteredSeries, tagIds);
|
|
16505
|
-
// Load initial view when views are fetched
|
|
16506
|
-
useEffect(function () {
|
|
16507
|
-
if (!viewSuccess || !views || !Array.isArray(views))
|
|
16508
|
-
return;
|
|
16509
|
-
// Always update the views list in context
|
|
16510
|
-
setViews(views);
|
|
16511
|
-
// Only set initial view if none is selected
|
|
16512
|
-
if (!viewSelected) {
|
|
16513
|
-
var lastCreated = views.reduce(function (prev, current) {
|
|
16514
|
-
return prev && prev.ViewId > current.ViewId ? prev : current;
|
|
16515
|
-
}, null);
|
|
16516
|
-
if (lastCreated) {
|
|
16517
|
-
setViewId(lastCreated.ViewId);
|
|
16518
|
-
setViewSelected(lastCreated);
|
|
16519
|
-
}
|
|
16520
|
-
}
|
|
16521
|
-
}, [viewSuccess, views, viewSelected, setViews, setViewSelected]);
|
|
16522
|
-
// Update viewId when viewSelected changes (e.g., from LoadViewModal)
|
|
16523
|
-
useEffect(function () {
|
|
16524
|
-
if (viewSelected) {
|
|
16525
|
-
setViewId(viewSelected.ViewId);
|
|
16526
|
-
}
|
|
16527
|
-
}, [viewSelected]);
|
|
16528
|
-
// Load view tags when fetched - ONLY when viewId changes, not on every data refetch
|
|
16529
|
-
// This preserves local order changes (from drag-and-drop) until a new view is loaded
|
|
16530
|
-
var loadedViewIdRef = useRef(null);
|
|
16531
|
-
useEffect(function () {
|
|
16532
|
-
if (!viewTagsSuccess ||
|
|
16533
|
-
!viewTagsData ||
|
|
16534
|
-
!Array.isArray(viewTagsData) ||
|
|
16535
|
-
viewId === null)
|
|
16536
|
-
return;
|
|
16537
|
-
// Only reset viewTags when viewId actually changes (loading a different view)
|
|
16538
|
-
// Do NOT reset if viewId is the same (data is just refetching)
|
|
16539
|
-
if (viewId === loadedViewIdRef.current)
|
|
16540
|
-
return;
|
|
16541
|
-
loadedViewIdRef.current = viewId;
|
|
16542
|
-
var backendTags = viewTagsData;
|
|
16543
|
-
var localViewTags = getViewFromLocal(viewId);
|
|
16544
|
-
var mergedTags = {};
|
|
16545
|
-
if (localViewTags) {
|
|
16546
|
-
// If local storage exists, use it as the source of truth for metadata (Order, Alias)
|
|
16547
|
-
// and for virtual tags (Bit Extracted)
|
|
16548
|
-
var backendTagIds_1 = new Set(backendTags.map(function (t) { return t.TagId; }));
|
|
16549
|
-
// 1. Process local tags
|
|
16550
|
-
Object.values(localViewTags).forEach(function (entry) {
|
|
16551
|
-
var viewTag = entry.viewTag;
|
|
16552
|
-
// If it's a backend tag, check if it still exists in the backend response
|
|
16553
|
-
// (Permission check or tag deletion check)
|
|
16554
|
-
if (!viewTag.IsBitExtracted) {
|
|
16555
|
-
if (backendTagIds_1.has(viewTag.TagId)) {
|
|
16556
|
-
mergedTags[viewTag.TagId] = entry;
|
|
16557
|
-
}
|
|
16558
|
-
}
|
|
16559
|
-
else {
|
|
16560
|
-
// Virtual tags are always added from local storage
|
|
16561
|
-
mergedTags[viewTag.TagId] = entry;
|
|
16562
|
-
}
|
|
16563
|
-
});
|
|
16564
|
-
// 2. Add any new backend tags that might be missing from local storage
|
|
16565
|
-
// (Rare case, but possible if added by another user/session)
|
|
16566
|
-
backendTags.forEach(function (backendTag) {
|
|
16567
|
-
if (!mergedTags[backendTag.TagId]) {
|
|
16568
|
-
// Add with default order at the end
|
|
16569
|
-
var maxOrder = Math.max.apply(Math, __spreadArray(__spreadArray([], Object.values(mergedTags).map(function (t) { return t.order; }), false), [0], false));
|
|
16570
|
-
if (isNil(backendTag.Color)) {
|
|
16571
|
-
backendTag.Color = getRandomColor();
|
|
16572
|
-
}
|
|
16573
|
-
mergedTags[backendTag.TagId] = {
|
|
16574
|
-
viewTag: backendTag,
|
|
16575
|
-
order: maxOrder + 1,
|
|
16576
|
-
};
|
|
16577
|
-
}
|
|
16578
|
-
});
|
|
16579
|
-
}
|
|
16580
|
-
else {
|
|
16581
|
-
// No local storage -> Use backend tags with default ordering
|
|
16582
|
-
mergedTags = backendTags.reduce(function (carr, curr, idx) {
|
|
16583
|
-
if (isNil(curr.Color)) {
|
|
16584
|
-
curr.Color = getRandomColor();
|
|
16585
|
-
}
|
|
16586
|
-
carr[curr.TagId] = {
|
|
16587
|
-
viewTag: curr,
|
|
16588
|
-
order: idx,
|
|
16589
|
-
};
|
|
16590
|
-
return carr;
|
|
16591
|
-
}, {});
|
|
16592
|
-
}
|
|
16593
|
-
// Reset stable ref when loading new view
|
|
16594
|
-
stableTagIdsRef.current = [];
|
|
16595
|
-
setViewTagsAndRefetch(mergedTags);
|
|
16596
|
-
}, [viewTagsSuccess, viewTagsData, setViewTagsAndRefetch, viewId]);
|
|
16597
|
-
// Update context with calculated min/max values
|
|
16598
|
-
// Use ref to prevent infinite loop from object reference changes
|
|
16599
|
-
var seriesMinMaxDataRef = useRef("");
|
|
16600
|
-
useEffect(function () {
|
|
16601
|
-
var serialized = JSON.stringify(seriesMinMaxData);
|
|
16602
|
-
if (serialized !== seriesMinMaxDataRef.current) {
|
|
16603
|
-
seriesMinMaxDataRef.current = serialized;
|
|
16604
|
-
setSeriesMinMax(seriesMinMaxData);
|
|
16605
|
-
}
|
|
16606
|
-
}, [seriesMinMaxData, setSeriesMinMax]);
|
|
16607
|
-
// Reset cursors when view changes or time scope changes significantly
|
|
16608
|
-
var prevViewIdRef = useRef(null);
|
|
16609
|
-
useEffect(function () {
|
|
16610
|
-
// Reset cursors when switching views or when time scope changes significantly
|
|
16611
|
-
if (viewSelected && viewSelected.ViewId !== prevViewIdRef.current) {
|
|
16612
|
-
prevViewIdRef.current = viewSelected.ViewId;
|
|
16613
|
-
resetCursors();
|
|
16614
|
-
}
|
|
16615
|
-
}, [viewSelected, resetCursors]);
|
|
16616
|
-
// Also reset cursors when time scope changes (zoom/pan)
|
|
16617
|
-
useEffect(function () {
|
|
16618
|
-
resetCursors();
|
|
16619
|
-
}, [timeScopeStart, timeScopeEnd, resetCursors]);
|
|
16620
|
-
// Increment trigger when series data finishes loading
|
|
16621
|
-
// This ensures cursors re-render AFTER chart has new data
|
|
16622
|
-
var prevSeriesLoadingRef = useRef(false);
|
|
16623
|
-
useEffect(function () {
|
|
16624
|
-
if (prevSeriesLoadingRef.current && !seriesLoading) {
|
|
16625
|
-
// Transition from loading to not loading - data just loaded
|
|
16626
|
-
setDataLoadedTrigger(function (prev) { return prev + 1; });
|
|
16627
|
-
}
|
|
16628
|
-
prevSeriesLoadingRef.current = seriesLoading;
|
|
16629
|
-
}, [seriesLoading]);
|
|
16630
|
-
// Handle errors
|
|
16631
|
-
useEffect(function () {
|
|
16632
|
-
if (viewTagsError && viewTagsIsError) {
|
|
16633
|
-
setError(viewTagsError instanceof Error
|
|
16634
|
-
? viewTagsError.message
|
|
16635
|
-
: String(viewTagsError));
|
|
16636
|
-
}
|
|
16637
|
-
if (viewsError && viewsIsError) {
|
|
16638
|
-
setError(viewsError instanceof Error ? viewsError.message : String(viewsError));
|
|
16639
|
-
}
|
|
16640
|
-
if (seriesError && seriesIsError) {
|
|
16641
|
-
setError(seriesError instanceof Error
|
|
16642
|
-
? seriesError.message
|
|
16643
|
-
: String(seriesError));
|
|
16644
|
-
}
|
|
16645
|
-
}, [
|
|
16646
|
-
viewsError,
|
|
16647
|
-
viewsIsError,
|
|
16648
|
-
viewTagsError,
|
|
16649
|
-
viewTagsIsError,
|
|
16650
|
-
seriesError,
|
|
16651
|
-
seriesIsError,
|
|
16652
|
-
]);
|
|
16653
|
-
var isLoading = viewsLoading || viewTagsLoading;
|
|
16654
|
-
return (React__default.createElement(React__default.Fragment, null,
|
|
16655
|
-
React__default.createElement(HelmetDexteel, { title: "Trendings" }),
|
|
16656
|
-
React__default.createElement("div", { style: {
|
|
16657
|
-
padding: "16px",
|
|
16658
|
-
width: "100%",
|
|
16659
|
-
height: "92vh",
|
|
16660
|
-
position: "relative",
|
|
16661
|
-
backgroundColor: "#FAFAFA",
|
|
16662
|
-
display: "flex",
|
|
16663
|
-
flexDirection: "column",
|
|
16664
|
-
} },
|
|
16665
|
-
isLoading && (React__default.createElement("div", { style: {
|
|
16666
|
-
position: "absolute",
|
|
16667
|
-
top: 0,
|
|
16668
|
-
left: 0,
|
|
16669
|
-
width: "100%",
|
|
16670
|
-
height: "100%",
|
|
16671
|
-
background: "rgba(255, 255, 255, 0.7)",
|
|
16672
|
-
display: "flex",
|
|
16673
|
-
justifyContent: "center",
|
|
16674
|
-
alignItems: "center",
|
|
16675
|
-
zIndex: 1000,
|
|
16676
|
-
} },
|
|
16677
|
-
React__default.createElement(CircularProgress, { size: "3rem" }))),
|
|
16678
|
-
React__default.createElement("div", { style: { flexShrink: 0 } },
|
|
16679
|
-
React__default.createElement(HeaderSectionV2, { autoRefresh: autoRefresh, setAutoRefresh: setAutoRefresh, setChartOptions: setChartOptions, chartInstance: chartInstance })),
|
|
16680
|
-
React__default.createElement(Divider, { sx: { my: 2 } }),
|
|
16681
|
-
React__default.createElement("div", { style: {
|
|
16682
|
-
flexGrow: 1,
|
|
16683
|
-
minHeight: 0,
|
|
16684
|
-
display: "flex",
|
|
16685
|
-
width: "100%",
|
|
16686
|
-
} },
|
|
16687
|
-
React__default.createElement(Group$1, { orientation: "vertical", style: { width: "100%", height: "100%" } },
|
|
16688
|
-
React__default.createElement(Panel, { defaultSize: 80, minSize: 20 },
|
|
16689
|
-
React__default.createElement("div", { style: { height: "100%", width: "100%" } },
|
|
16690
|
-
React__default.createElement(TrendingChartV2, { customOptions: chartOptions, series: filteredSeries, isLoading: seriesLoading, onChartReady: setChartInstance, dataLoadedTrigger: dataLoadedTrigger }))),
|
|
16691
|
-
React__default.createElement(Separator, { style: {
|
|
16692
|
-
height: "10px",
|
|
16693
|
-
background: "#f0f0f0",
|
|
16694
|
-
cursor: "row-resize",
|
|
16695
|
-
display: "flex",
|
|
16696
|
-
alignItems: "center",
|
|
16697
|
-
justifyContent: "center",
|
|
16698
|
-
borderTop: "1px solid #e0e0e0",
|
|
16699
|
-
borderBottom: "1px solid #e0e0e0",
|
|
16700
|
-
} },
|
|
16701
|
-
React__default.createElement("div", { style: {
|
|
16702
|
-
width: "40px",
|
|
16703
|
-
height: "4px",
|
|
16704
|
-
backgroundColor: "#ccc",
|
|
16705
|
-
borderRadius: "2px",
|
|
16706
|
-
} })),
|
|
16707
|
-
React__default.createElement(Panel, { defaultSize: 20, minSize: 10 },
|
|
16708
|
-
React__default.createElement("div", { style: { height: "100%", width: "100%", overflow: "auto" } },
|
|
16709
|
-
React__default.createElement(TagsTableV2, null)))))),
|
|
16710
|
-
React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(""); }, size: "xl", title: "ERROR" })));
|
|
16711
|
-
};
|
|
16712
|
-
|
|
16713
|
-
var TrendingsV2Index = function () {
|
|
16714
|
-
var _a = useState(false), ihPathLoaded = _a[0], setIhPathLoaded = _a[1];
|
|
16715
|
-
useEffect(function () {
|
|
16716
|
-
var getIhPath = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
16717
|
-
var resp;
|
|
16718
|
-
return __generator(this, function (_a) {
|
|
16719
|
-
switch (_a.label) {
|
|
16720
|
-
case 0: return [4 /*yield*/, axiosInstance.get("/backend/ih-path")];
|
|
16721
|
-
case 1:
|
|
16722
|
-
resp = _a.sent();
|
|
16723
|
-
localStorage.setItem("ihPath", resp.data);
|
|
16724
|
-
setIhPathLoaded(true);
|
|
16725
|
-
return [2 /*return*/];
|
|
16726
|
-
}
|
|
16727
|
-
});
|
|
16728
|
-
}); };
|
|
16729
|
-
getIhPath();
|
|
16730
|
-
}, []);
|
|
16731
|
-
if (!ihPathLoaded) {
|
|
16732
|
-
return (React__default.createElement("div", { className: "d-flex justify-content-center align-items-center" }, "Loading..."));
|
|
16733
|
-
}
|
|
16734
|
-
return (React__default.createElement(TrendingProviderV2, null,
|
|
16735
|
-
React__default.createElement(TrendingsPageV2, null)));
|
|
16736
|
-
};
|
|
16737
|
-
|
|
16738
|
-
/*!
|
|
16739
|
-
* chartjs-adapter-moment v1.0.1
|
|
16740
|
-
* https://www.chartjs.org
|
|
16741
|
-
* (c) 2022 chartjs-adapter-moment Contributors
|
|
16742
|
-
* Released under the MIT license
|
|
16743
|
-
*/
|
|
16744
|
-
|
|
16745
|
-
const FORMATS = {
|
|
16746
|
-
datetime: 'MMM D, YYYY, h:mm:ss a',
|
|
16747
|
-
millisecond: 'h:mm:ss.SSS a',
|
|
16748
|
-
second: 'h:mm:ss a',
|
|
16749
|
-
minute: 'h:mm a',
|
|
16750
|
-
hour: 'hA',
|
|
16751
|
-
day: 'MMM D',
|
|
16752
|
-
week: 'll',
|
|
16753
|
-
month: 'MMM YYYY',
|
|
16754
|
-
quarter: '[Q]Q - YYYY',
|
|
16755
|
-
year: 'YYYY'
|
|
16756
|
-
};
|
|
16757
|
-
|
|
16758
|
-
_adapters._date.override(typeof moment$f === 'function' ? {
|
|
16759
|
-
_id: 'moment', // DEBUG ONLY
|
|
16760
|
-
|
|
16761
|
-
formats: function() {
|
|
16762
|
-
return FORMATS;
|
|
16763
|
-
},
|
|
16764
|
-
|
|
16765
|
-
parse: function(value, format) {
|
|
16766
|
-
if (typeof value === 'string' && typeof format === 'string') {
|
|
16767
|
-
value = moment$f(value, format);
|
|
16768
|
-
} else if (!(value instanceof moment$f)) {
|
|
16769
|
-
value = moment$f(value);
|
|
16770
|
-
}
|
|
16771
|
-
return value.isValid() ? value.valueOf() : null;
|
|
16772
|
-
},
|
|
16773
|
-
|
|
16774
|
-
format: function(time, format) {
|
|
16775
|
-
return moment$f(time).format(format);
|
|
16776
|
-
},
|
|
16777
|
-
|
|
16778
|
-
add: function(time, amount, unit) {
|
|
16779
|
-
return moment$f(time).add(amount, unit).valueOf();
|
|
16780
|
-
},
|
|
16781
|
-
|
|
16782
|
-
diff: function(max, min, unit) {
|
|
16783
|
-
return moment$f(max).diff(moment$f(min), unit);
|
|
16784
|
-
},
|
|
16785
|
-
|
|
16786
|
-
startOf: function(time, unit, weekday) {
|
|
16787
|
-
time = moment$f(time);
|
|
16788
|
-
if (unit === 'isoWeek') {
|
|
16789
|
-
weekday = Math.trunc(Math.min(Math.max(0, weekday), 6));
|
|
16790
|
-
return time.isoWeekday(weekday).startOf('day').valueOf();
|
|
16791
|
-
}
|
|
16792
|
-
return time.startOf(unit).valueOf();
|
|
16793
|
-
},
|
|
16794
|
-
|
|
16795
|
-
endOf: function(time, unit) {
|
|
16796
|
-
return moment$f(time).endOf(unit).valueOf();
|
|
16797
|
-
}
|
|
16798
|
-
} : {});
|
|
16799
|
-
|
|
16800
|
-
var css = "/* ContextMenu.css */ .context-menu {\n\tposition: absolute;\n\tz-index: 1000;\n\tbackground-color: #fff;\n\tborder: 1px solid #ddd;\n\tbox-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);\n\tborder-radius: 4px;\n\toverflow: hidden;\n}\n\n.context-menu ul {\n\tlist-style: none;\n\tmargin: 0;\n\tpadding: 0;\n}\n\n.context-menu li {\n\tpadding: 8px 15px;\n\tcursor: pointer;\n\tborder-bottom: 1px solid #eee;\n\tbackground-color: #fff;\n\tcolor: #333;\n\tfontSize: 0.875rem;\n}\n\n.context-menu li:hover {\n\tbackground-color: #f5f5f5;\n}\n";
|
|
16801
|
-
n(css,{});
|
|
16802
|
-
|
|
16803
|
-
var Swatch = function (_a) {
|
|
16804
|
-
var color = _a.color, onSelect = _a.onSelect;
|
|
16805
|
-
return (React__default.createElement("div", { style: {
|
|
16806
|
-
backgroundColor: color,
|
|
16807
|
-
width: "25px",
|
|
16808
|
-
height: "25px",
|
|
16809
|
-
display: "inline-block",
|
|
16810
|
-
margin: "2px",
|
|
16811
|
-
borderRadius: "4px",
|
|
16812
|
-
cursor: "pointer",
|
|
16813
|
-
}, onClick: function () { return onSelect(color); } }));
|
|
16814
|
-
};
|
|
16815
|
-
var ColorPicker = function (_a) {
|
|
16816
|
-
var onChange = _a.onChange, color = _a.color, elementId = _a.elementId;
|
|
16817
|
-
var _b = useState(null), anchorEl = _b[0], setAnchorEl = _b[1];
|
|
16818
|
-
var handleClick = function (event) {
|
|
16819
|
-
setAnchorEl(event.currentTarget);
|
|
16820
|
-
};
|
|
16821
|
-
var handleClose = function () {
|
|
16822
|
-
setAnchorEl(null);
|
|
16823
|
-
};
|
|
16824
|
-
var open = Boolean(anchorEl);
|
|
16825
|
-
var id = open ? "simple-popover" : undefined;
|
|
16826
|
-
return (React__default.createElement("div", null,
|
|
16827
|
-
React__default.createElement(Button$1, { "aria-describedby": id, variant: "outlined", onClick: handleClick, style: {
|
|
16828
|
-
backgroundColor: color,
|
|
16829
|
-
width: "20px",
|
|
16830
|
-
height: "20px",
|
|
16831
|
-
minWidth: "20px",
|
|
16832
|
-
padding: 0,
|
|
16833
|
-
margin: "4px",
|
|
16834
|
-
} }),
|
|
16835
|
-
React__default.createElement(Popover$1, { id: id, open: open, anchorEl: anchorEl, onClose: handleClose, anchorOrigin: {
|
|
16836
|
-
vertical: "bottom",
|
|
16837
|
-
horizontal: "left",
|
|
16838
|
-
} },
|
|
16839
|
-
React__default.createElement("div", { style: {
|
|
16840
|
-
display: "flex",
|
|
16841
|
-
flexWrap: "wrap",
|
|
16842
|
-
padding: "10px",
|
|
16843
|
-
maxWidth: "165px",
|
|
16844
|
-
} }, tagColors$1.map(function (color) { return (React__default.createElement(Swatch, { key: color, color: color, onSelect: function (color) {
|
|
16845
|
-
onChange(elementId, color);
|
|
16846
|
-
handleClose();
|
|
16847
|
-
} })); })))));
|
|
16848
|
-
};
|
|
16849
|
-
|
|
16850
|
-
var TrendingsInitialState = {
|
|
16851
|
-
timeScopeStart: moment$f(new Date()).subtract(1, "days").toDate(),
|
|
16852
|
-
timeScopeEnd: new Date(),
|
|
16853
|
-
scope: "1 day",
|
|
16854
|
-
graphPan: false,
|
|
16855
|
-
graphShouldUpdate: 0,
|
|
16856
|
-
views: [
|
|
16857
|
-
{
|
|
16858
|
-
ViewId: 0,
|
|
16859
|
-
ViewName: "",
|
|
16860
|
-
UserName: null,
|
|
16861
|
-
IsPublic: false,
|
|
16862
|
-
LastModified: null,
|
|
16863
|
-
LastModifiedBy: null,
|
|
16864
|
-
},
|
|
16865
|
-
],
|
|
16866
|
-
viewSelected: null,
|
|
16867
|
-
viewTags: {},
|
|
16868
|
-
shouldRefetchSeries: 1,
|
|
16869
|
-
};
|
|
16870
|
-
var TrendingsReducer = createSlice({
|
|
16871
|
-
name: "__",
|
|
16872
|
-
initialState: TrendingsInitialState,
|
|
16873
|
-
reducers: {
|
|
16874
|
-
setTotalScope: function (state, _a) {
|
|
16875
|
-
var payload = _a.payload; _a.type;
|
|
16876
|
-
state.shouldRefetchSeries += 1;
|
|
16877
|
-
state.graphShouldUpdate += 1;
|
|
16878
|
-
if (!isNil(payload.start) &&
|
|
16879
|
-
!isNil(payload.end) &&
|
|
16880
|
-
!isNil(payload.scope)) {
|
|
16881
|
-
//from arrow navigators
|
|
16882
|
-
state.timeScopeStart = payload.start;
|
|
16883
|
-
state.timeScopeEnd = payload.end;
|
|
16884
|
-
state.scope = payload.scope;
|
|
16885
|
-
return;
|
|
16886
|
-
}
|
|
16887
|
-
if (!isNil(payload.scope)) {
|
|
16888
|
-
if (payload.scope !== "custom") {
|
|
16889
|
-
switch (payload.scope) {
|
|
16890
|
-
case "10 min":
|
|
16891
|
-
state.timeScopeStart = moment$f(state.timeScopeEnd)
|
|
16892
|
-
.subtract(10, "minutes")
|
|
16893
|
-
.toDate();
|
|
16894
|
-
break;
|
|
16895
|
-
case "1 hour":
|
|
16896
|
-
state.timeScopeStart = moment$f(state.timeScopeEnd)
|
|
16897
|
-
.subtract(1, "hours")
|
|
16898
|
-
.toDate();
|
|
16899
|
-
break;
|
|
16900
|
-
case "4 hours":
|
|
16901
|
-
state.timeScopeStart = moment$f(state.timeScopeEnd)
|
|
16902
|
-
.subtract(4, "hours")
|
|
16903
|
-
.toDate();
|
|
16904
|
-
break;
|
|
16905
|
-
case "12 hours":
|
|
16906
|
-
state.timeScopeStart = moment$f(state.timeScopeEnd)
|
|
16907
|
-
.subtract(12, "hours")
|
|
16908
|
-
.toDate();
|
|
16909
|
-
break;
|
|
16910
|
-
case "1 day":
|
|
16911
|
-
state.timeScopeStart = moment$f(state.timeScopeEnd)
|
|
16912
|
-
.subtract(1, "days")
|
|
16913
|
-
.toDate();
|
|
16914
|
-
break;
|
|
16915
|
-
case "10 days":
|
|
16916
|
-
state.timeScopeStart = moment$f(state.timeScopeEnd)
|
|
16917
|
-
.subtract(10, "days")
|
|
16918
|
-
.toDate();
|
|
16919
|
-
break;
|
|
16920
|
-
}
|
|
16921
|
-
}
|
|
16922
|
-
state.scope = payload.scope;
|
|
16923
|
-
return;
|
|
16924
|
-
}
|
|
16925
|
-
if (!isNil(payload.start) &&
|
|
16926
|
-
!isNil(payload.end) &&
|
|
16927
|
-
isNil(payload.graphPan)) {
|
|
16928
|
-
// from zoom
|
|
16929
|
-
state.timeScopeStart = payload.start;
|
|
16930
|
-
state.timeScopeEnd = payload.end;
|
|
16931
|
-
state.scope = "custom";
|
|
16932
|
-
return;
|
|
16933
|
-
}
|
|
16934
|
-
if (!isNil(payload.start) &&
|
|
16935
|
-
!isNil(payload.end) &&
|
|
16936
|
-
!isNil(payload.graphPan)) {
|
|
16937
|
-
// from pan
|
|
16938
|
-
state.timeScopeStart = payload.start;
|
|
16939
|
-
state.timeScopeEnd = payload.end;
|
|
16940
|
-
return;
|
|
16941
|
-
}
|
|
16942
|
-
if (!isNil(payload.start)) {
|
|
16943
|
-
state.timeScopeStart = payload.start;
|
|
16944
|
-
if (state.scope !== "custom") {
|
|
16945
|
-
switch (state.scope) {
|
|
16946
|
-
case "10 min":
|
|
16947
|
-
state.timeScopeEnd = moment$f(payload.start)
|
|
16948
|
-
.add(10, "minutes")
|
|
16949
|
-
.toDate();
|
|
16950
|
-
break;
|
|
16951
|
-
case "1 hour":
|
|
16952
|
-
state.timeScopeEnd = moment$f(payload.start)
|
|
16953
|
-
.add(1, "hours")
|
|
16954
|
-
.toDate();
|
|
16955
|
-
break;
|
|
16956
|
-
case "4 hours":
|
|
16957
|
-
state.timeScopeEnd = moment$f(payload.start)
|
|
16958
|
-
.add(4, "hours")
|
|
16959
|
-
.toDate();
|
|
16960
|
-
break;
|
|
16961
|
-
case "12 hours":
|
|
16962
|
-
state.timeScopeEnd = moment$f(payload.start)
|
|
16963
|
-
.add(12, "hours")
|
|
16964
|
-
.toDate();
|
|
16965
|
-
break;
|
|
16966
|
-
case "1 day":
|
|
16967
|
-
state.timeScopeEnd = moment$f(payload.start)
|
|
16968
|
-
.add(1, "days")
|
|
16969
|
-
.toDate();
|
|
16970
|
-
break;
|
|
16971
|
-
case "10 days":
|
|
16972
|
-
state.timeScopeEnd = moment$f(payload.start)
|
|
16973
|
-
.add(10, "days")
|
|
16974
|
-
.toDate();
|
|
16975
|
-
break;
|
|
16976
|
-
}
|
|
16977
|
-
}
|
|
16978
|
-
return;
|
|
16979
|
-
}
|
|
16980
|
-
if (!isNil(payload.end)) {
|
|
16981
|
-
state.timeScopeEnd = payload.end;
|
|
16982
|
-
if (state.scope !== "custom") {
|
|
16983
|
-
switch (state.scope) {
|
|
16984
|
-
case "10 min":
|
|
16985
|
-
state.timeScopeStart = moment$f(payload.end)
|
|
16986
|
-
.subtract(10, "minutes")
|
|
16987
|
-
.toDate();
|
|
16988
|
-
break;
|
|
16989
|
-
case "1 hour":
|
|
16990
|
-
state.timeScopeStart = moment$f(payload.end)
|
|
16991
|
-
.subtract(1, "hours")
|
|
16992
|
-
.toDate();
|
|
16993
|
-
break;
|
|
16994
|
-
case "4 hours":
|
|
16995
|
-
state.timeScopeStart = moment$f(payload.end)
|
|
16996
|
-
.subtract(4, "hours")
|
|
16997
|
-
.toDate();
|
|
16998
|
-
break;
|
|
16999
|
-
case "12 hours":
|
|
17000
|
-
state.timeScopeStart = moment$f(payload.end)
|
|
17001
|
-
.subtract(12, "hours")
|
|
17002
|
-
.toDate();
|
|
17003
|
-
break;
|
|
17004
|
-
case "1 day":
|
|
17005
|
-
state.timeScopeStart = moment$f(payload.end)
|
|
17006
|
-
.subtract(1, "days")
|
|
17007
|
-
.toDate();
|
|
17008
|
-
break;
|
|
17009
|
-
case "10 days":
|
|
17010
|
-
state.timeScopeStart = moment$f(payload.end)
|
|
17011
|
-
.subtract(10, "days")
|
|
17012
|
-
.toDate();
|
|
17013
|
-
break;
|
|
17014
|
-
}
|
|
17015
|
-
}
|
|
17016
|
-
return;
|
|
17017
|
-
}
|
|
17018
|
-
},
|
|
17019
|
-
setViews: function (state, _a) {
|
|
17020
|
-
var payload = _a.payload;
|
|
17021
|
-
state.views = payload;
|
|
17022
|
-
},
|
|
17023
|
-
setViewSelected: function (state, _a) {
|
|
17024
|
-
var payload = _a.payload;
|
|
17025
|
-
state.viewSelected = payload;
|
|
17026
|
-
},
|
|
17027
|
-
setViewTags: function (state, _a) {
|
|
17028
|
-
var payload = _a.payload;
|
|
17029
|
-
state.viewTags = payload;
|
|
17030
|
-
state.graphShouldUpdate += 1;
|
|
17031
|
-
},
|
|
17032
|
-
setViewTagsAndRefetch: function (state, _a) {
|
|
17033
|
-
var payload = _a.payload;
|
|
17034
|
-
var newTags = structuredClone(payload);
|
|
17035
|
-
__spreadArray([], Object.values(payload), true).sort(function (a, b) { return b.order - a.order; })
|
|
17036
|
-
.forEach(function (vtMap, idx) {
|
|
17037
|
-
newTags[vtMap.viewTag.TagId]["order"] = idx;
|
|
17038
|
-
});
|
|
17039
|
-
state.viewTags = newTags;
|
|
17040
|
-
state.shouldRefetchSeries += 1;
|
|
17041
|
-
},
|
|
17042
|
-
setGraphShouldUpdate: function (state) {
|
|
17043
|
-
state.graphShouldUpdate = +1;
|
|
17044
|
-
},
|
|
17045
|
-
},
|
|
17046
|
-
});
|
|
17047
|
-
|
|
17048
|
-
var TrendingContext = createContext({
|
|
17049
|
-
state: TrendingsReducer.getInitialState(),
|
|
17050
|
-
actions: TrendingsReducer.actions,
|
|
17051
|
-
});
|
|
17052
|
-
var useTrendingContext = function () { return useContext(TrendingContext); };
|
|
17053
|
-
var TrendingProvider = function (_a) {
|
|
17054
|
-
var children = _a.children;
|
|
17055
|
-
var _b = useComplexState({
|
|
17056
|
-
initialState: TrendingsReducer.getInitialState(),
|
|
17057
|
-
reducers: TrendingsReducer.caseReducers,
|
|
17058
|
-
}), state = _b[0], actions = _b[1];
|
|
17059
|
-
var contextValue = useMemo(function () { return ({ state: state, actions: actions }); }, [state, actions]);
|
|
17060
|
-
return (React__default.createElement(TrendingContext.Provider, { value: contextValue }, children));
|
|
17061
|
-
};
|
|
17062
|
-
|
|
17063
|
-
var useSearchViews = function (_a) {
|
|
17064
|
-
var _b = _a.autoRefresh, autoRefresh = _b === void 0 ? false : _b;
|
|
17065
|
-
return useQuery({
|
|
17066
|
-
queryKey: ["views"],
|
|
17067
|
-
queryFn: function () { return getViews(null); },
|
|
17068
|
-
refetchInterval: autoRefresh ? 10000 : false,
|
|
17069
|
-
});
|
|
17070
|
-
};
|
|
17071
|
-
var useSearchViewTags = function (_a) {
|
|
17072
|
-
var viewId = _a.viewId;
|
|
17073
|
-
return useQuery({
|
|
17074
|
-
queryKey: ["viewTags", viewId],
|
|
17075
|
-
queryFn: function () {
|
|
17076
|
-
if (viewId) {
|
|
17077
|
-
return getViewTags(viewId);
|
|
17078
|
-
}
|
|
17079
|
-
else {
|
|
17080
|
-
return [];
|
|
17081
|
-
}
|
|
17082
|
-
},
|
|
17083
|
-
});
|
|
17084
|
-
};
|
|
17085
|
-
var useSearchTagsTree = function () {
|
|
17086
|
-
return useQuery({
|
|
17087
|
-
queryKey: ["tagsTree"],
|
|
17088
|
-
queryFn: function () { return getTagsTree(); },
|
|
17089
|
-
});
|
|
17090
|
-
};
|
|
17091
|
-
var useSearchSeries = function (_a) {
|
|
17092
|
-
var start = _a.start, end = _a.end, tagIds = _a.tagIds, _b = _a.autoRefresh, autoRefresh = _b === void 0 ? false : _b;
|
|
17093
|
-
return useQuery({
|
|
17094
|
-
queryKey: ["series", start, end, tagIds],
|
|
17095
|
-
queryFn: function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {
|
|
17096
|
-
var resp, error_1;
|
|
17097
|
-
var signal = _b.signal;
|
|
17098
|
-
return __generator(this, function (_c) {
|
|
17099
|
-
switch (_c.label) {
|
|
17100
|
-
case 0:
|
|
17101
|
-
_c.trys.push([0, 2, , 3]);
|
|
17102
|
-
return [4 /*yield*/, axios.post("/series?nodeName=null", {
|
|
17103
|
-
start: start,
|
|
17104
|
-
end: end ? end : new Date().getTime(),
|
|
17105
|
-
tagIds: tagIds,
|
|
17106
|
-
sampleCount: 1000,
|
|
17107
|
-
}, {
|
|
17108
|
-
signal: signal,
|
|
17109
|
-
})];
|
|
17110
|
-
case 1:
|
|
17111
|
-
resp = _c.sent();
|
|
17112
|
-
return [2 /*return*/, get(resp, "data", [])];
|
|
17113
|
-
case 2:
|
|
17114
|
-
error_1 = _c.sent();
|
|
17115
|
-
// Ignore abort errors
|
|
17116
|
-
if (axios.isCancel(error_1) || error_1.name === "AbortError") {
|
|
17117
|
-
return [2 /*return*/, []];
|
|
17118
|
-
}
|
|
17119
|
-
throw new Error(getError(error_1));
|
|
17120
|
-
case 3: return [2 /*return*/];
|
|
17121
|
-
}
|
|
17122
|
-
});
|
|
17123
|
-
}); },
|
|
17124
|
-
refetchInterval: autoRefresh ? 10000 : false,
|
|
17125
|
-
});
|
|
17126
|
-
};
|
|
17127
|
-
|
|
17128
|
-
var DeleteViewModal = function (_a) {
|
|
17129
|
-
var open = _a.open, handleClose = _a.handleClose, view = _a.view;
|
|
17130
|
-
var _b = useState(false), isLoading = _b[0], setIsLoading = _b[1];
|
|
17131
|
-
var _c = useState(""), error = _c[0], setError = _c[1];
|
|
17132
|
-
var removeView = useMutation({
|
|
17133
|
-
mutationFn: deleteView,
|
|
17134
|
-
onSuccess: function () {
|
|
17135
|
-
handleClose(true);
|
|
17136
|
-
},
|
|
17137
|
-
onError: function (error) {
|
|
17138
|
-
setError(error.message);
|
|
17139
|
-
},
|
|
17140
|
-
});
|
|
17141
|
-
var handleSubmit = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
17142
|
-
return __generator(this, function (_a) {
|
|
17143
|
-
switch (_a.label) {
|
|
17144
|
-
case 0:
|
|
17145
|
-
setIsLoading(true);
|
|
17146
|
-
if (!!isNil(view)) return [3 /*break*/, 2];
|
|
17147
|
-
return [4 /*yield*/, removeView.mutate(view.ViewId)];
|
|
17148
|
-
case 1:
|
|
17149
|
-
_a.sent();
|
|
17150
|
-
_a.label = 2;
|
|
17151
|
-
case 2:
|
|
17152
|
-
setIsLoading(false);
|
|
17153
|
-
return [2 /*return*/];
|
|
17154
|
-
}
|
|
17155
|
-
});
|
|
17156
|
-
}); };
|
|
17157
|
-
return (React__default.createElement(React__default.Fragment, null,
|
|
17158
|
-
React__default.createElement(MesfModal, { open: open, handleClose: function () { return handleClose(false); }, maxWidth: "xl", "aria-labelledby": "modal-modal-title", "aria-describedby": "modal-modal-description", title: "Delete View" },
|
|
17159
|
-
React__default.createElement(Divider, null),
|
|
17160
|
-
React__default.createElement(MesfModal.Content, null, !isNil(view) ? (React__default.createElement(Grid2, { container: true, spacing: 5, style: { padding: "2rem" } },
|
|
17161
|
-
React__default.createElement(Grid2, { size: { md: 12, xs: 12 }, style: { padding: "10px", width: "100%" } },
|
|
17162
|
-
React__default.createElement(Typography$1, null,
|
|
17163
|
-
"Are yu sure you want to delete",
|
|
17164
|
-
" ",
|
|
17165
|
-
React__default.createElement("strong", null, view === null || view === void 0 ? void 0 : view.ViewName),
|
|
17166
|
-
" ?")))) : (React__default.createElement(Typography$1, null, "ERROR: No view detected, please select one"))),
|
|
17167
|
-
React__default.createElement(Divider, null),
|
|
17168
|
-
React__default.createElement(MesfModal.Actions, null,
|
|
17169
|
-
React__default.createElement(Grid2, { container: true, spacing: 1, style: {
|
|
17170
|
-
display: "flex",
|
|
17171
|
-
alignItems: "flex-end",
|
|
17172
|
-
justifyContent: "flex-end",
|
|
17173
|
-
} },
|
|
17174
|
-
React__default.createElement(Grid2, null,
|
|
17175
|
-
React__default.createElement(Button, { variant: "outlined", color: "secondary", onClick: function () { return handleClose(false); } }, "Cancel")),
|
|
17176
|
-
React__default.createElement(Grid2, null, !isNil(view) ? (React__default.createElement(ButtonWithLoading, { variant: "contained", color: "secondary", onClick: handleSubmit, isLoading: isLoading }, "Delete")) : (React__default.createElement(Button, { variant: "contained", style: { marginRight: "1rem" }, color: "primary", onClick: function () { return handleClose(false); } }, "Ok")))))),
|
|
17177
|
-
React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(""); } })));
|
|
17178
|
-
};
|
|
17179
|
-
|
|
17180
|
-
var EditViewModal = function (_a) {
|
|
17181
|
-
var open = _a.open, handleClose = _a.handleClose, view = _a.view;
|
|
17182
|
-
var _b = useState(""), newName = _b[0], setNewName = _b[1];
|
|
17183
|
-
var _c = useState(true), isPublic = _c[0], setIsPublic = _c[1];
|
|
17184
|
-
var _d = useState(false), isLoading = _d[0], setIsLoading = _d[1];
|
|
17185
|
-
var _e = useState(""), error = _e[0], setError = _e[1];
|
|
17186
|
-
var updateView = useMutation({
|
|
17187
|
-
mutationFn: upsertView,
|
|
17188
|
-
onSuccess: function () {
|
|
17189
|
-
handleClose(true);
|
|
17190
|
-
},
|
|
17191
|
-
onError: function (error) {
|
|
17192
|
-
setError(error.message);
|
|
17193
|
-
},
|
|
17194
|
-
});
|
|
17195
|
-
var handleSubmit = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
17196
|
-
return __generator(this, function (_a) {
|
|
17197
|
-
switch (_a.label) {
|
|
17198
|
-
case 0:
|
|
17199
|
-
setIsLoading(true);
|
|
17200
|
-
if (!!isNil(view)) return [3 /*break*/, 2];
|
|
17201
|
-
return [4 /*yield*/, updateView.mutate({
|
|
17202
|
-
viewId: view.ViewId,
|
|
17203
|
-
viewName: newName,
|
|
17204
|
-
isPublic: isPublic,
|
|
17205
|
-
})];
|
|
17206
|
-
case 1:
|
|
17207
|
-
_a.sent();
|
|
17208
|
-
_a.label = 2;
|
|
17209
|
-
case 2:
|
|
17210
|
-
setIsLoading(false);
|
|
17211
|
-
return [2 /*return*/];
|
|
17212
|
-
}
|
|
17213
|
-
});
|
|
17214
|
-
}); };
|
|
17215
|
-
var handleChangeInput = function (e) {
|
|
17216
|
-
e.preventDefault();
|
|
17217
|
-
var name = e.target.value;
|
|
17218
|
-
setNewName(name);
|
|
17219
|
-
};
|
|
17220
|
-
var handleCheck = function () { return setIsPublic(!isPublic); };
|
|
17221
|
-
useEffect(function () {
|
|
17222
|
-
if (view) {
|
|
17223
|
-
setIsPublic(view.IsPublic);
|
|
17224
|
-
setNewName(view.ViewName);
|
|
17225
|
-
}
|
|
17226
|
-
}, [view]);
|
|
17227
|
-
return (React__default.createElement(React__default.Fragment, null,
|
|
17228
|
-
React__default.createElement(MesfModal, { open: open, handleClose: function () { return handleClose(false); }, maxWidth: "xl", "aria-labelledby": "modal-modal-title", "aria-describedby": "modal-modal-description", title: "Update View" },
|
|
17229
|
-
React__default.createElement(Divider, null),
|
|
17230
|
-
React__default.createElement(MesfModal.Content, null, !isNil(view) ? (React__default.createElement(Grid2, { container: true, spacing: 5, style: { padding: "2rem" } },
|
|
17231
|
-
React__default.createElement(Grid2, { size: { md: 12, xs: 12 }, style: { padding: "10px", width: "100%" } },
|
|
17232
|
-
React__default.createElement(TextField, { required: true, sx: {
|
|
17233
|
-
color: "rgba(0, 0, 0, 0.87)",
|
|
17234
|
-
cursor: "text",
|
|
17235
|
-
fontSize: "0.7rem",
|
|
17236
|
-
boxSizing: "border-box",
|
|
17237
|
-
fontFamily: '"Roboto", "Helvetica", "Arial", sans-serif',
|
|
17238
|
-
fontWeight: 400,
|
|
17239
|
-
lineHeight: 1.1876,
|
|
17240
|
-
letterSpacing: "0.00938em",
|
|
17241
|
-
"& .MuiOutlinedInput-input": {
|
|
17242
|
-
padding: "10px 10px",
|
|
17243
|
-
},
|
|
17244
|
-
}, id: "viewName", label: "Name", variant: "outlined", onChange: handleChangeInput, value: newName })),
|
|
17245
|
-
React__default.createElement(Grid2, { size: { md: 12, xs: 12 }, sx: {
|
|
17246
|
-
paddingTop: "2rem",
|
|
17247
|
-
userSelect: "none",
|
|
17248
|
-
paddingLeft: "1rem",
|
|
17249
|
-
"& > label": {
|
|
17250
|
-
display: "flex",
|
|
17251
|
-
alignItems: "center",
|
|
17252
|
-
gap: "15px",
|
|
17253
|
-
},
|
|
17254
|
-
'& input[type="checkbox"]': {
|
|
17255
|
-
zoom: 1.5,
|
|
17256
|
-
},
|
|
17257
|
-
} },
|
|
17258
|
-
React__default.createElement("label", null,
|
|
17259
|
-
React__default.createElement("input", { type: "checkbox", checked: isPublic, onChange: handleCheck }),
|
|
17260
|
-
React__default.createElement(Typography$1, null, "Public"))))) : (React__default.createElement(Typography$1, null, "ERROR: No view detected, please select one"))),
|
|
17261
|
-
React__default.createElement(Divider, null),
|
|
17262
|
-
React__default.createElement(MesfModal.Actions, null,
|
|
17263
|
-
React__default.createElement(Grid2, { container: true, spacing: 1, style: {
|
|
17264
|
-
display: "flex",
|
|
17265
|
-
alignItems: "flex-end",
|
|
17266
|
-
justifyContent: "flex-end",
|
|
17267
|
-
} },
|
|
17268
|
-
React__default.createElement(Grid2, null,
|
|
17269
|
-
React__default.createElement(Button, { variant: "outlined", color: "secondary", onClick: function () { return handleClose(false); } }, "Cancel")),
|
|
17270
|
-
React__default.createElement(Grid2, null, !isNil(view) ? (React__default.createElement(ButtonWithLoading, { variant: "contained", color: "primary", onClick: handleSubmit, isLoading: isLoading }, "Update")) : (React__default.createElement(Button, { variant: "contained", style: { marginRight: "1rem" }, color: "primary", onClick: function () { return handleClose(false); } }, "Ok")))))),
|
|
17271
|
-
React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(""); } })));
|
|
17272
|
-
};
|
|
17273
|
-
|
|
17274
|
-
var LoadViewModal = function (_a) {
|
|
17275
|
-
var _b;
|
|
17276
|
-
var open = _a.open, handleClose = _a.handleClose;
|
|
17277
|
-
var queryClient = useQueryClient();
|
|
17278
|
-
var _c = useTrendingContext(), _d = _c.state, views = _d.views, viewSelected = _d.viewSelected, _e = _c.actions, setViewTagsAndRefetch = _e.setViewTagsAndRefetch, setViewSelected = _e.setViewSelected;
|
|
17279
|
-
var _f = useState(null), viewForDelete = _f[0], setViewForDelete = _f[1];
|
|
17280
|
-
var _g = useState(null), viewForEdit = _g[0], setViewForEdit = _g[1];
|
|
17281
|
-
var _h = useState(null), optionSelected = _h[0], setOptionSelected = _h[1];
|
|
17282
|
-
var _j = useState(false), deleteViewModalOpen = _j[0], setDeleteViewModalOpen = _j[1];
|
|
17283
|
-
var _k = useState(false), editViewModalOpen = _k[0], setEditViewModalOpen = _k[1];
|
|
17284
|
-
var _l = useState(false), allViewsChecked = _l[0], setAllViewsChecked = _l[1];
|
|
17285
|
-
var _m = useState(""), error = _m[0], setError = _m[1];
|
|
17286
|
-
var _o = useSearchViewTags({ viewId: (_b = viewSelected === null || viewSelected === void 0 ? void 0 : viewSelected.ViewId) !== null && _b !== void 0 ? _b : null }), viewTags = _o.data, viewTagsLoading = _o.isLoading; _o.isError; _o.error; var viewTagsSuccess = _o.isSuccess, viewTagsFetched = _o.isFetched;
|
|
17287
|
-
var handleSelect = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
17288
|
-
return __generator(this, function (_a) {
|
|
17289
|
-
switch (_a.label) {
|
|
17290
|
-
case 0:
|
|
17291
|
-
if (!optionSelected) return [3 /*break*/, 2];
|
|
17292
|
-
setViewSelected(optionSelected);
|
|
17293
|
-
return [4 /*yield*/, queryClient.invalidateQueries({
|
|
17294
|
-
queryKey: ["viewTags", viewSelected.ViewId],
|
|
17295
|
-
})];
|
|
17296
|
-
case 1:
|
|
17297
|
-
_a.sent();
|
|
17298
|
-
handleClose(true);
|
|
17299
|
-
return [2 /*return*/];
|
|
17300
|
-
case 2:
|
|
17301
|
-
handleClose(false);
|
|
17302
|
-
return [2 /*return*/];
|
|
17303
|
-
}
|
|
17304
|
-
});
|
|
17305
|
-
}); };
|
|
17306
|
-
var handleDeleteView = function (view, e) { return __awaiter(void 0, void 0, void 0, function () {
|
|
17307
|
-
return __generator(this, function (_a) {
|
|
17308
|
-
e.stopPropagation();
|
|
17309
|
-
if (view.ViewId === (viewSelected === null || viewSelected === void 0 ? void 0 : viewSelected.ViewId)) {
|
|
17310
|
-
setError("Can not delete current view");
|
|
17311
|
-
}
|
|
17312
|
-
else {
|
|
17313
|
-
setViewForDelete(view);
|
|
17314
|
-
setDeleteViewModalOpen(true);
|
|
17315
|
-
}
|
|
17316
|
-
return [2 /*return*/];
|
|
17317
|
-
});
|
|
17318
|
-
}); };
|
|
17319
|
-
var handleEditView = function (view, e) { return __awaiter(void 0, void 0, void 0, function () {
|
|
17320
|
-
return __generator(this, function (_a) {
|
|
17321
|
-
setViewForEdit(view);
|
|
17322
|
-
setEditViewModalOpen(true);
|
|
17323
|
-
return [2 /*return*/];
|
|
17324
|
-
});
|
|
17325
|
-
}); };
|
|
17326
|
-
var handleAllViewsCheckbox = function () {
|
|
17327
|
-
setAllViewsChecked(function (prev) { return !prev; });
|
|
17328
|
-
};
|
|
17329
|
-
var publicViews = useMemo(function () {
|
|
17330
|
-
return views.filter(function (v) { return v.IsPublic === true; });
|
|
17331
|
-
}, [views, allViewsChecked]);
|
|
17332
|
-
useEffect(function () {
|
|
17333
|
-
if (viewTagsSuccess && viewTagsFetched) {
|
|
17334
|
-
setViewTagsAndRefetch((viewTags !== null && viewTags !== void 0 ? viewTags : []).reduce(function (carr, curr, idx) {
|
|
17335
|
-
if (isNil(curr.Color)) {
|
|
17336
|
-
curr.Color = getRandomColor();
|
|
17337
|
-
}
|
|
17338
|
-
carr[curr.TagId] = {
|
|
17339
|
-
viewTag: curr,
|
|
17340
|
-
order: idx,
|
|
17341
|
-
};
|
|
17342
|
-
return carr;
|
|
17343
|
-
}, {}));
|
|
17344
|
-
}
|
|
17345
|
-
}, [viewTagsSuccess, viewTagsFetched]);
|
|
17346
|
-
return (React__default.createElement("div", null,
|
|
17347
|
-
React__default.createElement(MesfModal, { open: open, handleClose: function () { return handleClose(false); }, maxWidth: "xl", "aria-labelledby": "modal-modal-title", "aria-describedby": "modal-modal-description", title: "Views" },
|
|
17348
|
-
React__default.createElement(MesfModal.Content, null,
|
|
17349
|
-
React__default.createElement(Grid2, { container: true }, views.length ? (React__default.createElement(React__default.Fragment, null,
|
|
17350
|
-
React__default.createElement(Grid2, { size: { md: 12 } },
|
|
17351
|
-
React__default.createElement(Box, { sx: {
|
|
17352
|
-
paddingBottom: "1rem",
|
|
17353
|
-
userSelect: "none",
|
|
17354
|
-
paddingLeft: "1rem",
|
|
17355
|
-
"& > label": {
|
|
17356
|
-
display: "flex",
|
|
17357
|
-
alignItems: "center",
|
|
17358
|
-
gap: "15px",
|
|
17359
|
-
},
|
|
17360
|
-
'& input[type="checkbox"]': {
|
|
17361
|
-
zoom: 1.5,
|
|
17362
|
-
},
|
|
17363
|
-
} },
|
|
17364
|
-
React__default.createElement("label", { htmlFor: "" },
|
|
17365
|
-
React__default.createElement("input", { type: "checkbox", checked: allViewsChecked, onChange: handleAllViewsCheckbox }),
|
|
17366
|
-
React__default.createElement(Typography$1, null, "All Views")))),
|
|
17367
|
-
React__default.createElement(Grid2, { size: { md: 12 } },
|
|
17368
|
-
React__default.createElement(Autocomplete$1, { size: "small", id: "list-of-views", noOptionsText: allViewsChecked
|
|
17369
|
-
? "No views detected, please create a new view"
|
|
17370
|
-
: "No private views detected, please create a new view .", options: allViewsChecked ? views : publicViews, getOptionLabel: function (option) { return option.ViewName; }, onChange: function (ev, val) { return setOptionSelected(val); }, defaultValue: optionSelected || viewSelected, style: { width: "100%" }, renderOption: function (props, option) { return (React__default.createElement("li", __assign({}, props, { key: option.ViewId }),
|
|
17371
|
-
React__default.createElement("div", { style: {
|
|
17372
|
-
display: "flex",
|
|
17373
|
-
justifyContent: "flex-start",
|
|
17374
|
-
alignItems: "center",
|
|
17375
|
-
width: "100%",
|
|
17376
|
-
} },
|
|
17377
|
-
React__default.createElement("div", { style: {
|
|
17378
|
-
flexGrow: 1,
|
|
17379
|
-
} }, option.ViewName),
|
|
17380
|
-
React__default.createElement("div", { style: {
|
|
17381
|
-
display: "flex",
|
|
17382
|
-
justifyContent: "flex-end",
|
|
17383
|
-
alignItems: "center",
|
|
17384
|
-
flex: 1,
|
|
17385
|
-
} },
|
|
17386
|
-
option.IsPublic ? ("") : (React__default.createElement(React__default.Fragment, null,
|
|
17387
|
-
React__default.createElement(Tooltip, { title: "Private", arrow: true },
|
|
17388
|
-
React__default.createElement(LockIcon, { fontSize: "small", style: {
|
|
17389
|
-
color: "black",
|
|
17390
|
-
height: "18px",
|
|
17391
|
-
width: "18px",
|
|
17392
|
-
cursor: "auto",
|
|
17393
|
-
} })))),
|
|
17394
|
-
React__default.createElement(IconButton$1, { onClick: function (e) { return handleEditView(option); } },
|
|
17395
|
-
React__default.createElement(CreateIcon, { fontSize: "small", color: "primary", style: {
|
|
17396
|
-
height: "18px",
|
|
17397
|
-
width: "18px",
|
|
17398
|
-
cursor: "pointer",
|
|
17399
|
-
} })),
|
|
17400
|
-
React__default.createElement(IconButton$1, { onClick: function (e) { return handleDeleteView(option, e); } },
|
|
17401
|
-
React__default.createElement(DeleteIcon, { fontSize: "small", color: "secondary", style: {
|
|
17402
|
-
height: "18px",
|
|
17403
|
-
width: "18px",
|
|
17404
|
-
cursor: "pointer",
|
|
17405
|
-
} })))))); }, renderInput: function (params) { return (React__default.createElement(TextField, __assign({}, params, { label: "Views", variant: "outlined" }))); } })))) : (React__default.createElement(Typography$1, null, "No views detected, please add one")))),
|
|
17406
|
-
React__default.createElement(MesfModal.Actions, null,
|
|
17407
|
-
React__default.createElement("div", { style: { paddingTop: "1rem" } },
|
|
17408
|
-
React__default.createElement(Button, { variant: "outlined", style: { marginRight: "1rem" }, color: "secondary", onClick: function () { return handleClose(false); } }, "Cancel"),
|
|
17409
|
-
views.length ? (React__default.createElement(ButtonWithLoading, { onClick: handleSelect, variant: "contained", color: "primary", isLoading: viewTagsLoading, style: { marginRight: "1rem" } }, "Apply")) : (React__default.createElement(Button, { variant: "contained", style: { marginRight: "1rem" }, color: "primary", onClick: function () { return handleClose(false); } }, "Ok"))))),
|
|
17410
|
-
React__default.createElement(DeleteViewModal, { open: deleteViewModalOpen, view: viewForDelete, handleClose: function (shouldUpdate) { return __awaiter(void 0, void 0, void 0, function () {
|
|
17411
|
-
return __generator(this, function (_a) {
|
|
17412
|
-
switch (_a.label) {
|
|
17413
|
-
case 0:
|
|
17414
|
-
setDeleteViewModalOpen(false);
|
|
17415
|
-
if (!shouldUpdate) return [3 /*break*/, 2];
|
|
17416
|
-
return [4 /*yield*/, queryClient.invalidateQueries({ queryKey: ["views"] })];
|
|
17417
|
-
case 1:
|
|
17418
|
-
_a.sent();
|
|
17419
|
-
_a.label = 2;
|
|
17420
|
-
case 2: return [2 /*return*/];
|
|
17421
|
-
}
|
|
17422
|
-
});
|
|
17423
|
-
}); } }),
|
|
17424
|
-
React__default.createElement(EditViewModal, { open: editViewModalOpen, view: viewForEdit, handleClose: function (shouldUpdate) { return __awaiter(void 0, void 0, void 0, function () {
|
|
17425
|
-
return __generator(this, function (_a) {
|
|
17426
|
-
switch (_a.label) {
|
|
17427
|
-
case 0:
|
|
17428
|
-
setEditViewModalOpen(false);
|
|
17429
|
-
if (!shouldUpdate) return [3 /*break*/, 2];
|
|
17430
|
-
return [4 /*yield*/, queryClient.invalidateQueries({ queryKey: ["views"] })];
|
|
17431
|
-
case 1:
|
|
17432
|
-
_a.sent();
|
|
17433
|
-
_a.label = 2;
|
|
17434
|
-
case 2: return [2 /*return*/];
|
|
17435
|
-
}
|
|
17436
|
-
});
|
|
17437
|
-
}); } }),
|
|
17438
|
-
React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(""); } })));
|
|
17439
|
-
};
|
|
17440
|
-
|
|
17441
|
-
var SaveAsViewModal = function (_a) {
|
|
17442
|
-
var open = _a.open, handleClose = _a.handleClose;
|
|
17443
|
-
var _b = useState(false), isLoading = _b[0], setIsLoading = _b[1];
|
|
17444
|
-
var _c = useState(""), error = _c[0], setError = _c[1];
|
|
17445
|
-
var _d = useTrendingContext(), _e = _d.state, viewTags = _e.viewTags, views = _e.views, viewSelected = _e.viewSelected, _f = _d.actions, setViewSelected = _f.setViewSelected; _f.setViewTags;
|
|
17446
|
-
var _g = useState(true), isPublic = _g[0], setIsPublic = _g[1];
|
|
17447
|
-
var _h = useState(""), newView = _h[0], setNewView = _h[1];
|
|
17448
|
-
var handleCheck = function () { return setIsPublic(!isPublic); };
|
|
17449
|
-
var updateViewTag = useMutation({
|
|
17450
|
-
mutationFn: upsertViewTag,
|
|
17451
|
-
onError: function (error) {
|
|
17452
|
-
setError(error.message);
|
|
17453
|
-
},
|
|
17454
|
-
});
|
|
17455
|
-
var updateView = useMutation({
|
|
17456
|
-
mutationFn: upsertView,
|
|
17457
|
-
onSuccess: function (viewId) { return __awaiter(void 0, void 0, void 0, function () {
|
|
17458
|
-
var shouldClose;
|
|
17459
|
-
return __generator(this, function (_a) {
|
|
17460
|
-
switch (_a.label) {
|
|
17461
|
-
case 0:
|
|
17462
|
-
shouldClose = true;
|
|
17463
|
-
return [4 /*yield*/, Promise.allSettled(Object.values(viewTags).map(function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {
|
|
17464
|
-
var _c = _b.viewTag, TagId = _c.TagId, Color = _c.Color, MinScale = _c.MinScale, MaxScale = _c.MaxScale, IsAutoScale = _c.IsAutoScale, IsVisible = _c.IsVisible, Unit = _c.Unit;
|
|
17465
|
-
return __generator(this, function (_d) {
|
|
17466
|
-
switch (_d.label) {
|
|
17467
|
-
case 0: return [4 /*yield*/, updateViewTag.mutate({
|
|
17468
|
-
viewId: viewId,
|
|
17469
|
-
tagId: TagId,
|
|
17470
|
-
color: Color,
|
|
17471
|
-
minScale: MinScale,
|
|
17472
|
-
maxScale: MaxScale,
|
|
17473
|
-
isVisible: IsVisible,
|
|
17474
|
-
isAutoScale: IsAutoScale,
|
|
17475
|
-
unit: Unit,
|
|
17476
|
-
})];
|
|
17477
|
-
case 1:
|
|
17478
|
-
_d.sent();
|
|
17479
|
-
return [2 /*return*/];
|
|
17480
|
-
}
|
|
17481
|
-
});
|
|
17482
|
-
}); }))];
|
|
17483
|
-
case 1:
|
|
17484
|
-
_a.sent();
|
|
17485
|
-
handleClose(shouldClose);
|
|
17486
|
-
return [2 /*return*/];
|
|
17487
|
-
}
|
|
17488
|
-
});
|
|
17489
|
-
}); },
|
|
17490
|
-
onError: function (error) {
|
|
17491
|
-
setError(error.message);
|
|
17492
|
-
},
|
|
17493
|
-
});
|
|
17494
|
-
var handleSubmit = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
17495
|
-
return __generator(this, function (_a) {
|
|
17496
|
-
switch (_a.label) {
|
|
17497
|
-
case 0:
|
|
17498
|
-
setIsLoading(true);
|
|
17499
|
-
return [4 /*yield*/, updateView.mutate({
|
|
17500
|
-
viewId: null,
|
|
17501
|
-
viewName: newView,
|
|
17502
|
-
isPublic: isPublic,
|
|
17503
|
-
})];
|
|
17504
|
-
case 1:
|
|
17505
|
-
_a.sent();
|
|
17506
|
-
setIsLoading(false);
|
|
17507
|
-
return [2 /*return*/];
|
|
17508
|
-
}
|
|
17509
|
-
});
|
|
17510
|
-
}); };
|
|
17511
|
-
return (React__default.createElement(React__default.Fragment, null,
|
|
17512
|
-
React__default.createElement(MesfModal, { open: open, handleClose: function () { return handleClose(false); }, maxWidth: "xl", "aria-labelledby": "modal-modal-title", "aria-describedby": "modal-modal-description", title: "Save View As" },
|
|
17513
|
-
React__default.createElement(Divider, null),
|
|
17514
|
-
React__default.createElement(MesfModal.Content, null,
|
|
17515
|
-
React__default.createElement(Grid2, { container: true, spacing: 5, style: { padding: "1rem" } },
|
|
17516
|
-
React__default.createElement(Grid2, { size: { md: 12, xs: 12 }, style: { padding: "10px", width: "100%" } }, views.length && viewSelected ? (React__default.createElement(Autocomplete$1, { size: "small", id: "list-of-views", options: views, defaultValue: viewSelected, getOptionLabel: function (option) {
|
|
17517
|
-
if (typeof option === "string") {
|
|
17518
|
-
return option;
|
|
17519
|
-
}
|
|
17520
|
-
return option.ViewName;
|
|
17521
|
-
}, freeSolo: true, onChange: function (ev, val) {
|
|
17522
|
-
setViewSelected(val);
|
|
17523
|
-
if (val) {
|
|
17524
|
-
setNewView("");
|
|
17525
|
-
}
|
|
17526
|
-
}, onInputChange: function (event, newInputValue) {
|
|
17527
|
-
var isValueInViews = views.some(function (view) { return view.ViewName === newInputValue; });
|
|
17528
|
-
if (!isValueInViews) {
|
|
17529
|
-
setNewView(newInputValue);
|
|
17530
|
-
}
|
|
17531
|
-
}, style: { width: "100%" }, renderInput: function (params) { return (React__default.createElement(TextField, __assign({}, params, { label: "Views", variant: "outlined" }))); } })) : (React__default.createElement(Box, null,
|
|
17532
|
-
React__default.createElement(TextField, { style: { minWidth: "600px" }, size: "small", id: "outlined-basic", label: "View name", variant: "outlined", value: newView, onChange: function (e) { return setNewView(e.target.value); } }))))),
|
|
17533
|
-
React__default.createElement(Grid2, { size: { md: 12, xs: 12 }, sx: {
|
|
17534
|
-
paddingTop: "2rem",
|
|
17535
|
-
userSelect: "none",
|
|
17536
|
-
paddingLeft: "1rem",
|
|
17537
|
-
"& > label": {
|
|
17538
|
-
display: "flex",
|
|
17539
|
-
alignItems: "center",
|
|
17540
|
-
gap: "15px",
|
|
17541
|
-
},
|
|
17542
|
-
'& input[type="checkbox"]': {
|
|
17543
|
-
zoom: 1.5,
|
|
17544
|
-
},
|
|
17545
|
-
} },
|
|
17546
|
-
React__default.createElement("label", null,
|
|
17547
|
-
"Public",
|
|
17548
|
-
React__default.createElement("input", { type: "checkbox", checked: isPublic, onChange: handleCheck })))),
|
|
17549
|
-
React__default.createElement(Divider, null),
|
|
17550
|
-
React__default.createElement(MesfModal.Actions, null,
|
|
17551
|
-
React__default.createElement(Grid2, { container: true, spacing: 1, style: {
|
|
17552
|
-
display: "flex",
|
|
17553
|
-
alignItems: "flex-end",
|
|
17554
|
-
justifyContent: "flex-end",
|
|
17555
|
-
} },
|
|
17556
|
-
React__default.createElement(Grid2, null,
|
|
17557
|
-
React__default.createElement(Button, { variant: "outlined", color: "secondary", onClick: function () { return handleClose(false); } }, "Cancel")),
|
|
17558
|
-
React__default.createElement(Grid2, null,
|
|
17559
|
-
React__default.createElement(ButtonWithLoading, { variant: "contained", color: "primary", onClick: handleSubmit, isLoading: isLoading }, "Save"))))),
|
|
17560
|
-
React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(""); } })));
|
|
17561
|
-
};
|
|
17562
|
-
|
|
17563
|
-
var customStyles = "\n ul, ol {\n list-style-type: none;\n margin: 0;\n padding: 0;\n }\n";
|
|
17564
|
-
var TagFolderCustomNode = function (_a) {
|
|
17565
|
-
var _b, _c, _d, _e, _f, _g, _h, _j;
|
|
17566
|
-
var node = _a.node, _k = _a.options, depth = _k.depth, isOpen = _k.isOpen, onToggle = _k.onToggle, containerRef = _k.containerRef, options = _a.options, setOpenTagFolders = _a.setOpenTagFolders, openTagFolders = _a.openTagFolders, handleSelect = _a.handleSelect, setContextMenuOver = _a.setContextMenuOver, isSelected = _a.isSelected;
|
|
17567
|
-
var onClickHandler = function () {
|
|
17568
|
-
var _a;
|
|
17569
|
-
var _b;
|
|
17570
|
-
if (options.hasChild || ((_b = node.data) === null || _b === void 0 ? void 0 : _b.TagTypeCode) === "F") {
|
|
17571
|
-
if (openTagFolders[node.id]) {
|
|
17572
|
-
var newOpenTagFolders = __assign({}, openTagFolders);
|
|
17573
|
-
delete newOpenTagFolders[node.id];
|
|
17574
|
-
setOpenTagFolders(newOpenTagFolders);
|
|
17575
|
-
}
|
|
17576
|
-
else {
|
|
17577
|
-
setOpenTagFolders(__assign(__assign({}, openTagFolders), (_a = {}, _a[node.id] = node.id, _a)));
|
|
17578
|
-
}
|
|
17579
|
-
onToggle();
|
|
17580
|
-
return;
|
|
17581
|
-
}
|
|
17582
|
-
if (!options.hasChild) {
|
|
17583
|
-
handleSelect(node);
|
|
17584
|
-
}
|
|
17585
|
-
};
|
|
17586
|
-
var handleContextMenu = useCallback(function (ev) {
|
|
17587
|
-
ev.stopPropagation();
|
|
17588
|
-
ev.preventDefault();
|
|
17589
|
-
setContextMenuOver(node, ev);
|
|
17590
|
-
}, [node.id, setContextMenuOver]);
|
|
17591
|
-
useEffect(function () {
|
|
17592
|
-
var _a;
|
|
17593
|
-
(_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener("contextmenu", handleContextMenu);
|
|
17594
|
-
return function () {
|
|
17595
|
-
var _a;
|
|
17596
|
-
(_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener("contextmenu", handleContextMenu);
|
|
17597
|
-
};
|
|
17598
|
-
}, []);
|
|
17599
|
-
return (React__default.createElement(Box, { onClick: onClickHandler, sx: {
|
|
17600
|
-
paddingLeft: depth * 20,
|
|
17601
|
-
cursor: "pointer",
|
|
17602
|
-
listStyleType: "none",
|
|
17603
|
-
margin: 0,
|
|
17604
|
-
padding: 0,
|
|
17605
|
-
alignItems: "center",
|
|
17606
|
-
display: "flex",
|
|
17607
|
-
height: "32px",
|
|
17608
|
-
backgroundColor: isSelected ? "#e8f0fe" : "",
|
|
17609
|
-
"&:hover": {
|
|
17610
|
-
backgroundColor: "#f2f2f2",
|
|
17611
|
-
},
|
|
17612
|
-
} },
|
|
17613
|
-
React__default.createElement("style", null, customStyles),
|
|
17614
|
-
React__default.createElement(React__default.Fragment, null,
|
|
17615
|
-
options.hasChild ? (React__default.createElement("div", null, isOpen ? React__default.createElement(ArrowDropDownIcon$1, null) : React__default.createElement(ArrowRight, null))) : null,
|
|
17616
|
-
React__default.createElement("div", null, options.hasChild || ((_b = node.data) === null || _b === void 0 ? void 0 : _b.TagTypeCode) === "F" ? (React__default.createElement(FolderIcon, null)) : (React__default.createElement(InsertChartIcon, { fontSize: "small" })))),
|
|
17617
|
-
((_c = node.data) === null || _c === void 0 ? void 0 : _c.TagName) && (React__default.createElement(React__default.Fragment, null,
|
|
17618
|
-
((_d = node.data) === null || _d === void 0 ? void 0 : _d.TagTypeCode) && ((_e = node.data) === null || _e === void 0 ? void 0 : _e.TagTypeCode) !== "F" && (React__default.createElement("div", { style: {
|
|
17619
|
-
backgroundColor: ((_f = node.data) === null || _f === void 0 ? void 0 : _f.TagTypeCode) === "A" ? "#AD48C4" : "#C46F48",
|
|
17620
|
-
margin: "0 5px",
|
|
17621
|
-
width: "25px",
|
|
17622
|
-
height: "25px",
|
|
17623
|
-
color: "white",
|
|
17624
|
-
display: "flex",
|
|
17625
|
-
justifyContent: "center",
|
|
17626
|
-
alignItems: "center",
|
|
17627
|
-
cursor: "pointer",
|
|
17628
|
-
border: "1px black solid",
|
|
17629
|
-
} }, (_g = node.data) === null || _g === void 0 ? void 0 : _g.TagTypeCode)),
|
|
17630
|
-
React__default.createElement(Tooltip, { title: node.data.TagName, placement: "top", arrow: true },
|
|
17631
|
-
React__default.createElement(Typography$1, { variant: "body2" }, ((_h = node.data) === null || _h === void 0 ? void 0 : _h.Alias) || ((_j = node.data) === null || _j === void 0 ? void 0 : _j.TagName)))))));
|
|
17632
|
-
};
|
|
17633
|
-
|
|
17634
|
-
var TagSelectionModal = function (_a) {
|
|
17635
|
-
var isOpen = _a.isOpen; _a.onClose; var onTagSelect = _a.onTagSelect;
|
|
17636
|
-
var _b = useState(false), isLoading = _b[0], setIsLoading = _b[1];
|
|
17637
|
-
var _c = useState(""), error = _c[0], setError = _c[1];
|
|
17638
|
-
var _d = useState([]), tagsTreeData = _d[0], setTagsTreeData = _d[1];
|
|
17639
|
-
var _e = useState(null), tagNodeSelectedInTree = _e[0], setTagNodeSelectedInTree = _e[1];
|
|
17640
|
-
var _f = useState(null), anchorPoint = _f[0], setAnchorPoint = _f[1];
|
|
17641
|
-
var _g = useState(false), showContextMenu = _g[0], setShowContextMenu = _g[1];
|
|
17642
|
-
var backendOffset = 1000000;
|
|
17643
|
-
var _h = useState({}), openTagFolders = _h[0], setOpenTagFolders = _h[1];
|
|
17644
|
-
var _j = useState([]), selectedNodes = _j[0], setSelectedNodes = _j[1];
|
|
17645
|
-
var handleContextMenu = function (data, e) {
|
|
17646
|
-
e.preventDefault();
|
|
17647
|
-
var top = e.clientY;
|
|
17648
|
-
var left = e.clientX;
|
|
17649
|
-
setAnchorPoint({ x: left, y: top });
|
|
17650
|
-
setSelectedNodes([data]);
|
|
17651
|
-
setShowContextMenu(true);
|
|
17652
|
-
var selectedNode = tagsTreeData.find(function (node) { var _a; return ((_a = node.data) === null || _a === void 0 ? void 0 : _a.TagId) === data.id; });
|
|
17653
|
-
if (selectedNode) {
|
|
17654
|
-
setTagNodeSelectedInTree(selectedNode);
|
|
17655
|
-
}
|
|
17656
|
-
};
|
|
17657
|
-
var _k = useSearchTagsTree(), tagsTree = _k.data, tagsTreeLoading = _k.isLoading, tagsTreeIsError = _k.isError, tagsTreeError = _k.error, tagsTreeIsSuccess = _k.isSuccess, tagsTreeIsFetched = _k.isFetched, refetch = _k.refetch;
|
|
17658
|
-
var updateTagFolder = useMutation({
|
|
17659
|
-
mutationFn: upsertTagFolder,
|
|
17660
|
-
onError: function (error) {
|
|
17661
|
-
setError(error.message);
|
|
17662
|
-
},
|
|
17663
|
-
});
|
|
17664
|
-
var changeTagFolderTag = useMutation({
|
|
17665
|
-
mutationFn: changeTagFolderToTag,
|
|
17666
|
-
onError: function (error) {
|
|
17667
|
-
setError(error.message);
|
|
17668
|
-
},
|
|
17669
|
-
});
|
|
17670
|
-
var expanded = useMemo(function () {
|
|
17671
|
-
return Object.keys(openTagFolders).map(function (el) { return Number.parseInt(el); });
|
|
17672
|
-
}, [openTagFolders]);
|
|
17673
|
-
var handleDrop = function (tree, options) { return __awaiter(void 0, void 0, void 0, function () {
|
|
17674
|
-
var tagId, newFolderId;
|
|
17675
|
-
var _a, _b;
|
|
17676
|
-
return __generator(this, function (_c) {
|
|
17677
|
-
switch (_c.label) {
|
|
17678
|
-
case 0:
|
|
17679
|
-
setIsLoading(true);
|
|
17680
|
-
if (!options.dragSource) return [3 /*break*/, 5];
|
|
17681
|
-
tagId = Number(options.dragSource.id);
|
|
17682
|
-
newFolderId = Number((_a = options.dropTarget) === null || _a === void 0 ? void 0 : _a.id) || null;
|
|
17683
|
-
if (tagId === newFolderId) {
|
|
17684
|
-
setIsLoading(false);
|
|
17685
|
-
return [2 /*return*/];
|
|
17686
|
-
}
|
|
17687
|
-
if (!(((_b = options.dragSource.data) === null || _b === void 0 ? void 0 : _b.TagTypeCode) === "F")) return [3 /*break*/, 2];
|
|
17688
|
-
return [4 /*yield*/, updateTagFolder.mutate({
|
|
17689
|
-
tagFolderId: tagId,
|
|
17690
|
-
parentTagFolderId: newFolderId,
|
|
17691
|
-
tagFolderName: options.dragSource.text,
|
|
17692
|
-
isActive: true,
|
|
17693
|
-
})];
|
|
17694
|
-
case 1:
|
|
17695
|
-
_c.sent();
|
|
17696
|
-
return [3 /*break*/, 4];
|
|
17697
|
-
case 2: return [4 /*yield*/, changeTagFolderTag.mutate({ tagId: tagId, tagFolderId: newFolderId })];
|
|
17698
|
-
case 3:
|
|
17699
|
-
_c.sent();
|
|
17700
|
-
_c.label = 4;
|
|
17701
|
-
case 4:
|
|
17702
|
-
setTagsTreeData(tree);
|
|
17703
|
-
_c.label = 5;
|
|
17704
|
-
case 5:
|
|
17705
|
-
setIsLoading(false);
|
|
17706
|
-
return [2 /*return*/];
|
|
17707
|
-
}
|
|
17708
|
-
});
|
|
17709
|
-
}); };
|
|
17710
|
-
var handleClick = function (node) {
|
|
17711
|
-
if (node.data) {
|
|
17712
|
-
onTagSelect(node.data);
|
|
17713
|
-
}
|
|
17714
|
-
};
|
|
17715
|
-
var handleCloseContextMenu = function (e) {
|
|
17716
|
-
if (showContextMenu) {
|
|
17717
|
-
setShowContextMenu(false);
|
|
17718
|
-
}
|
|
17719
|
-
};
|
|
17720
|
-
useEffect(function () {
|
|
17721
|
-
if (isOpen) {
|
|
17722
|
-
refetch();
|
|
17723
|
-
}
|
|
17724
|
-
}, [isOpen]);
|
|
17725
|
-
useEffect(function () {
|
|
17726
|
-
if (isOpen) {
|
|
17727
|
-
var tree = buildTagsTreeV2(tagsTree !== null && tagsTree !== void 0 ? tagsTree : []);
|
|
17728
|
-
setTagsTreeData(tree);
|
|
17729
|
-
}
|
|
17730
|
-
}, [tagsTreeIsSuccess, tagsTreeIsFetched]);
|
|
17731
|
-
useEffect(function () {
|
|
17732
|
-
if (tagsTreeError && tagsTreeIsError) {
|
|
17733
|
-
setError(tagsTreeError.message);
|
|
17734
|
-
}
|
|
17735
|
-
}, [tagsTreeError, tagsTreeIsError]);
|
|
17736
|
-
return (React__default.createElement(React__default.Fragment, null,
|
|
17737
|
-
React__default.createElement("div", { style: {
|
|
17738
|
-
display: isOpen ? "block" : "none",
|
|
17739
|
-
minHeight: "700px",
|
|
17740
|
-
minWidth: "800px",
|
|
17741
|
-
}, onClick: handleCloseContextMenu },
|
|
17742
|
-
React__default.createElement("div", { style: { overflowY: "auto", maxHeight: "700px" } }, isLoading || tagsTreeLoading ? (React__default.createElement(Grid2, { container: true, justifyContent: "center", alignItems: "center", style: { minHeight: "100px" } },
|
|
17743
|
-
React__default.createElement(CircularProgress, { size: "2rem" }))) : (React__default.createElement(DndProvider$1, { backend: HTML5Backend },
|
|
17744
|
-
React__default.createElement(Box, { sx: {
|
|
17745
|
-
"& .root": {
|
|
17746
|
-
boxSizing: "border-box",
|
|
17747
|
-
height: "100%",
|
|
17748
|
-
padding: "32px",
|
|
17749
|
-
},
|
|
17750
|
-
"& .dropTarget": {
|
|
17751
|
-
boxShadow: "0 0 0 1px #1967d2 inset",
|
|
17752
|
-
},
|
|
17753
|
-
} },
|
|
17754
|
-
React__default.createElement(Tree, { classes: {
|
|
17755
|
-
root: "root",
|
|
17756
|
-
dropTarget: "dropTarget",
|
|
17757
|
-
}, initialOpen: expanded, tree: tagsTreeData, rootId: backendOffset, onDrop: handleDrop, canDrop: function (tag, options) {
|
|
17758
|
-
return !selectedNodes.some(function (selectedNode) {
|
|
17759
|
-
return Number(selectedNode.id) ===
|
|
17760
|
-
Number(options.dropTargetId);
|
|
17761
|
-
});
|
|
17762
|
-
}, render: function (node, options) {
|
|
17763
|
-
var selected = selectedNodes.some(function (selectedNode) {
|
|
17764
|
-
return Number(selectedNode.id) === Number(node.id);
|
|
17765
|
-
});
|
|
17766
|
-
return (React__default.createElement(TagFolderCustomNode, { setContextMenuOver: handleContextMenu, node: node, options: options, isSelected: selected, openTagFolders: openTagFolders, setOpenTagFolders: setOpenTagFolders, handleSelect: handleClick }));
|
|
17767
|
-
}, dragPreviewRender: function (monitorProps) { return (React__default.createElement(CustomDragPreview, { monitorProps: monitorProps })
|
|
17768
|
-
// <div>{monitorProps.item.data?.TagName}</div>
|
|
17769
|
-
); } })))))),
|
|
17770
|
-
React__default.createElement(ContextMenu, { anchorPoint: anchorPoint, isOpen: showContextMenu, setShowContextMenu: setShowContextMenu, tagNodeSelectedInTree: tagNodeSelectedInTree, getTagsTreeData: function () { return refetch(); } }),
|
|
17771
|
-
React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(""); } })));
|
|
17772
|
-
};
|
|
17773
|
-
|
|
17774
|
-
var TagsTreeModal = function (_a) {
|
|
17775
|
-
var open = _a.open, handleClose = _a.handleClose, onTagSelect = _a.onTagSelect;
|
|
17776
|
-
return (React__default.createElement(React__default.Fragment, null,
|
|
17777
|
-
React__default.createElement(MesfModal, { open: open, handleClose: handleClose, maxWidth: "lg", "aria-labelledby": "modal-modal-title", "aria-describedby": "modal-modal-description", title: "Tags" },
|
|
17778
|
-
React__default.createElement(MesfModal.Content, null,
|
|
17779
|
-
React__default.createElement(Box, null,
|
|
17780
|
-
React__default.createElement(Typography$1, { id: "modal-modal-description" },
|
|
17781
|
-
React__default.createElement(TagSelectionModal, { isOpen: open, onClose: function () { return handleClose; }, onTagSelect: onTagSelect })))))));
|
|
17782
|
-
};
|
|
17783
|
-
|
|
17784
|
-
var useTagsDataTable = function (_a) {
|
|
17785
|
-
var cursorData = _a.cursorData, viewTagsMap = _a.viewTagsMap, chartData = _a.chartData;
|
|
17786
|
-
return useMemo(function () {
|
|
17787
|
-
var _a;
|
|
17788
|
-
var dataTable = {};
|
|
17789
|
-
if (cursorData) {
|
|
17790
|
-
var _loop_1 = function (viewTagEntry) {
|
|
17791
|
-
var tag = viewTagsMap[viewTagEntry].viewTag;
|
|
17792
|
-
var datasetForTag = ((_a = chartData.datasets.find(function (ds) {
|
|
17793
|
-
return ds.tagId === (tag === null || tag === void 0 ? void 0 : tag.TagId);
|
|
17794
|
-
})) === null || _a === void 0 ? void 0 : _a.data) || [];
|
|
17795
|
-
var p1 = { x: new Date("1900-01-01"), y: 0 };
|
|
17796
|
-
var p2 = { x: new Date("1900-01-01"), y: 0 };
|
|
17797
|
-
var p1Found = false;
|
|
17798
|
-
var pmin = { x: 0, y: Number.POSITIVE_INFINITY };
|
|
17799
|
-
var pmax = { x: 0, y: Number.NEGATIVE_INFINITY };
|
|
17800
|
-
for (var idx = 0; idx < datasetForTag.length; idx++) {
|
|
17801
|
-
var curr = datasetForTag[idx];
|
|
17802
|
-
var currentVal = curr.x;
|
|
17803
|
-
if (!p1Found) {
|
|
17804
|
-
if (currentVal < cursorData.x1) {
|
|
17805
|
-
p1 = curr;
|
|
17806
|
-
p2 = JSON.parse(JSON.stringify(p1));
|
|
17807
|
-
pmin = JSON.parse(JSON.stringify(p1));
|
|
17808
|
-
pmax = JSON.parse(JSON.stringify(p1));
|
|
17809
|
-
continue;
|
|
17810
|
-
}
|
|
17811
|
-
else {
|
|
17812
|
-
p1Found = true;
|
|
17813
|
-
}
|
|
17814
|
-
}
|
|
17815
|
-
else {
|
|
17816
|
-
if (currentVal < cursorData.x2) {
|
|
17817
|
-
p2 = curr;
|
|
17818
|
-
if (pmin["y"] > curr["y"]) {
|
|
17819
|
-
pmin = JSON.parse(JSON.stringify(curr));
|
|
17820
|
-
}
|
|
17821
|
-
if (pmax["y"] < curr["y"]) {
|
|
17822
|
-
pmax = JSON.parse(JSON.stringify(curr));
|
|
17823
|
-
}
|
|
17824
|
-
}
|
|
17825
|
-
else {
|
|
17826
|
-
break;
|
|
17827
|
-
}
|
|
17828
|
-
}
|
|
17829
|
-
}
|
|
17830
|
-
dataTable[tag === null || tag === void 0 ? void 0 : tag.TagName] = {
|
|
17831
|
-
y1: p1.y,
|
|
17832
|
-
y2: p2.y,
|
|
17833
|
-
y2y1: Number(p2.y) - Number(p1.y),
|
|
17834
|
-
pmin: pmin,
|
|
17835
|
-
pmax: pmax,
|
|
17836
|
-
};
|
|
17837
|
-
};
|
|
17838
|
-
for (var viewTagEntry in viewTagsMap) {
|
|
17839
|
-
_loop_1(viewTagEntry);
|
|
17840
|
-
}
|
|
17841
|
-
}
|
|
17842
|
-
return dataTable;
|
|
17843
|
-
}, [viewTagsMap, chartData, cursorData]);
|
|
17844
|
-
};
|
|
17845
|
-
|
|
17846
|
-
var formatTimeDiffWithMs = function (start, end) {
|
|
17847
|
-
// Calculate total difference in milliseconds
|
|
17848
|
-
var totalMilliseconds = end - start;
|
|
17849
|
-
// Convert milliseconds to seconds, minutes, hours, days, and months for comparison
|
|
17850
|
-
var seconds = totalMilliseconds / 1000;
|
|
17851
|
-
var minutes = seconds / 60;
|
|
17852
|
-
var hours = minutes / 60;
|
|
17853
|
-
var days = hours / 24;
|
|
17854
|
-
var months = days / 30; // Approximation of a month
|
|
17855
|
-
var remainingSeconds = seconds % 60; // Remaining seconds after full minutes
|
|
17856
|
-
if (months > 12) {
|
|
17857
|
-
var years = months / 12;
|
|
17858
|
-
return "".concat(Math.floor(years), " years, ").concat(Math.floor(months % 12), " months");
|
|
17859
|
-
}
|
|
17860
|
-
else if (months > 6) {
|
|
17861
|
-
return "".concat(Math.floor(months), " months, ").concat(Math.floor(days % 30), " days");
|
|
17862
|
-
}
|
|
17863
|
-
else if (days > 10) {
|
|
17864
|
-
return "".concat(Math.floor(days), " days, ").concat(Math.floor(hours % 24), " hours");
|
|
17865
|
-
}
|
|
17866
|
-
else if (days > 1) {
|
|
17867
|
-
return "".concat(Math.floor(days), " days, ").concat(Math.floor(hours % 24), " hours");
|
|
17868
|
-
}
|
|
17869
|
-
else if (hours > 12) {
|
|
17870
|
-
return "".concat(Math.floor(hours), " hours, ").concat(Math.floor(minutes % 60), " minutes, ").concat(remainingSeconds.toFixed(2), " seconds");
|
|
17871
|
-
}
|
|
17872
|
-
else if (hours < 1) {
|
|
17873
|
-
// If there are 0 hours, return just minutes and remaining seconds
|
|
17874
|
-
return "".concat(Math.floor(minutes), " minutes, ").concat(remainingSeconds.toFixed(2), " seconds");
|
|
17875
|
-
}
|
|
17876
|
-
else {
|
|
17877
|
-
// For time intervals less than 12 hours but more than 1 hour, return hours, minutes, and remaining seconds
|
|
17878
|
-
return "".concat(Math.floor(hours), " hours, ").concat(Math.floor(minutes % 60), " minutes, ").concat(remainingSeconds.toFixed(2), " seconds");
|
|
17879
|
-
}
|
|
17880
|
-
};
|
|
17881
|
-
|
|
17882
|
-
var TableComponent = function (_a) {
|
|
17883
|
-
var chartData = _a.chartData, cursorData = _a.cursorData; _a.viewTagForDelete; var setViewTagForDelete = _a.setViewTagForDelete, selectedRowTagId = _a.selectedRowTagId, setSelectedRowTagId = _a.setSelectedRowTagId;
|
|
17884
|
-
var queryClient = useQueryClient();
|
|
17885
|
-
var _b = useContextMenuMESF(), registerConfig = _b.registerConfig, showContextMenu = _b.showContextMenu;
|
|
17886
|
-
var _c = useTrendingContext(), _d = _c.state, viewTags = _d.viewTags, viewSelected = _d.viewSelected, _e = _c.actions, setViewTags = _e.setViewTags, setViewTagsAndRefetch = _e.setViewTagsAndRefetch;
|
|
17887
|
-
var _f = useState(""), error = _f[0], setError = _f[1];
|
|
17888
|
-
var _g = useState(false); _g[0]; var setIsLoading = _g[1];
|
|
17889
|
-
var _h = useState(false), tagsTreeModalOpen = _h[0], setTagsTreeModalOpen = _h[1];
|
|
17890
|
-
var _j = useState(false), saveAsViewModalOpen = _j[0], setSaveAsViewModalOpen = _j[1];
|
|
17891
|
-
var _k = useState(false), loadViewOpen = _k[0], setLoadViewOpen = _k[1];
|
|
17892
|
-
var _l = useState(""), snackbarMessage = _l[0], setSnackbarMessage = _l[1];
|
|
17893
|
-
var deleteAllViewTags = useMutation({
|
|
17894
|
-
mutationFn: deleteAllViewTagsFromView,
|
|
17895
|
-
onError: function (error) {
|
|
17896
|
-
setError(error.message);
|
|
17897
|
-
},
|
|
17898
|
-
});
|
|
17899
|
-
var updateView = useMutation({
|
|
17900
|
-
mutationFn: upsertView,
|
|
17901
|
-
onSuccess: function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
17902
|
-
var results;
|
|
17903
|
-
var _a;
|
|
17904
|
-
return __generator(this, function (_b) {
|
|
17905
|
-
switch (_b.label) {
|
|
17906
|
-
case 0: return [4 /*yield*/, deleteAllViewTags.mutate((_a = viewSelected === null || viewSelected === void 0 ? void 0 : viewSelected.ViewId) !== null && _a !== void 0 ? _a : 0)];
|
|
17907
|
-
case 1:
|
|
17908
|
-
_b.sent();
|
|
17909
|
-
return [4 /*yield*/, Promise.allSettled(Object.values(viewTags)
|
|
17910
|
-
.sort(function (a, b) { return b.order - a.order; })
|
|
17911
|
-
.map(function (_a) {
|
|
17912
|
-
var _b;
|
|
17913
|
-
var _c = _a.viewTag, TagId = _c.TagId, Color = _c.Color, MinScale = _c.MinScale, MaxScale = _c.MaxScale, IsAutoScale = _c.IsAutoScale, IsVisible = _c.IsVisible, Unit = _c.Unit;
|
|
17914
|
-
updateViewTag.mutate({
|
|
17915
|
-
viewId: (_b = viewSelected === null || viewSelected === void 0 ? void 0 : viewSelected.ViewId) !== null && _b !== void 0 ? _b : 0,
|
|
17916
|
-
tagId: TagId,
|
|
17917
|
-
color: Color,
|
|
17918
|
-
minScale: MinScale,
|
|
17919
|
-
maxScale: MaxScale,
|
|
17920
|
-
isVisible: IsVisible,
|
|
17921
|
-
isAutoScale: IsAutoScale,
|
|
17922
|
-
unit: Unit,
|
|
17923
|
-
});
|
|
17924
|
-
}))];
|
|
17925
|
-
case 2:
|
|
17926
|
-
results = _b.sent();
|
|
17927
|
-
results.forEach(function (result, index) {
|
|
17928
|
-
if (result.status === "rejected") {
|
|
17929
|
-
setError("Tag ".concat(index, " failed with reason: ").concat(result.reason));
|
|
17930
|
-
}
|
|
17931
|
-
else {
|
|
17932
|
-
setSelectedRowTagId(null);
|
|
17933
|
-
setSnackbarMessage("View saved successfully");
|
|
17934
|
-
}
|
|
17935
|
-
});
|
|
17936
|
-
return [2 /*return*/];
|
|
17937
|
-
}
|
|
17938
|
-
});
|
|
17939
|
-
}); },
|
|
17940
|
-
onError: function (error) {
|
|
17941
|
-
setError(error.message);
|
|
17942
|
-
},
|
|
17943
|
-
});
|
|
17944
|
-
var saveTags = useMutation({
|
|
17945
|
-
mutationFn: saveTagDefaults,
|
|
17946
|
-
onError: function (error) {
|
|
17947
|
-
setError(error.message);
|
|
17948
|
-
},
|
|
17949
|
-
});
|
|
17950
|
-
var updateViewTag = useMutation({
|
|
17951
|
-
mutationFn: upsertViewTag,
|
|
17952
|
-
onError: function (error) {
|
|
17953
|
-
setError(error.message);
|
|
17954
|
-
},
|
|
17955
|
-
});
|
|
17956
|
-
var dataTable = useTagsDataTable({
|
|
17957
|
-
viewTagsMap: viewTags,
|
|
17958
|
-
chartData: chartData,
|
|
17959
|
-
cursorData: cursorData,
|
|
17960
|
-
});
|
|
17961
|
-
var handleChange = function (tagId, value, property) {
|
|
17962
|
-
var _a, _b;
|
|
17963
|
-
setViewTags(__assign(__assign({}, viewTags), (_a = {}, _a[tagId] = __assign(__assign({}, viewTags[tagId]), { viewTag: __assign(__assign({}, viewTags[tagId].viewTag), (_b = {}, _b[property] = value, _b.IsAutoScale = false, _b)) }), _a)));
|
|
17964
|
-
};
|
|
17965
|
-
var handleChangeScale = function (value, scale, tagId) {
|
|
17966
|
-
handleChange(tagId, value, scale);
|
|
17967
|
-
};
|
|
17968
|
-
var handleChangeAlias = function (tagId, newName) {
|
|
17969
|
-
var _a;
|
|
17970
|
-
setViewTags(__assign(__assign({}, viewTags), (_a = {}, _a[tagId] = __assign(__assign({}, viewTags[tagId]), { viewTag: __assign(__assign({}, viewTags[tagId].viewTag), { Alias: newName }) }), _a)));
|
|
17971
|
-
};
|
|
17972
|
-
var handleVisibilityChange = function (tagId, value) {
|
|
17973
|
-
var _a;
|
|
17974
|
-
setViewTags(__assign(__assign({}, viewTags), (_a = {}, _a[tagId] = __assign(__assign({}, viewTags[tagId]), { viewTag: __assign(__assign({}, viewTags[tagId].viewTag), { IsVisible: value }) }), _a)));
|
|
17975
|
-
};
|
|
17976
|
-
var handleUnitChange = function (tagId, newUnit) {
|
|
17977
|
-
var _a;
|
|
17978
|
-
setViewTags(__assign(__assign({}, viewTags), (_a = {}, _a[tagId] = __assign(__assign({}, viewTags[tagId]), { viewTag: __assign(__assign({}, viewTags[tagId].viewTag), { Unit: newUnit }) }), _a)));
|
|
17979
|
-
};
|
|
17980
|
-
var handleAutoScaleChange = function (tagId, checked) {
|
|
17981
|
-
var _a;
|
|
17982
|
-
setViewTags(__assign(__assign({}, viewTags), (_a = {}, _a[tagId] = __assign(__assign({}, viewTags[tagId]), { viewTag: __assign(__assign({}, viewTags[tagId].viewTag), { IsAutoScale: !checked }) }), _a)));
|
|
17983
|
-
};
|
|
17984
|
-
var handleColorChange = function (tagId, value) {
|
|
17985
|
-
var _a;
|
|
17986
|
-
setViewTags(__assign(__assign({}, viewTags), (_a = {}, _a[tagId] = __assign(__assign({}, viewTags[tagId]), { viewTag: __assign(__assign({}, viewTags[tagId].viewTag), { Color: value }) }), _a)));
|
|
17987
|
-
};
|
|
17988
|
-
var handleDeleteTag = function (tagId) {
|
|
17989
|
-
var _a = viewTags, _b = tagId; _a[_b]; var newTags = __rest(_a, [typeof _b === "symbol" ? _b : _b + ""]);
|
|
17990
|
-
setViewTagsAndRefetch(newTags);
|
|
17991
|
-
};
|
|
17992
|
-
var handleAddTag = function (newTag) {
|
|
17993
|
-
var _a;
|
|
17994
|
-
setViewTagsAndRefetch(__assign(__assign({}, viewTags), (_a = {}, _a[newTag.TagId] = {
|
|
17995
|
-
viewTag: __assign(__assign({}, newTag), { IsVisible: true, TagType: newTag.TagTypeCode, Color: newTag.Color || getRandomColor(), IsAutoScale: newTag.MinScale || newTag.MaxScale ? false : true }),
|
|
17996
|
-
order: Object.keys(viewTags).length,
|
|
17997
|
-
}, _a)));
|
|
17998
|
-
};
|
|
17999
|
-
var handleAbleScales = function (tagId, checked) {
|
|
18000
|
-
if (checked) {
|
|
18001
|
-
handleAutoScaleChange(tagId, checked);
|
|
18002
|
-
}
|
|
18003
|
-
};
|
|
18004
|
-
var handleClose = function () { return setTagsTreeModalOpen(false); };
|
|
18005
|
-
var getMenuOptions = function (data) {
|
|
18006
|
-
var options = [];
|
|
18007
|
-
if (data) {
|
|
18008
|
-
options.push({
|
|
18009
|
-
key: "delete",
|
|
18010
|
-
name: "Remove Tag",
|
|
18011
|
-
onClick: function () {
|
|
18012
|
-
if (!isNil(data)) {
|
|
18013
|
-
handleDeleteTag(data.TagId);
|
|
18014
|
-
setSelectedRowTagId(null);
|
|
18015
|
-
setViewTagForDelete(null);
|
|
18016
|
-
}
|
|
18017
|
-
},
|
|
18018
|
-
});
|
|
18019
|
-
}
|
|
18020
|
-
options = options.concat([
|
|
18021
|
-
{
|
|
18022
|
-
key: "add",
|
|
18023
|
-
name: "Tags Tree",
|
|
18024
|
-
onClick: function () {
|
|
18025
|
-
setTagsTreeModalOpen(true);
|
|
18026
|
-
},
|
|
18027
|
-
},
|
|
18028
|
-
{
|
|
18029
|
-
key: "saveDefault",
|
|
18030
|
-
name: "Save Default To Tag",
|
|
18031
|
-
onClick: function () {
|
|
18032
|
-
handleSaveDefaultToTag(data.TagId);
|
|
18033
|
-
},
|
|
18034
|
-
},
|
|
18035
|
-
{
|
|
18036
|
-
key: "saveView",
|
|
18037
|
-
name: "Save View",
|
|
18038
|
-
onClick: function () {
|
|
18039
|
-
handleSaveView();
|
|
18040
|
-
},
|
|
18041
|
-
},
|
|
18042
|
-
{
|
|
18043
|
-
key: "saveViewAs",
|
|
18044
|
-
name: "Save View as",
|
|
18045
|
-
onClick: function () {
|
|
18046
|
-
setSaveAsViewModalOpen(true);
|
|
18047
|
-
},
|
|
18048
|
-
},
|
|
18049
|
-
{
|
|
18050
|
-
key: "loadView",
|
|
18051
|
-
name: "Load View",
|
|
18052
|
-
onClick: function () {
|
|
18053
|
-
setLoadViewOpen(true);
|
|
18054
|
-
},
|
|
18055
|
-
},
|
|
18056
|
-
]);
|
|
18057
|
-
return options;
|
|
18058
|
-
};
|
|
18059
|
-
var handleTagSelect = function (selectedTag) {
|
|
18060
|
-
var alreadySelected = viewTags[selectedTag.Tagkey];
|
|
18061
|
-
if (!alreadySelected) {
|
|
18062
|
-
handleAddTag(selectedTag);
|
|
18063
|
-
}
|
|
18064
|
-
else {
|
|
18065
|
-
setError("".concat(selectedTag.TagName, " is already selected"));
|
|
18066
|
-
}
|
|
18067
|
-
};
|
|
18068
|
-
var handleSaveView = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
18069
|
-
return __generator(this, function (_a) {
|
|
18070
|
-
switch (_a.label) {
|
|
18071
|
-
case 0:
|
|
18072
|
-
if (!!viewSelected) return [3 /*break*/, 1];
|
|
18073
|
-
setSaveAsViewModalOpen(true);
|
|
18074
|
-
return [2 /*return*/];
|
|
18075
|
-
case 1:
|
|
18076
|
-
setIsLoading(true);
|
|
18077
|
-
if (!(viewSelected === null || viewSelected === void 0 ? void 0 : viewSelected.ViewId)) return [3 /*break*/, 3];
|
|
18078
|
-
return [4 /*yield*/, updateView.mutate({
|
|
18079
|
-
viewId: viewSelected === null || viewSelected === void 0 ? void 0 : viewSelected.ViewId,
|
|
18080
|
-
viewName: viewSelected.ViewName,
|
|
18081
|
-
isPublic: viewSelected.IsPublic,
|
|
18082
|
-
})];
|
|
18083
|
-
case 2:
|
|
18084
|
-
_a.sent();
|
|
18085
|
-
_a.label = 3;
|
|
18086
|
-
case 3:
|
|
18087
|
-
setIsLoading(false);
|
|
18088
|
-
_a.label = 4;
|
|
18089
|
-
case 4: return [2 /*return*/];
|
|
18090
|
-
}
|
|
18091
|
-
});
|
|
18092
|
-
}); };
|
|
18093
|
-
var handleCloseSnackbar = function (event, reason) {
|
|
18094
|
-
if (reason === "clickaway") {
|
|
18095
|
-
return;
|
|
18096
|
-
}
|
|
18097
|
-
setSnackbarMessage("");
|
|
18098
|
-
};
|
|
18099
|
-
useEffect(function () {
|
|
18100
|
-
var handleGlobalClick = function (e) {
|
|
18101
|
-
if (selectedRowTagId !== null) {
|
|
18102
|
-
setSelectedRowTagId(null);
|
|
18103
|
-
}
|
|
18104
|
-
};
|
|
18105
|
-
var handleKeyDown = function (e) {
|
|
18106
|
-
if (e.key === "Escape" && selectedRowTagId !== null) {
|
|
18107
|
-
setSelectedRowTagId(null);
|
|
18108
|
-
}
|
|
18109
|
-
};
|
|
18110
|
-
// Attach event listeners
|
|
18111
|
-
document.addEventListener("click", handleGlobalClick);
|
|
18112
|
-
document.addEventListener("keydown", handleKeyDown);
|
|
18113
|
-
// Cleanup function
|
|
18114
|
-
return function () {
|
|
18115
|
-
document.removeEventListener("click", handleGlobalClick);
|
|
18116
|
-
document.removeEventListener("keydown", handleKeyDown);
|
|
18117
|
-
};
|
|
18118
|
-
}, [selectedRowTagId]);
|
|
18119
|
-
var handleSaveDefaultToTag = function (selectedRowTagId) { return __awaiter(void 0, void 0, void 0, function () {
|
|
18120
|
-
var _a, TagId, Alias, Color, MinScale, MaxScale, Unit, IsVisible, IsAutoScale;
|
|
18121
|
-
return __generator(this, function (_b) {
|
|
18122
|
-
switch (_b.label) {
|
|
18123
|
-
case 0:
|
|
18124
|
-
if (!(viewSelected && selectedRowTagId !== null)) return [3 /*break*/, 3];
|
|
18125
|
-
_a = viewTags[selectedRowTagId].viewTag, TagId = _a.TagId, Alias = _a.Alias, Color = _a.Color, MinScale = _a.MinScale, MaxScale = _a.MaxScale, Unit = _a.Unit, IsVisible = _a.IsVisible, IsAutoScale = _a.IsAutoScale;
|
|
18126
|
-
return [4 /*yield*/, saveTags.mutate({
|
|
18127
|
-
tagId: TagId,
|
|
18128
|
-
alias: Alias,
|
|
18129
|
-
color: Color,
|
|
18130
|
-
minScale: MinScale,
|
|
18131
|
-
maxScale: MaxScale,
|
|
18132
|
-
unit: Unit,
|
|
18133
|
-
})];
|
|
18134
|
-
case 1:
|
|
18135
|
-
_b.sent();
|
|
18136
|
-
return [4 /*yield*/, updateViewTag.mutate({
|
|
18137
|
-
viewId: viewSelected === null || viewSelected === void 0 ? void 0 : viewSelected.ViewId,
|
|
18138
|
-
tagId: TagId,
|
|
18139
|
-
color: Color,
|
|
18140
|
-
minScale: MinScale,
|
|
18141
|
-
maxScale: MaxScale,
|
|
18142
|
-
isVisible: IsVisible,
|
|
18143
|
-
isAutoScale: IsAutoScale,
|
|
18144
|
-
unit: Unit,
|
|
18145
|
-
})];
|
|
18146
|
-
case 2:
|
|
18147
|
-
_b.sent();
|
|
18148
|
-
setSelectedRowTagId(null);
|
|
18149
|
-
_b.label = 3;
|
|
18150
|
-
case 3: return [2 /*return*/];
|
|
18151
|
-
}
|
|
18152
|
-
});
|
|
18153
|
-
}); };
|
|
18154
|
-
useEffect(function () {
|
|
18155
|
-
registerConfig({
|
|
18156
|
-
id: "chartContext",
|
|
18157
|
-
getOptions: getMenuOptions,
|
|
18158
|
-
});
|
|
18159
|
-
}, [viewTags, selectedRowTagId]);
|
|
18160
|
-
return (React__default.createElement(React__default.Fragment, null,
|
|
18161
|
-
React__default.createElement(Grid2, { container: true, spacing: 1, alignContent: "flex-start", style: {
|
|
18162
|
-
height: "100%",
|
|
18163
|
-
maxHeight: "100%",
|
|
18164
|
-
overflowY: "auto",
|
|
18165
|
-
} },
|
|
18166
|
-
React__default.createElement(Grid2, { size: { xs: 12 }, style: {
|
|
18167
|
-
position: "sticky",
|
|
18168
|
-
background: "white",
|
|
18169
|
-
top: 0,
|
|
18170
|
-
left: 0,
|
|
18171
|
-
zIndex: 1000,
|
|
18172
|
-
} },
|
|
18173
|
-
React__default.createElement(TableContainer, { component: Paper, style: {
|
|
18174
|
-
overflowX: "auto",
|
|
18175
|
-
width: "100%",
|
|
18176
|
-
boxShadow: "none",
|
|
18177
|
-
border: "none",
|
|
18178
|
-
} },
|
|
18179
|
-
React__default.createElement(Table, { size: "small", style: { width: "100%", tableLayout: "fixed" } },
|
|
18180
|
-
React__default.createElement(TableHead, null,
|
|
18181
|
-
React__default.createElement(TableRow, null,
|
|
18182
|
-
React__default.createElement(TableCell, { align: "center", sx: {
|
|
18183
|
-
border: "0.0625rem solid black",
|
|
18184
|
-
borderBottom: "none",
|
|
18185
|
-
backgroundColor: "#f5f7f7",
|
|
18186
|
-
color: "#333",
|
|
18187
|
-
fontWeight: "normal",
|
|
18188
|
-
textAlign: "center",
|
|
18189
|
-
width: "26.125rem",
|
|
18190
|
-
padding: "0",
|
|
18191
|
-
} }, viewSelected ? (React__default.createElement(Button, { variant: "text", style: {
|
|
18192
|
-
color: "#0075ff",
|
|
18193
|
-
width: "26.125rem",
|
|
18194
|
-
padding: "0",
|
|
18195
|
-
}, onClick: function () { return setLoadViewOpen(true); }, startIcon: viewSelected.IsPublic ? (React__default.createElement(React__default.Fragment, null)) : (React__default.createElement(LockIcon, { fontSize: "small" })) }, (viewSelected === null || viewSelected === void 0 ? void 0 : viewSelected.ViewName) || "")) : (React__default.createElement(Button, { variant: "text", style: {
|
|
18196
|
-
color: "#0075ff",
|
|
18197
|
-
width: "26.125rem",
|
|
18198
|
-
padding: "0",
|
|
18199
|
-
}, onClick: function () { return setSaveAsViewModalOpen(true); } },
|
|
18200
|
-
React__default.createElement("i", null,
|
|
18201
|
-
React__default.createElement(SaveIcon, null),
|
|
18202
|
-
"(Save view as)")))),
|
|
18203
|
-
React__default.createElement(TableCell, { align: "center", colSpan: 4, sx: {
|
|
18204
|
-
border: "0.0625rem solid black",
|
|
18205
|
-
borderBottom: "none",
|
|
18206
|
-
backgroundColor: "#f5f7f7",
|
|
18207
|
-
color: "#333",
|
|
18208
|
-
fontWeight: "normal",
|
|
18209
|
-
textAlign: "center",
|
|
18210
|
-
width: "37.5rem",
|
|
18211
|
-
padding: "0",
|
|
18212
|
-
} }, "Scale"),
|
|
18213
|
-
React__default.createElement(TableCell, { align: "center", sx: {
|
|
18214
|
-
border: "0.0625rem solid black",
|
|
18215
|
-
borderBottom: "none",
|
|
18216
|
-
backgroundColor: "#f5f7f7",
|
|
18217
|
-
color: "#333",
|
|
18218
|
-
fontWeight: "normal",
|
|
18219
|
-
textAlign: "center",
|
|
18220
|
-
padding: "6px 0",
|
|
18221
|
-
} }, cursorData
|
|
18222
|
-
? (function () {
|
|
18223
|
-
var dateX1 = new Date(cursorData.x1);
|
|
18224
|
-
var dateX2 = new Date(cursorData.x2);
|
|
18225
|
-
var formattedDate = dateX1.toLocaleString("en-US", __assign({ hour12: false, month: "short", day: "numeric" }, (dateX1.getFullYear() !==
|
|
18226
|
-
dateX2.getFullYear() && { year: "numeric" })));
|
|
18227
|
-
var dateText = "".concat(formattedDate);
|
|
18228
|
-
return (React__default.createElement(React__default.Fragment, null,
|
|
18229
|
-
React__default.createElement("span", { style: {
|
|
18230
|
-
height: "10px",
|
|
18231
|
-
width: "10px",
|
|
18232
|
-
backgroundColor: "red",
|
|
18233
|
-
borderRadius: "50%",
|
|
18234
|
-
display: "inline-block",
|
|
18235
|
-
marginRight: "5px",
|
|
18236
|
-
} }),
|
|
18237
|
-
dateText));
|
|
18238
|
-
})()
|
|
18239
|
-
: null),
|
|
18240
|
-
React__default.createElement(TableCell, { align: "center", sx: {
|
|
18241
|
-
border: "0.0625rem solid black",
|
|
18242
|
-
borderBottom: "none",
|
|
18243
|
-
backgroundColor: "#f5f7f7",
|
|
18244
|
-
color: "#333",
|
|
18245
|
-
fontWeight: "normal",
|
|
18246
|
-
textAlign: "center",
|
|
18247
|
-
padding: "6px 0",
|
|
18248
|
-
} }, cursorData
|
|
18249
|
-
? (function () {
|
|
18250
|
-
var dateX1 = new Date(cursorData.x1);
|
|
18251
|
-
var dateX2 = new Date(cursorData.x2);
|
|
18252
|
-
var formattedDate = dateX2.toLocaleString("en-US", __assign({ hour12: false, month: "short", day: "numeric" }, (dateX1.getFullYear() !==
|
|
18253
|
-
dateX2.getFullYear() && { year: "numeric" })));
|
|
18254
|
-
var dateText = "".concat(formattedDate);
|
|
18255
|
-
return (React__default.createElement(React__default.Fragment, null,
|
|
18256
|
-
React__default.createElement("span", { style: {
|
|
18257
|
-
height: "10px",
|
|
18258
|
-
width: "10px",
|
|
18259
|
-
backgroundColor: "blue",
|
|
18260
|
-
borderRadius: "50%",
|
|
18261
|
-
display: "inline-block",
|
|
18262
|
-
marginRight: "5px",
|
|
18263
|
-
} }),
|
|
18264
|
-
dateText));
|
|
18265
|
-
})()
|
|
18266
|
-
: null),
|
|
18267
|
-
React__default.createElement(TableCell, { align: "center", colSpan: 3, sx: {
|
|
18268
|
-
border: "0.0625rem solid black",
|
|
18269
|
-
borderBottom: "none",
|
|
18270
|
-
backgroundColor: "#f5f7f7",
|
|
18271
|
-
color: "#333",
|
|
18272
|
-
fontWeight: "normal",
|
|
18273
|
-
textAlign: "center",
|
|
18274
|
-
padding: "6px 0",
|
|
18275
|
-
} }, cursorData
|
|
18276
|
-
? formatTimeDiffWithMs(cursorData.x1, cursorData.x2)
|
|
18277
|
-
: null)))),
|
|
18278
|
-
React__default.createElement(Table, { size: "small", style: { width: "100%", tableLayout: "fixed" } },
|
|
18279
|
-
React__default.createElement(TableHead, null,
|
|
18280
|
-
React__default.createElement(TableRow, { sx: {
|
|
18281
|
-
"& th": {
|
|
18282
|
-
border: "0.0625rem solid black",
|
|
18283
|
-
backgroundColor: "#f5f7f7",
|
|
18284
|
-
color: "#333",
|
|
18285
|
-
fontWeight: "normal",
|
|
18286
|
-
textAlign: "center",
|
|
18287
|
-
padding: "6px 0",
|
|
18288
|
-
},
|
|
18289
|
-
} },
|
|
18290
|
-
React__default.createElement(TableCell, { align: "center", sx: {
|
|
18291
|
-
width: "3.75rem", // 60px / 16px
|
|
18292
|
-
fontSize: "0.75rem",
|
|
18293
|
-
} }, "Visible"),
|
|
18294
|
-
React__default.createElement(TableCell, { align: "center", sx: {
|
|
18295
|
-
width: "18rem",
|
|
18296
|
-
overflow: "hidden",
|
|
18297
|
-
textOverflow: "ellipsis",
|
|
18298
|
-
whiteSpace: "nowrap",
|
|
18299
|
-
} }, "Alias / Tagname"),
|
|
18300
|
-
React__default.createElement(TableCell, { align: "center", sx: {
|
|
18301
|
-
width: "4.375rem", // 70px / 16px
|
|
18302
|
-
} }, "Color"),
|
|
18303
|
-
React__default.createElement(TableCell, { align: "center", sx: {
|
|
18304
|
-
width: "11.25rem", // 180px / 16px
|
|
18305
|
-
overflow: "hidden",
|
|
18306
|
-
textOverflow: "ellipsis",
|
|
18307
|
-
whiteSpace: "nowrap",
|
|
18308
|
-
} }, "Min Scale"),
|
|
18309
|
-
React__default.createElement(TableCell, { align: "center", sx: {
|
|
18310
|
-
width: "11.25rem", // 180px / 16px
|
|
18311
|
-
overflow: "hidden",
|
|
18312
|
-
textOverflow: "ellipsis",
|
|
18313
|
-
whiteSpace: "nowrap",
|
|
18314
|
-
} }, "Max Scale"),
|
|
18315
|
-
React__default.createElement(TableCell, { align: "center", sx: {
|
|
18316
|
-
width: "7.5rem", // 120px / 16px
|
|
18317
|
-
} }, "AutoScale"),
|
|
18318
|
-
React__default.createElement(TableCell, { align: "center", sx: {
|
|
18319
|
-
width: "7.5rem", // 120px / 16px
|
|
18320
|
-
} }, "Unit"),
|
|
18321
|
-
React__default.createElement(TableCell, { align: "center" },
|
|
18322
|
-
" ",
|
|
18323
|
-
cursorData
|
|
18324
|
-
? (function () {
|
|
18325
|
-
var date = new Date(cursorData.x1);
|
|
18326
|
-
var formattedHour = date.toLocaleString("en-US", {
|
|
18327
|
-
hour12: false,
|
|
18328
|
-
hour: "2-digit",
|
|
18329
|
-
minute: "2-digit",
|
|
18330
|
-
second: "2-digit",
|
|
18331
|
-
});
|
|
18332
|
-
var milliseconds = (date.getMilliseconds() / 1000)
|
|
18333
|
-
.toFixed(2)
|
|
18334
|
-
.substring(2);
|
|
18335
|
-
var dateText = "".concat(formattedHour, ".").concat(milliseconds, " hs");
|
|
18336
|
-
return React__default.createElement(React__default.Fragment, null, dateText);
|
|
18337
|
-
})()
|
|
18338
|
-
: null,
|
|
18339
|
-
" "),
|
|
18340
|
-
React__default.createElement(TableCell, { align: "center" },
|
|
18341
|
-
" ",
|
|
18342
|
-
cursorData
|
|
18343
|
-
? (function () {
|
|
18344
|
-
var date = new Date(cursorData.x2);
|
|
18345
|
-
var formattedHour = date.toLocaleString("en-US", {
|
|
18346
|
-
hour12: false,
|
|
18347
|
-
hour: "2-digit",
|
|
18348
|
-
minute: "2-digit",
|
|
18349
|
-
second: "2-digit",
|
|
18350
|
-
});
|
|
18351
|
-
var milliseconds = (date.getMilliseconds() / 1000)
|
|
18352
|
-
.toFixed(2)
|
|
18353
|
-
.substring(2);
|
|
18354
|
-
var dateText = "".concat(formattedHour, ".").concat(milliseconds, " hs");
|
|
18355
|
-
return React__default.createElement(React__default.Fragment, null, dateText);
|
|
18356
|
-
})()
|
|
18357
|
-
: null,
|
|
18358
|
-
" "),
|
|
18359
|
-
React__default.createElement(TableCell, { align: "center" }, "Y2-Y1"),
|
|
18360
|
-
React__default.createElement(TableCell, { align: "center" }, "Min"),
|
|
18361
|
-
React__default.createElement(TableCell, { align: "center" }, "Max")))))),
|
|
18362
|
-
React__default.createElement(Grid2, { size: { xs: 12 } },
|
|
18363
|
-
React__default.createElement(TableContainer, { component: Paper, style: {
|
|
18364
|
-
width: "100%",
|
|
18365
|
-
height: "100%",
|
|
18366
|
-
maxHeight: "100%",
|
|
18367
|
-
boxShadow: "none",
|
|
18368
|
-
border: "none",
|
|
18369
|
-
} },
|
|
18370
|
-
React__default.createElement(Table, { size: "small", style: { width: "100%", tableLayout: "fixed" } },
|
|
18371
|
-
React__default.createElement(TableBody, null, Object.values(viewTags).length ? (Object.values(viewTags).map(function (_a) {
|
|
18372
|
-
var _b, _c, _d, _e, _f, _g, _h;
|
|
18373
|
-
var tag = _a.viewTag;
|
|
18374
|
-
return (React__default.createElement(TableRow, { key: tag.TagName, onContextMenu: function (e) {
|
|
18375
|
-
showContextMenu(e, tag, "chartContext");
|
|
18376
|
-
}, sx: {
|
|
18377
|
-
"&:hover": {
|
|
18378
|
-
backgroundColor: "#f2f2f2",
|
|
18379
|
-
},
|
|
18380
|
-
} },
|
|
18381
|
-
React__default.createElement(TableCell, { align: "center", sx: {
|
|
18382
|
-
width: "3.75rem", // 60px / 16px
|
|
18383
|
-
fontSize: "0.75rem",
|
|
18384
|
-
'& input[type="checkbox"]': {
|
|
18385
|
-
zoom: 1.5,
|
|
18386
|
-
},
|
|
18387
|
-
textAlign: "center",
|
|
18388
|
-
} },
|
|
18389
|
-
React__default.createElement("input", { type: "checkbox", checked: tag.IsVisible, onChange: function (e) {
|
|
18390
|
-
return handleVisibilityChange(tag.TagId, e.target.checked);
|
|
18391
|
-
} })),
|
|
18392
|
-
React__default.createElement(TableCell, { sx: {
|
|
18393
|
-
width: "18rem",
|
|
18394
|
-
overflow: "hidden",
|
|
18395
|
-
textOverflow: "ellipsis",
|
|
18396
|
-
whiteSpace: "nowrap",
|
|
18397
|
-
} },
|
|
18398
|
-
React__default.createElement(Tooltip, { title: tag.TagName, placement: "top", arrow: true, enterDelay: 500 },
|
|
18399
|
-
React__default.createElement("div", { style: { display: "flex", alignItems: "center" } },
|
|
18400
|
-
tag.TagType && (React__default.createElement("div", { style: {
|
|
18401
|
-
backgroundColor: tag.TagType === "A" ? "#AD48C4" : "#C46F48",
|
|
18402
|
-
width: "30px",
|
|
18403
|
-
height: "30px",
|
|
18404
|
-
color: "white",
|
|
18405
|
-
display: "flex",
|
|
18406
|
-
justifyContent: "center",
|
|
18407
|
-
alignItems: "center",
|
|
18408
|
-
cursor: "pointer",
|
|
18409
|
-
border: "1px black solid",
|
|
18410
|
-
} }, tag.TagType)),
|
|
18411
|
-
React__default.createElement("input", { type: "text", style: { width: "100%" }, value: tag.Alias || tag.TagName, onFocus: function (e) { return e.target.select(); }, onChange: function (e) {
|
|
18412
|
-
var newAlias = e.target.value;
|
|
18413
|
-
handleChangeAlias(tag.TagId, newAlias);
|
|
18414
|
-
} })))),
|
|
18415
|
-
React__default.createElement(TableCell, { align: "center", sx: {
|
|
18416
|
-
width: "4.375rem", // 70px / 16px
|
|
18417
|
-
} },
|
|
18418
|
-
React__default.createElement(ColorPicker, { onChange: handleColorChange, color: tag.Color, elementId: tag.TagId })),
|
|
18419
|
-
React__default.createElement(TableCell, { sx: {
|
|
18420
|
-
width: "11.25rem", // 180px / 16px
|
|
18421
|
-
overflow: "hidden",
|
|
18422
|
-
textOverflow: "ellipsis",
|
|
18423
|
-
whiteSpace: "nowrap",
|
|
18424
|
-
} },
|
|
18425
|
-
React__default.createElement(Box, { component: "input", type: "number", sx: __assign({ "&::-webkit-inner-spin-button, &::-webkit-outer-spin-button": {
|
|
18426
|
-
"-webkit-appearance": "none",
|
|
18427
|
-
margin: 0,
|
|
18428
|
-
}, "&": {
|
|
18429
|
-
"-moz-appearance": "textfield", // to Firefox
|
|
18430
|
-
}, width: "100%" }, (tag.IsAutoScale
|
|
18431
|
-
? {
|
|
18432
|
-
backgroundColor: "rgba(239, 239, 239, 0.3)",
|
|
18433
|
-
color: "rgba(84, 84, 84, 1)",
|
|
18434
|
-
border: "1px solid rgba(118, 118, 118, 0.3)",
|
|
18435
|
-
}
|
|
18436
|
-
: {})), value: tag.MinScale, onClick: function () {
|
|
18437
|
-
return handleAbleScales(tag.TagId, tag.IsAutoScale);
|
|
18438
|
-
}, onFocus: function (e) { return e.target.select(); }, onChange: function (e) {
|
|
18439
|
-
return handleChangeScale(e.target.value, "MinScale", tag.TagId);
|
|
18440
|
-
} })),
|
|
18441
|
-
React__default.createElement(TableCell, { sx: {
|
|
18442
|
-
width: "11.25rem", // 180px / 16px
|
|
18443
|
-
overflow: "hidden",
|
|
18444
|
-
textOverflow: "ellipsis",
|
|
18445
|
-
whiteSpace: "nowrap",
|
|
18446
|
-
} },
|
|
18447
|
-
React__default.createElement(Box, { component: "input", type: "number", sx: __assign({ "&::-webkit-inner-spin-button, &::-webkit-outer-spin-button": {
|
|
18448
|
-
"-webkit-appearance": "none",
|
|
18449
|
-
margin: 0,
|
|
18450
|
-
}, "&": {
|
|
18451
|
-
"-moz-appearance": "textfield", // to Firefox
|
|
18452
|
-
}, width: "100%", WebkitAppearance: "none" }, (tag.IsAutoScale
|
|
18453
|
-
? {
|
|
18454
|
-
backgroundColor: "rgba(239, 239, 239, 0.3)",
|
|
18455
|
-
color: "rgba(84, 84, 84, 1)",
|
|
18456
|
-
border: "1px solid rgba(118, 118, 118, 0.3)",
|
|
18457
|
-
}
|
|
18458
|
-
: {})), value: tag.MaxScale, onClick: function () {
|
|
18459
|
-
return handleAbleScales(tag.TagId, tag.IsAutoScale);
|
|
18460
|
-
}, onFocus: function (e) { return e.target.select(); }, onChange: function (e) {
|
|
18461
|
-
handleChangeScale(e.target.value, "MaxScale", tag.TagId);
|
|
18462
|
-
} })),
|
|
18463
|
-
React__default.createElement(TableCell, { align: "center", sx: {
|
|
18464
|
-
width: "7.5rem", // 120px / 16px
|
|
18465
|
-
'& input[type="checkbox"]': {
|
|
18466
|
-
zoom: 1.5,
|
|
18467
|
-
},
|
|
18468
|
-
textAlign: "center",
|
|
18469
|
-
} },
|
|
18470
|
-
React__default.createElement("input", { type: "checkbox", checked: !!tag.IsAutoScale, onChange: function (e) {
|
|
18471
|
-
return handleAutoScaleChange(tag.TagId, tag.IsAutoScale);
|
|
18472
|
-
} })),
|
|
18473
|
-
React__default.createElement(TableCell, { sx: {
|
|
18474
|
-
width: "7.5rem", // 120px / 16px
|
|
18475
|
-
'& input[type="checkbox"]': {
|
|
18476
|
-
zoom: 1.5,
|
|
18477
|
-
},
|
|
18478
|
-
textAlign: "center",
|
|
18479
|
-
} },
|
|
18480
|
-
React__default.createElement("input", { type: "text", style: {
|
|
18481
|
-
width: "100%",
|
|
18482
|
-
}, onClick: function () {
|
|
18483
|
-
return handleAbleScales(tag.TagId, tag.IsAutoScale);
|
|
18484
|
-
}, onChange: function (e) {
|
|
18485
|
-
var value = e.target.value;
|
|
18486
|
-
handleUnitChange(tag.TagId, value);
|
|
18487
|
-
}, value: tag.Unit === "-" ? "" : tag.Unit, onFocus: function (e) { return e.target.select(); } })),
|
|
18488
|
-
React__default.createElement(TableCell, { align: "center" }, round((_b = dataTable[tag.TagName]) === null || _b === void 0 ? void 0 : _b.y1, 3) || 0),
|
|
18489
|
-
React__default.createElement(TableCell, { align: "center", sx: {
|
|
18490
|
-
padding: "0",
|
|
18491
|
-
'& input[type="text"] ': {
|
|
18492
|
-
width: "100%", // 180px / 16px,
|
|
18493
|
-
height: "17px",
|
|
18494
|
-
display: "block",
|
|
18495
|
-
margin: "0",
|
|
18496
|
-
padding: "0",
|
|
18497
|
-
},
|
|
18498
|
-
} }, round((_c = dataTable[tag.TagName]) === null || _c === void 0 ? void 0 : _c.y2, 3) || 0),
|
|
18499
|
-
React__default.createElement(TableCell, { align: "center" }, round((_d = dataTable[tag.TagName]) === null || _d === void 0 ? void 0 : _d.y2y1, 3) || 0),
|
|
18500
|
-
React__default.createElement(TableCell, { align: "center" },
|
|
18501
|
-
!isNaN$1(((_e = dataTable[tag.TagName]) === null || _e === void 0 ? void 0 : _e.pmin.y) * 0)
|
|
18502
|
-
? round((_f = dataTable[tag.TagName]) === null || _f === void 0 ? void 0 : _f.pmin.y, 3)
|
|
18503
|
-
: 0,
|
|
18504
|
-
" "),
|
|
18505
|
-
React__default.createElement(TableCell, { align: "center" },
|
|
18506
|
-
!isNaN$1(((_g = dataTable[tag.TagName]) === null || _g === void 0 ? void 0 : _g.pmax.y) * 0)
|
|
18507
|
-
? round((_h = dataTable[tag.TagName]) === null || _h === void 0 ? void 0 : _h.pmax.y)
|
|
18508
|
-
: 0,
|
|
18509
|
-
" ")));
|
|
18510
|
-
})) : (React__default.createElement(TableRow, null,
|
|
18511
|
-
React__default.createElement(TableCell, { colSpan: 12 },
|
|
18512
|
-
React__default.createElement(Box, { sx: {
|
|
18513
|
-
display: "flex",
|
|
18514
|
-
flexDirection: "column",
|
|
18515
|
-
alignItems: "center",
|
|
18516
|
-
justifyContent: "center",
|
|
18517
|
-
padding: 4,
|
|
18518
|
-
gap: 2,
|
|
18519
|
-
} },
|
|
18520
|
-
React__default.createElement("div", null, "No tag view detected."),
|
|
18521
|
-
React__default.createElement(Button, { onClick: function () { return setTagsTreeModalOpen(true); }, variant: "contained", color: "primary" }, "Add tag"),
|
|
18522
|
-
React__default.createElement(Button, { onClick: function () { return setLoadViewOpen(true); }, variant: "outlined", color: "primary" }, "Load view"))))))))),
|
|
18523
|
-
React__default.createElement(TagsTreeModal, { open: tagsTreeModalOpen, handleClose: handleClose, onTagSelect: handleTagSelect }),
|
|
18524
|
-
React__default.createElement(SaveAsViewModal, { open: saveAsViewModalOpen, handleClose: function (shouldUpdate) { return __awaiter(void 0, void 0, void 0, function () {
|
|
18525
|
-
return __generator(this, function (_a) {
|
|
18526
|
-
switch (_a.label) {
|
|
18527
|
-
case 0:
|
|
18528
|
-
setSaveAsViewModalOpen(false);
|
|
18529
|
-
if (!shouldUpdate) return [3 /*break*/, 2];
|
|
18530
|
-
return [4 /*yield*/, queryClient.invalidateQueries({ queryKey: ["views"] })];
|
|
18531
|
-
case 1:
|
|
18532
|
-
_a.sent();
|
|
18533
|
-
_a.label = 2;
|
|
18534
|
-
case 2: return [2 /*return*/];
|
|
18535
|
-
}
|
|
18536
|
-
});
|
|
18537
|
-
}); } }),
|
|
18538
|
-
React__default.createElement(LoadViewModal, { open: loadViewOpen, handleClose: function (shouldUpdate) {
|
|
18539
|
-
setLoadViewOpen(false);
|
|
18540
|
-
} })),
|
|
18541
|
-
React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(""); } }),
|
|
18542
|
-
React__default.createElement(Snackbar, { open: !!snackbarMessage, autoHideDuration: 800, onClose: handleCloseSnackbar, anchorOrigin: { vertical: "bottom", horizontal: "center" } },
|
|
18543
|
-
React__default.createElement(Alert$2, { onClose: handleCloseSnackbar, severity: "success" }, snackbarMessage))));
|
|
18544
|
-
};
|
|
18545
|
-
|
|
18546
|
-
var formatDateTimeToString = function (date) {
|
|
18547
|
-
var hour = date.getHours().toString().padStart(2, "0");
|
|
18548
|
-
var minute = date.getMinutes().toString().padStart(2, "0");
|
|
18549
|
-
var second = date.getSeconds().toString().padStart(2, "0");
|
|
18550
|
-
if (hour === "24") {
|
|
18551
|
-
hour = "00";
|
|
18552
|
-
}
|
|
18553
|
-
var formattedDate = date.toLocaleDateString("en-US", {
|
|
18554
|
-
month: "short",
|
|
18555
|
-
day: "numeric",
|
|
18556
|
-
});
|
|
18557
|
-
var formattedTime = "".concat(hour, ":").concat(minute, ":").concat(second);
|
|
18558
|
-
return { formattedDate: formattedDate, formattedTime: formattedTime };
|
|
18559
|
-
};
|
|
18560
|
-
|
|
18561
|
-
var useChartOptions = function () {
|
|
18562
|
-
var _a = useTrendingContext(); _a.state; var actions = _a.actions;
|
|
18563
|
-
var debounceTimerRef = useRef(null);
|
|
18564
|
-
var handleZoom = useCallback(function (_a) {
|
|
18565
|
-
var chart = _a.chart;
|
|
18566
|
-
if (debounceTimerRef.current) {
|
|
18567
|
-
clearTimeout(debounceTimerRef.current);
|
|
18568
|
-
}
|
|
18569
|
-
debounceTimerRef.current = setTimeout(function () {
|
|
18570
|
-
// Handle zoom event and execute fetch
|
|
18571
|
-
var newStart = new Date(chart.scales.x.min);
|
|
18572
|
-
var newEnd = new Date(chart.scales.x.max);
|
|
18573
|
-
actions.setTotalScope({
|
|
18574
|
-
start: newStart,
|
|
18575
|
-
end: newEnd,
|
|
18576
|
-
});
|
|
18577
|
-
}, 1000);
|
|
18578
|
-
}, [actions]);
|
|
18579
|
-
var handlePan = useCallback(function (_a) {
|
|
18580
|
-
var chart = _a.chart;
|
|
18581
|
-
if (debounceTimerRef.current) {
|
|
18582
|
-
clearTimeout(debounceTimerRef.current);
|
|
18583
|
-
}
|
|
18584
|
-
debounceTimerRef.current = setTimeout(function () {
|
|
18585
|
-
// Handle pan event and execute fetch
|
|
18586
|
-
var newStart = new Date(chart.scales.x.min);
|
|
18587
|
-
var newEnd = new Date(chart.scales.x.max);
|
|
18588
|
-
actions.setTotalScope({
|
|
18589
|
-
start: newStart,
|
|
18590
|
-
end: newEnd,
|
|
18591
|
-
graphPan: true,
|
|
18592
|
-
});
|
|
18593
|
-
}, 1000);
|
|
18594
|
-
}, [actions]);
|
|
18595
|
-
var initialOptions = useMemo(function () { return ({
|
|
18596
|
-
animation: {
|
|
18597
|
-
duration: 0, // No animation
|
|
18598
|
-
},
|
|
18599
|
-
responsive: true,
|
|
18600
|
-
maintainAspectRatio: false,
|
|
18601
|
-
scales: {
|
|
18602
|
-
x: {
|
|
18603
|
-
type: "time",
|
|
18604
|
-
ticks: {
|
|
18605
|
-
autoSkip: true,
|
|
18606
|
-
maxTicksLimit: 20,
|
|
18607
|
-
callback: function (value, index, ticks) {
|
|
18608
|
-
var currentDate = new Date(value);
|
|
18609
|
-
var time = formatDateTimeToString(currentDate).formattedTime;
|
|
18610
|
-
var date = formatDateTimeToString(currentDate).formattedDate;
|
|
18611
|
-
// Si es el primer tick, siempre muestra la fecha y hora
|
|
18612
|
-
if (index === 0) {
|
|
18613
|
-
return [time, date];
|
|
18614
|
-
}
|
|
18615
|
-
// De lo contrario, solo muestra la hora
|
|
18616
|
-
return time;
|
|
18617
|
-
},
|
|
18618
|
-
},
|
|
18619
|
-
grid: {
|
|
18620
|
-
display: true,
|
|
18621
|
-
},
|
|
18622
|
-
},
|
|
18623
|
-
y: {
|
|
18624
|
-
grid: {
|
|
18625
|
-
display: true,
|
|
18626
|
-
},
|
|
18627
|
-
afterUpdate: function (axis) {
|
|
18628
|
-
var chart = axis.chart;
|
|
18629
|
-
var keys = Object.keys(chart.scales).filter(function (sc) { return sc !== "x"; });
|
|
18630
|
-
if (keys.length > 1) {
|
|
18631
|
-
for (var scaleKey in chart.scales) {
|
|
18632
|
-
var scale = chart.scales[scaleKey];
|
|
18633
|
-
if (scale.max === 1 && scale.min === 0) {
|
|
18634
|
-
chart.scales[scaleKey].display = false;
|
|
18635
|
-
chart.scales[scaleKey].options.display = false;
|
|
18636
|
-
}
|
|
18637
|
-
else {
|
|
18638
|
-
chart.scales[scaleKey].display = true;
|
|
18639
|
-
chart.scales[scaleKey].options.display = true;
|
|
18640
|
-
}
|
|
18641
|
-
}
|
|
18642
|
-
}
|
|
18643
|
-
},
|
|
18644
|
-
},
|
|
18645
|
-
},
|
|
18646
|
-
plugins: {
|
|
18647
|
-
tooltip: { enabled: false },
|
|
18648
|
-
legend: { display: false },
|
|
18649
|
-
zoom: {
|
|
18650
|
-
zoom: {
|
|
18651
|
-
wheel: { enabled: true, mode: "x" },
|
|
18652
|
-
pinch: { enabled: true, mode: "x" },
|
|
18653
|
-
onZoom: handleZoom,
|
|
18654
|
-
mode: "x",
|
|
18655
|
-
},
|
|
18656
|
-
pan: {
|
|
18657
|
-
enabled: true,
|
|
18658
|
-
mode: "x",
|
|
18659
|
-
onPan: handlePan,
|
|
18660
|
-
},
|
|
18661
|
-
},
|
|
18662
|
-
},
|
|
18663
|
-
}); }, [handleZoom, handlePan]);
|
|
18664
|
-
return useState(initialOptions);
|
|
18665
|
-
};
|
|
18666
|
-
|
|
18667
|
-
var CustomOptionsComponent = function (_a) {
|
|
18668
|
-
var customOptions = _a.customOptions, setCustomOptions = _a.setCustomOptions, autoRefresh = _a.autoRefresh, setAutoRefresh = _a.setAutoRefresh;
|
|
18669
|
-
var handleGridChange = function (value) {
|
|
18670
|
-
setCustomOptions(function (prevOptions) { return (__assign(__assign({}, prevOptions), { showGrid: value })); });
|
|
18671
|
-
};
|
|
18672
|
-
var handleSteppedChange = function (value) {
|
|
18673
|
-
setCustomOptions(function (prevOptions) { return (__assign(__assign({}, prevOptions), { stepped: value })); });
|
|
18674
|
-
};
|
|
18675
|
-
return (React__default.createElement(React__default.Fragment, null,
|
|
18676
|
-
React__default.createElement(Grid2, { sx: {
|
|
18677
|
-
paddingLeft: "2rem",
|
|
18678
|
-
userSelect: "none",
|
|
18679
|
-
"& > label": {
|
|
18680
|
-
display: "flex",
|
|
18681
|
-
alignItems: "center",
|
|
18682
|
-
gap: "5px",
|
|
18683
|
-
},
|
|
18684
|
-
'& input[type="checkbox"]': {
|
|
18685
|
-
zoom: 1.5,
|
|
18686
|
-
},
|
|
18687
|
-
} },
|
|
18688
|
-
React__default.createElement(FormControlLabel, { checked: customOptions.showGrid, control: React__default.createElement(Checkbox, { color: "primary" }), label: "Show Grid", onChange: function (e, checked) {
|
|
18689
|
-
handleGridChange(checked);
|
|
18690
|
-
} })),
|
|
18691
|
-
React__default.createElement(Grid2, { sx: {
|
|
18692
|
-
paddingLeft: "2rem",
|
|
18693
|
-
userSelect: "none",
|
|
18694
|
-
"& > label": {
|
|
18695
|
-
display: "flex",
|
|
18696
|
-
alignItems: "center",
|
|
18697
|
-
gap: "5px",
|
|
18698
|
-
},
|
|
18699
|
-
'& input[type="checkbox"]': {
|
|
18700
|
-
zoom: 1.5,
|
|
18701
|
-
},
|
|
18702
|
-
} },
|
|
18703
|
-
React__default.createElement(FormControlLabel, { checked: customOptions.stepped, control: React__default.createElement(Checkbox, { color: "primary" }), label: "Stepped", onChange: function (e, checked) {
|
|
18704
|
-
handleSteppedChange(checked);
|
|
18705
|
-
} })),
|
|
18706
|
-
React__default.createElement(Grid2, { sx: {
|
|
18707
|
-
paddingLeft: "2rem",
|
|
18708
|
-
userSelect: "none",
|
|
18709
|
-
"& > label": {
|
|
18710
|
-
display: "flex",
|
|
18711
|
-
alignItems: "center",
|
|
18712
|
-
gap: "5px",
|
|
18713
|
-
},
|
|
18714
|
-
'& input[type="checkbox"]': {
|
|
18715
|
-
zoom: 1.5,
|
|
18716
|
-
},
|
|
18717
|
-
} },
|
|
18718
|
-
React__default.createElement(FormControlLabel, { checked: autoRefresh, control: React__default.createElement(Switch, { color: "primary" }), label: "Auto Refresh", onChange: function (e, checked) {
|
|
18719
|
-
setAutoRefresh(checked);
|
|
18720
|
-
} }))));
|
|
18721
|
-
};
|
|
18722
|
-
|
|
18723
|
-
var Header = React__default.memo(function (_a) {
|
|
18724
|
-
var setChartOptions = _a.setChartOptions, autoRefresh = _a.autoRefresh, setAutoRefresh = _a.setAutoRefresh;
|
|
18725
|
-
var _b = useTrendingContext(), state = _b.state, actions = _b.actions;
|
|
18726
|
-
var _c = useState({
|
|
18727
|
-
showGrid: true,
|
|
18728
|
-
stepped: false,
|
|
18729
|
-
}), customOptions = _c[0], setCustomOptions = _c[1];
|
|
18730
|
-
var handleDateNavigator = function (operator, current) {
|
|
18731
|
-
if (current === void 0) { current = false; }
|
|
18732
|
-
var newDates = dateNavigator(state.timeScopeStart, state.timeScopeEnd, state.scope, operator, current);
|
|
18733
|
-
if (newDates) {
|
|
18734
|
-
actions.setTotalScope({
|
|
18735
|
-
start: newDates.newStartDate,
|
|
18736
|
-
end: newDates.newEndDate,
|
|
18737
|
-
scope: state.scope,
|
|
18738
|
-
});
|
|
18739
|
-
}
|
|
18740
|
-
};
|
|
18741
|
-
var handleDateChange = function (newValue, key) {
|
|
18742
|
-
var _a;
|
|
18743
|
-
//@ts-ignore
|
|
18744
|
-
actions.setTotalScope((_a = {}, _a[key] = moment$f(newValue).toDate(), _a));
|
|
18745
|
-
};
|
|
18746
|
-
var handleChangeScope = function (value) {
|
|
18747
|
-
actions.setTotalScope({
|
|
18748
|
-
scope: value,
|
|
18749
|
-
});
|
|
18750
|
-
};
|
|
18751
|
-
useEffect(function () {
|
|
18752
|
-
var changeOptions = function () {
|
|
18753
|
-
setChartOptions(function (prevOptions) {
|
|
18754
|
-
var newScales = __assign({}, prevOptions.scales);
|
|
18755
|
-
Object.keys(newScales).forEach(function (key) {
|
|
18756
|
-
if (key) {
|
|
18757
|
-
newScales[key] = __assign(__assign({}, newScales[key]), { grid: __assign(__assign({}, newScales[key].grid), { display: customOptions.showGrid }) });
|
|
18758
|
-
}
|
|
18759
|
-
});
|
|
18760
|
-
return __assign(__assign({}, prevOptions), { elements: {
|
|
18761
|
-
line: {
|
|
18762
|
-
stepped: customOptions.stepped,
|
|
18763
|
-
lineTension: 0.1,
|
|
18764
|
-
},
|
|
18765
|
-
}, scales: newScales });
|
|
18766
|
-
});
|
|
18767
|
-
};
|
|
18768
|
-
changeOptions();
|
|
18769
|
-
}, [customOptions]);
|
|
18770
|
-
useEffect(function () {
|
|
18771
|
-
setChartOptions(function (prevOptions) { return (__assign(__assign({}, prevOptions), { scales: __assign(__assign({}, prevOptions.scales), { x: __assign(__assign({}, prevOptions.scales.x), { min: state.timeScopeStart.getTime(), max: state.timeScopeEnd.getTime() }) }) })); });
|
|
18772
|
-
}, [state.timeScopeStart, state.timeScopeEnd]);
|
|
18773
|
-
return (React__default.createElement(LocalizationProvider$1, { dateAdapter: AdapterMoment },
|
|
18774
|
-
React__default.createElement(Grid2, { size: { xs: 12 }, container: true, justifyContent: "space-between", alignItems: "center", style: { height: "8%" } },
|
|
18775
|
-
React__default.createElement(Grid2, { size: { md: 4 }, container: true, spacing: 1, justifyContent: "flex-start", alignItems: "center", wrap: "wrap" },
|
|
18776
|
-
React__default.createElement(Grid2, null,
|
|
18777
|
-
React__default.createElement(IconButton$1, { color: "primary", onClick: function () { return handleDateNavigator("subtract"); }, size: "small", sx: {
|
|
18778
|
-
padding: 0.5,
|
|
18779
|
-
color: "black",
|
|
18780
|
-
} },
|
|
18781
|
-
React__default.createElement(ChevronLeft, { fontSize: "medium" }))),
|
|
18782
|
-
React__default.createElement(Grid2, { size: { md: 4 } },
|
|
18783
|
-
React__default.createElement(DateTimePicker, { label: "Start", format: "MM/DD/YYYY HH:mm:ss", value: moment$f(state.timeScopeStart), onChange: function (newValue) {
|
|
18784
|
-
if (newValue) {
|
|
18785
|
-
handleDateChange(newValue.toDate(), "start");
|
|
18786
|
-
}
|
|
18787
|
-
}, minutesStep: 1, slotProps: {
|
|
18788
|
-
textField: {
|
|
18789
|
-
size: "small",
|
|
18790
|
-
variant: "outlined",
|
|
18791
|
-
fullWidth: true,
|
|
18792
|
-
},
|
|
18793
|
-
} })),
|
|
18794
|
-
React__default.createElement(Grid2, { size: { md: 2 }, marginTop: 0.5 },
|
|
18795
|
-
React__default.createElement(FormControl, { variant: "outlined", size: "small", fullWidth: true },
|
|
18796
|
-
React__default.createElement(Select, { value: state.scope, onChange: function (e) {
|
|
18797
|
-
return handleChangeScope(e.target.value);
|
|
18798
|
-
}, displayEmpty: true },
|
|
18799
|
-
React__default.createElement(MenuItem, { value: "10 min" }, "10 min"),
|
|
18800
|
-
React__default.createElement(MenuItem, { value: "1 hour" }, "1 hour"),
|
|
18801
|
-
React__default.createElement(MenuItem, { value: "4 hours" }, "4 hours"),
|
|
18802
|
-
React__default.createElement(MenuItem, { value: "12 hours" }, "12 hours"),
|
|
18803
|
-
React__default.createElement(MenuItem, { value: "1 day" }, "1 day"),
|
|
18804
|
-
React__default.createElement(MenuItem, { value: "10 days" }, "10 days"),
|
|
18805
|
-
React__default.createElement(MenuItem, { value: "custom" }, "Custom")))),
|
|
18806
|
-
React__default.createElement(Grid2, { size: { md: 4 } },
|
|
18807
|
-
React__default.createElement(DateTimePicker, { label: "End", format: "MM/DD/YYYY HH:mm:ss", value: autoRefresh ? null : moment$f(state.timeScopeEnd), onChange: function (newValue) {
|
|
18808
|
-
if (newValue) {
|
|
18809
|
-
handleDateChange(newValue.toDate(), "end");
|
|
18810
|
-
}
|
|
18811
|
-
}, minutesStep: 1, slotProps: {
|
|
18812
|
-
textField: {
|
|
18813
|
-
size: "small",
|
|
18814
|
-
variant: "outlined",
|
|
18815
|
-
fullWidth: true,
|
|
18816
|
-
},
|
|
18817
|
-
}, disabled: autoRefresh })),
|
|
18818
|
-
React__default.createElement(Grid2, null,
|
|
18819
|
-
React__default.createElement(IconButton$1, { onClick: function () { return handleDateNavigator("add"); }, sx: {
|
|
18820
|
-
"& .MuiSvgIcon-root": {
|
|
18821
|
-
cursor: "pointer !important",
|
|
18822
|
-
height: "24px",
|
|
18823
|
-
width: "24px",
|
|
18824
|
-
"& svg": {
|
|
18825
|
-
// Adjust the icon size as well
|
|
18826
|
-
fontSize: "1.5rem",
|
|
18827
|
-
},
|
|
18828
|
-
},
|
|
18829
|
-
color: "black",
|
|
18830
|
-
} },
|
|
18831
|
-
React__default.createElement(ChevronRight, { fontSize: "large" }))),
|
|
18832
|
-
React__default.createElement(Grid2, null,
|
|
18833
|
-
React__default.createElement(IconButton$1, { onClick: function () { return handleDateNavigator("subtract", true); }, sx: {
|
|
18834
|
-
"& .MuiSvgIcon-root": {
|
|
18835
|
-
cursor: "pointer !important",
|
|
18836
|
-
height: "24px",
|
|
18837
|
-
width: "24px",
|
|
18838
|
-
"& svg": {
|
|
18839
|
-
// Adjust the icon size as well
|
|
18840
|
-
fontSize: "1.5rem",
|
|
18841
|
-
},
|
|
18842
|
-
},
|
|
18843
|
-
color: "black",
|
|
18844
|
-
} },
|
|
18845
|
-
React__default.createElement(SkipNextIcon, { fontSize: "large" })))),
|
|
18846
|
-
React__default.createElement(Grid2, { size: { md: 6 }, container: true, justifyContent: "space-between" },
|
|
18847
|
-
React__default.createElement(Grid2, { container: true, wrap: "nowrap", spacing: 1 },
|
|
18848
|
-
React__default.createElement(Grid2, { container: true },
|
|
18849
|
-
React__default.createElement(CustomOptionsComponent, { customOptions: customOptions, setCustomOptions: setCustomOptions, autoRefresh: autoRefresh, setAutoRefresh: function (autoRefresh) {
|
|
18850
|
-
if (autoRefresh) {
|
|
18851
|
-
handleChangeScope("custom");
|
|
18852
|
-
handleDateChange(new Date(), "end");
|
|
18853
|
-
}
|
|
18854
|
-
setAutoRefresh(autoRefresh);
|
|
18855
|
-
} })))))));
|
|
18856
|
-
});
|
|
18857
|
-
Header.displayName = "Header";
|
|
18858
|
-
|
|
18859
|
-
var DraggableLineControl = React__default.memo(function (_a) {
|
|
18860
|
-
var initialLeft = _a.initialLeft, otherLineCoord = _a.otherLineCoord, onUpdate = _a.onUpdate, color = _a.color, chartArea = _a.chartArea;
|
|
18861
|
-
var _b = useState(false), isDragging = _b[0], setIsDragging = _b[1];
|
|
18862
|
-
var _c = useState(initialLeft), left = _c[0], setLeft = _c[1];
|
|
18863
|
-
var ref = useRef(null);
|
|
18864
|
-
var handleMouseDown = function (e) {
|
|
18865
|
-
setIsDragging(true);
|
|
18866
|
-
e.stopPropagation();
|
|
18867
|
-
e.preventDefault();
|
|
18868
|
-
};
|
|
18869
|
-
var handleMouseMove = function (e) {
|
|
18870
|
-
if (!isDragging || !ref.current)
|
|
18871
|
-
return;
|
|
18872
|
-
chartArea.width - chartArea.right;
|
|
18873
|
-
chartArea.left;
|
|
18874
|
-
var newLeft = Math.min(Math.max(e.clientX - ref.current.offsetParent.getBoundingClientRect().left, chartArea.left), chartArea.right);
|
|
18875
|
-
// Line limit
|
|
18876
|
-
if (color === "red" && newLeft > otherLineCoord - 20) {
|
|
18877
|
-
newLeft = otherLineCoord - 20;
|
|
18878
|
-
}
|
|
18879
|
-
else if (color === "blue" && newLeft < otherLineCoord + 20) {
|
|
18880
|
-
newLeft = otherLineCoord + 20;
|
|
18881
|
-
}
|
|
18882
|
-
setLeft(newLeft);
|
|
18883
|
-
onUpdate(newLeft); // Actualiza la posición de la línea en el gráfico
|
|
18884
|
-
};
|
|
18885
|
-
var handleMouseUp = function () {
|
|
18886
|
-
setIsDragging(false);
|
|
18887
|
-
};
|
|
18888
|
-
useEffect(function () {
|
|
18889
|
-
var mouseMoveHandler = function (e) { return handleMouseMove(e); };
|
|
18890
|
-
var mouseUpHandler = function () { return handleMouseUp(); };
|
|
18891
|
-
if (isDragging) {
|
|
18892
|
-
window.addEventListener("mousemove", mouseMoveHandler);
|
|
18893
|
-
window.addEventListener("mouseup", mouseUpHandler);
|
|
18894
|
-
}
|
|
18895
|
-
return function () {
|
|
18896
|
-
window.removeEventListener("mousemove", mouseMoveHandler);
|
|
18897
|
-
window.removeEventListener("mouseup", mouseUpHandler);
|
|
18898
|
-
};
|
|
18899
|
-
}, [isDragging]);
|
|
18900
|
-
return (React__default.createElement("div", { ref: ref, style: {
|
|
18901
|
-
height: 20,
|
|
18902
|
-
width: 20,
|
|
18903
|
-
background: color,
|
|
18904
|
-
position: "absolute",
|
|
18905
|
-
top: -10,
|
|
18906
|
-
left: left - 10,
|
|
18907
|
-
}, onMouseDown: handleMouseDown },
|
|
18908
|
-
React__default.createElement("div", { style: {
|
|
18909
|
-
height: chartArea.height,
|
|
18910
|
-
width: 2,
|
|
18911
|
-
background: color,
|
|
18912
|
-
position: "relative",
|
|
18913
|
-
top: 20,
|
|
18914
|
-
left: 0,
|
|
18915
|
-
right: 0,
|
|
18916
|
-
margin: "auto",
|
|
18917
|
-
} })));
|
|
18918
|
-
});
|
|
18919
|
-
DraggableLineControl.displayName = "DraggableLineControl";
|
|
18920
|
-
|
|
18921
|
-
var useGetVerticalLinePlugin = function (setChartArea, setCoords) {
|
|
18922
|
-
var chartPlugin = useMemo(function () { return ({
|
|
18923
|
-
id: "verticalLinePlugin",
|
|
18924
|
-
afterUpdate: function (chart) {
|
|
18925
|
-
if (chart.chartArea) {
|
|
18926
|
-
// console.log("after update");
|
|
18927
|
-
if (chart.mouseX === null) {
|
|
18928
|
-
chart.mouseX = chart.chartArea.left + chart.chartArea.width / 10;
|
|
18929
|
-
// chart.mouseX = chart.chartArea.left + 30.9
|
|
18930
|
-
}
|
|
18931
|
-
if (chart.secondLineX === null) {
|
|
18932
|
-
chart.secondLineX =
|
|
18933
|
-
chart.chartArea.left + chart.chartArea.width * 0.9;
|
|
18934
|
-
// chart.secondLineX = chart.chartArea.right
|
|
18935
|
-
}
|
|
18936
|
-
}
|
|
18937
|
-
},
|
|
18938
|
-
beforeInit: function (chart) {
|
|
18939
|
-
chart.mouseX = null;
|
|
18940
|
-
chart.secondLineX = null;
|
|
18941
|
-
},
|
|
18942
|
-
afterDatasetsDraw: function (chart) {
|
|
18943
|
-
var x1 = chart.mouseX;
|
|
18944
|
-
var x2 = chart.secondLineX;
|
|
18945
|
-
setChartArea(chart.chartArea);
|
|
18946
|
-
setCoords({ x1: x1, x2: x2 });
|
|
18947
|
-
},
|
|
18948
|
-
}); }, [setChartArea, setCoords]);
|
|
18949
|
-
return chartPlugin;
|
|
18950
|
-
};
|
|
18951
|
-
|
|
18952
|
-
var getValuesAtCursor = function (chart, timeAtCursor) {
|
|
18953
|
-
var valuesAtCursor = [];
|
|
18954
|
-
chart.data.datasets.forEach(function (dataset) {
|
|
18955
|
-
var previousDataPoint = null;
|
|
18956
|
-
for (var i = 0; i < dataset.data.length; i++) {
|
|
18957
|
-
if (dataset.data[i].x.getTime() <= timeAtCursor) {
|
|
18958
|
-
previousDataPoint = dataset.data[i];
|
|
18959
|
-
}
|
|
18960
|
-
else {
|
|
18961
|
-
break;
|
|
18962
|
-
}
|
|
18963
|
-
}
|
|
18964
|
-
if (previousDataPoint) {
|
|
18965
|
-
valuesAtCursor.push(previousDataPoint.y);
|
|
18966
|
-
}
|
|
18967
|
-
});
|
|
18968
|
-
return valuesAtCursor;
|
|
18969
|
-
};
|
|
18970
|
-
var updateCursorData = function (chart, setCursorData) {
|
|
18971
|
-
var xScale = chart.scales.x;
|
|
18972
|
-
// Coordenadas para la primera y segunda línea
|
|
18973
|
-
var timeAtCursor1 = xScale.getValueForPixel(chart.mouseX);
|
|
18974
|
-
var timeAtCursor2 = xScale.getValueForPixel(chart.secondLineX);
|
|
18975
|
-
// Los valores en el punto del cursor pueden ser diferentes
|
|
18976
|
-
var valuesAtCursor1 = getValuesAtCursor(chart, timeAtCursor1);
|
|
18977
|
-
var valuesAtCursor2 = getValuesAtCursor(chart, timeAtCursor2);
|
|
18978
|
-
setCursorData({
|
|
18979
|
-
x1: timeAtCursor1,
|
|
18980
|
-
x2: timeAtCursor2,
|
|
18981
|
-
values: __spreadArray(__spreadArray([], valuesAtCursor1, true), valuesAtCursor2, true),
|
|
18982
|
-
});
|
|
18983
|
-
};
|
|
18984
|
-
|
|
18985
|
-
var useXAxisDatePlugin = function () {
|
|
18986
|
-
var chartPlugin = useMemo(function () { return ({
|
|
18987
|
-
id: "xAxisDatePlugin",
|
|
18988
|
-
afterBuildTicks: function (chart) {
|
|
18989
|
-
var oldTicks = chart.scales.x.ticks;
|
|
18990
|
-
var newTicks = [];
|
|
18991
|
-
newTicks.push(oldTicks[0]);
|
|
18992
|
-
for (var i = 1; i < oldTicks.length; i++) {
|
|
18993
|
-
var current = new Date(oldTicks[i].value);
|
|
18994
|
-
var previous = new Date(oldTicks[i - 1].value);
|
|
18995
|
-
var time = formatDateTimeToString(current).formattedTime;
|
|
18996
|
-
var date = formatDateTimeToString(current).formattedDate;
|
|
18997
|
-
var newLabel = void 0;
|
|
18998
|
-
if (current.getDate() !== previous.getDate()) {
|
|
18999
|
-
newLabel = [time, date];
|
|
19000
|
-
}
|
|
19001
|
-
else {
|
|
19002
|
-
newLabel = time;
|
|
19003
|
-
}
|
|
19004
|
-
newTicks.push({
|
|
19005
|
-
value: oldTicks[i].value,
|
|
19006
|
-
major: oldTicks[i].major,
|
|
19007
|
-
label: newLabel,
|
|
19008
|
-
});
|
|
19009
|
-
}
|
|
19010
|
-
chart.scales.x.ticks = newTicks;
|
|
19011
|
-
},
|
|
19012
|
-
}); }, []);
|
|
19013
|
-
return chartPlugin;
|
|
19014
|
-
};
|
|
19015
|
-
|
|
19016
|
-
var useYAxisPlugin = function () {
|
|
19017
|
-
var chartPlugin = useMemo(function () { return ({
|
|
19018
|
-
id: "yAxisPlugin",
|
|
19019
|
-
}); }, []);
|
|
19020
|
-
return chartPlugin;
|
|
19021
|
-
};
|
|
19022
|
-
|
|
19023
|
-
var areRangesSimilar = function (tag1, tag2) {
|
|
19024
|
-
if (isNil(tag1.MaxScale) ||
|
|
19025
|
-
isNil(tag1.MinScale) ||
|
|
19026
|
-
isNil(tag2.MaxScale) ||
|
|
19027
|
-
isNil(tag2.MinScale))
|
|
19028
|
-
return;
|
|
19029
|
-
var range1 = tag1.MaxScale - tag1.MinScale; // Rango de la primera etiqueta
|
|
19030
|
-
var range2 = tag2.MaxScale - tag2.MinScale; // Rango de la segunda etiqueta
|
|
19031
|
-
// Determina los límites para la comparación
|
|
19032
|
-
var lowerBound = Math.max(tag1.MinScale, tag2.MinScale);
|
|
19033
|
-
var upperBound = Math.min(tag1.MaxScale, tag2.MaxScale);
|
|
19034
|
-
// Calcula el solapamiento entre los dos rangos
|
|
19035
|
-
var overlap = Math.max(0, upperBound - lowerBound);
|
|
19036
|
-
// Determina si el solapamiento es significativo comparado con los rangos individuales
|
|
19037
|
-
var isSignificantOverlap = overlap / range1 > 0.5 && overlap / range2 > 0.5;
|
|
19038
|
-
return isSignificantOverlap;
|
|
19039
|
-
};
|
|
19040
|
-
|
|
19041
|
-
var TrendingChart = React__default.memo(function (_a) {
|
|
19042
|
-
var series = _a.series, chartOptions = _a.chartOptions, setChartOptions = _a.setChartOptions, chartData = _a.chartData, setCursorData = _a.setCursorData, setChartData = _a.setChartData;
|
|
19043
|
-
var _b = useTrendingContext(), state = _b.state, viewTags = _b.state.viewTags; _b.actions;
|
|
19044
|
-
var _c = useState(null), lineTabCoords = _c[0], setLineTabCoords = _c[1];
|
|
19045
|
-
var _d = useState(null), chartArea = _d[0], setChartArea = _d[1];
|
|
19046
|
-
var chartRef = useRef(null);
|
|
19047
|
-
var forDebounce = useRef({
|
|
19048
|
-
viewTags: viewTags,
|
|
19049
|
-
series: series,
|
|
19050
|
-
setChartOptions: setChartOptions,
|
|
19051
|
-
setChartData: setChartData,
|
|
19052
|
-
});
|
|
19053
|
-
var debouncedUpdateChart = useRef(debounce(function () {
|
|
19054
|
-
if (chartRef.current) {
|
|
19055
|
-
updateCursorData(chartRef.current, setCursorData);
|
|
19056
|
-
chartRef.current.update();
|
|
19057
|
-
}
|
|
19058
|
-
}, 250));
|
|
19059
|
-
forDebounce.current = {
|
|
19060
|
-
viewTags: viewTags,
|
|
19061
|
-
series: series,
|
|
19062
|
-
setChartOptions: setChartOptions,
|
|
19063
|
-
setChartData: setChartData,
|
|
19064
|
-
};
|
|
19065
|
-
var debouncedUpdateChartBasedOnData = useRef(debounce(function () {
|
|
19066
|
-
var _a = forDebounce.current, viewTags = _a.viewTags, series = _a.series, setChartOptions = _a.setChartOptions, setChartData = _a.setChartData;
|
|
19067
|
-
var axes = [];
|
|
19068
|
-
if (!series.length) {
|
|
19069
|
-
return;
|
|
19070
|
-
}
|
|
19071
|
-
Object.values(viewTags).forEach(function (_a, index) {
|
|
19072
|
-
var tag = _a.viewTag;
|
|
19073
|
-
var existingAxis = axes.findIndex(function (existingTag) {
|
|
19074
|
-
return areRangesSimilar(existingTag, tag);
|
|
19075
|
-
});
|
|
19076
|
-
if (existingAxis === -1) {
|
|
19077
|
-
axes.push(tag); // Add new axis if no similar one exists
|
|
19078
|
-
seriesVsTags.current[tag.TagId] = tag.TagId;
|
|
19079
|
-
}
|
|
19080
|
-
else {
|
|
19081
|
-
seriesVsTags.current[tag.TagId] = axes[existingAxis].TagId;
|
|
19082
|
-
}
|
|
19083
|
-
});
|
|
19084
|
-
// Configure yAxes based on grouped axes
|
|
19085
|
-
var yAxesConfig = axes.map(function (axis) {
|
|
19086
|
-
var min = Number(axis.MinScale);
|
|
19087
|
-
var max = Number(axis.MaxScale);
|
|
19088
|
-
if (!min && !max) {
|
|
19089
|
-
max = 1;
|
|
19090
|
-
}
|
|
19091
|
-
return {
|
|
19092
|
-
id: "y-axis-".concat(axis.TagId),
|
|
19093
|
-
type: "linear",
|
|
19094
|
-
display: axis.IsVisible,
|
|
19095
|
-
title: {
|
|
19096
|
-
display: true,
|
|
19097
|
-
text: axis.TagName,
|
|
19098
|
-
},
|
|
19099
|
-
min: axis.IsAutoScale ? undefined : min,
|
|
19100
|
-
max: axis.IsAutoScale ? undefined : max,
|
|
19101
|
-
suggestedMin: axis.IsAutoScale ? undefined : min,
|
|
19102
|
-
suggestedMax: axis.IsAutoScale ? undefined : max,
|
|
19103
|
-
stepSize: 10,
|
|
19104
|
-
grid: {
|
|
19105
|
-
display: true,
|
|
19106
|
-
},
|
|
19107
|
-
afterUpdate: function (a) {
|
|
19108
|
-
var chart = a.chart;
|
|
19109
|
-
var keys = Object.keys(chart.scales).filter(function (sc) { return sc !== "x"; });
|
|
19110
|
-
var counterOfDefaultsScales = 0;
|
|
19111
|
-
if (keys.length > 1) {
|
|
19112
|
-
for (var scaleKey in chart.scales) {
|
|
19113
|
-
var scale = chart.scales[scaleKey];
|
|
19114
|
-
if (scale.max === 1 && scale.min === 0) {
|
|
19115
|
-
chart.scales[scaleKey].display = false;
|
|
19116
|
-
chart.scales[scaleKey].options.display = false;
|
|
19117
|
-
counterOfDefaultsScales++;
|
|
19118
|
-
}
|
|
19119
|
-
else {
|
|
19120
|
-
chart.scales[scaleKey].display = true;
|
|
19121
|
-
chart.scales[scaleKey].options.display = true;
|
|
19122
|
-
}
|
|
19123
|
-
if (counterOfDefaultsScales === keys.length) {
|
|
19124
|
-
chart.scales[keys[0]].display = true;
|
|
19125
|
-
chart.scales[keys[0]].options.display = true;
|
|
19126
|
-
}
|
|
19127
|
-
}
|
|
19128
|
-
}
|
|
19129
|
-
},
|
|
19130
|
-
};
|
|
19131
|
-
});
|
|
19132
|
-
setChartOptions(function (prevOptions) {
|
|
19133
|
-
var newResp = __assign(__assign({}, prevOptions), { scales: __assign({ x: __assign({}, prevOptions.scales.x) }, yAxesConfig.reduce(function (acc, cur) {
|
|
19134
|
-
var _a;
|
|
19135
|
-
return (__assign(__assign({}, acc), (_a = {}, _a[cur.id] = cur, _a)));
|
|
19136
|
-
}, {})) });
|
|
19137
|
-
return newResp;
|
|
19138
|
-
});
|
|
19139
|
-
var updatedSeries = series.map(function (serie, index) {
|
|
19140
|
-
var _a;
|
|
19141
|
-
var tagsSortedArray = Object.values(viewTags).sort(function (a, b) { return b.order - a.order; });
|
|
19142
|
-
var tag = (_a = tagsSortedArray[index]) === null || _a === void 0 ? void 0 : _a.viewTag;
|
|
19143
|
-
var yAxisTagId = seriesVsTags.current[tag === null || tag === void 0 ? void 0 : tag.TagId];
|
|
19144
|
-
return {
|
|
19145
|
-
yAxisID: "y-axis-".concat(yAxisTagId),
|
|
19146
|
-
data: serie.map(function (sample) { return ({
|
|
19147
|
-
x: new Date(sample.timestamp),
|
|
19148
|
-
y: sample.value,
|
|
19149
|
-
}); }),
|
|
19150
|
-
tagId: tag === null || tag === void 0 ? void 0 : tag.TagId,
|
|
19151
|
-
borderColor: tag === null || tag === void 0 ? void 0 : tag.Color,
|
|
19152
|
-
hidden: !(tag === null || tag === void 0 ? void 0 : tag.IsVisible),
|
|
19153
|
-
pointRadius: serie.length <= 50 ? 3 : 0,
|
|
19154
|
-
};
|
|
19155
|
-
});
|
|
19156
|
-
setChartShouldInitCursors(true);
|
|
19157
|
-
setChartData({
|
|
19158
|
-
labels: [],
|
|
19159
|
-
datasets: updatedSeries,
|
|
19160
|
-
});
|
|
19161
|
-
}, 1000));
|
|
19162
|
-
var _e = useState(false), chartShouldInitCursors = _e[0], setChartShouldInitCursors = _e[1];
|
|
19163
|
-
var memoizedSetChartArea = useCallback(function (area) { return setChartArea(area); }, []);
|
|
19164
|
-
var memoizedSetLineTabCoords = useCallback(function (coords) { return setLineTabCoords(coords); }, []);
|
|
19165
|
-
var verticalLinePlugin = useGetVerticalLinePlugin(memoizedSetChartArea, memoizedSetLineTabCoords);
|
|
19166
|
-
var xAxisDatePlugin = useXAxisDatePlugin();
|
|
19167
|
-
var yAxisPlugin = useYAxisPlugin();
|
|
19168
|
-
var plugins = useMemo(function () { return [verticalLinePlugin, xAxisDatePlugin, yAxisPlugin]; }, [verticalLinePlugin, xAxisDatePlugin, yAxisPlugin]);
|
|
19169
|
-
var seriesVsTags = useRef({});
|
|
19170
|
-
useEffect(function () {
|
|
19171
|
-
// Only run debounced update when series data actually changes
|
|
19172
|
-
// Display property changes (color, visibility, scales) are handled by immediate useEffects
|
|
19173
|
-
debouncedUpdateChartBasedOnData.current();
|
|
19174
|
-
}, [series]); // Removed state.graphShouldUpdate to prevent running on display-only changes
|
|
16481
|
+
value: point.value !== null
|
|
16482
|
+
? (Math.floor(point.value) >> viewTag.BitIndex) & 1
|
|
16483
|
+
: null,
|
|
16484
|
+
}); });
|
|
16485
|
+
}
|
|
16486
|
+
// Regular tag - use series data directly
|
|
16487
|
+
return seriesMap.get(tagId);
|
|
16488
|
+
})
|
|
16489
|
+
.filter(Boolean);
|
|
16490
|
+
}, [series, tagIds, queryTagIds, viewTags]);
|
|
16491
|
+
// Calculate overall min/max values from filtered series data
|
|
16492
|
+
var seriesMinMaxData = useSeriesMinMax(filteredSeries, tagIds);
|
|
16493
|
+
// Load initial view when views are fetched
|
|
19175
16494
|
useEffect(function () {
|
|
19176
|
-
if (
|
|
19177
|
-
|
|
19178
|
-
|
|
19179
|
-
|
|
16495
|
+
if (!viewSuccess || !views || !Array.isArray(views))
|
|
16496
|
+
return;
|
|
16497
|
+
// Always update the views list in context
|
|
16498
|
+
setViews(views);
|
|
16499
|
+
// Only set initial view if none is selected
|
|
16500
|
+
if (!viewSelected) {
|
|
16501
|
+
var lastCreated = views.reduce(function (prev, current) {
|
|
16502
|
+
return prev && prev.ViewId > current.ViewId ? prev : current;
|
|
16503
|
+
}, null);
|
|
16504
|
+
if (lastCreated) {
|
|
16505
|
+
setViewId(lastCreated.ViewId);
|
|
16506
|
+
setViewSelected(lastCreated);
|
|
19180
16507
|
}
|
|
19181
16508
|
}
|
|
19182
|
-
}, [
|
|
19183
|
-
// Update
|
|
16509
|
+
}, [viewSuccess, views, viewSelected, setViews, setViewSelected]);
|
|
16510
|
+
// Update viewId when viewSelected changes (e.g., from LoadViewModal)
|
|
19184
16511
|
useEffect(function () {
|
|
19185
|
-
|
|
19186
|
-
|
|
19187
|
-
|
|
19188
|
-
|
|
19189
|
-
|
|
19190
|
-
|
|
19191
|
-
|
|
19192
|
-
}
|
|
19193
|
-
return dataset;
|
|
19194
|
-
});
|
|
19195
|
-
return __assign(__assign({}, prevData), { datasets: updatedDatasets });
|
|
19196
|
-
});
|
|
19197
|
-
}, [viewTags, setChartData]);
|
|
19198
|
-
// Update Y-axis scales immediately when AutoScale or Min/Max changes
|
|
16512
|
+
if (viewSelected) {
|
|
16513
|
+
setViewId(viewSelected.ViewId);
|
|
16514
|
+
}
|
|
16515
|
+
}, [viewSelected]);
|
|
16516
|
+
// Load view tags when fetched - ONLY when viewId changes, not on every data refetch
|
|
16517
|
+
// This preserves local order changes (from drag-and-drop) until a new view is loaded
|
|
16518
|
+
var loadedViewIdRef = useRef(null);
|
|
19199
16519
|
useEffect(function () {
|
|
19200
|
-
|
|
19201
|
-
|
|
19202
|
-
|
|
19203
|
-
|
|
19204
|
-
|
|
16520
|
+
if (!viewTagsSuccess ||
|
|
16521
|
+
!viewTagsData ||
|
|
16522
|
+
!Array.isArray(viewTagsData) ||
|
|
16523
|
+
viewId === null)
|
|
16524
|
+
return;
|
|
16525
|
+
// Only reset viewTags when viewId actually changes (loading a different view)
|
|
16526
|
+
// Do NOT reset if viewId is the same (data is just refetching)
|
|
16527
|
+
if (viewId === loadedViewIdRef.current)
|
|
16528
|
+
return;
|
|
16529
|
+
loadedViewIdRef.current = viewId;
|
|
16530
|
+
var backendTags = viewTagsData;
|
|
16531
|
+
var localViewTags = getViewFromLocal(viewId);
|
|
16532
|
+
var mergedTags = {};
|
|
16533
|
+
if (localViewTags) {
|
|
16534
|
+
// If local storage exists, use it as the source of truth for metadata (Order, Alias)
|
|
16535
|
+
// and for virtual tags (Bit Extracted)
|
|
16536
|
+
var backendTagIds_1 = new Set(backendTags.map(function (t) { return t.TagId; }));
|
|
16537
|
+
// 1. Process local tags
|
|
16538
|
+
Object.values(localViewTags).forEach(function (entry) {
|
|
16539
|
+
var viewTag = entry.viewTag;
|
|
16540
|
+
// If it's a backend tag, check if it still exists in the backend response
|
|
16541
|
+
// (Permission check or tag deletion check)
|
|
16542
|
+
if (!viewTag.IsBitExtracted) {
|
|
16543
|
+
if (backendTagIds_1.has(viewTag.TagId)) {
|
|
16544
|
+
mergedTags[viewTag.TagId] = entry;
|
|
16545
|
+
}
|
|
16546
|
+
}
|
|
16547
|
+
else {
|
|
16548
|
+
// Virtual tags are always added from local storage
|
|
16549
|
+
mergedTags[viewTag.TagId] = entry;
|
|
16550
|
+
}
|
|
19205
16551
|
});
|
|
19206
|
-
|
|
19207
|
-
|
|
19208
|
-
|
|
19209
|
-
|
|
19210
|
-
|
|
19211
|
-
|
|
19212
|
-
|
|
19213
|
-
|
|
19214
|
-
max = 1;
|
|
19215
|
-
}
|
|
19216
|
-
return {
|
|
19217
|
-
id: "y-axis-".concat(axis.TagId),
|
|
19218
|
-
type: "linear",
|
|
19219
|
-
display: axis.IsVisible,
|
|
19220
|
-
title: {
|
|
19221
|
-
display: true,
|
|
19222
|
-
text: axis.TagName,
|
|
19223
|
-
},
|
|
19224
|
-
min: axis.IsAutoScale ? undefined : min,
|
|
19225
|
-
max: axis.IsAutoScale ? undefined : max,
|
|
19226
|
-
suggestedMin: axis.IsAutoScale ? undefined : min,
|
|
19227
|
-
suggestedMax: axis.IsAutoScale ? undefined : max,
|
|
19228
|
-
stepSize: 10,
|
|
19229
|
-
grid: {
|
|
19230
|
-
display: true,
|
|
19231
|
-
},
|
|
19232
|
-
afterUpdate: function (a) {
|
|
19233
|
-
var chart = a.chart;
|
|
19234
|
-
var keys = Object.keys(chart.scales).filter(function (sc) { return sc !== "x"; });
|
|
19235
|
-
var counterOfDefaultsScales = 0;
|
|
19236
|
-
if (keys.length > 1) {
|
|
19237
|
-
for (var scaleKey in chart.scales) {
|
|
19238
|
-
var scale = chart.scales[scaleKey];
|
|
19239
|
-
if (scale.max === 1 && scale.min === 0) {
|
|
19240
|
-
chart.scales[scaleKey].display = false;
|
|
19241
|
-
chart.scales[scaleKey].options.display = false;
|
|
19242
|
-
counterOfDefaultsScales++;
|
|
19243
|
-
}
|
|
19244
|
-
else {
|
|
19245
|
-
chart.scales[scaleKey].display = true;
|
|
19246
|
-
chart.scales[scaleKey].options.display = true;
|
|
19247
|
-
}
|
|
19248
|
-
if (counterOfDefaultsScales === keys.length) {
|
|
19249
|
-
chart.scales[keys[0]].display = true;
|
|
19250
|
-
chart.scales[keys[0]].options.display = true;
|
|
19251
|
-
}
|
|
19252
|
-
}
|
|
16552
|
+
// 2. Add any new backend tags that might be missing from local storage
|
|
16553
|
+
// (Rare case, but possible if added by another user/session)
|
|
16554
|
+
backendTags.forEach(function (backendTag) {
|
|
16555
|
+
if (!mergedTags[backendTag.TagId]) {
|
|
16556
|
+
// Add with default order at the end
|
|
16557
|
+
var maxOrder = Math.max.apply(Math, __spreadArray(__spreadArray([], Object.values(mergedTags).map(function (t) { return t.order; }), false), [0], false));
|
|
16558
|
+
if (isNil(backendTag.Color)) {
|
|
16559
|
+
backendTag.Color = getRandomColor();
|
|
19253
16560
|
}
|
|
19254
|
-
|
|
19255
|
-
|
|
19256
|
-
|
|
19257
|
-
|
|
19258
|
-
|
|
19259
|
-
|
|
19260
|
-
}, {})) })); });
|
|
19261
|
-
}, [viewTags, setChartOptions]);
|
|
19262
|
-
return (React__default.createElement(Paper, { style: { height: "100%", position: "relative" } },
|
|
19263
|
-
lineTabCoords && chartArea ? (React__default.createElement(DraggableLineControl, { color: "red", chartArea: chartArea, initialLeft: lineTabCoords === null || lineTabCoords === void 0 ? void 0 : lineTabCoords.x1, otherLineCoord: lineTabCoords === null || lineTabCoords === void 0 ? void 0 : lineTabCoords.x2, onUpdate: function (newLeft) {
|
|
19264
|
-
setLineTabCoords(function (prevCoords) {
|
|
19265
|
-
prevCoords.x1 = newLeft;
|
|
19266
|
-
return prevCoords;
|
|
19267
|
-
});
|
|
19268
|
-
// @ts-ignore
|
|
19269
|
-
chartRef.current.mouseX = newLeft;
|
|
19270
|
-
debouncedUpdateChart.current();
|
|
19271
|
-
} })) : null,
|
|
19272
|
-
lineTabCoords && chartArea ? (React__default.createElement(DraggableLineControl, { color: "blue", initialLeft: lineTabCoords === null || lineTabCoords === void 0 ? void 0 : lineTabCoords.x2, otherLineCoord: lineTabCoords === null || lineTabCoords === void 0 ? void 0 : lineTabCoords.x1, chartArea: chartArea, onUpdate: function (newLeft) {
|
|
19273
|
-
setLineTabCoords(function (prevCoords) {
|
|
19274
|
-
prevCoords.x2 = newLeft;
|
|
19275
|
-
return prevCoords;
|
|
19276
|
-
});
|
|
19277
|
-
// @ts-ignore
|
|
19278
|
-
chartRef.current.secondLineX = newLeft;
|
|
19279
|
-
debouncedUpdateChart.current();
|
|
19280
|
-
} })) : null,
|
|
19281
|
-
React__default.createElement(Line, { ref: chartRef, data: chartData, options: chartOptions, plugins: plugins })));
|
|
19282
|
-
});
|
|
19283
|
-
TrendingChart.displayName = "TrendingChart";
|
|
19284
|
-
|
|
19285
|
-
Chart.register(CategoryScale, LinearScale, PointElement, LineElement, Title, Tooltip$1, Legend, TimeScale, zoomPlugin);
|
|
19286
|
-
var Trending = React__default.memo(function (_a) {
|
|
19287
|
-
_a.title; var autoRefresh = _a.autoRefresh, setAutoRefresh = _a.setAutoRefresh;
|
|
19288
|
-
var _b = useTrendingContext(), state = _b.state, _c = _b.state, viewTags = _c.viewTags; _c.shouldRefetchSeries;
|
|
19289
|
-
var _d = useState(""), error = _d[0], setError = _d[1];
|
|
19290
|
-
var _e = useState(null), selectedRowTagId = _e[0], setSelectedRowTagId = _e[1];
|
|
19291
|
-
var _f = useState(null), viewTagForDelete = _f[0], setViewTagForDelete = _f[1];
|
|
19292
|
-
var _g = useChartOptions(), chartOptions = _g[0], setChartOptions = _g[1];
|
|
19293
|
-
var _h = useState({
|
|
19294
|
-
labels: [],
|
|
19295
|
-
datasets: [],
|
|
19296
|
-
}), chartData = _h[0], setChartData = _h[1];
|
|
19297
|
-
var _j = useState(null), cursorData = _j[0], setCursorData = _j[1];
|
|
19298
|
-
var handleRightClick = function (event, tagId) {
|
|
19299
|
-
event.preventDefault();
|
|
19300
|
-
event.stopPropagation(); // Prevent the click event from propagating to the document
|
|
19301
|
-
if (isNumber(tagId)) {
|
|
19302
|
-
setViewTagForDelete(viewTags[tagId].viewTag);
|
|
19303
|
-
}
|
|
19304
|
-
else {
|
|
19305
|
-
setViewTagForDelete(null);
|
|
19306
|
-
}
|
|
19307
|
-
setSelectedRowTagId(tagId);
|
|
19308
|
-
};
|
|
19309
|
-
var _k = useSearchSeries({
|
|
19310
|
-
start: state.timeScopeStart.getTime(),
|
|
19311
|
-
end: state.timeScopeEnd.getTime(),
|
|
19312
|
-
tagIds: Object.values(viewTags).map(function (tag) { return tag.viewTag.TagId; }),
|
|
19313
|
-
autoRefresh: autoRefresh,
|
|
19314
|
-
}), series = _k.data, seriesLoading = _k.isLoading; _k.isError; _k.error; _k.isSuccess;
|
|
19315
|
-
return (React__default.createElement(React__default.Fragment, null,
|
|
19316
|
-
React__default.createElement(Grid2, { container: true, style: { width: "95svw", height: "88svh", margin: 0 } },
|
|
19317
|
-
React__default.createElement(Header, { setChartOptions: setChartOptions, autoRefresh: autoRefresh, setAutoRefresh: setAutoRefresh }),
|
|
19318
|
-
React__default.createElement(Grid2, { size: { md: 12 } },
|
|
19319
|
-
React__default.createElement(Divider, { style: { margin: "10px 0 20px" } })),
|
|
19320
|
-
React__default.createElement(Grid2, { size: { xs: 12 }, style: { height: "45%" } },
|
|
19321
|
-
React__default.createElement(TrendingChart, { series: series !== null && series !== void 0 ? series : [], chartData: chartData, setChartData: setChartData, chartOptions: chartOptions, setChartOptions: setChartOptions, setCursorData: setCursorData })),
|
|
19322
|
-
React__default.createElement(Grid2, { container: true, size: { xs: 12 }, onContextMenu: function (e) { return handleRightClick(e, null); }, style: {
|
|
19323
|
-
height: "40%",
|
|
19324
|
-
minWidth: "100%",
|
|
19325
|
-
borderRadius: 10,
|
|
19326
|
-
margin: "10px 0 10px",
|
|
19327
|
-
position: seriesLoading ? "relative" : "inherit",
|
|
19328
|
-
} },
|
|
19329
|
-
seriesLoading && (React__default.createElement("div", { style: {
|
|
19330
|
-
position: "absolute",
|
|
19331
|
-
top: 0,
|
|
19332
|
-
left: 0,
|
|
19333
|
-
width: "100%",
|
|
19334
|
-
height: "100%",
|
|
19335
|
-
background: "rgba(255, 255, 255, 0.7)", // fondo semitransparente
|
|
19336
|
-
display: "flex", // Centra el CircularProgress
|
|
19337
|
-
justifyContent: "center", // Centra horizontalmente
|
|
19338
|
-
alignItems: "center", // Centra verticalmente
|
|
19339
|
-
zIndex: 2,
|
|
19340
|
-
} },
|
|
19341
|
-
React__default.createElement(CircularProgress, { size: "2rem" }))),
|
|
19342
|
-
React__default.createElement(TableComponent, { chartData: chartData, cursorData: cursorData, viewTagForDelete: viewTagForDelete, setViewTagForDelete: setViewTagForDelete, selectedRowTagId: selectedRowTagId, setSelectedRowTagId: setSelectedRowTagId }))),
|
|
19343
|
-
React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(""); }, title: "ERROR" })));
|
|
19344
|
-
});
|
|
19345
|
-
Trending.displayName = "Trending";
|
|
19346
|
-
|
|
19347
|
-
// @flow
|
|
19348
|
-
var TrendingsPage = function () {
|
|
19349
|
-
var _a = useState(false), autoRefresh = _a[0], setAutoRefresh = _a[1];
|
|
19350
|
-
var _b = useState(""), error = _b[0], setError = _b[1];
|
|
19351
|
-
var _c = useState(null), viewId = _c[0], setViewId = _c[1];
|
|
19352
|
-
var _d = useTrendingContext(), viewSelected = _d.state.viewSelected, _e = _d.actions, setViews = _e.setViews, setViewTagsAndRefetch = _e.setViewTagsAndRefetch, setViewSelected = _e.setViewSelected;
|
|
19353
|
-
var _f = useSearchViews({ autoRefresh: autoRefresh }), views = _f.data; _f.isLoading; var viewsIsError = _f.isError, viewsError = _f.error, viewSuccess = _f.isSuccess;
|
|
19354
|
-
var _g = useSearchViewTags({ viewId: viewId }), viewTags = _g.data; _g.isLoading; var viewTagsIsError = _g.isError, viewTagsError = _g.error, viewTagsSuccess = _g.isSuccess;
|
|
19355
|
-
useEffect(function () {
|
|
19356
|
-
var lastCreated;
|
|
19357
|
-
if (!viewSelected) {
|
|
19358
|
-
if (!views)
|
|
19359
|
-
return;
|
|
19360
|
-
setViews(views);
|
|
19361
|
-
lastCreated = views.reduce(function (prev, current) {
|
|
19362
|
-
return prev && prev.ViewId > current.ViewId ? prev : current;
|
|
19363
|
-
}, null);
|
|
19364
|
-
setViewId(lastCreated.ViewId);
|
|
19365
|
-
//viewSelected
|
|
19366
|
-
setViewSelected(lastCreated);
|
|
16561
|
+
mergedTags[backendTag.TagId] = {
|
|
16562
|
+
viewTag: backendTag,
|
|
16563
|
+
order: maxOrder + 1,
|
|
16564
|
+
};
|
|
16565
|
+
}
|
|
16566
|
+
});
|
|
19367
16567
|
}
|
|
19368
16568
|
else {
|
|
19369
|
-
|
|
19370
|
-
|
|
19371
|
-
}
|
|
19372
|
-
}, [viewSuccess]);
|
|
19373
|
-
useEffect(function () {
|
|
19374
|
-
if (viewTags) {
|
|
19375
|
-
if (!viewTags)
|
|
19376
|
-
return;
|
|
19377
|
-
var vTags = viewTags.reduce(function (carr, curr, idx) {
|
|
16569
|
+
// No local storage -> Use backend tags with default ordering
|
|
16570
|
+
mergedTags = backendTags.reduce(function (carr, curr, idx) {
|
|
19378
16571
|
if (isNil(curr.Color)) {
|
|
19379
16572
|
curr.Color = getRandomColor();
|
|
19380
16573
|
}
|
|
@@ -19384,25 +16577,128 @@ var TrendingsPage = function () {
|
|
|
19384
16577
|
};
|
|
19385
16578
|
return carr;
|
|
19386
16579
|
}, {});
|
|
19387
|
-
setViewTagsAndRefetch(vTags);
|
|
19388
16580
|
}
|
|
19389
|
-
|
|
16581
|
+
// Reset stable ref when loading new view
|
|
16582
|
+
stableTagIdsRef.current = [];
|
|
16583
|
+
setViewTagsAndRefetch(mergedTags);
|
|
16584
|
+
}, [viewTagsSuccess, viewTagsData, setViewTagsAndRefetch, viewId]);
|
|
16585
|
+
// Update context with calculated min/max values
|
|
16586
|
+
// Use ref to prevent infinite loop from object reference changes
|
|
16587
|
+
var seriesMinMaxDataRef = useRef("");
|
|
16588
|
+
useEffect(function () {
|
|
16589
|
+
var serialized = JSON.stringify(seriesMinMaxData);
|
|
16590
|
+
if (serialized !== seriesMinMaxDataRef.current) {
|
|
16591
|
+
seriesMinMaxDataRef.current = serialized;
|
|
16592
|
+
setSeriesMinMax(seriesMinMaxData);
|
|
16593
|
+
}
|
|
16594
|
+
}, [seriesMinMaxData, setSeriesMinMax]);
|
|
16595
|
+
// Reset cursors when view changes or time scope changes significantly
|
|
16596
|
+
var prevViewIdRef = useRef(null);
|
|
16597
|
+
useEffect(function () {
|
|
16598
|
+
// Reset cursors when switching views or when time scope changes significantly
|
|
16599
|
+
if (viewSelected && viewSelected.ViewId !== prevViewIdRef.current) {
|
|
16600
|
+
prevViewIdRef.current = viewSelected.ViewId;
|
|
16601
|
+
resetCursors();
|
|
16602
|
+
}
|
|
16603
|
+
}, [viewSelected, resetCursors]);
|
|
16604
|
+
// Also reset cursors when time scope changes (zoom/pan)
|
|
16605
|
+
useEffect(function () {
|
|
16606
|
+
resetCursors();
|
|
16607
|
+
}, [timeScopeStart, timeScopeEnd, resetCursors]);
|
|
16608
|
+
// Increment trigger when series data finishes loading
|
|
16609
|
+
// This ensures cursors re-render AFTER chart has new data
|
|
16610
|
+
var prevSeriesLoadingRef = useRef(false);
|
|
16611
|
+
useEffect(function () {
|
|
16612
|
+
if (prevSeriesLoadingRef.current && !seriesLoading) {
|
|
16613
|
+
// Transition from loading to not loading - data just loaded
|
|
16614
|
+
setDataLoadedTrigger(function (prev) { return prev + 1; });
|
|
16615
|
+
}
|
|
16616
|
+
prevSeriesLoadingRef.current = seriesLoading;
|
|
16617
|
+
}, [seriesLoading]);
|
|
16618
|
+
// Handle errors
|
|
19390
16619
|
useEffect(function () {
|
|
19391
16620
|
if (viewTagsError && viewTagsIsError) {
|
|
19392
|
-
setError(viewTagsError
|
|
16621
|
+
setError(viewTagsError instanceof Error
|
|
16622
|
+
? viewTagsError.message
|
|
16623
|
+
: String(viewTagsError));
|
|
19393
16624
|
}
|
|
19394
16625
|
if (viewsError && viewsIsError) {
|
|
19395
|
-
setError(viewsError.message);
|
|
16626
|
+
setError(viewsError instanceof Error ? viewsError.message : String(viewsError));
|
|
16627
|
+
}
|
|
16628
|
+
if (seriesError && seriesIsError) {
|
|
16629
|
+
setError(seriesError instanceof Error
|
|
16630
|
+
? seriesError.message
|
|
16631
|
+
: String(seriesError));
|
|
19396
16632
|
}
|
|
19397
|
-
}, [
|
|
16633
|
+
}, [
|
|
16634
|
+
viewsError,
|
|
16635
|
+
viewsIsError,
|
|
16636
|
+
viewTagsError,
|
|
16637
|
+
viewTagsIsError,
|
|
16638
|
+
seriesError,
|
|
16639
|
+
seriesIsError,
|
|
16640
|
+
]);
|
|
16641
|
+
var isLoading = viewsLoading || viewTagsLoading;
|
|
19398
16642
|
return (React__default.createElement(React__default.Fragment, null,
|
|
19399
|
-
React__default.createElement(HelmetDexteel, { title: "
|
|
19400
|
-
React__default.createElement(
|
|
19401
|
-
|
|
16643
|
+
React__default.createElement(HelmetDexteel, { title: "Trendings" }),
|
|
16644
|
+
React__default.createElement("div", { style: {
|
|
16645
|
+
padding: "16px",
|
|
16646
|
+
width: "100%",
|
|
16647
|
+
height: "92vh",
|
|
16648
|
+
position: "relative",
|
|
16649
|
+
backgroundColor: "#FAFAFA",
|
|
16650
|
+
display: "flex",
|
|
16651
|
+
flexDirection: "column",
|
|
16652
|
+
} },
|
|
16653
|
+
isLoading && (React__default.createElement("div", { style: {
|
|
16654
|
+
position: "absolute",
|
|
16655
|
+
top: 0,
|
|
16656
|
+
left: 0,
|
|
16657
|
+
width: "100%",
|
|
16658
|
+
height: "100%",
|
|
16659
|
+
background: "rgba(255, 255, 255, 0.7)",
|
|
16660
|
+
display: "flex",
|
|
16661
|
+
justifyContent: "center",
|
|
16662
|
+
alignItems: "center",
|
|
16663
|
+
zIndex: 1000,
|
|
16664
|
+
} },
|
|
16665
|
+
React__default.createElement(CircularProgress, { size: "3rem" }))),
|
|
16666
|
+
React__default.createElement("div", { style: { flexShrink: 0 } },
|
|
16667
|
+
React__default.createElement(HeaderSectionV2, { autoRefresh: autoRefresh, setAutoRefresh: setAutoRefresh, setChartOptions: setChartOptions, chartInstance: chartInstance })),
|
|
16668
|
+
React__default.createElement(Divider, { sx: { my: 2 } }),
|
|
16669
|
+
React__default.createElement("div", { style: {
|
|
16670
|
+
flexGrow: 1,
|
|
16671
|
+
minHeight: 0,
|
|
16672
|
+
display: "flex",
|
|
16673
|
+
width: "100%",
|
|
16674
|
+
} },
|
|
16675
|
+
React__default.createElement(Group$1, { orientation: "vertical", style: { width: "100%", height: "100%" } },
|
|
16676
|
+
React__default.createElement(Panel, { defaultSize: 80, minSize: 20 },
|
|
16677
|
+
React__default.createElement("div", { style: { height: "100%", width: "100%" } },
|
|
16678
|
+
React__default.createElement(TrendingChartV2, { customOptions: chartOptions, series: filteredSeries, isLoading: seriesLoading, onChartReady: setChartInstance, dataLoadedTrigger: dataLoadedTrigger }))),
|
|
16679
|
+
React__default.createElement(Separator, { style: {
|
|
16680
|
+
height: "10px",
|
|
16681
|
+
background: "#f0f0f0",
|
|
16682
|
+
cursor: "row-resize",
|
|
16683
|
+
display: "flex",
|
|
16684
|
+
alignItems: "center",
|
|
16685
|
+
justifyContent: "center",
|
|
16686
|
+
borderTop: "1px solid #e0e0e0",
|
|
16687
|
+
borderBottom: "1px solid #e0e0e0",
|
|
16688
|
+
} },
|
|
16689
|
+
React__default.createElement("div", { style: {
|
|
16690
|
+
width: "40px",
|
|
16691
|
+
height: "4px",
|
|
16692
|
+
backgroundColor: "#ccc",
|
|
16693
|
+
borderRadius: "2px",
|
|
16694
|
+
} })),
|
|
16695
|
+
React__default.createElement(Panel, { defaultSize: 20, minSize: 10 },
|
|
16696
|
+
React__default.createElement("div", { style: { height: "100%", width: "100%", overflow: "auto" } },
|
|
16697
|
+
React__default.createElement(TagsTableV2, null)))))),
|
|
19402
16698
|
React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(""); }, size: "xl", title: "ERROR" })));
|
|
19403
16699
|
};
|
|
19404
16700
|
|
|
19405
|
-
var
|
|
16701
|
+
var TrendingsV2Index = function () {
|
|
19406
16702
|
var _a = useState(false), ihPathLoaded = _a[0], setIhPathLoaded = _a[1];
|
|
19407
16703
|
useEffect(function () {
|
|
19408
16704
|
var getIhPath = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
@@ -19418,15 +16714,13 @@ var index = function () {
|
|
|
19418
16714
|
}
|
|
19419
16715
|
});
|
|
19420
16716
|
}); };
|
|
19421
|
-
getIhPath()
|
|
19422
|
-
console.log("ih path loaded");
|
|
19423
|
-
});
|
|
16717
|
+
getIhPath();
|
|
19424
16718
|
}, []);
|
|
19425
16719
|
if (!ihPathLoaded) {
|
|
19426
16720
|
return (React__default.createElement("div", { className: "d-flex justify-content-center align-items-center" }, "Loading..."));
|
|
19427
16721
|
}
|
|
19428
|
-
return (React__default.createElement(
|
|
19429
|
-
React__default.createElement(
|
|
16722
|
+
return (React__default.createElement(TrendingProviderV2, null,
|
|
16723
|
+
React__default.createElement(TrendingsPageV2, null)));
|
|
19430
16724
|
};
|
|
19431
16725
|
|
|
19432
16726
|
var MESFMainRouter = function () {
|
|
@@ -19438,7 +16732,6 @@ var MESFMainRouter = function () {
|
|
|
19438
16732
|
React__default.createElement(Route, { path: "/", element: React__default.createElement(Navigate, { replace: true, to: "/home" }) }),
|
|
19439
16733
|
canShowSettings && (React__default.createElement(Route, { path: "/configuration/*", element: React__default.createElement(Configuration, null) })),
|
|
19440
16734
|
React__default.createElement(Route, { path: "/account", element: React__default.createElement(Account, null) }),
|
|
19441
|
-
React__default.createElement(Route, { path: "/trendings", element: React__default.createElement(index, null) }),
|
|
19442
16735
|
React__default.createElement(Route, { path: "/trendings-v2", element: React__default.createElement(TrendingsV2Index, null) }),
|
|
19443
16736
|
React__default.createElement(Route, { path: "/home", element: React__default.createElement(Home, null) })),
|
|
19444
16737
|
React__default.createElement(CustomRoutes, null)));
|
|
@@ -19448,8 +16741,8 @@ var MESFMainContainer = function () { return (React__default.createElement("div"
|
|
|
19448
16741
|
React__default.createElement(MESFMainRouter, null))); };
|
|
19449
16742
|
|
|
19450
16743
|
var Navigation = function (_a) {
|
|
19451
|
-
var _b = _a.showAreaSelector, showAreaSelector = _b === void 0 ? false : _b, _c = _a.
|
|
19452
|
-
var
|
|
16744
|
+
var _b = _a.showAreaSelector, showAreaSelector = _b === void 0 ? false : _b, _c = _a.showTrendingsV2Icon, showTrendingsV2Icon = _c === void 0 ? true : _c, _d = _a.navbarTitle, navbarTitle = _d === void 0 ? "MESF" : _d, _e = _a.byPassHeaderRoutes, byPassHeaderRoutes = _e === void 0 ? [] : _e;
|
|
16745
|
+
var _f = useSearchParams(), params = _f[0]; _f[1];
|
|
19453
16746
|
var mounted = useRef(true);
|
|
19454
16747
|
var location = useLocation();
|
|
19455
16748
|
useEffect(function () {
|
|
@@ -19468,7 +16761,7 @@ var Navigation = function (_a) {
|
|
|
19468
16761
|
return location.pathname.startsWith(route);
|
|
19469
16762
|
});
|
|
19470
16763
|
return (React__default.createElement("div", { className: "wrapper" },
|
|
19471
|
-
!byPassHeader && (React__default.createElement(Header
|
|
16764
|
+
!byPassHeader && (React__default.createElement(Header, { showAreaSelector: showAreaSelector, navbarTitle: navbarTitle, showTrendingsV2Icon: showTrendingsV2Icon })),
|
|
19472
16765
|
React__default.createElement(MESFMainContainer, null)));
|
|
19473
16766
|
};
|
|
19474
16767
|
|
|
@@ -19500,7 +16793,7 @@ var queryClient = new QueryClient({
|
|
|
19500
16793
|
},
|
|
19501
16794
|
});
|
|
19502
16795
|
function MESFMain(_a) {
|
|
19503
|
-
var authentication = _a.authentication, routes = _a.routes, navbar = _a.navbar, _b = _a.navbarTitle, navbarTitle = _b === void 0 ? "MESF" : _b, configurations = _a.configurations, _c = _a.showAreaSelector, showAreaSelector = _c === void 0 ? false : _c, _d = _a.
|
|
16796
|
+
var authentication = _a.authentication, routes = _a.routes, navbar = _a.navbar, _b = _a.navbarTitle, navbarTitle = _b === void 0 ? "MESF" : _b, configurations = _a.configurations, _c = _a.showAreaSelector, showAreaSelector = _c === void 0 ? false : _c, _d = _a.showTrendingsV2Icon, showTrendingsV2Icon = _d === void 0 ? true : _d, _e = _a.byPassHeaderRoutes, byPassHeaderRoutes = _e === void 0 ? [] : _e, _f = _a.plantAssetId, plantAssetId = _f === void 0 ? 1 : _f, _g = _a.theme, theme = _g === void 0 ? themeMESF : _g, _h = _a.logbookSettings, logbookSettings = _h === void 0 ? {} : _h;
|
|
19504
16797
|
return (React__default.createElement(React__default.Fragment, null,
|
|
19505
16798
|
React__default.createElement(CssBaseline, null),
|
|
19506
16799
|
React__default.createElement(StyledEngineProvider, { injectFirst: true },
|
|
@@ -19523,7 +16816,7 @@ function MESFMain(_a) {
|
|
|
19523
16816
|
React__default.createElement(BrowserRouter, { basename: base },
|
|
19524
16817
|
React__default.createElement(Routes, null,
|
|
19525
16818
|
React__default.createElement(Route, { path: "/logout", element: React__default.createElement(Logout, null) })),
|
|
19526
|
-
React__default.createElement(Navigation, { showAreaSelector: showAreaSelector,
|
|
16819
|
+
React__default.createElement(Navigation, { showAreaSelector: showAreaSelector, navbarTitle: navbarTitle, byPassHeaderRoutes: byPassHeaderRoutes, showTrendingsV2Icon: showTrendingsV2Icon })))))))))))))))))))));
|
|
19527
16820
|
}
|
|
19528
16821
|
|
|
19529
16822
|
var ExcelButton = function (_a) {
|
|
@@ -21604,6 +18897,7 @@ var useEntriesReport$1 = function (_a) {
|
|
|
21604
18897
|
return useQuery({
|
|
21605
18898
|
queryKey: ["entriesReport", startShiftId, endShiftId, assetId],
|
|
21606
18899
|
queryFn: function () { return getEntriesReport$1({ startShiftId: startShiftId, endShiftId: endShiftId, assetId: assetId }); },
|
|
18900
|
+
enabled: !!startShiftId && !!endShiftId && !!assetId,
|
|
21607
18901
|
});
|
|
21608
18902
|
};
|
|
21609
18903
|
var routeLogbookReport = "/logbook/report";
|
|
@@ -21923,7 +19217,7 @@ var Logbook$2 = function () {
|
|
|
21923
19217
|
startShiftId: shiftPeriod.StartShiftId,
|
|
21924
19218
|
endShiftId: shiftPeriod.EndShiftId,
|
|
21925
19219
|
assetId: assetId,
|
|
21926
|
-
}), rows = _h.data, isLoading = _h.isLoading, e = _h.error, isError = _h.isError
|
|
19220
|
+
}), rows = _h.data, isLoading = _h.isLoading, e = _h.error, isError = _h.isError; _h.refetch;
|
|
21927
19221
|
var columnDefs = useTableData$2({
|
|
21928
19222
|
showAttachments: showAttachments,
|
|
21929
19223
|
showAsset: showAsset,
|
|
@@ -22045,16 +19339,6 @@ var Logbook$2 = function () {
|
|
|
22045
19339
|
if (shiftPeriod.StartShiftId !== null || shiftPeriod.EndShiftId !== null) {
|
|
22046
19340
|
setShow("");
|
|
22047
19341
|
setSelectedRowData(null);
|
|
22048
|
-
(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
22049
|
-
return __generator(this, function (_a) {
|
|
22050
|
-
switch (_a.label) {
|
|
22051
|
-
case 0: return [4 /*yield*/, refetch()];
|
|
22052
|
-
case 1:
|
|
22053
|
-
_a.sent();
|
|
22054
|
-
return [2 /*return*/];
|
|
22055
|
-
}
|
|
22056
|
-
});
|
|
22057
|
-
}); })();
|
|
22058
19342
|
}
|
|
22059
19343
|
}, [shiftPeriod.StartShiftId, shiftPeriod.EndShiftId]);
|
|
22060
19344
|
return (React__default.createElement(Box, { sx: {
|
|
@@ -25000,5 +22284,5 @@ var areaSelector = /*#__PURE__*/Object.freeze({
|
|
|
25000
22284
|
AreaSelector: AreaSelector
|
|
25001
22285
|
});
|
|
25002
22286
|
|
|
25003
|
-
export { Account, AssetProvider, AssetTreePicker, AuthContext, AuthProvider, ButtonWithLoading, ChangePassword, CheckBoxControl, Configuration$1 as Configuration, ContextMenu$1 as ContextMenu, ContextMenuMESFProvider, CreateNewAssetDialog, CurrencyFormatter, DataGridControl, DateFormatter, DateTimeFormatter, ENTRY_INITIAL_VALUES$1 as ENTRY_INITIAL_VALUES, EditAssetDialog, ErrorModal, ExcelIcon, FetchError, FilterPanel, GenericPanel, GenericTable, GetCrewColor, GetShiftColor, HelmetDexteel, IntegerFormatter, LogbookSettingsInitialState, LogbookSettingsProvider, Login, Logout, LongFilterPanel, MESApiService, MESFLogbookEntry$1 as MESFLogbookEntry, MESFLogbookReport$1 as MESFLogbookReport, MESFMain, MESSAGE_API, MESSAGE_ERRORS, MasterDetailPanel, MesfModal, ModalTreeFilterControl, MultipleSelectorControl, NumberFormatter, RemoveAssetDialog, SPExecutorPage, ShiftDayNavigatorControl, ShiftNavigatorProvider, ShiftPeriodNavigatorControl, SimplePasswordControl, SimpleSelectorControl, TimeAndUserMenu, TimeFormatter, TimeService, TreePickerControl, TreePickerControlV2,
|
|
22287
|
+
export { Account, AssetProvider, AssetTreePicker, AuthContext, AuthProvider, ButtonWithLoading, ChangePassword, CheckBoxControl, Configuration$1 as Configuration, ContextMenu$1 as ContextMenu, ContextMenuMESFProvider, CreateNewAssetDialog, CurrencyFormatter, DataGridControl, DateFormatter, DateTimeFormatter, ENTRY_INITIAL_VALUES$1 as ENTRY_INITIAL_VALUES, EditAssetDialog, ErrorModal, ExcelIcon, FetchError, FilterPanel, GenericPanel, GenericTable, GetCrewColor, GetShiftColor, HelmetDexteel, IntegerFormatter, LogbookSettingsInitialState, LogbookSettingsProvider, Login, Logout, LongFilterPanel, MESApiService, MESFLogbookEntry$1 as MESFLogbookEntry, MESFLogbookReport$1 as MESFLogbookReport, MESFMain, MESSAGE_API, MESSAGE_ERRORS, MasterDetailPanel, MesfModal, ModalTreeFilterControl, MultipleSelectorControl, NumberFormatter, RemoveAssetDialog, SPExecutorPage, ShiftDayNavigatorControl, ShiftNavigatorProvider, ShiftPeriodNavigatorControl, SimplePasswordControl, SimpleSelectorControl, TimeAndUserMenu, TimeFormatter, TimeService, TreePickerControl, TreePickerControlV2, USER_LABELS, UTLSettingsProvider, UserProvider, axiosInstance, deleteUser, dxtServerTimeZone, dxtToLocalServerTime, dxtToUTC, formatNumber, getAuthTypes, getCrewStyle, getDataUser, getEntries$1 as getEntries, getError, getMomentTz, getShiftByParameters, getShiftStyle, getShiftsRangeByParameters, getTokenFromLS, getUserPermissionsFromAPI, getUsers, logbookNavbar, logbookRoutesMESF, renewToken, routeLogbookEntry$1 as routeLogbookEntry, routeLogbookReport, useSearchAssets as searchAssets, sectionLogbookNavbar, sectionLogbookRoutesMESF, setPassword, setProfilesToUser, themeDXT, themeMESF, upsertUser, useAssetContext, useContextMenuMESF, useHasPermission, useHasProfile, useLogbookSettings, useMesfRealtime, useShiftNavigator, useShiftNavigatorManager, useToken, useUTLSettingsContext, useUserContext };
|
|
25004
22288
|
//# sourceMappingURL=index.esm.js.map
|