@dexteel/mesf-core 5.13.1 → 5.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -10,16 +10,18 @@ import CloseIcon from '@material-ui/icons/Close';
10
10
  import Alert$3 from '@material-ui/lab/Alert';
11
11
  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';
12
12
  import { DatePicker } from '@mui/x-date-pickers/DatePicker';
13
- import moment$2 from 'moment-timezone';
13
+ import moment$1 from 'moment-timezone';
14
14
  import { useParams, useNavigate, useSearchParams, Link, Navigate, Routes, Route, useLocation, BrowserRouter } from 'react-router-dom';
15
+ import moment from 'moment';
16
+ import { Alert as Alert$2, AlertTitle, Autocomplete } from '@material-ui/lab';
15
17
  import AccountCircleIcon from '@material-ui/icons/AccountCircle';
16
18
  import { Helmet, HelmetProvider } from 'react-helmet-async';
19
+ import { useQuery, QueryClient, QueryClientProvider } from '@tanstack/react-query';
17
20
  import { themeMaterial } from 'ag-grid-community';
18
21
  import { AgGridReact } from 'ag-grid-react';
19
22
  import MomentUtils from '@date-io/moment';
20
23
  import { MuiPickersUtilsProvider, KeyboardDatePicker, KeyboardTimePicker } from '@material-ui/pickers';
21
- import moment$3 from 'moment';
22
- import { isNil as isNil$1, get as get$1 } from 'lodash';
24
+ import { get as get$1, isNil as isNil$1 } from 'lodash';
23
25
  import EditIcon from '@material-ui/icons/Edit';
24
26
  import PlaylistAddIcon from '@material-ui/icons/PlaylistAdd';
25
27
  import { DndProvider } from 'react-dnd';
