@dexteel/mesf-core 4.23.1 → 4.24.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,9 +1,9 @@
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, SvgIcon, Collapse, Typography as Typography$1, Checkbox, TextField, InputAdornment, IconButton as IconButton$1, MenuItem, Select, Card, CardContent, CardActions, Snackbar, CircularProgress, Paper, InputLabel, FormHelperText, DialogContentText, FormControlLabel, Badge, useTheme, FormControl, Input, Chip, Tooltip, ListItemIcon, MenuList, Divider, Box, debounce, List, ListItem, ListItemText } 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, SvgIcon, Collapse, Typography as Typography$1, Checkbox, TextField, InputAdornment, IconButton as IconButton$1, MenuItem, Select, Card, CardContent, CardActions, Snackbar, CircularProgress, Paper, InputLabel, FormHelperText, DialogContentText, FormControlLabel, Badge, useTheme, FormControl, Input, Chip, Tooltip, ListItemIcon, Box, List, ListItem, ListItemText, MenuList, Divider, debounce } from '@material-ui/core';
3
3
  import { get as get$1, isNil as isNil$1, isEmpty, values, round, isNaN, isNumber } from 'lodash-es';
4
4
  import * as React from 'react';
5
5
  import React__default, { useState, useRef, useEffect, useMemo, Component, createContext, useContext, useCallback, lazy, Suspense } from 'react';
6
- import { ArrowRight, ArrowBackRounded, ArrowForwardRounded, SkipNext, ChevronLeft, ChevronRight } from '@material-ui/icons';
6
+ import { ArrowRight, ArrowBackRounded, ArrowForwardRounded, SkipNext, ChevronLeft, ChevronRight, Send } from '@material-ui/icons';
7
7
  import { DatePicker } from '@mui/x-date-pickers/DatePicker';
8
8
  import { Outlet, useParams, useNavigate, useSearchParams, Link, Navigate, Routes, Route, BrowserRouter } from 'react-router-dom';
9
9
  import { Alert as Alert$1, Modal as Modal$1, Navbar, Container, Nav, NavDropdown } from 'react-bootstrap';
@@ -22,15 +22,17 @@ import moment$4 from 'moment';
22
22
  import EditIcon from '@material-ui/icons/Edit';
23
23
  import PlaylistAddIcon from '@material-ui/icons/PlaylistAdd';
24
24
  import { isNil, get } from 'lodash';
25
+ import { HubConnectionBuilder, LogLevel as LogLevel$1 } from '@microsoft/signalr';
26
+ import { Alert as Alert$3, Autocomplete } from '@material-ui/lab';
27
+ import { useForm, Controller } from 'react-hook-form';
28
+ import 'ag-grid-community/styles/ag-theme-material.min.css';
25
29
  import DeleteIcon from '@material-ui/icons/Delete';
26
30
  import FormatListBulletedSharpIcon from '@material-ui/icons/FormatListBulletedSharp';
27
- import { useForm, Controller } from 'react-hook-form';
28
31
  import axios from 'axios';
29
32
  import { _adapters, Chart, CategoryScale, LinearScale, PointElement, LineElement, Title, Tooltip as Tooltip$1, Legend, TimeScale } from 'chart.js';
30
33
  import zoomPlugin from 'chartjs-plugin-zoom';
31
34
  import LockIcon from '@material-ui/icons/Lock';
32
35
  import SaveIcon from '@material-ui/icons/Save';
33
- import { Alert as Alert$3, Autocomplete } from '@material-ui/lab';
34
36
  import Button$1 from '@material-ui/core/Button';
35
37
  import Popover from '@material-ui/core/Popover';
36
38
  import CreateIcon from '@material-ui/icons/Create';
@@ -573,7 +575,7 @@ var ModalTreeFilterControl = function (props) {
573
575
  React__default.createElement(Button, { onClick: handleOk, color: "primary" }, "OK"))));
574
576
  };
575
577
 
