@dexteel/mesf-core 4.10.0 → 4.10.2

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,11 @@
1
1
  # CHANGELOG
2
+ ## 4.10.2
3
+ - Trending: Fix root of tags tree
4
+ - Trending: When no view detected, the Save View and Save View As work propertly and you can create the first view. Also the unit param was added to the Save View Modal
5
+ - Trending: Fix the Digital/Analog icon of the view tags. Also fixed when add a new tag from the tree
6
+ - Trending: The tag can be selected once for the view tags table
7
+ ## 4.10.1
8
+ - Trending: Fix some bugs
2
9
  ## 4.10.0
3
10
  - Forms: Remove forms from mesf-core-frontend
4
11
  ## 4.9.0
package/dist/index.esm.js CHANGED
@@ -8674,6 +8674,50 @@ var getTagsTree = function () { return __awaiter(void 0, void 0, void 0, functio
8674
8674
  }
8675
8675
  });
8676
8676
  }); };
8677
+ var deleteTagFolder = function (TagFolderId) { return __awaiter(void 0, void 0, void 0, function () {
8678
+ var apiService, parameters, backendOffset, resp;
8679
+ return __generator(this, function (_a) {
8680
+ switch (_a.label) {
8681
+ case 0:
8682
+ apiService = new MESApiService();
8683
+ parameters = [];
8684
+ backendOffset = 1000000;
8685
+ if (TagFolderId && TagFolderId > backendOffset) {
8686
+ TagFolderId = TagFolderId - backendOffset;
8687
+ }
8688
+ parameters.push({ name: "TagFolderId", value: TagFolderId });
8689
+ return [4 /*yield*/, apiService.callV2(getIhPath() + ".[DeleteTagFolder]", parameters)];
8690
+ case 1:
8691
+ resp = _a.sent();
8692
+ return [2 /*return*/, resp];
8693
+ }
8694
+ });
8695
+ }); };
8696
+ var upsertTagFolder = function (TagFolderId, ParentTagFolderId, TagFolderName, IsActive) { return __awaiter(void 0, void 0, void 0, function () {
8697
+ var apiService, parameters, backendOffset, resp;
8698
+ return __generator(this, function (_a) {
8699
+ switch (_a.label) {
8700
+ case 0:
8701
+ apiService = new MESApiService();
8702
+ parameters = [];
8703
+ backendOffset = 1000000;
8704
+ if (TagFolderId && TagFolderId > backendOffset) {
8705
+ TagFolderId = TagFolderId - backendOffset;
8706
+ }
8707
+ if (ParentTagFolderId && ParentTagFolderId > backendOffset) {
8708
+ ParentTagFolderId = ParentTagFolderId - backendOffset;
8709
+ }
8710
+ parameters.push({ name: "TagFolderId", value: TagFolderId });
8711
+ parameters.push({ name: "ParentTagFolderId", value: ParentTagFolderId });
8712
+ parameters.push({ name: "TagFolderName", value: TagFolderName });
8713
+ parameters.push({ name: "IsActive", value: IsActive });
8714
+ return [4 /*yield*/, apiService.callV2(getIhPath() + ".[UpsertTagFolder]", parameters)];
8715
+ case 1:
8716
+ resp = _a.sent();
8717
+ return [2 /*return*/, resp];
8718
+ }
8719
+ });
8720
+ }); };
8677
8721
  var changeTagFolderToTag = function (TagId, TagFolderId) { return __awaiter(void 0, void 0, void 0, function () {
8678
8722
  var apiService, parameters, backendOffset, resp;
8679
8723
  return __generator(this, function (_a) {
@@ -8873,13 +8917,14 @@ var useTagsTreeModalStyles = makeStyles$1(function (theme) { return ({
8873
8917
  fontSize: "14px",
8874
8918
  backgroundColor: "#fff",
8875
8919
  borderRadius: "2px",
8876
- padding: "5px 0 5px 0",
8877
- width: "150px",
8920
+ padding: "5px 10px;",
8921
+ width: "140px",
8878
8922
  height: "auto",
8879
8923
  margin: "0",
8880
8924
  position: "fixed",
8881
- listStyle: "none",
8882
- boxShadow: "0 0 20px 0 #ccc"
8925
+ boxShadow: "0 0 20px 0 #ccc",
8926
+ display: "flex",
8927
+ flexDirection: "column"
8883
8928
  },
8884
8929
  storyRoot: {
8885
8930
  display: "grid",
@@ -8947,13 +8992,14 @@ var CustomDragPreview = function (props) {
8947
8992
 
8948
8993
  var customStyles = "\n ul, ol {\n list-style-type: none;\n margin: 0;\n padding: 0;\n }\n";
8949
8994
  var TagFolderCustomNode = function (_a) {
8950
- var _b, _c, _d, _e, _f, _g, _h;
8951
- var node = _a.node, _j = _a.options, depth = _j.depth, isOpen = _j.isOpen, onToggle = _j.onToggle, options = _a.options, setOpenTagFolders = _a.setOpenTagFolders, openTagFolders = _a.openTagFolders, handleSelect = _a.handleSelect, isSelected = _a.isSelected;
8995
+ var _b, _c, _d, _e, _f, _g, _h, _j;
8996
+ var node = _a.node, _k = _a.options, depth = _k.depth, isOpen = _k.isOpen, onToggle = _k.onToggle, containerRef = _k.containerRef, options = _a.options, setOpenTagFolders = _a.setOpenTagFolders, openTagFolders = _a.openTagFolders, handleSelect = _a.handleSelect, setContextMenuOver = _a.setContextMenuOver, isSelected = _a.isSelected;
8952
8997
  var classes = useTagsTreeModalStyles();
8953
8998
  var nodeClasses = "".concat(classes.customNodeRoot, " ").concat(classes.root, " ").concat(isSelected ? classes.selected : "");
8954
8999
  var onClickHandler = function () {
8955
9000
  var _a;
8956
- if (options.hasChild) {
9001
+ var _b;
9002
+ if (options.hasChild || ((_b = node.data) === null || _b === void 0 ? void 0 : _b.TagTypeCode) === 'F') {
8957
9003
  if (openTagFolders[node.id]) {
8958
9004
  var newOpenTagFolders = __assign({}, openTagFolders);
8959
9005
  delete newOpenTagFolders[node.id];
@@ -8969,81 +9015,256 @@ var TagFolderCustomNode = function (_a) {
8969
9015
  handleSelect(node);
8970
9016
  }
8971
9017
  };
9018
+ var handleContextMenu = useCallback(function (ev) {
9019
+ ev.stopPropagation();
9020
+ ev.preventDefault();
9021
+ setContextMenuOver(node, ev);
9022
+ }, [node.id, setContextMenuOver]);
9023
+ useEffect(function () {
9024
+ var _a;
9025
+ (_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener("contextmenu", handleContextMenu);
9026
+ return function () {
9027
+ var _a;
9028
+ (_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener("contextmenu", handleContextMenu);
9029
+ };
9030
+ }, []);
8972
9031
  return (React__default.createElement("div", { className: nodeClasses, onClick: onClickHandler, style: { paddingLeft: depth * 20, cursor: "pointer" } },
8973
9032
  React__default.createElement("style", null, customStyles),
8974
9033
  React__default.createElement(React__default.Fragment, null,
8975
9034
  options.hasChild ? (React__default.createElement("div", null, isOpen ? React__default.createElement(ArrowDropDownIcon, null) : React__default.createElement(ArrowRight, null)))
8976
9035
  : null,
8977
- React__default.createElement("div", null, options.hasChild ? (React__default.createElement(FolderIcon, null)) : (React__default.createElement(InsertChartIcon, { fontSize: 'small' })))),
8978
- ((_b = node.data) === null || _b === void 0 ? void 0 : _b.TagName) &&
9036
+ React__default.createElement("div", null, options.hasChild || ((_b = node.data) === null || _b === void 0 ? void 0 : _b.TagTypeCode) === 'F' ? (React__default.createElement(FolderIcon, null)) : (React__default.createElement(InsertChartIcon, { fontSize: 'small' })))),
9037
+ ((_c = node.data) === null || _c === void 0 ? void 0 : _c.TagName) &&
8979
9038
  React__default.createElement(React__default.Fragment, null,
8980
- ((_c = node.data) === null || _c === void 0 ? void 0 : _c.TagTypeCode) && ((_d = node.data) === null || _d === void 0 ? void 0 : _d.TagTypeCode) !== 'F' && (React__default.createElement("div", { className: classes.dataTypeOfTree, style: {
8981
- backgroundColor: ((_e = node.data) === null || _e === void 0 ? void 0 : _e.TagTypeCode) === 'A' ? 'blue' : 'red',
9039
+ ((_d = node.data) === null || _d === void 0 ? void 0 : _d.TagTypeCode) && ((_e = node.data) === null || _e === void 0 ? void 0 : _e.TagTypeCode) !== 'F' && (React__default.createElement("div", { className: classes.dataTypeOfTree, style: {
9040
+ backgroundColor: ((_f = node.data) === null || _f === void 0 ? void 0 : _f.TagTypeCode) === 'A' ? 'blue' : 'red',
8982
9041
  margin: "0 5px"
8983
- } }, (_f = node.data) === null || _f === void 0 ? void 0 : _f.TagTypeCode)),
9042
+ } }, (_g = node.data) === null || _g === void 0 ? void 0 : _g.TagTypeCode)),
8984
9043
  React__default.createElement(Tooltip, { title: node.data.TagName, placement: "top", arrow: true },
8985
- React__default.createElement(Typography, { variant: "body2" }, ((_g = node.data) === null || _g === void 0 ? void 0 : _g.Alias) || ((_h = node.data) === null || _h === void 0 ? void 0 : _h.TagName))))));
9044
+ React__default.createElement(Typography, { variant: "body2" }, ((_h = node.data) === null || _h === void 0 ? void 0 : _h.Alias) || ((_j = node.data) === null || _j === void 0 ? void 0 : _j.TagName))))));
9045
+ };
9046
+
9047
+ var ButtonWithLoading = function (_a) {
9048
+ var children = _a.children, isLoading = _a.isLoading, props = __rest(_a, ["children", "isLoading"]);
9049
+ return (React__default.createElement(Button$1, __assign({}, props, { disabled: isLoading }),
9050
+ isLoading && React__default.createElement(CircularProgress$1, { size: "1rem" }),
9051
+ children));
9052
+ };
9053
+
9054
+ var NewFolderModal = function (_a) {
9055
+ var open = _a.open, handleClose = _a.handleClose, tagNodeSelectedInTree = _a.tagNodeSelectedInTree;
9056
+ var _b = useState(), name = _b[0], setName = _b[1];
9057
+ var _c = useState(''), error = _c[0], setError = _c[1];
9058
+ var _d = useState(false), isLoading = _d[0], setIsLoading = _d[1];
9059
+ var onSubmit = function (e) { return __awaiter(void 0, void 0, void 0, function () {
9060
+ var parentId, parentTagId, resp;
9061
+ var _a;
9062
+ return __generator(this, function (_b) {
9063
+ switch (_b.label) {
9064
+ case 0:
9065
+ e.preventDefault();
9066
+ parentId = Number(tagNodeSelectedInTree === null || tagNodeSelectedInTree === void 0 ? void 0 : tagNodeSelectedInTree.parent) || null;
9067
+ parentTagId = ((_a = tagNodeSelectedInTree === null || tagNodeSelectedInTree === void 0 ? void 0 : tagNodeSelectedInTree.data) === null || _a === void 0 ? void 0 : _a.TagTypeCode) === "F" ? Number(tagNodeSelectedInTree.id) : parentId;
9068
+ setIsLoading(true);
9069
+ if (!name) return [3 /*break*/, 2];
9070
+ return [4 /*yield*/, upsertTagFolder(null, parentTagId, name, true)];
9071
+ case 1:
9072
+ resp = _b.sent();
9073
+ if (!resp.ok) {
9074
+ setError(resp.message);
9075
+ }
9076
+ _b.label = 2;
9077
+ case 2:
9078
+ handleClose(true);
9079
+ setName('');
9080
+ setIsLoading(false);
9081
+ return [2 /*return*/];
9082
+ }
9083
+ });
9084
+ }); };
9085
+ return (React__default.createElement(React__default.Fragment, null,
9086
+ React__default.createElement(MesfModal, { open: open, handleClose: function () { return handleClose(false); }, maxWidth: "lg", "aria-labelledby": "modal-modal-title", "aria-describedby": "modal-modal-description", title: 'New folder' },
9087
+ React__default.createElement(MesfModal.Content, null,
9088
+ React__default.createElement(Box, null,
9089
+ React__default.createElement(TextField, { style: { minWidth: "600px" }, id: "outlined-basic", label: "Folder name", variant: "outlined", value: name, onChange: (function (e) { return setName(e.target.value); }) }))),
9090
+ React__default.createElement(MesfModal.Actions, null,
9091
+ React__default.createElement("div", null,
9092
+ React__default.createElement(Button$1, { color: 'secondary', variant: 'outlined', onClick: function () { return handleClose(false); } }, "Cancel")),
9093
+ React__default.createElement("div", null,
9094
+ React__default.createElement(ButtonWithLoading, { isLoading: isLoading, onClick: onSubmit, color: 'primary', variant: 'contained' }, "Save")))),
9095
+ React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(''); } })));
9096
+ };
9097
+
9098
+ var RemoveFolderModal = function (_a) {
9099
+ var open = _a.open, handleClose = _a.handleClose, tagNodeSelectedInTree = _a.tagNodeSelectedInTree;
9100
+ var _b = useState(''), error = _b[0], setError = _b[1];
9101
+ var _c = useState(false), isLoading = _c[0], setIsLoading = _c[1];
9102
+ var onSubmit = function (e) { return __awaiter(void 0, void 0, void 0, function () {
9103
+ var parentId, name_1, id, resp;
9104
+ return __generator(this, function (_a) {
9105
+ switch (_a.label) {
9106
+ case 0:
9107
+ e.preventDefault();
9108
+ if (!tagNodeSelectedInTree) return [3 /*break*/, 5];
9109
+ parentId = Number(tagNodeSelectedInTree === null || tagNodeSelectedInTree === void 0 ? void 0 : tagNodeSelectedInTree.parent) || null;
9110
+ name_1 = tagNodeSelectedInTree === null || tagNodeSelectedInTree === void 0 ? void 0 : tagNodeSelectedInTree.text;
9111
+ id = Number(tagNodeSelectedInTree === null || tagNodeSelectedInTree === void 0 ? void 0 : tagNodeSelectedInTree.id);
9112
+ resp = void 0;
9113
+ setIsLoading(true);
9114
+ if (!parentId) return [3 /*break*/, 2];
9115
+ return [4 /*yield*/, deleteTagFolder(id)];
9116
+ case 1:
9117
+ resp = _a.sent();
9118
+ if (!resp.ok) {
9119
+ setError(resp.message);
9120
+ }
9121
+ return [3 /*break*/, 4];
9122
+ case 2: return [4 /*yield*/, upsertTagFolder(id, parentId, name_1, false)];
9123
+ case 3:
9124
+ resp = _a.sent();
9125
+ _a.label = 4;
9126
+ case 4:
9127
+ if (!resp.ok) {
9128
+ setError(resp.message);
9129
+ }
9130
+ _a.label = 5;
9131
+ case 5:
9132
+ handleClose(true);
9133
+ setIsLoading(false);
9134
+ return [2 /*return*/];
9135
+ }
9136
+ });
9137
+ }); };
9138
+ return (React__default.createElement(React__default.Fragment, null,
9139
+ React__default.createElement(MesfModal, { open: open, handleClose: function () { return handleClose(false); }, maxWidth: "lg", "aria-labelledby": "modal-modal-title", "aria-describedby": "modal-modal-description", title: 'Remove Folder' },
9140
+ React__default.createElement(MesfModal.Content, null,
9141
+ React__default.createElement(Box, null,
9142
+ React__default.createElement(Typography, null,
9143
+ "Are you sure you want to remove ",
9144
+ React__default.createElement("strong", null, tagNodeSelectedInTree === null || tagNodeSelectedInTree === void 0 ? void 0 : tagNodeSelectedInTree.text),
9145
+ " folder?"))),
9146
+ React__default.createElement(MesfModal.Actions, null,
9147
+ React__default.createElement("div", null,
9148
+ React__default.createElement(Button$1, { color: 'secondary', variant: 'outlined', onClick: function () { return handleClose(false); } }, "Cancel")),
9149
+ React__default.createElement("div", null,
9150
+ React__default.createElement(ButtonWithLoading, { isLoading: isLoading, onClick: onSubmit, color: 'primary', variant: 'contained' }, "Remove")))),
9151
+ React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(''); } })));
9152
+ };
9153
+
9154
+ var ContextMenu = function (_a) {
9155
+ var _b;
9156
+ var isOpen = _a.isOpen, anchorPoint = _a.anchorPoint, tagNodeSelectedInTree = _a.tagNodeSelectedInTree, getTagsTreeData = _a.getTagsTreeData, setShowContextMenu = _a.setShowContextMenu;
9157
+ var classes = useTagsTreeModalStyles();
9158
+ var _c = useState(false), showNewTagModal = _c[0], setShowNewTagModal = _c[1];
9159
+ var _d = useState(false), showRemoveTagModal = _d[0], setShowRemoveTagModal = _d[1];
9160
+ var isFolder = ((_b = tagNodeSelectedInTree === null || tagNodeSelectedInTree === void 0 ? void 0 : tagNodeSelectedInTree.data) === null || _b === void 0 ? void 0 : _b.TagTypeCode) === "F";
9161
+ return (React__default.createElement(React__default.Fragment, null,
9162
+ isOpen && anchorPoint ? (React__default.createElement("ul", { className: classes.contextMenu, style: { top: anchorPoint.y, left: anchorPoint.x } },
9163
+ React__default.createElement(MenuItem$1, { style: { width: "100%", justifyContent: "left" }, onClick: function () { return setShowNewTagModal(true); } }, "New Folder"),
9164
+ tagNodeSelectedInTree && isFolder && (React__default.createElement(MenuItem$1, { style: { width: "100%", justifyContent: "left" }, onClick: function () { return setShowRemoveTagModal(true); } }, "Remove Folder")))) : (null),
9165
+ React__default.createElement(NewFolderModal, { open: showNewTagModal, handleClose: function (shouldUpdate) {
9166
+ if (shouldUpdate) {
9167
+ getTagsTreeData();
9168
+ }
9169
+ setShowContextMenu(false);
9170
+ setShowNewTagModal(false);
9171
+ }, tagNodeSelectedInTree: tagNodeSelectedInTree }),
9172
+ React__default.createElement(RemoveFolderModal, { open: showRemoveTagModal, handleClose: function (shouldUpdate) {
9173
+ if (shouldUpdate) {
9174
+ getTagsTreeData();
9175
+ }
9176
+ setShowContextMenu(false);
9177
+ setShowRemoveTagModal(false);
9178
+ }, tagNodeSelectedInTree: tagNodeSelectedInTree })));
8986
9179
  };
8987
9180
 
8988
- var NewTagSelectionModal = function (_a) {
9181
+ var TagSelectionModal = function (_a) {
8989
9182
  var isOpen = _a.isOpen; _a.onClose; var onTagSelect = _a.onTagSelect;
8990
9183
  var classes = useTagsTreeModalStyles();
8991
9184
  var _b = useState(true), isLoading = _b[0], setIsLoading = _b[1];
8992
9185
  var _c = useState(''), error = _c[0], setError = _c[1];
8993
9186
  var _d = useState([]), tagsTreeData = _d[0], setTagsTreeData = _d[1];
8994
- var _e = useState({}), openTagFolders = _e[0], setOpenTagFolders = _e[1];
8995
- var _f = useState([]), selectedNodes = _f[0]; _f[1];
9187
+ var _e = useState(null), tagNodeSelectedInTree = _e[0], setTagNodeSelectedInTree = _e[1];
9188
+ var _f = useState(null), anchorPoint = _f[0], setAnchorPoint = _f[1];
9189
+ var _g = useState(false), showContextMenu = _g[0], setShowContextMenu = _g[1];
9190
+ var backendOffset = 1000000;
9191
+ var _h = useState({}), openTagFolders = _h[0], setOpenTagFolders = _h[1];
9192
+ var _j = useState([]), selectedNodes = _j[0], setSelectedNodes = _j[1];
8996
9193
  useTrendingContext().state.viewTags;
9194
+ var handleContextMenu = function (data, e) {
9195
+ e.preventDefault();
9196
+ var top = e.clientY;
9197
+ var left = e.clientX;
9198
+ setAnchorPoint({ x: left, y: top });
9199
+ setSelectedNodes([data]);
9200
+ setShowContextMenu(true);
9201
+ var selectedNode = tagsTreeData.find(function (node) { var _a; return ((_a = node.data) === null || _a === void 0 ? void 0 : _a.TagId) === data.id; });
9202
+ if (selectedNode) {
9203
+ setTagNodeSelectedInTree(selectedNode);
9204
+ }
9205
+ };
9206
+ var getTagsTreeData = function () { return __awaiter(void 0, void 0, void 0, function () {
9207
+ var tagsTree, rows, tree;
9208
+ return __generator(this, function (_a) {
9209
+ switch (_a.label) {
9210
+ case 0:
9211
+ if (!isOpen) return [3 /*break*/, 2];
9212
+ setIsLoading(true);
9213
+ return [4 /*yield*/, getTagsTree()];
9214
+ case 1:
9215
+ tagsTree = _a.sent();
9216
+ if (tagsTree.ok) {
9217
+ rows = tagsTree.data.tables[0].rows;
9218
+ tree = buildTagsTreeV2(rows);
9219
+ setTagsTreeData(tree);
9220
+ }
9221
+ setIsLoading(false);
9222
+ _a.label = 2;
9223
+ case 2: return [2 /*return*/];
9224
+ }
9225
+ });
9226
+ }); };
8997
9227
  var expanded = useMemo(function () {
8998
9228
  return Object.keys(openTagFolders).map(function (el) { return parseInt(el); });
8999
9229
  }, [openTagFolders]);
9000
9230
  useEffect(function () {
9001
- var loadData = function () { return __awaiter(void 0, void 0, void 0, function () {
9002
- var tagsTree, rows, tree;
9003
- return __generator(this, function (_a) {
9004
- switch (_a.label) {
9005
- case 0:
9006
- if (!isOpen) return [3 /*break*/, 2];
9007
- setIsLoading(true);
9008
- return [4 /*yield*/, getTagsTree()];
9009
- case 1:
9010
- tagsTree = _a.sent();
9011
- if (tagsTree.ok) {
9012
- rows = tagsTree.data.tables[0].rows;
9013
- tree = buildTagsTreeV2(rows);
9014
- setTagsTreeData(tree);
9015
- }
9016
- setIsLoading(false);
9017
- _a.label = 2;
9018
- case 2: return [2 /*return*/];
9019
- }
9020
- });
9021
- }); };
9022
- loadData();
9231
+ getTagsTreeData();
9023
9232
  }, [isOpen]);
9024
9233
  var handleDrop = function (tree, options) { return __awaiter(void 0, void 0, void 0, function () {
9025
- var tagId, newFolderId, newTree;
9026
- return __generator(this, function (_a) {
9027
- switch (_a.label) {
9234
+ var tagId, newFolderId, newTree, newTree;
9235
+ var _a, _b;
9236
+ return __generator(this, function (_c) {
9237
+ switch (_c.label) {
9028
9238
  case 0:
9029
- if (!(options.dragSource && options.dropTarget)) return [3 /*break*/, 2];
9030
9239
  setIsLoading(true);
9240
+ if (!options.dragSource) return [3 /*break*/, 5];
9031
9241
  tagId = Number(options.dragSource.id);
9032
- newFolderId = Number(options.dropTarget.id);
9242
+ newFolderId = Number((_a = options.dropTarget) === null || _a === void 0 ? void 0 : _a.id) || null;
9033
9243
  if (tagId === newFolderId) {
9034
9244
  setIsLoading(false);
9035
9245
  return [2 /*return*/];
9036
9246
  }
9037
- return [4 /*yield*/, changeTagFolderToTag(tagId, newFolderId)];
9247
+ if (!(((_b = options.dragSource.data) === null || _b === void 0 ? void 0 : _b.TagTypeCode) === "F")) return [3 /*break*/, 2];
9248
+ return [4 /*yield*/, upsertTagFolder(tagId, newFolderId, options.dragSource.text, true)];
9038
9249
  case 1:
9039
- newTree = _a.sent();
9040
- setTagsTreeData(tree);
9041
- setIsLoading(false);
9250
+ newTree = _c.sent();
9042
9251
  if (!newTree.ok) {
9043
9252
  setError(newTree.message);
9044
9253
  }
9045
- _a.label = 2;
9046
- case 2: return [2 /*return*/];
9254
+ return [3 /*break*/, 4];
9255
+ case 2: return [4 /*yield*/, changeTagFolderToTag(tagId, newFolderId)];
9256
+ case 3:
9257
+ newTree = _c.sent();
9258
+ if (!newTree.ok) {
9259
+ setError(newTree.message);
9260
+ }
9261
+ _c.label = 4;
9262
+ case 4:
9263
+ setTagsTreeData(tree);
9264
+ _c.label = 5;
9265
+ case 5:
9266
+ setIsLoading(false);
9267
+ return [2 /*return*/];
9047
9268
  }
9048
9269
  });
9049
9270
  }); };
@@ -9052,23 +9273,29 @@ var NewTagSelectionModal = function (_a) {
9052
9273
  onTagSelect(node.data);
9053
9274
  }
9054
9275
  };
9276
+ var handleCloseContextMenu = function (e) {
9277
+ if (showContextMenu) {
9278
+ setShowContextMenu(false);
9279
+ }
9280
+ };
9055
9281
  return (React__default.createElement(React__default.Fragment, null,
9056
- React__default.createElement("div", { style: { display: isOpen ? "block" : "none", minHeight: "700px", minWidth: "800px" } },
9282
+ React__default.createElement("div", { style: { display: isOpen ? "block" : "none", minHeight: "700px", minWidth: "800px" }, onClick: handleCloseContextMenu },
9057
9283
  React__default.createElement("div", { style: { overflowY: 'auto', maxHeight: '700px' } }, isLoading ? (React__default.createElement(Grid$1, { container: true, justifyContent: "center", alignItems: "center", style: { minHeight: "100px" } },
9058
9284
  React__default.createElement(CircularProgress$1, { size: "2rem" }))) : (React__default.createElement(DndProvider$1, { backend: HTML5Backend },
9059
9285
  React__default.createElement(Tree, { classes: {
9060
9286
  root: classes.assetRoot,
9061
9287
  dropTarget: classes.dropTarget
9062
- }, initialOpen: expanded, tree: tagsTreeData, rootId: 0, onDrop: handleDrop, canDrop: function (tag, options) {
9288
+ }, initialOpen: expanded, tree: tagsTreeData, rootId: backendOffset, onDrop: handleDrop, canDrop: function (tag, options) {
9063
9289
  return !selectedNodes.some(function (selectedNode) {
9064
9290
  return Number(selectedNode.id) === Number(options.dropTargetId);
9065
9291
  });
9066
9292
  }, render: function (node, options) {
9067
9293
  var selected = selectedNodes.some(function (selectedNode) { return Number(selectedNode.id) === Number(node.id); });
9068
- return (React__default.createElement(TagFolderCustomNode, { node: node, options: options, isSelected: selected, openTagFolders: openTagFolders, setOpenTagFolders: setOpenTagFolders, handleSelect: handleClick }));
9294
+ return (React__default.createElement(TagFolderCustomNode, { setContextMenuOver: handleContextMenu, node: node, options: options, isSelected: selected, openTagFolders: openTagFolders, setOpenTagFolders: setOpenTagFolders, handleSelect: handleClick }));
9069
9295
  }, dragPreviewRender: function (monitorProps) { return (React__default.createElement(CustomDragPreview, { monitorProps: monitorProps })
9070
9296
  // <div>{monitorProps.item.data?.TagName}</div>
9071
9297
  ); } }))))),
9298
+ React__default.createElement(ContextMenu, { anchorPoint: anchorPoint, isOpen: showContextMenu, setShowContextMenu: setShowContextMenu, tagNodeSelectedInTree: tagNodeSelectedInTree, getTagsTreeData: getTagsTreeData }),
9072
9299
  React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(''); } })));
9073
9300
  };
9074
9301
 
@@ -9079,14 +9306,7 @@ var TagsTreeModal = function (_a) {
9079
9306
  React__default.createElement(MesfModal.Content, null,
9080
9307
  React__default.createElement(Box, null,
9081
9308
  React__default.createElement(Typography, { id: "modal-modal-description" },
9082
- React__default.createElement(NewTagSelectionModal, { isOpen: open, onClose: function () { return handleClose; }, onTagSelect: onTagSelect })))))));
9083
- };
9084
-
9085
- var ButtonWithLoading = function (_a) {
9086
- var children = _a.children, isLoading = _a.isLoading, props = __rest(_a, ["children", "isLoading"]);
9087
- return (React__default.createElement(Button$1, __assign({}, props, { disabled: isLoading }),
9088
- isLoading && React__default.createElement(CircularProgress$1, { size: "1rem" }),
9089
- children));
9309
+ React__default.createElement(TagSelectionModal, { isOpen: open, onClose: function () { return handleClose; }, onTagSelect: onTagSelect })))))));
9090
9310
  };