@@ -34,7 +36,6 @@ import { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment';
34
36
  import MenuIcon from '@material-ui/icons/Menu';
35
37
  import Settings$1 from '@material-ui/icons/Settings';
36
38
  import ShowChartIcon from '@material-ui/icons/ShowChart';
37
- import { Alert as Alert$2, Autocomplete } from '@material-ui/lab';
38
39
  import SearchIcon from '@material-ui/icons/Search';
39
40
  import FormatListBulletedSharpIcon from '@material-ui/icons/FormatListBulletedSharp';
40
41
  import axios from 'axios';
@@ -1545,7 +1546,6 @@ var useShiftNavigatorManager = function () {
1545
1546
  var _a = useState(null), shiftInfo = _a[0], setShiftInfo = _a[1];
1546
1547
  var _b = useState(false); _b[0]; var setIsShiftInfoLoading = _b[1];
1547
1548
  var _c = useState(""); _c[0]; var setError = _c[1];
1548
- var moment = getMomentTz();
1549
1549
  var moveShift = function (direction) { return __awaiter(void 0, void 0, void 0, function () {
1550
1550
  var shiftId, resp, shift;
1551
1551
  return __generator(this, function (_a) {
@@ -1734,13 +1734,13 @@ var ShiftDayNavigatorControl = function (_a) {
1734
1734
  case 2:
1735
1735
  resp = _a.sent();
1736
1736
  if (resp.ok) {
1737
- shift = __assign(__assign({}, resp.data), { CurrentProductionDate: moment$2
1737
+ shift = __assign(__assign({}, resp.data), { CurrentProductionDate: moment$1
1738
1738
  .utc(resp.data.CurrentProductionDate)
1739
- .toDate(), CurrentStart: moment$2.utc(resp.data.CurrentStart).toDate(), CurrentEnd: moment$2.utc(resp.data.CurrentEnd).toDate(), PreviousProductionDate: moment$2
1739
+ .toDate(), CurrentStart: moment$1.utc(resp.data.CurrentStart).toDate(), CurrentEnd: moment$1.utc(resp.data.CurrentEnd).toDate(), PreviousProductionDate: moment$1
1740
1740
  .utc(resp.data.PreviousProductionDate)
1741
- .toDate(), PreviousStart: moment$2.utc(resp.data.PreviousStart).toDate(), PreviousEnd: moment$2.utc(resp.data.PreviousEnd).toDate(), LastProductionDate: moment$2
1741
+ .toDate(), PreviousStart: moment$1.utc(resp.data.PreviousStart).toDate(), PreviousEnd: moment$1.utc(resp.data.PreviousEnd).toDate(), LastProductionDate: moment$1
1742
1742
  .utc(resp.data.LastProductionDate)
1743
- .toDate(), LastStart: moment$2.utc(resp.data.LastStart).toDate(), LastEnd: moment$2.utc(resp.data.LastEnd).toDate() });
1743
+ .toDate(), LastStart: moment$1.utc(resp.data.LastStart).toDate(), LastEnd: moment$1.utc(resp.data.LastEnd).toDate() });
1744
1744
  setShiftInfoCopy(shift);
1745
1745
  }
1746
1746
  return [3 /*break*/, 4];
@@ -1784,7 +1784,7 @@ var ShiftDayNavigatorControl = function (_a) {
1784
1784
  }, size: "small" },
1785
1785
  React__default.createElement(ArrowBackRounded, null)))),
1786
1786
  React__default.createElement(Grid, { item: true },
1787
- React__default.createElement(DatePicker, { label: "Current Date", timezone: "UTC", format: "MM/DD/YYYY", maxDate: moment$2(), closeOnSelect: true, formatDensity: "dense", value: moment$2(shiftInfo === null || shiftInfo === void 0 ? void 0 : shiftInfo.CurrentProductionDate), onChange: function (date) {
1787
+ React__default.createElement(DatePicker, { label: "Current Date", timezone: "UTC", format: "MM/DD/YYYY", maxDate: moment$1(), closeOnSelect: true, formatDensity: "dense", value: moment$1(shiftInfo === null || shiftInfo === void 0 ? void 0 : shiftInfo.CurrentProductionDate), onChange: function (date) {
1788
1788
  if (date) {
1789
1789
  getShiftDataFromAPI(date.toDate(), 0).then(function () { });
1790
1790
  }
@@ -1866,8 +1866,8 @@ var getShiftsRangeByParameters = function (period_1) {
1866
1866
  if (resp.ok) {
1867
1867
  data = resp.data;
1868
1868
  data.tables[0].rows.map(function (shift) {
1869
- shift.Start = moment$2.utc(shift["Start"]).toDate();
1870
- shift.End = moment$2.utc(shift["End"]).toDate();
1869
+ shift.Start = moment$1.utc(shift["Start"]).toDate();
1870
+ shift.End = moment$1.utc(shift["End"]).toDate();
1871
1871
  });
1872
1872
  return [2 /*return*/, {
1873
1873
  ok: true,
@@ -1952,13 +1952,13 @@ var ShiftPeriodNavigatorControl = function (_a) {
1952
1952
  case 1:
1953
1953
  _a.trys.push([1, 6, , 7]);
1954
1954
  if (!(direction === "prev" && (startShift === null || startShift === void 0 ? void 0 : startShift.Start))) return [3 /*break*/, 3];
1955
- return [4 /*yield*/, searchShiftsRangeByParameters(period, moment$2(startShift.Start).toDate(), null, false, "prev")];
1955
+ return [4 /*yield*/, searchShiftsRangeByParameters(period, moment$1(startShift.Start).toDate(), null, false, "prev")];
1956
1956
  case 2:
1957
1957
  _a.sent();
1958
1958
  return [3 /*break*/, 5];
1959
1959
  case 3:
1960
1960
  if (!(direction === "next" && (endShift === null || endShift === void 0 ? void 0 : endShift.End))) return [3 /*break*/, 5];
1961
- return [4 /*yield*/, searchShiftsRangeByParameters(period, null, moment$2(endShift.End).toDate(), false, "next")];
1961
+ return [4 /*yield*/, searchShiftsRangeByParameters(period, null, moment$1(endShift.End).toDate(), false, "next")];
1962
1962
  case 4:
1963
1963
  _a.sent();
1964
1964
  _a.label = 5;
@@ -2114,8 +2114,8 @@ var ShiftPeriodNavigatorControl = function (_a) {
2114
2114
  newPeriod = e.target.value;
2115
2115
  setPeriod(newPeriod);
2116
2116
  if (!(newPeriod === "Custom")) return [3 /*break*/, 2];
2117
- today = moment$2();
2118
- yesterday = moment$2().subtract(1, "day");
2117
+ today = moment$1();
2118
+ yesterday = moment$1().subtract(1, "day");
2119
2119
  setCustomStartDate(yesterday);
2120
2120
  setCustomEndDate(today);
2121
2121
  return [4 /*yield*/, searchShiftsRangeByParameters("Custom", yesterday.toDate(), today.toDate(), false)];
@@ -2125,7 +2125,7 @@ var ShiftPeriodNavigatorControl = function (_a) {
2125
2125
  case 2:
2126
2126
  setCustomStartDate(null);
2127
2127
  setCustomEndDate(null);
2128
- return [4 /*yield*/, searchShiftsRangeByParameters(newPeriod, null, (endShift === null || endShift === void 0 ? void 0 : endShift.Start) ? moment$2(endShift.Start).toDate() : null, false)];
2128
+ return [4 /*yield*/, searchShiftsRangeByParameters(newPeriod, null, (endShift === null || endShift === void 0 ? void 0 : endShift.Start) ? moment$1(endShift.Start).toDate() : null, false)];
2129
2129
  case 3:
2130
2130
  _a.sent();
2131
2131
  _a.label = 4;
@@ -2165,10 +2165,10 @@ var ShiftPeriodNavigatorControl = function (_a) {
2165
2165
  React__default.createElement(ChevronLeft, null))),
2166
2166
  React__default.createElement("div", { className: "".concat(classes.gridItem, " ").concat(classes.datePickerWrapper) },
2167
2167
  React__default.createElement(DatePicker$1, { label: "Start", format: dateFormat, value: isCustomMode
2168
- ? customStartDate || moment$2().subtract(1, "day")
2169
- : moment$2((startShift === null || startShift === void 0 ? void 0 : startShift.Start) || moment$2().subtract(1, "day")), onChange: function (value) {
2170
- return handleDateChange(value ? moment$2(value) : null, "start");
2171
- }, disabled: loadingShiftPeriodList, maxDate: isCustomMode ? moment$2() : undefined, enableAccessibleFieldDOMStructure: false, slots: {
2168
+ ? customStartDate || moment$1().subtract(1, "day")
2169
+ : moment$1((startShift === null || startShift === void 0 ? void 0 : startShift.Start) || moment$1().subtract(1, "day")), onChange: function (value) {
2170
+ return handleDateChange(value ? moment$1(value) : null, "start");
2171
+ }, disabled: loadingShiftPeriodList, maxDate: isCustomMode ? moment$1() : undefined, enableAccessibleFieldDOMStructure: false, slots: {
2172
2172
  textField: function (props) { return (React__default.createElement(TextField, __assign({}, props, { size: "small", variant: "outlined", fullWidth: true, style: { width: "100%" }, InputProps: __assign(__assign({}, props.InputProps), { style: { paddingTop: "2px" } }) }))); },
2173
2173
  openPickerIcon: function () { return (React__default.createElement("div", { style: {
2174
2174
  display: "flex",
@@ -2187,10 +2187,10 @@ var ShiftPeriodNavigatorControl = function (_a) {
2187
2187
  } }, periodOptions.map(function (option) { return (React__default.createElement(MenuItem, { key: option.value, value: option.value }, option.label)); })))),
2188
2188
  React__default.createElement("div", { className: "".concat(classes.gridItem, " ").concat(classes.datePickerWrapper) },
2189
2189
  React__default.createElement(DatePicker$1, { label: "End", format: dateFormat, value: isCustomMode
2190
- ? customEndDate || moment$2()
2191
- : moment$2((endShift === null || endShift === void 0 ? void 0 : endShift.End) || (endShift === null || endShift === void 0 ? void 0 : endShift.Start) || moment$2()), onChange: function (value) {
2192
- return handleDateChange(value ? moment$2(value) : null, "end");
2193
- }, disabled: loadingShiftPeriodList, minDate: isCustomMode && customStartDate ? customStartDate : undefined, maxDate: isCustomMode ? moment$2() : undefined, enableAccessibleFieldDOMStructure: false, slots: {
2190
+ ? customEndDate || moment$1()
2191
+ : moment$1((endShift === null || endShift === void 0 ? void 0 : endShift.End) || (endShift === null || endShift === void 0 ? void 0 : endShift.Start) || moment$1()), onChange: function (value) {
2192
+ return handleDateChange(value ? moment$1(value) : null, "end");
2193
+ }, disabled: loadingShiftPeriodList, minDate: isCustomMode && customStartDate ? customStartDate : undefined, maxDate: isCustomMode ? moment$1() : undefined, enableAccessibleFieldDOMStructure: false, slots: {
2194
2194
  textField: function (props) { return (React__default.createElement(TextField, __assign({}, props, { size: "small", variant: "outlined", fullWidth: true, style: { width: "100%" }, InputProps: __assign(__assign({}, props.InputProps), { style: { paddingTop: "2px" } }) }))); },
2195
2195
  openPickerIcon: function () { return (React__default.createElement("div", { style: {
2196
2196
  display: "flex",
@@ -2354,15 +2354,15 @@ var GetJobsStatus = function () { return __awaiter(void 0, void 0, void 0, funct
2354
2354
  if (resp.ok) {
2355
2355
  rows = get(resp, "data.tables[0].rows", []);
2356
2356
  rows = rows.map(function (job) { return (__assign(__assign({}, job), { LastStarted: job.LastStarted
2357
- ? moment$2.utc(job["LastStarted"]).toDate()
2357
+ ? moment$1.utc(job["LastStarted"]).toDate()
2358
2358
  : null, LastContact: job.LastContact
2359
- ? moment$2.utc(job["LastContact"]).toDate()
2359
+ ? moment$1.utc(job["LastContact"]).toDate()
2360
2360
  : null, LastCounter: job.LastCounter
2361
- ? moment$2.utc(job["LastCounter"]).toDate()
2362
- : null, StartTime: job.StartTime ? moment$2.utc(job["StartTime"]).toDate() : null, NextExecutionTime: job.NextExecutionTime
2363
- ? moment$2.utc(job["NextExecutionTime"]).toDate()
2361
+ ? moment$1.utc(job["LastCounter"]).toDate()
2362
+ : null, StartTime: job.StartTime ? moment$1.utc(job["StartTime"]).toDate() : null, NextExecutionTime: job.NextExecutionTime
2363
+ ? moment$1.utc(job["NextExecutionTime"]).toDate()
2364
2364
  : null, LastExecutionTime: job.LastExecutionTime
2365
- ? moment$2.utc(job["LastExecutionTime"]).toDate()
2365
+ ? moment$1.utc(job["LastExecutionTime"]).toDate()
2366
2366
  : null })); });
2367
2367
  return [2 /*return*/, {
2368
2368
  ok: true,
@@ -2592,7 +2592,7 @@ var JobDetails = function (_a) {
2592
2592
  React__default.createElement(Controller, { name: "StartTime", control: control, render: function (_a) {
2593
2593
  var field = _a.field, error = _a.fieldState.error;
2594
2594
  return (React__default.createElement(React__default.Fragment, null,
2595
- React__default.createElement(DateTimePicker, { label: "Start Time", value: field.value ? moment$2(field.value) : null, onChange: field.onChange, format: "MM/DD/YYYY HH:mm:ss", views: ["year", "month", "day", "hours", "minutes"], ampm: false, timezone: TimeService.getInstance().getServerTimeZone(), slotProps: {
2595
+ React__default.createElement(DateTimePicker, { label: "Start Time", value: field.value ? moment$1(field.value) : null, onChange: field.onChange, format: "MM/DD/YYYY HH:mm:ss", views: ["year", "month", "day", "hours", "minutes"], ampm: false, timezone: TimeService.getInstance().getServerTimeZone(), slotProps: {
2596
2596
  textField: {
2597
2597
  size: "small",
2598
2598
  margin: "none",
@@ -2609,7 +2609,7 @@ var JobDetails = function (_a) {
2609
2609
  React__default.createElement(Grid, { item: true, xs: 12, md: 6 },
2610
2610
  React__default.createElement(Controller, { name: "LastExecutionTime", control: control, render: function (_a) {
2611
2611
  var field = _a.field;
2612
- return (React__default.createElement(DateTimePicker, { label: "Last Execution Time", value: field.value ? moment$2(field.value) : null, format: "MM/DD/YYYY HH:mm:ss", views: ["year", "month", "day", "hours", "minutes"], ampm: false, timezone: TimeService.getInstance().getServerTimeZone(), disabled: true, slotProps: {
2612
+ return (React__default.createElement(DateTimePicker, { label: "Last Execution Time", value: field.value ? moment$1(field.value) : null, format: "MM/DD/YYYY HH:mm:ss", views: ["year", "month", "day", "hours", "minutes"], ampm: false, timezone: TimeService.getInstance().getServerTimeZone(), disabled: true, slotProps: {
2613
2613
  textField: {
2614
2614
  size: "small",
2615
2615
  margin: "none",
@@ -2619,7 +2619,7 @@ var JobDetails = function (_a) {
2619
2619
  React__default.createElement(Grid, { item: true, xs: 12, md: 6 },
2620
2620
  React__default.createElement(Controller, { name: "NextExecutionTime", control: control, render: function (_a) {
2621
2621
  var field = _a.field;
2622
- return (React__default.createElement(DateTimePicker, { label: "Next Execution Time", value: field.value ? moment$2(field.value) : null, format: "MM/DD/YYYY HH:mm:ss", views: ["year", "month", "day", "hours", "minutes"], ampm: false, timezone: TimeService.getInstance().getServerTimeZone(), disabled: true, slotProps: {
2622
+ return (React__default.createElement(DateTimePicker, { label: "Next Execution Time", value: field.value ? moment$1(field.value) : null, format: "MM/DD/YYYY HH:mm:ss", views: ["year", "month", "day", "hours", "minutes"], ampm: false, timezone: TimeService.getInstance().getServerTimeZone(), disabled: true, slotProps: {
2623
2623
  textField: {
2624
2624
  size: "small",
2625
2625
  margin: "none",
@@ -2802,7 +2802,7 @@ var useJobsTableData = function (_a) {
2802
2802
  headerName: "Next Execution",
2803
2803
  valueFormatter: function (_a) {
2804
2804
  var value = _a.value;
2805
- return value === null ? "" : moment$3(value).format("DD/MM/YYYY HH:mm");
2805
+ return value === null ? "" : moment(value).format("DD/MM/YYYY HH:mm");
2806
2806
  },
2807
2807
  flex: 1,
2808
2808
  cellStyle: {
@@ -3136,138 +3136,6 @@ var JobsPage = function (props) {
3136
3136
  React.createElement(Jobs, null)));
3137
3137
  };
3138
3138
 
3139
- var TimeService = /** @class */ (function () {
3140
- function TimeService() {
3141
- this.timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
3142
- }
3143
- TimeService.getInstance = function () {
3144
- if (!TimeService.instance) {
3145
- TimeService.instance = new TimeService();
3146
- }
3147
- return TimeService.instance;
3148
- };
3149
- TimeService.prototype.setTimeZone = function (timeZone) {
3150
- var ianaTimeZones = findIana(timeZone);
3151
- if (ianaTimeZones.length) {
3152
- this.timeZone = ianaTimeZones[0];
3153
- }
3154
- else {
3155
- this.timeZone = timeZone;
3156
- }
3157
- moment$2.tz.setDefault(this.timeZone);
3158
- };
3159
- TimeService.prototype.toUTC = function (datetime, format$1) {
3160
- try {
3161
- if (datetime instanceof Date) {
3162
- return format(datetime, format$1);
3163
- }
3164
- return format(fromZonedTime(datetime, TimeService.instance.timeZone), format$1);
3165
- }
3166
- catch (e) {
3167
- console.log({ datetime: datetime, e: e });
3168
- return "";
3169
- }
3170
- };
3171
- TimeService.prototype.toLocalServerTime = function (datetime, format) {
3172
- try {
3173
- if (isNil(datetime) || !datetime) {
3174
- return "";
3175
- }
3176
- if (typeof datetime === "string") {
3177
- if (datetime.includes("Z")) {
3178
- datetime = new Date(datetime);
3179
- }
3180
- else {
3181
- datetime = new Date("".concat(datetime, "Z"));
3182
- }
3183
- }
3184
- return formatInTimeZone(datetime, TimeService.instance.timeZone, format);
3185
- }
3186
- catch (e) {
3187
- console.log({ datetime: datetime, e: e });
3188
- return "";
3189
- }
3190
- };
3191
- TimeService.prototype.getServerTimeZone = function () {
3192
- return this.timeZone;
3193
- };
3194
- return TimeService;
3195
- }());
3196
- var getMomentTz = function () { return moment$2; };
3197
- var dxtServerTimeZone = function () {
3198
- return TimeService.getInstance().getServerTimeZone;
3199
- };
3200
- var dxtToUTC = TimeService.getInstance().toUTC;
3201
- var dxtToLocalServerTime = TimeService.getInstance().toLocalServerTime;
3202
-
3203
- var LogsInitialState = {
3204
- logs: [],
3205
- searchData: {
3206
- Start: moment$3().add(-5, "days").hour(0).minute(0).second(0).toDate(),
3207
- End: moment$3().hour(23).minute(59).second(59).toDate(),
3208
- Search: "",
3209
- LogTypeCode: "A",
3210
- },
3211
- Timezone: "UTC",
3212
- };
3213
- var LogsReducer = createSlice({
3214
- name: "__",
3215
- initialState: LogsInitialState,
3216
- reducers: {
3217
- setLogs: function (state, _a) {
3218
- var payload = _a.payload;
3219
- state.logs = payload;
3220
- },
3221
- setSearchData: function (state, _a) {
3222
- var payload = _a.payload;
3223
- state.searchData = payload;
3224
- },
3225
- setStartFilter: function (state, _a) {
3226
- var payload = _a.payload;
3227
- state.searchData.Start = payload;
3228
- },
3229
- setEndFilter: function (state, _a) {
3230
- var payload = _a.payload;
3231
- state.searchData.End = payload;
3232
- },
3233
- setSearchFilter: function (state, _a) {
3234
- var payload = _a.payload;
3235
- state.searchData.Search = payload;
3236
- },
3237
- setLogTypeCodeFilter: function (state, _a) {
3238
- var payload = _a.payload;
3239
- state.searchData.LogTypeCode = payload;
3240
- },
3241
- resetFilters: function (state, _a) {
3242
- _a.payload;
3243
- state.searchData = {
3244
- Start: moment$3().add(-5, "days").hour(0).minute(0).second(0).toDate(),
3245
- End: moment$3().hour(23).minute(59).second(59).toDate(),
3246
- Search: "",
3247
- LogTypeCode: "A",
3248
- };
3249
- },
3250
- setTimezone: function (state, _a) {
3251
- var payload = _a.payload;
3252
- state.Timezone = payload;
3253
- },
3254
- },
3255
- });
3256
-
3257
- var LogsContext = createContext({
3258
- state: LogsReducer.getInitialState(),
3259
- actions: LogsReducer.actions,
3260
- });
3261
- var useLogsContext = function () { return useContext(LogsContext); };
3262
- var LogsProvider = function (_a) {
3263
- var children = _a.children;
3264
- var _b = useComplexState({
3265
- initialState: LogsReducer.getInitialState(),
3266
- reducers: LogsReducer.caseReducers,
3267
- }), state = _b[0], actions = _b[1];
3268
- return (React__default.createElement(LogsContext.Provider, { value: { state: state, actions: actions } }, children));
3269
- };
3270
-
3271
3139
  var LOG_TYPE_CODES = {
3272
3140
  A: { id: "A", description: "All" },
3273
3141
  I: { id: "I", color: "#3f51b5", description: "Info" },
@@ -3294,7 +3162,7 @@ var DateFilter = function (_a) {
3294
3162
  }
3295
3163
  };
3296
3164
  return (React__default.createElement(MuiPickersUtilsProvider, { utils: MomentUtils },
3297
- 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: {
3165
+ React__default.createElement(KeyboardDatePicker, { disableToolbar: true, variant: "inline", format: "MM/DD/yyyy", id: "date-picker-inline", autoOk: true, minDate: minDate, maxDate: maxDate || moment().toDate(), style: {
3298
3166
  minWidth: "100%",
3299
3167
  borderTopLeftRadius: 3,
3300
3168
  borderTopRightRadius: 3,
@@ -3378,29 +3246,10 @@ var ModalLogSelected = function (_a) {
3378
3246
  React__default.createElement(Button, { fullWidth: true, variant: "contained", color: "default", onClick: function () { return onHide(true); } }, "Close"))))))));
3379
3247
  };
3380
3248
 
3381
- var moment$1 = getMomentTz();
3382
3249
  var useLogTableData = function () {
3383
- var _a;
3384
- var state = useLogsContext().state;
3385
- var getLogTypeByCodeId = function (logTypeCodeId) {
3386
- return get$1(LOG_TYPE_CODES, "".concat(logTypeCodeId, ".description"), " -");
3387
- };
3388
3250
  var backgroundColor = function (logTypeCode) {
3389
3251
  return get$1(LOG_TYPE_CODES, "".concat(logTypeCode[0], ".color"), "#BBBBBB");
3390
3252
  };
3391
- var rows = (_a = state.logs) === null || _a === void 0 ? void 0 : _a.map(function (_a) {
3392
- var LogId = _a.LogId, Timestamp = _a.Timestamp, Source = _a.Source, Message = _a.Message, LogTypeCode = _a.LogTypeCode, User = _a.User;
3393
- return ({
3394
- id: LogId,
3395
- Timestamp: state.Timezone === "UTC"
3396
- ? moment$1(Timestamp).utc().format("YYYY-MM-DD HH:mm:ss z")
3397
- : dxtToLocalServerTime(Timestamp, "yyyy-MM-dd HH:mm:ss z"),
3398
- Source: Source,
3399
- Message: isNil$1(Message) ? "" : Message.replaceAll("Added", " Added"),
3400
- LogTypeCode: getLogTypeByCodeId(LogTypeCode),
3401
- User: User,
3402
- });
3403
- });
3404
3253
  var columnDefs = useState([
3405
3254
  {
3406
3255
  field: "Timestamp",
@@ -3480,7 +3329,18 @@ var useLogTableData = function () {
3480
3329
  headerClass: "ag-header-cell-centered",
3481
3330
  },
3482
3331
  ])[0];
3483
- return { rows: rows, columnDefs: columnDefs };
3332
+ return { columnDefs: columnDefs };
3333
+ };
3334
+
3335
+ var CenteredLazyLoading = function () {
3336
+ return (React__default.createElement("div", { style: {
3337
+ width: "100%",
3338
+ height: "100%",
3339
+ display: "flex",
3340
+ justifyContent: "center",
3341
+ alignItems: "center",
3342
+ } },
3343
+ React__default.createElement(LazyLoading, null)));
3484
3344
  };
3485
3345
 
3486
3346
  var useStyles$y = makeStyles(function (theme) { return ({
@@ -3549,19 +3409,44 @@ var useLogsOptionsFunctions = function (_a) {
3549
3409
  };
3550
3410
  };
3551
3411
 
3552
- var TableLogs = function (_a) {
3553
- var isLoading = _a.isLoading; _a.rowData; var refreshData = _a.refreshData;
3554
- 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;
3412
+ var getLogTypeByCodeId = function (logTypeCodeId) {
3413
+ return get(LOG_TYPE_CODES, "".concat(logTypeCodeId, ".description"), " -");
3414
+ };
3415
+ var TableLogs = function () {
3555
3416
  var classes = useStyles$y();
3556
- var gridStyle = useMemo(function () { return ({ height: "100%", width: "100%" }); }, []);
3557
- var _f = useState(null); _f[0]; var setGridAPI = _f[1];
3558
- var _g = useState(false), showLogModal = _g[0], setShowLogModal = _g[1];
3559
- var _h = useState(undefined), selectedLog = _h[0], setSelectedLog = _h[1];
3560
- var _j = useState(""), error = _j[0], setError = _j[1];
3417
+ var _a = useState(moment().add(-5, "days").hour(0).minute(0).second(0).toDate()), startDate = _a[0], setStartDate = _a[1];
3418
+ var _b = useState(moment().hour(23).minute(59).second(59).toDate()), endDate = _b[0], setEndDate = _b[1];
3419
+ var _c = useState("UTC"), timezone = _c[0], setTimezone = _c[1];
3420
+ var _d = useState(""), search = _d[0], setSearch = _d[1];
3421
+ var _e = useState("A"), logTypeCode = _e[0], setLogTypeCode = _e[1];
3422
+ var _f = useState(false), autoRefresh = _f[0], setAutoRefresh = _f[1];
3423
+ var _g = useState(null), gridAPI = _g[0], setGridAPI = _g[1];
3424
+ var _h = useState(""), error = _h[0], setError = _h[1];
3425
+ var _j = useState(false), showLogModal = _j[0], setShowLogModal = _j[1];
3426
+ var _k = useState(undefined), selectedLog = _k[0], setSelectedLog = _k[1];
3427
+ var _l = useLogs({
3428
+ startDate: startDate,
3429
+ endDate: endDate,
3430
+ logTypeCode: logTypeCode,
3431
+ autoRefresh: autoRefresh,
3432
+ }), rows = _l.data, isLoading = _l.isLoading, refetch = _l.refetch, isError = _l.isError, e = _l.error;
3561
3433
  var onGridReady = function (params) {
3562
3434
  setGridAPI(params.api);
3563
3435
  };
3564
- var _k = useLogTableData(), rows = _k.rows, columnDefs = _k.columnDefs;
3436
+ var formattedRows = rows === null || rows === void 0 ? void 0 : rows.map(function (_a) {
3437
+ var LogId = _a.LogId, Timestamp = _a.Timestamp, Source = _a.Source, Message = _a.Message, LogTypeCode = _a.LogTypeCode, User = _a.User;
3438
+ return ({
3439
+ id: LogId,
3440
+ Timestamp: timezone === "UTC"
3441
+ ? moment(Timestamp).utc().format("YYYY-MM-DD HH:mm:ss z")
3442
+ : dxtToLocalServerTime(Timestamp, "yyyy-MM-dd HH:mm:ss z"),
3443
+ Source: Source,
3444
+ Message: isNil(Message) ? "" : Message.replaceAll("Added", " Added"),
3445
+ LogTypeCode: getLogTypeByCodeId(LogTypeCode),
3446
+ User: User,
3447
+ });
3448
+ });
3449
+ var columnDefs = useLogTableData().columnDefs;
3565
3450
  var defaultColDef = useMemo(function () {
3566
3451
  return {
3567
3452
  sortable: true,
@@ -3570,58 +3455,24 @@ var TableLogs = function (_a) {
3570
3455
  wrapHeaderText: true,
3571
3456
  };
3572
3457
  }, []);
3573
- var _l = useContextMenuMESF(), showContextMenu = _l.showContextMenu, registerConfig = _l.registerConfig;
3574
- // Debounced search timer ref
3575
- var searchTimeoutRef = useRef(null);
3576
- // Store current values in ref to avoid closure issues
3577
- var currentValues = useRef({ Start: Start, End: End, Search: Search, LogTypeCode: LogTypeCode });
3578
- currentValues.current = { Start: Start, End: End, Search: Search, LogTypeCode: LogTypeCode };
3579
- // Auto search when Search filter changes (with debounce)
3580
- useEffect(function () {
3581
- if (searchTimeoutRef.current) {
3582
- clearTimeout(searchTimeoutRef.current);
3583
- }
3584
- searchTimeoutRef.current = setTimeout(function () {
3585
- var _a = currentValues.current, currentStart = _a.Start, currentEnd = _a.End, currentSearch = _a.Search, currentLogTypeCode = _a.LogTypeCode;
3586
- refreshData({
3587
- Start: currentStart,
3588
- End: currentEnd,
3589
- Search: currentSearch,
3590
- LogTypeCode: currentLogTypeCode,
3591
- });
3592
- }, 500);
3593
- return function () {
3594
- if (searchTimeoutRef.current) {
3595
- clearTimeout(searchTimeoutRef.current);
3596
- }
3597
- };
3598
- }, [Search]);
3458
+ var _m = useContextMenuMESF(), showContextMenu = _m.showContextMenu, registerConfig = _m.registerConfig;
3599
3459
  var handleResetButtonClick = function () {
3600
3460
  resetFilter();
3601
- refreshData({
3602
- Start: moment$3().add(-5, "days").hour(0).minute(0).second(0).toDate(),
3603
- End: moment$3().hour(23).minute(59).second(59).toDate(),
3604
- Search: "",
3605
- LogTypeCode: "A",
3606
- });
3461
+ setStartDate(moment().add(-5, "days").hour(0).minute(0).second(0).toDate());
3462
+ setEndDate(moment().hour(23).minute(59).second(59).toDate());
3463
+ setSearch("");
3464
+ gridAPI === null || gridAPI === void 0 ? void 0 : gridAPI.setGridOption("quickFilterText", "");
3465
+ setLogTypeCode("A");
3466
+ refetch();
3607
3467
  setError("");
3608
3468
  };
3609
- var loadingOverlayComponent = useMemo(function () {
3610
- return (React.createElement("div", { style: {
3611
- width: "100%",
3612
- height: "100%",
3613
- display: "flex",
3614
- justifyContent: "center",
3615
- alignItems: "center",
3616
- } },
3617
- React.createElement(LazyLoading, null)));
3618
- }, [isLoading]);
3619
3469
  // Btn reset data
3620
3470
  var resetFilter = function () {
3621
- setStartFilter(moment$3().add(-5, "days").hour(0).minute(0).second(0).toDate());
3622
- setEndFilter(moment$3().hour(23).minute(59).second(59).toDate());
3623
- setSearchFilter("");
3624
- setLogTypeCodeFilter("A");
3471
+ setStartDate(moment().add(-5, "days").hour(0).minute(0).second(0).toDate());
3472
+ setEndDate(moment().hour(23).minute(59).second(59).toDate());
3473
+ setSearch("");
3474
+ gridAPI === null || gridAPI === void 0 ? void 0 : gridAPI.setGridOption("quickFilterText", "");
3475
+ setLogTypeCode("A");
3625
3476
  setSelectedLog(undefined);
3626
3477
  };
3627
3478
  var rowClicked = function (rowClickedEvent) {
@@ -3651,8 +3502,10 @@ var TableLogs = function (_a) {
3651
3502
  });
3652
3503
  }, []);
3653
3504
  useEffect(function () {
3654
- refreshData({ Start: Start, End: End, Search: Search, LogTypeCode: LogTypeCode }).then(function (r) { });
3655
- }, [Start, End, LogTypeCode]);
3505
+ if (isError && e) {
3506
+ setError(e.message);
3507
+ }
3508
+ }, [isError, e]);
3656
3509
  return (React.createElement(Grid, { spacing: 0, container: true, justifyContent: "center", alignItems: "center", className: classes.root },
3657
3510
  React.createElement(Grid, { item: true, md: 12, xs: 12, className: classes.filters },
3658
3511
  React.createElement(ModalLogSelected, { show: showLogModal, onHide: function () { return setShowLogModal(false); }, selectedLog: selectedLog, suffixTitle: "MES and System Logs" }),
@@ -3663,99 +3516,107 @@ var TableLogs = function (_a) {
3663
3516
  React.createElement(CardContent, { style: { padding: "6px !important", width: "100%" } },
3664
3517
  React.createElement(Grid, { container: true, alignItems: "center", direction: "row", spacing: 1 },
3665
3518
  React.createElement(Grid, { item: true, md: 2, xs: 12 },
3666
- React.createElement(DateFilter, { label: "From", date: Start, setDate: setStartFilter, maxDate: End })),
3519
+ React.createElement(DateFilter, { label: "From", date: startDate, setDate: function (date) {
3520
+ return setStartDate(date || new Date());
3521
+ }, maxDate: endDate !== null && endDate !== void 0 ? endDate : undefined })),
3667
3522
  React.createElement(Grid, { item: true, md: 2, xs: 12 },
3668
- React.createElement(DateFilter, { label: "To", date: End, setDate: setEndFilter, minDate: Start })),
3523
+ React.createElement(DateFilter, { label: "To", date: endDate, setDate: function (date) {
3524
+ if (date) {
3525
+ setEndDate(date);
3526
+ setAutoRefresh(false);
3527
+ }
3528
+ }, minDate: startDate })),
3669
3529
  React.createElement(Grid, { item: true, md: 1, xs: 12 },
3670
- React.createElement(CodeFilter, { LogTypeCode: LogTypeCode, setLogTypeCodeFilter: setLogTypeCodeFilter })),
3671
- React.createElement(Grid, { item: true, md: 2, xs: 12 },
3672
- React.createElement(TimezoneSelector, { value: Timezone, onChange: setTimezone })),
3530
+ React.createElement(CodeFilter, { LogTypeCode: logTypeCode, setLogTypeCodeFilter: setLogTypeCode })),
3531
+ React.createElement(Grid, { item: true, md: 1, xs: 12 },
3532
+ React.createElement(TimezoneSelector, { value: timezone, onChange: setTimezone })),
3533
+ React.createElement(Grid, { item: true, md: 1, xs: 12 },
3534
+ React.createElement(FormControlLabel, { checked: autoRefresh, control: React.createElement(Switch, { color: "primary" }), label: "Auto Refresh", onChange: function (e, checked) {
3535
+ if (checked) {
3536
+ setEndDate(null);
3537
+ }
3538
+ else {
3539
+ setEndDate(moment().hour(23).minute(59).second(59).toDate());
3540
+ }
3541
+ setAutoRefresh(checked);
3542
+ } })),
3673
3543
  React.createElement(Grid, { item: true, md: 4, xs: 12 },
3674
- React.createElement(SearchFilter, { search: Search, setSearch: setSearchFilter })),
3544
+ React.createElement(SearchFilter, { search: search, setSearch: function (search) {
3545
+ setSearch(search);
3546
+ gridAPI === null || gridAPI === void 0 ? void 0 : gridAPI.setGridOption("quickFilterText", search);
3547
+ } })),
3675
3548
  React.createElement(Grid, { item: true, md: 1, xs: 12, style: { paddingTop: 8 } },
3676
3549
  React.createElement(Button, { variant: "contained", color: "default", onClick: handleResetButtonClick, fullWidth: true, size: "small" }, "Reset")))))),
3677
3550
  React.createElement(Grid, { item: true, md: 12, xs: 12, style: {
3678
3551
  height: "70vh",
3679
3552
  } },
3680
- React.createElement(Paper, { style: gridStyle },
3681
- React.createElement(AgGridReact, { gridOptions: {
3553
+ React.createElement(Paper, { style: { height: "100%", width: "100%" } },
3554
+ React.createElement(AgGridReact, { loading: isLoading, gridOptions: {
3682
3555
  theme: themeMaterial.withParams({
3683
3556
  spacing: 2,
3684
3557
  }),
3685
- }, rowData: rows, columnDefs: columnDefs, defaultColDef: defaultColDef, onGridReady: onGridReady, getRowId: function (params) { return params.data.id; }, rowHeight: 34, headerHeight: 40, animateRows: true, loadingOverlayComponent: loadingOverlayComponent, getContextMenuItems: function (e) { return getContextMenuItems(e); }, rowSelection: "single", onRowDoubleClicked: function (e) {
3558
+ }, rowData: formattedRows, columnDefs: columnDefs, defaultColDef: defaultColDef, onGridReady: onGridReady, getRowId: function (params) { return params.data.id; }, rowHeight: 34, headerHeight: 40, animateRows: true, loadingOverlayComponent: CenteredLazyLoading, getContextMenuItems: function (e) { return getContextMenuItems(e); }, rowSelection: "single", onRowDoubleClicked: function (e) {
3686
3559
  rowClicked(e);
3687
3560
  } }))))),
3688
3561
  React.createElement(ErrorModal, { error: error, onHide: function () { return setError(""); } })));
3689
3562
  };
3690
3563
 
3691
3564
  //fx obtener logs
3692
- var getLogs = function (Start, End, Search, LogTypeCode) { return __awaiter(void 0, void 0, void 0, function () {
3693
- var apiService, parameters, resp;
3694
- return __generator(this, function (_a) {
3695
- switch (_a.label) {
3565
+ var getLogs = function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {
3566
+ var apiService, tomorrow, end, parameters, resp, rows;
3567
+ var startDate = _b.startDate, endDate = _b.endDate, logTypeCode = _b.logTypeCode;
3568
+ return __generator(this, function (_c) {
3569
+ switch (_c.label) {
3696
3570
  case 0:
3697
3571
  apiService = new MESApiService();
3698
- parameters = [];
3699
- parameters.push({ name: "Start", value: Start });
3700
- parameters.push({ name: "End", value: End });
3701
- parameters.push({ name: "Search", value: Search });
3702
- parameters.push({
3703
- name: "LogTypeCode",
3704
- value: LogTypeCode === "A" ? null : LogTypeCode,
3705
- });
3572
+ tomorrow = new Date();
3573
+ tomorrow.setDate(tomorrow.getDate() + 1);
3574
+ end = endDate ? endDate : tomorrow;
3575
+ parameters = [
3576
+ { name: "Start", value: startDate },
3577
+ { name: "End", value: end },
3578
+ {
3579
+ name: "LogTypeCode",
3580
+ value: logTypeCode === "A" ? null : logTypeCode,
3581
+ },
3582
+ ];
3706
3583
  return [4 /*yield*/, apiService.callV2("[MES].[GetLogs]", parameters)];
3707
3584
  case 1:
3708
- resp = _a.sent();
3709
- return [2 /*return*/, resp];
3585
+ resp = _c.sent();
3586
+ if (resp.ok) {
3587
+ rows = get(resp, "data.tables[0].rows", []);
3588
+ rows = rows.map(function (log) { return (__assign(__assign({}, log), { Timestamp: log.Timestamp ? moment.utc(log["Timestamp"]).toDate() : null })); });
3589
+ return [2 /*return*/, rows];
3590
+ }
3591
+ else {
3592
+ throw new Error(resp.message || "Error fetching logs");
3593
+ }
3710
3594
  }
3711
3595
  });
3712
3596
  }); };
3713
3597
 
3714
- var moment = getMomentTz();
3598
+ var useLogs = function (_a) {
3599
+ var startDate = _a.startDate, endDate = _a.endDate, logTypeCode = _a.logTypeCode, autoRefresh = _a.autoRefresh;
3600
+ return useQuery({
3601
+ queryKey: ["logs", startDate, endDate, logTypeCode],
3602
+ queryFn: function () {
3603
+ return getLogs({
3604
+ startDate: startDate,
3605
+ endDate: endDate,
3606
+ logTypeCode: logTypeCode,
3607
+ });
3608
+ },
3609
+ refetchInterval: autoRefresh ? 5000 : false,
3610
+ });
3611
+ };
3715
3612
  var Logs = function (prop) {
3716
- var _a = useState(true), loading = _a[0], setLoading = _a[1];
3717
- var _b = useState(""), error = _b[0], setError = _b[1];
3718
- var _c = useLogsContext(), _d = _c.state.searchData, Start = _d.Start, End = _d.End, Search = _d.Search, LogTypeCode = _d.LogTypeCode, state = _c.state, actions = _c.actions;
3719
- var getLogsFromAPI = function () { return __awaiter(void 0, void 0, void 0, function () {
3720
- var canceled, res, logs;
3721
- return __generator(this, function (_a) {
3722
- switch (_a.label) {
3723
- case 0:
3724
- canceled = false;
3725
- setLoading(true);
3726
- return [4 /*yield*/, getLogs(Start, End, Search, LogTypeCode)];
3727
- case 1:
3728
- res = _a.sent();
3729
- if (res.ok) {
3730
- logs = get(res, "data.tables[0].rows", []);
3731
- if (canceled)
3732
- return [2 /*return*/];
3733
- logs = logs.map(function (log) { return (__assign(__assign({}, log), { Timestamp: moment.utc(log["Timestamp"]).toDate() })); });
3734
- actions.setLogs(logs);
3735
- }
3736
- else
3737
- setError(res.message);
3738
- if (canceled)
3739
- return [2 /*return*/];
3740
- setLoading(false);
3741
- return [2 /*return*/, function () {
3742
- canceled = true;
3743
- }];
3744
- }
3745
- });
3746
- }); };
3747
- useEffect(function () {
3748
- getLogsFromAPI();
3749
- }, []);
3750
3613
  return (React__default.createElement(React__default.Fragment, null,
3751
3614
  React__default.createElement(HelmetDexteel, { title: "MES and System Logs" }),
3752
- React__default.createElement(TableLogs, { isLoading: loading, rowData: state.logs, refreshData: getLogsFromAPI }),
3753
- React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(""); } })));
3615
+ React__default.createElement(TableLogs, null)));
3754
3616
  };
3755
3617
 
3756
3618
  var LogsPage = function (props) {
3757
- return (React.createElement(LogsProvider, null,
3758
- React.createElement(Logs, null)));
3619
+ return React.createElement(Logs, null);
3759
3620
  };
3760
3621
 
3761
3622
  var Alert = function (props) {
@@ -5446,7 +5307,7 @@ var useTableData$2 = function (_a) {
5446
5307
  headerName: "Pattern Start",
5447
5308
  valueFormatter: function (_a) {
5448
5309
  var value = _a.value;
5449
- return "".concat(moment$3(value).format("L"), ", ").concat(moment$3(value).format("LTS"));
5310
+ return "".concat(moment(value).format("L"), ", ").concat(moment(value).format("LTS"));
5450
5311
  },
5451
5312
  minWidth: 180,
5452
5313
  flex: 4,
@@ -9076,7 +8937,7 @@ var MESApiService = /** @class */ (function () {
9076
8937
  data.dataBaseName = database;
9077
8938
  data.parameters = formattedParameters;
9078
8939
  Date.prototype.toJSON = function () {
9079
- return moment$3(this).format("YYYY-MM-DDTHH:mm:ss");
8940
+ return moment(this).format("YYYY-MM-DDTHH:mm:ss");
9080
8941
  }; // eslint-disable-line
9081
8942
  isError = { ok: true };
9082
8943
  return [2 /*return*/, fetch(this.config.API_PROCEDURE_URL + "/Execute", {
@@ -9115,10 +8976,9 @@ var MESApiService = /** @class */ (function () {
9115
8976
  });
9116
8977
  });
9117
8978
  };
9118
- MESApiService.prototype.callV2 = function (procedure_1, parameters_1) {
9119
- return __awaiter(this, arguments, void 0, function (procedure, parameters, database) {
8979
+ MESApiService.prototype.callV2 = function (procedure, parameters, signal) {
8980
+ return __awaiter(this, void 0, void 0, function () {
9120
8981
  var data, formattedParameters, curatedMethod, response, err_1;
9121
- if (database === void 0) { database = ""; }
9122
8982
  return __generator(this, function (_a) {
9123
8983
  switch (_a.label) {
9124
8984
  case 0:
@@ -9134,16 +8994,16 @@ var MESApiService = /** @class */ (function () {
9134
8994
  formattedParameters.push(formattedParameter);
9135
8995
  });
9136
8996
  data.method = procedure;
9137
- data.dataBaseName = database;
9138
8997
  data.parameters = formattedParameters;
9139
8998
  Date.prototype.toJSON = function () {
9140
- return moment$3(this).format("YYYY-MM-DDTHH:mm:ss");
8999
+ return moment(this).format("YYYY-MM-DDTHH:mm:ss");
9141
9000
  }; // eslint-disable-line
9142
9001
  curatedMethod = procedure.replace(/[\[\]]/g, "");
9143
9002
  _a.label = 1;
9144
9003
  case 1:
9145
9004
  _a.trys.push([1, 3, , 4]);
9146
9005
  return [4 /*yield*/, axiosInstance.post("/action/".concat(curatedMethod), data, {
9006
+ signal: signal,
9147
9007
  params: data.parameters.map(function (param) {
9148
9008
  var _a, _b;
9149
9009
  var mapKey = param.name.replace("@", "");
@@ -9191,7 +9051,7 @@ var MESApiService = /** @class */ (function () {
9191
9051
  data.dataBaseName = database;
9192
9052
  data.parameters = formattedParameters;
9193
9053
  Date.prototype.toJSON = function () {
9194
- return moment$3(this).format("YYYY-MM-DDTHH:mm:ss");
9054
+ return moment(this).format("YYYY-MM-DDTHH:mm:ss");
9195
9055
  }; // eslint-disable-line
9196
9056
  isError = { ok: true };
9197
9057
  return [2 /*return*/, fetch(this.config.API_PROCEDURE_URL + "/ExecuteJSON", {
@@ -9248,7 +9108,7 @@ var MESApiService = /** @class */ (function () {
9248
9108
  formattedParameters.push(formattedParameter);
9249
9109
  });
9250
9110
  Date.prototype.toJSON = function () {
9251
- return moment$3(this).format("YYYY-MM-DDTHH:mm:ss");
9111
+ return moment(this).format("YYYY-MM-DDTHH:mm:ss");
9252
9112
  }; // eslint-disable-line
9253
9113
  isError = { ok: true };
9254
9114
  files.forEach(function (element) {
@@ -9315,7 +9175,7 @@ var MESApiService = /** @class */ (function () {
9315
9175
  data.parameters = formattedParameters;
9316
9176
  data.fileName = fileName || "Default.xlsx";
9317
9177
  Date.prototype.toJSON = function () {
9318
- return moment$3(this).format("YYYY-MM-DDTHH:mm:ss");
9178
+ return moment(this).format("YYYY-MM-DDTHH:mm:ss");
9319
9179
  }; // eslint-disable-line
9320
9180
  isError = { ok: true };
9321
9181
  return [2 /*return*/, fetch(this.config.API_PROCEDURE_URL + "/Export", {
@@ -9393,7 +9253,7 @@ var MESApiService = /** @class */ (function () {
9393
9253
  data.parameters = formattedParameters;
9394
9254
  data.fileName = fileName || "Default.xlsx";
9395
9255
  Date.prototype.toJSON = function () {
9396
- return moment$3(this).format("YYYY-MM-DDTHH:mm:ss");
9256
+ return moment(this).format("YYYY-MM-DDTHH:mm:ss");
9397
9257
  }; // eslint-disable-line
9398
9258
  isError = { ok: true };
9399
9259
  return [2 /*return*/, fetch(this.config.API_PROCEDURE_URL + "/ExportExcel", {
@@ -9464,6 +9324,70 @@ var MESApiService = /** @class */ (function () {
9464
9324
  return MESApiService;
9465
9325
  }());
9466
9326
 
9327
+ var TimeService = /** @class */ (function () {
9328
+ function TimeService() {
9329
+ this.timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
9330
+ }
9331
+ TimeService.getInstance = function () {
9332
+ if (!TimeService.instance) {
9333
+ TimeService.instance = new TimeService();
9334
+ }
9335
+ return TimeService.instance;
9336
+ };
9337
+ TimeService.prototype.setTimeZone = function (timeZone) {
9338
+ var ianaTimeZones = findIana(timeZone);
9339
+ if (ianaTimeZones.length) {
9340
+ this.timeZone = ianaTimeZones[0];
9341
+ }
9342
+ else {
9343
+ this.timeZone = timeZone;
9344
+ }
9345
+ moment$1.tz.setDefault(this.timeZone);
9346
+ };
9347
+ TimeService.prototype.toUTC = function (datetime, format$1) {
9348
+ try {
9349
+ if (datetime instanceof Date) {
9350
+ return format(datetime, format$1);
9351
+ }
9352
+ return format(fromZonedTime(datetime, TimeService.instance.timeZone), format$1);
9353
+ }
9354
+ catch (e) {
9355
+ console.log({ datetime: datetime, e: e });
9356
+ return "";
9357
+ }
9358
+ };
9359
+ TimeService.prototype.toLocalServerTime = function (datetime, format) {
9360
+ try {
9361
+ if (isNil(datetime) || !datetime) {
9362
+ return "";
9363
+ }
9364
+ if (typeof datetime === "string") {
9365
+ if (datetime.includes("Z")) {
9366
+ datetime = new Date(datetime);
9367
+ }
9368
+ else {
9369
+ datetime = new Date("".concat(datetime, "Z"));
9370
+ }
9371
+ }
9372
+ return formatInTimeZone(datetime, TimeService.instance.timeZone, format);
9373
+ }
9374
+ catch (e) {
9375
+ console.log({ datetime: datetime, e: e });
9376
+ return "";
9377
+ }
9378
+ };
9379
+ TimeService.prototype.getServerTimeZone = function () {
9380
+ return this.timeZone;
9381
+ };
9382
+ return TimeService;
9383
+ }());
9384
+ var getMomentTz = function () { return moment$1; };
9385
+ var dxtServerTimeZone = function () {
9386
+ return TimeService.getInstance().getServerTimeZone;
9387
+ };
9388
+ var dxtToUTC = TimeService.getInstance().toUTC;
9389
+ var dxtToLocalServerTime = TimeService.getInstance().toLocalServerTime;
9390
+
9467
9391
  var getUsers = function () { return __awaiter(void 0, void 0, void 0, function () {
9468
9392
  var apiService, resp;
9469
9393
  return __generator(this, function (_a) {
@@ -10480,15 +10404,41 @@ function Logout() {
10480
10404
  var clearUserData = useContext(AuthContext).clearUserData;
10481
10405
  var navigate = useNavigate();
10482
10406
  var _a = useSearchParams(), params = _a[0]; _a[1];
10407
+ var _b = useState(""), message = _b[0], setMessage = _b[1];
10483
10408
  var logout = function () {
10409
+ // Clear any auto-logout data from localStorage
10410
+ localStorage.removeItem("shiftAutoLogout");
10484
10411
  clearUserData();
10485
- navigate("/?".concat(params.toString()));
10412
+ // Check if there's a message parameter
10413
+ var messageParam = params.get("message");
10414
+ if (messageParam) {
10415
+ // Remove message from params before redirecting
10416
+ var newParams = new URLSearchParams(params);
10417
+ newParams.delete("message");
10418
+ navigate("/?".concat(newParams.toString()));
10419
+ }
10420
+ else {
10421
+ navigate("/?".concat(params.toString()));
10422
+ }
10486
10423
  };
10487
10424
  useEffect(function () {
10488
- logout();
10425
+ // Check for message parameter
10426
+ var messageParam = params.get("message");
10427
+ if (messageParam) {
10428
+ setMessage(decodeURIComponent(messageParam));
10429
+ }
10430
+ // Perform logout after a brief delay to show the message
10431
+ var timer = setTimeout(function () {
10432
+ logout();
10433
+ }, message ? 2000 : 0);
10434
+ return function () { return clearTimeout(timer); };
10489
10435
  }, []);
10490
10436
  return (React__default.createElement(React__default.Fragment, null,
10491
- React__default.createElement("div", null, "logging out!!!")));
10437
+ React__default.createElement(Box, { display: "flex", flexDirection: "column", alignItems: "center", justifyContent: "center", minHeight: "100vh" },
10438
+ message && (React__default.createElement(Alert$2, { severity: "info", style: { marginBottom: 20 } },
10439
+ React__default.createElement(AlertTitle, null, "Session Ended"),
10440
+ React__default.createElement(Typography$1, null, message))),
10441
+ React__default.createElement(Typography$1, { variant: "h6" }, "Logging out..."))));
10492
10442
  }
10493
10443
 
10494
10444
  var useStyles$6 = makeStyles(function (theme) { return ({
@@ -12127,7 +12077,7 @@ const FORMATS = {
12127
12077
  year: 'YYYY'
12128
12078
  };
12129
12079
 
12130
- _adapters._date.override(typeof moment$3 === 'function' ? {
12080
+ _adapters._date.override(typeof moment === 'function' ? {
12131
12081
  _id: 'moment', // DEBUG ONLY
12132
12082
 
12133
12083
  formats: function() {
@@ -12136,27 +12086,27 @@ _adapters._date.override(typeof moment$3 === 'function' ? {
12136
12086
 
12137
12087
  parse: function(value, format) {
12138
12088
  if (typeof value === 'string' && typeof format === 'string') {
12139
- value = moment$3(value, format);
12140
- } else if (!(value instanceof moment$3)) {
12141
- value = moment$3(value);
12089
+ value = moment(value, format);
12090
+ } else if (!(value instanceof moment)) {
12091
+ value = moment(value);
12142
12092
  }
12143
12093
  return value.isValid() ? value.valueOf() : null;
12144
12094
  },
12145
12095
 
12146
12096
  format: function(time, format) {
12147
- return moment$3(time).format(format);
12097
+ return moment(time).format(format);
12148
12098
  },
12149
12099
 
12150
12100
  add: function(time, amount, unit) {
12151
- return moment$3(time).add(amount, unit).valueOf();
12101
+ return moment(time).add(amount, unit).valueOf();
12152
12102
  },
12153
12103
 
12154
12104
  diff: function(max, min, unit) {
12155
- return moment$3(max).diff(moment$3(min), unit);
12105
+ return moment(max).diff(moment(min), unit);
12156
12106
  },
12157
12107
 
12158
12108
  startOf: function(time, unit, weekday) {
12159
- time = moment$3(time);
12109
+ time = moment(time);
12160
12110
  if (unit === 'isoWeek') {
12161
12111
  weekday = Math.trunc(Math.min(Math.max(0, weekday), 6));
12162
12112
  return time.isoWeekday(weekday).startOf('day').valueOf();
@@ -12165,7 +12115,7 @@ _adapters._date.override(typeof moment$3 === 'function' ? {
12165
12115
  },
12166
12116
 
12167
12117
  endOf: function(time, unit) {
12168
- return moment$3(time).endOf(unit).valueOf();
12118
+ return moment(time).endOf(unit).valueOf();
12169
12119
  }
12170
12120
  } : {});
12171
12121
 
@@ -12259,7 +12209,7 @@ var ColorPicker = function (_a) {
12259
12209
  };
12260
12210
 
12261
12211
  var TrendingsInitialState = {
12262
- timeScopeStart: moment$3(new Date()).subtract(1, "days").toDate(),
12212
+ timeScopeStart: moment(new Date()).subtract(1, "days").toDate(),
12263
12213
  timeScopeEnd: new Date(),
12264
12214
  scope: "1 day",
12265
12215
  graphPan: false,
@@ -12299,32 +12249,32 @@ var TrendingsReducer = createSlice({
12299
12249
  if (payload.scope !== "custom") {
12300
12250
  switch (payload.scope) {
12301
12251
  case "10 min":
12302
- state.timeScopeStart = moment$3(state.timeScopeEnd)
12252
+ state.timeScopeStart = moment(state.timeScopeEnd)
12303
12253
  .subtract(10, "minutes")
12304
12254
  .toDate();
12305
12255
  break;
12306
12256
  case "1 hour":
12307
- state.timeScopeStart = moment$3(state.timeScopeEnd)
12257
+ state.timeScopeStart = moment(state.timeScopeEnd)
12308
12258
  .subtract(1, "hours")
12309
12259
  .toDate();
12310
12260
  break;
12311
12261
  case "4 hours":
12312
- state.timeScopeStart = moment$3(state.timeScopeEnd)
12262
+ state.timeScopeStart = moment(state.timeScopeEnd)
12313
12263
  .subtract(4, "hours")
12314
12264
  .toDate();
12315
12265
  break;
12316
12266
  case "12 hours":
12317
- state.timeScopeStart = moment$3(state.timeScopeEnd)
12267
+ state.timeScopeStart = moment(state.timeScopeEnd)
12318
12268
  .subtract(12, "hours")
12319
12269
  .toDate();
12320
12270
  break;
12321
12271
  case "1 day":
12322
- state.timeScopeStart = moment$3(state.timeScopeEnd)
12272
+ state.timeScopeStart = moment(state.timeScopeEnd)
12323
12273
  .subtract(1, "days")
12324
12274
  .toDate();
12325
12275
  break;
12326
12276
  case "10 days":
12327
- state.timeScopeStart = moment$3(state.timeScopeEnd)
12277
+ state.timeScopeStart = moment(state.timeScopeEnd)
12328
12278
  .subtract(10, "days")
12329
12279
  .toDate();
12330
12280
  break;
@@ -12355,32 +12305,32 @@ var TrendingsReducer = createSlice({
12355
12305
  if (state.scope !== "custom") {
12356
12306
  switch (state.scope) {
12357
12307
  case "10 min":
12358
- state.timeScopeEnd = moment$3(payload.start)
12308
+ state.timeScopeEnd = moment(payload.start)
12359
12309
  .add(10, "minutes")
12360
12310
  .toDate();
12361
12311
  break;
12362
12312
  case "1 hour":
12363
- state.timeScopeEnd = moment$3(payload.start)
12313
+ state.timeScopeEnd = moment(payload.start)
12364
12314
  .add(1, "hours")
12365
12315
  .toDate();
12366
12316
  break;
12367
12317
  case "4 hours":
12368
- state.timeScopeEnd = moment$3(payload.start)
12318
+ state.timeScopeEnd = moment(payload.start)
12369
12319
  .add(4, "hours")
12370
12320
  .toDate();
12371
12321
  break;
12372
12322
  case "12 hours":
12373
- state.timeScopeEnd = moment$3(payload.start)
12323
+ state.timeScopeEnd = moment(payload.start)
12374
12324
  .add(12, "hours")
12375
12325
  .toDate();
12376
12326
  break;
12377
12327
  case "1 day":
12378
- state.timeScopeEnd = moment$3(payload.start)
12328
+ state.timeScopeEnd = moment(payload.start)
12379
12329
  .add(1, "days")
12380
12330
  .toDate();
12381
12331
  break;
12382
12332
  case "10 days":
12383
- state.timeScopeEnd = moment$3(payload.start)
12333
+ state.timeScopeEnd = moment(payload.start)
12384
12334
  .add(10, "days")
12385
12335
  .toDate();
12386
12336
  break;
@@ -12393,32 +12343,32 @@ var TrendingsReducer = createSlice({
12393
12343
  if (state.scope !== "custom") {
12394
12344
  switch (state.scope) {
12395
12345
  case "10 min":
12396
- state.timeScopeStart = moment$3(payload.end)
12346
+ state.timeScopeStart = moment(payload.end)
12397
12347
  .subtract(10, "minutes")
12398
12348
  .toDate();
12399
12349
  break;
12400
12350
  case "1 hour":
12401
- state.timeScopeStart = moment$3(payload.end)
12351
+ state.timeScopeStart = moment(payload.end)
12402
12352
  .subtract(1, "hours")
12403
12353
  .toDate();
12404
12354
  break;
12405
12355
  case "4 hours":
12406
- state.timeScopeStart = moment$3(payload.end)
12356
+ state.timeScopeStart = moment(payload.end)
12407
12357
  .subtract(4, "hours")
12408
12358
  .toDate();
12409
12359
  break;
12410
12360
  case "12 hours":
12411
- state.timeScopeStart = moment$3(payload.end)
12361
+ state.timeScopeStart = moment(payload.end)
12412
12362
  .subtract(12, "hours")
12413
12363
  .toDate();
12414
12364
  break;
12415
12365
  case "1 day":
12416
- state.timeScopeStart = moment$3(payload.end)
12366
+ state.timeScopeStart = moment(payload.end)
12417
12367
  .subtract(1, "days")
12418
12368
  .toDate();
12419
12369
  break;
12420
12370
  case "10 days":
12421
- state.timeScopeStart = moment$3(payload.end)
12371
+ state.timeScopeStart = moment(payload.end)
12422
12372
  .subtract(10, "days")
12423
12373
  .toDate();
12424
12374
  break;
@@ -14377,21 +14327,21 @@ var dateNavigator = function (startDate, endDate, scope, operator, current) {
14377
14327
  }
14378
14328
  else {
14379
14329
  var _a = scope.split(" "), quantity = _a[0], duration = _a[1];
14380
- newStartDate = moment$3(newEndDate)
14330
+ newStartDate = moment(newEndDate)
14381
14331
  .subtract(quantity, duration[0])
14382
14332
  .toDate();
14383
14333
  }
14384
14334
  }
14385
14335
  else {
14386
14336
  if (scope === "custom") {
14387
- var durationInMs = moment$3(endDate).diff(moment$3(startDate));
14388
- newStartDate = moment$3(startDate)[operator](durationInMs).toDate();
14337
+ var durationInMs = moment(endDate).diff(moment(startDate));
14338
+ newStartDate = moment(startDate)[operator](durationInMs).toDate();
14389
14339
  }
14390
14340
  else {
14391
14341
  var _b = scope.split(" "), quantity = _b[0], duration = _b[1];
14392
- newStartDate = moment$3(startDate)[operator](quantity, duration[0])
14342
+ newStartDate = moment(startDate)[operator](quantity, duration[0])
14393
14343
  .toDate();
14394
- newEndDate = moment$3(endDate)[operator](quantity, duration[0])
14344
+ newEndDate = moment(endDate)[operator](quantity, duration[0])
14395
14345
  .toDate();
14396
14346
  }
14397
14347
  }
@@ -14420,7 +14370,7 @@ var Header = function (_a) {
14420
14370
  var handleDateChange = function (newValue, key) {
14421
14371
  var _a;
14422
14372
  //@ts-ignore
14423
- actions.setTotalScope((_a = {}, _a[key] = moment$3(newValue).toDate(), _a));
14373
+ actions.setTotalScope((_a = {}, _a[key] = moment(newValue).toDate(), _a));
14424
14374
  };
14425
14375
  var handleChangeScope = function (e) {
14426
14376
  var newScope = e.target.value;
@@ -14456,7 +14406,7 @@ var Header = function (_a) {
14456
14406
  React__default.createElement(IconButton$1, { color: "primary", onClick: function () { return handleDateNavigator("subtract"); }, className: classes.navigatorButton },
14457
14407
  React__default.createElement(ChevronLeft, { fontSize: "large" }))),
14458
14408
  React__default.createElement(Grid, { item: true },
14459
- React__default.createElement(TextField, { type: "datetime-local", className: classes.datetimePicker, label: "Start", variant: "outlined", value: moment$3(state.timeScopeStart).format("YYYY-MM-DDTHH:mm:ss"), onChange: function (e) { return handleDateChange(e.target.value, "start"); }, InputLabelProps: {
14409
+ React__default.createElement(TextField, { type: "datetime-local", className: classes.datetimePicker, label: "Start", variant: "outlined", value: moment(state.timeScopeStart).format("YYYY-MM-DDTHH:mm:ss"), onChange: function (e) { return handleDateChange(e.target.value, "start"); }, InputLabelProps: {
14460
14410
  shrink: true,
14461
14411
  style: { marginLeft: "10px" },
14462
14412
  }, InputProps: {
@@ -14473,7 +14423,7 @@ var Header = function (_a) {
14473
14423
  React__default.createElement(MenuItem, { value: "10 days" }, "10 days"),
14474
14424
  React__default.createElement(MenuItem, { value: "custom" }, "Custom")))),
14475
14425
  React__default.createElement(Grid, { item: true },
14476
- React__default.createElement(TextField, { label: "End", variant: "outlined", className: classes.datetimePicker, type: "datetime-local", value: moment$3(state.timeScopeEnd).format("YYYY-MM-DDTHH:mm:ss"), onChange: function (e) { return handleDateChange(e.target.value, "end"); }, InputLabelProps: {
14426
+ React__default.createElement(TextField, { label: "End", variant: "outlined", className: classes.datetimePicker, type: "datetime-local", value: moment(state.timeScopeEnd).format("YYYY-MM-DDTHH:mm:ss"), onChange: function (e) { return handleDateChange(e.target.value, "end"); }, InputLabelProps: {
14477
14427
  shrink: true,
14478
14428
  style: { marginLeft: "10px" },
14479
14429
  } })),
@@ -15098,30 +15048,39 @@ var ProvidersLoader = function (_a) {
15098
15048
  };
15099
15049
 
15100
15050
  var timezone = TimeService.getInstance().getServerTimeZone();
15101
- moment$2.tz.setDefault(timezone);
15051
+ moment$1.tz.setDefault(timezone);
15102
15052
  var base = document.getElementsByTagName("base")[0].getAttribute("href") || "/";
15053
+ var queryClient = new QueryClient({
15054
+ defaultOptions: {
15055
+ queries: {
15056
+ refetchOnWindowFocus: false,
15057
+ cacheTime: 1000 * 60,
15058
+ },
15059
+ },
15060
+ });
15103
15061
  function MESFMain(_a) {
15104
15062
  var authentication = _a.authentication, routes = _a.routes, navbar = _a.navbar, _b = _a.navbarTitle, navbarTitle = _b === void 0 ? "MESF" : _b, configurations = _a.configurations, _c = _a.showAreaSelector, showAreaSelector = _c === void 0 ? false : _c, _d = _a.showTrendingsIcon, showTrendingsIcon = _d === void 0 ? true : _d, _e = _a.byPassHeaderRoutes, byPassHeaderRoutes = _e === void 0 ? [] : _e, _f = _a.plantAssetId, plantAssetId = _f === void 0 ? 1 : _f, _g = _a.theme, theme = _g === void 0 ? themeMESF : _g;
15105
15063
  return (React__default.createElement(React__default.Fragment, null,
15106
15064
  React__default.createElement(CssBaseline, null),
15107
15065
  React__default.createElement(HelmetProvider, null,
15108
15066
  React__default.createElement(HelmetDexteelProvider, { navbarTitle: navbarTitle },
15109
- React__default.createElement(ThemeProvider, { theme: theme },
15110
- React__default.createElement(AuthProvider, { authConfig: authentication },
15111
- React__default.createElement(LocalizationProvider, { dateAdapter: AdapterMoment, dateLibInstance: moment$2 },
15112
- React__default.createElement(UserProvider, null,
15113
- React__default.createElement(UTLSettingsProvider, null,
15114
- React__default.createElement(ProvidersLoader, null,
15115
- React__default.createElement(AssetProvider, { plantAssetId: plantAssetId },
15116
- React__default.createElement(RouterContext.Provider, { value: routes },
15117
- React__default.createElement(NavbarContext.Provider, { value: navbar },
15118
- React__default.createElement(ConfigurationContext.Provider, { value: configurations },
15119
- React__default.createElement(ShiftNavigatorProvider, null,
15120
- React__default.createElement(ContextMenuMESFProvider, null,
15121
- React__default.createElement(BrowserRouter, { basename: base },
15122
- React__default.createElement(Routes, null,
15123
- React__default.createElement(Route, { path: "/logout", element: React__default.createElement(Logout, null) })),
15124
- React__default.createElement(Navigation, { showAreaSelector: showAreaSelector, showTrendingsIcon: showTrendingsIcon, navbarTitle: navbarTitle, byPassHeaderRoutes: byPassHeaderRoutes }))))))))))))))))));
15067
+ React__default.createElement(QueryClientProvider, { client: queryClient },
15068
+ React__default.createElement(ThemeProvider, { theme: theme },
15069
+ React__default.createElement(AuthProvider, { authConfig: authentication },
15070
+ React__default.createElement(LocalizationProvider, { dateAdapter: AdapterMoment, dateLibInstance: moment$1 },
15071
+ React__default.createElement(UserProvider, null,
15072
+ React__default.createElement(UTLSettingsProvider, null,
15073
+ React__default.createElement(ProvidersLoader, null,
15074
+ React__default.createElement(AssetProvider, { plantAssetId: plantAssetId },
15075
+ React__default.createElement(RouterContext.Provider, { value: routes },
15076
+ React__default.createElement(NavbarContext.Provider, { value: navbar },
15077
+ React__default.createElement(ConfigurationContext.Provider, { value: configurations },
15078
+ React__default.createElement(ShiftNavigatorProvider, null,
15079
+ React__default.createElement(ContextMenuMESFProvider, null,
15080
+ React__default.createElement(BrowserRouter, { basename: base },
15081
+ React__default.createElement(Routes, null,
15082
+ React__default.createElement(Route, { path: "/logout", element: React__default.createElement(Logout, null) })),
15083
+ React__default.createElement(Navigation, { showAreaSelector: showAreaSelector, showTrendingsIcon: showTrendingsIcon, navbarTitle: navbarTitle, byPassHeaderRoutes: byPassHeaderRoutes })))))))))))))))))));
15125
15084
  }
15126
15085
 
15127
15086
  var useDefaultAreaId = function (setError) {