@dexteel/mesf-core 5.5.0 → 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.5.0"
2
+ ".": "5.5.1"
3
3
  }
package/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
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
+
1
15
  # Changelog
2
16
 
3
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)
@@ -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;
@@ -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';
@@ -8236,22 +8236,22 @@ var MESApiService = /** @class */ (function () {
8236
8236
  };
8237
8237
  MESApiService.prototype.uploadFiles = function (selectedFiles_1) {
8238
8238
  return __awaiter(this, arguments, void 0, function (selectedFiles, folderName) {
8239
- var formData, _i, selectedFiles_2, file;
8239
+ var formData, _i, selectedFiles_2, file, response;
8240
8240
  if (folderName === void 0) { folderName = ""; }
8241
8241
  return __generator(this, function (_a) {
8242
- formData = new FormData();
8243
- for (_i = 0, selectedFiles_2 = selectedFiles; _i < selectedFiles_2.length; _i++) {
8244
- file = selectedFiles_2[_i];
8245
- 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];
8246
8254
  }
8247
- formData.append("folderName", folderName);
8248
- return [2 /*return*/, fetch(this.config.API_PROCEDURE_URL + "/uploadFiles", {
8249
- method: "POST",
8250
- headers: {
8251
- Authorization: "Bearer " + this.TOKEN,
8252
- },
8253
- body: formData,
8254
- }).then(function (res) { return res.json(); })];
8255
8255
  });
8256
8256
  });
8257
8257
  };
@@ -9004,6 +9004,7 @@ var UserReducer = createSlice({
9004
9004
  var UserContext = createContext({
9005
9005
  state: UserReducer.getInitialState(),
9006
9006
  actions: UserReducer.actions,
9007
+ isLoading: true,
9007
9008
  });
9008
9009
  var useUserContext = function () { return useContext(UserContext); };
9009
9010
  var useHasPermission = function () {
@@ -9064,16 +9065,7 @@ var UserProvider = function (_a) {
9064
9065
  }
9065
9066
  },
9066
9067
  });
9067
- if (!permissionsLoaded) {
9068
- return (React__default.createElement("div", { style: {
9069
- display: "flex",
9070
- justifyContent: "center",
9071
- alignItems: "center",
9072
- height: "100vh",
9073
- } },
9074
- React__default.createElement(CircularProgress, null)));
9075
- }
9076
- 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));
9077
9069
  };
9078
9070
 
