@dexteel/mesf-core 4.8.7 → 4.9.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/dist/index.esm.js CHANGED
@@ -26,19 +26,20 @@ import { AgGridReact } from 'ag-grid-react';
26
26
  import { withStyles, alpha, makeStyles, createStyles, useTheme } from '@material-ui/core/styles';
27
27
  import Typography$1 from '@material-ui/core/Typography';
28
28
  import { useForm, Controller, get as get$2 } from 'react-hook-form';
29
- import { Alert as Alert$3, TreeView as TreeView$1, TreeItem as TreeItem$1, Autocomplete } from '@material-ui/lab';
29
+ import { Alert as Alert$3, Autocomplete } from '@material-ui/lab';
30
30
  import moment from 'moment';
31
31
  import axios from 'axios';
32
32
  import { _adapters, Chart, CategoryScale, LinearScale, PointElement, LineElement, Title, Tooltip as Tooltip$1, Legend, TimeScale } from 'chart.js';
33
33
  import zoomPlugin from 'chartjs-plugin-zoom';
34
34
  import Popover from '@material-ui/core/Popover';
35
- import ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';
35
+ import { isAncestor, Tree, DndProvider as DndProvider$1 } from '@minoru/react-dnd-treeview';
36
36
  import FolderIcon from '@material-ui/icons/Folder';
37
- import InsertDriveFileIcon from '@material-ui/icons/InsertDriveFile';
37
+ import InsertChartIcon from '@material-ui/icons/InsertChart';
38
+ import { ArrowRight, ChevronLeft, ChevronRight } from '@material-ui/icons';
39
+ import ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';
38
40
  import CreateIcon from '@material-ui/icons/Create';
39
41
  import DeleteIcon from '@material-ui/icons/Delete';
40
42
  import LockIcon from '@material-ui/icons/Lock';
41
- import { ArrowRight, ChevronLeft, ChevronRight } from '@material-ui/icons';
42
43
  import SkipNextIcon from '@material-ui/icons/SkipNext';
43
44
  import { Line } from 'react-chartjs-2';
44
45
  import PersonPinCircleIcon from '@material-ui/icons/PersonPinCircle';
@@ -72,7 +73,6 @@ import 'ag-grid-enterprise/styles/ag-grid.css';
72
73
  import 'ag-grid-enterprise/styles/ag-theme-balham.min.css';
73
74
  import 'ag-grid-community/styles/ag-grid.css';
74
75
  import 'ag-grid-community/styles/ag-theme-alpine.css';
75
- import { isAncestor, Tree } from '@minoru/react-dnd-treeview';
76
76
  import ImageIcon from '@material-ui/icons/Image';
77
77
  import ListAltIcon from '@material-ui/icons/ListAlt';
78
78
  import DescriptionIcon from '@material-ui/icons/Description';
@@ -4305,7 +4305,7 @@ var useStyles$l = makeStyles$1(function (theme) { return ({
4305
4305
  opacity: 0.5
4306
4306
  }
4307
4307
  }); });
4308
- var customStyles = "\n ul, ol {\n list-style-type: none;\n margin: 0;\n padding: 0;\n }\n";
4308
+ var customStyles$1 = "\n ul, ol {\n list-style-type: none;\n margin: 0;\n padding: 0;\n }\n";
4309
4309
  var CustomNode = function (_a) {
4310
4310
  var setContextMenuOver = _a.setContextMenuOver, onDoubleClick = _a.onDoubleClick; _a.testIdPrefix; var isSelected = _a.isSelected, props = __rest(_a, ["setContextMenuOver", "onDoubleClick", "testIdPrefix", "isSelected"]);
4311
4311
  var _c = useConfigurationAssetContext(), openAssets = _c.state.openAssets, setOpenAssets = _c.actions.setOpenAssets;
@@ -4356,7 +4356,7 @@ var CustomNode = function (_a) {
4356
4356
  };
4357
4357
  }, []);
4358
4358
  return (React__default.createElement("div", { className: nodeClasses, style: { paddingInlineStart: indent }, "data-node-id": id, onClick: handleClick, title: "".concat(props.node.id, " - ").concat(props.node.text) },
4359
- React__default.createElement("style", null, customStyles),
4359
+ React__default.createElement("style", null, customStyles$1),
4360
4360
  props.node.droppable ? (React__default.createElement("div", { className: "".concat(classes.arrow, " ").concat(props.isOpen ? classes["arrow.is-open"] : "") },
4361
4361
  React__default.createElement("div", { onClick: handleToggle },
4362
4362
  React__default.createElement(ArrowRight, { "data-testid": "arrow-right-icon-".concat(id) })))) : null,
@@ -4432,7 +4432,7 @@ var useStyles$j = makeStyles$1(function (theme) { return ({
4432
4432
  display: "flex"
4433
4433
  }
4434
4434
  }); });
4435
- var CustomDragPreview = function (props) {
4435
+ var CustomDragPreview$1 = function (props) {
4436
4436
  var _a;
4437
4437
  var classes = useStyles$j();
4438
4438
  var item = props.monitorProps.item;
@@ -5455,7 +5455,7 @@ var AssetViewComponent = function () {
5455
5455
  if (selectedNodes.length > 1) {
5456
5456
  return (React__default.createElement(MultipleDragPreview, { dragSources: selectedNodes }));
5457
5457
  }
5458
- return (React__default.createElement(CustomDragPreview, { monitorProps: monitorProps }));
5458
+ return (React__default.createElement(CustomDragPreview$1, { monitorProps: monitorProps }));
5459
5459
  } })))))),