9091
9311
 
9092
9312
  var useTrendingStyles = makeStyles$1(function (theme) { return ({
@@ -9469,7 +9689,8 @@ var SaveAsViewModal = function (_a) {
9469
9689
  setNewView(newInputValue);
9470
9690
  }
9471
9691
  }, style: { width: "100%" }, renderInput: function (params) { return React__default.createElement(TextField, __assign({}, params, { label: "Views", variant: "outlined" })); } })) :
9472
- (React__default.createElement("div", null, "No tag views detected, please add one")))),
9692
+ (React__default.createElement(Box, null,
9693
+ React__default.createElement(TextField, { style: { minWidth: "600px" }, size: 'small', id: "outlined-basic", label: "View name", variant: "outlined", value: newView, onChange: (function (e) { return setNewView(e.target.value); }) }))))),
9473
9694
  React__default.createElement(Grid$1, { item: true, md: 12, xs: 12, style: { paddingTop: "2rem" }, className: classes.isPublicCheckbox },
9474
9695
  React__default.createElement("label", null,
9475
9696
  "Public",
@@ -9715,7 +9936,7 @@ var TableComponent = function (_a) {
9715
9936
  var handleAddTag = function (newTag) {
9716
9937
  var newArr = __spreadArray([], viewTags, true);
9717
9938
  if (newTag) {
9718
- newArr.push(__assign(__assign({}, newTag), { IsVisible: true }));
9939
+ newArr.push(__assign(__assign({}, newTag), { IsVisible: true, TagType: newTag.TagTypeCode }));
9719
9940
  setViewTagsAndRefetch(newArr);
9720
9941
  }
9721
9942
  };
@@ -9744,7 +9965,13 @@ var TableComponent = function (_a) {
9744
9965
  { id: 'loadView', label: 'Load View', onClick: function () { return setLoadViewOpen(true); } },
9745
9966
  ];
9746
9967
  var handleTagSelect = function (selectedTag) {
9747
- handleAddTag(selectedTag);
9968
+ var alreadySelected = viewTags.find(function (vt) { return vt.TagId === selectedTag.TagId; });
9969
+ if (!alreadySelected) {
9970
+ handleAddTag(selectedTag);
9971
+ }
9972
+ else {
9973
+ setError("".concat(selectedTag.TagName, " is already selected"));
9974
+ }
9748
9975
  };
9749
9976
  var handleDelete = function (index) { return __awaiter(void 0, void 0, void 0, function () {
9750
9977
  return __generator(this, function (_a) {
@@ -9763,14 +9990,18 @@ var TableComponent = function (_a) {
9763
9990
  return __generator(this, function (_a) {
9764
9991
  switch (_a.label) {
9765
9992
  case 0:
9993
+ if (!!viewSelected) return [3 /*break*/, 1];
9994
+ setSaveAsViewModalOpen(true);
9995
+ return [2 /*return*/];
9996
+ case 1:
9766
9997
  setIsLoading(true);
9767
- if (!(viewSelected === null || viewSelected === void 0 ? void 0 : viewSelected.ViewId)) return [3 /*break*/, 5];
9998
+ if (!(viewSelected === null || viewSelected === void 0 ? void 0 : viewSelected.ViewId)) return [3 /*break*/, 6];
9768
9999
  return [4 /*yield*/, upsertView(viewSelected === null || viewSelected === void 0 ? void 0 : viewSelected.ViewId, viewSelected.ViewName, viewSelected.IsPublic)];
9769
- case 1:
10000
+ case 2:
9770
10001
  resp = _a.sent();
9771
- if (!resp.ok) return [3 /*break*/, 4];
10002
+ if (!resp.ok) return [3 /*break*/, 5];
9772
10003
  return [4 /*yield*/, deleteAllViewTagsFromView(viewSelected.ViewId)];
9773
- case 2:
10004
+ case 3:
9774
10005
  deleteResp = _a.sent();
9775
10006
  if (!deleteResp.ok) {
9776
10007
  setError(deleteResp.message);
@@ -9784,7 +10015,7 @@ var TableComponent = function (_a) {
9784
10015
  }
9785
10016
  });
9786
10017
  }))];
9787
- case 3:
10018
+ case 4:
9788
10019
  results = _a.sent();
9789
10020
  results.forEach(function (result, index) {
9790
10021
  if (result.status === "rejected") {
@@ -9795,13 +10026,14 @@ var TableComponent = function (_a) {
9795
10026
  setSnackbarMessage('View saved successfully');
9796
10027
  }
9797
10028
  });
9798
- return [3 /*break*/, 5];
9799
- case 4:
9800
- setError(resp.message);
9801
- _a.label = 5;
10029
+ return [3 /*break*/, 6];
9802
10030
  case 5:
10031
+ setError(resp.message);
10032
+ _a.label = 6;
10033
+ case 6:
9803
10034
  setIsLoading(false);
9804
- return [2 /*return*/];
10035
+ _a.label = 7;
10036
+ case 7: return [2 /*return*/];
9805
10037
  }
9806
10038
  });
9807
10039
  }); };
@@ -9870,7 +10102,7 @@ var TableComponent = function (_a) {
9870
10102
  React__default.createElement("table", { style: { width: '100%', tableLayout: 'fixed', textAlign: "center" } },
9871
10103
  React__default.createElement("thead", null,
9872
10104
  React__default.createElement("tr", null,
9873
- React__default.createElement("th", { className: classes.visible }, "View:"),
10105
+ React__default.createElement("th", { className: classes.visible }, (viewSelected === null || viewSelected === void 0 ? void 0 : viewSelected.ViewName) && "View:"),
9874
10106
  React__default.createElement("th", { className: classes.aliasCol }, viewSelected === null || viewSelected === void 0 ? void 0 : viewSelected.ViewName),
9875
10107
  React__default.createElement("th", { className: classes.color }),
9876
10108
  React__default.createElement("th", { colSpan: 4, className: "".concat(classes.topTitles, " ").concat(classes.scale) }, "Scale"),
@@ -9963,7 +10195,8 @@ var TableComponent = function (_a) {
9963
10195
  React__default.createElement("td", { className: classes.aliasCol },
9964
10196
  React__default.createElement(Tooltip, { title: tag.TagName, placement: "top", arrow: true, interactive: true, enterDelay: 500 },
9965
10197
  React__default.createElement("div", { style: { display: 'flex', alignItems: 'center' } },
9966
- React__default.createElement("div", { className: classes.dataType, style: { backgroundColor: tag.TagTypeCode === "Real" || tag.TagTypeCode === "A" ? "blue" : ("red") } }, tag.TagTypeCode === "Real" || tag.TagTypeCode === "A" ? "A" : "D"),
10198
+ tag.TagType &&
10199
+ (React__default.createElement("div", { className: classes.dataType, style: { backgroundColor: tag.TagType === "A" ? "blue" : "red" } }, tag.TagType)),
9967
10200
  React__default.createElement("input", { type: "text", style: { width: '100%' }, value: tag.Alias || tag.TagName, onFocus: function (e) { return e.target.select(); }, onChange: function (e) {
9968
10201
  var newAlias = e.target.value;
9969
10202
  handleChangeAlias(tag.TagId, newAlias);
@@ -10012,7 +10245,7 @@ var TableComponent = function (_a) {
10012
10245
  React__default.createElement("td", null,
10013
10246
  !isNaN(((_f = dataTable[tag.TagName]) === null || _f === void 0 ? void 0 : _f.pmax.y) * 0) ? round((_g = dataTable[tag.TagName]) === null || _g === void 0 ? void 0 : _g.pmax.y) : 0,
10014
10247
  " ")));
10015
- }) : React__default.createElement("div", { style: { padding: '2rem' } },
10248
+ }) : React__default.createElement("div", { style: { padding: '1rem' } },
10016
10249
  React__default.createElement("div", { style: { padding: "1rem" } }, "No tag view detected. "),
10017
10250
  React__default.createElement("div", { style: { padding: "1rem" } },
10018
10251
  React__default.createElement(Button$1, { onClick: function () { return setTagsTreeModalOpen(true); }, variant: 'contained', color: 'primary' }, " Add tag")),
@@ -10666,7 +10899,7 @@ var TrendingsPage = function (props) {
10666
10899
  setViews(viewsResp.data.tables[0].rows);
10667
10900
  lastCreated = void 0;
10668
10901
  if (!viewSelected || forceReload) {
10669
- lastCreated = viewsResp.data.tables[0].rows.reduce(function (prev, current) { return (prev.ViewId > current.ViewId) ? prev : current; });
10902
+ lastCreated = viewsResp.data.tables[0].rows.reduce(function (prev, current) { return (prev.ViewId > current.ViewId) ? prev : current; }, null);
10670
10903
  //viewSelected
10671
10904
  setViewSelected(lastCreated);
10672
10905
  }