9079
9071
  var getTokenFromLS = function () {
@@ -9683,74 +9675,6 @@ var useSearchAssets = function (setError) {
9683
9675
  return { searchAssets: searchAssets };
9684
9676
  };
9685
9677
 
9686
- var UTLSettingsInitialState = {
9687
- serverTimeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,
9688
- settings: {},
9689
- };
9690
- var UTLSettingsReducer = createSlice({
9691
- name: "__",
9692
- initialState: UTLSettingsInitialState,
9693
- reducers: {
9694
- setServerTimeZone: function (state, _a) {
9695
- var payload = _a.payload;
9696
- state.serverTimeZone = payload;
9697
- },
9698
- setSetting: function (state, _a) {
9699
- var payload = _a.payload;
9700
- state.settings[payload.key] = payload.value;
9701
- },
9702
- initSettings: function (state, _a) {
9703
- var payload = _a.payload;
9704
- state.settings = payload.reduce(function (acc, cur) {
9705
- if (cur.SettingName.trim() === "TimeZone") {
9706
- var timeService = TimeService.getInstance();
9707
- timeService.setTimeZone(cur.Value);
9708
- }
9709
- acc[cur.SettingName.trim()] = cur.Value;
9710
- return acc;
9711
- }, {});
9712
- },
9713
- },
9714
- });
9715
-
9716
- var UTLSettingsContext = createContext({
9717
- state: UTLSettingsReducer.getInitialState(),
9718
- actions: UTLSettingsReducer.actions,
9719
- });
9720
- var useUTLSettingsContext = function () { return useContext(UTLSettingsContext); };
9721
- var UTLSettingsProvider = function (_a) {
9722
- var children = _a.children;
9723
- var _b = useComplexState({
9724
- initialState: UTLSettingsReducer.getInitialState(),
9725
- reducers: UTLSettingsReducer.caseReducers,
9726
- }), state = _b[0], actions = _b[1];
9727
- return (React__default.createElement(UTLSettingsContext.Provider, { value: { state: state, actions: actions } }, children));
9728
- };
9729
-
9730
- var useSearchUTLSettings = function (_a) {
9731
- var onError = _a.onError;
9732
- var initSettings = useUTLSettingsContext().actions.initSettings;
9733
- var searchUTLSettings = function () { return __awaiter(void 0, void 0, void 0, function () {
9734
- var res, settings;
9735
- return __generator(this, function (_a) {
9736
- switch (_a.label) {
9737
- case 0: return [4 /*yield*/, getUTLSettings()];
9738
- case 1:
9739
- res = _a.sent();
9740
- if (res.ok) {
9741
- settings = get(res, "data.tables[0].rows", []);
9742
- initSettings(settings);
9743
- }
9744
- else {
9745
- onError(res.message);
9746
- }
9747
- return [2 /*return*/];
9748
- }
9749
- });
9750
- }); };
9751
- return { searchUTLSettings: searchUTLSettings };
9752
- };
9753
-
9754
9678
  var useStyles$7 = makeStyles(function (theme) { return ({
9755
9679
  container: {
9756
9680
  display: "flex",
@@ -9872,22 +9796,13 @@ function Header$1(_a) {
9872
9796
  var CustomNavbar = useContext(NavbarContext);
9873
9797
  var searchAssets = useSearchAssets(setError).searchAssets;
9874
9798
  var _f = useState(false), drawerOpen = _f[0], setDrawerOpen = _f[1];
9875
- var _g = useState(false), settingsIsReady = _g[0], setSettingsIsReady = _g[1];
9876
9799
  var hasPermissionTo = useHasPermission();
9877
- var searchUTLSettings = useSearchUTLSettings({
9878
- onError: setError,
9879
- }).searchUTLSettings;
9880
9800
  var userLogged = useUserContext().state.userLogged;
9881
9801
  useEffect(function () {
9882
- searchUTLSettings().then(function () {
9883
- setSettingsIsReady(true);
9884
- });
9885
- }, []);
9886
- useEffect(function () {
9887
- if (showAreaSelector && userLogged && settingsIsReady) {
9802
+ if (showAreaSelector && userLogged) {
9888
9803
  searchAssets();
9889
9804
  }
9890
- }, [userLogged, settingsIsReady]);
9805
+ }, [userLogged]);
9891
9806
  var handleDrawerToggle = function () {
9892
9807
  setDrawerOpen(!drawerOpen);
9893
9808
  };
@@ -14163,6 +14078,110 @@ var Navigation = function (_a) {
14163
14078
  React__default.createElement(MESFMainContainer, null)));
14164
14079
  };
14165
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
+
14166
14185
  var themeMESF = createTheme({
14167
14186
  palette: {
14168
14187
  type: "light",
@@ -14222,17 +14241,18 @@ function MESFMain(_a) {
14222
14241
  React__default.createElement(AuthProvider, { authConfig: authentication },
14223
14242
  React__default.createElement(LocalizationProvider, { dateAdapter: AdapterMoment, dateLibInstance: moment$2 },
14224
14243
  React__default.createElement(UserProvider, null,
14225
- React__default.createElement(AssetProvider, { plantAssetId: plantAssetId },
14226
- React__default.createElement(UTLSettingsProvider, null,
14227
- React__default.createElement(RouterContext.Provider, { value: routes },
14228
- React__default.createElement(NavbarContext.Provider, { value: navbar },
14229
- React__default.createElement(ConfigurationContext.Provider, { value: configurations },
14230
- React__default.createElement(ShiftNavigatorProvider, null,
14231
- React__default.createElement(ContextMenuMESFProvider, null,
14232
- React__default.createElement(BrowserRouter, { basename: base },
14233
- React__default.createElement(Routes, null,
14234
- React__default.createElement(Route, { path: "/logout", element: React__default.createElement(Logout, null) })),
14235
- 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 }))))))))))))))));
14236
14256
  }
14237
14257
 
14238
14258
  var useDefaultAreaId = function (setError) {