@dexteel/mesf-core 5.9.1 → 5.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -1,15 +1,15 @@
1
1
  export { LicenseManager } from 'ag-grid-enterprise';
2
- import { withStyles, DialogTitle as DialogTitle$1, DialogContent as DialogContent$1, DialogActions as DialogActions$1, createStyles, Grid, Button, alpha, makeStyles, Dialog as Dialog$1, TextField, Paper, List, ListItem, ListItemIcon, ListItemText, Chip, SvgIcon, Collapse, Typography as Typography$1, Checkbox, InputAdornment, IconButton as IconButton$1, MenuItem, Box, Card, CardContent, CardActions, Tooltip, FormControl, InputLabel, Select, CircularProgress, Snackbar, FormControlLabel, Switch, DialogContentText, Badge, useTheme, Input, CssBaseline, AppBar, Toolbar, Container, Menu, Hidden, Drawer, useMediaQuery, Divider, ListSubheader, debounce, createTheme, ThemeProvider } from '@material-ui/core';
2
+ import { withStyles, DialogTitle as DialogTitle$1, DialogContent as DialogContent$1, DialogActions as DialogActions$1, createStyles, Grid, Button, alpha, makeStyles, Dialog as Dialog$1, TextField, Paper, List, ListItem, ListItemIcon, ListItemText, Chip, SvgIcon, Collapse, Typography as Typography$1, Checkbox, InputAdornment, IconButton as IconButton$1, MenuItem, Box, Card, CardContent, CardActions, Tooltip, FormControl, InputLabel, Select, CircularProgress, Snackbar, FormControlLabel, Switch, DialogContentText, Badge, useTheme, Input, Divider, CssBaseline, AppBar, Toolbar, Container, Menu, Hidden, Drawer, useMediaQuery, ListSubheader, debounce, createTheme, ThemeProvider } from '@material-ui/core';
3
+ import { values, get, isNil, isEmpty, round, isNaN as isNaN$1, isNumber } from 'lodash-es';
4
+ import * as React from 'react';
5
+ import React__default, { useState, useRef, useEffect, useMemo, Component, createContext, useContext, useCallback, lazy, Suspense } from 'react';
3
6
  import IconButton from '@material-ui/core/IconButton';
4
7
  import CloseIcon from '@material-ui/icons/Close';
5
8
  import Alert$3 from '@material-ui/lab/Alert';
6
- import * as React from 'react';
7
- import React__default, { useState, useRef, useEffect, useMemo, Component, createContext, useContext, useCallback, lazy, Suspense } from 'react';
8
9
  import { ArrowBackRounded, ArrowForwardRounded, SkipNext, ChevronLeft, ChevronRight, ArrowRight, Send, Menu as Menu$1, People, Storage, Group, Assignment, Chat, Timeline, ViewList, Build, Settings as Settings$2 } from '@material-ui/icons';
9
10
  import { DatePicker } from '@mui/x-date-pickers/DatePicker';
10
11
  import moment$2 from 'moment-timezone';
11
12
  import { useParams, useNavigate, useSearchParams, Link, Navigate, Routes, Route, useLocation, BrowserRouter } from 'react-router-dom';
12
- import { values, get, isNil, isEmpty, round, isNaN, isNumber } from 'lodash-es';
13
13
  import { ClearIcon, DatePicker as DatePicker$1, CalendarIcon, DateTimePicker, LocalizationProvider } from '@mui/x-date-pickers';
14
14
  import { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment';
15
15
  import MenuIcon from '@material-ui/icons/Menu';
@@ -22,8 +22,8 @@ import { themeMaterial } from 'ag-grid-community';
22
22
  import { AgGridReact } from 'ag-grid-react';
23
23
  import MomentUtils from '@date-io/moment';
24
24
  import { MuiPickersUtilsProvider, KeyboardDatePicker, KeyboardTimePicker } from '@material-ui/pickers';
25
- import { isNil as isNil$1, get as get$1 } from 'lodash';
26
25
  import moment$3 from 'moment';
26
+ import { isNil as isNil$1, get as get$1 } from 'lodash';
27
27
  import EditIcon from '@material-ui/icons/Edit';
28
28
  import PlaylistAddIcon from '@material-ui/icons/PlaylistAdd';
29
29
  import { HubConnectionBuilder, LogLevel } from '@microsoft/signalr';
@@ -51,9 +51,10 @@ import ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';
51
51
  import SkipNextIcon from '@material-ui/icons/SkipNext';
52
52
  import { Line } from 'react-chartjs-2';
53
53
  import PersonPinCircleIcon from '@material-ui/icons/PersonPinCircle';
54
- import { makeStyles as makeStyles$1 } from '@material-ui/core/styles';
55
54
  import Dialog from '@material-ui/core/Dialog';
56
55
  import Typography from '@material-ui/core/Typography';
56
+ import { format, fromZonedTime, formatInTimeZone } from 'date-fns-tz';
57
+ import { findIana } from 'windows-iana';
57
58
  import { ResponsiveBar } from '@nivo/bar';
58
59
  import PropTypes from 'prop-types';
59
60
  import AccountTreeIcon from '@material-ui/icons/AccountTree';
@@ -63,8 +64,6 @@ import TreeView from '@material-ui/lab/TreeView';
63
64
  import { useSpring, animated } from '@react-spring/web';
64
65
  import { DataGrid, GridOverlay } from '@material-ui/data-grid';
65
66
  import GetAppIcon from '@material-ui/icons/GetApp';
66
- import { format, fromZonedTime, formatInTimeZone } from 'date-fns-tz';
67
- import { findIana } from 'windows-iana';
68
67
  import PersonOutlineIcon from '@material-ui/icons/PersonOutline';
69
68
  import PersonIcon from '@material-ui/icons/Person';
70
69
  import { LogLevel as LogLevel$1, PublicClientApplication } from '@azure/msal-browser';
@@ -383,7 +382,9 @@ var StyledTreeItem = withStyles(function (theme) { return ({
383
382
  },
384
383
  label: {
385
384
  backgroundColor: function (props) {
386
- return props.isChecked ? "lightblue !important" : "inherit";
385
+ return props.isChecked
386
+ ? alpha(theme.palette.primary.main, 0.8) + " !important"
387
+ : "inherit";
387
388
  },
388
389
  },
389
390
  }); })(function (props) { return (React__default.createElement(TreeItem, __assign({}, props, { TransitionComponent: TransitionComponent }))); });
