@dexteel/mesf-core 7.15.2 → 7.16.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/.github/workflows/publish-to-npm.yaml +17 -6
- package/.release-please-manifest.json +1 -1
- package/CHANGELOG.md +29 -0
- package/CLAUDE.md +27 -15
- package/README.md +69 -12
- package/dist/MESFMain.d.ts +2 -1
- package/dist/components/navigation/NavbarMenuBar.d.ts +25 -0
- package/dist/globalContext.d.ts +2 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.esm.js +222 -27
- package/dist/index.esm.js.map +1 -1
- package/dist/pages/trendings-v2/components/chart/models/TrendingModelsV2.d.ts +1 -0
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
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, Autocomplete,
|
|
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, Autocomplete, useMediaQuery, Drawer, Grid, Accordion, AccordionSummary, AccordionDetails, Tabs, Tab, 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';
|
|
@@ -25,7 +25,7 @@ import DeleteIcon from '@mui/icons-material/Delete';
|
|
|
25
25
|
import EditIcon from '@mui/icons-material/Edit';
|
|
26
26
|
import FindInPageIcon from '@mui/icons-material/FindInPage';
|
|
27
27
|
import PlaylistAddIcon from '@mui/icons-material/PlaylistAdd';
|
|
28
|
-
import { ArrowRight, ArrowBackRounded, ArrowForwardRounded, SkipNext, ChevronLeft, ChevronRight, Cloud, Square as Square$1, Timeline, Send, Menu as Menu$1, People, Storage, Group, Assignment, Chat, ViewList, Build, Settings as Settings$2, Code as Code$1, FastRewind, FastForward, ZoomIn, Restore, Lock, Create, Delete, Folder, InsertChart, Search, PlaylistAdd, DragIndicator, Save, AttachFile, CloudUpload, GetApp } from '@mui/icons-material';
|
|
28
|
+
import { ArrowRight, ArrowBackRounded, ArrowForwardRounded, SkipNext, ChevronLeft, ChevronRight, Cloud, ExpandLess, ExpandMore, Square as Square$1, Timeline, Send, Menu as Menu$1, People, Storage, Group, Assignment, Chat, ViewList, Build, Settings as Settings$2, Code as Code$1, FastRewind, FastForward, ZoomIn, Restore, Lock, Create, Delete, Folder, InsertChart, Search, PlaylistAdd, DragIndicator, Save, AttachFile, CloudUpload, GetApp } from '@mui/icons-material';
|
|
29
29
|
import ContentCopyIcon from '@mui/icons-material/ContentCopy';
|
|
30
30
|
import FormatListBulletedSharpIcon from '@mui/icons-material/FormatListBulletedSharp';
|
|
31
31
|
import LockOutlinedIcon from '@mui/icons-material/LockOutlined';
|
|
@@ -6687,6 +6687,175 @@ function Logout() {
|
|
|
6687
6687
|
React__default.createElement(Typography$1, { variant: "h6" }, "Logging out..."))));
|
|
6688
6688
|
}
|
|
6689
6689
|
|
|
6690
|
+
function NavbarMenuBar({ menus, isMobile = false, closeDrawer, hoverSwitchDelayMs = 100, }) {
|
|
6691
|
+
const hasPermissionTo = useHasPermission();
|
|
6692
|
+
const [openMenuId, setOpenMenuId] = useState(null);
|
|
6693
|
+
const [menuAnchorEl, setMenuAnchorEl] = useState(null);
|
|
6694
|
+
const triggerRefs = useRef({});
|
|
6695
|
+
const hoverTimeoutRef = useRef(null);
|
|
6696
|
+
const visibleMenus = useMemo(() => {
|
|
6697
|
+
return menus
|
|
6698
|
+
.filter((menu) => !menu.permission || hasPermissionTo(menu.permission))
|
|
6699
|
+
.map((menu) => (Object.assign(Object.assign({}, menu), { items: menu.items.filter((item) => !item.permission || hasPermissionTo(item.permission)) })))
|
|
6700
|
+
.filter((menu) => menu.items.length > 0 || Boolean(menu.to));
|
|
6701
|
+
}, [hasPermissionTo, menus]);
|
|
6702
|
+
const clearHoverTimeout = () => {
|
|
6703
|
+
if (hoverTimeoutRef.current !== null) {
|
|
6704
|
+
window.clearTimeout(hoverTimeoutRef.current);
|
|
6705
|
+
hoverTimeoutRef.current = null;
|
|
6706
|
+
}
|
|
6707
|
+
};
|
|
6708
|
+
const focusTrigger = (menuId) => {
|
|
6709
|
+
var _a;
|
|
6710
|
+
(_a = triggerRefs.current[menuId]) === null || _a === void 0 ? void 0 : _a.focus();
|
|
6711
|
+
};
|
|
6712
|
+
const getAdjacentMenu = (menuId, direction) => {
|
|
6713
|
+
var _a;
|
|
6714
|
+
const currentIndex = visibleMenus.findIndex((menu) => menu.id === menuId);
|
|
6715
|
+
if (currentIndex === -1) {
|
|
6716
|
+
return null;
|
|
6717
|
+
}
|
|
6718
|
+
const nextIndex = (currentIndex + direction + visibleMenus.length) % visibleMenus.length;
|
|
6719
|
+
return (_a = visibleMenus[nextIndex]) !== null && _a !== void 0 ? _a : null;
|
|
6720
|
+
};
|
|
6721
|
+
const openMenu = (menuId, anchorEl) => {
|
|
6722
|
+
var _a;
|
|
6723
|
+
clearHoverTimeout();
|
|
6724
|
+
setOpenMenuId(menuId);
|
|
6725
|
+
setMenuAnchorEl((_a = anchorEl !== null && anchorEl !== void 0 ? anchorEl : triggerRefs.current[menuId]) !== null && _a !== void 0 ? _a : null);
|
|
6726
|
+
};
|
|
6727
|
+
const closeMenu = () => {
|
|
6728
|
+
clearHoverTimeout();
|
|
6729
|
+
setOpenMenuId(null);
|
|
6730
|
+
setMenuAnchorEl(null);
|
|
6731
|
+
};
|
|
6732
|
+
useEffect(() => () => clearHoverTimeout(), []);
|
|
6733
|
+
useEffect(() => {
|
|
6734
|
+
if (!openMenuId) {
|
|
6735
|
+
return;
|
|
6736
|
+
}
|
|
6737
|
+
const handlePointerDown = (event) => {
|
|
6738
|
+
const target = event.target;
|
|
6739
|
+
const trigger = triggerRefs.current[openMenuId];
|
|
6740
|
+
const menuPaper = document.querySelector(`#${openMenuId}-menu .MuiPaper-root`);
|
|
6741
|
+
if (target &&
|
|
6742
|
+
((trigger && trigger.contains(target)) ||
|
|
6743
|
+
(menuPaper && menuPaper.contains(target)))) {
|
|
6744
|
+
return;
|
|
6745
|
+
}
|
|
6746
|
+
closeMenu();
|
|
6747
|
+
};
|
|
6748
|
+
document.addEventListener("mousedown", handlePointerDown, true);
|
|
6749
|
+
document.addEventListener("touchstart", handlePointerDown, true);
|
|
6750
|
+
return () => {
|
|
6751
|
+
document.removeEventListener("mousedown", handlePointerDown, true);
|
|
6752
|
+
document.removeEventListener("touchstart", handlePointerDown, true);
|
|
6753
|
+
};
|
|
6754
|
+
}, [openMenuId]);
|
|
6755
|
+
const handleMenuOpen = (event, menuId) => {
|
|
6756
|
+
if (openMenuId === menuId) {
|
|
6757
|
+
closeMenu();
|
|
6758
|
+
return;
|
|
6759
|
+
}
|
|
6760
|
+
openMenu(menuId, event.currentTarget);
|
|
6761
|
+
};
|
|
6762
|
+
const handleMenuHover = (event, menuId) => {
|
|
6763
|
+
if (isMobile || !openMenuId || openMenuId === menuId) {
|
|
6764
|
+
return;
|
|
6765
|
+
}
|
|
6766
|
+
clearHoverTimeout();
|
|
6767
|
+
hoverTimeoutRef.current = window.setTimeout(() => {
|
|
6768
|
+
openMenu(menuId, event.currentTarget);
|
|
6769
|
+
}, hoverSwitchDelayMs);
|
|
6770
|
+
};
|
|
6771
|
+
const handleMenuKeyDown = (event, menu) => {
|
|
6772
|
+
switch (event.key) {
|
|
6773
|
+
case "Enter":
|
|
6774
|
+
case " ":
|
|
6775
|
+
case "ArrowDown": {
|
|
6776
|
+
if (!menu.items.length) {
|
|
6777
|
+
return;
|
|
6778
|
+
}
|
|
6779
|
+
event.preventDefault();
|
|
6780
|
+
openMenu(menu.id, event.currentTarget);
|
|
6781
|
+
break;
|
|
6782
|
+
}
|
|
6783
|
+
case "ArrowRight":
|
|
6784
|
+
case "ArrowLeft": {
|
|
6785
|
+
event.preventDefault();
|
|
6786
|
+
const adjacentMenu = getAdjacentMenu(menu.id, event.key === "ArrowRight" ? 1 : -1);
|
|
6787
|
+
if (!adjacentMenu) {
|
|
6788
|
+
return;
|
|
6789
|
+
}
|
|
6790
|
+
focusTrigger(adjacentMenu.id);
|
|
6791
|
+
if (openMenuId && adjacentMenu.items.length) {
|
|
6792
|
+
openMenu(adjacentMenu.id);
|
|
6793
|
+
}
|
|
6794
|
+
break;
|
|
6795
|
+
}
|
|
6796
|
+
case "Escape": {
|
|
6797
|
+
if (!openMenuId) {
|
|
6798
|
+
return;
|
|
6799
|
+
}
|
|
6800
|
+
event.preventDefault();
|
|
6801
|
+
closeMenu();
|
|
6802
|
+
focusTrigger(menu.id);
|
|
6803
|
+
break;
|
|
6804
|
+
}
|
|
6805
|
+
}
|
|
6806
|
+
};
|
|
6807
|
+
return (React__default.createElement(React__default.Fragment, null, visibleMenus.map((menu) => {
|
|
6808
|
+
var _a;
|
|
6809
|
+
const isMenuOpen = openMenuId === menu.id;
|
|
6810
|
+
const buttonId = `${menu.id}-trigger`;
|
|
6811
|
+
return menu.items.length > 0 ? (React__default.createElement(React__default.Fragment, { key: menu.id },
|
|
6812
|
+
React__default.createElement(Button, { ref: (node) => {
|
|
6813
|
+
triggerRefs.current[menu.id] = node;
|
|
6814
|
+
}, id: buttonId, "aria-controls": `${menu.id}-menu`, "aria-haspopup": "true", "aria-expanded": isMenuOpen ? "true" : undefined, onClick: (event) => handleMenuOpen(event, menu.id), onMouseEnter: (event) => handleMenuHover(event, menu.id), onMouseLeave: clearHoverTimeout, onKeyDown: (event) => handleMenuKeyDown(event, menu), sx: {
|
|
6815
|
+
marginRight: (theme) => theme.spacing(2),
|
|
6816
|
+
color: "white",
|
|
6817
|
+
display: "flex",
|
|
6818
|
+
alignItems: "center",
|
|
6819
|
+
whiteSpace: "nowrap",
|
|
6820
|
+
} },
|
|
6821
|
+
menu.label,
|
|
6822
|
+
isMenuOpen ? (React__default.createElement(ExpandLess, { sx: { marginLeft: (theme) => theme.spacing(0.5) } })) : (React__default.createElement(ExpandMore, { sx: { marginLeft: (theme) => theme.spacing(0.5) } }))),
|
|
6823
|
+
React__default.createElement(Menu, { id: `${menu.id}-menu`, anchorEl: isMenuOpen ? menuAnchorEl : null, hideBackdrop: true, disableScrollLock: true, keepMounted: true, open: isMenuOpen, onClose: closeMenu, sx: {
|
|
6824
|
+
pointerEvents: "none",
|
|
6825
|
+
"& .MuiPaper-root": {
|
|
6826
|
+
pointerEvents: "auto",
|
|
6827
|
+
},
|
|
6828
|
+
}, MenuListProps: {
|
|
6829
|
+
"aria-labelledby": buttonId,
|
|
6830
|
+
autoFocusItem: isMenuOpen,
|
|
6831
|
+
}, anchorOrigin: {
|
|
6832
|
+
vertical: "bottom",
|
|
6833
|
+
horizontal: "center",
|
|
6834
|
+
}, transformOrigin: {
|
|
6835
|
+
vertical: "top",
|
|
6836
|
+
horizontal: "center",
|
|
6837
|
+
} }, menu.items.map((item, index) => (React__default.createElement(MenuItem, { key: `${menu.id}-item-${item.label}-${index}`, component: Link, to: item.to, onClick: () => {
|
|
6838
|
+
closeMenu();
|
|
6839
|
+
closeDrawer === null || closeDrawer === void 0 ? void 0 : closeDrawer();
|
|
6840
|
+
}, sx: {
|
|
6841
|
+
textDecoration: "none",
|
|
6842
|
+
color: "inherit",
|
|
6843
|
+
} },
|
|
6844
|
+
React__default.createElement(Typography$1, null, item.label))))))) : (React__default.createElement(Button, { key: menu.id, ref: (node) => {
|
|
6845
|
+
triggerRefs.current[menu.id] = node;
|
|
6846
|
+
}, id: buttonId, component: Link, to: (_a = menu.to) !== null && _a !== void 0 ? _a : "#", onClick: () => {
|
|
6847
|
+
closeMenu();
|
|
6848
|
+
closeDrawer === null || closeDrawer === void 0 ? void 0 : closeDrawer();
|
|
6849
|
+
}, onKeyDown: (event) => handleMenuKeyDown(event, menu), sx: {
|
|
6850
|
+
marginRight: (theme) => theme.spacing(2),
|
|
6851
|
+
color: "white",
|
|
6852
|
+
display: "flex",
|
|
6853
|
+
alignItems: "center",
|
|
6854
|
+
whiteSpace: "nowrap",
|
|
6855
|
+
} }, menu.label));
|
|
6856
|
+
})));
|
|
6857
|
+
}
|
|
6858
|
+
|
|
6690
6859
|
const TimeAndUserMenu = () => {
|
|
6691
6860
|
const { getUserName } = useToken();
|
|
6692
6861
|
const [userName, setUserName] = useState(getUserName());
|
|
@@ -9667,7 +9836,7 @@ const ConfigurationContext = createContext([
|
|
|
9667
9836
|
[],
|
|
9668
9837
|
() => React__default.createElement(React__default.Fragment, null),
|
|
9669
9838
|
]);
|
|
9670
|
-
const NavbarContext = createContext(() => React__default.createElement(React__default.Fragment, null));
|
|
9839
|
+
const NavbarContext = createContext(() => (React__default.createElement(React__default.Fragment, null)));
|
|
9671
9840
|
|
|
9672
9841
|
const AreaSelector$1 = lazy(() => Promise.resolve().then(function () { return areaSelector; }).then((mod) => ({
|
|
9673
9842
|
default: mod.AreaSelector,
|
|
@@ -9677,7 +9846,8 @@ function Header({ showAreaSelector = false, showTrendingsV2Icon = true, navbarTi
|
|
|
9677
9846
|
const CustomNavbar = useContext(NavbarContext);
|
|
9678
9847
|
const [drawerOpen, setDrawerOpen] = useState(false);
|
|
9679
9848
|
const hasPermissionTo = useHasPermission();
|
|
9680
|
-
|
|
9849
|
+
const theme = useTheme();
|
|
9850
|
+
const isCompactNavigation = useMediaQuery(theme.breakpoints.down("lg"));
|
|
9681
9851
|
const handleDrawerToggle = () => {
|
|
9682
9852
|
setDrawerOpen(!drawerOpen);
|
|
9683
9853
|
};
|
|
@@ -9701,19 +9871,23 @@ function Header({ showAreaSelector = false, showTrendingsV2Icon = true, navbarTi
|
|
|
9701
9871
|
return (React__default.createElement(React__default.Fragment, null,
|
|
9702
9872
|
React__default.createElement(AppBar, { position: "static", sx: {
|
|
9703
9873
|
backgroundColor: (theme) => theme.palette.primary.main,
|
|
9874
|
+
zIndex: (theme) => theme.zIndex.modal + 1,
|
|
9704
9875
|
} },
|
|
9705
|
-
React__default.createElement(Toolbar, { sx: {
|
|
9706
|
-
|
|
9707
|
-
|
|
9708
|
-
|
|
9709
|
-
|
|
9710
|
-
|
|
9711
|
-
|
|
9712
|
-
|
|
9713
|
-
|
|
9714
|
-
|
|
9876
|
+
React__default.createElement(Toolbar, { sx: {
|
|
9877
|
+
backgroundColor: (theme) => theme.palette.primary.main,
|
|
9878
|
+
minWidth: 0,
|
|
9879
|
+
overflowX: "hidden",
|
|
9880
|
+
} },
|
|
9881
|
+
isCompactNavigation && (React__default.createElement(IconButton$1, { edge: "start", sx: {
|
|
9882
|
+
flexShrink: 0,
|
|
9883
|
+
marginRight: (theme) => theme.spacing(2),
|
|
9884
|
+
textDecoration: "none",
|
|
9885
|
+
color: "white",
|
|
9886
|
+
textWrap: "nowrap",
|
|
9887
|
+
}, color: "inherit", "aria-label": "menu", onClick: handleDrawerToggle },
|
|
9888
|
+
React__default.createElement(MenuIcon, null))),
|
|
9715
9889
|
React__default.createElement(Typography$1, { variant: "h6", component: Link, to: "/home", sx: {
|
|
9716
|
-
|
|
9890
|
+
flexShrink: 0,
|
|
9717
9891
|
marginRight: (theme) => theme.spacing(2),
|
|
9718
9892
|
textDecoration: "none",
|
|
9719
9893
|
color: "white",
|
|
@@ -9722,16 +9896,21 @@ function Header({ showAreaSelector = false, showTrendingsV2Icon = true, navbarTi
|
|
|
9722
9896
|
React__default.createElement(Box, { sx: {
|
|
9723
9897
|
display: "flex",
|
|
9724
9898
|
flexGrow: 1,
|
|
9899
|
+
minWidth: 0,
|
|
9900
|
+
overflow: "hidden",
|
|
9725
9901
|
"& a": {
|
|
9726
9902
|
color: "white",
|
|
9727
9903
|
},
|
|
9728
|
-
|
|
9729
|
-
|
|
9730
|
-
|
|
9904
|
+
"& > *": {
|
|
9905
|
+
minWidth: 0,
|
|
9906
|
+
maxWidth: "100%",
|
|
9907
|
+
},
|
|
9908
|
+
} }, !isCompactNavigation && (React__default.createElement(CustomNavbar, { closeDrawer: handleDrawerToggle }))),
|
|
9731
9909
|
React__default.createElement(Box, { sx: {
|
|
9732
9910
|
display: "flex",
|
|
9733
9911
|
alignItems: "center",
|
|
9734
9912
|
color: "white",
|
|
9913
|
+
flexShrink: 0,
|
|
9735
9914
|
} },
|
|
9736
9915
|
showTrendingsV2Icon && (React__default.createElement(Tooltip, { title: "Trendings V2 (ECharts)", placement: "bottom", arrow: true, enterDelay: 1500 },
|
|
9737
9916
|
React__default.createElement(IconButton$1, { color: "inherit", component: Link, to: "/trendings-v2" },
|
|
@@ -9746,8 +9925,11 @@ function Header({ showAreaSelector = false, showTrendingsV2Icon = true, navbarTi
|
|
|
9746
9925
|
width: 250,
|
|
9747
9926
|
"& .MuiDrawer-paper": {
|
|
9748
9927
|
width: 250,
|
|
9749
|
-
|
|
9750
|
-
height:
|
|
9928
|
+
top: { xs: 56, sm: 64 },
|
|
9929
|
+
height: {
|
|
9930
|
+
xs: "calc(100% - 56px)",
|
|
9931
|
+
sm: "calc(100% - 64px)",
|
|
9932
|
+
},
|
|
9751
9933
|
backgroundColor: (theme) => theme.palette.grey[100], // Light grey background
|
|
9752
9934
|
// Alternatively, you can use a specific color:
|
|
9753
9935
|
// backgroundColor: '#f5f5f5',
|
|
@@ -11801,9 +11983,10 @@ const NotificationSnackBar = ({ message, onHide = () => { }, severity = "success
|
|
|
11801
11983
|
function buildTagsTreeV2(data) {
|
|
11802
11984
|
const tagsForTree = [];
|
|
11803
11985
|
data.forEach((el) => {
|
|
11986
|
+
var _a, _b;
|
|
11804
11987
|
const tagForTree = {
|
|
11805
11988
|
id: el.TagId,
|
|
11806
|
-
parent: el.ParentTagFolderId
|
|
11989
|
+
parent: (_b = (_a = el.ParentTagFolderId) !== null && _a !== void 0 ? _a : el.ParentTagId) !== null && _b !== void 0 ? _b : 0,
|
|
11807
11990
|
text: el.TagName,
|
|
11808
11991
|
data: el,
|
|
11809
11992
|
droppable: el.TagTypeCode === "F",
|
|
@@ -13153,6 +13336,12 @@ const TagsTableV2 = () => {
|
|
|
13153
13336
|
// Handler for context menu on the table
|
|
13154
13337
|
const handleContextMenu = useCallback((e) => {
|
|
13155
13338
|
var _a;
|
|
13339
|
+
if (tagsTreeModalOpen ||
|
|
13340
|
+
bitSelectorModalOpen ||
|
|
13341
|
+
saveAsViewModalOpen ||
|
|
13342
|
+
loadViewOpen) {
|
|
13343
|
+
return;
|
|
13344
|
+
}
|
|
13156
13345
|
e.preventDefault();
|
|
13157
13346
|
// Find the closest row element
|
|
13158
13347
|
const target = e.target;
|
|
@@ -13174,7 +13363,13 @@ const TagsTableV2 = () => {
|
|
|
13174
13363
|
}
|
|
13175
13364
|
// Right-clicked on empty table area - pass null to show only general options
|
|
13176
13365
|
showContextMenu(e, null, "chartContextV2");
|
|
13177
|
-
}, [
|
|
13366
|
+
}, [
|
|
13367
|
+
showContextMenu,
|
|
13368
|
+
tagsTreeModalOpen,
|
|
13369
|
+
bitSelectorModalOpen,
|
|
13370
|
+
saveAsViewModalOpen,
|
|
13371
|
+
loadViewOpen,
|
|
13372
|
+
]);
|
|
13178
13373
|
// Calculate cursor data values for each tag
|
|
13179
13374
|
const cursorValues = useMemo(() => {
|
|
13180
13375
|
var _a, _b;
|
|
@@ -15075,7 +15270,7 @@ const TrendingsPageV2 = () => {
|
|
|
15075
15270
|
// Fetch views
|
|
15076
15271
|
const { data: views, isLoading: viewsLoading, isError: viewsIsError, error: viewsError, isSuccess: viewSuccess, } = useSearchViews({ autoRefresh });
|
|
15077
15272
|
// Fetch view tags
|
|
15078
|
-
const { data: viewTagsData, isLoading: viewTagsLoading, isError: viewTagsIsError, error: viewTagsError, isSuccess: viewTagsSuccess, } = useSearchViewTags({ viewId });
|
|
15273
|
+
const { data: viewTagsData, isLoading: viewTagsLoading, isFetching: viewTagsFetching, isError: viewTagsIsError, error: viewTagsError, isSuccess: viewTagsSuccess, } = useSearchViewTags({ viewId });
|
|
15079
15274
|
// Memoize tagIds for series query
|
|
15080
15275
|
// Tags are sorted in DESCENDING order to match TrendingChartV2 processing
|
|
15081
15276
|
const tagIds = useMemo(() => Object.values(viewTags)
|
|
@@ -15112,7 +15307,7 @@ const TrendingsPageV2 = () => {
|
|
|
15112
15307
|
return stableTagIdsRef.current;
|
|
15113
15308
|
}, [realTagIds, timeScopeStart, timeScopeEnd]);
|
|
15114
15309
|
// Fetch series data using stable query key
|
|
15115
|
-
const { data: series, isLoading: seriesLoading, isError: seriesIsError, error: seriesError, } = useSearchSeries({
|
|
15310
|
+
const { data: series, isLoading: seriesLoading, isFetching: seriesFetching, isError: seriesIsError, error: seriesError, } = useSearchSeries({
|
|
15116
15311
|
start: timeScopeStart.getTime(),
|
|
15117
15312
|
end: timeScopeEnd.getTime(),
|
|
15118
15313
|
tagIds: queryTagIds,
|
|
@@ -15316,7 +15511,7 @@ const TrendingsPageV2 = () => {
|
|
|
15316
15511
|
seriesError,
|
|
15317
15512
|
seriesIsError,
|
|
15318
15513
|
]);
|
|
15319
|
-
const isLoading = viewsLoading || viewTagsLoading;
|
|
15514
|
+
const isLoading = viewsLoading || (viewTagsLoading && viewTagsFetching);
|
|
15320
15515
|
return (React__default.createElement(React__default.Fragment, null,
|
|
15321
15516
|
React__default.createElement(HelmetDexteel, { title: "Trendings" }),
|
|
15322
15517
|
React__default.createElement("div", { style: {
|
|
@@ -15353,7 +15548,7 @@ const TrendingsPageV2 = () => {
|
|
|
15353
15548
|
React__default.createElement(Group$1, { orientation: "vertical", style: { width: "100%", height: "100%" } },
|
|
15354
15549
|
React__default.createElement(Panel, { defaultSize: 80, minSize: 20 },
|
|
15355
15550
|
React__default.createElement("div", { style: { height: "100%", width: "100%" } },
|
|
15356
|
-
React__default.createElement(TrendingChartV2, { customOptions: chartOptions, series: filteredSeries, isLoading: seriesLoading, onChartReady: setChartInstance, dataLoadedTrigger: dataLoadedTrigger }))),
|
|
15551
|
+
React__default.createElement(TrendingChartV2, { customOptions: chartOptions, series: filteredSeries, isLoading: seriesLoading && seriesFetching, onChartReady: setChartInstance, dataLoadedTrigger: dataLoadedTrigger }))),
|
|
15357
15552
|
React__default.createElement(Separator, { style: {
|
|
15358
15553
|
height: "10px",
|
|
15359
15554
|
background: "#f0f0f0",
|
|
@@ -20254,5 +20449,5 @@ var areaSelector = /*#__PURE__*/Object.freeze({
|
|
|
20254
20449
|
AreaSelector: AreaSelector
|
|
20255
20450
|
});
|
|
20256
20451
|
|
|
20257
|
-
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, useEntries$1 as useEntries, useFrontendVersionCheck, useHasPermission, useHasProfile, useLogbookSettings, useMesfRealtime, useShiftNavigator, useShiftNavigatorManager, useToken, useUTLSettingsContext, useUserContext };
|
|
20452
|
+
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, NavbarMenuBar, 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, useEntries$1 as useEntries, useFrontendVersionCheck, useHasPermission, useHasProfile, useLogbookSettings, useMesfRealtime, useShiftNavigator, useShiftNavigatorManager, useToken, useUTLSettingsContext, useUserContext };
|
|
20258
20453
|
//# sourceMappingURL=index.esm.js.map
|