@dexteel/mesf-core 5.4.2 → 5.5.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.
@@ -1,3 +1,3 @@
1
1
  {
2
- ".": "5.4.2"
2
+ ".": "5.5.1"
3
3
  }
package/CHANGELOG.md CHANGED
@@ -1,3 +1,36 @@
1
+ # Changelog
2
+
3
+ ## [5.5.1](https://github.com/dexteel/mesf-core-frontend/compare/@dexteel/mesf-core-v5.5.0...@dexteel/mesf-core-v5.5.1) (2025-06-24)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * **ApiService:** replace fetch with axios for file upload ([a29ceb9](https://github.com/dexteel/mesf-core-frontend/commit/a29ceb9b1a251cf2664975cdae0dab4ed396ff00))
9
+ * enhance app initialization ([9e3eb46](https://github.com/dexteel/mesf-core-frontend/commit/9e3eb46550ae1e88d83739a84b1467fd2d547e21))
10
+
11
+ ## [5.5.0] - 2025-06-18
12
+
13
+
14
+
15
+ # Changelog
16
+
17
+ ## [5.5.0](https://github.com/dexteel/mesf-core-frontend/compare/@dexteel/mesf-core-v5.4.2...@dexteel/mesf-core-v5.5.0) (2025-06-18)
18
+
19
+
20
+ ### Features
21
+
22
+ * **asset tree:** update asset tree ([43a2ad3](https://github.com/dexteel/mesf-core-frontend/commit/43a2ad302185a3519dc6371457d5d5c30ed543b0))
23
+ * **asset tree:** update asset tree to support asset 0 and fix area selector ([3311536](https://github.com/dexteel/mesf-core-frontend/commit/3311536b5af0b5527495fcc3a14ab87e81c86c4c))
24
+
25
+
26
+ ### Bug Fixes
27
+
28
+ * use PlantAssetId as prop in MESFMain ([6246891](https://github.com/dexteel/mesf-core-frontend/commit/6246891b0a5c07cecf83b4b175e3f60d043744ab))
29
+
30
+ ## [5.4.2] - 2025-05-29
31
+
32
+
33
+
1
34
  # Changelog
2
35
 
3
36
  ## [5.4.2](https://github.com/dexteel/mesf-core-frontend/compare/@dexteel/mesf-core-v5.4.1...@dexteel/mesf-core-v5.4.2) (2025-05-29)
@@ -9,6 +9,7 @@ interface Props {
9
9
  showAreaSelector?: boolean;
10
10
  showTrendingsIcon?: boolean;
11
11
  byPassHeaderRoutes?: string[];
12
+ plantAssetId?: number;
12
13
  }
13
- declare function MESFMain({ authentication, routes, navbar, navbarTitle, configurations, showAreaSelector, showTrendingsIcon, byPassHeaderRoutes, }: Props): React.JSX.Element;
14
+ declare function MESFMain({ authentication, routes, navbar, navbarTitle, configurations, showAreaSelector, showTrendingsIcon, byPassHeaderRoutes, plantAssetId, }: Props): React.JSX.Element;
14
15
  export { MESFMain };
@@ -1,6 +1,6 @@
1
1
  export interface AssetParameters {
2
2
  id: number;
3
- parent: number;
3
+ parent: number | null;
4
4
  text: string;
5
5
  data: {
6
6
  fileType: string;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ export declare const ProvidersLoader: ({ children, }: {
3
+ children: React.ReactNode;
4
+ }) => React.JSX.Element;
@@ -35,6 +35,7 @@ export declare const useUTLSettingsContext: () => {
35
35
  type: string;
36
36
  }): void;
37
37
  }, "__">;
38
+ isLoading: boolean;
38
39
  };
39
40
  export declare const UTLSettingsProvider: ({ children }: {
40
41
  children: ReactNode;
@@ -3,11 +3,13 @@ export declare const useAssetContext: () => {
3
3
  state: {
4
4
  areasList: import("../models/Asset").Asset[];
5
5
  allAssets: import("../models/Asset").Asset[];
6
+ plantAssetId: number;
6
7
  };
7
8
  actions: import("@reduxjs/toolkit").CaseReducerActions<{
8
9
  setAreasList(state: import("immer/dist/internal").WritableDraft<{
9
10
  areasList: import("../models/Asset").Asset[];
10
11
  allAssets: import("../models/Asset").Asset[];
12
+ plantAssetId: number;
11
13
  }>, { payload }: {
12
14
  payload: any;
13
15
  type: string;
@@ -15,12 +17,22 @@ export declare const useAssetContext: () => {
15
17
  setAllAssets(state: import("immer/dist/internal").WritableDraft<{
16
18
  areasList: import("../models/Asset").Asset[];
17
19
  allAssets: import("../models/Asset").Asset[];
20
+ plantAssetId: number;
21
+ }>, { payload }: {
22
+ payload: any;
23
+ type: string;
24
+ }): void;
25
+ setPlantAssetId(state: import("immer/dist/internal").WritableDraft<{
26
+ areasList: import("../models/Asset").Asset[];
27
+ allAssets: import("../models/Asset").Asset[];
28
+ plantAssetId: number;
18
29
  }>, { payload }: {
19
30
  payload: any;
20
31
  type: string;
21
32
  }): void;
22
33
  }, "__">;
23
34
  };
24
- export declare const AssetProvider: ({ children }: {
35
+ export declare const AssetProvider: ({ children, plantAssetId, }: {
25
36
  children: ReactNode;
37
+ plantAssetId?: number;
26
38
  }) => React.JSX.Element;
@@ -76,6 +76,7 @@ export declare const useUserContext: () => {
76
76
  type: string;
77
77
  }): void;
78
78
  }, "__">;
79
+ isLoading: boolean;
79
80
  };
80
81
  export declare const useHasPermission: () => (permission: string) => boolean;
81
82
  export declare const UserProvider: ({ children }: {
package/dist/index.esm.js CHANGED
@@ -15,8 +15,6 @@ import { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment';
15
15
  import MenuIcon from '@material-ui/icons/Menu';
16
16
  import SettingsIcon from '@material-ui/icons/Settings';
17
17
  import ShowChartIcon from '@material-ui/icons/ShowChart';
18
- import { useComplexState } from 'use-complex-state';
19
- import { createSlice } from '@reduxjs/toolkit';
20
18
  import AccountCircleIcon from '@material-ui/icons/AccountCircle';
21
19
  import { DndProvider } from 'react-dnd';
22
20
  import { HTML5Backend } from 'react-dnd-html5-backend';
@@ -33,6 +31,8 @@ export * from '@microsoft/signalr';
33
31
  import { Alert as Alert$2, Autocomplete } from '@material-ui/lab';
34
32
  import { useForm, Controller } from 'react-hook-form';
35
33
  import SearchIcon from '@material-ui/icons/Search';
34
+ import { useComplexState } from 'use-complex-state';
35
+ import { createSlice } from '@reduxjs/toolkit';
36
36
  import DeleteIcon from '@material-ui/icons/Delete';
37
37
  import FormatListBulletedSharpIcon from '@material-ui/icons/FormatListBulletedSharp';
38
38
  import LockOutlinedIcon from '@material-ui/icons/LockOutlined';
@@ -5337,6 +5337,7 @@ var ShiftsCrewsPage = function (props) {
5337
5337
  var AssetInitialState = {
5338
5338
  areasList: [],
5339
5339
  allAssets: [],
5340
+ plantAssetId: 1,
5340
5341
  };
5341
5342
  var AssetReducer = createSlice({
5342
5343
  name: "__",
@@ -5350,6 +5351,10 @@ var AssetReducer = createSlice({
5350
5351
  var payload = _a.payload;
5351
5352
  state.allAssets = payload;
5352
5353
  },
5354
+ setPlantAssetId: function (state, _a) {
5355
+ var payload = _a.payload;
5356
+ state.plantAssetId = payload;
5357
+ },
5353
5358
  },
5354
5359
  });
5355
5360
 
@@ -5359,17 +5364,21 @@ var AssetContext = createContext({
5359
5364
  });
5360
5365
  var useAssetContext = function () { return useContext(AssetContext); };
5361
5366
  var AssetProvider = function (_a) {
5362
- var children = _a.children;
5363
- var _b = useComplexState({
5364
- initialState: AssetReducer.getInitialState(),
5367
+ var children = _a.children, _b = _a.plantAssetId, plantAssetId = _b === void 0 ? 1 : _b;
5368
+ var _c = useComplexState({
5369
+ initialState: {
5370
+ areasList: [],
5371
+ allAssets: [],
5372
+ plantAssetId: plantAssetId,
5373
+ },
5365
5374
  reducers: AssetReducer.caseReducers,
5366
- }), state = _b[0], actions = _b[1];
5375
+ }), state = _c[0], actions = _c[1];
5367
5376
  return (React__default.createElement(AssetContext.Provider, { value: { state: state, actions: actions } }, children));
5368
5377
  };
5369
5378
 
5370
5379
  var DATA_ASSET_INITIAL_VALUES = {
5371
5380
  AssetId: null,
5372
- ParentAssetId: 1,
5381
+ ParentAssetId: 0,
5373
5382
  AssetName: "",
5374
5383
  IsAsset: false,
5375
5384
  CanBeDefaultAsset: false,
@@ -5484,7 +5493,7 @@ var ConfigurationAssetProvider = function (_a) {
5484
5493
  var TransformAssetModelData = function (node) {
5485
5494
  var model = {
5486
5495
  id: node.AssetId,
5487
- parent: node.ParentAssetId ? node.ParentAssetId : 0,
5496
+ parent: node.ParentAssetId === null ? -1 : node.ParentAssetId,
5488
5497
  text: node.AssetName,
5489
5498
  data: {
5490
5499
  fileType: "csv",
@@ -5599,26 +5608,21 @@ var useAssetCodes = function () {
5599
5608
  var buildTreeAssets = function (nodes) {
5600
5609
  if (nodes === undefined)
5601
5610
  return;
5602
- //tree build functions
5603
5611
  var idMapping = nodes.reduce(function (acc, el, i) {
5604
5612
  acc[el.id] = i;
5605
5613
  return acc;
5606
5614
  }, {});
5607
5615
  var root;
5608
5616
  nodes.forEach(function (el) {
5609
- // Handle the root element
5610
5617
  if (el.parentId === null) {
5611
5618
  root = el;
5612
5619
  return;
5613
5620
  }
5614
- // Use our mapping to locate the parent element in our data array
5615
5621
  var parentEl = nodes[idMapping[el.parentId]];
5616
- // Handle the case where the element has no parent
5617
5622
  if (!parentEl) {
5618
5623
  console.log(el);
5619
5624
  return;
5620
5625
  }
5621
- // Add our current el to its parent's `children` array
5622
5626
  if (!parentEl["children"]) {
5623
5627
  parentEl["children"] = [];
5624
5628
  }
@@ -5691,14 +5695,14 @@ var CreateNewAssetDialog = function (_a) {
5691
5695
  var _d = useState(false), assetCreatedSuccess = _d[0], setAssetCreatedSuccess = _d[1];
5692
5696
  var _e = useState(""), errorCreateAsset = _e[0], setErrorCreateAsset = _e[1];
5693
5697
  var _f = useState(false), isCreateSubmitLoading = _f[0], setIsCreateSubmitLoading = _f[1];
5694
- var allAssets = useAssetContext().state.allAssets;
5695
- var _g = useConfigurationAssetContext(), _h = _g.state, assetNodeSelectedInTree = _h.assetNodeSelectedInTree, assetCodes = _h.assetCodes, dataToCreateAsset = _h.dataToCreateAsset; _h.assetTreeName; var _j = _g.actions, setAssetNameToCreateAsset = _j.setAssetNameToCreateAsset, setAssetTreeName = _j.setAssetTreeName, setAssetParentAssetIdToCreateAsset = _j.setAssetParentAssetIdToCreateAsset, setParentAssetNameInNodeSelectedInTree = _j.setParentAssetNameInNodeSelectedInTree;
5698
+ var _g = useAssetContext().state, allAssets = _g.allAssets, plantAssetId = _g.plantAssetId;
5699
+ var _h = useConfigurationAssetContext(), _j = _h.state, assetNodeSelectedInTree = _j.assetNodeSelectedInTree, assetCodes = _j.assetCodes, dataToCreateAsset = _j.dataToCreateAsset; _j.assetTreeName; var _k = _h.actions, setAssetNameToCreateAsset = _k.setAssetNameToCreateAsset, setAssetTreeName = _k.setAssetTreeName, setAssetParentAssetIdToCreateAsset = _k.setAssetParentAssetIdToCreateAsset, setParentAssetNameInNodeSelectedInTree = _k.setParentAssetNameInNodeSelectedInTree;
5696
5700
  var loadFilterAssets = useAssetCodes().loadFilterAssets;
5697
- var _k = useForm({
5701
+ var _l = useForm({
5698
5702
  defaultValues: dataToCreateAsset
5699
5703
  ? dataToCreateAsset
5700
5704
  : DATA_ASSET_INITIAL_VALUES,
5701
- }), control = _k.control, handleSubmit = _k.handleSubmit, reset = _k.reset, setValue = _k.setValue, errors = _k.formState.errors;
5705
+ }), control = _l.control, handleSubmit = _l.handleSubmit, reset = _l.reset, setValue = _l.setValue, errors = _l.formState.errors;
5702
5706
  var handleCancel = function () {
5703
5707
  onHide(false);
5704
5708
  };
@@ -5737,6 +5741,14 @@ var CreateNewAssetDialog = function (_a) {
5737
5741
  setParentAssetNameInNodeSelectedInTree(description);
5738
5742
  };
5739
5743
  var handleFormSubmit = handleSubmit(handleCreateAsset);
5744
+ var getRootAssetId = function () {
5745
+ var rootAsset = allAssets.find(function (asset) { return asset.ParentAssetId === null; });
5746
+ return rootAsset ? rootAsset.AssetId : plantAssetId;
5747
+ };
5748
+ var getRootAssetName = function () {
5749
+ var rootAsset = allAssets.find(function (asset) { return asset.ParentAssetId === null; });
5750
+ return rootAsset ? rootAsset.AssetName : "Plant";
5751
+ };
5740
5752
  useEffect(function () {
5741
5753
  if (show) {
5742
5754
  reset();
@@ -5747,9 +5759,11 @@ var CreateNewAssetDialog = function (_a) {
5747
5759
  setParentAssetNameInNodeSelectedInTree(parentAssetNode === null || parentAssetNode === void 0 ? void 0 : parentAssetNode.AssetName);
5748
5760
  }
5749
5761
  else {
5750
- setAssetParentAssetIdToCreateAsset(1);
5751
- setAssetTreeName("Plant");
5762
+ var rootId = getRootAssetId();
5763
+ setAssetParentAssetIdToCreateAsset(rootId);
5764
+ setAssetTreeName(getRootAssetName());
5752
5765
  setAssetNameToCreateAsset("");
5766
+ setValue("ParentAssetId", rootId);
5753
5767
  }
5754
5768
  }
5755
5769
  }, [show]);
@@ -5777,8 +5791,10 @@ var CreateNewAssetDialog = function (_a) {
5777
5791
  React__default.createElement(Grid, { container: true },
5778
5792
  React__default.createElement(Grid, { item: true, md: 12, xs: 12, style: { marginBottom: "8px" } },
5779
5793
  React__default.createElement(Grid, { item: true, md: 12, xs: 12, style: { padding: 0, marginTop: 10 } },
5780
- React__default.createElement(Controller, { name: "ParentAssetId", control: control, render: function (_a) { return (React__default.createElement(TreePickerControl, { inputTitle: "Asset", title: "Asset Parent", dataSource: assetCodes, value: (assetNodeSelectedInTree === null || assetNodeSelectedInTree === void 0 ? void 0 : assetNodeSelectedInTree.AssetId) || 1, description: (assetNodeSelectedInTree === null || assetNodeSelectedInTree === void 0 ? void 0 : assetNodeSelectedInTree.ParentAssetName) ||
5781
- "Plant", onSelect: changeParentAssetId, selectBranch: true, selectActive: false, selectInternal: false })); } }))),
5794
+ React__default.createElement(Controller, { name: "ParentAssetId", control: control, render: function (_a) {
5795
+ var value = _a.field.value;
5796
+ return (React__default.createElement(TreePickerControlV2, { inputTitle: "Asset", title: "Asset Parent", dataSource: assetCodes, value: value, onSelect: changeParentAssetId, selectBranch: true, selectActive: false, selectInternal: false }));
5797
+ } }))),
5782
5798
  React__default.createElement(Grid, { container: true, style: { marginTop: "10px 0", padding: "0" } },
5783
5799
  React__default.createElement(Grid, { item: true, xs: 6, md: 6 },
5784
5800
  React__default.createElement(Controller, { name: "CanBeDefaultAsset", control: control, defaultValue: false, render: function (_a) {
@@ -5801,7 +5817,7 @@ var CreateNewAssetDialog = function (_a) {
5801
5817
  React__default.createElement(Button, { fullWidth: true, startIcon: isCreateSubmitLoading && (React__default.createElement(CircularProgress, { size: "1rem" })), disabled: isCreateSubmitLoading, variant: "contained", color: "primary", type: "submit" }, "Save")))))))))),
5802
5818
  React__default.createElement(ErrorModal, { error: errorCreateAsset, onHide: function () { return setErrorCreateAsset(""); } }),
5803
5819
  React__default.createElement(Snackbar, { open: assetCreatedSuccess, autoHideDuration: 2500, onClose: handleClose },
5804
- React__default.createElement(Alert$3, { severity: "info", onClose: handleClose }, "Document created succesfully"))));
5820
+ React__default.createElement(Alert$3, { severity: "info", onClose: handleClose }, "Document created successfully"))));
5805
5821
  };
5806
5822
 
5807
5823
  var useStyles$p = makeStyles(function (theme) { return ({
@@ -6219,8 +6235,14 @@ var useAssetActions = function (_a) {
6219
6235
  switch (_a.label) {
6220
6236
  case 0:
6221
6237
  dropTargetId = options.dropTargetId;
6222
- if (dropTargetId == 0) {
6223
- dropTargetId = 1;
6238
+ if (dropTargetId === -1 ||
6239
+ dropTargetId === null ||
6240
+ dropTargetId === undefined) {
6241
+ onAssetUpdateEnd({
6242
+ ok: false,
6243
+ message: "Cannot move assets to root level. Only one root asset (Plant) is allowed.",
6244
+ });
6245
+ return [2 /*return*/];
6224
6246
  }
6225
6247
  onAssetUpdateStart();
6226
6248
  return [4 /*yield*/, updateAsset(selectedNodes.map(function (cn) { return cn.id; }), dropTargetId)];
@@ -6387,7 +6409,7 @@ var CustomNode = function (_a) {
6387
6409
  var handleToggle = function (e) {
6388
6410
  var _a;
6389
6411
  e.stopPropagation();
6390
- if (openAssets[id]) {
6412
+ if (openAssets[id] === id) {
6391
6413
  var newOpenAssets = __assign({}, openAssets);
6392
6414
  delete newOpenAssets[id];
6393
6415
  setOpenAssets(newOpenAssets);
@@ -6654,7 +6676,7 @@ var AssetViewComponent = function () {
6654
6676
  paddingBottom: 10,
6655
6677
  } },
6656
6678
  React__default.createElement(Grid, null,
6657
- React__default.createElement(Tree, { rootId: 0, initialOpen: openAssetsArray, tree: allAssetNodes, enableAnimateExpand: true, classes: {
6679
+ React__default.createElement(Tree, { rootId: -1, initialOpen: openAssetsArray, tree: allAssetNodes, enableAnimateExpand: true, classes: {
6658
6680
  root: classes.assetRoot,
6659
6681
  dropTarget: classes.dropTarget,
6660
6682
  }, onDrop: handleDrop, onDragStart: handleDragStart, onDragEnd: handleDragEnd, canDrop: function (asset, options) {
@@ -8214,22 +8236,22 @@ var MESApiService = /** @class */ (function () {
8214
8236
  };
8215
8237
  MESApiService.prototype.uploadFiles = function (selectedFiles_1) {
8216
8238
  return __awaiter(this, arguments, void 0, function (selectedFiles, folderName) {
8217
- var formData, _i, selectedFiles_2, file;
8239
+ var formData, _i, selectedFiles_2, file, response;
8218
8240
  if (folderName === void 0) { folderName = ""; }
8219
8241
  return __generator(this, function (_a) {
8220
- formData = new FormData();
8221
- for (_i = 0, selectedFiles_2 = selectedFiles; _i < selectedFiles_2.length; _i++) {
8222
- file = selectedFiles_2[_i];
8223
- formData.append("files", file, file.name);
8242
+ switch (_a.label) {
8243
+ case 0:
8244
+ formData = new FormData();
8245
+ for (_i = 0, selectedFiles_2 = selectedFiles; _i < selectedFiles_2.length; _i++) {
8246
+ file = selectedFiles_2[_i];
8247
+ formData.append("files", file, file.name);
8248
+ }
8249
+ formData.append("folderName", folderName);
8250
+ return [4 /*yield*/, axiosInstance.post("/backend/uploadFiles", formData)];
8251
+ case 1:
8252
+ response = _a.sent();
8253
+ return [2 /*return*/, response.data];
8224
8254
  }
8225
- formData.append("folderName", folderName);
8226
- return [2 /*return*/, fetch(this.config.API_PROCEDURE_URL + "/uploadFiles", {
8227
- method: "POST",
8228
- headers: {
8229
- Authorization: "Bearer " + this.TOKEN,
8230
- },
8231
- body: formData,
8232
- }).then(function (res) { return res.json(); })];
8233
8255
  });
8234
8256
  });
8235
8257
  };
@@ -8982,6 +9004,7 @@ var UserReducer = createSlice({
8982
9004
  var UserContext = createContext({
8983
9005
  state: UserReducer.getInitialState(),
8984
9006
  actions: UserReducer.actions,
9007
+ isLoading: true,
8985
9008
  });
8986
9009
  var useUserContext = function () { return useContext(UserContext); };
8987
9010
  var useHasPermission = function () {
@@ -9042,16 +9065,7 @@ var UserProvider = function (_a) {
9042
9065
  }
9043
9066
  },
9044
9067
  });
9045
- if (!permissionsLoaded) {
9046
- return (React__default.createElement("div", { style: {
9047
- display: "flex",
9048
- justifyContent: "center",
9049
- alignItems: "center",
9050
- height: "100vh",
9051
- } },
9052
- React__default.createElement(CircularProgress, null)));
9053
- }
9054
- return (React__default.createElement(UserContext.Provider, { value: { state: state, actions: actions } }, children));
9068
+ return (React__default.createElement(UserContext.Provider, { value: { state: state, actions: actions, isLoading: !permissionsLoaded } }, children));
9055
9069
  };
9056
9070
 
9057
9071
  var getTokenFromLS = function () {
@@ -9661,74 +9675,6 @@ var useSearchAssets = function (setError) {
9661
9675
  return { searchAssets: searchAssets };
9662
9676
  };
9663
9677
 
9664
- var UTLSettingsInitialState = {
9665
- serverTimeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,
9666
- settings: {},
9667
- };
9668
- var UTLSettingsReducer = createSlice({
9669
- name: "__",
9670
- initialState: UTLSettingsInitialState,
9671
- reducers: {
9672
- setServerTimeZone: function (state, _a) {
9673
- var payload = _a.payload;
9674
- state.serverTimeZone = payload;
9675
- },
9676
- setSetting: function (state, _a) {
9677
- var payload = _a.payload;
9678
- state.settings[payload.key] = payload.value;
9679
- },
9680
- initSettings: function (state, _a) {
9681
- var payload = _a.payload;
9682
- state.settings = payload.reduce(function (acc, cur) {
9683
- if (cur.SettingName.trim() === "TimeZone") {
9684
- var timeService = TimeService.getInstance();
9685
- timeService.setTimeZone(cur.Value);
9686
- }
9687
- acc[cur.SettingName.trim()] = cur.Value;
9688
- return acc;
9689
- }, {});
9690
- },
9691
- },
9692
- });
9693
-
9694
- var UTLSettingsContext = createContext({
9695
- state: UTLSettingsReducer.getInitialState(),
9696
- actions: UTLSettingsReducer.actions,
9697
- });
9698
- var useUTLSettingsContext = function () { return useContext(UTLSettingsContext); };
9699
- var UTLSettingsProvider = function (_a) {
9700
- var children = _a.children;
9701
- var _b = useComplexState({
9702
- initialState: UTLSettingsReducer.getInitialState(),
9703
- reducers: UTLSettingsReducer.caseReducers,
9704
- }), state = _b[0], actions = _b[1];
9705
- return (React__default.createElement(UTLSettingsContext.Provider, { value: { state: state, actions: actions } }, children));
9706
- };
9707
-
9708
- var useSearchUTLSettings = function (_a) {
9709
- var onError = _a.onError;
9710
- var initSettings = useUTLSettingsContext().actions.initSettings;
9711
- var searchUTLSettings = function () { return __awaiter(void 0, void 0, void 0, function () {
9712
- var res, settings;
9713
- return __generator(this, function (_a) {
9714
- switch (_a.label) {
9715
- case 0: return [4 /*yield*/, getUTLSettings()];
9716
- case 1:
9717
- res = _a.sent();
9718
- if (res.ok) {
9719
- settings = get(res, "data.tables[0].rows", []);
9720
- initSettings(settings);
9721
- }
9722
- else {
9723
- onError(res.message);
9724
- }
9725
- return [2 /*return*/];
9726
- }
9727
- });
9728
- }); };
9729
- return { searchUTLSettings: searchUTLSettings };
9730
- };
9731
-
9732
9678
  var useStyles$7 = makeStyles(function (theme) { return ({
9733
9679
  container: {
9734
9680
  display: "flex",
@@ -9850,22 +9796,13 @@ function Header$1(_a) {
9850
9796
  var CustomNavbar = useContext(NavbarContext);
9851
9797
  var searchAssets = useSearchAssets(setError).searchAssets;
9852
9798
  var _f = useState(false), drawerOpen = _f[0], setDrawerOpen = _f[1];
9853
- var _g = useState(false), settingsIsReady = _g[0], setSettingsIsReady = _g[1];
9854
9799
  var hasPermissionTo = useHasPermission();
9855
- var searchUTLSettings = useSearchUTLSettings({
9856
- onError: setError,
9857
- }).searchUTLSettings;
9858
9800
  var userLogged = useUserContext().state.userLogged;
9859
9801
  useEffect(function () {
9860
- searchUTLSettings().then(function () {
9861
- setSettingsIsReady(true);
9862
- });
9863
- }, []);
9864
- useEffect(function () {
9865
- if (showAreaSelector && userLogged && settingsIsReady) {
9802
+ if (showAreaSelector && userLogged) {
9866
9803
  searchAssets();
9867
9804
  }
9868
- }, [userLogged, settingsIsReady]);
9805
+ }, [userLogged]);
9869
9806
  var handleDrawerToggle = function () {
9870
9807
  setDrawerOpen(!drawerOpen);
9871
9808
  };
@@ -14141,6 +14078,110 @@ var Navigation = function (_a) {
14141
14078
  React__default.createElement(MESFMainContainer, null)));
14142
14079
  };
14143
14080
 
14081
+ var useSearchUTLSettings = function (_a) {
14082
+ var onError = _a.onError;
14083
+ var initSettings = useUTLSettingsContext().actions.initSettings;
14084
+ var searchUTLSettings = function () { return __awaiter(void 0, void 0, void 0, function () {
14085
+ var res, settings;
14086
+ return __generator(this, function (_a) {
14087
+ switch (_a.label) {
14088
+ case 0: return [4 /*yield*/, getUTLSettings()];
14089
+ case 1:
14090
+ res = _a.sent();
14091
+ if (res.ok) {
14092
+ settings = get(res, "data.tables[0].rows", []);
14093
+ initSettings(settings);
14094
+ }
14095
+ else {
14096
+ onError(res.message);
14097
+ }
14098
+ return [2 /*return*/];
14099
+ }
14100
+ });
14101
+ }); };
14102
+ return { searchUTLSettings: searchUTLSettings };
14103
+ };
14104
+
14105
+ var UTLSettingsInitialState = {
14106
+ serverTimeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,
14107
+ settings: {},
14108
+ };
14109
+ var UTLSettingsReducer = createSlice({
14110
+ name: "__",
14111
+ initialState: UTLSettingsInitialState,
14112
+ reducers: {
14113
+ setServerTimeZone: function (state, _a) {
14114
+ var payload = _a.payload;
14115
+ state.serverTimeZone = payload;
14116
+ },
14117
+ setSetting: function (state, _a) {
14118
+ var payload = _a.payload;
14119
+ state.settings[payload.key] = payload.value;
14120
+ },
14121
+ initSettings: function (state, _a) {
14122
+ var payload = _a.payload;
14123
+ state.settings = payload.reduce(function (acc, cur) {
14124
+ if (cur.SettingName.trim() === "TimeZone") {
14125
+ var timeService = TimeService.getInstance();
14126
+ timeService.setTimeZone(cur.Value);
14127
+ }
14128
+ acc[cur.SettingName.trim()] = cur.Value;
14129
+ return acc;
14130
+ }, {});
14131
+ },
14132
+ },
14133
+ });
14134
+
14135
+ var UTLSettingsContext = createContext({
14136
+ state: UTLSettingsReducer.getInitialState(),
14137
+ actions: UTLSettingsReducer.actions,
14138
+ isLoading: true,
14139
+ });
14140
+ var useUTLSettingsContext = function () { return useContext(UTLSettingsContext); };
14141
+ var UTLSettingsProvider = function (_a) {
14142
+ var children = _a.children;
14143
+ var _b = useComplexState({
14144
+ initialState: UTLSettingsReducer.getInitialState(),
14145
+ reducers: UTLSettingsReducer.caseReducers,
14146
+ }), state = _b[0], actions = _b[1];
14147
+ var _c = useState(true), isLoading = _c[0], setIsLoading = _c[1];
14148
+ var searchUTLSettings = useSearchUTLSettings({
14149
+ onError: console.error,
14150
+ }).searchUTLSettings;
14151
+ useEffect(function () {
14152
+ setIsLoading(true);
14153
+ searchUTLSettings().then(function () {
14154
+ setIsLoading(false);
14155
+ });
14156
+ }, []);
14157
+ useMesfRealtime({
14158
+ onReceiveMessage: function (author, message) {
14159
+ if (message === "UTL.GetSettings") {
14160
+ searchUTLSettings().then(function () {
14161
+ // setIsLoading(false);
14162
+ });
14163
+ }
14164
+ },
14165
+ });
14166
+ return (React__default.createElement(UTLSettingsContext.Provider, { value: { state: state, actions: actions, isLoading: isLoading } }, children));
14167
+ };
14168
+
14169
+ var ProvidersLoader = function (_a) {
14170
+ var children = _a.children;
14171
+ var isUsersLoading = useUserContext().isLoading;
14172
+ var isSettingsLoading = useUTLSettingsContext().isLoading;
14173
+ if (isUsersLoading || isSettingsLoading) {
14174
+ return (React__default.createElement("div", { style: {
14175
+ display: "flex",
14176
+ justifyContent: "center",
14177
+ alignItems: "center",
14178
+ height: "100vh",
14179
+ } },
14180
+ React__default.createElement(CircularProgress, null)));
14181
+ }
14182
+ return React__default.createElement(React__default.Fragment, null, children);
14183
+ };
14184
+
14144
14185
  var themeMESF = createTheme({
14145
14186
  palette: {
14146
14187
  type: "light",
@@ -14193,24 +14234,25 @@ var timezone = TimeService.getInstance().getServerTimeZone();
14193
14234
  moment$2.tz.setDefault(timezone);
14194
14235
  var base = document.getElementsByTagName("base")[0].getAttribute("href") || "/";
14195
14236
  function MESFMain(_a) {
14196
- 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;
14237
+ 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;
14197
14238
  return (React__default.createElement(React__default.Fragment, null,
14198
14239
  React__default.createElement(CssBaseline, null),
14199
14240
  React__default.createElement(ThemeProvider, { theme: themeMESF },
14200
14241
  React__default.createElement(AuthProvider, { authConfig: authentication },
14201
14242
  React__default.createElement(LocalizationProvider, { dateAdapter: AdapterMoment, dateLibInstance: moment$2 },
14202
14243
  React__default.createElement(UserProvider, null,
14203
- React__default.createElement(AssetProvider, null,
14204
- React__default.createElement(UTLSettingsProvider, null,
14205
- React__default.createElement(RouterContext.Provider, { value: routes },
14206
- React__default.createElement(NavbarContext.Provider, { value: navbar },
14207
- React__default.createElement(ConfigurationContext.Provider, { value: configurations },
14208
- React__default.createElement(ShiftNavigatorProvider, null,
14209
- React__default.createElement(ContextMenuMESFProvider, null,
14210
- React__default.createElement(BrowserRouter, { basename: base },
14211
- React__default.createElement(Routes, null,
14212
- React__default.createElement(Route, { path: "/logout", element: React__default.createElement(Logout, null) })),
14213
- React__default.createElement(Navigation, { showAreaSelector: showAreaSelector, showTrendingsIcon: showTrendingsIcon, navbarTitle: navbarTitle, byPassHeaderRoutes: byPassHeaderRoutes })))))))))))))));
14244
+ React__default.createElement(UTLSettingsProvider, null,
14245
+ React__default.createElement(ProvidersLoader, null,
14246
+ React__default.createElement(AssetProvider, { plantAssetId: plantAssetId },
14247
+ React__default.createElement(RouterContext.Provider, { value: routes },
14248
+ React__default.createElement(NavbarContext.Provider, { value: navbar },
14249
+ React__default.createElement(ConfigurationContext.Provider, { value: configurations },
14250
+ React__default.createElement(ShiftNavigatorProvider, null,
14251
+ React__default.createElement(ContextMenuMESFProvider, null,
14252
+ React__default.createElement(BrowserRouter, { basename: base },
14253
+ React__default.createElement(Routes, null,
14254
+ React__default.createElement(Route, { path: "/logout", element: React__default.createElement(Logout, null) })),
14255
+ React__default.createElement(Navigation, { showAreaSelector: showAreaSelector, showTrendingsIcon: showTrendingsIcon, navbarTitle: navbarTitle, byPassHeaderRoutes: byPassHeaderRoutes }))))))))))))))));
14214
14256
  }
14215
14257
 
14216
14258
  var useDefaultAreaId = function (setError) {
@@ -14325,6 +14367,11 @@ var AreaSelector = function () {
14325
14367
  setDefaultAreaName(areaSelected === null || areaSelected === void 0 ? void 0 : areaSelected.AssetName);
14326
14368
  setDefaultAreaNameToChange(areaSelected === null || areaSelected === void 0 ? void 0 : areaSelected.AssetName);
14327
14369
  }
14370
+ else {
14371
+ setDefaultAreaId(0);
14372
+ setDefaultAreaName("Plant");
14373
+ setDefaultAreaNameToChange("Plant");
14374
+ }
14328
14375
  }, [defaultAreaId, areasList]);
14329
14376
  return (React__default.createElement(React__default.Fragment, null,
14330
14377
  React__default.createElement(Box, { mx: 2 },