@dexteel/mesf-core 5.6.3 → 5.7.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
@@ -1857,9 +1857,11 @@ var ShiftPeriodNavigatorControl = function (_a) {
1857
1857
  React__default.createElement(IconButton$1, { size: "small", color: "primary", disabled: loadingShiftPeriodList || isCustomMode, onClick: function () { return handleArrowNavigation("prev"); } },
1858
1858
  React__default.createElement(ChevronLeft, null))),
1859
1859
  React__default.createElement("div", { className: "".concat(classes.gridItem, " ").concat(classes.datePickerWrapper) },
1860
- React__default.createElement(DatePicker$1, { label: "Start", format: dateFormat, value: moment$2((startShift === null || startShift === void 0 ? void 0 : startShift.Start) || moment$2().subtract(1, "day")), onChange: function (value) {
1860
+ React__default.createElement(DatePicker$1, { label: "Start", format: dateFormat, value: isCustomMode
1861
+ ? customStartDate || moment$2().subtract(1, "day")
1862
+ : moment$2((startShift === null || startShift === void 0 ? void 0 : startShift.Start) || moment$2().subtract(1, "day")), onChange: function (value) {
1861
1863
  return handleDateChange(value ? moment$2(value) : null, "start");
1862
- }, disabled: loadingShiftPeriodList, enableAccessibleFieldDOMStructure: false, slots: {
1864
+ }, disabled: loadingShiftPeriodList, maxDate: isCustomMode ? moment$2() : undefined, enableAccessibleFieldDOMStructure: false, slots: {
1863
1865
  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" } }) }))); },
1864
1866
  openPickerIcon: function () { return (React__default.createElement("div", { style: {
1865
1867
  display: "flex",
@@ -1877,9 +1879,11 @@ var ShiftPeriodNavigatorControl = function (_a) {
1877
1879
  width: "100%",
1878
1880
  } }, periodOptions.map(function (option) { return (React__default.createElement(MenuItem, { key: option.value, value: option.value }, option.label)); })))),
1879
1881
  React__default.createElement("div", { className: "".concat(classes.gridItem, " ").concat(classes.datePickerWrapper) },
1880
- React__default.createElement(DatePicker$1, { label: "End", format: dateFormat, value: moment$2((endShift === null || endShift === void 0 ? void 0 : endShift.Start) || moment$2().subtract(1, "day")), onChange: function (value) {
1882
+ React__default.createElement(DatePicker$1, { label: "End", format: dateFormat, value: isCustomMode
1883
+ ? customEndDate || moment$2()
1884
+ : 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) {
1881
1885
  return handleDateChange(value ? moment$2(value) : null, "end");
1882
- }, disabled: loadingShiftPeriodList, enableAccessibleFieldDOMStructure: false, slots: {
1886
+ }, disabled: loadingShiftPeriodList, minDate: isCustomMode && customStartDate ? customStartDate : undefined, maxDate: isCustomMode ? moment$2() : undefined, enableAccessibleFieldDOMStructure: false, slots: {
1883
1887
  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" } }) }))); },
1884
1888
  openPickerIcon: function () { return (React__default.createElement("div", { style: {
1885
1889
  display: "flex",
@@ -6916,7 +6920,6 @@ var deleteUser = function (userId) { return __awaiter(void 0, void 0, void 0, fu
6916
6920
  }
6917
6921
  });
6918
6922
  }); };
6919
- // inserta una nueva fila o actualiza una fila existente
6920
6923
  var setPassword = function (userId, password) { return __awaiter(void 0, void 0, void 0, function () {
6921
6924
  var apiService, resp, e_1;
6922
6925
  return __generator(this, function (_a) {
@@ -6953,6 +6956,7 @@ var upsertUser = function (user) { return __awaiter(void 0, void 0, void 0, func
6953
6956
  parameters.push({ name: "LastName", value: user.LastName });
6954
6957
  parameters.push({ name: "AuthTypeId", value: user.AuthTypeId });
6955
6958
  parameters.push({ name: "IsActive", value: user.IsActive });
6959
+ parameters.push({ name: "DefaultAssetId", value: user.DefaultAssetId });
6956
6960
  return [4 /*yield*/, apiService.callV2("[SEC].[UpsertUser]", parameters)];
6957
6961
  case 1:
6958
6962
  resp = _a.sent();
@@ -7061,10 +7065,24 @@ var INITIAL_VALUES$1 = {
7061
7065
  AuthTypeId: 1,
7062
7066
  IsActive: true,
7063
7067
  LastLogin: null,
7068
+ DefaultAssetId: null,
7064
7069
  ProfilesId: [],
7065
7070
  Profiles: [],
7066
7071
  };
7067
7072
 
7073
+ var AssetSelector = function (_a) {
7074
+ var value = _a.value, onChange = _a.onChange, _b = _a.disabled, disabled = _b === void 0 ? false : _b;
7075
+ var areasList = useAssetContext().state.areasList;
7076
+ return (React__default.createElement(FormControl, { variant: "outlined", fullWidth: true, margin: "dense", disabled: disabled },
7077
+ React__default.createElement(InputLabel, null, "Default Asset"),
7078
+ React__default.createElement(Select, { value: value || "", onChange: function (e) {
7079
+ return onChange(e.target.value ? Number(e.target.value) : null);
7080
+ }, label: "Default Asset" },
7081
+ React__default.createElement(MenuItem, { value: "" },
7082
+ React__default.createElement("em", null, "None")),
7083
+ areasList.map(function (area) { return (React__default.createElement(MenuItem, { key: area === null || area === void 0 ? void 0 : area.AssetId, value: area === null || area === void 0 ? void 0 : area.AssetId }, area === null || area === void 0 ? void 0 : area.AssetName)); }))));
7084
+ };
7085
+
7068
7086
  var useStyles$i = makeStyles(function (theme) { return ({
7069
7087
  root: {
7070
7088
  "& .MuiSelect-select": {
@@ -7311,6 +7329,11 @@ var CreateUser = function (_a) {
7311
7329
  var _b = _a.field, value = _b.value, onChange = _b.onChange;
7312
7330
  return (React.createElement(AuthTypeSelector, { value: value, onChange: onChange }));
7313
7331
  } })),
7332
+ React.createElement(Grid, { item: true, xs: 12, md: 6 },
7333
+ React.createElement(Controller, { name: "DefaultAssetId", control: control, render: function (_a) {
7334
+ var _b = _a.field, value = _b.value, onChange = _b.onChange;
7335
+ return (React.createElement(AssetSelector, { value: value, onChange: onChange }));
7336
+ } })),
7314
7337
  React.createElement(Grid, { item: true, xs: 12, md: 6, style: { marginTop: "5px" } },
7315
7338
  React.createElement(Controller, { name: "IsActive", control: control, render: function (_a) {
7316
7339
  var field = _a.field;
@@ -7394,6 +7417,7 @@ var DeleteUser = function (_a) {
7394
7417
  setValue("AuthTypeId", userSelected.AuthTypeId);
7395
7418
  setValue("IsActive", userSelected.IsActive);
7396
7419
  setValue("LastLogin", userSelected.LastLogin);
7420
+ setValue("DefaultAssetId", userSelected.DefaultAssetId);
7397
7421
  setValue("ProfilesId", profilesIds.map(function (pId) { return parseInt(pId); }));
7398
7422
  setIsLoading(false);
7399
7423
  }
@@ -7431,6 +7455,11 @@ var DeleteUser = function (_a) {
7431
7455
  var _b = _a.field, value = _b.value, onChange = _b.onChange;
7432
7456
  return (React__default.createElement(AuthTypeSelector, { value: value, onChange: onChange, disabled: true }));
7433
7457
  } })),
7458
+ React__default.createElement(Grid, { item: true, xs: 12, md: 6 },
7459
+ React__default.createElement(Controller, { name: "DefaultAssetId", control: control, render: function (_a) {
7460
+ var _b = _a.field, value = _b.value, onChange = _b.onChange;
7461
+ return (React__default.createElement(AssetSelector, { value: value, onChange: onChange, disabled: true }));
7462
+ } })),
7434
7463
  React__default.createElement(Grid, { item: true, xs: 12, md: 6 },
7435
7464
  React__default.createElement(Controller, { name: "IsActive", control: control, render: function (_a) {
7436
7465
  var field = _a.field;
@@ -7453,6 +7482,309 @@ var DeleteUser = function (_a) {
7453
7482
  React__default.createElement(ErrorModal, { error: profileError, onHide: function () { return setprofileError(""); }, title: "Error Choosing Profile" })));
7454
7483
  };
7455
7484
 
7485
+ var _a;
7486
+ var base$2 = document.getElementsByTagName("base")[0].getAttribute("href") || "/";
7487
+ function renewToken() {
7488
+ return __awaiter(this, void 0, void 0, function () {
7489
+ var refreshToken, config, fd, response, token;
7490
+ return __generator(this, function (_a) {
7491
+ switch (_a.label) {
7492
+ case 0:
7493
+ refreshToken = localStorage.getItem("refreshToken");
7494
+ if (!refreshToken) {
7495
+ throw new Error("refresh token does not exist");
7496
+ }
7497
+ config = new Configuration$1();
7498
+ fd = new FormData();
7499
+ fd.append("refreshToken", refreshToken);
7500
+ return [4 /*yield*/, axios.post("".concat(config.API_AUTH_URL, "/refresh"), fd, {
7501
+ headers: {
7502
+ "Content-Type": "application/json",
7503
+ },
7504
+ params: {
7505
+ refreshToken: refreshToken,
7506
+ },
7507
+ })];
7508
+ case 1:
7509
+ response = _a.sent();
7510
+ token = response.data.result;
7511
+ if (token) {
7512
+ return [2 /*return*/, [token, refreshToken]];
7513
+ }
7514
+ else {
7515
+ throw new Error("Token is not valid");
7516
+ }
7517
+ }
7518
+ });
7519
+ });
7520
+ }
7521
+ function isUnauthorizedError(error) {
7522
+ var status = error.response.status;
7523
+ return status === 499 || status === 499; // custom status code
7524
+ }
7525
+ var axiosInstance = axios.create({
7526
+ headers: {
7527
+ Authorization: "Bearer ".concat((_a = localStorage.getItem("token")) !== null && _a !== void 0 ? _a : ""),
7528
+ },
7529
+ });
7530
+ var refreshingFunc;
7531
+ axiosInstance.interceptors.response.use(function (res) { return res; }, function (error) { return __awaiter(void 0, void 0, void 0, function () {
7532
+ var originalConfig, token, _a, newToken, newRefreshToken, innerError_1, err_1;
7533
+ return __generator(this, function (_b) {
7534
+ switch (_b.label) {
7535
+ case 0:
7536
+ originalConfig = error.config;
7537
+ if (originalConfig.headers.MESF_Retries === 1) {
7538
+ localStorage.removeItem("token");
7539
+ localStorage.removeItem("refreshToken");
7540
+ window.location.href = "".concat(base$2, "logout?message=Session%20expired&redirectTo=").concat(window.location.href);
7541
+ return [2 /*return*/, Promise.reject(error)];
7542
+ }
7543
+ token = getTokenFromLS();
7544
+ if (!token || !isUnauthorizedError(error)) {
7545
+ return [2 /*return*/, Promise.reject(error)];
7546
+ }
7547
+ _b.label = 1;
7548
+ case 1:
7549
+ _b.trys.push([1, 7, 8, 9]);
7550
+ if (!refreshingFunc)
7551
+ refreshingFunc = renewToken();
7552
+ return [4 /*yield*/, refreshingFunc];
7553
+ case 2:
7554
+ _a = _b.sent(), newToken = _a[0], newRefreshToken = _a[1];
7555
+ localStorage.setItem("token", newToken);
7556
+ localStorage.setItem("refreshToken", newRefreshToken);
7557
+ axiosInstance.defaults.headers.Authorization = "Bearer ".concat(newToken);
7558
+ originalConfig.headers.Authorization = "Bearer ".concat(newToken);
7559
+ originalConfig.headers.MESF_Retries = 1;
7560
+ _b.label = 3;
7561
+ case 3:
7562
+ _b.trys.push([3, 5, , 6]);
7563
+ return [4 /*yield*/, axios.request(originalConfig)];
7564
+ case 4: return [2 /*return*/, _b.sent()];
7565
+ case 5:
7566
+ innerError_1 = _b.sent();
7567
+ if (isUnauthorizedError(innerError_1)) {
7568
+ return [2 /*return*/, Promise.reject(innerError_1)];
7569
+ }
7570
+ return [2 /*return*/, Promise.reject(innerError_1)];
7571
+ case 6: return [3 /*break*/, 9];
7572
+ case 7:
7573
+ err_1 = _b.sent();
7574
+ localStorage.removeItem("token");
7575
+ localStorage.removeItem("refreshToken");
7576
+ window.location.href = "".concat(base$2, "logout?message=Session%20expired&redirectTo=").concat(window.location.href);
7577
+ return [2 /*return*/, Promise.reject(err_1)];
7578
+ case 8:
7579
+ refreshingFunc = undefined;
7580
+ return [7 /*endfinally*/];
7581
+ case 9: return [2 /*return*/];
7582
+ }
7583
+ });
7584
+ }); });
7585
+
7586
+ var useMesfRealtime = function (_a) {
7587
+ var onReceiveMessage = _a.onReceiveMessage;
7588
+ useEffect(function () {
7589
+ var connection = new HubConnectionBuilder()
7590
+ .withUrl("/ws")
7591
+ .withAutomaticReconnect()
7592
+ .configureLogging(LogLevel.Information)
7593
+ .build();
7594
+ connection
7595
+ .start()
7596
+ .then(function () {
7597
+ console.log("Connection started");
7598
+ })
7599
+ .catch(function (err) {
7600
+ console.log("Error while starting connection: " + err);
7601
+ });
7602
+ connection.on("ReceiveMessage", function (author, message) {
7603
+ onReceiveMessage(author, message);
7604
+ });
7605
+ return function () {
7606
+ connection
7607
+ .stop()
7608
+ .then(function () {
7609
+ console.log("Connection stopped");
7610
+ })
7611
+ .catch(function (err) {
7612
+ console.log("Error while stopping connection: " + err);
7613
+ });
7614
+ };
7615
+ }, []);
7616
+ };
7617
+
7618
+ var UserInitialState = {
7619
+ userLastName: "",
7620
+ userId: null,
7621
+ defaultAreaId: null,
7622
+ defaultAreaName: "",
7623
+ userLogged: false,
7624
+ permissions: [],
7625
+ };
7626
+ var UserReducer = createSlice({
7627
+ name: "__",
7628
+ initialState: UserInitialState,
7629
+ reducers: {
7630
+ setUserId: function (state, _a) {
7631
+ var payload = _a.payload;
7632
+ state.userId = payload;
7633
+ },
7634
+ setUserLastName: function (state, _a) {
7635
+ var payload = _a.payload;
7636
+ state.userLastName = payload;
7637
+ },
7638
+ setDefaultAreaId: function (state, _a) {
7639
+ var payload = _a.payload;
7640
+ state.defaultAreaId = payload;
7641
+ },
7642
+ setDefaultAreaName: function (state, _a) {
7643
+ var payload = _a.payload;
7644
+ state.defaultAreaName = payload;
7645
+ },
7646
+ setUserLogged: function (state, _a) {
7647
+ var payload = _a.payload;
7648
+ state.userLogged = payload;
7649
+ },
7650
+ setPermissions: function (state, _a) {
7651
+ var payload = _a.payload;
7652
+ state.permissions = payload;
7653
+ },
7654
+ },
7655
+ });
7656
+
7657
+ var UserContext = createContext({
7658
+ state: UserReducer.getInitialState(),
7659
+ actions: UserReducer.actions,
7660
+ isLoading: true,
7661
+ });
7662
+ var useUserContext = function () { return useContext(UserContext); };
7663
+ var useHasPermission = function () {
7664
+ var state = useUserContext().state;
7665
+ return function (permission) {
7666
+ return state.permissions.some(function (p) { return p === permission; });
7667
+ };
7668
+ };
7669
+ var UserProvider = function (_a) {
7670
+ var children = _a.children;
7671
+ var _b = useComplexState({
7672
+ initialState: UserReducer.getInitialState(),
7673
+ reducers: UserReducer.caseReducers,
7674
+ }), state = _b[0], actions = _b[1];
7675
+ var _c = useState(false), permissionsLoaded = _c[0], setPermissionsLoaded = _c[1];
7676
+ var getUserId = function () {
7677
+ var sessionData = localStorage.getItem("userMESData") || "{}";
7678
+ var userData = JSON.parse(sessionData);
7679
+ return get(userData, "id", null);
7680
+ };
7681
+ var getUserPermissions = function () { return __awaiter(void 0, void 0, void 0, function () {
7682
+ var userId, resp, permissionsArray, error_1;
7683
+ return __generator(this, function (_a) {
7684
+ switch (_a.label) {
7685
+ case 0:
7686
+ userId = getUserId();
7687
+ if (!userId) return [3 /*break*/, 4];
7688
+ _a.label = 1;
7689
+ case 1:
7690
+ _a.trys.push([1, 3, , 4]);
7691
+ return [4 /*yield*/, getUserPermissionsFromAPI({
7692
+ UserId: userId,
7693
+ })];
7694
+ case 2:
7695
+ resp = (_a.sent());
7696
+ if (resp && resp.Permissions) {
7697
+ permissionsArray = resp.Permissions.split(",");
7698
+ actions.setPermissions(permissionsArray);
7699
+ setPermissionsLoaded(true);
7700
+ }
7701
+ return [3 /*break*/, 4];
7702
+ case 3:
7703
+ error_1 = _a.sent();
7704
+ console.error("Failed to load permissions:", error_1);
7705
+ return [3 /*break*/, 4];
7706
+ case 4: return [2 /*return*/];
7707
+ }
7708
+ });
7709
+ }); };
7710
+ var userId = getUserId();
7711
+ useEffect(function () {
7712
+ getUserPermissions();
7713
+ }, [userId]);
7714
+ useMesfRealtime({
7715
+ onReceiveMessage: function (author, message) {
7716
+ if (message === "SEC.GetPermissions") {
7717
+ getUserPermissions();
7718
+ }
7719
+ },
7720
+ });
7721
+ return (React__default.createElement(UserContext.Provider, { value: { state: state, actions: actions, isLoading: !permissionsLoaded } }, children));
7722
+ };
7723
+
7724
+ var getTokenFromLS = function () {
7725
+ return localStorage.getItem("token");
7726
+ };
7727
+ function useToken() {
7728
+ var setUserLogged = useUserContext().actions.setUserLogged;
7729
+ var _a = useState(getTokenFromLS()), token = _a[0], setToken = _a[1];
7730
+ var saveUserData = function (userToken) {
7731
+ localStorage.setItem("userMESData", JSON.stringify(userToken));
7732
+ localStorage.setItem("refreshToken", userToken["refreshToken"]);
7733
+ localStorage.setItem("token", userToken["token"]);
7734
+ setToken(userToken["token"]);
7735
+ axiosInstance.defaults.headers.Authorization = "Bearer ".concat(userToken["token"]);
7736
+ setUserLogged(true);
7737
+ };
7738
+ var clearUserData = function () {
7739
+ localStorage.removeItem("userMESData");
7740
+ localStorage.removeItem("token");
7741
+ localStorage.removeItem("refreshToken");
7742
+ setToken("");
7743
+ setUserLogged(false);
7744
+ };
7745
+ var getUserName = function () {
7746
+ var sessionData = localStorage.getItem("userMESData");
7747
+ var userData = JSON.parse(sessionData);
7748
+ return (((userData || {}).lastName || "") +
7749
+ ", " +
7750
+ ((userData || {}).firstName || ""));
7751
+ };
7752
+ var getFirstName = function () {
7753
+ var sessionData = localStorage.getItem("userMESData");
7754
+ var userData = JSON.parse(sessionData);
7755
+ return (userData || {}).firstName || "";
7756
+ };
7757
+ var getLastName = function () {
7758
+ var sessionData = localStorage.getItem("userMESData");
7759
+ var userData = JSON.parse(sessionData);
7760
+ return (userData || {}).lastName || "";
7761
+ };
7762
+ var getUserId = function () {
7763
+ var sessionData = localStorage.getItem("userMESData");
7764
+ var userData = JSON.parse(sessionData);
7765
+ setUserLogged(true);
7766
+ return (userData || {}).id || -1;
7767
+ };
7768
+ var hasPermission = function (permissionId) {
7769
+ var sessionData = localStorage.getItem("userMESData");
7770
+ if (sessionData === undefined)
7771
+ return false;
7772
+ var userData = JSON.parse(sessionData);
7773
+ var permissions = userData.permissions || [];
7774
+ return permissions.indexOf(permissionId) > -1; //case sensitve
7775
+ };
7776
+ return {
7777
+ getUserName: getUserName,
7778
+ saveUserData: saveUserData,
7779
+ clearUserData: clearUserData,
7780
+ getFirstName: getFirstName,
7781
+ getLastName: getLastName,
7782
+ getUserId: getUserId,
7783
+ hasPermission: hasPermission,
7784
+ token: token,
7785
+ };
7786
+ }
7787
+
7456
7788
  var useStyles$f = makeStyles(function (theme) { return ({
7457
7789
  checkbox: {
7458
7790
  userSelect: "none",
@@ -7478,7 +7810,10 @@ var EditUser = function (_a) {
7478
7810
  var _g = useState(false), isSubmitLoading = _g[0], setIsSubmitLoading = _g[1];
7479
7811
  var _h = useState(""), error = _h[0], setError = _h[1];
7480
7812
  var _j = useState(""), profileError = _j[0], setprofileError = _j[1];
7481
- var _k = useForm({ defaultValues: INITIAL_VALUES$1 }), register = _k.register, control = _k.control, setValue = _k.setValue, handleSubmit = _k.handleSubmit, errors = _k.formState.errors;
7813
+ var getUserId = useToken().getUserId;
7814
+ var areasList = useAssetContext().state.areasList;
7815
+ var _k = useUserContext().actions, setDefaultAreaId = _k.setDefaultAreaId, setDefaultAreaName = _k.setDefaultAreaName;
7816
+ var _l = useForm({ defaultValues: INITIAL_VALUES$1 }), register = _l.register, control = _l.control, setValue = _l.setValue, handleSubmit = _l.handleSubmit; _l.watch; var errors = _l.formState.errors;
7482
7817
  var handleClose = function (event, reason) {
7483
7818
  if (reason === "clickaway") {
7484
7819
  return;
@@ -7486,7 +7821,7 @@ var EditUser = function (_a) {
7486
7821
  setOpen(false);
7487
7822
  };
7488
7823
  var onSubmit = function (data) { return __awaiter(void 0, void 0, void 0, function () {
7489
- var res, userId_1, resp;
7824
+ var res, updatedUserId, resp, currentLoggedUserId, selectedArea;
7490
7825
  return __generator(this, function (_a) {
7491
7826
  switch (_a.label) {
7492
7827
  case 0:
@@ -7495,11 +7830,19 @@ var EditUser = function (_a) {
7495
7830
  case 1:
7496
7831
  res = _a.sent();
7497
7832
  if (!res.ok) return [3 /*break*/, 3];
7498
- userId_1 = res.data.tables[0].rows[0].UserId;
7499
- return [4 /*yield*/, setProfilesToUser(userId_1, data.ProfilesId)];
7833
+ updatedUserId = res.data.tables[0].rows[0].UserId;
7834
+ return [4 /*yield*/, setProfilesToUser(updatedUserId, data.ProfilesId)];
7500
7835
  case 2:
7501
7836
  resp = _a.sent();
7502
7837
  if (resp.ok) {
7838
+ currentLoggedUserId = getUserId();
7839
+ if (currentLoggedUserId === updatedUserId && data.DefaultAssetId) {
7840
+ selectedArea = areasList.find(function (area) { return (area === null || area === void 0 ? void 0 : area.AssetId) === data.DefaultAssetId; });
7841
+ if (selectedArea) {
7842
+ setDefaultAreaId(data.DefaultAssetId);
7843
+ setDefaultAreaName(selectedArea.AssetName);
7844
+ }
7845
+ }
7503
7846
  onHide(true);
7504
7847
  setOpen(true);
7505
7848
  }
@@ -7509,7 +7852,9 @@ var EditUser = function (_a) {
7509
7852
  case 3:
7510
7853
  setError(res.message);
7511
7854
  _a.label = 4;
7512
- case 4: return [2 /*return*/];
7855
+ case 4:
7856
+ setIsSubmitLoading(false);
7857
+ return [2 /*return*/];
7513
7858
  }
7514
7859
  });
7515
7860
  }); };
@@ -7537,6 +7882,7 @@ var EditUser = function (_a) {
7537
7882
  setValue("AuthTypeId", userSelected.AuthTypeId);
7538
7883
  setValue("IsActive", userSelected.IsActive);
7539
7884
  setValue("LastLogin", userSelected.LastLogin);
7885
+ setValue("DefaultAssetId", userSelected.DefaultAssetId);
7540
7886
  setValue("ProfilesId", profilesIds.map(function (pId) { return parseInt(pId); }));
7541
7887
  setIsLoading(false);
7542
7888
  }
@@ -7578,6 +7924,11 @@ var EditUser = function (_a) {
7578
7924
  var _b = _a.field, value = _b.value, onChange = _b.onChange;
7579
7925
  return (React.createElement(AuthTypeSelector, { value: value, onChange: onChange }));
7580
7926
  } })),
7927
+ React.createElement(Grid, { item: true, xs: 12, md: 6, style: { padding: "0 0 0 5px" } },
7928
+ React.createElement(Controller, { name: "DefaultAssetId", control: control, render: function (_a) {
7929
+ var _b = _a.field, value = _b.value, onChange = _b.onChange;
7930
+ return (React.createElement(AssetSelector, { value: value, onChange: onChange }));
7931
+ } })),
7581
7932
  React.createElement(Grid, { item: true, xs: 12, md: 6 },
7582
7933
  React.createElement(Controller, { name: "IsActive", control: control, render: function (_a) {
7583
7934
  var field = _a.field;
@@ -8010,161 +8361,60 @@ var DateFormatter = new Intl.DateTimeFormat("en-US", {
8010
8361
  // timeZone: 'America/Los_Angeles'
8011
8362
  });
8012
8363
  var TimeFormatter = new Intl.DateTimeFormat("en-US-u-hc-h23", {
8013
- hour: "2-digit",
8014
- minute: "numeric",
8015
- second: "numeric",
8016
- hour12: false,
8017
- // timeZone: 'America/Los_Angeles'
8018
- });
8019
-
8020
- var getShiftStyle = function (shift) {
8021
- if (shift === "D") {
8022
- return { color: "#52a8b7" };
8023
- }
8024
- else if (shift === "N") {
8025
- return { color: "#A5A5A5" };
8026
- }
8027
- else {
8028
- return {};
8029
- }
8030
- };
8031
- var getCrewStyle = function (crew) {
8032
- if (crew === "A") {
8033
- return { color: "#0070C0" };
8034
- }
8035
- else if (crew === "B") {
8036
- return { color: "#FFD24A" };
8037
- }
8038
- else if (crew === "C") {
8039
- return { color: "#FD8359" };
8040
- }
8041
- else if (crew === "D") {
8042
- return { color: "#00B050" };
8043
- }
8044
- else {
8045
- return {};
8046
- }
8047
- };
8048
- var GetShiftColor = function (props) {
8049
- return (React__default.createElement(React__default.Fragment, null,
8050
- React__default.createElement("i", { className: "fas fa-square mr-2", style: getShiftStyle(props.value) })));
8051
- };
8052
- var GetCrewColor = function (props) {
8053
- return (React__default.createElement(React__default.Fragment, null,
8054
- React__default.createElement("i", { className: "fas fa-square mr-2", style: getCrewStyle(props.value) })));
8055
- };
8056
-
8057
- var Configuration$1 = /** @class */ (function () {
8058
- function Configuration() {
8059
- var _a;
8060
- this.API_PROCEDURE_URL = document.getElementsByTagName("base")[0].href + "backend";
8061
- this.API_AUTH_URL = document.getElementsByTagName("base")[0].href + "authentication";
8062
- this.TOKEN =
8063
- ((_a = JSON.parse(localStorage.getItem("userMESData"))) === null || _a === void 0 ? void 0 : _a.token) || "";
8064
- }
8065
- return Configuration;
8066
- }());
8067
-
8068
- var _a;
8069
- var base$2 = document.getElementsByTagName("base")[0].getAttribute("href") || "/";
8070
- function renewToken() {
8071
- return __awaiter(this, void 0, void 0, function () {
8072
- var refreshToken, config, fd, response, token;
8073
- return __generator(this, function (_a) {
8074
- switch (_a.label) {
8075
- case 0:
8076
- refreshToken = localStorage.getItem("refreshToken");
8077
- if (!refreshToken) {
8078
- throw new Error("refresh token does not exist");
8079
- }
8080
- config = new Configuration$1();
8081
- fd = new FormData();
8082
- fd.append("refreshToken", refreshToken);
8083
- return [4 /*yield*/, axios.post("".concat(config.API_AUTH_URL, "/refresh"), fd, {
8084
- headers: {
8085
- "Content-Type": "application/json",
8086
- },
8087
- params: {
8088
- refreshToken: refreshToken,
8089
- },
8090
- })];
8091
- case 1:
8092
- response = _a.sent();
8093
- token = response.data.result;
8094
- if (token) {
8095
- return [2 /*return*/, [token, refreshToken]];
8096
- }
8097
- else {
8098
- throw new Error("Token is not valid");
8099
- }
8100
- }
8101
- });
8102
- });
8103
- }
8104
- function isUnauthorizedError(error) {
8105
- var status = error.response.status;
8106
- return status === 499 || status === 499; // custom status code
8107
- }
8108
- var axiosInstance = axios.create({
8109
- headers: {
8110
- Authorization: "Bearer ".concat((_a = localStorage.getItem("token")) !== null && _a !== void 0 ? _a : ""),
8111
- },
8112
- });
8113
- var refreshingFunc;
8114
- axiosInstance.interceptors.response.use(function (res) { return res; }, function (error) { return __awaiter(void 0, void 0, void 0, function () {
8115
- var originalConfig, token, _a, newToken, newRefreshToken, innerError_1, err_1;
8116
- return __generator(this, function (_b) {
8117
- switch (_b.label) {
8118
- case 0:
8119
- originalConfig = error.config;
8120
- if (originalConfig.headers.MESF_Retries === 1) {
8121
- localStorage.removeItem("token");
8122
- localStorage.removeItem("refreshToken");
8123
- window.location.href = "".concat(base$2, "logout?message=Session%20expired&redirectTo=").concat(window.location.href);
8124
- return [2 /*return*/, Promise.reject(error)];
8125
- }
8126
- token = getTokenFromLS();
8127
- if (!token || !isUnauthorizedError(error)) {
8128
- return [2 /*return*/, Promise.reject(error)];
8129
- }
8130
- _b.label = 1;
8131
- case 1:
8132
- _b.trys.push([1, 7, 8, 9]);
8133
- if (!refreshingFunc)
8134
- refreshingFunc = renewToken();
8135
- return [4 /*yield*/, refreshingFunc];
8136
- case 2:
8137
- _a = _b.sent(), newToken = _a[0], newRefreshToken = _a[1];
8138
- localStorage.setItem("token", newToken);
8139
- localStorage.setItem("refreshToken", newRefreshToken);
8140
- axiosInstance.defaults.headers.Authorization = "Bearer ".concat(newToken);
8141
- originalConfig.headers.Authorization = "Bearer ".concat(newToken);
8142
- originalConfig.headers.MESF_Retries = 1;
8143
- _b.label = 3;
8144
- case 3:
8145
- _b.trys.push([3, 5, , 6]);
8146
- return [4 /*yield*/, axios.request(originalConfig)];
8147
- case 4: return [2 /*return*/, _b.sent()];
8148
- case 5:
8149
- innerError_1 = _b.sent();
8150
- if (isUnauthorizedError(innerError_1)) {
8151
- return [2 /*return*/, Promise.reject(innerError_1)];
8152
- }
8153
- return [2 /*return*/, Promise.reject(innerError_1)];
8154
- case 6: return [3 /*break*/, 9];
8155
- case 7:
8156
- err_1 = _b.sent();
8157
- localStorage.removeItem("token");
8158
- localStorage.removeItem("refreshToken");
8159
- window.location.href = "".concat(base$2, "logout?message=Session%20expired&redirectTo=").concat(window.location.href);
8160
- return [2 /*return*/, Promise.reject(err_1)];
8161
- case 8:
8162
- refreshingFunc = undefined;
8163
- return [7 /*endfinally*/];
8164
- case 9: return [2 /*return*/];
8165
- }
8166
- });
8167
- }); });
8364
+ hour: "2-digit",
8365
+ minute: "numeric",
8366
+ second: "numeric",
8367
+ hour12: false,
8368
+ // timeZone: 'America/Los_Angeles'
8369
+ });
8370
+
8371
+ var getShiftStyle = function (shift) {
8372
+ if (shift === "D") {
8373
+ return { color: "#52a8b7" };
8374
+ }
8375
+ else if (shift === "N") {
8376
+ return { color: "#A5A5A5" };
8377
+ }
8378
+ else {
8379
+ return {};
8380
+ }
8381
+ };
8382
+ var getCrewStyle = function (crew) {
8383
+ if (crew === "A") {
8384
+ return { color: "#0070C0" };
8385
+ }
8386
+ else if (crew === "B") {
8387
+ return { color: "#FFD24A" };
8388
+ }
8389
+ else if (crew === "C") {
8390
+ return { color: "#FD8359" };
8391
+ }
8392
+ else if (crew === "D") {
8393
+ return { color: "#00B050" };
8394
+ }
8395
+ else {
8396
+ return {};
8397
+ }
8398
+ };
8399
+ var GetShiftColor = function (props) {
8400
+ return (React__default.createElement(React__default.Fragment, null,
8401
+ React__default.createElement("i", { className: "fas fa-square mr-2", style: getShiftStyle(props.value) })));
8402
+ };
8403
+ var GetCrewColor = function (props) {
8404
+ return (React__default.createElement(React__default.Fragment, null,
8405
+ React__default.createElement("i", { className: "fas fa-square mr-2", style: getCrewStyle(props.value) })));
8406
+ };
8407
+
8408
+ var Configuration$1 = /** @class */ (function () {
8409
+ function Configuration() {
8410
+ var _a;
8411
+ this.API_PROCEDURE_URL = document.getElementsByTagName("base")[0].href + "backend";
8412
+ this.API_AUTH_URL = document.getElementsByTagName("base")[0].href + "authentication";
8413
+ this.TOKEN =
8414
+ ((_a = JSON.parse(localStorage.getItem("userMESData"))) === null || _a === void 0 ? void 0 : _a.token) || "";
8415
+ }
8416
+ return Configuration;
8417
+ }());
8168
8418
 
8169
8419
  var base$1 = document.getElementsByTagName("base")[0].getAttribute("href") || "/";
8170
8420
  var MESApiService = /** @class */ (function () {
@@ -9024,208 +9274,6 @@ function ChangePassword(props) {
9024
9274
  React__default.createElement(Button, { onClick: handleOk, color: "primary", disabled: !canChange }, "Change Password"))));
9025
9275
  }
9026
9276
 
9027
- var useMesfRealtime = function (_a) {
9028
- var onReceiveMessage = _a.onReceiveMessage;
9029
- useEffect(function () {
9030
- var connection = new HubConnectionBuilder()
9031
- .withUrl("/ws")
9032
- .withAutomaticReconnect()
9033
- .configureLogging(LogLevel.Information)
9034
- .build();
9035
- connection
9036
- .start()
9037
- .then(function () {
9038
- console.log("Connection started");
9039
- })
9040
- .catch(function (err) {
9041
- console.log("Error while starting connection: " + err);
9042
- });
9043
- connection.on("ReceiveMessage", function (author, message) {
9044
- onReceiveMessage(author, message);
9045
- });
9046
- return function () {
9047
- connection
9048
- .stop()
9049
- .then(function () {
9050
- console.log("Connection stopped");
9051
- })
9052
- .catch(function (err) {
9053
- console.log("Error while stopping connection: " + err);
9054
- });
9055
- };
9056
- }, []);
9057
- };
9058
-
9059
- var UserInitialState = {
9060
- userLastName: "",
9061
- userId: null,
9062
- defaultAreaId: null,
9063
- defaultAreaName: "",
9064
- userLogged: false,
9065
- permissions: [],
9066
- };
9067
- var UserReducer = createSlice({
9068
- name: "__",
9069
- initialState: UserInitialState,
9070
- reducers: {
9071
- setUserId: function (state, _a) {
9072
- var payload = _a.payload;
9073
- state.userId = payload;
9074
- },
9075
- setUserLastName: function (state, _a) {
9076
- var payload = _a.payload;
9077
- state.userLastName = payload;
9078
- },
9079
- setDefaultAreaId: function (state, _a) {
9080
- var payload = _a.payload;
9081
- state.defaultAreaId = payload;
9082
- },
9083
- setDefaultAreaName: function (state, _a) {
9084
- var payload = _a.payload;
9085
- state.defaultAreaName = payload;
9086
- },
9087
- setUserLogged: function (state, _a) {
9088
- var payload = _a.payload;
9089
- state.userLogged = payload;
9090
- },
9091
- setPermissions: function (state, _a) {
9092
- var payload = _a.payload;
9093
- state.permissions = payload;
9094
- },
9095
- },
9096
- });
9097
-
9098
- var UserContext = createContext({
9099
- state: UserReducer.getInitialState(),
9100
- actions: UserReducer.actions,
9101
- isLoading: true,
9102
- });
9103
- var useUserContext = function () { return useContext(UserContext); };
9104
- var useHasPermission = function () {
9105
- var state = useUserContext().state;
9106
- return function (permission) {
9107
- return state.permissions.some(function (p) { return p === permission; });
9108
- };
9109
- };
9110
- var UserProvider = function (_a) {
9111
- var children = _a.children;
9112
- var _b = useComplexState({
9113
- initialState: UserReducer.getInitialState(),
9114
- reducers: UserReducer.caseReducers,
9115
- }), state = _b[0], actions = _b[1];
9116
- var _c = useState(false), permissionsLoaded = _c[0], setPermissionsLoaded = _c[1];
9117
- var getUserId = function () {
9118
- var sessionData = localStorage.getItem("userMESData") || "{}";
9119
- var userData = JSON.parse(sessionData);
9120
- return get(userData, "id", null);
9121
- };
9122
- var getUserPermissions = function () { return __awaiter(void 0, void 0, void 0, function () {
9123
- var userId, resp, permissionsArray, error_1;
9124
- return __generator(this, function (_a) {
9125
- switch (_a.label) {
9126
- case 0:
9127
- userId = getUserId();
9128
- if (!userId) return [3 /*break*/, 4];
9129
- _a.label = 1;
9130
- case 1:
9131
- _a.trys.push([1, 3, , 4]);
9132
- return [4 /*yield*/, getUserPermissionsFromAPI({
9133
- UserId: userId,
9134
- })];
9135
- case 2:
9136
- resp = (_a.sent());
9137
- if (resp && resp.Permissions) {
9138
- permissionsArray = resp.Permissions.split(",");
9139
- actions.setPermissions(permissionsArray);
9140
- setPermissionsLoaded(true);
9141
- }
9142
- return [3 /*break*/, 4];
9143
- case 3:
9144
- error_1 = _a.sent();
9145
- console.error("Failed to load permissions:", error_1);
9146
- return [3 /*break*/, 4];
9147
- case 4: return [2 /*return*/];
9148
- }
9149
- });
9150
- }); };
9151
- var userId = getUserId();
9152
- useEffect(function () {
9153
- getUserPermissions();
9154
- }, [userId]);
9155
- useMesfRealtime({
9156
- onReceiveMessage: function (author, message) {
9157
- if (message === "SEC.GetPermissions") {
9158
- getUserPermissions();
9159
- }
9160
- },
9161
- });
9162
- return (React__default.createElement(UserContext.Provider, { value: { state: state, actions: actions, isLoading: !permissionsLoaded } }, children));
9163
- };
9164
-
9165
- var getTokenFromLS = function () {
9166
- return localStorage.getItem("token");
9167
- };
9168
- function useToken() {
9169
- var setUserLogged = useUserContext().actions.setUserLogged;
9170
- var _a = useState(getTokenFromLS()), token = _a[0], setToken = _a[1];
9171
- var saveUserData = function (userToken) {
9172
- localStorage.setItem("userMESData", JSON.stringify(userToken));
9173
- localStorage.setItem("refreshToken", userToken["refreshToken"]);
9174
- localStorage.setItem("token", userToken["token"]);
9175
- setToken(userToken["token"]);
9176
- axiosInstance.defaults.headers.Authorization = "Bearer ".concat(userToken["token"]);
9177
- setUserLogged(true);
9178
- };
9179
- var clearUserData = function () {
9180
- localStorage.removeItem("userMESData");
9181
- localStorage.removeItem("token");
9182
- localStorage.removeItem("refreshToken");
9183
- setToken("");
9184
- setUserLogged(false);
9185
- };
9186
- var getUserName = function () {
9187
- var sessionData = localStorage.getItem("userMESData");
9188
- var userData = JSON.parse(sessionData);
9189
- return (((userData || {}).lastName || "") +
9190
- ", " +
9191
- ((userData || {}).firstName || ""));
9192
- };
9193
- var getFirstName = function () {
9194
- var sessionData = localStorage.getItem("userMESData");
9195
- var userData = JSON.parse(sessionData);
9196
- return (userData || {}).firstName || "";
9197
- };
9198
- var getLastName = function () {
9199
- var sessionData = localStorage.getItem("userMESData");
9200
- var userData = JSON.parse(sessionData);
9201
- return (userData || {}).lastName || "";
9202
- };
9203
- var getUserId = function () {
9204
- var sessionData = localStorage.getItem("userMESData");
9205
- var userData = JSON.parse(sessionData);
9206
- setUserLogged(true);
9207
- return (userData || {}).id || -1;
9208
- };
9209
- var hasPermission = function (permissionId) {
9210
- var sessionData = localStorage.getItem("userMESData");
9211
- if (sessionData === undefined)
9212
- return false;
9213
- var userData = JSON.parse(sessionData);
9214
- var permissions = userData.permissions || [];
9215
- return permissions.indexOf(permissionId) > -1; //case sensitve
9216
- };
9217
- return {
9218
- getUserName: getUserName,
9219
- saveUserData: saveUserData,
9220
- clearUserData: clearUserData,
9221
- getFirstName: getFirstName,
9222
- getLastName: getLastName,
9223
- getUserId: getUserId,
9224
- hasPermission: hasPermission,
9225
- token: token,
9226
- };
9227
- }
9228
-
9229
9277
  var AuthContext = React__default.createContext({});
9230
9278
  var AuthProvider = function (_a) {
9231
9279
  var children = _a.children, authConfig = _a.authConfig;