@dexteel/mesf-core 4.10.5 → 4.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ## [4.11.0](https://github.com/dexteel/mesf-core-frontend/compare/v4.10.5...v4.11.0) (2024-05-02)
6
+
7
+
8
+ ### Features
9
+
10
+ * Implement TimeService and timezone from server ([8861ab6](https://github.com/dexteel/mesf-core-frontend/commit/8861ab619c10426e85b4671819bfb74b303a4f8f))
11
+
5
12
  ### [4.10.5](https://github.com/dexteel/mesf-core-frontend/compare/v4.10.4...v4.10.5) (2024-05-02)
6
13
 
7
14
 
@@ -7,6 +7,7 @@ interface Props {
7
7
  navbarTitle?: string;
8
8
  configurations: any;
9
9
  showAreaSelector?: boolean;
10
+ showTrendingsIcon?: boolean;
10
11
  }
11
- declare function MESFMain({ authentication, routes, navbar, navbarTitle, configurations, showAreaSelector, }: Props): React.JSX.Element;
12
+ declare function MESFMain({ authentication, routes, navbar, navbarTitle, configurations, showAreaSelector, showTrendingsIcon, }: Props): React.JSX.Element;
12
13
  export { MESFMain };
@@ -1,5 +1,6 @@
1
1
  import React from "react";
2
- export default function Header({ showAreaSelector, navbarTitle, }: {
2
+ export default function Header({ showAreaSelector, showTrendingsIcon, navbarTitle, }: {
3
3
  showAreaSelector?: boolean;
4
+ showTrendingsIcon?: boolean;
4
5
  navbarTitle?: string;
5
6
  }): React.JSX.Element;
@@ -1,6 +1,7 @@
1
1
  import React from "react";
2
- declare const Navigation: ({ showAreaSelector, navbarTitle, }: {
2
+ declare const Navigation: ({ showAreaSelector, showTrendingsIcon, navbarTitle, }: {
3
3
  showAreaSelector?: boolean | undefined;
4
+ showTrendingsIcon?: boolean | undefined;
4
5
  navbarTitle?: string | undefined;
5
6
  }) => React.JSX.Element;
6
7
  export default Navigation;
@@ -1,11 +1,35 @@
1
1
  import { default as React, ReactNode } from "react";
2
2
  export declare const useUTLSettingsContext: () => {
3
3
  state: {
4
- hideBlueBoxes: any;
4
+ serverTimeZone: string;
5
+ settings: {
6
+ [key: string]: any;
7
+ };
5
8
  };
6
9
  actions: import("@reduxjs/toolkit").CaseReducerActions<{
7
- setHideBlueBoxes(state: import("immer/dist/internal").WritableDraft<{
8
- hideBlueBoxes: any;
10
+ setServerTimeZone(state: import("immer/dist/internal").WritableDraft<{
11
+ serverTimeZone: string;
12
+ settings: {
13
+ [key: string]: any;
14
+ };
15
+ }>, { payload }: {
16
+ payload: any;
17
+ type: string;
18
+ }): void;
19
+ setSetting(state: import("immer/dist/internal").WritableDraft<{
20
+ serverTimeZone: string;
21
+ settings: {
22
+ [key: string]: any;
23
+ };
24
+ }>, { payload }: {
25
+ payload: any;
26
+ type: string;
27
+ }): void;
28
+ initSettings(state: import("immer/dist/internal").WritableDraft<{
29
+ serverTimeZone: string;
30
+ settings: {
31
+ [key: string]: any;
32
+ };
9
33
  }>, { payload }: {
10
34
  payload: any;
11
35
  type: string;
@@ -1,3 +1,5 @@
1
- export declare const useSearchUTLSettings: (setError: (err: string) => void) => {
2
- searchUTLSettings: () => void;
1
+ export declare const useSearchUTLSettings: ({ onError }: {
2
+ onError: (err: string) => void;
3
+ }) => {
4
+ searchUTLSettings: () => Promise<void>;
3
5
  };
package/dist/index.esm.js CHANGED
@@ -77,6 +77,7 @@ import 'ag-grid-community/styles/ag-theme-alpine.css';
77
77
  import ImageIcon from '@material-ui/icons/Image';
78
78
  import ListAltIcon from '@material-ui/icons/ListAlt';
79
79
  import DescriptionIcon from '@material-ui/icons/Description';
80
+ import { formatInTimeZone } from 'date-fns-tz';
80
81
  import FormControlLabel$1 from '@material-ui/core/FormControlLabel';
81
82
  import Checkbox$1 from '@material-ui/core/Checkbox';
82
83
  import Input from '@material-ui/core/Input';
@@ -7297,6 +7298,33 @@ var MESApiService = /** @class */ (function () {
7297
7298
  return MESApiService;
7298
7299
  }());
7299
7300
 
7301
+ var TimeService = /** @class */ (function () {
7302
+ function TimeService() {
7303
+ this.timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
7304
+ }
7305
+ TimeService.getInstance = function () {
7306
+ if (!TimeService.instance) {
7307
+ TimeService.instance = new TimeService();
7308
+ }
7309
+ return TimeService.instance;
7310
+ };
7311
+ TimeService.prototype.setTimeZone = function (timeZone) {
7312
+ this.timeZone = timeZone;
7313
+ };
7314
+ TimeService.prototype.toUTC = function (datetime) {
7315
+ if (datetime instanceof Date) {
7316
+ return datetime.toUTCString();
7317
+ }
7318
+ return new Date(datetime).toUTCString();
7319
+ };
7320
+ TimeService.prototype.toLocalServerTime = function (datetime, format) {
7321
+ return formatInTimeZone(datetime, TimeService.instance.timeZone, format);
7322
+ };
7323
+ return TimeService;
7324
+ }());
7325
+ var dxtToUTC = TimeService.getInstance().toUTC;
7326
+ var dxtToLocalServerTime = TimeService.getInstance().toLocalServerTime;
7327
+
7300
7328
  var getUser = function (UserId, UserName) { return __awaiter(void 0, void 0, void 0, function () {
7301
7329
  var apiService, parameters, resp;
7302
7330
  return __generator(this, function (_a) {
@@ -8138,15 +8166,32 @@ var useSearchAssets = function (setError) {
8138
8166
  };
8139
8167
 
8140
8168
  var UTLSettingsInitialState = {
8141
- hideBlueBoxes: {}
8169
+ serverTimeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,
8170
+ settings: {}
8142
8171
  };
8143
8172
  var UTLSettingsReducer = createSlice({
8144
8173
  name: "__",
8145
8174
  initialState: UTLSettingsInitialState,
8146
8175
  reducers: {
8147
- setHideBlueBoxes: function (state, _a) {
8176
+ setServerTimeZone: function (state, _a) {
8177
+ var payload = _a.payload;
8178
+ state.serverTimeZone = payload;
8179
+ },
8180
+ setSetting: function (state, _a) {
8148
8181
  var payload = _a.payload;
8149
- state.hideBlueBoxes = payload;
8182
+ state.settings[payload.key] = payload.value;
8183
+ },
8184
+ initSettings: function (state, _a) {
8185
+ var payload = _a.payload;
8186
+ state.settings = payload
8187
+ .reduce(function (acc, cur) {
8188
+ if (cur.SettingName.trim() === 'TimeZone') {
8189
+ var timeService = TimeService.getInstance();
8190
+ timeService.setTimeZone(cur.Value);
8191
+ }
8192
+ acc[cur.SettingName.trim()] = cur.Value;
8193
+ return acc;
8194
+ }, {});
8150
8195
  }
8151
8196
  }
8152
8197
  });
@@ -8165,24 +8210,27 @@ var UTLSettingsProvider = function (_a) {
8165
8210
  return (React__default.createElement(UTLSettingsContext.Provider, { value: { state: state, actions: actions } }, children));
8166
8211
  };
8167
8212
 
8168
- var useSearchUTLSettings = function (setError) {
8169
- var setHideBlueBoxes = useUTLSettingsContext().actions.setHideBlueBoxes;
8170
- var searchUTLSettings = function () {
8171
- getUTLSettings().then(function (res) { return __awaiter(void 0, void 0, void 0, function () {
8172
- var hideBlueBoxesSetting;
8173
- return __generator(this, function (_a) {
8174
- if (res.ok) {
8175
- hideBlueBoxesSetting = get(res, "data.tables[0].rows[4]", {});
8176
- hideBlueBoxesSetting.SettingName =
8177
- hideBlueBoxesSetting === null || hideBlueBoxesSetting === void 0 ? void 0 : hideBlueBoxesSetting.SettingName.trim();
8178
- setHideBlueBoxes(hideBlueBoxesSetting);
8179
- }
8180
- else
8181
- setError(res.message);
8182
- return [2 /*return*/];
8183
- });
8184
- }); });
8185
- };
8213
+ var useSearchUTLSettings = function (_a) {
8214
+ var onError = _a.onError;
8215
+ var initSettings = useUTLSettingsContext().actions.initSettings;
8216
+ var searchUTLSettings = function () { return __awaiter(void 0, void 0, void 0, function () {
8217
+ var res, settings;
8218
+ return __generator(this, function (_a) {
8219
+ switch (_a.label) {
8220
+ case 0: return [4 /*yield*/, getUTLSettings()];
8221
+ case 1:
8222
+ res = _a.sent();
8223
+ if (res.ok) {
8224
+ settings = get(res, "data.tables[0].rows", []);
8225
+ initSettings(settings);
8226
+ }
8227
+ else {
8228
+ onError(res.message);
8229
+ }
8230
+ return [2 /*return*/];
8231
+ }
8232
+ });
8233
+ }); };
8186
8234
  return { searchUTLSettings: searchUTLSettings };
8187
8235
  };
8188
8236
 
@@ -8192,14 +8240,17 @@ var AreaSelector$1 = lazy(function () {
8192
8240
  }); });
8193
8241
  });
8194
8242
  function Header$1(_a) {
8195
- var _b = _a.showAreaSelector, showAreaSelector = _b === void 0 ? false : _b, _c = _a.navbarTitle, navbarTitle = _c === void 0 ? "MESF" : _c;
8243
+ var _b = _a.showAreaSelector, showAreaSelector = _b === void 0 ? false : _b, _c = _a.showTrendingsIcon, showTrendingsIcon = _c === void 0 ? true : _c, _d = _a.navbarTitle, navbarTitle = _d === void 0 ? "MESF" : _d;
8196
8244
  var getUserName = useToken().getUserName;
8197
- var _d = useState(""), error = _d[0], setError = _d[1];
8198
- var _e = useState(new Date()), date = _e[0], setDate = _e[1];
8245
+ var _e = useState(""), error = _e[0], setError = _e[1];
8246
+ var _f = useState(new Date()), date = _f[0], setDate = _f[1];
8199
8247
  var CustomNavbar = useContext(NavbarContext);
8200
8248
  var userName = useState(getUserName())[0];
8201
8249
  var searchAssets = useSearchAssets(setError).searchAssets;
8202
- var searchUTLSettings = useSearchUTLSettings(setError).searchUTLSettings;
8250
+ var _g = useState(false), settingsIsReady = _g[0], setSettingsIsReady = _g[1];
8251
+ var searchUTLSettings = useSearchUTLSettings({
8252
+ onError: setError
8253
+ }).searchUTLSettings;
8203
8254
  var userLogged = useUserContext().state.userLogged;
8204
8255
  var tick = function () {
8205
8256
  setDate(new Date());
@@ -8213,11 +8264,15 @@ function Header$1(_a) {
8213
8264
  };
8214
8265
  });
8215
8266
  useEffect(function () {
8216
- if (showAreaSelector && userLogged) {
8267
+ searchUTLSettings().then(function () {
8268
+ setSettingsIsReady(true);
8269
+ });
8270
+ }, []);
8271
+ useEffect(function () {
8272
+ if (showAreaSelector && userLogged && settingsIsReady) {
8217
8273
  searchAssets();
8218
- searchUTLSettings();
8219
8274
  }
8220
- }, [userLogged]);
8275
+ }, [userLogged, settingsIsReady]);
8221
8276
  return (React__default.createElement(Navbar, { variant: "dark", expand: "lg", className: "mes-primary-color mes-menu-top" },
8222
8277
  React__default.createElement(Container, { fluid: true },
8223
8278
  React__default.createElement(Navbar.Brand, { as: Link, to: "/home" }, navbarTitle),
@@ -8226,12 +8281,12 @@ function Header$1(_a) {
8226
8281
  React__default.createElement(Nav, { className: "me-auto" },
8227
8282
  React__default.createElement(CustomNavbar, null)),
8228
8283
  React__default.createElement(Nav, { className: "ml-auto", style: { alignItems: "baseline" } },
8229
- React__default.createElement(Nav, { className: "mx-2" },
8284
+ showTrendingsIcon ? (React__default.createElement(Nav, { className: "mx-2" },
8230
8285
  React__default.createElement(Nav.Link, { as: Link, to: "/trendings" },
8231
8286
  React__default.createElement(Tooltip, { title: 'Trendings', placement: "top", arrow: true, interactive: true, enterDelay: 1500 },
8232
- React__default.createElement(ShowChartIcon, null)))),
8287
+ React__default.createElement(ShowChartIcon, null))))) : null,
8233
8288
  React__default.createElement(Nav, null,
8234
- React__default.createElement("span", { className: "navbar-text" }, date.toLocaleTimeString())),
8289
+ React__default.createElement("span", { className: "navbar-text" }, dxtToLocalServerTime(date, 'HH:mm:ss z'))),
8235
8290
  React__default.createElement(Nav, { className: "mx-2" },
8236
8291
  React__default.createElement(Nav.Link, { as: Link, to: "/configuration" },
8237
8292
  React__default.createElement("i", { className: "fas fa-cog" }))),
@@ -11091,8 +11146,8 @@ var MESFMainContainer = function () { return (React__default.createElement("div"
11091
11146
  React__default.createElement(MESFMainRouter, null))); };
11092
11147
 
11093
11148
  var Navigation = function (_a) {
11094
- var _b = _a.showAreaSelector, showAreaSelector = _b === void 0 ? false : _b, _c = _a.navbarTitle, navbarTitle = _c === void 0 ? "MESF" : _c;
11095
- var _d = useSearchParams(), params = _d[0]; _d[1];
11149
+ var _b = _a.showAreaSelector, showAreaSelector = _b === void 0 ? false : _b, _c = _a.showTrendingsIcon, showTrendingsIcon = _c === void 0 ? true : _c, _d = _a.navbarTitle, navbarTitle = _d === void 0 ? "MESF" : _d;
11150
+ var _e = useSearchParams(), params = _e[0]; _e[1];
11096
11151
  var mounted = useRef(true);
11097
11152
  useEffect(function () {
11098
11153
  if (params.has("redirectTo")) {
@@ -11107,7 +11162,7 @@ var Navigation = function (_a) {
11107
11162
  };
11108
11163
  }, [params.toString()]);
11109
11164
  return (React__default.createElement("div", { className: "wrapper" },
11110
- React__default.createElement(Header$1, { showAreaSelector: showAreaSelector, navbarTitle: navbarTitle }),
11165
+ React__default.createElement(Header$1, { showAreaSelector: showAreaSelector, navbarTitle: navbarTitle, showTrendingsIcon: showTrendingsIcon }),
11111
11166
  React__default.createElement(MESFMainContainer, null)));
11112
11167
  };
11113
11168
 
@@ -11116,7 +11171,7 @@ n(css,{});
11116
11171
 
11117
11172
  var base = document.getElementsByTagName("base")[0].getAttribute("href") || "/";
11118
11173
  function MESFMain(_a) {
11119
- 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;
11174
+ 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;
11120
11175
  return (React__default.createElement(AuthProvider, { authConfig: authentication },
11121
11176
  React__default.createElement(UserProvider, null,
11122
11177
  React__default.createElement(AssetProvider, null,
@@ -11127,7 +11182,7 @@ function MESFMain(_a) {
11127
11182
  React__default.createElement(BrowserRouter, { basename: base },
11128
11183
  React__default.createElement(Routes, null,
11129
11184
  React__default.createElement(Route, { path: "/logout", element: React__default.createElement(Logout, null) })),
11130
- React__default.createElement(Navigation, { showAreaSelector: showAreaSelector, navbarTitle: navbarTitle }))))))))));
11185
+ React__default.createElement(Navigation, { showAreaSelector: showAreaSelector, showTrendingsIcon: showTrendingsIcon, navbarTitle: navbarTitle }))))))))));
11131
11186
  }
11132
11187
 
11133
11188
  var useDefaultAreaId = function (setError) {
@@ -11269,5 +11324,5 @@ var areaSelector = /*#__PURE__*/Object.freeze({
11269
11324
  AreaSelector: AreaSelector
11270
11325
  });
11271
11326
 
11272
- export { Account, AssetProvider, AuthContext, AuthProvider, BarChartControl, ButtonWithLoading, ChangePassword, CheckBoxControl, Configuration$1 as Configuration, CurrencyFormatter, DataGridControl, DateFormatter, DateTimeFormatter, ErrorModal, FetchError, FilterPanel, GenericPanel, GenericTable, GetCrewColor, GetShiftColor, HorizontalTextControl, IntegerFormatter, Login, Logout, LongFilterPanel, MESApiService, MESFMain, MESSAGE_API, MESSAGE_ERRORS, MasterDetailPanel, MesfModal, ModalTreeFilterControl, MultipleSelectorControl, NumberFormatter, NumericTextControl, SimplePasswordControl, SimpleSelectorControl, SimpleTextAreaControl, SimpleTextControl, TimeFormatter, TreePickerControl, TrendingsPage, USER_LABELS, UTLSettingsProvider, UploadFileControl, UserProvider, axiosInstance, deleteUser, formatNumber, getAuthTypes, getCrewStyle, getDataUser, getError, getProfiles, getShiftStyle, getTokenFromLS, getUsers, renewToken, setPassword, setProfilesToUser, upsertUser, useAssetContext, useToken, useUTLSettingsContext, useUserContext };
11327
+ export { Account, AssetProvider, AuthContext, AuthProvider, BarChartControl, ButtonWithLoading, ChangePassword, CheckBoxControl, Configuration$1 as Configuration, CurrencyFormatter, DataGridControl, DateFormatter, DateTimeFormatter, ErrorModal, FetchError, FilterPanel, GenericPanel, GenericTable, GetCrewColor, GetShiftColor, HorizontalTextControl, IntegerFormatter, Login, Logout, LongFilterPanel, MESApiService, MESFMain, MESSAGE_API, MESSAGE_ERRORS, MasterDetailPanel, MesfModal, ModalTreeFilterControl, MultipleSelectorControl, NumberFormatter, NumericTextControl, SimplePasswordControl, SimpleSelectorControl, SimpleTextAreaControl, SimpleTextControl, TimeFormatter, TimeService, TreePickerControl, TrendingsPage, USER_LABELS, UTLSettingsProvider, UploadFileControl, UserProvider, axiosInstance, deleteUser, dxtToLocalServerTime, dxtToUTC, formatNumber, getAuthTypes, getCrewStyle, getDataUser, getError, getProfiles, getShiftStyle, getTokenFromLS, getUsers, renewToken, setPassword, setProfilesToUser, upsertUser, useAssetContext, useToken, useUTLSettingsContext, useUserContext };
11273
11328
  //# sourceMappingURL=index.esm.js.map