@@ -391,12 +392,20 @@ var useTreviewStyle = makeStyles(function (theme) { return ({
391
392
  root: {
392
393
  minHeight: 350,
393
394
  flexGrow: 1,
394
- height: "450px",
395
+ height: "100%",
395
396
  overflow: "auto",
397
+ overflowX: "hidden",
398
+ width: "100%",
396
399
  },
397
400
  treeContainer: {
398
- height: "450px",
401
+ flex: 1,
399
402
  overflow: "auto",
403
+ display: "flex",
404
+ flexDirection: "column",
405
+ paddingTop: theme.spacing(1),
406
+ paddingLeft: theme.spacing(2),
407
+ paddingRight: theme.spacing(2),
408
+ paddingBottom: theme.spacing(2),
400
409
  },
401
410
  treLabelIcon: {
402
411
  marginRight: theme.spacing(1),
@@ -446,6 +455,11 @@ var useTreviewStyle = makeStyles(function (theme) { return ({
446
455
  "&:hover": {
447
456
  backgroundColor: theme.palette.action.hover,
448
457
  },
458
+ "&.focused": {
459
+ backgroundColor: theme.palette.action.selected,
460
+ outline: "2px solid ".concat(theme.palette.primary.main),
461
+ outlineOffset: "-2px",
462
+ },
449
463
  },
450
464
  searchResultPath: {
451
465
  fontSize: "0.75rem",
@@ -462,6 +476,7 @@ var useTreviewStyle = makeStyles(function (theme) { return ({
462
476
  zIndex: 1000,
463
477
  backgroundColor: theme.palette.background.paper,
464
478
  borderBottom: "1px solid ".concat(theme.palette.divider),
479
+ padding: theme.spacing(1),
465
480
  paddingBottom: theme.spacing(0.5),
466
481
  marginBottom: theme.spacing(0.5),
467
482
  },
@@ -475,7 +490,11 @@ var ModalTreeFilterControl = function (props) {
475
490
  var _f = useState(""), searchTerm = _f[0], setSearchTerm = _f[1];
476
491
  var _g = useState([]), searchResults = _g[0], setSearchResults = _g[1];
477
492
  var _h = useState(false), showSearchResults = _h[0], setShowSearchResults = _h[1];
493
+ var _j = useState(-1), focusedSearchIndex = _j[0], setFocusedSearchIndex = _j[1];
478
494
  var searchTimeoutRef = useRef(null);
495
+ var searchContainerRef = useRef(null);
496
+ var searchResultsRefs = useRef([]);
497
+ var searchInputRef = useRef(null);
479
498
  var classes = useTreviewStyle();
480
499
  useEffect(function () {
481
500
  if (!open) {
@@ -484,12 +503,40 @@ var ModalTreeFilterControl = function (props) {
484
503
  setSearchTerm("");
485
504
  setSearchResults([]);
486
505
  setShowSearchResults(false);
506
+ setFocusedSearchIndex(-1);
487
507
  }
488
508
  else {
489
- if (valueProp !== undefined)
509
+ if (valueProp !== undefined) {
490
510
  expandNode(valueProp);
511
+ // Scroll to the selected node when dialog opens
512
+ setTimeout(function () {
513
+ var nodeElement = document.getElementById(valueProp.toString());
514
+ if (nodeElement) {
515
+ nodeElement.scrollIntoView({
516
+ behavior: "smooth",
517
+ block: "center",
518
+ });
519
+ }
520
+ }, 300);
521
+ }
522
+ // Auto-focus search input when dialog opens and search is allowed
523
+ if (allowSearch) {
524
+ setTimeout(function () {
525
+ // Try multiple ways to focus the search input
526
+ if (searchInputRef.current) {
527
+ searchInputRef.current.focus();
528
+ }
529
+ else {
530
+ // Fallback: find input by placeholder
531
+ var searchInput = document.querySelector('input[placeholder*="Search"]');
532
+ if (searchInput) {
533
+ searchInput.focus();
534
+ }
535
+ }
536
+ }, 200);
537
+ }
491
538
  }
492
- }, [valueProp, open]);
539
+ }, [valueProp, open, allowSearch]);
493
540
  useEffect(function () {
494
541
  if (Array.isArray(listAssetDrawings) && listAssetDrawings.length >= 1) {
495
542
  setSelectedNodes(listAssetDrawings);
@@ -515,6 +562,11 @@ var ModalTreeFilterControl = function (props) {
515
562
  return branches;
516
563
  };
517
564
  var handleCancel = function () {
565
+ setSearchTerm("");
566
+ setSearchResults([]);
567
+ setShowSearchResults(false);
568
+ setFocusedSearchIndex(-1);
569
+ setValue(valueProp);
518
570
  onClose();
519
571
  if (onHide)
520
572
  onHide(false);
@@ -543,7 +595,55 @@ var ModalTreeFilterControl = function (props) {
543
595
  };
544
596
  var handleKeyDown = function (event) {
545
597
  if (event.key === "Escape") {
546
- onClose();
598
+ // Clear search if showing results, otherwise close dialog
599
+ if (showSearchResults) {
600
+ setSearchTerm("");
601
+ setSearchResults([]);
602
+ setShowSearchResults(false);
603
+ setFocusedSearchIndex(-1);
604
+ }
605
+ else {
606
+ // Reset everything when closing with ESC
607
+ setSearchTerm("");
608
+ setSearchResults([]);
609
+ setShowSearchResults(false);
610
+ setFocusedSearchIndex(-1);
611
+ setValue(valueProp);
612
+ onClose();
613
+ }
614
+ return;
615
+ }
616
+ // Handle keyboard navigation in search results
617
+ if (showSearchResults && searchResults.length > 0) {
618
+ if (event.key === "ArrowDown") {
619
+ event.preventDefault();
620
+ var newIndex_1 = focusedSearchIndex < searchResults.length - 1
621
+ ? focusedSearchIndex + 1
622
+ : 0;
623
+ setFocusedSearchIndex(newIndex_1);
624
+ // Scroll to the focused item
625
+ setTimeout(function () { return scrollFocusedItemIntoView(newIndex_1); }, 0);
626
+ }
627
+ else if (event.key === "ArrowUp") {
628
+ event.preventDefault();
629
+ var newIndex_2 = focusedSearchIndex > 0
630
+ ? focusedSearchIndex - 1
631
+ : searchResults.length - 1;
632
+ setFocusedSearchIndex(newIndex_2);
633
+ // Scroll to the focused item
634
+ setTimeout(function () { return scrollFocusedItemIntoView(newIndex_2); }, 0);
635
+ }
636
+ else if (event.key === "Enter" && focusedSearchIndex >= 0) {
637
+ event.preventDefault();
638
+ var selectedResult = searchResults[focusedSearchIndex];
639
+ if (selectedResult) {
640
+ handleSearchResultClick(selectedResult);
641
+ }
642
+ }
643
+ }
644
+ else if (event.key === "Enter" && !showSearchResults) {
645
+ event.preventDefault();
646
+ handleOk();
547
647
  }
548
648
  };
549
649
  var handleCheckboxClick = function (event) {
@@ -570,9 +670,11 @@ var ModalTreeFilterControl = function (props) {
570
670
  return [];
571
671
  };
572
672
  var expandNode = function (nodeId) {
573
- var expandedNode = getNodeParent(data, nodeId, []);
574
- expandedNode.push(nodeId.toString());
575
- setExpanded(expandedNode);
673
+ var pathToNode = getNodeParent(data, nodeId, []);
674
+ pathToNode.push(nodeId.toString());
675
+ // Merge with existing expanded nodes to preserve current expansions
676
+ var mergedExpanded = Array.from(new Set(__spreadArray(__spreadArray([], expanded, true), pathToNode, true)));
677
+ setExpanded(mergedExpanded);
576
678
  };
577
679
  var handleChange = function (event, nodeIds) {
578
680
  var findNode = getNodeData(data, nodeIds !== undefined ? Number.parseInt(nodeIds) : -1);
@@ -636,6 +738,16 @@ var ModalTreeFilterControl = function (props) {
636
738
  });
637
739
  return treeArray;
638
740
  }
741
+ // Helper function to scroll focused item into view
742
+ var scrollFocusedItemIntoView = function (index) {
743
+ var _a;
744
+ if (searchResultsRefs.current[index]) {
745
+ (_a = searchResultsRefs.current[index]) === null || _a === void 0 ? void 0 : _a.scrollIntoView({
746
+ behavior: "smooth",
747
+ block: "nearest",
748
+ });
749
+ }
750
+ };
639
751
  // Pre-build search index for better performance with large trees
640
752
  var searchIndex = useMemo(function () {
641
753
  var index = [];
@@ -662,11 +774,8 @@ var ModalTreeFilterControl = function (props) {
662
774
  }
663
775
  }
664
776
  };
665
- if (data && data.children) {
666
- for (var _i = 0, _a = data.children; _i < _a.length; _i++) {
667
- var child = _a[_i];
668
- buildIndex(child);
669
- }
777
+ if (data) {
778
+ buildIndex(data);
670
779
  }
671
780
  return index;
672
781
  }, [data]);
@@ -693,25 +802,42 @@ var ModalTreeFilterControl = function (props) {
693
802
  var results = searchNodes(term);
694
803
  setSearchResults(results);
695
804
  setShowSearchResults(results.length > 0);
805
+ // Auto-focus first result if results are available
806
+ var newFocusIndex = results.length > 0 ? 0 : -1;
807
+ setFocusedSearchIndex(newFocusIndex);
808
+ // Clear refs array and prepare for new results
809
+ searchResultsRefs.current = new Array(results.length).fill(null);
810
+ // Scroll to first item when results appear
811
+ if (newFocusIndex >= 0) {
812
+ setTimeout(function () { return scrollFocusedItemIntoView(newFocusIndex); }, 100);
813
+ }
696
814
  }, 250);
697
815
  };
698
816
  var handleSearchResultClick = function (result) {
699
- // Expand to node
700
- var expandedNode = getNodeParent(data, result.id, []);
701
- setExpanded(expandedNode);
817
+ // Get path to the selected node
818
+ var pathToNode = getNodeParent(data, result.id, []);
819
+ // Merge with existing expanded nodes to avoid collapsing other parts of the tree
820
+ var mergedExpanded = Array.from(new Set(__spreadArray(__spreadArray([], expanded, true), pathToNode, true)));
821
+ setExpanded(mergedExpanded);
702
822
  // Select the node
703
823
  setValue(result.id);
704
824
  // Clear search
705
825
  setSearchTerm("");
706
826
  setSearchResults([]);
707
827
  setShowSearchResults(false);
708
- // Scroll to node after a small delay to ensure tree is expanded
828
+ setFocusedSearchIndex(-1);
829
+ if (searchInputRef.current) {
830
+ searchInputRef.current.blur();
831
+ }
709
832
  setTimeout(function () {
710
833
  var nodeElement = document.getElementById(result.id.toString());
711
834
  if (nodeElement) {
712
- nodeElement.scrollIntoView({ behavior: "smooth", block: "center" });
835
+ nodeElement.scrollIntoView({
836
+ behavior: "smooth",
837
+ block: "center",
838
+ });
713
839
  }
714
- }, 100);
840
+ }, 300);
715
841
  };
716
842
  var renderTree = function (nodes) { return (React__default.createElement(StyledTreeItem, { isChecked: selectedNodes.includes(nodes.id), key: nodes.id, nodeId: nodes.id.toString(), label: React__default.createElement("div", { className: classes.treeLabelRoot },
717
843
  nodes.isCode === true && (React__default.createElement(Code, { className: classes.treLabelIcon, htmlColor: "#1ABC9C" })),
@@ -737,13 +863,21 @@ var ModalTreeFilterControl = function (props) {
737
863
  justifyContent: "center",
738
864
  alignItems: "center",
739
865
  } },
740
- React__default.createElement(LazyLoading, null))) : (React__default.createElement(DialogContent$1, { dividers: true, style: { height: "500px", overflow: "hidden" } },
741
- allowSearch && (React__default.createElement("div", { className: classes.searchContainer },
742
- React__default.createElement(TextField, { className: classes.searchField, placeholder: "Search items (min. 2 characters)...", variant: "outlined", size: "small", fullWidth: true, value: searchTerm, onChange: handleSearchChange, InputProps: {
866
+ React__default.createElement(LazyLoading, null))) : (React__default.createElement(DialogContent$1, { dividers: true, style: {
867
+ height: "500px",
868
+ overflow: "hidden",
869
+ display: "flex",
870
+ flexDirection: "column",
871
+ padding: 0,
872
+ } },
873
+ allowSearch && (React__default.createElement("div", { className: classes.searchContainer, ref: searchContainerRef },
874
+ React__default.createElement(TextField, { className: classes.searchField, placeholder: "Search (min. 2 characters)...", variant: "outlined", size: "small", fullWidth: true, value: searchTerm, onChange: handleSearchChange, inputRef: searchInputRef, InputProps: {
743
875
  startAdornment: (React__default.createElement(SearchIcon, { style: { marginRight: 8, color: "#999" } })),
744
876
  } }),
745
877
  showSearchResults && (React__default.createElement(Paper, { className: classes.searchResults },
746
- React__default.createElement(List, null, searchResults.map(function (result) { return (React__default.createElement(ListItem, { key: result.id, button: true, className: classes.searchResultItem, onClick: function () { return handleSearchResultClick(result); } },
878
+ React__default.createElement(List, null, searchResults.map(function (result, index) { return (React__default.createElement(ListItem, { key: result.id, button: true, ref: function (el) {
879
+ searchResultsRefs.current[index] = el;
880
+ }, className: "".concat(classes.searchResultItem, " ").concat(index === focusedSearchIndex ? "focused" : ""), onClick: function () { return handleSearchResultClick(result); } },
747
881
  React__default.createElement(ListItemIcon, { className: classes.searchResultIcon }, result.hasChildren ? (React__default.createElement(AccountTreeIcon, { color: "primary", fontSize: "small" })) : (React__default.createElement(Settings$1, { color: "primary", fontSize: "small" }))),
748
882
  React__default.createElement(ListItemText, { primary: result.name, secondary: result.path, classes: {
749
883
  secondary: classes.searchResultPath,
@@ -775,7 +909,7 @@ var ModalTreeFilterControl = function (props) {
775
909
  React__default.createElement(Button, { onClick: function () { return handleOk(); }, color: "primary" }, "OK"))));
776
910
  };
777
911
 
778
- var useStyles$I = makeStyles(function (theme) { return ({
912
+ var useStyles$G = makeStyles(function (theme) { return ({
779
913
  root: {
780
914
  width: "100%",
781
915
  backgroundColor: theme.palette.background.paper,
@@ -791,7 +925,7 @@ var useStyles$I = makeStyles(function (theme) { return ({
791
925
  },
792
926
  }); });
793
927
  var TreePickerControl = function (props) {
794
- var classes = useStyles$I();
928
+ var classes = useStyles$G();
795
929
  var onSelect = props.onSelect, value = props.value; props.styleLabel; var dataSource = props.dataSource, _a = props.inputTitle, inputTitle = _a === void 0 ? "Asset" : _a; props.showPath; var _c = props.multipleSelectNodes, multipleSelectNodes = _c === void 0 ? false : _c, _d = props.showClearButton, showClearButton = _d === void 0 ? false : _d, showAssetTree = props.showAssetTree, onHide = props.onHide, _e = props.listAssetDrawings, listAssetDrawings = _e === void 0 ? [] : _e, onSuccess = props.onSuccess, isLoading = props.isLoading, _f = props.allowSearch, allowSearch = _f === void 0 ? false : _f, other = __rest(props, ["onSelect", "value", "styleLabel", "dataSource", "inputTitle", "showPath", "multipleSelectNodes", "showClearButton", "showAssetTree", "onHide", "listAssetDrawings", "onSuccess", "isLoading", "allowSearch"]);
796
930
  var _g = useState(showAssetTree || false), open = _g[0], setOpen = _g[1];
797
931
  var handleClickListItem = function (e) {
@@ -875,7 +1009,7 @@ var TreePickerControl = function (props) {
875
1009
  }, onHide: onHide, id: "modal-treeview-filters", title: props.title, keepMounted: true, open: open, onClose: handleClose, isLoading: isLoading, value: value, data: dataSource, onBackdropClick: function () { return setOpen(false); }, multipleSelectNodes: multipleSelectNodes, listAssetDrawings: listAssetDrawings, setListAssetDrawings: listAssetDrawings, onSuccess: onSuccess, allowSearch: allowSearch }, other)))));
876
1010
  };
877
1011
 
878
- var useStyles$H = makeStyles(function (theme) { return ({
1012
+ var useStyles$F = makeStyles(function (theme) { return ({
879
1013
  root: {
880
1014
  width: "100%",
881
1015
  backgroundColor: theme.palette.background.paper,
@@ -926,7 +1060,7 @@ function getNodePath(node, nodeId, parentPath, isRoot) {
926
1060
  return null;
927
1061
  }
928
1062
  var TreePickerControlV2 = function (props) {
929
- var classes = useStyles$H();
1063
+ var classes = useStyles$F();
930
1064
  var value = props.value, onSelect = props.onSelect; props.styleLabel; var dataSource = props.dataSource; props.getOptionName; var _a = props.inputTitle, inputTitle = _a === void 0 ? "Asset" : _a; props.showPath; var _c = props.multipleSelectNodes, multipleSelectNodes = _c === void 0 ? false : _c, _d = props.showClearButton, showClearButton = _d === void 0 ? false : _d, _e = props.showFullPath, showFullPath = _e === void 0 ? false : _e, showAssetTree = props.showAssetTree, onHide = props.onHide, _f = props.listAssetDrawings, listAssetDrawings = _f === void 0 ? [] : _f, onSuccess = props.onSuccess, isLoading = props.isLoading, _g = props.disabled, disabled = _g === void 0 ? false : _g, _h = props.mostUsedCount, mostUsedCount = _h === void 0 ? 0 : _h, _j = props.itemsWithParent, itemsWithParent = _j === void 0 ? [] : _j, _k = props.dialogMaxWidth, dialogMaxWidth = _k === void 0 ? "sm" : _k, _l = props.allowSearch, allowSearch = _l === void 0 ? false : _l, other = __rest(props, ["value", "onSelect", "styleLabel", "dataSource", "getOptionName", "inputTitle", "showPath", "multipleSelectNodes", "showClearButton", "showFullPath", "showAssetTree", "onHide", "listAssetDrawings", "onSuccess", "isLoading", "disabled", "mostUsedCount", "itemsWithParent", "dialogMaxWidth", "allowSearch"]);
931
1065
  var _m = useState(false), open = _m[0], setOpen = _m[1];
932
1066
  var handleClickListItem = function (event) {
@@ -1118,7 +1252,7 @@ DataGridControl.propTypes = {
1118
1252
  rows: PropTypes.array,
1119
1253
  };
1120
1254
 
1121
- var useStyles$G = makeStyles(function (theme) { return ({
1255
+ var useStyles$E = makeStyles(function (theme) { return ({
1122
1256
  contentWrapper: {
1123
1257
  padding: theme.spacing(2),
1124
1258
  },
@@ -1195,7 +1329,7 @@ var useStyles$G = makeStyles(function (theme) { return ({
1195
1329
  }); });
1196
1330
  var Alert$1 = function (_a) {
1197
1331
  var show = _a.show, variant = _a.variant, dismissible = _a.dismissible, onClose = _a.onClose, children = _a.children;
1198
- var classes = useStyles$G();
1332
+ var classes = useStyles$E();
1199
1333
  return (React__default.createElement(Collapse, { in: show },
1200
1334
  React__default.createElement(Paper, { className: "".concat(classes.alert, " ").concat(variant === "success" ? classes.success : classes.error), elevation: 0 },
1201
1335
  React__default.createElement("div", { className: classes.alertContent },
@@ -1206,7 +1340,7 @@ var Alert$1 = function (_a) {
1206
1340
  var GenericPanel = function (_a) {
1207
1341
  var _b;
1208
1342
  var title = _a.title, _c = _a.description, description = _c === void 0 ? "" : _c, _d = _a.showPromptSuccess, showPromptSuccess = _d === void 0 ? false : _d, _e = _a.showPromptError, showPromptError = _e === void 0 ? false : _e, _f = _a.onDismissSuccess, onDismissSuccess = _f === void 0 ? function () { return null; } : _f, _g = _a.onDismissError, onDismissError = _g === void 0 ? function () { return null; } : _g, successMessage = _a.successMessage, error = _a.error, children = _a.children;
1209
- var classes = useStyles$G();
1343
+ var classes = useStyles$E();
1210
1344
  return (React__default.createElement(Box, { className: classes.contentWrapper },
1211
1345
  React__default.createElement(Box, { className: classes.alertContainer },
1212
1346
  React__default.createElement(Alert$1, { show: showPromptError, variant: "danger", dismissible: true, onClose: onDismissError },
@@ -1225,7 +1359,7 @@ var GenericPanel = function (_a) {
1225
1359
  };
1226
1360
  var MasterDetailPanel = function (_a) {
1227
1361
  var title = _a.title, onSave = _a.onSave, onCancel = _a.onCancel, onDelete = _a.onDelete, saveStatus = _a.saveStatus, deleteStatus = _a.deleteStatus, _b = _a.showSave, showSave = _b === void 0 ? true : _b, showDelete = _a.showDelete, children = _a.children;
1228
- var classes = useStyles$G();
1362
+ var classes = useStyles$E();
1229
1363
  return (React__default.createElement(Box, { className: classes.masterDetailPanel },
1230
1364
  React__default.createElement(Card, { variant: "outlined" },
1231
1365
  React__default.createElement(CardContent, null,
@@ -1238,7 +1372,7 @@ var MasterDetailPanel = function (_a) {
1238
1372
  showDelete && (React__default.createElement(Button, { variant: "contained", color: "primary", className: classes.button, onClick: onDelete, disabled: !deleteStatus }, "Delete")))))));
1239
1373
  };
1240
1374
  var FilterPanel = function (props) {
1241
- var classes = useStyles$G();
1375
+ var classes = useStyles$E();
1242
1376
  var onClickExport = props.onClickExport, onClickReset = props.onClickReset, OnClickGo = props.OnClickGo, showButtons = props.showButtons, showExport = props.showExport, _a = props.extraButtons, extraButtons = _a === void 0 ? [] : _a, children = props.children;
1243
1377
  var handleExport = function () {
1244
1378
  if (onClickExport)
@@ -1263,7 +1397,7 @@ var FilterPanel = function (props) {
1263
1397
  showExport && (React__default.createElement(Button, { variant: "contained", className: "".concat(classes.button, " ").concat(classes.exportButton), onClick: handleExport, startIcon: React__default.createElement(GetAppIcon, null) }, "Excel"))))))));
1264
1398
  };
1265
1399
  var LongFilterPanel = function (props) {
1266
- var classes = useStyles$G();
1400
+ var classes = useStyles$E();
1267
1401
  var onClickExport = props.onClickExport, onClickReset = props.onClickReset, OnClickGo = props.OnClickGo, showButtons = props.showButtons, showExport = props.showExport, _a = props.extraButtons, extraButtons = _a === void 0 ? [] : _a, children = props.children;
1268
1402
  var handleExport = function () {
1269
1403
  if (onClickExport)
@@ -1726,7 +1860,7 @@ var getShiftsRangeByParameters = function (period_1) {
1726
1860
  });
1727
1861
  };
1728
1862
 
1729
- var useStyles$F = makeStyles(function (theme) { return ({
1863
+ var useStyles$D = makeStyles(function (theme) { return ({
1730
1864
  container: {
1731
1865
  display: "grid",
1732
1866
  gridTemplateColumns: "auto minmax(100px, 1fr) 80px minmax(100px, 1fr) auto auto",
@@ -1772,7 +1906,7 @@ var DEFAULT_PERIOD_OPTIONS = [
1772
1906
  var ShiftPeriodNavigatorControl = function (_a) {
1773
1907
  var _b;
1774
1908
  var value = _a.value, onChange = _a.onChange, _c = _a.showShiftAndCrews, showShiftAndCrews = _c === void 0 ? true : _c, _d = _a.dateFormat, dateFormat = _d === void 0 ? "MM/DD/YYYY HH:mm a" : _d, _e = _a.periodOptions, periodOptions = _e === void 0 ? DEFAULT_PERIOD_OPTIONS : _e;
1775
- var classes = useStyles$F();
1909
+ var classes = useStyles$D();
1776
1910
  var _f = useState(((_b = periodOptions[0]) === null || _b === void 0 ? void 0 : _b.value) || "Day"), period = _f[0], setPeriod = _f[1];
1777
1911
  var _g = useState(false), loadingShiftPeriodList = _g[0], setLoadingShiftPeriodList = _g[1];
1778
1912
  var _h = useState(""); _h[0]; var setError = _h[1];
@@ -2051,7 +2185,7 @@ var ShiftPeriodNavigatorControl = function (_a) {
2051
2185
  React__default.createElement(SkipNextIcon, null)))));
2052
2186
  };
2053
2187
 
2054
- var useStyles$E = makeStyles(function (theme) { return ({
2188
+ var useStyles$C = makeStyles(function (theme) { return ({
2055
2189
  contextMenu: {
2056
2190
  backgroundColor: "#fff",
2057
2191
  borderRadius: "2px",
@@ -2143,7 +2277,7 @@ var useContextMenuMESF = function () { return useContext(ContextMenuMESFContext)
2143
2277
 
2144
2278
  var ContextMenu$1 = function () {
2145
2279
  var _a = useContextMenuMESF(), show = _a.show, position = _a.position, options = _a.options;
2146
- var classes = useStyles$E();
2280
+ var classes = useStyles$C();
2147
2281
  var menuRef = useRef(null);
2148
2282
  var _b = useState("0"), x = _b[0], setX = _b[1];
2149
2283
  var _c = useState("0"), y = _c[0], setY = _c[1];
@@ -2580,7 +2714,7 @@ var JobsProvider = function (_a) {
2580
2714
  return (React__default.createElement(JobsContext.Provider, { value: { state: state, actions: actions } }, children));
2581
2715
  };
2582
2716
 
2583
- var useStyles$D = makeStyles(function (theme) { return ({
2717
+ var useStyles$B = makeStyles(function (theme) { return ({
2584
2718
  buttons: {
2585
2719
  opacity: 0,
2586
2720
  transition: "opacity 0.1s ease-in-out",
@@ -2598,7 +2732,7 @@ var useStyles$D = makeStyles(function (theme) { return ({
2598
2732
  var useJobsTableData = function (_a) {
2599
2733
  var setShowModal = _a.setShowModal, setJobSelected = _a.setJobSelected, showContextMenu = _a.showContextMenu;
2600
2734
  var rows = useJobsContext().state.jobsData;
2601
- useStyles$D();
2735
+ useStyles$B();
2602
2736
  var renderButtonMenu = function (params) {
2603
2737
  return (React__default.createElement(Button, { style: {}, onClick: function (e) { return showContextMenu(e, params.data, "jobsContext"); } },
2604
2738
  React__default.createElement(FormatListBulletedSharpIcon, { style: { height: "auto" }, color: "action" })));
@@ -2692,7 +2826,7 @@ var CustomStatusPanel = function (_a) {
2692
2826
  return (React.createElement(IconButton$1, { onClick: handleNew, color: "primary", style: { marginLeft: -15 } },
2693
2827
  React.createElement(PlaylistAddIcon, { style: { width: 30, height: 30 } })));
2694
2828
  };
2695
- var useStyles$C = makeStyles(function (theme) { return ({
2829
+ var useStyles$A = makeStyles(function (theme) { return ({
2696
2830
  root: {
2697
2831
  "& .MuiDataGrid-row": {
2698
2832
  cursor: "pointer",
@@ -2771,7 +2905,7 @@ var useStyles$C = makeStyles(function (theme) { return ({
2771
2905
  }); });
2772
2906
  var TableJobs = function (_a) {
2773
2907
  var getJobsFromAPI = _a.getJobsFromAPI, isLoading = _a.isLoading;
2774
- var classes = useStyles$C();
2908
+ var classes = useStyles$A();
2775
2909
  var _b = useState(null), jobSelected = _b[0], setJobSelected = _b[1];
2776
2910
  var _c = useState(null), gridApi = _c[0], setGridApi = _c[1];
2777
2911
  var _d = useState(""), errorMessage = _d[0], setErrorMessage = _d[1];
@@ -3125,12 +3259,14 @@ var CodeFilter = function (_a) {
3125
3259
  };
3126
3260
 
3127
3261
  var DateFilter = function (_a) {
3128
- var date = _a.date, setDate = _a.setDate, _b = _a.label, label = _b === void 0 ? "Date" : _b;
3262
+ var date = _a.date, setDate = _a.setDate, _b = _a.label, label = _b === void 0 ? "Date" : _b, minDate = _a.minDate, maxDate = _a.maxDate;
3129
3263
  var handleDateChange = function (datePicker) {
3130
- setDate(datePicker.toDate());
3264
+ if (datePicker) {
3265
+ setDate(datePicker.toDate());
3266
+ }
3131
3267
  };
3132
3268
  return (React__default.createElement(MuiPickersUtilsProvider, { utils: MomentUtils },
3133
- React__default.createElement(KeyboardDatePicker, { disableToolbar: true, variant: "inline", format: "MM/DD/yyyy", id: "date-picker-inline", style: {
3269
+ React__default.createElement(KeyboardDatePicker, { disableToolbar: true, variant: "inline", format: "MM/DD/yyyy", id: "date-picker-inline", autoOk: true, minDate: minDate, maxDate: maxDate || moment$3().toDate(), style: {
3134
3270
  minWidth: "100%",
3135
3271
  borderTopLeftRadius: 3,
3136
3272
  borderTopRightRadius: 3,
@@ -3141,14 +3277,13 @@ var DateFilter = function (_a) {
3141
3277
 
3142
3278
  var SearchFilter = function (_a) {
3143
3279
  var search = _a.search, setSearch = _a.setSearch;
3144
- return (React__default.createElement(React__default.Fragment, null,
3280
+ return (React__default.createElement("div", { style: { marginTop: 8 } },
3145
3281
  React__default.createElement(TextField, { style: {
3146
3282
  minWidth: "100%",
3147
- backgroundColor: "#f5f8fa",
3148
- }, label: "Search", variant: "outlined", margin: "dense", value: search, onChange: function (e) { return setSearch(e.target.value); }, autoComplete: "off" })));
3283
+ }, label: "Search", variant: "outlined", size: "small", value: search, onChange: function (e) { return setSearch(e.target.value); }, autoComplete: "off" })));
3149
3284
  };
3150
3285
 
3151
- var useStyles$B = makeStyles(function (theme) { return ({
3286
+ var useStyles$z = makeStyles(function (theme) { return ({
3152
3287
  title: {
3153
3288
  fontSize: 15,
3154
3289
  },
@@ -3160,54 +3295,45 @@ var useStyles$B = makeStyles(function (theme) { return ({
3160
3295
  }); });
3161
3296
  var formatTime = function (nowTime) {
3162
3297
  if (nowTime == undefined)
3163
- return;
3164
- return nowTime.toLocaleDateString() + " " + nowTime.toLocaleTimeString();
3298
+ return "";
3299
+ // Ensure nowTime is a Date object
3300
+ var date;
3301
+ if (nowTime instanceof Date) {
3302
+ date = nowTime;
3303
+ }
3304
+ else if (typeof nowTime === "string" || typeof nowTime === "number") {
3305
+ date = new Date(nowTime);
3306
+ }
3307
+ else {
3308
+ return "";
3309
+ }
3310
+ // Check if date is valid
3311
+ if (isNaN(date.getTime())) {
3312
+ return "";
3313
+ }
3314
+ return date.toLocaleDateString() + " " + date.toLocaleTimeString();
3165
3315
  };
3166
3316
  var ModalLogSelected = function (_a) {
3167
3317
  var show = _a.show, onHide = _a.onHide, selectedLog = _a.selectedLog;
3168
- var classes = useStyles$B();
3318
+ var classes = useStyles$z();
3169
3319
  return (React__default.createElement(Grid, { container: true, justifyContent: "center", alignItems: "center" },
3170
3320
  React__default.createElement(MesfModal, { title: "LOG DETAILS", open: show, handleClose: function () { return onHide(false); }, maxWidth: "md", id: "log-details-modal" },
3171
3321
  React__default.createElement(MesfModal.Content, { style: { padding: "15px 30px" } },
3172
3322
  React__default.createElement(Grid, { container: true, spacing: 1, alignItems: "flex-start" },
3173
3323
  React__default.createElement(Grid, { item: true, md: 6, xs: 12, style: { paddingRight: 20, paddingLeft: 5 } },
3174
- React__default.createElement(TextField
3175
- // disabled
3176
- , {
3177
- // disabled
3178
- variant: "standard",
3179
- // variant="outline"
3180
- fullWidth: true, margin: "dense", label: "User", defaultValue: selectedLog === null || selectedLog === void 0 ? void 0 : selectedLog.User, InputProps: {
3324
+ React__default.createElement(TextField, { variant: "standard", fullWidth: true, margin: "dense", label: "User", defaultValue: selectedLog === null || selectedLog === void 0 ? void 0 : selectedLog.User, InputProps: {
3181
3325
  readOnly: true,
3182
3326
  } })),
3183
3327
  React__default.createElement(Grid, { item: true, md: 6, xs: 12, style: { paddingRight: 20, paddingLeft: 5 } },
3184
- React__default.createElement(TextField
3185
- // disabled
3186
- , {
3187
- // disabled
3188
- variant: "standard",
3189
- // variant="outline"
3190
- fullWidth: true, margin: "dense", label: "Time", defaultValue: formatTime(selectedLog === null || selectedLog === void 0 ? void 0 : selectedLog.Timestamp), InputProps: {
3328
+ React__default.createElement(TextField, { variant: "standard", fullWidth: true, margin: "dense", label: "Time", defaultValue: formatTime(selectedLog === null || selectedLog === void 0 ? void 0 : selectedLog.Timestamp), InputProps: {
3191
3329
  readOnly: true,
3192
3330
  } })),
3193
3331
  React__default.createElement(Grid, { item: true, md: 6, xs: 12, style: { paddingRight: 20, paddingLeft: 5 } },
3194
- React__default.createElement(TextField
3195
- // disabled
3196
- , {
3197
- // disabled
3198
- variant: "standard",
3199
- // variant="outline"
3200
- fullWidth: true, margin: "dense", label: "Source", defaultValue: selectedLog === null || selectedLog === void 0 ? void 0 : selectedLog.Source, InputProps: {
3332
+ React__default.createElement(TextField, { variant: "standard", fullWidth: true, margin: "dense", label: "Source", defaultValue: selectedLog === null || selectedLog === void 0 ? void 0 : selectedLog.Source, InputProps: {
3201
3333
  readOnly: true,
3202
3334
  } })),
3203
3335
  React__default.createElement(Grid, { item: true, md: 6, xs: 12, style: { paddingRight: 20, paddingLeft: 5 } },
3204
- React__default.createElement(TextField
3205
- // disabled
3206
- , {
3207
- // disabled
3208
- variant: "standard",
3209
- // variant="outline"
3210
- fullWidth: true, margin: "dense", label: "Type", defaultValue: selectedLog === null || selectedLog === void 0 ? void 0 : selectedLog.LogTypeCode, InputProps: {
3336
+ React__default.createElement(TextField, { variant: "standard", fullWidth: true, margin: "dense", label: "Type", defaultValue: selectedLog === null || selectedLog === void 0 ? void 0 : selectedLog.LogTypeCode, InputProps: {
3211
3337
  readOnly: true,
3212
3338
  } })),
3213
3339
  React__default.createElement(Grid, { item: true, md: 12, xs: 12, style: { paddingRight: 20, paddingLeft: 5, marginBottom: 20 } },
@@ -3326,14 +3452,7 @@ var useLogTableData = function () {
3326
3452
  return { rows: rows, columnDefs: columnDefs };
3327
3453
  };
3328
3454
 
3329
- var ButtonWithLoading = function (_a) {
3330
- var children = _a.children, isLoading = _a.isLoading, props = __rest(_a, ["children", "isLoading"]);
3331
- return (React__default.createElement(Button, __assign({}, props, { disabled: isLoading }),
3332
- isLoading && React__default.createElement(CircularProgress, { size: "1rem" }),
3333
- children));
3334
- };
3335
-
3336
- var useStyles$A = makeStyles(function (theme) { return ({
3455
+ var useStyles$y = makeStyles(function (theme) { return ({
3337
3456
  root: {
3338
3457
  "& .MuiDataGrid-row": {
3339
3458
  cursor: "pointer",
@@ -3344,49 +3463,12 @@ var useStyles$A = makeStyles(function (theme) { return ({
3344
3463
  "& .MuiDataGrid-columnHeaderTitle, & .MuiTablePagination-caption": {
3345
3464
  fontWeight: "bold",
3346
3465
  },
3347
- // "& .ag-icon-menu": {
3348
- // display: "none",
3349
- // },
3350
- // "& .ag-header-cell-label": {
3351
- // display: "flex",
3352
- // alignItems: "start",
3353
- // justifyContent: "start",
3354
- // fontSize: "1rem",
3355
- // fontWeight: "bold",
3356
- // },
3357
- // "& .ag-header-cell-centered .ag-header-cell-label": {
3358
- // justifyContent: "center !important",
3359
- // },
3360
- //
3361
- // "& .ag-header-cell-text": {
3362
- // textAlign: "start !important",
3363
- // },
3364
- //
3365
- // "& .ag-checkbox-input-wrapper": {
3366
- // margin: "0 10px",
3367
- // },
3368
- // "& .ag-cell": {
3369
- // padding: "2px !important",
3370
- // },
3371
- // "& .ag-header-cell": {
3372
- // padding: "0px !important",
3373
- // textAlign: "center !important",
3374
- // fontSize: 10,
3375
- // display: "flex",
3376
- // alignItems: "center",
3377
- // justifyContent: "center",
3378
- // },
3379
- // "& .ag-cell-wrapper": {},
3380
- // "& .ag-menu-option": {
3381
- // cursor: "pointer",
3382
- // },
3383
3466
  },
3384
3467
  card: {
3385
- backgroundColor: "#e9f2f8",
3468
+ backgroundColor: "#ffffff",
3386
3469
  display: "flex",
3387
3470
  alignItems: "center",
3388
3471
  height: "100%",
3389
- // justifyContent: "center",
3390
3472
  },
3391
3473
  filters: {
3392
3474
  position: "relative",
@@ -3439,7 +3521,7 @@ var useLogsOptionsFunctions = function (_a) {
3439
3521
  var TableLogs = function (_a) {
3440
3522
  var isLoading = _a.isLoading; _a.rowData; var refreshData = _a.refreshData;
3441
3523
  var _b = useLogsContext(), _c = _b.state, Timezone = _c.Timezone, _d = _c.searchData, Start = _d.Start, End = _d.End, Search = _d.Search, LogTypeCode = _d.LogTypeCode, _e = _b.actions, setLogTypeCodeFilter = _e.setLogTypeCodeFilter, setEndFilter = _e.setEndFilter, setStartFilter = _e.setStartFilter, setSearchFilter = _e.setSearchFilter, setTimezone = _e.setTimezone;
3442
- var classes = useStyles$A();
3524
+ var classes = useStyles$y();
3443
3525
  var gridStyle = useMemo(function () { return ({ height: "100%", width: "100%" }); }, []);
3444
3526
  var _f = useState(null); _f[0]; var setGridAPI = _f[1];
3445
3527
  var _g = useState(false), showLogModal = _g[0], setShowLogModal = _g[1];
@@ -3458,10 +3540,31 @@ var TableLogs = function (_a) {
3458
3540
  };
3459
3541
  }, []);
3460
3542
  var _l = useContextMenuMESF(), showContextMenu = _l.showContextMenu, registerConfig = _l.registerConfig;
3461
- var handleSubmit = function (ev) {
3462
- ev.preventDefault();
3463
- refreshData({ Start: Start, End: End, Search: Search, LogTypeCode: LogTypeCode });
3464
- };
3543
+ // Debounced search timer ref
3544
+ var searchTimeoutRef = useRef(null);
3545
+ // Store current values in ref to avoid closure issues
3546
+ var currentValues = useRef({ Start: Start, End: End, Search: Search, LogTypeCode: LogTypeCode });
3547
+ currentValues.current = { Start: Start, End: End, Search: Search, LogTypeCode: LogTypeCode };
3548
+ // Auto search when Search filter changes (with debounce)
3549
+ useEffect(function () {
3550
+ if (searchTimeoutRef.current) {
3551
+ clearTimeout(searchTimeoutRef.current);
3552
+ }
3553
+ searchTimeoutRef.current = setTimeout(function () {
3554
+ var _a = currentValues.current, currentStart = _a.Start, currentEnd = _a.End, currentSearch = _a.Search, currentLogTypeCode = _a.LogTypeCode;
3555
+ refreshData({
3556
+ Start: currentStart,
3557
+ End: currentEnd,
3558
+ Search: currentSearch,
3559
+ LogTypeCode: currentLogTypeCode,
3560
+ });
3561
+ }, 500);
3562
+ return function () {
3563
+ if (searchTimeoutRef.current) {
3564
+ clearTimeout(searchTimeoutRef.current);
3565
+ }
3566
+ };
3567
+ }, [Search]);
3465
3568
  var handleResetButtonClick = function () {
3466
3569
  resetFilter();
3467
3570
  refreshData({
@@ -3484,15 +3587,15 @@ var TableLogs = function (_a) {
3484
3587
  }, [isLoading]);
3485
3588
  // Btn reset data
3486
3589
  var resetFilter = function () {
3487
- setStartFilter(null);
3488
- setEndFilter(null);
3590
+ setStartFilter(moment$3().add(-5, "days").hour(0).minute(0).second(0).toDate());
3591
+ setEndFilter(moment$3().hour(23).minute(59).second(59).toDate());
3489
3592
  setSearchFilter("");
3490
3593
  setLogTypeCodeFilter("A");
3491
3594
  setSelectedLog(undefined);
3492
3595
  };
3493
3596
  var rowClicked = function (rowClickedEvent) {
3494
3597
  var data = rowClickedEvent.data;
3495
- if (data)
3598
+ if (!data)
3496
3599
  return;
3497
3600
  setSelectedLog(data);
3498
3601
  setShowLogModal(true);
@@ -3527,24 +3630,19 @@ var TableLogs = function (_a) {
3527
3630
  React.createElement(Grid, { item: true, md: 12, xs: 12 },
3528
3631
  React.createElement(Card, { className: classes.card },
3529
3632
  React.createElement(CardContent, { style: { padding: "6px !important", width: "100%" } },
3530
- React.createElement("form", { onSubmit: handleSubmit, className: classes.form },
3531
- React.createElement(Grid, { container: true, alignItems: "center", direction: "row", spacing: 1 },
3532
- React.createElement(Grid, { item: true, md: 2, xs: 12 },
3533
- React.createElement(DateFilter, { label: "From", date: Start, setDate: setStartFilter })),
3534
- React.createElement(Grid, { item: true, md: 2, xs: 12 },
3535
- React.createElement(DateFilter, { label: "To", date: End, setDate: setEndFilter })),
3536
- React.createElement(Grid, { item: true, md: 2, xs: 12 },
3537
- React.createElement(CodeFilter, { LogTypeCode: LogTypeCode, setLogTypeCodeFilter: setLogTypeCodeFilter })),
3538
- React.createElement(Grid, { item: true, md: 2, xs: 12 },
3539
- React.createElement(TimezoneSelector, { value: Timezone, onChange: setTimezone })),
3540
- React.createElement(Grid, { item: true, container: true, md: 4, xs: 12, spacing: 1, justifyContent: "flex-end", alignItems: "flex-end" },
3541
- React.createElement(Grid, { item: true, md: 4, xs: 12 },
3542
- React.createElement(Button, { variant: "contained", color: "default", onClick: handleResetButtonClick, fullWidth: true }, "Reset")),
3543
- React.createElement(Grid, { item: true, md: 4, xs: 12 },
3544
- React.createElement(ButtonWithLoading, { isLoading: isLoading, fullWidth: true, variant: "contained", color: "primary", type: "submit" }, "Search")))),
3545
- React.createElement(Grid, { container: true, direction: "row" },
3546
- React.createElement(Grid, { item: true, md: 12, xs: 12 },
3547
- React.createElement(SearchFilter, { search: Search, setSearch: setSearchFilter }))))))),
3633
+ React.createElement(Grid, { container: true, alignItems: "center", direction: "row", spacing: 1 },
3634
+ React.createElement(Grid, { item: true, md: 2, xs: 12 },
3635
+ React.createElement(DateFilter, { label: "From", date: Start, setDate: setStartFilter, maxDate: End })),
3636
+ React.createElement(Grid, { item: true, md: 2, xs: 12 },
3637
+ React.createElement(DateFilter, { label: "To", date: End, setDate: setEndFilter, minDate: Start })),
3638
+ React.createElement(Grid, { item: true, md: 1, xs: 12 },
3639
+ React.createElement(CodeFilter, { LogTypeCode: LogTypeCode, setLogTypeCodeFilter: setLogTypeCodeFilter })),
3640
+ React.createElement(Grid, { item: true, md: 2, xs: 12 },
3641
+ React.createElement(TimezoneSelector, { value: Timezone, onChange: setTimezone })),
3642
+ React.createElement(Grid, { item: true, md: 4, xs: 12 },
3643
+ React.createElement(SearchFilter, { search: Search, setSearch: setSearchFilter })),
3644
+ React.createElement(Grid, { item: true, md: 1, xs: 12, style: { paddingTop: 8 } },
3645
+ React.createElement(Button, { variant: "contained", color: "default", onClick: handleResetButtonClick, fullWidth: true, size: "small" }, "Reset")))))),
3548
3646
  React.createElement(Grid, { item: true, md: 12, xs: 12, style: {
3549
3647
  height: "70vh",
3550
3648
  } },
@@ -3733,7 +3831,7 @@ var deleteProfile = function (profileId) { return __awaiter(void 0, void 0, void
3733
3831
  });
3734
3832
  }); };
3735
3833
 
3736
- var useStyles$z = makeStyles(function (theme) { return ({
3834
+ var useStyles$x = makeStyles(function (theme) { return ({
3737
3835
  title: {
3738
3836
  fontSize: 15,
3739
3837
  },
@@ -3756,7 +3854,7 @@ var CreateProfile = function (_a) {
3756
3854
  var _d = useState(""), message = _d[0], setMessage = _d[1];
3757
3855
  var _e = useState(false), isSubmitLoading = _e[0], setIsSubmitLoading = _e[1];
3758
3856
  var _f = useState(""), error = _f[0], setError = _f[1];
3759
- var classes = useStyles$z();
3857
+ var classes = useStyles$x();
3760
3858
  var _g = useForm({ defaultValues: INITIAL_VALUES$3 }), register = _g.register, handleSubmit = _g.handleSubmit, reset = _g.reset, errors = _g.formState.errors;
3761
3859
  var onSubmit = function (data) { return __awaiter(void 0, void 0, void 0, function () {
3762
3860
  var res;
@@ -3992,7 +4090,7 @@ var DataTable = function (_a) {
3992
4090
  React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(""); } })));
3993
4091
  };
3994
4092
 
3995
- var useStyles$y = makeStyles(function (theme) { return ({
4093
+ var useStyles$w = makeStyles(function (theme) { return ({
3996
4094
  root: {
3997
4095
  "& .MuiFormLabel-asterisk": {
3998
4096
  display: "none",
@@ -4001,7 +4099,7 @@ var useStyles$y = makeStyles(function (theme) { return ({
4001
4099
  }); });
4002
4100
  var ActionsOfProfile = function (_a) {
4003
4101
  var profileForEdit = _a.profileForEdit, show = _a.show, onHide = _a.onHide;
4004
- var classes = useStyles$y();
4102
+ var classes = useStyles$w();
4005
4103
  var _b = useState(null), actionsOfProfile = _b[0], setActionsOfProfile = _b[1];
4006
4104
  var _c = useState(false), open = _c[0], setOpen = _c[1];
4007
4105
  var _d = useState(true), isLoading = _d[0], setIsLoading = _d[1];
@@ -4189,7 +4287,7 @@ var ProfilesProvider = function (_a) {
4189
4287
  return (React__default.createElement(ProfilesContext.Provider, { value: { state: state, actions: actions } }, children));
4190
4288
  };
4191
4289
 
4192
- var useStyles$x = makeStyles(function (theme) { return ({
4290
+ var useStyles$v = makeStyles(function (theme) { return ({
4193
4291
  buttons: {
4194
4292
  opacity: 0,
4195
4293
  transition: "opacity 0.1s ease-in-out",
@@ -4207,7 +4305,7 @@ var useStyles$x = makeStyles(function (theme) { return ({
4207
4305
  var useTableData$3 = function (_a) {
4208
4306
  var setProfileId = _a.setProfileId, setModalProceduresProfile = _a.setModalProceduresProfile, setModalDeleteProfile = _a.setModalDeleteProfile, showContextMenu = _a.showContextMenu;
4209
4307
  var state = useProfilesContext().state;
4210
- var classes = useStyles$x();
4308
+ var classes = useStyles$v();
4211
4309
  var rows = state.profiles.map(function (_a) {
4212
4310
  var ProfileId = _a.ProfileId, ProfileName = _a.ProfileName;
4213
4311
  return ({
@@ -4279,7 +4377,7 @@ var useTableData$3 = function (_a) {
4279
4377
  return { rows: rows, columnDefs: columnDefs };
4280
4378
  };
4281
4379
 
4282
- var useStyles$w = makeStyles(function (theme) { return ({
4380
+ var useStyles$u = makeStyles(function (theme) { return ({
4283
4381
  root: {
4284
4382
  "& .ag-icon-menu": {
4285
4383
  display: "none",
@@ -4350,7 +4448,7 @@ var TableProfiles = function (_a) {
4350
4448
  var _d = useState(false), modalDeleteProfile = _d[0], setModalDeleteProfile = _d[1];
4351
4449
  var _e = useState(null), profile = _e[0], setProfile = _e[1];
4352
4450
  var _f = useState(null), gridApi = _f[0], setGridApi = _f[1];
4353
- var classes = useStyles$w();
4451
+ var classes = useStyles$u();
4354
4452
  var loadingOverlayComponent = useMemo(function () {
4355
4453
  return LazyLoading;
4356
4454
  }, []);
@@ -4582,7 +4680,7 @@ var DeleteShiftParameters = function (PatternStart) { return __awaiter(void 0, v
4582
4680
  });
4583
4681
  }); };
4584
4682
 
4585
- var useStyles$v = makeStyles(function (theme) { return ({
4683
+ var useStyles$t = makeStyles(function (theme) { return ({
4586
4684
  title: {
4587
4685
  fontSize: 15,
4588
4686
  },
@@ -4608,7 +4706,7 @@ var CreateShift = function (_a) {
4608
4706
  var _d = useState(false), open = _d[0], setOpen = _d[1];
4609
4707
  var _e = useState(false), isSubmitLoading = _e[0], setIsSubmitLoading = _e[1];
4610
4708
  var _f = useState(""), error = _f[0], setError = _f[1];
4611
- var classes = useStyles$v();
4709
+ var classes = useStyles$t();
4612
4710
  var shiftTableData = useShiftsCrewsContext().state.shiftTableData;
4613
4711
  var _g = useForm({
4614
4712
  defaultValues: shiftTableData ? shiftTableData : INITIAL_VALUES$2,
@@ -4810,7 +4908,7 @@ var CreateShift = function (_a) {
4810
4908
  React.createElement(Alert, { severity: "success", onClose: handleClose }, "The shift was created successfully"))));
4811
4909
  };
4812
4910
 
4813
- var useStyles$u = makeStyles(function (theme) { return ({
4911
+ var useStyles$s = makeStyles(function (theme) { return ({
4814
4912
  title: {
4815
4913
  fontSize: 15,
4816
4914
  },
@@ -4836,7 +4934,7 @@ var DeleteShift = function (_a) {
4836
4934
  var _c = useState(false), open = _c[0], setOpen = _c[1];
4837
4935
  var _d = useState(false), isSubmitLoading = _d[0], setIsSubmitLoading = _d[1];
4838
4936
  var _e = useState(false), deleteAlert = _e[0], setDeleteAlert = _e[1];
4839
- var classes = useStyles$u();
4937
+ var classes = useStyles$s();
4840
4938
  var shiftTableData = useShiftsCrewsContext().state.shiftTableData;
4841
4939
  var _f = useState(""), error = _f[0], setError = _f[1];
4842
4940
  var _g = useForm({ defaultValues: INITIAL_VALUES$2 }), control = _g.control, setValue = _g.setValue, reset = _g.reset, watch = _g.watch, errors = _g.formState.errors;
@@ -4975,7 +5073,7 @@ var DeleteShift = function (_a) {
4975
5073
  React.createElement(Alert, { severity: "warning", onClose: handleClose }, "The shift was deleted successfully"))));
4976
5074
  };
4977
5075
 
4978
- var useStyles$t = makeStyles(function (theme) { return ({
5076
+ var useStyles$r = makeStyles(function (theme) { return ({
4979
5077
  title: {
4980
5078
  fontSize: 15,
4981
5079
  },
@@ -5002,7 +5100,7 @@ var EditShift = function (_a) {
5002
5100
  var _d = useState(""), error = _d[0], setError = _d[1];
5003
5101
  var _e = useState(false), isSubmitLoading = _e[0], setIsSubmitLoading = _e[1];
5004
5102
  var _f = useState(false), initialShiftPerDayAndCrewsNumber = _f[0], setInitialShiftPerDayAndCrewsNumber = _f[1];
5005
- var classes = useStyles$t();
5103
+ var classes = useStyles$r();
5006
5104
  var shiftTableData = useShiftsCrewsContext().state.shiftTableData;
5007
5105
  var _g = useForm({ defaultValues: INITIAL_VALUES$2 }), control = _g.control, setValue = _g.setValue, handleSubmit = _g.handleSubmit, reset = _g.reset, watch = _g.watch, errors = _g.formState.errors;
5008
5106
  // Progress bar
@@ -5270,7 +5368,7 @@ var useShiftsOptionsFunctions = function (_a) {
5270
5368
  };
5271
5369
  };
5272
5370
 
5273
- var useStyles$s = makeStyles(function (theme) { return ({
5371
+ var useStyles$q = makeStyles(function (theme) { return ({
5274
5372
  root: {
5275
5373
  opacity: 0,
5276
5374
  transition: "opacity 0.1s ease-in-out",
@@ -5289,7 +5387,7 @@ var useTableData$2 = function (_a) {
5289
5387
  var _b;
5290
5388
  var setOpenModalEditShift = _a.setOpenModalEditShift, setOpenModalDeleteShift = _a.setOpenModalDeleteShift, showContextMenu = _a.showContextMenu;
5291
5389
  var _c = useShiftsCrewsContext(), state = _c.state, actions = _c.actions;
5292
- var classes = useStyles$s();
5390
+ var classes = useStyles$q();
5293
5391
  var rows = (_b = state.shifts) === null || _b === void 0 ? void 0 : _b.map(function (_a) {
5294
5392
  var PatternStart = _a.PatternStart, ShiftCodes = _a.ShiftCodes, Crews = _a.Crews, PatternDays = _a.PatternDays, CrewRotation = _a.CrewRotation, Comments = _a.Comments, CanEdit = _a.CanEdit;
5295
5393
  return ({
@@ -5400,7 +5498,7 @@ var useTableData$2 = function (_a) {
5400
5498
  return { rows: rows, columnDefs: columnDefs };
5401
5499
  };
5402
5500
 
5403
- var useStyles$r = makeStyles(function (theme) { return ({
5501
+ var useStyles$p = makeStyles(function (theme) { return ({
5404
5502
  root: {
5405
5503
  // "& .ag-icon-menu": {
5406
5504
  // display: "none",
@@ -5452,7 +5550,7 @@ var useStyles$r = makeStyles(function (theme) { return ({
5452
5550
  }); });
5453
5551
  var TableShiftsCrews = function (_a) {
5454
5552
  _a.isLoading; var getShiftsCrewsFromAPI = _a.getShiftsCrewsFromAPI;
5455
- var classes = useStyles$r();
5553
+ var classes = useStyles$p();
5456
5554
  var _b = useState(false), openModalNew = _b[0], setOpenModalNew = _b[1];
5457
5555
  var _c = useState(false), openModalEditShift = _c[0], setOpenModalEditShift = _c[1];
5458
5556
  var _d = useState(false), openModalDeleteShift = _d[0], setOpenModalDeleteShift = _d[1];
@@ -5736,6 +5834,65 @@ var ConfigurationAssetProvider = function (_a) {
5736
5834
  return (React__default.createElement(ConfigurationAssetContext.Provider, { value: { state: state, actions: actions } }, children));
5737
5835
  };
5738
5836
 
5837
+ var getUser = function (UserId, UserName) { return __awaiter(void 0, void 0, void 0, function () {
5838
+ var apiService, parameters, resp;
5839
+ return __generator(this, function (_a) {
5840
+ switch (_a.label) {
5841
+ case 0:
5842
+ apiService = new MESApiService();
5843
+ parameters = [];
5844
+ parameters.push({ name: "UserId", value: UserId });
5845
+ parameters.push({ name: "UserName", value: UserName });
5846
+ return [4 /*yield*/, apiService.callV2("[SEC].[GetUser]", parameters)];
5847
+ case 1:
5848
+ resp = _a.sent();
5849
+ return [2 /*return*/, resp];
5850
+ }
5851
+ });
5852
+ }); };
5853
+ var getAssets = function () { return __awaiter(void 0, void 0, void 0, function () {
5854
+ var apiService, resp;
5855
+ return __generator(this, function (_a) {
5856
+ switch (_a.label) {
5857
+ case 0:
5858
+ apiService = new MESApiService();
5859
+ return [4 /*yield*/, apiService.callV2("[MES].[GetAssets]", [])];
5860
+ case 1:
5861
+ resp = _a.sent();
5862
+ return [2 /*return*/, resp];
5863
+ }
5864
+ });
5865
+ }); };
5866
+ var getUTLSettings = function () { return __awaiter(void 0, void 0, void 0, function () {
5867
+ var apiService, resp;
5868
+ return __generator(this, function (_a) {
5869
+ switch (_a.label) {
5870
+ case 0:
5871
+ apiService = new MESApiService();
5872
+ return [4 /*yield*/, apiService.callV2("[UTL].[GetSettings]", [])];
5873
+ case 1:
5874
+ resp = _a.sent();
5875
+ return [2 /*return*/, resp];
5876
+ }
5877
+ });
5878
+ }); };
5879
+ var upsertDefaultAreaId = function (UserId, DefaultAreaId) { return __awaiter(void 0, void 0, void 0, function () {
5880
+ var apiService, parameters, resp;
5881
+ return __generator(this, function (_a) {
5882
+ switch (_a.label) {
5883
+ case 0:
5884
+ apiService = new MESApiService();
5885
+ parameters = [];
5886
+ parameters.push({ name: "UserId", value: UserId });
5887
+ parameters.push({ name: "DefaultAssetId", value: DefaultAreaId });
5888
+ return [4 /*yield*/, apiService.callV2("[SEC].[UpsertDefaultAssetId]", parameters)];
5889
+ case 1:
5890
+ resp = _a.sent();
5891
+ return [2 /*return*/, resp];
5892
+ }
5893
+ });
5894
+ }); };
5895
+
5739
5896
  var TransformAssetModelData = function (node) {
5740
5897
  var model = {
5741
5898
  id: node.AssetId,
@@ -5892,7 +6049,7 @@ var useAssetCodes = function () {
5892
6049
  return { loadFilterAssets: loadFilterAssets };
5893
6050
  };
5894
6051
 
5895
- var useStyles$q = makeStyles(function (theme) { return ({
6052
+ var useStyles$o = makeStyles(function (theme) { return ({
5896
6053
  root: {
5897
6054
  "& .input-group-text": {
5898
6055
  display: "none",
@@ -5935,7 +6092,7 @@ var useStyles$q = makeStyles(function (theme) { return ({
5935
6092
  }); });
5936
6093
  var CreateNewAssetDialog = function (_a) {
5937
6094
  var show = _a.show, onHide = _a.onHide;
5938
- var classes = useStyles$q();
6095
+ var classes = useStyles$o();
5939
6096
  var _b = useState(true), fullWidth = _b[0]; _b[1];
5940
6097
  var _c = useState("sm"), maxWidth = _c[0]; _c[1];
5941
6098
  var _d = useState(false), assetCreatedSuccess = _d[0], setAssetCreatedSuccess = _d[1];
@@ -6066,7 +6223,7 @@ var CreateNewAssetDialog = function (_a) {
6066
6223
  React__default.createElement(Alert$3, { severity: "info", onClose: handleClose }, "Document created successfully"))));
6067
6224
  };
6068
6225
 
6069
- var useStyles$p = makeStyles(function (theme) { return ({
6226
+ var useStyles$n = makeStyles(function (theme) { return ({
6070
6227
  root: {
6071
6228
  "& .input-group-text": {
6072
6229
  display: "none",
@@ -6114,7 +6271,7 @@ var useStyles$p = makeStyles(function (theme) { return ({
6114
6271
  }); });
6115
6272
  var EditAssetDialog = function (_a) {
6116
6273
  var show = _a.show, onHide = _a.onHide;
6117
- var classes = useStyles$p();
6274
+ var classes = useStyles$n();
6118
6275
  var _b = useState(true), fullWidth = _b[0]; _b[1];
6119
6276
  var _c = useState("sm"), maxWidth = _c[0]; _c[1];
6120
6277
  var _d = useState(false), assetEditedSuccess = _d[0], setAssetEditedSuccess = _d[1];
@@ -6234,7 +6391,7 @@ var EditAssetDialog = function (_a) {
6234
6391
  React__default.createElement(Alert$2, { severity: "info", onClose: handleClose }, "Document created succesfully")))))))));
6235
6392
  };
6236
6393
 
6237
- var useStyles$o = makeStyles(function (theme) { return ({
6394
+ var useStyles$m = makeStyles(function (theme) { return ({
6238
6395
  root: {
6239
6396
  "& .input-group-text": {
6240
6397
  display: "none",
@@ -6278,7 +6435,7 @@ var useStyles$o = makeStyles(function (theme) { return ({
6278
6435
  }); });
6279
6436
  var RemoveAssetDialog = function (_a) {
6280
6437
  var show = _a.show, onHide = _a.onHide;
6281
- var classes = useStyles$o();
6438
+ var classes = useStyles$m();
6282
6439
  var _b = useState(true), fullWidth = _b[0]; _b[1];
6283
6440
  var _c = useState("sm"), maxWidth = _c[0]; _c[1];
6284
6441
  var _d = useState(false), assetRemovedSuccess = _d[0], setAssetRemovedSuccess = _d[1];
@@ -6337,7 +6494,7 @@ var RemoveAssetDialog = function (_a) {
6337
6494
  React__default.createElement(Alert$3, { severity: "info", onClose: handleClose }, "Asset removed succesfully"))));
6338
6495
  };
6339
6496
 
6340
- var useStyles$n = makeStyles(function (theme) { return ({
6497
+ var useStyles$l = makeStyles(function (theme) { return ({
6341
6498
  root: {
6342
6499
  "& .input-group-text": {
6343
6500
  display: "none",
@@ -6388,7 +6545,7 @@ var useStyles$n = makeStyles(function (theme) { return ({
6388
6545
  }); });
6389
6546
  var ViewerAssetDialog = function (_a) {
6390
6547
  var show = _a.show, onHide = _a.onHide;
6391
- var classes = useStyles$n();
6548
+ var classes = useStyles$l();
6392
6549
  var _b = useState(true), fullWidth = _b[0]; _b[1];
6393
6550
  var _c = useState("sm"), maxWidth = _c[0]; _c[1];
6394
6551
  var _d = useConfigurationAssetContext().state, dataToCreateAsset = _d.dataToCreateAsset, assetNodeSelectedInTree = _d.assetNodeSelectedInTree;
@@ -6567,7 +6724,7 @@ var TypeIcon = function (props) {
6567
6724
  }
6568
6725
  };
6569
6726
 
6570
- var useStyles$m = makeStyles(function (theme) { return ({
6727
+ var useStyles$k = makeStyles(function (theme) { return ({
6571
6728
  root: {
6572
6729
  alignItems: "center",
6573
6730
  backgroundColor: "#1967d2",
@@ -6592,7 +6749,7 @@ var useStyles$m = makeStyles(function (theme) { return ({
6592
6749
  }); });
6593
6750
  var CustomDragPreview$1 = function (props) {
6594
6751
  var _a;
6595
- var classes = useStyles$m();
6752
+ var classes = useStyles$k();
6596
6753
  var item = props.monitorProps.item;
6597
6754
  return (React__default.createElement("div", { className: classes.root },
6598
6755
  React__default.createElement("div", { className: classes.icon },
@@ -6600,7 +6757,7 @@ var CustomDragPreview$1 = function (props) {
6600
6757
  React__default.createElement("div", { className: classes.label }, item.text)));
6601
6758
  };
6602
6759
 
6603
- var useStyles$l = makeStyles(function (theme) { return ({
6760
+ var useStyles$j = makeStyles(function (theme) { return ({
6604
6761
  root: {
6605
6762
  alignItems: "center",
6606
6763
  display: "flex",
@@ -6647,7 +6804,7 @@ var CustomNode = function (_a) {
6647
6804
  var _c = useConfigurationAssetContext(), openAssets = _c.state.openAssets, setOpenAssets = _c.actions.setOpenAssets;
6648
6805
  var _d = props.node, id = _d.id, droppable = _d.droppable, data = _d.data;
6649
6806
  var indent = props.depth * 24;
6650
- var classes = useStyles$l();
6807
+ var classes = useStyles$j();
6651
6808
  var nodeClasses = "".concat(classes.customNodeRoot, " ").concat(classes.root, " ").concat(isSelected ? classes.selected : "");
6652
6809
  var handleClick = function (e) {
6653
6810
  props.onClick(e, props.node);
@@ -6702,7 +6859,7 @@ var CustomNode = function (_a) {
6702
6859
  React__default.createElement(Typography$1, { variant: "body2" }, props.node.text))));
6703
6860
  };
6704
6861
 
6705
- var useStyles$k = makeStyles(function (theme) { return ({
6862
+ var useStyles$i = makeStyles(function (theme) { return ({
6706
6863
  root: {
6707
6864
  alignItems: "flex-start",
6708
6865
  backgroundColor: "#1967d2",
@@ -6735,7 +6892,7 @@ var useStyles$k = makeStyles(function (theme) { return ({
6735
6892
  },
6736
6893
  }); });
6737
6894
  var MultipleDragPreview = function (props) {
6738
- var classes = useStyles$k();
6895
+ var classes = useStyles$i();
6739
6896
  return (React__default.createElement(Badge, { classes: { badge: classes.badge }, color: "error", badgeContent: props.dragSources.length, anchorOrigin: { vertical: "top", horizontal: "right" } },
6740
6897
  React__default.createElement("div", { className: classes.root, "data-testid": "custom-drag-preview" }, props.dragSources.map(function (node) {
6741
6898
  var _a;
@@ -6746,7 +6903,7 @@ var MultipleDragPreview = function (props) {
6746
6903
  }))));
6747
6904
  };
6748
6905
 
6749
- var useStyles$j = makeStyles(function (theme) { return ({
6906
+ var useStyles$h = makeStyles(function (theme) { return ({
6750
6907
  root: {},
6751
6908
  contextMenu: {
6752
6909
  backgroundColor: "#F8F8F8",
@@ -6792,7 +6949,7 @@ var useStyles$j = makeStyles(function (theme) { return ({
6792
6949
  }); });
6793
6950
  var AssetViewComponent = function () {
6794
6951
  var _a = useState([]), selectedNodes = _a[0], setSelectedNodes = _a[1];
6795
- var classes = useStyles$j();
6952
+ var classes = useStyles$h();
6796
6953
  var _b = useState(false), isDragging = _b[0], setIsDragging = _b[1];
6797
6954
  var _c = useState(false), isCtrlPressing = _c[0], setIsCtrlPressing = _c[1];
6798
6955
  var _d = useState(false), isDoubleClick = _d[0], setIsDoubleClick = _d[1];
@@ -7011,200 +7168,6 @@ var AssetPage = function (props) {
7011
7168
  React.createElement(ConfigurationAssetPage, null)));
7012
7169
  };
7013
7170
 
7014
- var getUsers = function () { return __awaiter(void 0, void 0, void 0, function () {
7015
- var apiService, resp;
7016
- return __generator(this, function (_a) {
7017
- switch (_a.label) {
7018
- case 0:
7019
- apiService = new MESApiService();
7020
- return [4 /*yield*/, apiService.callV2("[SEC].[GetUsers]", [])];
7021
- case 1:
7022
- resp = _a.sent();
7023
- return [2 /*return*/, resp];
7024
- }
7025
- });
7026
- }); };
7027
- var getDataUser = function (UserId) { return __awaiter(void 0, void 0, void 0, function () {
7028
- var apiService, parameters, resp;
7029
- return __generator(this, function (_a) {
7030
- switch (_a.label) {
7031
- case 0:
7032
- apiService = new MESApiService();
7033
- parameters = [];
7034
- parameters.push({ name: "UserId", value: UserId });
7035
- parameters.push({ name: "UserName", value: null });
7036
- return [4 /*yield*/, apiService.callV2("[SEC].[GetUser]", parameters)];
7037
- case 1:
7038
- resp = _a.sent();
7039
- return [2 /*return*/, resp];
7040
- }
7041
- });
7042
- }); };
7043
- var getProfiles = function () { return __awaiter(void 0, void 0, void 0, function () {
7044
- var apiService, resp;
7045
- return __generator(this, function (_a) {
7046
- switch (_a.label) {
7047
- case 0:
7048
- apiService = new MESApiService();
7049
- return [4 /*yield*/, apiService.callV2("[SEC].[GetProfiles]", [])];
7050
- case 1:
7051
- resp = _a.sent();
7052
- return [2 /*return*/, resp];
7053
- }
7054
- });
7055
- }); };
7056
- var deleteUser = function (userId) { return __awaiter(void 0, void 0, void 0, function () {
7057
- var apiService, parameters, resp;
7058
- return __generator(this, function (_a) {
7059
- switch (_a.label) {
7060
- case 0:
7061
- apiService = new MESApiService();
7062
- parameters = [];
7063
- parameters.push({ name: "UserId", value: userId });
7064
- return [4 /*yield*/, apiService.callV2("[SEC].[DeleteUser]", parameters)];
7065
- case 1:
7066
- resp = _a.sent();
7067
- return [2 /*return*/, resp];
7068
- }
7069
- });
7070
- }); };
7071
- var setPassword = function (userId, password) { return __awaiter(void 0, void 0, void 0, function () {
7072
- var apiService, resp, e_1;
7073
- return __generator(this, function (_a) {
7074
- switch (_a.label) {
7075
- case 0:
7076
- apiService = new MESApiService();
7077
- _a.label = 1;
7078
- case 1:
7079
- _a.trys.push([1, 3, , 4]);
7080
- return [4 /*yield*/, apiService.changePassword(userId.toString(), password)];
7081
- case 2:
7082
- resp = _a.sent();
7083
- return [2 /*return*/, {
7084
- ok: true,
7085
- data: resp,
7086
- }];
7087
- case 3:
7088
- e_1 = _a.sent();
7089
- return [2 /*return*/, { ok: false, message: e_1.toString() }];
7090
- case 4: return [2 /*return*/];
7091
- }
7092
- });
7093
- }); };
7094
- var upsertUser = function (user) { return __awaiter(void 0, void 0, void 0, function () {
7095
- var apiService, parameters, resp;
7096
- return __generator(this, function (_a) {
7097
- switch (_a.label) {
7098
- case 0:
7099
- apiService = new MESApiService();
7100
- parameters = [];
7101
- parameters.push({ name: "UserId", value: user.UserId });
7102
- parameters.push({ name: "UserName", value: user.UserName });
7103
- parameters.push({ name: "Name", value: user.FirstName });
7104
- parameters.push({ name: "LastName", value: user.LastName });
7105
- parameters.push({ name: "AuthTypeId", value: user.AuthTypeId });
7106
- parameters.push({ name: "IsActive", value: user.IsActive });
7107
- parameters.push({ name: "DefaultAssetId", value: user.DefaultAssetId });
7108
- return [4 /*yield*/, apiService.callV2("[SEC].[UpsertUser]", parameters)];
7109
- case 1:
7110
- resp = _a.sent();
7111
- return [2 /*return*/, resp];
7112
- }
7113
- });
7114
- }); };
7115
- var getAuthTypes = function () { return __awaiter(void 0, void 0, void 0, function () {
7116
- var apiService, resp;
7117
- return __generator(this, function (_a) {
7118
- switch (_a.label) {
7119
- case 0:
7120
- apiService = new MESApiService();
7121
- return [4 /*yield*/, apiService.callV2("[SEC].[GetAuthTypes]", [])];
7122
- case 1:
7123
- resp = _a.sent();
7124
- return [2 /*return*/, resp];
7125
- }
7126
- });
7127
- }); };
7128
- var setProfilesToUser = function (UserId, profileIds) { return __awaiter(void 0, void 0, void 0, function () {
7129
- var apiService, parameters, resp;
7130
- return __generator(this, function (_a) {
7131
- switch (_a.label) {
7132
- case 0:
7133
- apiService = new MESApiService();
7134
- parameters = [];
7135
- parameters.push({ name: "UserId", value: UserId });
7136
- parameters.push({ name: "ProfileIds", value: profileIds.join(" , ") });
7137
- return [4 /*yield*/, apiService.callV2("[SEC].[setProfilesToUser]", parameters)];
7138
- case 1:
7139
- resp = _a.sent();
7140
- return [2 /*return*/, resp];
7141
- }
7142
- });
7143
- }); };
7144
- var getUserPermissionsFromAPI = function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {
7145
- var apiService, parameters, resp, rows;
7146
- var _c = _b.UserId, UserId = _c === void 0 ? null : _c, _d = _b.UserName, UserName = _d === void 0 ? null : _d;
7147
- return __generator(this, function (_e) {
7148
- switch (_e.label) {
7149
- case 0:
7150
- apiService = new MESApiService();
7151
- parameters = [];
7152
- parameters.push({ name: "UserId", value: UserId });
7153
- parameters.push({ name: "UserName", value: UserName });
7154
- return [4 /*yield*/, apiService.callV2("SEC.GetPermissions", parameters)];
7155
- case 1:
7156
- resp = _e.sent();
7157
- rows = get(resp, "data.tables[0].rows", []);
7158
- return [2 /*return*/, rows[0] ? rows[0] : null];
7159
- }
7160
- });
7161
- }); };
7162
-
7163
- var ChangePassword$1 = function (_a) {
7164
- var show = _a.show, userId = _a.userId, onHide = _a.onHide;
7165
- var _b = useState(""), password = _b[0], setPasswordText = _b[1];
7166
- var _c = useState(false), isDirty = _c[0], setIsDirty = _c[1];
7167
- var handleSubmit = useCallback(function (ev) { return __awaiter(void 0, void 0, void 0, function () {
7168
- return __generator(this, function (_a) {
7169
- switch (_a.label) {
7170
- case 0:
7171
- ev.preventDefault();
7172
- return [4 /*yield*/, setPassword(userId, password)];
7173
- case 1:
7174
- _a.sent();
7175
- onHide(true);
7176
- return [2 /*return*/];
7177
- }
7178
- });
7179
- }); }, [userId, password]);
7180
- useEffect(function () {
7181
- if (show) {
7182
- setPasswordText("");
7183
- setIsDirty(false);
7184
- }
7185
- }, [show]);
7186
- if (userId) {
7187
- return (React.createElement(React.Fragment, null,
7188
- React.createElement(MesfModal, { title: "Change password", open: show, handleClose: function () { return onHide(false); }, maxWidth: "lg" },
7189
- React.createElement(Grid, { container: true },
7190
- React.createElement(Grid, { item: true, md: 12, xs: 12 },
7191
- React.createElement(MesfModal.Content, { style: { padding: "6px 16px 16px" } },
7192
- React.createElement("form", { onSubmit: handleSubmit },
7193
- React.createElement(Grid, { item: true, md: 12, xs: 12 },
7194
- React.createElement(TextField, { label: "New Password", value: password, onChange: function (el) {
7195
- setIsDirty(true);
7196
- setPasswordText(el.target.value);
7197
- }, variant: "outlined", error: isEmpty(password) && isDirty, fullWidth: true,
7198
- // margin="dense"
7199
- autoComplete: "off" })),
7200
- React.createElement(Grid, { item: true, md: 12, xs: 12, style: { marginTop: 15 } },
7201
- React.createElement(Button, { fullWidth: true, variant: "contained", color: "primary", type: "submit" }, "APPLY")))))))));
7202
- }
7203
- else {
7204
- return React.createElement(React.Fragment, null);
7205
- }
7206
- };
7207
-
7208
7171
  var INITIAL_VALUES$1 = {
7209
7172
  UserId: null,
7210
7173
  UserName: "",
@@ -7220,18 +7183,38 @@ var INITIAL_VALUES$1 = {
7220
7183
 
7221
7184
  var AssetSelector = function (_a) {
7222
7185
  var value = _a.value, onChange = _a.onChange, _b = _a.disabled, disabled = _b === void 0 ? false : _b;
7223
- var areasList = useAssetContext().state.areasList;
7186
+ var _c = useAssetContext().state, areasList = _c.areasList, plantAssetId = _c.plantAssetId;
7187
+ var hasAssets = areasList && areasList.length > 0;
7188
+ var displayValue = React__default.useMemo(function () {
7189
+ if (!hasAssets) {
7190
+ return "";
7191
+ }
7192
+ if (isNil$1(value)) {
7193
+ return plantAssetId;
7194
+ }
7195
+ return value;
7196
+ }, [value, hasAssets, plantAssetId]);
7197
+ var handleChange = function (event) {
7198
+ var selectedValue = event.target.value;
7199
+ if (selectedValue === "") {
7200
+ onChange(null);
7201
+ }
7202
+ else {
7203
+ onChange(Number(selectedValue));
7204
+ }
7205
+ };
7206
+ React__default.useEffect(function () {
7207
+ if (isNil$1(value)) {
7208
+ onChange(plantAssetId);
7209
+ }
7210
+ }, [value, onChange, plantAssetId]);
7224
7211
  return (React__default.createElement(FormControl, { variant: "outlined", fullWidth: true, margin: "dense", disabled: disabled },
7225
7212
  React__default.createElement(InputLabel, null, "Default Asset"),
7226
- React__default.createElement(Select, { value: value || "", onChange: function (e) {
7227
- return onChange(e.target.value ? Number(e.target.value) : null);
7228
- }, label: "Default Asset" },
7229
- React__default.createElement(MenuItem, { value: "" },
7230
- React__default.createElement("em", null, "None")),
7231
- areasList.map(function (area) { return (React__default.createElement(MenuItem, { key: area === null || area === void 0 ? void 0 : area.AssetId, value: area === null || area === void 0 ? void 0 : area.AssetId }, area === null || area === void 0 ? void 0 : area.AssetName)); }))));
7213
+ React__default.createElement(Select, { value: displayValue, onChange: handleChange, label: "Default Asset" }, !hasAssets ? (React__default.createElement(MenuItem, { value: "" },
7214
+ React__default.createElement("em", null, "None"))) : (areasList.map(function (area) { return (React__default.createElement(MenuItem, { key: area === null || area === void 0 ? void 0 : area.AssetId, value: area === null || area === void 0 ? void 0 : area.AssetId }, area === null || area === void 0 ? void 0 : area.AssetName)); })))));
7232
7215
  };
7233
7216
 
7234
- var useStyles$i = makeStyles(function (theme) { return ({
7217
+ var useStyles$g = makeStyles(function (theme) { return ({
7235
7218
  root: {
7236
7219
  "& .MuiSelect-select": {
7237
7220
  minHeight: "40px",
@@ -7264,7 +7247,7 @@ var MenuProps$1 = {
7264
7247
  };
7265
7248
  var AuthTypeSelector = function (_a) {
7266
7249
  var value = _a.value, onChange = _a.onChange, disabled = _a.disabled;
7267
- var classes = useStyles$i();
7250
+ var classes = useStyles$g();
7268
7251
  var _b = useState([]), authTypes = _b[0], setAuthTypes = _b[1];
7269
7252
  var _c = useState(true), isLoading = _c[0], setIsLoading = _c[1];
7270
7253
  var theme = useTheme();
@@ -7300,7 +7283,7 @@ var AuthTypeSelector = function (_a) {
7300
7283
  React.createElement(Chip, { key: "selected-authType-".concat(selected), label: selectedAuthTypeName, className: classes.chip }))); }, MenuProps: MenuProps$1 }, authTypes.map(function (authType) { return (React.createElement(MenuItem, { key: "auth-".concat(authType.AuthTypeId), value: authType.AuthTypeId, style: getStyles(authType.AuthTypeId, authTypes, theme) }, authType.Name)); })))) : (React.createElement(React.Fragment, null))));
7301
7284
  };
7302
7285
 
7303
- var useStyles$h = makeStyles(function (theme) { return ({
7286
+ var useStyles$f = makeStyles(function (theme) { return ({
7304
7287
  root: {
7305
7288
  "& .MuiSelect-select": {
7306
7289
  height: "auto",
@@ -7341,7 +7324,7 @@ var MenuProps = {
7341
7324
  };
7342
7325
  var ProfilesPicker = function (_a) {
7343
7326
  var value = _a.value, onChange = _a.onChange; _a.userIdForDelete; var setprofileError = _a.setprofileError, disabled = _a.disabled;
7344
- var classes = useStyles$h();
7327
+ var classes = useStyles$f();
7345
7328
  var theme = useTheme();
7346
7329
  var _b = useState(true), isLoading = _b[0], setIsLoading = _b[1];
7347
7330
  var _c = useState([]), profiles = _c[0], setProfiles = _c[1];
@@ -7382,7 +7365,7 @@ var ProfilesPicker = function (_a) {
7382
7365
  React__default.createElement(Select, { autoWidth: true, labelId: "demo-mutiple-chip-label", id: "demo-mutiple-chip", multiple: true, value: value, onChange: onChange, input: React__default.createElement(Input, { id: "select-multiple-chip" }), renderValue: function (selected) { return (React__default.createElement("div", { className: classes.chips }, selected.map(function (profileId) { return (React__default.createElement(Chip, { key: "selected-profile-".concat(profileId), label: getProfileNameById(profileId), className: classes.chip })); }))); }, MenuProps: MenuProps }, profiles.map(function (profile) { return (React__default.createElement(MenuItem, { key: "profile-".concat(profile.ProfileId), value: profile.ProfileId, style: getStyles(profile.ProfileId, profiles, theme) }, profile.ProfileName.replaceAll("Profile", ""))); })))) : (React__default.createElement(React__default.Fragment, null))));
7383
7366
  };
7384
7367
 
7385
- var useStyles$g = makeStyles(function (theme) { return ({
7368
+ var useStyles$e = makeStyles(function (theme) { return ({
7386
7369
  checkbox: {
7387
7370
  userSelect: "none",
7388
7371
  },
@@ -7404,7 +7387,7 @@ var CreateUser = function (_a) {
7404
7387
  var _f = useState(false), isSubmitLoading = _f[0], setIsSubmitLoading = _f[1];
7405
7388
  var _g = useState(""), error = _g[0], setError = _g[1];
7406
7389
  var _h = useState(""), profileError = _h[0], setprofileError = _h[1];
7407
- var classes = useStyles$g();
7390
+ var classes = useStyles$e();
7408
7391
  var _j = useForm({ defaultValues: INITIAL_VALUES$1 }), register = _j.register, control = _j.control, handleSubmit = _j.handleSubmit, reset = _j.reset, watch = _j.watch, errors = _j.formState.errors;
7409
7392
  var handleClose = function (event, reason) {
7410
7393
  if (reason === "clickaway") {
@@ -7933,7 +7916,7 @@ function useToken() {
7933
7916
  };
7934
7917
  }
7935
7918
 
7936
- var useStyles$f = makeStyles(function (theme) { return ({
7919
+ var useStyles$d = makeStyles(function (theme) { return ({
7937
7920
  checkbox: {
7938
7921
  userSelect: "none",
7939
7922
  },
@@ -7952,7 +7935,7 @@ var useStyles$f = makeStyles(function (theme) { return ({
7952
7935
  var EditUser = function (_a) {
7953
7936
  var _b, _c, _d;
7954
7937
  var userId = _a.userId, show = _a.show, onHide = _a.onHide;
7955
- var classes = useStyles$f();
7938
+ var classes = useStyles$d();
7956
7939
  var _e = useState(false), open = _e[0], setOpen = _e[1];
7957
7940
  var _f = useState(false), isLoading = _f[0], setIsLoading = _f[1];
7958
7941
  var _g = useState(false), isSubmitLoading = _g[0], setIsSubmitLoading = _g[1];
@@ -8122,7 +8105,7 @@ var UsersProvider = function (_a) {
8122
8105
  return (React__default.createElement(UsersContext.Provider, { value: { state: state, actions: actions } }, children));
8123
8106
  };
8124
8107
 
8125
- var useStyles$e = makeStyles(function (theme) { return ({
8108
+ var useStyles$c = makeStyles(function (theme) { return ({
8126
8109
  buttons: {
8127
8110
  opacity: 0,
8128
8111
  transition: "opacity 0.1s ease-in-out",
@@ -8138,7 +8121,7 @@ var useStyles$e = makeStyles(function (theme) { return ({
8138
8121
  },
8139
8122
  }); });
8140
8123
  var buttonsCellRenderer = function (params) {
8141
- var classes = useStyles$e();
8124
+ var classes = useStyles$c();
8142
8125
  var setUserId = params.setUserId, setOpenModalEditDataUser = params.setOpenModalEditDataUser, setOpenModalDeleteUser = params.setOpenModalDeleteUser, setOpenModalChangePasswordd = params.setOpenModalChangePasswordd, showContextMenu = params.showContextMenu;
8143
8126
  return (React__default.createElement(Grid, { container: true, style: {
8144
8127
  height: "100%",
@@ -9156,49 +9139,121 @@ var MESApiService = /** @class */ (function () {
9156
9139
  return MESApiService;
9157
9140
  }());
9158
9141
 
9159
- var getUser = function (UserId, UserName) { return __awaiter(void 0, void 0, void 0, function () {
9160
- var apiService, parameters, resp;
9142
+ var getUsers = function () { return __awaiter(void 0, void 0, void 0, function () {
9143
+ var apiService, resp;
9161
9144
  return __generator(this, function (_a) {
9162
9145
  switch (_a.label) {
9163
9146
  case 0:
9164
9147
  apiService = new MESApiService();
9165
- parameters = [];
9166
- parameters.push({ name: "UserId", value: UserId });
9167
- parameters.push({ name: "UserName", value: UserName });
9168
- return [4 /*yield*/, apiService.callV2("[SEC].[GetUser]", parameters)];
9148
+ return [4 /*yield*/, apiService.callV2("[SEC].[GetUsers]", [])];
9169
9149
  case 1:
9170
9150
  resp = _a.sent();
9171
9151
  return [2 /*return*/, resp];
9172
9152
  }
9173
9153
  });
9174
9154
  }); };
9175
- var getAssets = function () { return __awaiter(void 0, void 0, void 0, function () {
9176
- var apiService, resp;
9155
+ var getDataUser = function (UserId) { return __awaiter(void 0, void 0, void 0, function () {
9156
+ var apiService, parameters, resp;
9177
9157
  return __generator(this, function (_a) {
9178
9158
  switch (_a.label) {
9179
9159
  case 0:
9180
9160
  apiService = new MESApiService();
9181
- return [4 /*yield*/, apiService.callV2("[MES].[GetAssets]", [])];
9161
+ parameters = [];
9162
+ parameters.push({ name: "UserId", value: UserId });
9163
+ parameters.push({ name: "UserName", value: null });
9164
+ return [4 /*yield*/, apiService.callV2("[SEC].[GetUser]", parameters)];
9182
9165
  case 1:
9183
9166
  resp = _a.sent();
9184
9167
  return [2 /*return*/, resp];
9185
9168
  }
9186
9169
  });
9187
9170
  }); };
9188
- var getUTLSettings = function () { return __awaiter(void 0, void 0, void 0, function () {
9171
+ var getProfiles = function () { return __awaiter(void 0, void 0, void 0, function () {
9189
9172
  var apiService, resp;
9190
9173
  return __generator(this, function (_a) {
9191
9174
  switch (_a.label) {
9192
9175
  case 0:
9193
9176
  apiService = new MESApiService();
9194
- return [4 /*yield*/, apiService.callV2("[UTL].[GetSettings]", [])];
9177
+ return [4 /*yield*/, apiService.callV2("[SEC].[GetProfiles]", [])];
9195
9178
  case 1:
9196
9179
  resp = _a.sent();
9197
9180
  return [2 /*return*/, resp];
9198
9181
  }
9199
9182
  });
9200
9183
  }); };
9201
- var upsertDefaultAreaId = function (UserId, DefaultAreaId) { return __awaiter(void 0, void 0, void 0, function () {
9184
+ var deleteUser = function (userId) { return __awaiter(void 0, void 0, void 0, function () {
9185
+ var apiService, parameters, resp;
9186
+ return __generator(this, function (_a) {
9187
+ switch (_a.label) {
9188
+ case 0:
9189
+ apiService = new MESApiService();
9190
+ parameters = [];
9191
+ parameters.push({ name: "UserId", value: userId });
9192
+ return [4 /*yield*/, apiService.callV2("[SEC].[DeleteUser]", parameters)];
9193
+ case 1:
9194
+ resp = _a.sent();
9195
+ return [2 /*return*/, resp];
9196
+ }
9197
+ });
9198
+ }); };
9199
+ var setPassword = function (userId, password) { return __awaiter(void 0, void 0, void 0, function () {
9200
+ var apiService, resp, e_1;
9201
+ return __generator(this, function (_a) {
9202
+ switch (_a.label) {
9203
+ case 0:
9204
+ apiService = new MESApiService();
9205
+ _a.label = 1;
9206
+ case 1:
9207
+ _a.trys.push([1, 3, , 4]);
9208
+ return [4 /*yield*/, apiService.changePassword(userId.toString(), password)];
9209
+ case 2:
9210
+ resp = _a.sent();
9211
+ return [2 /*return*/, {
9212
+ ok: true,
9213
+ data: resp,
9214
+ }];
9215
+ case 3:
9216
+ e_1 = _a.sent();
9217
+ return [2 /*return*/, { ok: false, message: e_1.toString() }];
9218
+ case 4: return [2 /*return*/];
9219
+ }
9220
+ });
9221
+ }); };
9222
+ var upsertUser = function (user) { return __awaiter(void 0, void 0, void 0, function () {
9223
+ var apiService, parameters, resp;
9224
+ return __generator(this, function (_a) {
9225
+ switch (_a.label) {
9226
+ case 0:
9227
+ apiService = new MESApiService();
9228
+ parameters = [];
9229
+ parameters.push({ name: "UserId", value: user.UserId });
9230
+ parameters.push({ name: "UserName", value: user.UserName });
9231
+ parameters.push({ name: "Name", value: user.FirstName });
9232
+ parameters.push({ name: "LastName", value: user.LastName });
9233
+ parameters.push({ name: "AuthTypeId", value: user.AuthTypeId });
9234
+ parameters.push({ name: "IsActive", value: user.IsActive });
9235
+ parameters.push({ name: "DefaultAssetId", value: user.DefaultAssetId });
9236
+ return [4 /*yield*/, apiService.callV2("[SEC].[UpsertUser]", parameters)];
9237
+ case 1:
9238
+ resp = _a.sent();
9239
+ return [2 /*return*/, resp];
9240
+ }
9241
+ });
9242
+ }); };
9243
+ var getAuthTypes = function () { return __awaiter(void 0, void 0, void 0, function () {
9244
+ var apiService, resp;
9245
+ return __generator(this, function (_a) {
9246
+ switch (_a.label) {
9247
+ case 0:
9248
+ apiService = new MESApiService();
9249
+ return [4 /*yield*/, apiService.callV2("[SEC].[GetAuthTypes]", [])];
9250
+ case 1:
9251
+ resp = _a.sent();
9252
+ return [2 /*return*/, resp];
9253
+ }
9254
+ });
9255
+ }); };
9256
+ var setProfilesToUser = function (UserId, profileIds) { return __awaiter(void 0, void 0, void 0, function () {
9202
9257
  var apiService, parameters, resp;
9203
9258
  return __generator(this, function (_a) {
9204
9259
  switch (_a.label) {
@@ -9206,85 +9261,206 @@ var upsertDefaultAreaId = function (UserId, DefaultAreaId) { return __awaiter(vo
9206
9261
  apiService = new MESApiService();
9207
9262
  parameters = [];
9208
9263
  parameters.push({ name: "UserId", value: UserId });
9209
- parameters.push({ name: "DefaultAssetId", value: DefaultAreaId });
9210
- return [4 /*yield*/, apiService.callV2("[SEC].[UpsertDefaultAssetId]", parameters)];
9264
+ parameters.push({ name: "ProfileIds", value: profileIds.join(" , ") });
9265
+ return [4 /*yield*/, apiService.callV2("[SEC].[setProfilesToUser]", parameters)];
9211
9266
  case 1:
9212
9267
  resp = _a.sent();
9213
9268
  return [2 /*return*/, resp];
9214
9269
  }
9215
9270
  });
9216
9271
  }); };
9272
+ var getUserPermissionsFromAPI = function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {
9273
+ var apiService, parameters, resp, rows;
9274
+ var _c = _b.UserId, UserId = _c === void 0 ? null : _c, _d = _b.UserName, UserName = _d === void 0 ? null : _d;
9275
+ return __generator(this, function (_e) {
9276
+ switch (_e.label) {
9277
+ case 0:
9278
+ apiService = new MESApiService();
9279
+ parameters = [];
9280
+ parameters.push({ name: "UserId", value: UserId });
9281
+ parameters.push({ name: "UserName", value: UserName });
9282
+ return [4 /*yield*/, apiService.callV2("SEC.GetPermissions", parameters)];
9283
+ case 1:
9284
+ resp = _e.sent();
9285
+ rows = get(resp, "data.tables[0].rows", []);
9286
+ return [2 /*return*/, rows[0] ? rows[0] : null];
9287
+ }
9288
+ });
9289
+ }); };
9290
+
9291
+ var ChangePassword$1 = function (_a) {
9292
+ var show = _a.show, userId = _a.userId, onHide = _a.onHide;
9293
+ var _b = useState(""), password = _b[0], setPasswordText = _b[1];
9294
+ var _c = useState(false), isDirty = _c[0], setIsDirty = _c[1];
9295
+ var handleSubmit = useCallback(function (ev) { return __awaiter(void 0, void 0, void 0, function () {
9296
+ return __generator(this, function (_a) {
9297
+ switch (_a.label) {
9298
+ case 0:
9299
+ ev.preventDefault();
9300
+ return [4 /*yield*/, setPassword(userId, password)];
9301
+ case 1:
9302
+ _a.sent();
9303
+ onHide(true);
9304
+ return [2 /*return*/];
9305
+ }
9306
+ });
9307
+ }); }, [userId, password]);
9308
+ useEffect(function () {
9309
+ if (show) {
9310
+ setPasswordText("");
9311
+ setIsDirty(false);
9312
+ }
9313
+ }, [show]);
9314
+ if (userId) {
9315
+ return (React.createElement(React.Fragment, null,
9316
+ React.createElement(MesfModal, { title: "Change password", open: show, handleClose: function () { return onHide(false); }, maxWidth: "lg" },
9317
+ React.createElement(Grid, { container: true },
9318
+ React.createElement(Grid, { item: true, md: 12, xs: 12 },
9319
+ React.createElement(MesfModal.Content, { style: { padding: "6px 16px 16px" } },
9320
+ React.createElement("form", { onSubmit: handleSubmit },
9321
+ React.createElement(Grid, { item: true, md: 12, xs: 12 },
9322
+ React.createElement(TextField, { label: "New Password", value: password, onChange: function (el) {
9323
+ setIsDirty(true);
9324
+ setPasswordText(el.target.value);
9325
+ }, variant: "outlined", error: isEmpty(password) && isDirty, fullWidth: true,
9326
+ // margin="dense"
9327
+ autoComplete: "off" })),
9328
+ React.createElement(Grid, { item: true, md: 12, xs: 12, style: { marginTop: 15 } },
9329
+ React.createElement(Button, { fullWidth: true, variant: "contained", color: "primary", type: "submit" }, "APPLY")))))))));
9330
+ }
9331
+ else {
9332
+ return React.createElement(React.Fragment, null);
9333
+ }
9334
+ };
9217
9335
 
9218
- var useStyles$d = makeStyles$1(function (theme) { return ({
9219
- root: {
9220
- padding: theme.spacing(3),
9221
- },
9222
- paper: {
9223
- padding: theme.spacing(3),
9224
- marginBottom: theme.spacing(3),
9225
- },
9226
- title: {
9227
- marginBottom: theme.spacing(2),
9228
- },
9229
- formRow: {
9230
- marginBottom: theme.spacing(2),
9231
- },
9232
- changePasswordButton: {
9233
- marginLeft: theme.spacing(2),
9234
- },
9235
- textArea: {
9236
- width: "100%",
9237
- height: "50vh",
9238
- padding: theme.spacing(1),
9239
- fontFamily: "inherit",
9240
- border: "1px solid ".concat(theme.palette.divider),
9241
- borderRadius: 4,
9242
- backgroundColor: theme.palette.action.disabledBackground,
9243
- },
9244
- successMessage: {
9245
- padding: theme.spacing(1),
9246
- marginBottom: theme.spacing(2),
9247
- backgroundColor: theme.palette.success.light,
9248
- color: theme.palette.success.contrastText,
9249
- borderRadius: 4,
9250
- },
9251
- }); });
9252
9336
  var Account = function () {
9253
- var classes = useStyles$d();
9254
- var _a = useState(""), error = _a[0], setError = _a[1];
9255
- var _b = useState(""), userLastName = _b[0], setUserLastName = _b[1];
9256
- var _c = useState(""), userFirstName = _c[0], setUserFirstName = _c[1];
9257
- var user = useState(function () {
9337
+ var _a = useToken(), getUserId = _a.getUserId; _a.getUserName; _a.getFirstName; _a.getLastName;
9338
+ var getUserNameFromStorage = function () {
9258
9339
  var sessionData = localStorage.getItem("userMESData");
9259
- return JSON.parse(sessionData || "{}");
9260
- })[0];
9261
- var _d = useState(""), userName = _d[0], setUserName = _d[1];
9262
- var _e = useState(false), userIsDomain = _e[0], setUserIsDomain = _e[1];
9263
- var _f = useState(false), userIsActive = _f[0], setUserIsActive = _f[1];
9264
- var _g = useState(""), userProfiles = _g[0], setUserProfiles = _g[1];
9265
- var _h = useState(""), userPermissions = _h[0], setUserPermissions = _h[1];
9266
- var _j = useState(""), userProcedures = _j[0], setUserProcedures = _j[1];
9267
- var _k = useState(false); _k[0]; _k[1];
9268
- var _l = useState(false), showSuccess = _l[0], setShowSuccess = _l[1];
9269
- var _m = useState(""), successMessage = _m[0], setSuccessMessage = _m[1];
9340
+ if (sessionData) {
9341
+ var userData = JSON.parse(sessionData);
9342
+ return (userData.userName || userData.UserName || userData.username || null);
9343
+ }
9344
+ return null;
9345
+ };
9346
+ var _b = useState(""), error = _b[0], setError = _b[1];
9347
+ var _c = useState(""), userName = _c[0], setUserName = _c[1];
9348
+ var _d = useState(""), userFirstName = _d[0], setUserFirstName = _d[1];
9349
+ var _e = useState(""), userLastName = _e[0], setUserLastName = _e[1];
9350
+ var _f = useState(false), userIsDomain = _f[0], setUserIsDomain = _f[1];
9351
+ var _g = useState(false), userIsActive = _g[0], setUserIsActive = _g[1];
9352
+ var _h = useState(""), userProfiles = _h[0], setUserProfiles = _h[1];
9353
+ var _j = useState(""), userPermissions = _j[0], setUserPermissions = _j[1];
9354
+ var _k = useState(""), userProcedures = _k[0], setUserProcedures = _k[1];
9355
+ var _l = useState(""), editFirstName = _l[0], setEditFirstName = _l[1];
9356
+ var _m = useState(""), editLastName = _m[0], setEditLastName = _m[1];
9357
+ var _o = useState(false), isSaving = _o[0], setIsSaving = _o[1];
9358
+ var _p = useState(false), showPasswordModal = _p[0], setShowPasswordModal = _p[1];
9359
+ var _q = useState(false), showSuccess = _q[0], setShowSuccess = _q[1];
9360
+ var _r = useState(""), successMessage = _r[0], setSuccessMessage = _r[1];
9361
+ var hasChanges = function () {
9362
+ return editFirstName !== userFirstName || editLastName !== userLastName;
9363
+ };
9364
+ var handleSave = function () { return __awaiter(void 0, void 0, void 0, function () {
9365
+ var userId, user, resp, sessionData, userData, err_1;
9366
+ return __generator(this, function (_a) {
9367
+ switch (_a.label) {
9368
+ case 0:
9369
+ if (!hasChanges() || !editFirstName.trim() || !editLastName.trim())
9370
+ return [2 /*return*/];
9371
+ setIsSaving(true);
9372
+ _a.label = 1;
9373
+ case 1:
9374
+ _a.trys.push([1, 3, 4, 5]);
9375
+ userId = getUserId();
9376
+ user = {
9377
+ UserId: userId,
9378
+ UserName: userName,
9379
+ FirstName: editFirstName.trim(),
9380
+ LastName: editLastName.trim(),
9381
+ AuthTypeId: userIsDomain ? 1 : 0,
9382
+ IsActive: userIsActive,
9383
+ LastLogin: null,
9384
+ DefaultAssetId: null,
9385
+ ProfilesId: "",
9386
+ Profiles: "",
9387
+ };
9388
+ return [4 /*yield*/, upsertUser(user)];
9389
+ case 2:
9390
+ resp = _a.sent();
9391
+ if (resp.ok) {
9392
+ setUserFirstName(editFirstName.trim());
9393
+ setUserLastName(editLastName.trim());
9394
+ sessionData = localStorage.getItem("userMESData");
9395
+ if (sessionData) {
9396
+ userData = JSON.parse(sessionData);
9397
+ userData.firstName = editFirstName.trim();
9398
+ userData.lastName = editLastName.trim();
9399
+ localStorage.setItem("userMESData", JSON.stringify(userData));
9400
+ }
9401
+ setShowSuccess(true);
9402
+ setSuccessMessage("Profile updated successfully.");
9403
+ }
9404
+ else {
9405
+ setError(resp.message || "Failed to update profile");
9406
+ }
9407
+ return [3 /*break*/, 5];
9408
+ case 3:
9409
+ err_1 = _a.sent();
9410
+ setError(err_1.toString());
9411
+ return [3 /*break*/, 5];
9412
+ case 4:
9413
+ setIsSaving(false);
9414
+ return [7 /*endfinally*/];
9415
+ case 5: return [2 /*return*/];
9416
+ }
9417
+ });
9418
+ }); };
9419
+ var handlePasswordChange = function (success) {
9420
+ setShowPasswordModal(false);
9421
+ if (success) {
9422
+ setShowSuccess(true);
9423
+ setSuccessMessage("Password changed successfully.");
9424
+ }
9425
+ };
9426
+ var handleKeyDown = function (e) {
9427
+ if (e.key === "Enter" &&
9428
+ hasChanges() &&
9429
+ editFirstName.trim() &&
9430
+ editLastName.trim() &&
9431
+ !isSaving) {
9432
+ handleSave();
9433
+ }
9434
+ };
9270
9435
  var stringToList = function (s) {
9271
9436
  s = s.replace(/,/g, "\n");
9272
9437
  s = s.replace(/ *\([^)]*\) */g, "");
9273
9438
  return s;
9274
9439
  };
9275
9440
  var loadUserData = function () { return __awaiter(void 0, void 0, void 0, function () {
9276
- var resp, userData;
9441
+ var userId, currentUserName, resp, userData, firstName, lastName;
9277
9442
  var _a, _b, _c, _d, _e, _f, _g, _h;
9278
9443
  return __generator(this, function (_j) {
9279
9444
  switch (_j.label) {
9280
- case 0: return [4 /*yield*/, getUser(user.UserId, user.UserName)];
9445
+ case 0:
9446
+ userId = getUserId();
9447
+ currentUserName = getUserNameFromStorage();
9448
+ if (!userId || userId === -1) {
9449
+ setError("UserId is NULL. Please login again.");
9450
+ return [2 /*return*/];
9451
+ }
9452
+ return [4 /*yield*/, getUser(userId, currentUserName)];
9281
9453
  case 1:
9282
9454
  resp = _j.sent();
9283
9455
  if (resp.ok) {
9284
9456
  userData = get(resp, "data.tables[0].rows", null);
9285
- setUserName((_a = userData[0]) === null || _a === void 0 ? void 0 : _a.UserName);
9286
- setUserLastName((_b = userData[0]) === null || _b === void 0 ? void 0 : _b.LastName);
9287
- setUserFirstName((_c = userData[0]) === null || _c === void 0 ? void 0 : _c.FirstName);
9457
+ firstName = ((_a = userData[0]) === null || _a === void 0 ? void 0 : _a.FirstName) || "";
9458
+ lastName = ((_b = userData[0]) === null || _b === void 0 ? void 0 : _b.LastName) || "";
9459
+ setUserName((_c = userData[0]) === null || _c === void 0 ? void 0 : _c.UserName);
9460
+ setUserFirstName(firstName);
9461
+ setUserLastName(lastName);
9462
+ setEditFirstName(firstName);
9463
+ setEditLastName(lastName);
9288
9464
  setUserIsDomain((_d = userData[0]) === null || _d === void 0 ? void 0 : _d.AuthTypeId);
9289
9465
  setUserIsActive((_e = userData[0]) === null || _e === void 0 ? void 0 : _e.IsActive);
9290
9466
  setUserProfiles(stringToList(((_f = userData[0]) === null || _f === void 0 ? void 0 : _f.Profiles) || ""));
@@ -9321,42 +9497,98 @@ var Account = function () {
9321
9497
  closeMessage();
9322
9498
  }
9323
9499
  }, [showSuccess]);
9324
- return (React__default.createElement(Box, { className: classes.root },
9325
- React__default.createElement(Paper, { className: classes.paper },
9326
- React__default.createElement(Typography$1, { variant: "h5", component: "h1", className: classes.title }, "Account Configuration"),
9327
- showSuccess && (React__default.createElement(Box, { className: classes.successMessage },
9328
- React__default.createElement(Typography$1, null, successMessage))),
9500
+ return (React__default.createElement(Box, { p: 3, maxWidth: "100%" },
9501
+ showSuccess && (React__default.createElement(Paper, { elevation: 2, style: {
9502
+ padding: 16,
9503
+ marginBottom: 16,
9504
+ backgroundColor: "#c8e6c9",
9505
+ color: "#1b5e20",
9506
+ display: "flex",
9507
+ alignItems: "center",
9508
+ } },
9509
+ React__default.createElement(Typography$1, null, successMessage))),
9510
+ React__default.createElement(Box, null,
9511
+ React__default.createElement(Typography$1, { variant: "h5", component: "h1", gutterBottom: true, style: { fontWeight: 600, marginBottom: 16 } }, "Account Configuration"),
9329
9512
  React__default.createElement(Grid, { container: true, spacing: 3 },
9330
9513
  React__default.createElement(Grid, { item: true, xs: 12, md: 6 },
9331
- React__default.createElement(Box, { display: "flex", alignItems: "center", className: classes.formRow },
9332
- React__default.createElement(TextField, { label: "Username", value: userName, variant: "outlined", size: "small", fullWidth: true, InputProps: {
9333
- readOnly: true,
9334
- } })),
9335
- React__default.createElement(Box, { className: classes.formRow },
9336
- React__default.createElement(TextField, { label: "Name", value: userFirstName, variant: "outlined", size: "small", fullWidth: true, InputProps: {
9337
- readOnly: true,
9338
- } })),
9339
- React__default.createElement(Box, { className: classes.formRow },
9340
- React__default.createElement(TextField, { label: "Lastname", value: userLastName, variant: "outlined", size: "small", fullWidth: true, InputProps: {
9341
- readOnly: true,
9342
- } })),
9343
- React__default.createElement(Box, { className: classes.formRow },
9344
- React__default.createElement(FormControlLabel, { control: React__default.createElement(Checkbox, { checked: userIsDomain, disabled: true }), label: "Domain User" })),
9345
- React__default.createElement(Box, { className: classes.formRow },
9346
- React__default.createElement(FormControlLabel, { control: React__default.createElement(Checkbox, { checked: userIsActive, disabled: true }), label: "Active" })))),
9347
- React__default.createElement(Grid, { container: true, spacing: 3 },
9348
- React__default.createElement(Grid, { item: true, xs: 12, md: 4 },
9349
- React__default.createElement(Typography$1, { variant: "h6", gutterBottom: true }, "Profiles"),
9350
- React__default.createElement("textarea", { className: classes.textArea, placeholder: userProfiles, readOnly: true, value: userProfiles })),
9351
- React__default.createElement(Grid, { item: true, xs: 12, md: 4 },
9352
- React__default.createElement(Typography$1, { variant: "h6", gutterBottom: true }, "Permissions"),
9353
- React__default.createElement("textarea", { className: classes.textArea, placeholder: userPermissions, readOnly: true, value: userPermissions })),
9354
- React__default.createElement(Grid, { item: true, xs: 12, md: 4 },
9355
- React__default.createElement(Typography$1, { variant: "h6", gutterBottom: true }, "Procedures"),
9356
- React__default.createElement("textarea", { className: classes.textArea, placeholder: userProcedures, readOnly: true, value: userProcedures })))),
9514
+ React__default.createElement(Paper, { style: { padding: 24, height: "100%", minHeight: "350px" } },
9515
+ React__default.createElement(Typography$1, { variant: "h6", gutterBottom: true, style: { marginBottom: 24, fontWeight: 600 } }, "Account Information"),
9516
+ React__default.createElement(Box, { mb: 2 },
9517
+ React__default.createElement(TextField, { label: "Username", value: userName, variant: "outlined", fullWidth: true, style: {
9518
+ pointerEvents: "none",
9519
+ cursor: "default",
9520
+ }, InputProps: {
9521
+ readOnly: true,
9522
+ }, tabIndex: -1 })),
9523
+ React__default.createElement(Box, { mt: 3, display: "flex", flexDirection: "column", style: { gap: 4 } },
9524
+ React__default.createElement(FormControlLabel, { control: React__default.createElement(Checkbox, { checked: userIsDomain, disabled: true }), label: "Domain User" }),
9525
+ React__default.createElement(FormControlLabel, { control: React__default.createElement(Checkbox, { checked: userIsActive, disabled: true }), label: "Active Account" })))),
9526
+ React__default.createElement(Grid, { item: true, xs: 12, md: 6 },
9527
+ React__default.createElement(Paper, { style: { padding: 24, height: "100%", minHeight: "350px" } },
9528
+ React__default.createElement(Typography$1, { variant: "h6", gutterBottom: true, style: { marginBottom: 24, fontWeight: 600 } }, "Personal Details"),
9529
+ React__default.createElement(Box, { mb: 2 },
9530
+ React__default.createElement(TextField, { label: "First Name", value: editFirstName, variant: "outlined", fullWidth: true, onChange: function (e) { return setEditFirstName(e.target.value); }, onKeyDown: handleKeyDown, error: !editFirstName.trim(), helperText: !editFirstName.trim() ? "First name is required" : "" })),
9531
+ React__default.createElement(Box, { mb: 2 },
9532
+ React__default.createElement(TextField, { label: "Last Name", value: editLastName, variant: "outlined", fullWidth: true, onChange: function (e) { return setEditLastName(e.target.value); }, onKeyDown: handleKeyDown, error: !editLastName.trim(), helperText: !editLastName.trim() ? "Last name is required" : "" })),
9533
+ React__default.createElement(Divider, { style: { margin: "24px 0 20px" } }),
9534
+ React__default.createElement(Box, { mt: 2, display: "flex", flexDirection: "column", style: { gap: 8 } },
9535
+ React__default.createElement(Button, { fullWidth: true, startIcon: isSaving && React__default.createElement(CircularProgress, { size: "1rem" }), disabled: !hasChanges() ||
9536
+ isSaving ||
9537
+ !editFirstName.trim() ||
9538
+ !editLastName.trim(), variant: "contained", color: "primary", onClick: handleSave, style: { marginBottom: "8px" } }, "Save Changes"),
9539
+ React__default.createElement(Button, { fullWidth: true, variant: "contained", color: "primary", onClick: function () { return setShowPasswordModal(true); } }, "Change Password"))))),
9540
+ React__default.createElement(Paper, { elevation: 2, style: { padding: 24, marginBottom: 24, marginTop: 24 } },
9541
+ React__default.createElement(Typography$1, { variant: "h6", gutterBottom: true, style: { marginBottom: 24, fontWeight: 600 } }, "Permissions & Access"),
9542
+ React__default.createElement(Grid, { container: true, spacing: 3 },
9543
+ React__default.createElement(Grid, { item: true, xs: 12, md: 4 },
9544
+ React__default.createElement(Typography$1, { variant: "body1", gutterBottom: true, color: "textSecondary" }, "Assigned Profiles"),
9545
+ React__default.createElement("textarea", { style: {
9546
+ width: "100%",
9547
+ minHeight: "300px",
9548
+ padding: 16,
9549
+ fontFamily: "inherit",
9550
+ fontSize: "14px",
9551
+ lineHeight: "1.5",
9552
+ border: "2px solid #e0e0e0",
9553
+ borderRadius: 8,
9554
+ backgroundColor: "#fff",
9555
+ resize: "vertical",
9556
+ outline: "none",
9557
+ }, placeholder: "No profiles assigned", readOnly: true, value: userProfiles })),
9558
+ React__default.createElement(Grid, { item: true, xs: 12, md: 4 },
9559
+ React__default.createElement(Typography$1, { variant: "body1", gutterBottom: true, color: "textSecondary" }, "System Permissions"),
9560
+ React__default.createElement("textarea", { style: {
9561
+ width: "100%",
9562
+ minHeight: "300px",
9563
+ padding: 16,
9564
+ fontFamily: "inherit",
9565
+ fontSize: "14px",
9566
+ lineHeight: "1.5",
9567
+ border: "2px solid #e0e0e0",
9568
+ borderRadius: 8,
9569
+ backgroundColor: "#fff",
9570
+ resize: "vertical",
9571
+ outline: "none",
9572
+ }, placeholder: "No permissions assigned", readOnly: true, value: userPermissions })),
9573
+ React__default.createElement(Grid, { item: true, xs: 12, md: 4 },
9574
+ React__default.createElement(Typography$1, { variant: "body1", gutterBottom: true, color: "textSecondary" }, "Available Procedures"),
9575
+ React__default.createElement("textarea", { style: {
9576
+ width: "100%",
9577
+ minHeight: "300px",
9578
+ padding: 16,
9579
+ fontFamily: "inherit",
9580
+ fontSize: "14px",
9581
+ lineHeight: "1.5",
9582
+ border: "2px solid #e0e0e0",
9583
+ borderRadius: 8,
9584
+ backgroundColor: "#fff",
9585
+ resize: "vertical",
9586
+ outline: "none",
9587
+ }, placeholder: "No procedures available", readOnly: true, value: userProcedures }))))),
9357
9588
  React__default.createElement(ErrorModal, { error: error, onHide: function () {
9358
9589
  setError("");
9359
- } })));
9590
+ } }),
9591
+ React__default.createElement(ChangePassword$1, { show: showPasswordModal, userId: getUserId(), onHide: handlePasswordChange })));
9360
9592
  };
9361
9593
 
9362
9594
  function ChangePassword(props) {
@@ -9447,7 +9679,7 @@ var Unauthenticated = function (_a) {
9447
9679
  return React__default.createElement(Login, { authConfig: authConfig });
9448
9680
  };
9449
9681
 
9450
- var useStyles$c = makeStyles(function (theme) { return ({
9682
+ var useStyles$b = makeStyles(function (theme) { return ({
9451
9683
  button: {
9452
9684
  padding: theme.spacing(1.2),
9453
9685
  fontWeight: 600,
@@ -9462,7 +9694,7 @@ var useStyles$c = makeStyles(function (theme) { return ({
9462
9694
  },
9463
9695
  }); });
9464
9696
  var LoginAsGuest = function () {
9465
- var classes = useStyles$c();
9697
+ var classes = useStyles$b();
9466
9698
  var _a = React__default.useState(false), showError = _a[0], setShowError = _a[1];
9467
9699
  var _b = React__default.useState(undefined), error = _b[0], setError = _b[1];
9468
9700
  var saveUserData = React__default.useContext(AuthContext).saveUserData;
@@ -9502,7 +9734,7 @@ var LoginAsGuest = function () {
9502
9734
  React__default.createElement(Button, { fullWidth: true, variant: "contained", color: "primary", className: classes.button, style: { backgroundColor: "#479DC4", color: "white" }, role: "button", onClick: loginAsGuest, startIcon: React__default.createElement(PersonOutlineIcon, { className: classes.icon }) }, "Guest Access")));
9503
9735
  };
9504
9736
 
9505
- var useStyles$b = makeStyles(function (theme) { return ({
9737
+ var useStyles$a = makeStyles(function (theme) { return ({
9506
9738
  form: {
9507
9739
  width: "100%",
9508
9740
  marginTop: theme.spacing(1),
@@ -9525,7 +9757,7 @@ var useStyles$b = makeStyles(function (theme) { return ({
9525
9757
  },
9526
9758
  }); });
9527
9759
  var LoginWithEmailAndPassword = function () {
9528
- var classes = useStyles$b();
9760
+ var classes = useStyles$a();
9529
9761
  var _a = useState(""), username = _a[0], setUserName = _a[1];
9530
9762
  var _b = useState(""), password = _b[0], setPassword = _b[1];
9531
9763
  var _c = React__default.useState(false), showError = _c[0], setShowError = _c[1];
@@ -9584,7 +9816,7 @@ var WindowsLogo = function (_a) {
9584
9816
  React__default.createElement("path", { color: color, d: "M12 16H3v7.75l9 1.238zm0-11L3 6.25V14h9zm2-.25V14h13V3zM14 16v9.25L27 27V16z" })));
9585
9817
  };
9586
9818
 
9587
- var useStyles$a = makeStyles(function (theme) { return ({
9819
+ var useStyles$9 = makeStyles(function (theme) { return ({
9588
9820
  button: {
9589
9821
  padding: theme.spacing(1.2),
9590
9822
  fontWeight: 600,
@@ -9602,7 +9834,7 @@ var useStyles$a = makeStyles(function (theme) { return ({
9602
9834
  },
9603
9835
  }); });
9604
9836
  var LoginWithWindowsAuthentication = function () {
9605
- var classes = useStyles$a();
9837
+ var classes = useStyles$9();
9606
9838
  var _a = React__default.useState(false), showError = _a[0], setShowError = _a[1];
9607
9839
  var _b = React__default.useState(undefined), error = _b[0], setError = _b[1];
9608
9840
  var saveUserData = React__default.useContext(AuthContext).saveUserData;
@@ -9725,7 +9957,7 @@ var loginRequest = {
9725
9957
  scopes: ["User.Read"],
9726
9958
  };
9727
9959
 
9728
- var useStyles$9 = makeStyles(function (theme) { return ({
9960
+ var useStyles$8 = makeStyles(function (theme) { return ({
9729
9961
  button: {
9730
9962
  padding: theme.spacing(1.2),
9731
9963
  fontWeight: 600,
@@ -9740,7 +9972,7 @@ var useStyles$9 = makeStyles(function (theme) { return ({
9740
9972
  },
9741
9973
  }); });
9742
9974
  var LoginWithAzureADForm = function () {
9743
- var classes = useStyles$9();
9975
+ var classes = useStyles$8();
9744
9976
  var saveUserData = React__default.useContext(AuthContext).saveUserData;
9745
9977
  var instance = useMsal().instance;
9746
9978
  var login = function (e) { return __awaiter(void 0, void 0, void 0, function () {
@@ -9791,7 +10023,7 @@ var LoginWithAzureAD = function (_a) {
9791
10023
  React__default.createElement(LoginWithAzureADForm, null))));
9792
10024
  };
9793
10025
 
9794
- var useStyles$8 = makeStyles(function (theme) { return ({
10026
+ var useStyles$7 = makeStyles(function (theme) { return ({
9795
10027
  root: {
9796
10028
  minHeight: "100vh",
9797
10029
  backgroundImage: "linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%)",
@@ -9870,7 +10102,7 @@ var useStyles$8 = makeStyles(function (theme) { return ({
9870
10102
  }); });
9871
10103
  function Login(_a) {
9872
10104
  var authConfig = _a.authConfig;
9873
- var classes = useStyles$8();
10105
+ var classes = useStyles$7();
9874
10106
  var params = useRef(new URL(document.location).searchParams);
9875
10107
  var _b = useState(false), open = _b[0], setOpen = _b[1];
9876
10108
  var _c = useState(""), message = _c[0], setMessage = _c[1];
@@ -9965,7 +10197,7 @@ var useSearchAssets = function (setError) {
9965
10197
  return { searchAssets: searchAssets };
9966
10198
  };
9967
10199
 
9968
- var useStyles$7 = makeStyles(function (theme) { return ({
10200
+ var useStyles$6 = makeStyles(function (theme) { return ({
9969
10201
  container: {
9970
10202
  display: "flex",
9971
10203
  alignItems: "center",
@@ -9988,13 +10220,18 @@ var useStyles$7 = makeStyles(function (theme) { return ({
9988
10220
  }); });
9989
10221
  var TimeAndUserMenu = function (_a) {
9990
10222
  var className = _a.className;
9991
- var classes = useStyles$7();
10223
+ var classes = useStyles$6();
9992
10224
  var getUserName = useToken().getUserName;
9993
- var userName = useState(getUserName())[0];
9994
- var _b = useState(new Date()), date = _b[0], setDate = _b[1];
9995
- var _c = useState(null), userMenuAnchorEl = _c[0], setUserMenuAnchorEl = _c[1];
10225
+ var _b = useState(getUserName()), userName = _b[0], setUserName = _b[1];
10226
+ var _c = useState(new Date()), date = _c[0], setDate = _c[1];
10227
+ var _d = useState(null), userMenuAnchorEl = _d[0], setUserMenuAnchorEl = _d[1];
9996
10228
  var tick = function () {
9997
10229
  setDate(new Date());
10230
+ // Also update username in case it changed
10231
+ var currentName = getUserName();
10232
+ if (currentName !== userName) {
10233
+ setUserName(currentName);
10234
+ }
9998
10235
  };
9999
10236
  useEffect(function () {
10000
10237
  var timerID = setTimeout(function () {
@@ -10025,7 +10262,7 @@ var AreaSelector$1 = lazy(function () {
10025
10262
  default: mod.AreaSelector,
10026
10263
  }); });
10027
10264
  });
10028
- var useStyles$6 = makeStyles(function (theme) { return ({
10265
+ var useStyles$5 = makeStyles(function (theme) { return ({
10029
10266
  appBar: {
10030
10267
  // You can use dark or light variants of the primary color
10031
10268
  // backgroundColor: theme.palette.primary.dark, // Darker shade
@@ -10081,7 +10318,7 @@ var useStyles$6 = makeStyles(function (theme) { return ({
10081
10318
  }); });
10082
10319
  function Header$1(_a) {
10083
10320
  var _b = _a.showAreaSelector, showAreaSelector = _b === void 0 ? false : _b, _c = _a.showTrendingsIcon, showTrendingsIcon = _c === void 0 ? true : _c, _d = _a.navbarTitle, navbarTitle = _d === void 0 ? "MESF" : _d;
10084
- var classes = useStyles$6();
10321
+ var classes = useStyles$5();
10085
10322
  var _e = useState(""), error = _e[0], setError = _e[1];
10086
10323
  var CustomNavbar = useContext(NavbarContext);
10087
10324
  var searchAssets = useSearchAssets(setError).searchAssets;
@@ -10152,7 +10389,7 @@ var Home = function () { return (React__default.createElement("div", { style: {
10152
10389
  position: "absolute",
10153
10390
  } })); };
10154
10391
 
10155
- var useStyles$5 = makeStyles(function (theme) { return ({
10392
+ var useStyles$4 = makeStyles(function (theme) { return ({
10156
10393
  root: {
10157
10394
  width: "100%",
10158
10395
  maxWidth: 800,
@@ -10182,7 +10419,7 @@ var useStyles$5 = makeStyles(function (theme) { return ({
10182
10419
  },
10183
10420
  }); });
10184
10421
  var ChatComponent = function () {
10185
- var classes = useStyles$5();
10422
+ var classes = useStyles$4();
10186
10423
  var _a = useState("/ws"), hubUrl = _a[0]; _a[1];
10187
10424
  var _b = useState(null), connection = _b[0], setConnection = _b[1];
10188
10425
  var _c = useState({
@@ -10297,28 +10534,8 @@ var ChatComponent = function () {
10297
10534
  React__default.createElement(Button, { type: "submit", variant: "contained", color: "primary", disabled: !connectionState.isConnected || !user || !message, endIcon: React__default.createElement(Send, null) }, "Send"))));
10298
10535
  };
10299
10536
 
10300
- var useStyles$4 = makeStyles(function (theme) { return ({
10301
- root: {
10302
- height: "100vh",
10303
- padding: theme.spacing(4),
10304
- },
10305
- header: {
10306
- marginBottom: theme.spacing(4),
10307
- display: "flex",
10308
- justifyContent: "space-between",
10309
- alignItems: "center",
10310
- },
10311
- gridContainer: {
10312
- height: "75%",
10313
- width: "100%",
10314
- },
10315
- autocomplete: {
10316
- marginTop: theme.spacing(2),
10317
- marginBottom: theme.spacing(2),
10318
- },
10319
- }); });
10320
10537
  var QueryCacheInvalidations = function () {
10321
- var classes = useStyles$4();
10538
+ var gridRef = useRef(null);
10322
10539
  var _a = useState([]), rowData = _a[0], setRowData = _a[1];
10323
10540
  var _b = useState([]), actions = _b[0], setActions = _b[1];
10324
10541
  var _c = useState(""), modal = _c[0], setModal = _c[1];
@@ -10331,14 +10548,31 @@ var QueryCacheInvalidations = function () {
10331
10548
  targets: [],
10332
10549
  },
10333
10550
  }), control = _g.control, reset = _g.reset, handleSubmit = _g.handleSubmit; _g.setValue;
10551
+ var defaultColDef = useMemo(function () {
10552
+ return {
10553
+ sortable: true,
10554
+ wrapText: true,
10555
+ autoHeight: true,
10556
+ wrapHeaderText: true,
10557
+ cellStyle: {
10558
+ display: "flex",
10559
+ alignItems: "center",
10560
+ justifyContent: "center",
10561
+ },
10562
+ };
10563
+ }, []);
10334
10564
  var columnDefs = [
10335
- { field: "SourceId", headerName: "Source ID" },
10336
- { field: "Source", headerName: "Source" },
10337
- { field: "TargetsCSV", headerName: "Targets" },
10565
+ { field: "SourceId", headerName: "Source ID", flex: 1 },
10566
+ { field: "Source", headerName: "Source", flex: 2 },
10567
+ { field: "TargetsCSV", headerName: "Targets", flex: 3 },
10338
10568
  {
10339
10569
  headerName: "Actions",
10340
- cellRenderer: function (params) { return (React__default.createElement(Box, null,
10341
- React__default.createElement(Button, { variant: "contained", color: "primary", onClick: function () { return handleEdit(params.data); } }, "Edit"))); },
10570
+ flex: 1,
10571
+ cellRenderer: function (params) { return (React__default.createElement(Button, { variant: "contained", color: "primary", onClick: function () { return handleEdit(params.data); }, style: {
10572
+ width: "100%",
10573
+ height: "28px",
10574
+ minWidth: "60px",
10575
+ } }, "EDIT")); },
10342
10576
  },
10343
10577
  ];
10344
10578
  var fetchData = function () { return __awaiter(void 0, void 0, void 0, function () {
@@ -10431,31 +10665,37 @@ var QueryCacheInvalidations = function () {
10431
10665
  }
10432
10666
  });
10433
10667
  }); };
10434
- return (React__default.createElement(Box, { className: classes.root },
10435
- React__default.createElement(Box, { className: classes.header },
10436
- React__default.createElement(Typography$1, { variant: "h4", component: "h2" }, "Query Cache Invalidations"),
10437
- React__default.createElement(Button, { variant: "contained", color: "primary", onClick: handleAdd }, "Add New")),
10438
- React__default.createElement(Box, { className: "".concat(classes.gridContainer) },
10439
- React__default.createElement(AgGridReact, { gridOptions: {
10440
- theme: themeMaterial.withParams({
10441
- spacing: 2,
10442
- }),
10443
- }, rowData: rowData, columnDefs: columnDefs, defaultColDef: { flex: 1 } })),
10668
+ return (React__default.createElement(Grid, { container: true, justifyContent: "center", alignItems: "center" },
10669
+ React__default.createElement(Grid, { item: true, md: 12, xs: 12, style: { padding: "0 15px" } },
10670
+ React__default.createElement(Typography$1, { variant: "h5", style: { margin: "20px 0", fontWeight: 600 } }, "Query Cache Invalidations")),
10671
+ React__default.createElement(Grid, { container: true, justifyContent: "center", alignItems: "center" },
10672
+ React__default.createElement(Grid, { item: true, md: 12, xs: 12, style: { padding: "0 15px" } },
10673
+ React__default.createElement(Grid, { component: Paper, item: true, md: 12, xs: 12, style: {
10674
+ height: "70vh",
10675
+ } },
10676
+ React__default.createElement(AgGridReact, { gridOptions: {
10677
+ theme: themeMaterial,
10678
+ }, ref: gridRef, rowData: rowData, columnDefs: columnDefs, defaultColDef: defaultColDef, rowHeight: 34, headerHeight: 34, animateRows: true, rowSelection: "single", onRowDoubleClicked: function (event) {
10679
+ handleEdit(event.data);
10680
+ } })),
10681
+ React__default.createElement(Grid, { container: true, justifyContent: "flex-end", style: { marginTop: 10 } },
10682
+ React__default.createElement(Grid, { item: true, md: 2, xs: 12 },
10683
+ React__default.createElement(Button, { variant: "contained", color: "primary", onClick: handleAdd, fullWidth: true }, "ADD NEW"))))),
10444
10684
  React__default.createElement(MesfModal, { title: modal === "add" ? "Add Cache Invalidation" : "Edit Cache Invalidation", open: ["add", "edit"].includes(modal), handleClose: function () { return setModal(""); } },
10445
10685
  React__default.createElement("form", { onSubmit: handleSubmit(onSubmit) },
10446
10686
  React__default.createElement(MesfModal.Content, { dividers: true },
10447
10687
  React__default.createElement(Grid, { container: true, spacing: 3 },
10448
10688
  React__default.createElement(Grid, { item: true, xs: 12 },
10449
- React__default.createElement(Controller, { control: control, name: "source", render: function (params) { return (React__default.createElement(Autocomplete, { options: actions, getOptionLabel: function (option) { return "".concat(option.ActionName); }, value: params.field.value, onChange: function (_, value) { return params.field.onChange(value); }, renderInput: function (params) { return (React__default.createElement(TextField, __assign({}, params, { label: "Select Source Action", variant: "outlined" }))); }, className: classes.autocomplete, disabled: modal === "edit" })); } })),
10689
+ React__default.createElement(Controller, { control: control, name: "source", render: function (params) { return (React__default.createElement(Autocomplete, { options: actions, getOptionLabel: function (option) { return "".concat(option.ActionName); }, value: params.field.value, onChange: function (_, value) { return params.field.onChange(value); }, renderInput: function (params) { return (React__default.createElement(TextField, __assign({}, params, { label: "Select Source Action", variant: "outlined" }))); }, style: { marginTop: 16, marginBottom: 16 }, disabled: modal === "edit" })); } })),
10450
10690
  React__default.createElement(Grid, { item: true, xs: 12 },
10451
10691
  React__default.createElement(Controller, { control: control, name: "targets", render: function (params) { return (React__default.createElement(Autocomplete, { multiple: true, options: actions.filter(function (a) { var _a; return a.ActionId !== ((_a = control._formValues.source) === null || _a === void 0 ? void 0 : _a.ActionId); }), getOptionLabel: function (option) { return option.ActionName; }, value: params.field.value, onChange: function (_, value) {
10452
10692
  params.field.onChange(value);
10453
- }, renderInput: function (params) { return (React__default.createElement(TextField, __assign({}, params, { label: "Select Target Actions", variant: "outlined" }))); }, className: classes.autocomplete })); } })))),
10693
+ }, renderInput: function (params) { return (React__default.createElement(TextField, __assign({}, params, { label: "Select Target Actions", variant: "outlined" }))); }, style: { marginTop: 16, marginBottom: 16 } })); } })))),
10454
10694
  React__default.createElement(MesfModal.Actions, null,
10455
10695
  React__default.createElement(Grid, { container: true, spacing: 2, justifyContent: "flex-end" },
10456
- React__default.createElement(Grid, { item: true, md: 3, xs: 12, style: { margin: 0 } },
10696
+ React__default.createElement(Grid, { item: true, md: 3, xs: 12 },
10457
10697
  React__default.createElement(Button, { fullWidth: true, variant: "contained", color: "default", onClick: function () { return setModal(""); } }, "Cancel")),
10458
- React__default.createElement(Grid, { item: true, md: 3, xs: 12, style: { margin: 0 } },
10698
+ React__default.createElement(Grid, { item: true, md: 3, xs: 12 },
10459
10699
  React__default.createElement(Button, { fullWidth: true, startIcon: isLoading && React__default.createElement(CircularProgress, { size: "1rem" }), disabled: isLoading, variant: "contained", color: "primary", type: "submit" }, "Save"))))))));
10460
10700
  };
10461
10701
 
@@ -11546,6 +11786,13 @@ var ColorPicker = function (_a) {
11546
11786
  } })); })))));
11547
11787
  };
11548
11788
 
11789
+ var ButtonWithLoading = function (_a) {
11790
+ var children = _a.children, isLoading = _a.isLoading, props = __rest(_a, ["children", "isLoading"]);
11791
+ return (React__default.createElement(Button, __assign({}, props, { disabled: isLoading }),
11792
+ isLoading && React__default.createElement(CircularProgress, { size: "1rem" }),
11793
+ children));
11794
+ };
11795
+
11549
11796
  var TrendingsInitialState = {
11550
11797
  timeScopeStart: moment$3(new Date()).subtract(1, "days").toDate(),
11551
11798
  timeScopeEnd: new Date(),
@@ -13477,12 +13724,12 @@ var TableComponent = function (_a) {
13477
13724
  React__default.createElement("td", { className: classes.doubleInput }, round((_c = dataTable[tag.TagName]) === null || _c === void 0 ? void 0 : _c.y2, 3) || 0),
13478
13725
  React__default.createElement("td", null, round((_d = dataTable[tag.TagName]) === null || _d === void 0 ? void 0 : _d.y2y1, 3) || 0),
13479
13726
  React__default.createElement("td", null,
13480
- !isNaN(((_e = dataTable[tag.TagName]) === null || _e === void 0 ? void 0 : _e.pmin.y) * 0)
13727
+ !isNaN$1(((_e = dataTable[tag.TagName]) === null || _e === void 0 ? void 0 : _e.pmin.y) * 0)
13481
13728
  ? round((_f = dataTable[tag.TagName]) === null || _f === void 0 ? void 0 : _f.pmin.y, 3)
13482
13729
  : 0,
13483
13730
  " "),
13484
13731
  React__default.createElement("td", null,
13485
- !isNaN(((_g = dataTable[tag.TagName]) === null || _g === void 0 ? void 0 : _g.pmax.y) * 0)
13732
+ !isNaN$1(((_g = dataTable[tag.TagName]) === null || _g === void 0 ? void 0 : _g.pmax.y) * 0)
13486
13733
  ? round((_h = dataTable[tag.TagName]) === null || _h === void 0 ? void 0 : _h.pmax.y)
13487
13734
  : 0,
13488
13735
  " ")));
@@ -14334,7 +14581,7 @@ var MESFMainRouter = function () {
14334
14581
  React__default.createElement(Routes, null,
14335
14582
  React__default.createElement(Route, { path: "/", element: React__default.createElement(Navigate, { replace: true, to: "/home" }) }),
14336
14583
  canShowSettings && (React__default.createElement(Route, { path: "/configuration/*", element: React__default.createElement(Configuration, null) })),
14337
- React__default.createElement(Route, { path: "/account", element: React__default.createElement(Navigate, { replace: true, to: "/" }) }),
14584
+ React__default.createElement(Route, { path: "/account", element: React__default.createElement(Account, null) }),
14338
14585
  React__default.createElement(Route, { path: "/trendings", element: React__default.createElement(index, null) }),
14339
14586
  React__default.createElement(Route, { path: "/home", element: React__default.createElement(Home, null) })),
14340
14587
  React__default.createElement(CustomRoutes, null)));
@@ -14694,5 +14941,5 @@ var areaSelector = /*#__PURE__*/Object.freeze({
14694
14941
  AreaSelector: AreaSelector
14695
14942
  });
14696
14943
 
14697
- export { Account, AssetProvider, AuthContext, AuthProvider, BarChartControl, ButtonWithLoading, ChangePassword, CheckBoxControl, Configuration$1 as Configuration, ContextMenu$1 as ContextMenu, ContextMenuMESFProvider, CurrencyFormatter, DataGridControl, DateFormatter, DateTimeFormatter, ErrorModal, FetchError, FilterPanel, GenericPanel, GenericTable, GetCrewColor, GetShiftColor, IntegerFormatter, Login, Logout, LongFilterPanel, MESApiService, MESFMain, MESSAGE_API, MESSAGE_ERRORS, MasterDetailPanel, MesfModal, ModalTreeFilterControl, MultipleSelectorControl, NumberFormatter, ShiftDayNavigatorControl, ShiftNavigatorProvider, ShiftPeriodNavigatorControl, SimplePasswordControl, SimpleSelectorControl, TimeAndUserMenu, TimeFormatter, TimeService, TreePickerControl, TreePickerControlV2, TrendingsPage, USER_LABELS, UTLSettingsProvider, UserProvider, axiosInstance, deleteUser, dxtServerTimeZone, dxtToLocalServerTime, dxtToUTC, formatNumber, getAuthTypes, getCrewStyle, getDataUser, getError, getMomentTz, getProfiles, getShiftByParameters, getShiftStyle, getShiftsRangeByParameters, getTokenFromLS, getUserPermissionsFromAPI, getUsers, renewToken, setPassword, setProfilesToUser, themeMESF, upsertUser, useAssetContext, useContextMenuMESF, useHasPermission, useMesfRealtime, useShiftNavigator, useShiftNavigatorManager, useStyles$E as useStyles, useToken, useUTLSettingsContext, useUserContext };
14944
+ export { Account, AssetProvider, AuthContext, AuthProvider, BarChartControl, ButtonWithLoading, ChangePassword, CheckBoxControl, Configuration$1 as Configuration, ContextMenu$1 as ContextMenu, ContextMenuMESFProvider, CurrencyFormatter, DataGridControl, DateFormatter, DateTimeFormatter, ErrorModal, FetchError, FilterPanel, GenericPanel, GenericTable, GetCrewColor, GetShiftColor, IntegerFormatter, Login, Logout, LongFilterPanel, MESApiService, MESFMain, MESSAGE_API, MESSAGE_ERRORS, MasterDetailPanel, MesfModal, ModalTreeFilterControl, MultipleSelectorControl, NumberFormatter, ShiftDayNavigatorControl, ShiftNavigatorProvider, ShiftPeriodNavigatorControl, SimplePasswordControl, SimpleSelectorControl, TimeAndUserMenu, TimeFormatter, TimeService, TreePickerControl, TreePickerControlV2, TrendingsPage, USER_LABELS, UTLSettingsProvider, UserProvider, axiosInstance, deleteUser, dxtServerTimeZone, dxtToLocalServerTime, dxtToUTC, formatNumber, getAuthTypes, getCrewStyle, getDataUser, getError, getMomentTz, getProfiles, getShiftByParameters, getShiftStyle, getShiftsRangeByParameters, getTokenFromLS, getUserPermissionsFromAPI, getUsers, renewToken, setPassword, setProfilesToUser, themeMESF, upsertUser, useAssetContext, useContextMenuMESF, useHasPermission, useMesfRealtime, useShiftNavigator, useShiftNavigatorManager, useStyles$C as useStyles, useToken, useUTLSettingsContext, useUserContext };
14698
14945
  //# sourceMappingURL=index.esm.js.map