@dexteel/mesf-core 4.10.4 → 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,20 @@
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
+
12
+ ### [4.10.5](https://github.com/dexteel/mesf-core-frontend/compare/v4.10.4...v4.10.5) (2024-05-02)
13
+
14
+
15
+ ### Bug Fixes
16
+
17
+ * **trending:** Load view bug when you add and remove a view tag ([eb8a155](https://github.com/dexteel/mesf-core-frontend/commit/eb8a1553cad19fa9be106716f8958728fc1507dc))
18
+
5
19
  ### [4.10.4](https://github.com/dexteel/mesf-core-frontend/compare/v4.10.2...v4.10.4) (2024-04-29)
6
20
 
7
21
  ## 4.10.3
@@ -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) {
8148
8177
  var payload = _a.payload;
8149
- state.hideBlueBoxes = payload;
8178
+ state.serverTimeZone = payload;
8179
+ },
8180
+ setSetting: function (state, _a) {
8181
+ var payload = _a.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" }))),
@@ -10835,7 +10890,7 @@ var TrendingChart = function (_a) {
10835
10890
  });
10836
10891
  var updatedSeries = series.map(function (serie, index) {
10837
10892
  var tag = viewTags[index];
10838
- var yAxisTagId = seriesVsTags.current[tag.TagId];
10893
+ var yAxisTagId = seriesVsTags.current[tag === null || tag === void 0 ? void 0 : tag.TagId];
10839
10894
  return {
10840
10895
  yAxisID: "y-axis-".concat(yAxisTagId),
10841
10896
  data: serie.map(function (sample) { return ({
@@ -10999,7 +11054,7 @@ var TrendingsPage = function (props) {
10999
11054
  case 0: return [4 /*yield*/, getViews(null)];
11000
11055
  case 1:
11001
11056
  viewsResp = _a.sent();
11002
- if (!viewsResp.ok) return [3 /*break*/, 3];
11057
+ if (!viewsResp.ok) return [3 /*break*/, 4];
11003
11058
  setViews(viewsResp.data.tables[0].rows);
11004
11059
  lastCreated = void 0;
11005
11060
  if (!viewSelected || forceReload) {
@@ -11010,6 +11065,7 @@ var TrendingsPage = function (props) {
11010
11065
  else {
11011
11066
  lastCreated = viewSelected;
11012
11067
  }
11068
+ if (!lastCreated) return [3 /*break*/, 3];
11013
11069
  return [4 /*yield*/, getViewTags(lastCreated.ViewId)];
11014
11070
  case 2:
11015
11071
  viewTagsResp = _a.sent();
@@ -11025,11 +11081,12 @@ var TrendingsPage = function (props) {
11025
11081
  else {
11026
11082
  setError(viewTagsResp.message);
11027
11083
  }
11028
- return [3 /*break*/, 4];
11029
- case 3:
11084
+ _a.label = 3;
11085
+ case 3: return [3 /*break*/, 5];
11086
+ case 4:
11030
11087
  setError(viewsResp.message);
11031
- _a.label = 4;
11032
- case 4: return [2 /*return*/];
11088
+ _a.label = 5;
11089
+ case 5: return [2 /*return*/];
11033
11090
  }
11034
11091
  });
11035
11092
  });
@@ -11089,8 +11146,8 @@ var MESFMainContainer = function () { return (React__default.createElement("div"
11089
11146
  React__default.createElement(MESFMainRouter, null))); };
11090
11147
 
11091
11148
  var Navigation = function (_a) {
11092
- var _b = _a.showAreaSelector, showAreaSelector = _b === void 0 ? false : _b, _c = _a.navbarTitle, navbarTitle = _c === void 0 ? "MESF" : _c;
11093
- 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];
11094
11151
  var mounted = useRef(true);
11095
11152
  useEffect(function () {
11096
11153
  if (params.has("redirectTo")) {
@@ -11105,7 +11162,7 @@ var Navigation = function (_a) {
11105
11162
  };
11106
11163
  }, [params.toString()]);
11107
11164
  return (React__default.createElement("div", { className: "wrapper" },
11108
- React__default.createElement(Header$1, { showAreaSelector: showAreaSelector, navbarTitle: navbarTitle }),
11165
+ React__default.createElement(Header$1, { showAreaSelector: showAreaSelector, navbarTitle: navbarTitle, showTrendingsIcon: showTrendingsIcon }),
11109
11166
  React__default.createElement(MESFMainContainer, null)));
11110
11167
  };
11111
11168
 
@@ -11114,7 +11171,7 @@ n(css,{});
11114
11171
 
11115
11172
  var base = document.getElementsByTagName("base")[0].getAttribute("href") || "/";
11116
11173
  function MESFMain(_a) {
11117
- 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;
11118
11175
  return (React__default.createElement(AuthProvider, { authConfig: authentication },
11119
11176
  React__default.createElement(UserProvider, null,
11120
11177
  React__default.createElement(AssetProvider, null,
@@ -11125,7 +11182,7 @@ function MESFMain(_a) {
11125
11182
  React__default.createElement(BrowserRouter, { basename: base },
11126
11183
  React__default.createElement(Routes, null,
11127
11184
  React__default.createElement(Route, { path: "/logout", element: React__default.createElement(Logout, null) })),
11128
- React__default.createElement(Navigation, { showAreaSelector: showAreaSelector, navbarTitle: navbarTitle }))))))))));
11185
+ React__default.createElement(Navigation, { showAreaSelector: showAreaSelector, showTrendingsIcon: showTrendingsIcon, navbarTitle: navbarTitle }))))))))));
11129
11186
  }
11130
11187
 
11131
11188
  var useDefaultAreaId = function (setError) {
@@ -11267,5 +11324,5 @@ var areaSelector = /*#__PURE__*/Object.freeze({
11267
11324
  AreaSelector: AreaSelector
11268
11325
  });
11269
11326
 
11270
- 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 };
11271
11328
  //# sourceMappingURL=index.esm.js.map