576
- var useStyles$z = makeStyles(function (theme) { return ({
578
+ var useStyles$B = makeStyles(function (theme) { return ({
577
579
  root: {
578
580
  width: "100%",
579
581
  backgroundColor: theme.palette.background.paper,
@@ -589,7 +591,7 @@ var useStyles$z = makeStyles(function (theme) { return ({
589
591
  }
590
592
  }); });
591
593
  var TreePickerControl = function (props) {
592
- var classes = useStyles$z();
594
+ var classes = useStyles$B();
593
595
  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, other = __rest(props, ["onSelect", "value", "styleLabel", "dataSource", "inputTitle", "showPath", "multipleSelectNodes", "showClearButton", "showAssetTree", "onHide", "listAssetDrawings", "onSuccess", "isLoading"]);
594
596
  var _f = useState(showAssetTree || false), open = _f[0], setOpen = _f[1];
595
597
  var handleClickListItem = function (e) {
@@ -673,7 +675,7 @@ var TreePickerControl = function (props) {
673
675
  }, onHide: onHide, id: "modal-treeview-filter", 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 }, other)))));
674
676
  };
675
677
 
676
- var useStyles$y = makeStyles(function (theme) { return ({
678
+ var useStyles$A = makeStyles(function (theme) { return ({
677
679
  root: {
678
680
  width: "100%",
679
681
  backgroundColor: theme.palette.background.paper
@@ -699,7 +701,7 @@ function findNameById(node, id) {
699
701
  return null;
700
702
  }
701
703
  var TreePickerControlV2 = function (props) {
702
- var classes = useStyles$y();
704
+ var classes = useStyles$A();
703
705
  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, showAssetTree = props.showAssetTree, onHide = props.onHide, _e = props.listAssetDrawings, listAssetDrawings = _e === void 0 ? [] : _e, onSuccess = props.onSuccess, isLoading = props.isLoading, _f = props.disabled, disabled = _f === void 0 ? false : _f, other = __rest(props, ["value", "onSelect", "styleLabel", "dataSource", "getOptionName", "inputTitle", "showPath", "multipleSelectNodes", "showClearButton", "showAssetTree", "onHide", "listAssetDrawings", "onSuccess", "isLoading", "disabled"]);
704
706
  var _g = useState(false), open = _g[0], setOpen = _g[1];
705
707
  var handleClickListItem = function (event) {
@@ -1352,7 +1354,7 @@ var useJobsOptionsFunctions = function (_a) {
1352
1354
  };
1353
1355
  };
1354
1356
 
1355
- var useStyles$x = makeStyles(function (theme) { return ({
1357
+ var useStyles$z = makeStyles(function (theme) { return ({
1356
1358
  buttons: {
1357
1359
  opacity: 0,
1358
1360
  transition: "opacity 0.1s ease-in-out",
@@ -1370,7 +1372,7 @@ var useStyles$x = makeStyles(function (theme) { return ({
1370
1372
  var useJobsTableData = function (_a) {
1371
1373
  var setRowSelected = _a.setRowSelected, showContextMenu = _a.showContextMenu;
1372
1374
  var _b = useJobsContext().state, jobsData = _b.jobsData, blockButtons = _b.blockButtons;
1373
- var classes = useStyles$x();
1375
+ var classes = useStyles$z();
1374
1376
  var rows = jobsData.map(function (_a) {
1375
1377
  var JobId = _a.JobId, sProcedure = _a.sProcedure, Running = _a.Running, LastStarted = _a.LastStarted, LastCounter = _a.LastCounter, Enabled = _a.Enabled, RestartAfterFailure = _a.RestartAfterFailure, PeriodTime = _a.PeriodTime, StartTime = _a.StartTime, NextExecutionTime = _a.NextExecutionTime;
1376
1378
  return ({
@@ -1655,7 +1657,7 @@ var useJobsTableData = function (_a) {
1655
1657
  return { rows: rows, columnDefs: columnDefs };
1656
1658
  };
1657
1659
 
1658
- var useStyles$w = makeStyles(function (theme) { return ({
1660
+ var useStyles$y = makeStyles(function (theme) { return ({
1659
1661
  root: {
1660
1662
  "& .MuiDataGrid-row": {
1661
1663
  cursor: "pointer"
@@ -1718,7 +1720,7 @@ var useStyles$w = makeStyles(function (theme) { return ({
1718
1720
  }); });
1719
1721
  var TableJobs = function (_a) {
1720
1722
  var getJobsFromAPI = _a.getJobsFromAPI, isLoading = _a.isLoading;
1721
- var classes = useStyles$w();
1723
+ var classes = useStyles$y();
1722
1724
  var _b = useState(null), rowSelected = _b[0], setRowSelected = _b[1];
1723
1725
  var _c = useState(false), snackbarLoading = _c[0], setSnackbarLoading = _c[1];
1724
1726
  var _d = useState(false), snackbarSuccessfulMessage = _d[0], setSnackbarSuccessfulMessage = _d[1];
@@ -1982,7 +1984,7 @@ var SearchFilter = function (_a) {
1982
1984
  React__default.createElement(FormHelperText, { style: { marginBottom: 10, marginTop: -15 } }, "Search by Source, Message or User")));
1983
1985
  };
1984
1986
 
1985
- var useStyles$v = makeStyles(function (theme) { return ({
1987
+ var useStyles$x = makeStyles(function (theme) { return ({
1986
1988
  title: {
1987
1989
  fontSize: 15
1988
1990
  },
@@ -1999,7 +2001,7 @@ var formatTime = function (nowTime) {
1999
2001
  };
2000
2002
  var ModalLogSelected = function (_a) {
2001
2003
  var show = _a.show, onHide = _a.onHide, selectedLog = _a.selectedLog;
2002
- var classes = useStyles$v();
2004
+ var classes = useStyles$x();
2003
2005
  return (React__default.createElement(Grid, { container: true, justifyContent: "center", alignItems: "center" },
2004
2006
  React__default.createElement(MesfModal, { title: "LOG DETAILS", open: show, handleClose: function () { return onHide(false); }, maxWidth: "md", id: "log-details-modal" },
2005
2007
  React__default.createElement(MesfModal.Content, { style: { padding: "15px 30px" } },
@@ -2055,7 +2057,7 @@ var ModalLogSelected = function (_a) {
2055
2057
  React__default.createElement(Button, { fullWidth: true, variant: "contained", color: "default", onClick: function () { return onHide(true); } }, "Close")))))));
2056
2058
  };
2057
2059
 
2058
- var useStyles$u = makeStyles(function (theme) { return ({
2060
+ var useStyles$w = makeStyles(function (theme) { return ({
2059
2061
  buttons: {
2060
2062
  opacity: 0,
2061
2063
  transition: "opacity 0.1s ease-in-out",
@@ -2073,7 +2075,7 @@ var useStyles$u = makeStyles(function (theme) { return ({
2073
2075
  var useLogTableData = function () {
2074
2076
  var _a;
2075
2077
  var state = useLogsContext().state;
2076
- var classes = useStyles$u();
2078
+ var classes = useStyles$w();
2077
2079
  var formatTime = function (nowTime) {
2078
2080
  return (nowTime.toLocaleDateString("en-US") + " " + nowTime.toLocaleTimeString());
2079
2081
  };
@@ -2194,7 +2196,7 @@ var ButtonWithLoading = function (_a) {
2194
2196
  children));
2195
2197
  };
2196
2198
 
2197
- var useStyles$t = makeStyles(function (theme) { return ({
2199
+ var useStyles$v = makeStyles(function (theme) { return ({
2198
2200
  root: {
2199
2201
  "& .MuiDataGrid-row": {
2200
2202
  cursor: "pointer"
@@ -2288,7 +2290,7 @@ var useLogsOptionsFunctions = function (_a) {
2288
2290
  var TableLogs = function (_a) {
2289
2291
  var isLoading = _a.isLoading; _a.rowData; var refreshData = _a.refreshData;
2290
2292
  var _b = useLogsContext(), _c = _b.state.searchData, Start = _c.Start, End = _c.End, Search = _c.Search, LogTypeCode = _c.LogTypeCode, _d = _b.actions, setLogTypeCodeFilter = _d.setLogTypeCodeFilter, setEndFilter = _d.setEndFilter, setStartFilter = _d.setStartFilter, setSearchFilter = _d.setSearchFilter;
2291
- var classes = useStyles$t();
2293
+ var classes = useStyles$v();
2292
2294
  var gridStyle = useMemo(function () { return ({ height: "100%", width: "100%" }); }, []);
2293
2295
  var _e = useState(null); _e[0]; var setGridAPI = _e[1];
2294
2296
  var _f = useState(false), showLogModal = _f[0], setShowLogModal = _f[1];
@@ -2578,7 +2580,7 @@ var deleteProfile = function (profileId) { return __awaiter(void 0, void 0, void
2578
2580
  });
2579
2581
  }); };
2580
2582
 
2581
- var useStyles$s = makeStyles(function (theme) { return ({
2583
+ var useStyles$u = makeStyles(function (theme) { return ({
2582
2584
  title: {
2583
2585
  fontSize: 15
2584
2586
  },
@@ -2601,7 +2603,7 @@ var CreateProfile = function (_a) {
2601
2603
  var _d = useState(""), message = _d[0], setMessage = _d[1];
2602
2604
  var _e = useState(false), isSubmitLoading = _e[0], setIsSubmitLoading = _e[1];
2603
2605
  var _f = useState(""), error = _f[0], setError = _f[1];
2604
- var classes = useStyles$s();
2606
+ var classes = useStyles$u();
2605
2607
  var _g = useForm({ defaultValues: INITIAL_VALUES$3 }), register = _g.register, handleSubmit = _g.handleSubmit, reset = _g.reset, errors = _g.formState.errors;
2606
2608
  var onSubmit = function (data) { return __awaiter(void 0, void 0, void 0, function () {
2607
2609
  var res;
@@ -2836,7 +2838,7 @@ var DataTable = function (_a) {
2836
2838
  React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(""); } })));
2837
2839
  };
2838
2840
 
2839
- var useStyles$r = makeStyles(function (theme) { return ({
2841
+ var useStyles$t = makeStyles(function (theme) { return ({
2840
2842
  root: {
2841
2843
  "& .MuiFormLabel-asterisk": {
2842
2844
  display: "none"
@@ -2845,7 +2847,7 @@ var useStyles$r = makeStyles(function (theme) { return ({
2845
2847
  }); });
2846
2848
  var ActionsOfProfile = function (_a) {
2847
2849
  var profileForEdit = _a.profileForEdit, show = _a.show, onHide = _a.onHide;
2848
- var classes = useStyles$r();
2850
+ var classes = useStyles$t();
2849
2851
  var _b = useState(null), actionsOfProfile = _b[0], setActionsOfProfile = _b[1];
2850
2852
  var _c = useState(false), open = _c[0], setOpen = _c[1];
2851
2853
  var _d = useState(true), isLoading = _d[0], setIsLoading = _d[1];
@@ -3033,7 +3035,7 @@ var ProfilesProvider = function (_a) {
3033
3035
  return (React__default.createElement(ProfilesContext.Provider, { value: { state: state, actions: actions } }, children));
3034
3036
  };
3035
3037
 
3036
- var useStyles$q = makeStyles(function (theme) { return ({
3038
+ var useStyles$s = makeStyles(function (theme) { return ({
3037
3039
  buttons: {
3038
3040
  opacity: 0,
3039
3041
  transition: "opacity 0.1s ease-in-out",
@@ -3051,7 +3053,7 @@ var useStyles$q = makeStyles(function (theme) { return ({
3051
3053
  var useTableData$3 = function (_a) {
3052
3054
  var setProfileId = _a.setProfileId, setModalProceduresProfile = _a.setModalProceduresProfile, setModalDeleteProfile = _a.setModalDeleteProfile, showContextMenu = _a.showContextMenu;
3053
3055
  var state = useProfilesContext().state;
3054
- var classes = useStyles$q();
3056
+ var classes = useStyles$s();
3055
3057
  var rows = state.profiles.map(function (_a) {
3056
3058
  var ProfileId = _a.ProfileId, ProfileName = _a.ProfileName;
3057
3059
  return ({
@@ -3123,7 +3125,7 @@ var useTableData$3 = function (_a) {
3123
3125
  return { rows: rows, columnDefs: columnDefs };
3124
3126
  };
3125
3127
 
3126
- var useStyles$p = makeStyles(function (theme) { return ({
3128
+ var useStyles$r = makeStyles(function (theme) { return ({
3127
3129
  root: {
3128
3130
  "& .ag-icon-menu": {
3129
3131
  display: "none"
@@ -3195,7 +3197,7 @@ var TableProfiles = function (_a) {
3195
3197
  var _e = useState(null), profile = _e[0], setProfile = _e[1];
3196
3198
  var gridStyle = useMemo(function () { return ({ height: "100%", width: "100%" }); }, []);
3197
3199
  var _f = useState(null), gridApi = _f[0], setGridApi = _f[1];
3198
- var classes = useStyles$p();
3200
+ var classes = useStyles$r();
3199
3201
  var loadingOverlayComponent = useMemo(function () {
3200
3202
  return LazyLoading;
3201
3203
  }, []);
@@ -3434,7 +3436,7 @@ var DeleteShiftParameters = function (PatternStart) { return __awaiter(void 0, v
3434
3436
  });
3435
3437
  }); };
3436
3438
 
3437
- var useStyles$o = makeStyles(function (theme) { return ({
3439
+ var useStyles$q = makeStyles(function (theme) { return ({
3438
3440
  title: {
3439
3441
  fontSize: 15
3440
3442
  },
@@ -3460,7 +3462,7 @@ var CreateShift = function (_a) {
3460
3462
  var _d = useState(false), open = _d[0], setOpen = _d[1];
3461
3463
  var _e = useState(false), isSubmitLoading = _e[0], setIsSubmitLoading = _e[1];
3462
3464
  var _f = useState(""), error = _f[0], setError = _f[1];
3463
- var classes = useStyles$o();
3465
+ var classes = useStyles$q();
3464
3466
  var shiftTableData = useShiftsCrewsContext().state.shiftTableData;
3465
3467
  var _g = useForm({
3466
3468
  defaultValues: shiftTableData ? shiftTableData : INITIAL_VALUES$2
@@ -3662,7 +3664,7 @@ var CreateShift = function (_a) {
3662
3664
  React.createElement(Alert, { severity: "success", onClose: handleClose }, "The shift was created successfully"))));
3663
3665
  };
3664
3666
 
3665
- var useStyles$n = makeStyles(function (theme) { return ({
3667
+ var useStyles$p = makeStyles(function (theme) { return ({
3666
3668
  title: {
3667
3669
  fontSize: 15
3668
3670
  },
@@ -3688,7 +3690,7 @@ var DeleteShift = function (_a) {
3688
3690
  var _c = useState(false), open = _c[0], setOpen = _c[1];
3689
3691
  var _d = useState(false), isSubmitLoading = _d[0], setIsSubmitLoading = _d[1];
3690
3692
  var _e = useState(false), deleteAlert = _e[0], setDeleteAlert = _e[1];
3691
- var classes = useStyles$n();
3693
+ var classes = useStyles$p();
3692
3694
  var shiftTableData = useShiftsCrewsContext().state.shiftTableData;
3693
3695
  var _f = useState(""), error = _f[0], setError = _f[1];
3694
3696
  var _g = useForm({ defaultValues: INITIAL_VALUES$2 }), control = _g.control, setValue = _g.setValue, reset = _g.reset, watch = _g.watch, errors = _g.formState.errors;
@@ -3827,7 +3829,7 @@ var DeleteShift = function (_a) {
3827
3829
  React.createElement(Alert, { severity: "warning", onClose: handleClose }, "The shift was deleted successfully"))));
3828
3830
  };
3829
3831
 
3830
- var useStyles$m = makeStyles(function (theme) { return ({
3832
+ var useStyles$o = makeStyles(function (theme) { return ({
3831
3833
  title: {
3832
3834
  fontSize: 15
3833
3835
  },
@@ -3854,7 +3856,7 @@ var EditShift = function (_a) {
3854
3856
  var _d = useState(""), error = _d[0], setError = _d[1];
3855
3857
  var _e = useState(false), isSubmitLoading = _e[0], setIsSubmitLoading = _e[1];
3856
3858
  var _f = useState(false), initialShiftPerDayAndCrewsNumber = _f[0], setInitialShiftPerDayAndCrewsNumber = _f[1];
3857
- var classes = useStyles$m();
3859
+ var classes = useStyles$o();
3858
3860
  var shiftTableData = useShiftsCrewsContext().state.shiftTableData;
3859
3861
  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;
3860
3862
  // Progress bar
@@ -4122,7 +4124,7 @@ var useShiftsOptionsFunctions = function (_a) {
4122
4124
  };
4123
4125
  };
4124
4126
 
4125
- var useStyles$l = makeStyles(function (theme) { return ({
4127
+ var useStyles$n = makeStyles(function (theme) { return ({
4126
4128
  root: {
4127
4129
  opacity: 0,
4128
4130
  transition: "opacity 0.1s ease-in-out",
@@ -4141,7 +4143,7 @@ var useTableData$2 = function (_a) {
4141
4143
  var _b;
4142
4144
  var setOpenModalEditShift = _a.setOpenModalEditShift, setOpenModalDeleteShift = _a.setOpenModalDeleteShift, showContextMenu = _a.showContextMenu;
4143
4145
  var _c = useShiftsCrewsContext(), state = _c.state, actions = _c.actions;
4144
- var classes = useStyles$l();
4146
+ var classes = useStyles$n();
4145
4147
  var rows = (_b = state.shifts) === null || _b === void 0 ? void 0 : _b.map(function (_a) {
4146
4148
  var PatternStart = _a.PatternStart, ShiftCodes = _a.ShiftCodes, Crews = _a.Crews, PatternDays = _a.PatternDays, CrewRotation = _a.CrewRotation, Comments = _a.Comments, CanEdit = _a.CanEdit;
4147
4149
  return ({
@@ -4252,7 +4254,7 @@ var useTableData$2 = function (_a) {
4252
4254
  return { rows: rows, columnDefs: columnDefs };
4253
4255
  };
4254
4256
 
4255
- var useStyles$k = makeStyles(function (theme) { return ({
4257
+ var useStyles$m = makeStyles(function (theme) { return ({
4256
4258
  root: {
4257
4259
  "& .ag-icon-menu": {
4258
4260
  display: "none"
@@ -4302,7 +4304,7 @@ var useStyles$k = makeStyles(function (theme) { return ({
4302
4304
  }); });
4303
4305
  var TableShiftsCrews = function (_a) {
4304
4306
  _a.isLoading; var getShiftsCrewsFromAPI = _a.getShiftsCrewsFromAPI;
4305
- var classes = useStyles$k();
4307
+ var classes = useStyles$m();
4306
4308
  var _b = useState(false), openModalNew = _b[0], setOpenModalNew = _b[1];
4307
4309
  var _c = useState(false), openModalEditShift = _c[0], setOpenModalEditShift = _c[1];
4308
4310
  var _d = useState(false), openModalDeleteShift = _d[0], setOpenModalDeleteShift = _d[1];
@@ -4806,7 +4808,7 @@ var useAssetCodes = function () {
4806
4808
  return { loadFilterAssets: loadFilterAssets };
4807
4809
  };
4808
4810
 
4809
- var useStyles$j = makeStyles(function (theme) { return ({
4811
+ var useStyles$l = makeStyles(function (theme) { return ({
4810
4812
  root: {
4811
4813
  "& .input-group-text": {
4812
4814
  display: "none"
@@ -4849,7 +4851,7 @@ var useStyles$j = makeStyles(function (theme) { return ({
4849
4851
  }); });
4850
4852
  var CreateNewAssetDialog = function (_a) {
4851
4853
  var show = _a.show, onHide = _a.onHide;
4852
- var classes = useStyles$j();
4854
+ var classes = useStyles$l();
4853
4855
  var _b = useState(true), fullWidth = _b[0]; _b[1];
4854
4856
  var _c = useState("sm"), maxWidth = _c[0]; _c[1];
4855
4857
  var _d = useState(false), assetCreatedSuccess = _d[0], setAssetCreatedSuccess = _d[1];
@@ -4968,7 +4970,7 @@ var CreateNewAssetDialog = function (_a) {
4968
4970
  React__default.createElement(Alert$2, { severity: "info", onClose: handleClose }, "Document created succesfully"))));
4969
4971
  };
4970
4972
 
4971
- var useStyles$i = makeStyles(function (theme) { return ({
4973
+ var useStyles$k = makeStyles(function (theme) { return ({
4972
4974
  root: {
4973
4975
  "& .input-group-text": {
4974
4976
  display: "none"
@@ -5016,7 +5018,7 @@ var useStyles$i = makeStyles(function (theme) { return ({
5016
5018
  }); });
5017
5019
  var EditAssetDialog = function (_a) {
5018
5020
  var show = _a.show, onHide = _a.onHide;
5019
- var classes = useStyles$i();
5021
+ var classes = useStyles$k();
5020
5022
  var _b = useState(true), fullWidth = _b[0]; _b[1];
5021
5023
  var _c = useState("sm"), maxWidth = _c[0]; _c[1];
5022
5024
  var _d = useState(false), assetEditedSuccess = _d[0], setAssetEditedSuccess = _d[1];
@@ -5136,7 +5138,7 @@ var EditAssetDialog = function (_a) {
5136
5138
  React__default.createElement(Alert$3, { severity: "info", onClose: handleClose }, "Document created succesfully")))))))));
5137
5139
  };
5138
5140
 
5139
- var useStyles$h = makeStyles(function (theme) { return ({
5141
+ var useStyles$j = makeStyles(function (theme) { return ({
5140
5142
  root: {
5141
5143
  "& .input-group-text": {
5142
5144
  display: "none"
@@ -5180,7 +5182,7 @@ var useStyles$h = makeStyles(function (theme) { return ({
5180
5182
  }); });
5181
5183
  var RemoveAssetDialog = function (_a) {
5182
5184
  var show = _a.show, onHide = _a.onHide;
5183
- var classes = useStyles$h();
5185
+ var classes = useStyles$j();
5184
5186
  var _b = useState(true), fullWidth = _b[0]; _b[1];
5185
5187
  var _c = useState("sm"), maxWidth = _c[0]; _c[1];
5186
5188
  var _d = useState(false), assetRemovedSuccess = _d[0], setAssetRemovedSuccess = _d[1];
@@ -5239,7 +5241,7 @@ var RemoveAssetDialog = function (_a) {
5239
5241
  React__default.createElement(Alert$2, { severity: "info", onClose: handleClose }, "Asset removed succesfully"))));
5240
5242
  };
5241
5243
 
5242
- var useStyles$g = makeStyles(function (theme) { return ({
5244
+ var useStyles$i = makeStyles(function (theme) { return ({
5243
5245
  root: {
5244
5246
  "& .input-group-text": {
5245
5247
  display: "none"
@@ -5290,7 +5292,7 @@ var useStyles$g = makeStyles(function (theme) { return ({
5290
5292
  }); });
5291
5293
  var ViewerAssetDialog = function (_a) {
5292
5294
  var show = _a.show, onHide = _a.onHide;
5293
- var classes = useStyles$g();
5295
+ var classes = useStyles$i();
5294
5296
  var _b = useState(true), fullWidth = _b[0]; _b[1];
5295
5297
  var _c = useState("sm"), maxWidth = _c[0]; _c[1];
5296
5298
  var _d = useConfigurationAssetContext().state, dataToCreateAsset = _d.dataToCreateAsset, assetNodeSelectedInTree = _d.assetNodeSelectedInTree;
@@ -5463,7 +5465,7 @@ var TypeIcon = function (props) {
5463
5465
  }
5464
5466
  };
5465
5467
 
5466
- var useStyles$f = makeStyles(function (theme) { return ({
5468
+ var useStyles$h = makeStyles(function (theme) { return ({
5467
5469
  root: {
5468
5470
  alignItems: "center",
5469
5471
  backgroundColor: "#1967d2",
@@ -5488,7 +5490,7 @@ var useStyles$f = makeStyles(function (theme) { return ({
5488
5490
  }); });
5489
5491
  var CustomDragPreview$1 = function (props) {
5490
5492
  var _a;
5491
- var classes = useStyles$f();
5493
+ var classes = useStyles$h();
5492
5494
  var item = props.monitorProps.item;
5493
5495
  return (React__default.createElement("div", { className: classes.root },
5494
5496
  React__default.createElement("div", { className: classes.icon },
@@ -5496,7 +5498,7 @@ var CustomDragPreview$1 = function (props) {
5496
5498
  React__default.createElement("div", { className: classes.label }, item.text)));
5497
5499
  };
5498
5500
 
5499
- var useStyles$e = makeStyles(function (theme) { return ({
5501
+ var useStyles$g = makeStyles(function (theme) { return ({
5500
5502
  root: {
5501
5503
  alignItems: "center",
5502
5504
  display: "flex",
@@ -5543,7 +5545,7 @@ var CustomNode = function (_a) {
5543
5545
  var _c = useConfigurationAssetContext(), openAssets = _c.state.openAssets, setOpenAssets = _c.actions.setOpenAssets;
5544
5546
  var _d = props.node, id = _d.id, droppable = _d.droppable, data = _d.data;
5545
5547
  var indent = props.depth * 24;
5546
- var classes = useStyles$e();
5548
+ var classes = useStyles$g();
5547
5549
  var nodeClasses = "".concat(classes.customNodeRoot, " ").concat(classes.root, " ").concat(isSelected ? classes.selected : "");
5548
5550
  var handleClick = function (e) {
5549
5551
  props.onClick(e, props.node);
@@ -5598,7 +5600,7 @@ var CustomNode = function (_a) {
5598
5600
  React__default.createElement(Typography$1, { variant: "body2" }, props.node.text))));
5599
5601
  };
5600
5602
 
5601
- var useStyles$d = makeStyles(function (theme) { return ({
5603
+ var useStyles$f = makeStyles(function (theme) { return ({
5602
5604
  root: {
5603
5605
  alignItems: "flex-start",
5604
5606
  backgroundColor: "#1967d2",
@@ -5630,7 +5632,7 @@ var useStyles$d = makeStyles(function (theme) { return ({
5630
5632
  }
5631
5633
  }); });
5632
5634
  var MultipleDragPreview = function (props) {
5633
- var classes = useStyles$d();
5635
+ var classes = useStyles$f();
5634
5636
  return (React__default.createElement(Badge, { classes: { badge: classes.badge }, color: "error", badgeContent: props.dragSources.length, anchorOrigin: { vertical: "top", horizontal: "right" } },
5635
5637
  React__default.createElement("div", { className: classes.root, "data-testid": "custom-drag-preview" }, props.dragSources.map(function (node) {
5636
5638
  var _a;
@@ -5641,7 +5643,7 @@ var MultipleDragPreview = function (props) {
5641
5643
  }))));
5642
5644
  };
5643
5645
 
5644
- var useStyles$c = makeStyles(function (theme) { return ({
5646
+ var useStyles$e = makeStyles(function (theme) { return ({
5645
5647
  root: {},
5646
5648
  contextMenu: {
5647
5649
  backgroundColor: "#F8F8F8",
@@ -5687,7 +5689,7 @@ var useStyles$c = makeStyles(function (theme) { return ({
5687
5689
  }); });
5688
5690
  var AssetViewComponent = function () {
5689
5691
  var _a = useState([]), selectedNodes = _a[0], setSelectedNodes = _a[1];
5690
- var classes = useStyles$c();
5692
+ var classes = useStyles$e();
5691
5693
  var _b = useState(false), isDragging = _b[0], setIsDragging = _b[1];
5692
5694
  var _c = useState(false), isCtrlPressing = _c[0], setIsCtrlPressing = _c[1];
5693
5695
  var _d = useState(false), isDoubleClick = _d[0], setIsDoubleClick = _d[1];
@@ -6100,7 +6102,7 @@ var INITIAL_VALUES$1 = {
6100
6102
  Profiles: []
6101
6103
  };
6102
6104
 
6103
- var useStyles$b = makeStyles(function (theme) { return ({
6105
+ var useStyles$d = makeStyles(function (theme) { return ({
6104
6106
  root: {
6105
6107
  "& .MuiSelect-select": {
6106
6108
  minHeight: "40px"
@@ -6133,7 +6135,7 @@ var MenuProps$1 = {
6133
6135
  };
6134
6136
  var AuthTypeSelector = function (_a) {
6135
6137
  var value = _a.value, onChange = _a.onChange, disabled = _a.disabled;
6136
- var classes = useStyles$b();
6138
+ var classes = useStyles$d();
6137
6139
  var _b = useState([]), authTypes = _b[0], setAuthTypes = _b[1];
6138
6140
  var _c = useState(true), isLoading = _c[0], setIsLoading = _c[1];
6139
6141
  var theme = useTheme();
@@ -6169,7 +6171,7 @@ var AuthTypeSelector = function (_a) {
6169
6171
  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))));
6170
6172
  };
6171
6173
 
6172
- var useStyles$a = makeStyles(function (theme) { return ({
6174
+ var useStyles$c = makeStyles(function (theme) { return ({
6173
6175
  root: {
6174
6176
  "& .MuiSelect-select": {
6175
6177
  height: "auto",
@@ -6210,7 +6212,7 @@ var MenuProps = {
6210
6212
  };
6211
6213
  var ProfilesPicker = function (_a) {
6212
6214
  var value = _a.value, onChange = _a.onChange; _a.userIdForDelete; var setprofileError = _a.setprofileError, disabled = _a.disabled;
6213
- var classes = useStyles$a();
6215
+ var classes = useStyles$c();
6214
6216
  var theme = useTheme();
6215
6217
  var _b = useState(true), isLoading = _b[0], setIsLoading = _b[1];
6216
6218
  var _c = useState([]), profiles = _c[0], setProfiles = _c[1];
@@ -6250,7 +6252,7 @@ var ProfilesPicker = function (_a) {
6250
6252
  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))));
6251
6253
  };
6252
6254
 
6253
- var useStyles$9 = makeStyles(function (theme) { return ({
6255
+ var useStyles$b = makeStyles(function (theme) { return ({
6254
6256
  checkbox: {
6255
6257
  userSelect: "none"
6256
6258
  },
@@ -6272,7 +6274,7 @@ var CreateUser = function (_a) {
6272
6274
  var _f = useState(false), isSubmitLoading = _f[0], setIsSubmitLoading = _f[1];
6273
6275
  var _g = useState(""), error = _g[0], setError = _g[1];
6274
6276
  var _h = useState(""), profileError = _h[0], setprofileError = _h[1];
6275
- var classes = useStyles$9();
6277
+ var classes = useStyles$b();
6276
6278
  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;
6277
6279
  var handleClose = function (event, reason) {
6278
6280
  if (reason === "clickaway") {
@@ -6487,7 +6489,7 @@ var DeleteUser = function (_a) {
6487
6489
  React__default.createElement(ErrorModal, { error: profileError, onHide: function () { return setprofileError(""); }, title: "Error Choosing Profile" })));
6488
6490
  };
6489
6491
 
6490
- var useStyles$8 = makeStyles(function (theme) { return ({
6492
+ var useStyles$a = makeStyles(function (theme) { return ({
6491
6493
  checkbox: {
6492
6494
  userSelect: "none"
6493
6495
  },
@@ -6506,7 +6508,7 @@ var useStyles$8 = makeStyles(function (theme) { return ({
6506
6508
  var EditUser = function (_a) {
6507
6509
  var _b, _c, _d;
6508
6510
  var userId = _a.userId, show = _a.show, onHide = _a.onHide;
6509
- var classes = useStyles$8();
6511
+ var classes = useStyles$a();
6510
6512
  var _e = useState(false), open = _e[0], setOpen = _e[1];
6511
6513
  var _f = useState(false), isLoading = _f[0], setIsLoading = _f[1];
6512
6514
  var _g = useState(false), isSubmitLoading = _g[0], setIsSubmitLoading = _g[1];
@@ -6657,7 +6659,7 @@ var UsersProvider = function (_a) {
6657
6659
  return (React__default.createElement(UsersContext.Provider, { value: { state: state, actions: actions } }, children));
6658
6660
  };
6659
6661
 
6660
- var useStyles$7 = makeStyles(function (theme) { return ({
6662
+ var useStyles$9 = makeStyles(function (theme) { return ({
6661
6663
  buttons: {
6662
6664
  opacity: 0,
6663
6665
  transition: "opacity 0.1s ease-in-out",
@@ -6673,7 +6675,7 @@ var useStyles$7 = makeStyles(function (theme) { return ({
6673
6675
  }
6674
6676
  }); });
6675
6677
  var buttonsCellRenderer = function (params) {
6676
- var classes = useStyles$7();
6678
+ var classes = useStyles$9();
6677
6679
  var setUserId = params.setUserId, setOpenModalEditDataUser = params.setOpenModalEditDataUser, setOpenModalDeleteUser = params.setOpenModalDeleteUser, setOpenModalChangePasswordd = params.setOpenModalChangePasswordd, showContextMenu = params.showContextMenu;
6678
6680
  return (React__default.createElement(Grid, { container: true, style: {
6679
6681
  height: "100%",
@@ -6872,7 +6874,7 @@ var useUsersOptionsFunctions = function (_a) {
6872
6874
  };
6873
6875
  };
6874
6876
 
6875
- var useStyles$6 = makeStyles(function (theme) { return ({
6877
+ var useStyles$8 = makeStyles(function (theme) { return ({
6876
6878
  root: {
6877
6879
  "& .ag-icon-menu": {
6878
6880
  display: "none"
@@ -6943,7 +6945,7 @@ var TableUsers = function (_a) {
6943
6945
  var _c = useState(false), openModalEditDataUser = _c[0], setOpenModalEditDataUser = _c[1];
6944
6946
  var _d = useState(false), openModalDeleteUser = _d[0], setOpenModalDeleteUser = _d[1];
6945
6947
  var _e = useState(false), openModalChangePassword = _e[0], setOpenModalChangePasswordd = _e[1];
6946
- var classes = useStyles$6();
6948
+ var classes = useStyles$8();
6947
6949
  var _f = useState(null), userId = _f[0], setUserId = _f[1];
6948
6950
  var _g = useState(null), gridApi = _g[0], setGridApi = _g[1];
6949
6951
  var loadingOverlayComponent = useMemo(function () {
@@ -7583,10 +7585,9 @@ var MESApiService = /** @class */ (function () {
7583
7585
  return [2 /*return*/, { ok: true, data: response.data }];
7584
7586
  case 3:
7585
7587
  err_1 = _a.sent();
7586
- // console.log("fromCatch", err);
7587
7588
  this.hasErrors = true;
7588
7589
  this.error = err_1;
7589
- return [2 /*return*/, { ok: false, message: err_1.toString() }];
7590
+ return [2 /*return*/, { ok: false, message: getError(err_1) }];
7590
7591
  case 4: return [2 /*return*/];
7591
7592
  }
7592
7593
  });
@@ -8283,7 +8284,7 @@ var getShiftsRangeByParameters = function (period, Start, End, StartShiftId, End
8283
8284
  });
8284
8285
  };
8285
8286
 
8286
- var useStyles$5 = makeStyles(function (theme) {
8287
+ var useStyles$7 = makeStyles(function (theme) {
8287
8288
  var _a, _b, _c;
8288
8289
  return ({
8289
8290
  container: {
@@ -8331,7 +8332,7 @@ var moment = getMomentTz();
8331
8332
  var ShiftPeriodNavigatorControl = function (_a) {
8332
8333
  var _b;
8333
8334
  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;
8334
- var classes = useStyles$5();
8335
+ var classes = useStyles$7();
8335
8336
  var _f = useState(((_b = periodOptions[0]) === null || _b === void 0 ? void 0 : _b.value) || "Day"), period = _f[0], setPeriod = _f[1];
8336
8337
  var _g = useState(false), loadingShiftPeriodList = _g[0], setLoadingShiftPeriodList = _g[1];
8337
8338
  var _h = useState(""); _h[0]; var setError = _h[1];
@@ -8546,7 +8547,7 @@ var ShiftPeriodNavigatorControl = function (_a) {
8546
8547
  React__default.createElement(SkipNextIcon, null)))));
8547
8548
  };
8548
8549
 
8549
- var useStyles$4 = makeStyles(function (theme) { return ({
8550
+ var useStyles$6 = makeStyles(function (theme) { return ({
8550
8551
  contextMenu: {
8551
8552
  backgroundColor: "#fff",
8552
8553
  borderRadius: "2px",
@@ -8638,7 +8639,7 @@ var useContextMenuMESF = function () { return useContext(ContextMenuMESFContext)
8638
8639
 
8639
8640
  var ContextMenu$1 = function () {
8640
8641
  var _a = useContextMenuMESF(), show = _a.show, position = _a.position, options = _a.options;
8641
- var classes = useStyles$4();
8642
+ var classes = useStyles$6();
8642
8643
  var menuRef = useRef(null);
8643
8644
  var _b = useState("0"), x = _b[0], setX = _b[1];
8644
8645
  var _c = useState("0"), y = _c[0], setY = _c[1];
@@ -9502,6 +9503,309 @@ function Header$1(_a) {
9502
9503
  React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(""); } })));
9503
9504
  }
9504
9505
 
9506
+ var useStyles$5 = makeStyles(function (theme) { return ({
9507
+ root: {
9508
+ width: "100%",
9509
+ maxWidth: 800,
9510
+ margin: "0 auto",
9511
+ padding: theme.spacing(3)
9512
+ },
9513
+ messageList: {
9514
+ height: 400,
9515
+ overflow: "auto",
9516
+ marginBottom: theme.spacing(2),
9517
+ padding: theme.spacing(2),
9518
+ backgroundColor: theme.palette.background["default"]
9519
+ },
9520
+ messageForm: {
9521
+ display: "flex",
9522
+ gap: theme.spacing(2)
9523
+ },
9524
+ messageInput: {
9525
+ flexGrow: 1
9526
+ },
9527
+ timestamp: {
9528
+ color: theme.palette.text.secondary,
9529
+ fontSize: "0.8rem"
9530
+ },
9531
+ statusChip: {
9532
+ marginBottom: theme.spacing(2)
9533
+ }
9534
+ }); });
9535
+ var ChatComponent = function () {
9536
+ var classes = useStyles$5();
9537
+ var _a = useState("/ws"), hubUrl = _a[0]; _a[1];
9538
+ var _b = useState(null), connection = _b[0], setConnection = _b[1];
9539
+ var _c = useState({
9540
+ isConnected: false
9541
+ }), connectionState = _c[0], setConnectionState = _c[1];
9542
+ var _d = useState([]), messages = _d[0], setMessages = _d[1];
9543
+ var _e = useState(""), user = _e[0], setUser = _e[1];
9544
+ var _f = useState(""), message = _f[0], setMessage = _f[1];
9545
+ var messageEndRef = useRef(null);
9546
+ var latestMessages = useRef([]);
9547
+ latestMessages.current = messages;
9548
+ var scrollToBottom = function () {
9549
+ var _a;
9550
+ (_a = messageEndRef.current) === null || _a === void 0 ? void 0 : _a.scrollIntoView({ behavior: "smooth" });
9551
+ };
9552
+ useEffect(function () {
9553
+ scrollToBottom();
9554
+ }, [messages]);
9555
+ var startConnection = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
9556
+ var newConnection, err_1;
9557
+ return __generator(this, function (_a) {
9558
+ switch (_a.label) {
9559
+ case 0:
9560
+ _a.trys.push([0, 2, , 3]);
9561
+ newConnection = new HubConnectionBuilder()
9562
+ .withUrl(hubUrl)
9563
+ .withAutomaticReconnect()
9564
+ .configureLogging(LogLevel$1.Information)
9565
+ .build();
9566
+ newConnection.on("ReceiveMessage", function (user, message) {
9567
+ var newMessage = {
9568
+ user: user,
9569
+ message: message,
9570
+ timestamp: new Date()
9571
+ };
9572
+ setMessages(function (prev) { return __spreadArray(__spreadArray([], prev, true), [newMessage], false); });
9573
+ });
9574
+ newConnection.on("UserConnected", function (connectionId) {
9575
+ console.log("User connected: ".concat(connectionId));
9576
+ setConnectionState(function (prev) { return (__assign(__assign({}, prev), { isConnected: true, connectionId: connectionId })); });
9577
+ });
9578
+ newConnection.on("UserDisconnected", function (connectionId) {
9579
+ console.log("User disconnected: ".concat(connectionId));
9580
+ if (connectionId === connectionState.connectionId) {
9581
+ setConnectionState(function (prev) { return (__assign(__assign({}, prev), { isConnected: false, connectionId: undefined })); });
9582
+ }
9583
+ });
9584
+ return [4 /*yield*/, newConnection.start()];
9585
+ case 1:
9586
+ _a.sent();
9587
+ setConnection(newConnection);
9588
+ console.log("SignalR Connected");
9589
+ return [3 /*break*/, 3];
9590
+ case 2:
9591
+ err_1 = _a.sent();
9592
+ console.error("SignalR Connection Error:", err_1);
9593
+ setConnectionState(function (prev) { return (__assign(__assign({}, prev), { isConnected: false, error: err_1 })); });
9594
+ return [3 /*break*/, 3];
9595
+ case 3: return [2 /*return*/];
9596
+ }
9597
+ });
9598
+ }); }, [hubUrl]);
9599
+ useEffect(function () {
9600
+ startConnection();
9601
+ return function () {
9602
+ connection === null || connection === void 0 ? void 0 : connection.stop();
9603
+ };
9604
+ }, [startConnection]);
9605
+ var sendMessage = function (e) { return __awaiter(void 0, void 0, void 0, function () {
9606
+ var err_2;
9607
+ return __generator(this, function (_a) {
9608
+ switch (_a.label) {
9609
+ case 0:
9610
+ e.preventDefault();
9611
+ if (!connection || !message || !user)
9612
+ return [2 /*return*/];
9613
+ _a.label = 1;
9614
+ case 1:
9615
+ _a.trys.push([1, 3, , 4]);
9616
+ return [4 /*yield*/, connection.invoke("SendMessage", user, message)];
9617
+ case 2:
9618
+ _a.sent();
9619
+ setMessage("");
9620
+ return [3 /*break*/, 4];
9621
+ case 3:
9622
+ err_2 = _a.sent();
9623
+ console.error("Error sending message:", err_2);
9624
+ return [3 /*break*/, 4];
9625
+ case 4: return [2 /*return*/];
9626
+ }
9627
+ });
9628
+ }); };
9629
+ return (React__default.createElement(Paper, { className: classes.root, elevation: 3 },
9630
+ React__default.createElement(Box, { mb: 2 },
9631
+ React__default.createElement(Chip, { label: connectionState.isConnected ? "Connected" : "Disconnected", color: connectionState.isConnected ? "primary" : "default", className: classes.statusChip }),
9632
+ connectionState.error && (React__default.createElement(Typography$1, { color: "error" },
9633
+ "Error: ",
9634
+ connectionState.error.message))),
9635
+ React__default.createElement(Paper, { className: classes.messageList, variant: "outlined" },
9636
+ React__default.createElement(List, null,
9637
+ messages.map(function (msg, index) { return (React__default.createElement(ListItem, { key: index },
9638
+ React__default.createElement(ListItemText, { primary: React__default.createElement(Typography$1, null,
9639
+ React__default.createElement("strong", null,
9640
+ msg.user,
9641
+ ":"),
9642
+ " ",
9643
+ msg.message), secondary: React__default.createElement("span", { className: classes.timestamp }, msg.timestamp.toLocaleTimeString()) }))); }),
9644
+ React__default.createElement("div", { ref: messageEndRef }))),
9645
+ React__default.createElement("form", { onSubmit: sendMessage, className: classes.messageForm },
9646
+ React__default.createElement(TextField, { value: user, onChange: function (e) { return setUser(e.target.value); }, label: "Your name", variant: "outlined", size: "small" }),
9647
+ React__default.createElement(TextField, { className: classes.messageInput, value: message, onChange: function (e) { return setMessage(e.target.value); }, label: "Type a message", variant: "outlined", size: "small" }),
9648
+ React__default.createElement(Button, { type: "submit", variant: "contained", color: "primary", disabled: !connectionState.isConnected || !user || !message, endIcon: React__default.createElement(Send, null) }, "Send"))));
9649
+ };
9650
+
9651
+ var useStyles$4 = makeStyles(function (theme) { return ({
9652
+ root: {
9653
+ height: "100vh",
9654
+ padding: theme.spacing(4)
9655
+ },
9656
+ header: {
9657
+ marginBottom: theme.spacing(4),
9658
+ display: "flex",
9659
+ justifyContent: "space-between",
9660
+ alignItems: "center"
9661
+ },
9662
+ gridContainer: {
9663
+ height: "75%",
9664
+ width: "100%"
9665
+ },
9666
+ autocomplete: {
9667
+ marginTop: theme.spacing(2),
9668
+ marginBottom: theme.spacing(2)
9669
+ }
9670
+ }); });
9671
+ var QueryCacheInvalidations = function () {
9672
+ var classes = useStyles$4();
9673
+ var _a = useState([]), rowData = _a[0], setRowData = _a[1];
9674
+ var _b = useState([]), actions = _b[0], setActions = _b[1];
9675
+ var _c = useState(""), modal = _c[0], setModal = _c[1];
9676
+ var _d = useState(null); _d[0]; var setSelectedRow = _d[1];
9677
+ var _e = useState(""); _e[0]; var setNotification = _e[1];
9678
+ var _f = useState(false), isLoading = _f[0], setIsLoading = _f[1];
9679
+ var _g = useForm({
9680
+ defaultValues: {
9681
+ source: null,
9682
+ targets: []
9683
+ }
9684
+ }), control = _g.control, reset = _g.reset, handleSubmit = _g.handleSubmit; _g.setValue;
9685
+ var columnDefs = [
9686
+ { field: "SourceId", headerName: "Source ID" },
9687
+ { field: "Source", headerName: "Source" },
9688
+ { field: "TargetsCSV", headerName: "Targets" },
9689
+ {
9690
+ headerName: "Actions",
9691
+ cellRenderer: function (params) { return (React__default.createElement(Box, null,
9692
+ React__default.createElement(Button, { variant: "contained", color: "primary", onClick: function () { return handleEdit(params.data); } }, "Edit"))); }
9693
+ },
9694
+ ];
9695
+ var fetchData = function () { return __awaiter(void 0, void 0, void 0, function () {
9696
+ var api, resp, error_1;
9697
+ return __generator(this, function (_a) {
9698
+ switch (_a.label) {
9699
+ case 0:
9700
+ _a.trys.push([0, 2, , 3]);
9701
+ api = new MESApiService();
9702
+ return [4 /*yield*/, api.callV2("[SYSTEM].[GetQueryCacheInvalidations]", [])];
9703
+ case 1:
9704
+ resp = _a.sent();
9705
+ if (resp.ok && resp.data) {
9706
+ setRowData(resp.data.tables[0].rows);
9707
+ setActions(resp.data.tables[1].rows);
9708
+ }
9709
+ else {
9710
+ setNotification("Failed to fetch data");
9711
+ }
9712
+ return [3 /*break*/, 3];
9713
+ case 2:
9714
+ error_1 = _a.sent();
9715
+ setNotification("Failed to fetch data");
9716
+ console.error("Fetch error:", error_1);
9717
+ return [3 /*break*/, 3];
9718
+ case 3: return [2 /*return*/];
9719
+ }
9720
+ });
9721
+ }); };
9722
+ useEffect(function () {
9723
+ fetchData();
9724
+ }, []);
9725
+ var handleAdd = function () {
9726
+ reset({
9727
+ source: null,
9728
+ targets: []
9729
+ });
9730
+ setModal("add");
9731
+ };
9732
+ var handleEdit = function (row) {
9733
+ setSelectedRow(row);
9734
+ var targetsIds = row.TargetsCSV.split(",").map(Number);
9735
+ reset({
9736
+ source: actions.find(function (a) { return a.ActionId === row.SourceId; }) || null,
9737
+ targets: actions.filter(function (a) { return targetsIds.includes(a.ActionId); })
9738
+ });
9739
+ setModal("edit");
9740
+ };
9741
+ var onSubmit = function (data) { return __awaiter(void 0, void 0, void 0, function () {
9742
+ var api, resp, error_2;
9743
+ return __generator(this, function (_a) {
9744
+ switch (_a.label) {
9745
+ case 0:
9746
+ if (!data.source)
9747
+ return [2 /*return*/];
9748
+ setIsLoading(true);
9749
+ _a.label = 1;
9750
+ case 1:
9751
+ _a.trys.push([1, 3, , 4]);
9752
+ api = new MESApiService();
9753
+ return [4 /*yield*/, api.callV2("[SYSTEM].[UpsertQueryCacheInvalidations]", [
9754
+ {
9755
+ name: "SourceId",
9756
+ value: data.source.ActionId
9757
+ },
9758
+ {
9759
+ name: "TargetsCSV",
9760
+ value: data.targets.map(function (t) { return t.ActionId; }).join(",")
9761
+ },
9762
+ ])];
9763
+ case 2:
9764
+ resp = _a.sent();
9765
+ if (resp.ok) {
9766
+ setNotification("Operation successful");
9767
+ setModal("");
9768
+ fetchData();
9769
+ }
9770
+ else {
9771
+ setNotification("Operation failed");
9772
+ }
9773
+ return [3 /*break*/, 4];
9774
+ case 3:
9775
+ error_2 = _a.sent();
9776
+ setNotification("Failed to perform operation");
9777
+ console.error("Operation error:", error_2);
9778
+ return [3 /*break*/, 4];
9779
+ case 4:
9780
+ setIsLoading(false);
9781
+ return [2 /*return*/];
9782
+ }
9783
+ });
9784
+ }); };
9785
+ return (React__default.createElement(Box, { className: classes.root },
9786
+ React__default.createElement(Box, { className: classes.header },
9787
+ React__default.createElement(Typography$1, { variant: "h4", component: "h2" }, "Query Cache Invalidations"),
9788
+ React__default.createElement(Button, { variant: "contained", color: "primary", onClick: handleAdd }, "Add New")),
9789
+ React__default.createElement(Box, { className: "".concat(classes.gridContainer, " ag-theme-material") },
9790
+ React__default.createElement(AgGridReact, { rowData: rowData, columnDefs: columnDefs, defaultColDef: { flex: 1 } })),
9791
+ React__default.createElement(MesfModal, { title: modal === "add" ? "Add Cache Invalidation" : "Edit Cache Invalidation", open: ["add", "edit"].includes(modal), handleClose: function () { return setModal(""); } },
9792
+ React__default.createElement("form", { onSubmit: handleSubmit(onSubmit) },
9793
+ React__default.createElement(MesfModal.Content, { dividers: true },
9794
+ React__default.createElement(Grid, { container: true, spacing: 3 },
9795
+ React__default.createElement(Grid, { item: true, xs: 12 },
9796
+ 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" })); } })),
9797
+ React__default.createElement(Grid, { item: true, xs: 12 },
9798
+ 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) {
9799
+ params.field.onChange(value);
9800
+ }, renderInput: function (params) { return (React__default.createElement(TextField, __assign({}, params, { label: "Select Target Actions", variant: "outlined" }))); }, className: classes.autocomplete })); } })))),
9801
+ React__default.createElement(MesfModal.Actions, null,
9802
+ React__default.createElement(Grid, { container: true, spacing: 2, justifyContent: "flex-end" },
9803
+ React__default.createElement(Grid, { item: true, md: 3, xs: 12, style: { margin: 0 } },
9804
+ React__default.createElement(Button, { fullWidth: true, variant: "contained", color: "default", onClick: function () { return setModal(""); } }, "Cancel")),
9805
+ React__default.createElement(Grid, { item: true, md: 3, xs: 12, style: { margin: 0 } },
9806
+ React__default.createElement(Button, { fullWidth: true, startIcon: isLoading && React__default.createElement(CircularProgress, { size: "1rem" }), disabled: isLoading, variant: "contained", color: "primary", type: "submit" }, "Save"))))))));
9807
+ };
9808
+
9505
9809
  var SettingsInitialState = {
9506
9810
  settings: [],
9507
9811
  settingSelected: null
@@ -10282,6 +10586,16 @@ function Configuration() {
10282
10586
  path: "settings",
10283
10587
  sidebar: function () { return React__default.createElement("div", null, "Settings"); },
10284
10588
  main: function () { return React__default.createElement(Settings, null); }
10589
+ },
10590
+ {
10591
+ path: "real-time/client",
10592
+ sidebar: function () { return React__default.createElement("div", null, "Client"); },
10593
+ main: function () { return React__default.createElement(ChatComponent, null); }
10594
+ },
10595
+ {
10596
+ path: "real-time/config",
10597
+ sidebar: function () { return React__default.createElement("div", null, "Config"); },
10598
+ main: function () { return React__default.createElement(QueryCacheInvalidations, null); }
10285
10599
  }
10286
10600
  ], customConfiguration, true);
10287
10601
  return (React__default.createElement(GenericPanel, { title: "Configuration", description: "" },
@@ -10300,6 +10614,12 @@ function Configuration() {
10300
10614
  React__default.createElement(MenuItem, { selected: option === "profiles", className: "p-0" },
10301
10615
  React__default.createElement(Link, { to: "/configuration/profiles", className: "nav-link" }, "Profiles"))),
10302
10616
  React__default.createElement(CustomSidebar, { option: option }),
10617
+ React__default.createElement("h3", { className: "mes-menu-group" }, "Real Time"),
10618
+ React__default.createElement(MenuList, { className: "mes-submenu" },
10619
+ React__default.createElement(MenuItem, { selected: option === "real-time", className: "p-0" },
10620
+ React__default.createElement(Link, { to: "/configuration/real-time/client", className: "nav-link" }, "Client")),
10621
+ React__default.createElement(MenuItem, { selected: option === "real-time", className: "p-0" },
10622
+ React__default.createElement(Link, { to: "/configuration/real-time/config", className: "nav-link" }, "Config"))),
10303
10623
  React__default.createElement("h3", { className: "mes-menu-group" }, "Maintenance"),
10304
10624
  React__default.createElement(MenuList, { className: "mes-submenu" },
10305
10625
  React__default.createElement(MenuItem, { selected: option === "logs", className: "p-0" },
@@ -13449,5 +13769,5 @@ var areaSelector = /*#__PURE__*/Object.freeze({
13449
13769
  AreaSelector: AreaSelector
13450
13770
  });
13451
13771
 
13452
- 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, HorizontalTextControl, IntegerFormatter, Login, Logout, LongFilterPanel, MESApiService, MESFMain, MESSAGE_API, MESSAGE_ERRORS, MasterDetailPanel, MesfModal, ModalTreeFilterControl, MultipleSelectorControl, NumberFormatter, NumericTextControl, ShiftDayNavigatorControl, ShiftNavigatorProvider, ShiftPeriodNavigatorControl, SimplePasswordControl, SimpleSelectorControl, SimpleTextAreaControl, SimpleTextControl, TimeFormatter, TimeService, TreePickerControl, TreePickerControlV2, TrendingsPage, USER_LABELS, UTLSettingsProvider, UploadFileControl, UserProvider, axiosInstance, deleteUser, dxtServerTimeZone, dxtToLocalServerTime, dxtToUTC, formatNumber, getAuthTypes, getCrewStyle, getDataUser, getError, getMomentTz, getProfiles, getShiftByParameters, getShiftStyle, getShiftsRangeByParameters, getTokenFromLS, getUsers, renewToken, setPassword, setProfilesToUser, upsertUser, useAssetContext, useContextMenuMESF, useShiftNavigator, useShiftNavigatorManager, useStyles$4 as useStyles, useToken, useUTLSettingsContext, useUserContext };
13772
+ 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, HorizontalTextControl, IntegerFormatter, Login, Logout, LongFilterPanel, MESApiService, MESFMain, MESSAGE_API, MESSAGE_ERRORS, MasterDetailPanel, MesfModal, ModalTreeFilterControl, MultipleSelectorControl, NumberFormatter, NumericTextControl, ShiftDayNavigatorControl, ShiftNavigatorProvider, ShiftPeriodNavigatorControl, SimplePasswordControl, SimpleSelectorControl, SimpleTextAreaControl, SimpleTextControl, TimeFormatter, TimeService, TreePickerControl, TreePickerControlV2, TrendingsPage, USER_LABELS, UTLSettingsProvider, UploadFileControl, UserProvider, axiosInstance, deleteUser, dxtServerTimeZone, dxtToLocalServerTime, dxtToUTC, formatNumber, getAuthTypes, getCrewStyle, getDataUser, getError, getMomentTz, getProfiles, getShiftByParameters, getShiftStyle, getShiftsRangeByParameters, getTokenFromLS, getUsers, renewToken, setPassword, setProfilesToUser, upsertUser, useAssetContext, useContextMenuMESF, useShiftNavigator, useShiftNavigatorManager, useStyles$6 as useStyles, useToken, useUTLSettingsContext, useUserContext };
13453
13773
  //# sourceMappingURL=index.esm.js.map