5460
5460
  React__default.createElement(CreateNewAssetDialog, { show: showCreateNewAssetDialog, onHide: function (shouldUpdate) {
5461
5461
  setShowCreateNewAssetDialog(false);
@@ -9983,275 +9983,42 @@ var ColorPicker = function (_a) {
9983
9983
  } })); })))));
9984
9984
  };
9985
9985
 
9986
- var useTagsTableStyles = makeStyles$1(function (theme) { return ({
9987
- checkbox: {
9988
- '& input[type="checkbox"]': {
9989
- zoom: 1.5
9990
- },
9991
- textAlign: 'center'
9992
- },
9993
- rowHover: {
9994
- '&:hover': {
9995
- backgroundColor: "#f2f2f2"
9996
- }
9997
- },
9998
- topTitles: {
9999
- border: "0.0625rem black solid",
10000
- borderBottom: "none",
10001
- backgroundColor: "#e9ecef"
10002
- },
10003
- bottomTitlesRow: {
10004
- '& th': {
10005
- border: "1px black solid"
10006
- },
10007
- backgroundColor: "#e9ecef"
10008
- },
10009
- doubleInput: {
10010
- padding: "0",
10011
- '& input[type="text"] ': {
10012
- width: "100%",
10013
- height: "17px",
10014
- display: "block",
10015
- margin: "0",
10016
- padding: "0"
10017
- }
10018
- },
10019
- inputCol: {
10020
- width: "11.25rem",
10021
- overflow: 'hidden',
10022
- textOverflow: 'ellipsis',
10023
- whiteSpace: 'nowrap'
10024
- },
10025
- aliasCol: {
10026
- width: "18rem",
10027
- overflow: 'hidden',
10028
- textOverflow: 'ellipsis',
10029
- whiteSpace: 'nowrap'
10030
- },
10031
- autoScale: {
10032
- width: '7.5rem'
10033
- },
10034
- scale: {
10035
- width: '37.5rem',
10036
- padding: "0"
10037
- },
10038
- visible: {
10039
- width: '3.75rem'
10040
- },
10041
- color: {
10042
- width: '4.375rem'
10043
- },
10044
- unit: {
10045
- width: '7.5rem'
10046
- },
10047
- numberInput: {
10048
- '&::-webkit-inner-spin-button, &::-webkit-outer-spin-button': {
10049
- '-webkit-appearance': 'none',
10050
- margin: 0
10051
- },
10052
- '&': {
10053
- '-moz-appearance': 'textfield'
9986
+ var getIhPath = function () { return localStorage.getItem('ihPath') || "[mssql2022].[IH_100020].[ih]"; };
9987
+ //tags
9988
+ var getTagsTree = function () { return __awaiter(void 0, void 0, void 0, function () {
9989
+ var apiService, parameters, resp;
9990
+ return __generator(this, function (_a) {
9991
+ switch (_a.label) {
9992
+ case 0:
9993
+ apiService = new MESApiService();
9994
+ parameters = [];
9995
+ return [4 /*yield*/, apiService.callV2(getIhPath() + ".[GetTagsTree]", parameters)];
9996
+ case 1:
9997
+ resp = _a.sent();
9998
+ return [2 /*return*/, resp];
10054
9999
  }
10055
- },
10056
- xStats: {
10057
- // ...
10058
- },
10059
- dataType: {
10060
- width: '30px',
10061
- height: '30px',
10062
- color: "white",
10063
- display: 'flex',
10064
- justifyContent: 'center',
10065
- alignItems: 'center',
10066
- cursor: 'pointer',
10067
- border: "1px black solid"
10068
- }
10069
- }); });
10070
-
10071
- var TagSelectionModal = function (_a) {
10072
- var isOpen = _a.isOpen; _a.onClose; var onTagSelect = _a.onTagSelect;
10073
- var classes = useTagsTableStyles();
10074
- var _b = useState(true), isLoading = _b[0], setIsLoading = _b[1];
10075
- var _c = useState(''), error = _c[0], setError = _c[1];
10076
- var _d = useState([]), treeData = _d[0], setTreeData = _d[1];
10077
- var _e = useState([]), expanded = _e[0], setExpanded = _e[1];
10078
- var viewTags = useTrendingContext().state.viewTags;
10079
- var currentColorIndex = useRef(0);
10080
- useEffect(function () {
10081
- var loadData = function () { return __awaiter(void 0, void 0, void 0, function () {
10082
- var children;
10083
- return __generator(this, function (_a) {
10084
- switch (_a.label) {
10085
- case 0:
10086
- if (!isOpen) return [3 /*break*/, 2];
10087
- setIsLoading(true);
10088
- return [4 /*yield*/, fetchChildren("root")];
10089
- case 1:
10090
- children = _a.sent();
10091
- setTreeData([
10092
- {
10093
- TagId: null,
10094
- TagName: "root",
10095
- children: children,
10096
- isLoaded: true,
10097
- shortName: "Tags",
10098
- tag: null
10099
- },
10100
- ]);
10101
- setIsLoading(false);
10102
- _a.label = 2;
10103
- case 2: return [2 /*return*/];
10104
- }
10105
- });
10106
- }); };
10107
- loadData();
10108
- }, [isOpen]);
10109
- var getColor = function () {
10110
- var color = tagColors[currentColorIndex.current];
10111
- currentColorIndex.current =
10112
- (currentColorIndex.current + 1) % tagColors.length;
10113
- return color;
10114
- };
10115
- var fetchChildren = function (tagName, depth, maxDepth) {
10116
- if (depth === void 0) { depth = 0; }
10117
- if (maxDepth === void 0) { maxDepth = 3; }
10118
- return __awaiter(void 0, void 0, void 0, function () {
10119
- var response, childrenData, error_1;
10120
- return __generator(this, function (_a) {
10121
- switch (_a.label) {
10122
- case 0:
10123
- // Limiting the recursion depth for safety
10124
- if (depth > maxDepth) {
10125
- return [2 /*return*/, []];
10126
- }
10127
- _a.label = 1;
10128
- case 1:
10129
- _a.trys.push([1, 4, , 5]);
10130
- return [4 /*yield*/, axios.get("/Tag/".concat(tagName, "/children"))];
10131
- case 2:
10132
- response = _a.sent();
10133
- return [4 /*yield*/, Promise.all(response.data.map(function (dbTag) { return __awaiter(void 0, void 0, void 0, function () {
10134
- var children, childTagName;
10135
- return __generator(this, function (_a) {
10136
- switch (_a.label) {
10137
- case 0:
10138
- children = null;
10139
- childTagName = tagName !== "root" ? tagName + "." + dbTag.tagName : dbTag.tagName;
10140
- if (!isNil$1(dbTag.tagType)) return [3 /*break*/, 2];
10141
- return [4 /*yield*/, fetchChildren(childTagName, depth + 1, maxDepth)];
10142
- case 1:
10143
- children = _a.sent();
10144
- _a.label = 2;
10145
- case 2: return [2 /*return*/, {
10146
- TagId: dbTag.tagId,
10147
- TagName: childTagName,
10148
- shortName: dbTag.tagName,
10149
- children: children,
10150
- isLoaded: true,
10151
- tag: {
10152
- TagId: dbTag.tagId,
10153
- TagName: dbTag.tagName,
10154
- Color: dbTag.color || getColor(),
10155
- IsAutoScale: (dbTag.minValue || dbTag.maxValue) ? false : true,
10156
- MinScale: dbTag.minValue,
10157
- MaxScale: dbTag.maxValue,
10158
- IsVisible: true,
10159
- TagType: dbTag.tagType,
10160
- Alias: dbTag.alias,
10161
- Unit: dbTag.unit
10162
- }
10163
- }];
10164
- }
10165
- });
10166
- }); }))];
10167
- case 3:
10168
- childrenData = _a.sent();
10169
- // Flatten the structure if needed or perform other transformations
10170
- // ...
10171
- return [2 /*return*/, childrenData];
10172
- case 4:
10173
- error_1 = _a.sent();
10174
- setError(error_1.message);
10175
- return [2 /*return*/, []];
10176
- case 5: return [2 /*return*/];
10177
- }
10178
- });
10179
- });
10180
- };
10181
- /* I have to get the grandchildren because the toggle action would not be triggered if no children */
10182
- var handleNodeToggle = function (event, nodeIds) { return __awaiter(void 0, void 0, void 0, function () {
10183
- return __generator(this, function (_a) {
10184
- setExpanded(nodeIds);
10185
- return [2 /*return*/];
10186
- });
10187
- }); };
10188
- var handleNodeSelect = function (event, nodeId) { return __awaiter(void 0, void 0, void 0, function () {
10189
- var node, alreadySelected;
10190
- return __generator(this, function (_a) {
10191
- node = findNode(treeData, nodeId);
10192
- if (node === null || node === void 0 ? void 0 : node.TagId) {
10193
- alreadySelected = viewTags.find(function (vt) { return vt.TagId === node.TagId; });
10194
- if (!alreadySelected) {
10195
- onTagSelect(node.tag);
10196
- }
10197
- else {
10198
- setError("".concat(node.TagName, " is already added to the view"));
10000
+ });
10001
+ }); };
10002
+ var changeTagFolderToTag = function (TagId, TagFolderId) { return __awaiter(void 0, void 0, void 0, function () {
10003
+ var apiService, parameters, backendOffset, resp;
10004
+ return __generator(this, function (_a) {
10005
+ switch (_a.label) {
10006
+ case 0:
10007
+ apiService = new MESApiService();
10008
+ parameters = [];
10009
+ backendOffset = 1000000;
10010
+ if (TagFolderId && TagFolderId > backendOffset) {
10011
+ TagFolderId = TagFolderId - backendOffset;
10199
10012
  }
10200
- }
10201
- return [2 /*return*/];
10202
- });
10203
- }); };
10204
- var findNode = function (nodes, tagName) {
10205
- for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {
10206
- var node = nodes_1[_i];
10207
- if (node.TagName === tagName) {
10208
- return node;
10209
- }
10210
- else if (node.children) {
10211
- var found = findNode(node.children, tagName);
10212
- if (found)
10213
- return found;
10214
- }
10013
+ parameters.push({ name: "TagId", value: TagId });
10014
+ parameters.push({ name: "TagFolderId", value: TagFolderId });
10015
+ return [4 /*yield*/, apiService.callV2(getIhPath() + ".[ChangeTagFolderToTag]", parameters)];
10016
+ case 1:
10017
+ resp = _a.sent();
10018
+ return [2 /*return*/, resp];
10215
10019
  }
10216
- return null;
10217
- };
10218
- var renderTree = function (node) {
10219
- var _a;
10220
- return (React__default.createElement(TreeItem$1, { key: node.TagName, nodeId: node.TagName, label: React__default.createElement("div", { style: { display: 'flex', alignItems: 'center' } },
10221
- ((_a = node.tag) === null || _a === void 0 ? void 0 : _a.TagType) && (React__default.createElement("div", { className: classes.dataType, style: {
10222
- backgroundColor: node.tag.TagType === 'A' ? 'blue' : 'red'
10223
- } }, node.tag.TagType)),
10224
- React__default.createElement("div", { style: { paddingLeft: "5px" } }, node.shortName)), endIcon: React__default.createElement(ArrowDropDownIcon, null), icon: node.children && node.children.length > 0 ? (React__default.createElement(FolderIcon, null)) : (React__default.createElement(InsertDriveFileIcon, null)) }, node.children && node.children.map(function (child) { return renderTree(child); })));
10225
- };
10226
- return (React__default.createElement(React__default.Fragment, null,
10227
- React__default.createElement("div", { style: {
10228
- display: isOpen ? "block" : "none",
10229
- minHeight: "400px",
10230
- minWidth: "600px"
10231
- } },
10232
- React__default.createElement("div", null, isLoading ? (React__default.createElement(Grid$1, { container: true, justifyContent: "center", alignItems: "center", style: { minHeight: "100px" } },
10233
- React__default.createElement(CircularProgress$1, { size: "2rem" }))) : (React__default.createElement(TreeView$1, { expanded: expanded, onNodeSelect: handleNodeSelect, onNodeToggle: handleNodeToggle }, treeData.map(function (tree) { return renderTree(tree); }))))),
10234
- React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(''); } })));
10235
- };
10236
-
10237
- var AddTagModal = function (_a) {
10238
- var open = _a.open, handleClose = _a.handleClose, onTagSelect = _a.onTagSelect;
10239
- return (React__default.createElement(React__default.Fragment, null,
10240
- React__default.createElement(MesfModal, { open: open, handleClose: handleClose, maxWidth: "lg", "aria-labelledby": "modal-modal-title", "aria-describedby": "modal-modal-description", title: 'Tags' },
10241
- React__default.createElement(MesfModal.Content, null,
10242
- React__default.createElement(Box, null,
10243
- React__default.createElement(Typography, { id: "modal-modal-description" },
10244
- React__default.createElement(TagSelectionModal, { isOpen: open, onClose: function () { return handleClose; }, onTagSelect: onTagSelect })))))));
10245
- };
10246
-
10247
- var ButtonWithLoading = function (_a) {
10248
- var children = _a.children, isLoading = _a.isLoading, props = __rest(_a, ["children", "isLoading"]);
10249
- return (React__default.createElement(Button$1, __assign({}, props, { disabled: isLoading }),
10250
- isLoading && React__default.createElement(CircularProgress$1, { size: "1rem" }),
10251
- children));
10252
- };
10253
-
10254
- var getIhPath = function () { return localStorage.getItem('ihPath') || "[mssql2022].[IH_100020].[ih]"; };
10020
+ });
10021
+ }); };
10255
10022
  var saveTagDefaults = function (TagId, Alias, Color, MinScale, MaxScale, Unit) { return __awaiter(void 0, void 0, void 0, function () {
10256
10023
  var apiService, parameters, resp;
10257
10024
  return __generator(this, function (_a) {
@@ -10374,6 +10141,279 @@ var deleteAllViewTagsFromView = function (ViewId) { return __awaiter(void 0, voi
10374
10141
  });
10375
10142
  }); };
10376
10143
 
10144
+ var useTagsTreeModalStyles = makeStyles$1(function (theme) { return ({
10145
+ dataTypeOfTree: {
10146
+ width: '25px',
10147
+ height: '25px',
10148
+ color: "white",
10149
+ display: 'flex',
10150
+ justifyContent: 'center',
10151
+ alignItems: 'center',
10152
+ cursor: 'pointer',
10153
+ border: "1px black solid"
10154
+ },
10155
+ root: {
10156
+ alignItems: "center",
10157
+ display: "flex",
10158
+ height: "32px"
10159
+ },
10160
+ customNodeRoot: {
10161
+ listStyleType: "none",
10162
+ margin: 0,
10163
+ padding: 0,
10164
+ '&:hover': {
10165
+ backgroundColor: "#f2f2f2"
10166
+ }
10167
+ },
10168
+ arrow: {
10169
+ alignItems: "center",
10170
+ cursor: "pointer",
10171
+ display: "flex",
10172
+ height: "24px",
10173
+ justifyContent: "center",
10174
+ width: "24px",
10175
+ transition: "transform linear 0.1s",
10176
+ transform: "rotate(0deg)"
10177
+ },
10178
+ "arrow > div": {
10179
+ alignItems: "center",
10180
+ display: "flex"
10181
+ },
10182
+ "arrow.is-open": {
10183
+ transform: "rotate(90deg)"
10184
+ },
10185
+ filetype: {
10186
+ display: "flex"
10187
+ },
10188
+ label: {
10189
+ paddingInlineStart: "8px"
10190
+ },
10191
+ selected: {
10192
+ backgroundColor: "#e8f0fe"
10193
+ },
10194
+ dragging: {
10195
+ opacity: 0.5
10196
+ },
10197
+ contextMenu: {
10198
+ fontSize: "14px",
10199
+ backgroundColor: "#fff",
10200
+ borderRadius: "2px",
10201
+ padding: "5px 0 5px 0",
10202
+ width: "150px",
10203
+ height: "auto",
10204
+ margin: "0",
10205
+ position: "fixed",
10206
+ listStyle: "none",
10207
+ boxShadow: "0 0 20px 0 #ccc"
10208
+ },
10209
+ storyRoot: {
10210
+ display: "grid",
10211
+ height: "100%",
10212
+ gridTemplateRows: "auto 1fr",
10213
+ listStyleType: "none !important"
10214
+ },
10215
+ assetRoot: {
10216
+ boxSizing: "border-box",
10217
+ height: "100%",
10218
+ padding: "32px"
10219
+ },
10220
+ dropTarget: {
10221
+ boxShadow: "0 0 0 1px #1967d2 inset",
10222
+ borderRadius: '1px',
10223
+ backgroundColor: '#DAE4F2'
10224
+ },
10225
+ customDragRoot: {
10226
+ alignItems: "center",
10227
+ backgroundColor: "#1967d2",
10228
+ borderRadius: "4px",
10229
+ boxShadow: " 0 12px 24px -6px rgba(0, 0, 0, .25); 0 0 0 1px rgba(0, 0, 0, .08)",
10230
+ color: "#fff",
10231
+ display: "inline-grid",
10232
+ fontSize: "14px",
10233
+ gap: "8px",
10234
+ gridTemplateColumns: "auto auto",
10235
+ padding: "4px 8px",
10236
+ pointerEvents: "none"
10237
+ },
10238
+ icon: {
10239
+ alignItems: "center",
10240
+ display: "flex"
10241
+ },
10242
+ customDragLabel: {
10243
+ alignItems: "center",
10244
+ display: "flex"
10245
+ }
10246
+ }); });
10247
+
10248
+ function buildTagsTreeV2(data) {
10249
+ var tagsForTree = [];
10250
+ data.forEach(function (el) {
10251
+ var tagForTree = {
10252
+ id: el.TagId,
10253
+ parent: (el.ParentTagId || 0),
10254
+ text: el.TagName,
10255
+ data: el,
10256
+ droppable: el.TagTypeCode === 'F'
10257
+ };
10258
+ return tagsForTree.push(tagForTree);
10259
+ });
10260
+ return tagsForTree;
10261
+ }
10262
+
10263
+ var CustomDragPreview = function (props) {
10264
+ var _a, _b, _c;
10265
+ var classes = useTagsTreeModalStyles();
10266
+ var item = props.monitorProps.item;
10267
+ var isFolder = ((_a = item.data) === null || _a === void 0 ? void 0 : _a.TagTypeCode) === 'F' ? true : false;
10268
+ return (React__default.createElement("div", { className: classes.customDragRoot },
10269
+ React__default.createElement("div", { className: classes.icon }, isFolder ? (React__default.createElement(FolderIcon, null)) : (React__default.createElement(InsertChartIcon, { fontSize: 'small' }))),
10270
+ React__default.createElement("div", { className: classes.customDragLabel }, ((_b = item.data) === null || _b === void 0 ? void 0 : _b.Alias) || ((_c = item.data) === null || _c === void 0 ? void 0 : _c.TagName))));
10271
+ };
10272
+
10273
+ var customStyles = "\n ul, ol {\n list-style-type: none;\n margin: 0;\n padding: 0;\n }\n";
10274
+ var TagFolderCustomNode = function (_a) {
10275
+ var _b, _c, _d, _e, _f, _g, _h;
10276
+ 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;
10277
+ var classes = useTagsTreeModalStyles();
10278
+ var nodeClasses = "".concat(classes.customNodeRoot, " ").concat(classes.root, " ").concat(isSelected ? classes.selected : "");
10279
+ var onClickHandler = function () {
10280
+ var _a;
10281
+ if (options.hasChild) {
10282
+ if (openTagFolders[node.id]) {
10283
+ var newOpenTagFolders = __assign({}, openTagFolders);
10284
+ delete newOpenTagFolders[node.id];
10285
+ setOpenTagFolders(newOpenTagFolders);
10286
+ }
10287
+ else {
10288
+ setOpenTagFolders(__assign(__assign({}, openTagFolders), (_a = {}, _a[node.id] = node.id, _a)));
10289
+ }
10290
+ onToggle();
10291
+ return;
10292
+ }
10293
+ if (!options.hasChild) {
10294
+ handleSelect(node);
10295
+ }
10296
+ };
10297
+ return (React__default.createElement("div", { className: nodeClasses, onClick: onClickHandler, style: { paddingLeft: depth * 20, cursor: "pointer" } },
10298
+ React__default.createElement("style", null, customStyles),
10299
+ React__default.createElement(React__default.Fragment, null,
10300
+ options.hasChild ? (React__default.createElement("div", null, isOpen ? React__default.createElement(ArrowDropDownIcon, null) : React__default.createElement(ArrowRight, null)))
10301
+ : null,
10302
+ React__default.createElement("div", null, options.hasChild ? (React__default.createElement(FolderIcon, null)) : (React__default.createElement(InsertChartIcon, { fontSize: 'small' })))),
10303
+ ((_b = node.data) === null || _b === void 0 ? void 0 : _b.TagName) &&
10304
+ React__default.createElement(React__default.Fragment, null,
10305
+ ((_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: {
10306
+ backgroundColor: ((_e = node.data) === null || _e === void 0 ? void 0 : _e.TagTypeCode) === 'A' ? 'blue' : 'red',
10307
+ margin: "0 5px"
10308
+ } }, (_f = node.data) === null || _f === void 0 ? void 0 : _f.TagTypeCode)),
10309
+ React__default.createElement(Tooltip, { title: node.data.TagName, placement: "top", arrow: true },
10310
+ 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))))));
10311
+ };
10312
+
10313
+ var NewTagSelectionModal = function (_a) {
10314
+ var isOpen = _a.isOpen; _a.onClose; var onTagSelect = _a.onTagSelect;
10315
+ var classes = useTagsTreeModalStyles();
10316
+ var _b = useState(true), isLoading = _b[0], setIsLoading = _b[1];
10317
+ var _c = useState(''), error = _c[0], setError = _c[1];
10318
+ var _d = useState([]), tagsTreeData = _d[0], setTagsTreeData = _d[1];
10319
+ var _e = useState({}), openTagFolders = _e[0], setOpenTagFolders = _e[1];
10320
+ var _f = useState([]), selectedNodes = _f[0]; _f[1];
10321
+ useTrendingContext().state.viewTags;
10322
+ var expanded = useMemo(function () {
10323
+ return Object.keys(openTagFolders).map(function (el) { return parseInt(el); });
10324
+ }, [openTagFolders]);
10325
+ useEffect(function () {
10326
+ var loadData = function () { return __awaiter(void 0, void 0, void 0, function () {
10327
+ var tagsTree, rows, tree;
10328
+ return __generator(this, function (_a) {
10329
+ switch (_a.label) {
10330
+ case 0:
10331
+ if (!isOpen) return [3 /*break*/, 2];
10332
+ setIsLoading(true);
10333
+ return [4 /*yield*/, getTagsTree()];
10334
+ case 1:
10335
+ tagsTree = _a.sent();
10336
+ if (tagsTree.ok) {
10337
+ rows = tagsTree.data.tables[0].rows;
10338
+ tree = buildTagsTreeV2(rows);
10339
+ setTagsTreeData(tree);
10340
+ }
10341
+ setIsLoading(false);
10342
+ _a.label = 2;
10343
+ case 2: return [2 /*return*/];
10344
+ }
10345
+ });
10346
+ }); };
10347
+ loadData();
10348
+ }, [isOpen]);
10349
+ var handleDrop = function (tree, options) { return __awaiter(void 0, void 0, void 0, function () {
10350
+ var tagId, newFolderId, newTree;
10351
+ return __generator(this, function (_a) {
10352
+ switch (_a.label) {
10353
+ case 0:
10354
+ if (!(options.dragSource && options.dropTarget)) return [3 /*break*/, 2];
10355
+ setIsLoading(true);
10356
+ tagId = Number(options.dragSource.id);
10357
+ newFolderId = Number(options.dropTarget.id);
10358
+ if (tagId === newFolderId) {
10359
+ setIsLoading(false);
10360
+ return [2 /*return*/];
10361
+ }
10362
+ return [4 /*yield*/, changeTagFolderToTag(tagId, newFolderId)];
10363
+ case 1:
10364
+ newTree = _a.sent();
10365
+ setTagsTreeData(tree);
10366
+ setIsLoading(false);
10367
+ if (!newTree.ok) {
10368
+ setError(newTree.message);
10369
+ }
10370
+ _a.label = 2;
10371
+ case 2: return [2 /*return*/];
10372
+ }
10373
+ });
10374
+ }); };
10375
+ var handleClick = function (node) {
10376
+ if (node.data) {
10377
+ onTagSelect(node.data);
10378
+ }
10379
+ };
10380
+ return (React__default.createElement(React__default.Fragment, null,
10381
+ React__default.createElement("div", { style: { display: isOpen ? "block" : "none", minHeight: "700px", minWidth: "800px" } },
10382
+ React__default.createElement("div", { style: { overflowY: 'auto', maxHeight: '700px' } }, isLoading ? (React__default.createElement(Grid$1, { container: true, justifyContent: "center", alignItems: "center", style: { minHeight: "100px" } },
10383
+ React__default.createElement(CircularProgress$1, { size: "2rem" }))) : (React__default.createElement(DndProvider$1, { backend: HTML5Backend },
10384
+ React__default.createElement(Tree, { classes: {
10385
+ root: classes.assetRoot,
10386
+ dropTarget: classes.dropTarget
10387
+ }, initialOpen: expanded, tree: tagsTreeData, rootId: 0, onDrop: handleDrop, canDrop: function (tag, options) {
10388
+ return !selectedNodes.some(function (selectedNode) {
10389
+ return Number(selectedNode.id) === Number(options.dropTargetId);
10390
+ });
10391
+ }, render: function (node, options) {
10392
+ var selected = selectedNodes.some(function (selectedNode) { return Number(selectedNode.id) === Number(node.id); });
10393
+ return (React__default.createElement(TagFolderCustomNode, { node: node, options: options, isSelected: selected, openTagFolders: openTagFolders, setOpenTagFolders: setOpenTagFolders, handleSelect: handleClick }));
10394
+ }, dragPreviewRender: function (monitorProps) { return (React__default.createElement(CustomDragPreview, { monitorProps: monitorProps })
10395
+ // <div>{monitorProps.item.data?.TagName}</div>
10396
+ ); } }))))),
10397
+ React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(''); } })));
10398
+ };
10399
+
10400
+ var TagsTreeModal = function (_a) {
10401
+ var open = _a.open, handleClose = _a.handleClose, onTagSelect = _a.onTagSelect;
10402
+ return (React__default.createElement(React__default.Fragment, null,
10403
+ React__default.createElement(MesfModal, { open: open, handleClose: handleClose, maxWidth: "lg", "aria-labelledby": "modal-modal-title", "aria-describedby": "modal-modal-description", title: 'Tags' },
10404
+ React__default.createElement(MesfModal.Content, null,
10405
+ React__default.createElement(Box, null,
10406
+ React__default.createElement(Typography, { id: "modal-modal-description" },
10407
+ React__default.createElement(NewTagSelectionModal, { isOpen: open, onClose: function () { return handleClose; }, onTagSelect: onTagSelect })))))));
10408
+ };
10409
+
10410
+ var ButtonWithLoading = function (_a) {
10411
+ var children = _a.children, isLoading = _a.isLoading, props = __rest(_a, ["children", "isLoading"]);
10412
+ return (React__default.createElement(Button$1, __assign({}, props, { disabled: isLoading }),
10413
+ isLoading && React__default.createElement(CircularProgress$1, { size: "1rem" }),
10414
+ children));
10415
+ };
10416
+
10377
10417
  var useTrendingStyles = makeStyles$1(function (theme) { return ({
10378
10418
  datetimePicker: {
10379
10419
  alignItems: "center",
@@ -10831,6 +10871,91 @@ var useTagsDataTable = function (_a) {
10831
10871
  }, [viewTags, chartData, cursorData]);
10832
10872
  };
10833
10873
 
10874
+ var useTagsTableStyles = makeStyles$1(function (theme) { return ({
10875
+ checkbox: {
10876
+ '& input[type="checkbox"]': {
10877
+ zoom: 1.5
10878
+ },
10879
+ textAlign: 'center'
10880
+ },
10881
+ rowHover: {
10882
+ '&:hover': {
10883
+ backgroundColor: "#f2f2f2"
10884
+ }
10885
+ },
10886
+ topTitles: {
10887
+ border: "0.0625rem black solid",
10888
+ borderBottom: "none",
10889
+ backgroundColor: "#e9ecef"
10890
+ },
10891
+ bottomTitlesRow: {
10892
+ '& th': {
10893
+ border: "1px black solid"
10894
+ },
10895
+ backgroundColor: "#e9ecef"
10896
+ },
10897
+ doubleInput: {
10898
+ padding: "0",
10899
+ '& input[type="text"] ': {
10900
+ width: "100%",
10901
+ height: "17px",
10902
+ display: "block",
10903
+ margin: "0",
10904
+ padding: "0"
10905
+ }
10906
+ },
10907
+ inputCol: {
10908
+ width: "11.25rem",
10909
+ overflow: 'hidden',
10910
+ textOverflow: 'ellipsis',
10911
+ whiteSpace: 'nowrap'
10912
+ },
10913
+ aliasCol: {
10914
+ width: "18rem",
10915
+ overflow: 'hidden',
10916
+ textOverflow: 'ellipsis',
10917
+ whiteSpace: 'nowrap'
10918
+ },
10919
+ autoScale: {
10920
+ width: '7.5rem'
10921
+ },
10922
+ scale: {
10923
+ width: '37.5rem',
10924
+ padding: "0"
10925
+ },
10926
+ visible: {
10927
+ width: '3.75rem'
10928
+ },
10929
+ color: {
10930
+ width: '4.375rem'
10931
+ },
10932
+ unit: {
10933
+ width: '7.5rem'
10934
+ },
10935
+ numberInput: {
10936
+ '&::-webkit-inner-spin-button, &::-webkit-outer-spin-button': {
10937
+ '-webkit-appearance': 'none',
10938
+ margin: 0
10939
+ },
10940
+ '&': {
10941
+ '-moz-appearance': 'textfield'
10942
+ }
10943
+ },
10944
+ xStats: {
10945
+ // ...
10946
+ },
10947
+ dataType: {
10948
+ width: '30px',
10949
+ height: '30px',
10950
+ color: "white",
10951
+ display: 'flex',
10952
+ justifyContent: 'center',
10953
+ alignItems: 'center',
10954
+ cursor: 'pointer',
10955
+ border: "1px black solid"
10956
+ }
10957
+ }); });
10958
+
10834
10959
  var formatTimeDiffWithMs = function (start, end) {
10835
10960
  // Calculate total difference in milliseconds
10836
10961
  var totalMilliseconds = end - start;
@@ -10876,7 +11001,7 @@ var TableComponent = function (_a) {
10876
11001
  var _g = useState(false); _g[0]; var setIsLoading = _g[1];
10877
11002
  var _h = useState(null), viewTagForDelete = _h[0], setViewTagForDelete = _h[1];
10878
11003
  var _j = useState(null), selectedRowIndex = _j[0], setSelectedRowIndex = _j[1];
10879
- var _k = useState(false), addTagModalOpen = _k[0], setAddTagModalOpen = _k[1];
11004
+ var _k = useState(false), tagsTreeModalOpen = _k[0], setTagsTreeModalOpen = _k[1];
10880
11005
  var _l = useState(false), saveAsViewModalOpen = _l[0], setSaveAsViewModalOpen = _l[1];
10881
11006
  var _m = useState(false), loadViewOpen = _m[0], setLoadViewOpen = _m[1];
10882
11007
  var _o = useState(''), snackbarMessage = _o[0], setSnackbarMessage = _o[1];
@@ -10915,7 +11040,7 @@ var TableComponent = function (_a) {
10915
11040
  var handleAddTag = function (newTag) {
10916
11041
  var newArr = __spreadArray([], viewTags, true);
10917
11042
  if (newTag) {
10918
- newArr.push(newTag);
11043
+ newArr.push(__assign(__assign({}, newTag), { IsVisible: true }));
10919
11044
  setViewTagsAndRefetch(newArr);
10920
11045
  }
10921
11046
  };
@@ -10924,7 +11049,7 @@ var TableComponent = function (_a) {
10924
11049
  handleAutoScaleChange(tagId, checked);
10925
11050
  }
10926
11051
  };
10927
- var handleClose = function () { return setAddTagModalOpen(false); };
11052
+ var handleClose = function () { return setTagsTreeModalOpen(false); };
10928
11053
  var ContextMenu = function (_a) {
10929
11054
  var x = _a.x, y = _a.y, options = _a.options;
10930
11055
  var handleContextMenuClick = function (e) {
@@ -10937,7 +11062,7 @@ var TableComponent = function (_a) {
10937
11062
  var _p = useState({ x: 0, y: 0 }), contextMenuPosition = _p[0], setContextMenuPosition = _p[1];
10938
11063
  var contextMenuOptions = [
10939
11064
  { id: 'delete', label: 'Remove Tag', onClick: function () { return handleDelete(); } },
10940
- { id: 'add', label: 'Add Tag', onClick: function () { return setAddTagModalOpen(true); } },
11065
+ { id: 'add', label: 'Tags Tree', onClick: function () { return setTagsTreeModalOpen(true); } },
10941
11066
  { id: 'saveDefault', label: 'Save Default To Tag', onClick: function () { return handleSaveDefaultToTag(); } },
10942
11067
  { id: 'saveView', label: 'Save View', onClick: function () { return handleSaveView(); } },
10943
11068
  { id: 'saveViewAs', label: 'Save View as', onClick: function () { return setSaveAsViewModalOpen(true); } },
@@ -11163,7 +11288,7 @@ var TableComponent = function (_a) {
11163
11288
  React__default.createElement("td", { className: classes.aliasCol },
11164
11289
  React__default.createElement(Tooltip, { title: tag.TagName, placement: "top", arrow: true, interactive: true, enterDelay: 500 },
11165
11290
  React__default.createElement("div", { style: { display: 'flex', alignItems: 'center' } },
11166
- React__default.createElement("div", { className: classes.dataType, style: { backgroundColor: tag.TagType === "Real" || tag.TagType === "A" ? "blue" : "red" } }, tag.TagType === "Real" || tag.TagType === "A" ? "A" : "D"),
11291
+ 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"),
11167
11292
  React__default.createElement("input", { type: "text", style: { width: '100%' }, value: tag.Alias || tag.TagName, onFocus: function (e) { return e.target.select(); }, onChange: function (e) {
11168
11293
  var newAlias = e.target.value;
11169
11294
  handleChangeAlias(tag.TagId, newAlias);
@@ -11215,11 +11340,11 @@ var TableComponent = function (_a) {
11215
11340
  }) : React__default.createElement("div", { style: { padding: '2rem' } },
11216
11341
  React__default.createElement("div", { style: { padding: "1rem" } }, "No tag view detected. "),
11217
11342
  React__default.createElement("div", { style: { padding: "1rem" } },
11218
- React__default.createElement(Button$1, { onClick: function () { return setAddTagModalOpen(true); }, variant: 'contained', color: 'primary' }, " Add tag")),
11343
+ React__default.createElement(Button$1, { onClick: function () { return setTagsTreeModalOpen(true); }, variant: 'contained', color: 'primary' }, " Add tag")),
11219
11344
  React__default.createElement("div", null,
11220
11345
  React__default.createElement(Button$1, { onClick: function () { return setLoadViewOpen(true); }, variant: 'outlined', color: 'primary' }, " Load view"))))))),
11221
11346
  selectedRowIndex !== null && (React__default.createElement(ContextMenu, { x: contextMenuPosition.x, y: contextMenuPosition.y, options: contextMenuOptions })),
11222
- React__default.createElement(AddTagModal, { open: addTagModalOpen, handleClose: handleClose, onTagSelect: handleTagSelect }),
11347
+ React__default.createElement(TagsTreeModal, { open: tagsTreeModalOpen, handleClose: handleClose, onTagSelect: handleTagSelect }),
11223
11348
  React__default.createElement(SaveAsViewModal, { open: saveAsViewModalOpen, handleClose: function (shouldUpdate) {
11224
11349
  setSaveAsViewModalOpen(false);
11225
11350
  if (shouldUpdate)