@dexteel/mesf-core 4.7.7 → 4.7.8

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
@@ -1,4 +1,6 @@
1
1
  # CHANGELOG
2
+ ## 4.7.8
3
+ - Trendings: Remove the 'Save view' popup and improve the 'Save view as' modal. Now you can choose a view to save in save view as or create a new one
2
4
  ## 4.7.7
3
5
  - Trendings: Scales now admits negative numbers
4
6
  - Trendings: Fix saveTagDefaults bug. When you save the default to Tag, you also save the View Tag selected.
package/dist/index.esm.js CHANGED
@@ -10372,18 +10372,17 @@ var SaveAsViewModal = function (_a) {
10372
10372
  var classes = useTrendingStyles();
10373
10373
  var _b = useState(false), isLoading = _b[0], setIsLoading = _b[1];
10374
10374
  var _c = useState(''), error = _c[0], setError = _c[1];
10375
- var viewTags = useTrendingContext().state.viewTags;
10376
- var _d = useState(true), isPublic = _d[0], setIsPublic = _d[1];
10377
- var _e = useState(''), viewName = _e[0], setViewName = _e[1];
10375
+ var _d = useTrendingContext(), _e = _d.state, viewTags = _e.viewTags, views = _e.views, viewSelected = _e.viewSelected, _f = _d.actions, setViewSelected = _f.setViewSelected; _f.setViewTags;
10376
+ var _g = useState(true), isPublic = _g[0], setIsPublic = _g[1];
10377
+ var _h = useState(''), newView = _h[0], setNewView = _h[1];
10378
10378
  var handleCheck = function () { return setIsPublic(!isPublic); };
10379
- var handleInputChange = function (e) { return setViewName(e.target.value); };
10380
10379
  var handleSubmit = function () { return __awaiter(void 0, void 0, void 0, function () {
10381
10380
  var resp, ViewId_1, results;
10382
10381
  return __generator(this, function (_a) {
10383
10382
  switch (_a.label) {
10384
10383
  case 0:
10385
10384
  setIsLoading(true);
10386
- return [4 /*yield*/, upsertView(null, viewName, isPublic)];
10385
+ return [4 /*yield*/, upsertView(null, newView, isPublic)];
10387
10386
  case 1:
10388
10387
  resp = _a.sent();
10389
10388
  if (!resp.ok) return [3 /*break*/, 3];
@@ -10418,12 +10417,22 @@ var SaveAsViewModal = function (_a) {
10418
10417
  });
10419
10418
  }); };
10420
10419
  return (React__default.createElement(React__default.Fragment, null,
10421
- React__default.createElement(MesfModal, { open: open, handleClose: function () { return handleClose(false); }, maxWidth: "xl", "aria-labelledby": "modal-modal-title", "aria-describedby": "modal-modal-description", title: 'Tags' },
10420
+ React__default.createElement(MesfModal, { open: open, handleClose: function () { return handleClose(false); }, maxWidth: "xl", "aria-labelledby": "modal-modal-title", "aria-describedby": "modal-modal-description", title: 'Save View As' },
10422
10421
  React__default.createElement(Divider, null),
10423
10422
  React__default.createElement(MesfModal.Content, null,
10424
10423
  React__default.createElement(Grid$1, { container: true, spacing: 5, style: { padding: "1rem" } },
10425
- React__default.createElement(Grid$1, { item: true, md: 12, xs: 12, style: { padding: "10px", width: "100%" } },
10426
- React__default.createElement(TextField, { size: 'small', id: "outlined-basic", label: "View Name", variant: "outlined", value: viewName, onChange: handleInputChange, style: { width: "100%" } }))),
10424
+ React__default.createElement(Grid$1, { item: true, md: 12, xs: 12, style: { padding: "10px", width: "100%" } }, views.length && viewSelected ? (React__default.createElement(Autocomplete, { size: 'small', id: "list-of-views", options: views, defaultValue: viewSelected, getOptionLabel: function (option) { return option.ViewName; }, freeSolo: true, onChange: function (ev, val) {
10425
+ setViewSelected(val);
10426
+ if (val) {
10427
+ setNewView("");
10428
+ }
10429
+ }, onInputChange: function (event, newInputValue) {
10430
+ var isValueInViews = views.some(function (view) { return view.ViewName === newInputValue; });
10431
+ if (!isValueInViews) {
10432
+ setNewView(newInputValue);
10433
+ }
10434
+ }, style: { width: "100%" }, renderInput: function (params) { return React__default.createElement(TextField, __assign({}, params, { label: "Views", variant: "outlined" })); } })) :
10435
+ (React__default.createElement("div", null, "No tag views detected, please add one")))),
10427
10436
  React__default.createElement(Grid$1, { item: true, md: 12, xs: 12, style: { paddingTop: "2rem" }, className: classes.isPublicCheckbox },
10428
10437
  React__default.createElement("label", null,
10429
10438
  "Public",
@@ -10570,76 +10579,12 @@ var timeDifference = function (start, end) {
10570
10579
  return "".concat(hours, "h ").concat(remainingMinutes, "m ").concat(remainingSeconds, "s");
10571
10580
  };
10572
10581
 
10573
- var SaveViewModal = function (_a) {
10574
- var open = _a.open, handleClose = _a.handleClose;
10575
- var _b = useState(false), isLoading = _b[0], setIsLoading = _b[1];
10576
- var _c = useState(''), error = _c[0], setError = _c[1];
10577
- var _d = useTrendingContext().state, viewTags = _d.viewTags, viewSelected = _d.viewSelected;
10578
- var handleSubmit = function () { return __awaiter(void 0, void 0, void 0, function () {
10579
- var resp, results;
10580
- return __generator(this, function (_a) {
10581
- switch (_a.label) {
10582
- case 0:
10583
- setIsLoading(true);
10584
- if (!(viewSelected === null || viewSelected === void 0 ? void 0 : viewSelected.ViewId)) return [3 /*break*/, 4];
10585
- return [4 /*yield*/, upsertView(viewSelected === null || viewSelected === void 0 ? void 0 : viewSelected.ViewId, viewSelected.ViewName, viewSelected.IsPublic)];
10586
- case 1:
10587
- resp = _a.sent();
10588
- if (!resp.ok) return [3 /*break*/, 3];
10589
- return [4 /*yield*/, Promise.allSettled(viewTags.map(function (_a) {
10590
- var TagId = _a.TagId, Color = _a.Color, MinScale = _a.MinScale, MaxScale = _a.MaxScale, IsAutoScale = _a.IsAutoScale, IsVisible = _a.IsVisible;
10591
- upsertViewTag(viewSelected === null || viewSelected === void 0 ? void 0 : viewSelected.ViewId, TagId, Color, MinScale, MaxScale, IsVisible, IsAutoScale)
10592
- .then(function (r) {
10593
- if (!r.ok) {
10594
- setError(r.message);
10595
- }
10596
- });
10597
- }))];
10598
- case 2:
10599
- results = _a.sent();
10600
- results.forEach(function (result, index) {
10601
- if (result.status === "rejected") {
10602
- setError("Tag ".concat(index, " failed with reason: ").concat(result.reason));
10603
- }
10604
- else {
10605
- handleClose(true);
10606
- }
10607
- });
10608
- return [3 /*break*/, 4];
10609
- case 3:
10610
- setError(resp.message);
10611
- _a.label = 4;
10612
- case 4:
10613
- setIsLoading(false);
10614
- return [2 /*return*/];
10615
- }
10616
- });
10617
- }); };
10618
- return (React__default.createElement(React__default.Fragment, null,
10619
- React__default.createElement(MesfModal, { open: open, handleClose: function () { return handleClose(false); }, maxWidth: "xl", "aria-labelledby": "modal-modal-title", "aria-describedby": "modal-modal-description", title: 'Tags' },
10620
- React__default.createElement(Divider, null),
10621
- React__default.createElement(MesfModal.Content, null,
10622
- React__default.createElement(Grid$1, { container: true, spacing: 5, style: { padding: "1rem" } },
10623
- React__default.createElement(Grid$1, { item: true, md: 12, xs: 12, style: { padding: "10px", width: "100%" } },
10624
- React__default.createElement(Typography, null,
10625
- "Do you want to save changes on ",
10626
- React__default.createElement("strong", null, viewSelected === null || viewSelected === void 0 ? void 0 : viewSelected.ViewName),
10627
- " ?")))),
10628
- React__default.createElement(Divider, null),
10629
- React__default.createElement(MesfModal.Actions, null,
10630
- React__default.createElement(Grid$1, { container: true, spacing: 1, style: { display: 'flex', alignItems: 'flex-end', justifyContent: 'flex-end' } },
10631
- React__default.createElement(Grid$1, { item: true },
10632
- React__default.createElement(Button$1, { variant: 'outlined', color: 'secondary', onClick: function () { return handleClose(false); } }, "Cancel")),
10633
- React__default.createElement(Grid$1, { item: true },
10634
- React__default.createElement(ButtonWithLoading, { variant: 'contained', color: 'primary', onClick: handleSubmit, isLoading: isLoading }, "Save"))))),
10635
- React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(''); } })));
10636
- };
10637
-
10638
10582
  var TableComponent = function (_a) {
10639
10583
  var chartData = _a.chartData, cursorData = _a.cursorData, getTagsFromAPI = _a.getTagsFromAPI;
10640
10584
  var classes = useTagsTableStyles();
10641
- var _b = useTrendingContext(), _c = _b.state, viewTags = _c.viewTags, viewSelected = _c.viewSelected, _d = _b.actions, setViewTags = _d.setViewTags, setGraphShouldUpdate = _d.setGraphShouldUpdate;
10585
+ var _b = useTrendingContext(), _c = _b.state, viewTags = _c.viewTags, viewSelected = _c.viewSelected, _d = _b.actions, setViewTags = _d.setViewTags, setGraphShouldUpdate = _d.setGraphShouldUpdate; _d.setViewSelected;
10642
10586
  var _e = useState(''), error = _e[0], setError = _e[1];
10587
+ var _f = useState(false); _f[0]; var setIsLoading = _f[1];
10643
10588
  var dataTable = useTagsDataTable({ viewTags: viewTags, chartData: chartData, cursorData: cursorData });
10644
10589
  var handleChange = function (tagId, value, property) {
10645
10590
  var newTags = viewTags.map(function (tag) {
@@ -10685,11 +10630,11 @@ var TableComponent = function (_a) {
10685
10630
  handleAutoScaleChange(tagId, checked);
10686
10631
  }
10687
10632
  };
10688
- var _f = useState(null), selectedRowIndex = _f[0], setSelectedRowIndex = _f[1];
10689
- var _g = useState(false), addTagModalOpen = _g[0], setAddTagModalOpen = _g[1];
10690
- var _h = useState(false), saveViewModalOpen = _h[0], setSaveViewModalOpen = _h[1];
10633
+ var _g = useState(null), selectedRowIndex = _g[0], setSelectedRowIndex = _g[1];
10634
+ var _h = useState(false), addTagModalOpen = _h[0], setAddTagModalOpen = _h[1];
10691
10635
  var _j = useState(false), saveAsViewModalOpen = _j[0], setSaveAsViewModalOpen = _j[1];
10692
10636
  var _k = useState(false), loadViewOpen = _k[0], setLoadViewOpen = _k[1];
10637
+ var _l = useState(''), snackbarMessage = _l[0], setSnackbarMessage = _l[1];
10693
10638
  var handleClose = function () { return setAddTagModalOpen(false); };
10694
10639
  var ContextMenu = function (_a) {
10695
10640
  var x = _a.x, y = _a.y, options = _a.options;
@@ -10700,12 +10645,12 @@ var TableComponent = function (_a) {
10700
10645
  React__default.createElement("ul", null, options.map(function (option) { return (React__default.createElement("li", { key: option.id, onClick: option.onClick }, option.label)); }))));
10701
10646
  };
10702
10647
  // Position state for the context menu
10703
- var _l = useState({ x: 0, y: 0 }), contextMenuPosition = _l[0], setContextMenuPosition = _l[1];
10648
+ var _m = useState({ x: 0, y: 0 }), contextMenuPosition = _m[0], setContextMenuPosition = _m[1];
10704
10649
  var contextMenuOptions = [
10705
10650
  { id: 'delete', label: 'Remove Tag', onClick: function () { return handleDelete(); } },
10706
10651
  { id: 'add', label: 'Add Tag', onClick: function () { return setAddTagModalOpen(true); } },
10707
10652
  { id: 'saveDefault', label: 'Save Default To Tag', onClick: function () { return handleSaveDefaultToTag(); } },
10708
- { id: 'saveView', label: 'Save View', onClick: function () { setSaveViewModalOpen(true); } },
10653
+ { id: 'saveView', label: 'Save View', onClick: function () { return handleSaveView(); } },
10709
10654
  { id: 'saveViewAs', label: 'Save View as', onClick: function () { return setSaveAsViewModalOpen(true); } },
10710
10655
  { id: 'loadView', label: 'Load View', onClick: function () { return setLoadViewOpen(true); } },
10711
10656
  ];
@@ -10737,6 +10682,53 @@ var TableComponent = function (_a) {
10737
10682
  }
10738
10683
  });
10739
10684
  }); };
10685
+ var handleSaveView = function () { return __awaiter(void 0, void 0, void 0, function () {
10686
+ var resp, results;
10687
+ return __generator(this, function (_a) {
10688
+ switch (_a.label) {
10689
+ case 0:
10690
+ setIsLoading(true);
10691
+ if (!(viewSelected === null || viewSelected === void 0 ? void 0 : viewSelected.ViewId)) return [3 /*break*/, 4];
10692
+ return [4 /*yield*/, upsertView(viewSelected === null || viewSelected === void 0 ? void 0 : viewSelected.ViewId, viewSelected.ViewName, viewSelected.IsPublic)];
10693
+ case 1:
10694
+ resp = _a.sent();
10695
+ if (!resp.ok) return [3 /*break*/, 3];
10696
+ return [4 /*yield*/, Promise.allSettled(viewTags.map(function (_a) {
10697
+ var TagId = _a.TagId, Color = _a.Color, MinScale = _a.MinScale, MaxScale = _a.MaxScale, IsAutoScale = _a.IsAutoScale, IsVisible = _a.IsVisible;
10698
+ upsertViewTag(viewSelected === null || viewSelected === void 0 ? void 0 : viewSelected.ViewId, TagId, Color, MinScale, MaxScale, IsVisible, IsAutoScale)
10699
+ .then(function (r) {
10700
+ if (!r.ok) {
10701
+ setError(r.message);
10702
+ }
10703
+ });
10704
+ }))];
10705
+ case 2:
10706
+ results = _a.sent();
10707
+ results.forEach(function (result, index) {
10708
+ if (result.status === "rejected") {
10709
+ setError("Tag ".concat(index, " failed with reason: ").concat(result.reason));
10710
+ }
10711
+ else {
10712
+ setSelectedRowIndex(null);
10713
+ setSnackbarMessage('View saved successfully');
10714
+ }
10715
+ });
10716
+ return [3 /*break*/, 4];
10717
+ case 3:
10718
+ setError(resp.message);
10719
+ _a.label = 4;
10720
+ case 4:
10721
+ setIsLoading(false);
10722
+ return [2 /*return*/];
10723
+ }
10724
+ });
10725
+ }); };
10726
+ var handleCloseSnackbar = function (event, reason) {
10727
+ if (reason === 'clickaway') {
10728
+ return;
10729
+ }
10730
+ setSnackbarMessage('');
10731
+ };
10740
10732
  useEffect(function () {
10741
10733
  var handleGlobalClick = function (e) {
10742
10734
  if (selectedRowIndex !== null) {
@@ -10933,20 +10925,17 @@ var TableComponent = function (_a) {
10933
10925
  React__default.createElement(Button$1, { onClick: function () { return setLoadViewOpen(true); }, variant: 'outlined', color: 'primary' }, " Load view"))))))),
10934
10926
  selectedRowIndex !== null && (React__default.createElement(ContextMenu, { x: contextMenuPosition.x, y: contextMenuPosition.y, options: contextMenuOptions })),
10935
10927
  React__default.createElement(AddTagModal, { open: addTagModalOpen, handleClose: handleClose, onTagSelect: handleTagSelect }),
10936
- React__default.createElement(SaveViewModal, { open: saveViewModalOpen, handleClose: function (shouldUpdate) {
10937
- setSaveViewModalOpen(false);
10938
- if (shouldUpdate)
10939
- getTagsFromAPI().then(function () { });
10940
- } }),
10941
10928
  React__default.createElement(SaveAsViewModal, { open: saveAsViewModalOpen, handleClose: function (shouldUpdate) {
10942
10929
  setSaveAsViewModalOpen(false);
10943
10930
  if (shouldUpdate)
10944
- getTagsFromAPI().then(function () { });
10931
+ getTagsFromAPI(true).then(function () { });
10945
10932
  } }),
10946
10933
  React__default.createElement(LoadViewModal, { open: loadViewOpen, handleClose: function (shouldUpdate) {
10947
10934
  setLoadViewOpen(false);
10948
10935
  } })),
10949
- React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(''); } })));
10936
+ React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(''); } }),
10937
+ React__default.createElement(Snackbar$1, { open: !!snackbarMessage, autoHideDuration: 800, onClose: handleCloseSnackbar },
10938
+ React__default.createElement(Alert$3, { onClose: handleCloseSnackbar, severity: "success" }, snackbarMessage))));
10950
10939
  };
10951
10940
 
10952
10941
  var formatDateTimeToString = function (date) {
@@ -11551,41 +11540,44 @@ var Trending = function (_a) {
11551
11540
  var TrendingsPage = function (props) {
11552
11541
  var _a = useState(''), error = _a[0], setError = _a[1];
11553
11542
  var _b = useTrendingContext(), viewSelected = _b.state.viewSelected, _c = _b.actions, setViews = _c.setViews, setViewTags = _c.setViewTags, setViewSelected = _c.setViewSelected;
11554
- var getTagsFromAPI = function () { return __awaiter(void 0, void 0, void 0, function () {
11555
- var viewsResp, lastCreated, viewTagsResp;
11556
- return __generator(this, function (_a) {
11557
- switch (_a.label) {
11558
- case 0: return [4 /*yield*/, getViews(null)];
11559
- case 1:
11560
- viewsResp = _a.sent();
11561
- if (!viewsResp.ok) return [3 /*break*/, 3];
11562
- setViews(viewsResp.data.tables[0].rows);
11563
- lastCreated = void 0;
11564
- if (!viewSelected) {
11565
- lastCreated = viewsResp.data.tables[0].rows.reduce(function (prev, current) { return (prev.ViewId > current.ViewId) ? prev : current; });
11566
- //viewSelected
11567
- setViewSelected(lastCreated);
11568
- }
11569
- else {
11570
- lastCreated = viewSelected;
11571
- }
11572
- return [4 /*yield*/, getViewTags(lastCreated.ViewId)];
11573
- case 2:
11574
- viewTagsResp = _a.sent();
11575
- if (viewTagsResp.ok) {
11576
- setViewTags(viewTagsResp.data.tables[0].rows);
11577
- }
11578
- else {
11579
- setError(viewTagsResp.message);
11580
- }
11581
- return [3 /*break*/, 4];
11582
- case 3:
11583
- setError(viewsResp.message);
11584
- _a.label = 4;
11585
- case 4: return [2 /*return*/];
11586
- }
11543
+ var getTagsFromAPI = function (forceReload) {
11544
+ if (forceReload === void 0) { forceReload = false; }
11545
+ return __awaiter(void 0, void 0, void 0, function () {
11546
+ var viewsResp, lastCreated, viewTagsResp;
11547
+ return __generator(this, function (_a) {
11548
+ switch (_a.label) {
11549
+ case 0: return [4 /*yield*/, getViews(null)];
11550
+ case 1:
11551
+ viewsResp = _a.sent();
11552
+ if (!viewsResp.ok) return [3 /*break*/, 3];
11553
+ setViews(viewsResp.data.tables[0].rows);
11554
+ lastCreated = void 0;
11555
+ if (!viewSelected || forceReload) {
11556
+ lastCreated = viewsResp.data.tables[0].rows.reduce(function (prev, current) { return (prev.ViewId > current.ViewId) ? prev : current; });
11557
+ //viewSelected
11558
+ setViewSelected(lastCreated);
11559
+ }
11560
+ else {
11561
+ lastCreated = viewSelected;
11562
+ }
11563
+ return [4 /*yield*/, getViewTags(lastCreated.ViewId)];
11564
+ case 2:
11565
+ viewTagsResp = _a.sent();
11566
+ if (viewTagsResp.ok) {
11567
+ setViewTags(viewTagsResp.data.tables[0].rows);
11568
+ }
11569
+ else {
11570
+ setError(viewTagsResp.message);
11571
+ }
11572
+ return [3 /*break*/, 4];
11573
+ case 3:
11574
+ setError(viewsResp.message);
11575
+ _a.label = 4;
11576
+ case 4: return [2 /*return*/];
11577
+ }
11578
+ });
11587
11579
  });
11588
- }); };
11580
+ };
11589
11581
  useEffect(function () {
11590
11582
  getTagsFromAPI();
11591
11583
  }, []);