@dexteel/mesf-core 6.0.5 → 6.1.1

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
@@ -2077,7 +2077,7 @@ var TableJobs = function () {
2077
2077
  },
2078
2078
  };
2079
2079
  }, []);
2080
- var onRowSelected = function (event) {
2080
+ var onRowClicked = function (event) {
2081
2081
  var cell = gridApi === null || gridApi === void 0 ? void 0 : gridApi.getFocusedCell();
2082
2082
  if ((cell === null || cell === void 0 ? void 0 : cell.column.getColId()) !== "-" && event.node.isSelected()) {
2083
2083
  setJobSelected(event.data);
@@ -2101,7 +2101,7 @@ var TableJobs = function () {
2101
2101
  var getContextMenuItems = function (params) {
2102
2102
  var _a, _b;
2103
2103
  var data = (_a = params.node) === null || _a === void 0 ? void 0 : _a.data;
2104
- showContextMenu(event, data, "jobContext");
2104
+ showContextMenu(event, data, "jobsContext");
2105
2105
  if (data) {
2106
2106
  params.api.deselectAll();
2107
2107
  (_b = params.node) === null || _b === void 0 ? void 0 : _b.setSelected(true);
@@ -2180,7 +2180,7 @@ var TableJobs = function () {
2180
2180
  React.createElement(Grid, { container: true, justifyContent: "flex-start", alignItems: "center", className: classes.root, style: { width: "100%", padding: "0 10px" }, spacing: 2 },
2181
2181
  React.createElement(Grid, { item: true, md: 6, xs: 12 },
2182
2182
  React.createElement(Paper, { elevation: 2, style: { height: "70vh", width: "100%" } },
2183
- React.createElement(AgGridReact, { loading: isLoading, rowData: rows, columnDefs: columnDefs, defaultColDef: defaultColDef, getContextMenuItems: getContextMenuItems, loadingOverlayComponent: CenteredLazyLoading, rowHeight: 34, headerHeight: 34, animateRows: true, rowSelection: "single", onGridReady: function (params) { return setGridApi(params.api); }, getRowId: function (params) { return "".concat(params.data.JobId); }, onRowSelected: onRowSelected, onCellKeyDown: onCellKeyDown, gridOptions: {
2183
+ React.createElement(AgGridReact, { loading: isLoading, rowData: rows, columnDefs: columnDefs, defaultColDef: defaultColDef, getContextMenuItems: getContextMenuItems, loadingOverlayComponent: CenteredLazyLoading, rowHeight: 34, headerHeight: 34, animateRows: true, rowSelection: "single", onGridReady: function (params) { return setGridApi(params.api); }, getRowId: function (params) { return "".concat(params.data.JobId); }, onRowClicked: onRowClicked, onCellKeyDown: onCellKeyDown, gridOptions: {
2184
2184
  theme: themeDXT,
2185
2185
  statusBar: {
2186
2186
  statusPanels: [
@@ -2289,20 +2289,51 @@ var JobsPage = function (props) {
2289
2289
  };
2290
2290
 
2291
2291
  var LOG_TYPE_CODES = {
2292
- A: { id: "A", description: "All" },
2293
2292
  I: { id: "I", color: "#3f51b5", description: "Info" },
2294
2293
  E: { id: "E", color: "#f44336", description: "Error" },
2295
2294
  W: { id: "W", color: "#E69C00", description: "Warning" },
2295
+ D: { id: "D", color: "#FF79C6", description: "Debug" },
2296
2296
  };
2297
2297
 
2298
2298
  var CodeFilter = function (_a) {
2299
2299
  var LogTypeCode = _a.LogTypeCode, setLogTypeCodeFilter = _a.setLogTypeCodeFilter;
2300
+ var getDisplayValue = function (selected) {
2301
+ var sorted = __spreadArray([], selected, true).sort();
2302
+ // For 'Info', 'Warning' and 'Error' show 'All'
2303
+ if (sorted.length === 3 &&
2304
+ sorted.includes("I") &&
2305
+ sorted.includes("W") &&
2306
+ sorted.includes("E")) {
2307
+ return "All";
2308
+ }
2309
+ // For 'Info', 'Warning', 'Error' and 'Debug' show 'All + Debug'
2310
+ if (sorted.length === 4 &&
2311
+ sorted.includes("I") &&
2312
+ sorted.includes("W") &&
2313
+ sorted.includes("E") &&
2314
+ sorted.includes("D")) {
2315
+ return "All + Debug";
2316
+ }
2317
+ // For others, show the descriptions joined with " + "
2318
+ return selected
2319
+ .map(function (code) {
2320
+ var _a;
2321
+ return ((_a = LOG_TYPE_CODES[code]) === null || _a === void 0 ? void 0 : _a.description) ||
2322
+ code;
2323
+ })
2324
+ .join(" + ");
2325
+ };
2300
2326
  return (React__default.createElement("div", { style: { marginTop: 6, borderTopLeftRadius: 3, borderTopRightRadius: 3 } },
2301
2327
  React__default.createElement(InputLabel, { id: "demo-simple-select-label", style: { fontSize: 10, marginBottom: 0 } }, "Type"),
2302
- React__default.createElement(Select, { labelId: "demo-simple-select-label", id: "demo-simple-select", value: LogTypeCode, onChange: function (newLogTypeCode) {
2303
- return setLogTypeCodeFilter(newLogTypeCode.target.value);
2304
- }, style: { minWidth: "100%" } }, Object.values(LOG_TYPE_CODES).map(function (log) {
2305
- return (React__default.createElement(MenuItem, { key: "logId-".concat(log.id), value: log.id }, log.description));
2328
+ React__default.createElement(Select, { labelId: "code-filter-select-label", id: "code-filter-select", multiple: true, value: LogTypeCode, onChange: function (newLogTypeCode) {
2329
+ var newValue = newLogTypeCode.target.value;
2330
+ if (newValue.length > 0) {
2331
+ setLogTypeCodeFilter(newValue);
2332
+ }
2333
+ }, renderValue: function (selected) { return getDisplayValue(selected); }, style: { minWidth: "100%" } }, Object.values(LOG_TYPE_CODES).map(function (log) {
2334
+ return (React__default.createElement(MenuItem, { key: "logId-".concat(log.id), value: log.id, style: { padding: "0px 8px" } },
2335
+ React__default.createElement(Checkbox, { checked: LogTypeCode.includes(log.id), size: "small", color: "primary" }),
2336
+ React__default.createElement(ListItemText, { primary: log.description })));
2306
2337
  }))));
2307
2338
  };
2308
2339
 
@@ -2546,7 +2577,7 @@ var TableLogs = function () {
2546
2577
  var _b = useState(moment$8().hour(23).minute(59).second(59).toDate()), endDate = _b[0], setEndDate = _b[1];
2547
2578
  var _c = useState("UTC"), timezone = _c[0], setTimezone = _c[1];
2548
2579
  var _d = useState(""), search = _d[0], setSearch = _d[1];
2549
- var _e = useState("A"), logTypeCode = _e[0], setLogTypeCode = _e[1];
2580
+ var _e = useState(["I", "W", "E"]), logTypeCode = _e[0], setLogTypeCode = _e[1];
2550
2581
  var _f = useState(false), autoRefresh = _f[0], setAutoRefresh = _f[1];
2551
2582
  var _g = useState(null), gridAPI = _g[0], setGridAPI = _g[1];
2552
2583
  var _h = useState(""), error = _h[0], setError = _h[1];
@@ -2555,7 +2586,7 @@ var TableLogs = function () {
2555
2586
  var _l = searchLogs({
2556
2587
  startDate: startDate,
2557
2588
  endDate: endDate,
2558
- logTypeCode: logTypeCode,
2589
+ logTypeCode: logTypeCode.join(","),
2559
2590
  autoRefresh: autoRefresh,
2560
2591
  }), rows = _l.data, isLoading = _l.isLoading, refetch = _l.refetch, isError = _l.isError, e = _l.error;
2561
2592
  var onGridReady = function (params) {
@@ -2596,7 +2627,7 @@ var TableLogs = function () {
2596
2627
  setEndDate(moment$8().hour(23).minute(59).second(59).toDate());
2597
2628
  setSearch("");
2598
2629
  gridAPI === null || gridAPI === void 0 ? void 0 : gridAPI.setGridOption("quickFilterText", "");
2599
- setLogTypeCode("A");
2630
+ setLogTypeCode(["I", "W", "E"]);
2600
2631
  refetch();
2601
2632
  setError("");
2602
2633
  };
@@ -2606,7 +2637,7 @@ var TableLogs = function () {
2606
2637
  setEndDate(moment$8().hour(23).minute(59).second(59).toDate());
2607
2638
  setSearch("");
2608
2639
  gridAPI === null || gridAPI === void 0 ? void 0 : gridAPI.setGridOption("quickFilterText", "");
2609
- setLogTypeCode("A");
2640
+ setLogTypeCode(["I", "W", "E"]);
2610
2641
  setSelectedLog(undefined);
2611
2642
  };
2612
2643
  var rowClicked = function (rowClickedEvent) {
@@ -2649,19 +2680,21 @@ var TableLogs = function () {
2649
2680
  React.createElement(Card, { className: classes.card },
2650
2681
  React.createElement(CardContent, { style: { padding: "6px !important", width: "100%" } },
2651
2682
  React.createElement(Grid, { container: true, alignItems: "center", direction: "row", spacing: 1 },
2652
- React.createElement(Grid, { item: true, md: 2, xs: 12 },
2683
+ React.createElement(Grid, { item: true, style: { width: "fit-content" } },
2653
2684
  React.createElement(DateFilter, { label: "From", date: startDate, setDate: function (date) {
2654
2685
  return setStartDate(date || new Date());
2655
2686
  }, maxDate: endDate !== null && endDate !== void 0 ? endDate : undefined })),
2656
- React.createElement(Grid, { item: true, md: 2, xs: 12 },
2687
+ React.createElement(Grid, { item: true, style: { width: "fit-content" } },
2657
2688
  React.createElement(DateFilter, { label: "To", date: endDate, setDate: function (date) {
2658
2689
  if (date) {
2659
2690
  setEndDate(date);
2660
2691
  setAutoRefresh(false);
2661
2692
  }
2662
2693
  }, minDate: startDate })),
2663
- React.createElement(Grid, { item: true, md: 1, xs: 12 },
2664
- React.createElement(CodeFilter, { LogTypeCode: logTypeCode, setLogTypeCodeFilter: setLogTypeCode })),
2694
+ React.createElement(Grid, { item: true, md: 2, xs: 12 },
2695
+ React.createElement(CodeFilter, { LogTypeCode: logTypeCode, setLogTypeCodeFilter: function (logTypeCodes) {
2696
+ return setLogTypeCode(logTypeCodes);
2697
+ } })),
2665
2698
  React.createElement(Grid, { item: true, md: 1, xs: 12 },
2666
2699
  React.createElement(TimezoneSelector, { value: timezone, onChange: setTimezone })),
2667
2700
  React.createElement(Grid, { item: true, md: 1, xs: 12 },
@@ -2674,7 +2707,7 @@ var TableLogs = function () {
2674
2707
  }
2675
2708
  setAutoRefresh(checked);
2676
2709
  } })),
2677
- React.createElement(Grid, { item: true, md: 4, xs: 12 },
2710
+ React.createElement(Grid, { item: true, md: 3, xs: 12 },
2678
2711
  React.createElement(SearchFilter, { search: search, setSearch: function (search) {
2679
2712
  setSearch(search);
2680
2713
  gridAPI === null || gridAPI === void 0 ? void 0 : gridAPI.setGridOption("quickFilterText", search);
@@ -11897,7 +11930,8 @@ var TrendingProvider = function (_a) {
11897
11930
  initialState: TrendingsReducer.getInitialState(),
11898
11931
  reducers: TrendingsReducer.caseReducers,
11899
11932
  }), state = _b[0], actions = _b[1];
11900
- return (React__default.createElement(TrendingContext.Provider, { value: { state: state, actions: actions } }, children));
11933
+ var contextValue = useMemo(function () { return ({ state: state, actions: actions }); }, [state, actions]);
11934
+ return (React__default.createElement(TrendingContext.Provider, { value: contextValue }, children));
11901
11935
  };
11902
11936
 
11903
11937
  var useTrendingStyles = makeStyles(function (theme) { return ({
@@ -13377,51 +13411,42 @@ var TableComponent = function (_a) {
13377
13411
  cursorData: cursorData,
13378
13412
  });
13379
13413
  var handleChange = function (tagId, value, property) {
13380
- var newTags = structuredClone(viewTags);
13381
- newTags[tagId]["viewTag"][property] = value;
13382
- newTags[tagId]["viewTag"]["IsAutoScale"] = false;
13383
- setViewTags(newTags);
13414
+ var _a, _b;
13415
+ setViewTags(__assign(__assign({}, viewTags), (_a = {}, _a[tagId] = __assign(__assign({}, viewTags[tagId]), { viewTag: __assign(__assign({}, viewTags[tagId].viewTag), (_b = {}, _b[property] = value, _b.IsAutoScale = false, _b)) }), _a)));
13384
13416
  };
13385
13417
  var handleChangeScale = function (value, scale, tagId) {
13386
13418
  handleChange(tagId, value, scale);
13387
13419
  };
13388
13420
  var handleChangeAlias = function (tagId, newName) {
13389
- var newTags = structuredClone(viewTags);
13390
- newTags[tagId]["viewTag"]["Alias"] = newName;
13391
- setViewTags(newTags);
13421
+ var _a;
13422
+ setViewTags(__assign(__assign({}, viewTags), (_a = {}, _a[tagId] = __assign(__assign({}, viewTags[tagId]), { viewTag: __assign(__assign({}, viewTags[tagId].viewTag), { Alias: newName }) }), _a)));
13392
13423
  };
13393
13424
  var handleVisibilityChange = function (tagId, value) {
13394
- var newTags = structuredClone(viewTags);
13395
- newTags[tagId]["viewTag"]["IsVisible"] = value;
13396
- setViewTags(newTags);
13425
+ var _a;
13426
+ setViewTags(__assign(__assign({}, viewTags), (_a = {}, _a[tagId] = __assign(__assign({}, viewTags[tagId]), { viewTag: __assign(__assign({}, viewTags[tagId].viewTag), { IsVisible: value }) }), _a)));
13397
13427
  };
13398
13428
  var handleUnitChange = function (tagId, newUnit) {
13399
- var newTags = structuredClone(viewTags);
13400
- newTags[tagId]["viewTag"]["Unit"] = newUnit;
13401
- setViewTags(newTags);
13429
+ var _a;
13430
+ setViewTags(__assign(__assign({}, viewTags), (_a = {}, _a[tagId] = __assign(__assign({}, viewTags[tagId]), { viewTag: __assign(__assign({}, viewTags[tagId].viewTag), { Unit: newUnit }) }), _a)));
13402
13431
  };
13403
13432
  var handleAutoScaleChange = function (tagId, checked) {
13404
- var newTags = structuredClone(viewTags);
13405
- newTags[tagId]["viewTag"]["IsAutoScale"] = !checked;
13406
- setViewTags(newTags);
13433
+ var _a;
13434
+ setViewTags(__assign(__assign({}, viewTags), (_a = {}, _a[tagId] = __assign(__assign({}, viewTags[tagId]), { viewTag: __assign(__assign({}, viewTags[tagId].viewTag), { IsAutoScale: !checked }) }), _a)));
13407
13435
  };
13408
13436
  var handleColorChange = function (tagId, value) {
13409
- var newTags = structuredClone(viewTags);
13410
- newTags[tagId]["viewTag"]["Color"] = value;
13411
- setViewTags(newTags);
13437
+ var _a;
13438
+ setViewTags(__assign(__assign({}, viewTags), (_a = {}, _a[tagId] = __assign(__assign({}, viewTags[tagId]), { viewTag: __assign(__assign({}, viewTags[tagId].viewTag), { Color: value }) }), _a)));
13412
13439
  };
13413
13440
  var handleDeleteTag = function (tagId) {
13414
- var newTags = structuredClone(viewTags);
13415
- delete newTags[tagId];
13441
+ var _a = viewTags, _b = tagId; _a[_b]; var newTags = __rest(_a, [typeof _b === "symbol" ? _b : _b + ""]);
13416
13442
  setViewTagsAndRefetch(newTags);
13417
13443
  };
13418
13444
  var handleAddTag = function (newTag) {
13419
- var newTags = structuredClone(viewTags);
13420
- newTags[newTag.TagId] = {
13445
+ var _a;
13446
+ setViewTagsAndRefetch(__assign(__assign({}, viewTags), (_a = {}, _a[newTag.TagId] = {
13421
13447
  viewTag: __assign(__assign({}, newTag), { IsVisible: true, TagType: newTag.TagTypeCode, Color: newTag.Color || getRandomColor(), IsAutoScale: newTag.MinScale || newTag.MaxScale ? false : true }),
13422
13448
  order: Object.keys(viewTags).length,
13423
- };
13424
- setViewTagsAndRefetch(newTags);
13449
+ }, _a)));
13425
13450
  };
13426
13451
  var handleAbleScales = function (tagId, checked) {
13427
13452
  if (checked) {
@@ -13548,7 +13573,6 @@ var TableComponent = function (_a) {
13548
13573
  return __generator(this, function (_b) {
13549
13574
  switch (_b.label) {
13550
13575
  case 0:
13551
- debugger;
13552
13576
  if (!(viewSelected && selectedRowTagId !== null)) return [3 /*break*/, 3];
13553
13577
  _a = viewTags[selectedRowTagId].viewTag, TagId = _a.TagId, Alias = _a.Alias, Color = _a.Color, MinScale = _a.MinScale, MaxScale = _a.MaxScale, Unit = _a.Unit, IsVisible = _a.IsVisible, IsAutoScale = _a.IsAutoScale;
13554
13578
  return [4 /*yield*/, saveTags.mutate({
@@ -13840,7 +13864,7 @@ var formatDateTimeToString = function (date) {
13840
13864
  var useChartOptions = function () {
13841
13865
  var _a = useTrendingContext(); _a.state; var actions = _a.actions;
13842
13866
  var debounceTimerRef = useRef(null);
13843
- var handleZoom = function (_a) {
13867
+ var handleZoom = useCallback(function (_a) {
13844
13868
  var chart = _a.chart;
13845
13869
  if (debounceTimerRef.current) {
13846
13870
  clearTimeout(debounceTimerRef.current);
@@ -13854,8 +13878,8 @@ var useChartOptions = function () {
13854
13878
  end: newEnd,
13855
13879
  });
13856
13880
  }, 1000);
13857
- };
13858
- var handlePan = function (_a) {
13881
+ }, [actions]);
13882
+ var handlePan = useCallback(function (_a) {
13859
13883
  var chart = _a.chart;
13860
13884
  if (debounceTimerRef.current) {
13861
13885
  clearTimeout(debounceTimerRef.current);
@@ -13870,8 +13894,8 @@ var useChartOptions = function () {
13870
13894
  graphPan: true,
13871
13895
  });
13872
13896
  }, 1000);
13873
- };
13874
- return useState({
13897
+ }, [actions]);
13898
+ var initialOptions = useMemo(function () { return ({
13875
13899
  animation: {
13876
13900
  duration: 0, // No animation
13877
13901
  },
@@ -13939,7 +13963,8 @@ var useChartOptions = function () {
13939
13963
  },
13940
13964
  },
13941
13965
  },
13942
- });
13966
+ }); }, [handleZoom, handlePan]);
13967
+ return useState(initialOptions);
13943
13968
  };
13944
13969
 
13945
13970
  var CustomOptionsComponent = function (_a) {
@@ -13999,7 +14024,7 @@ var dateNavigator = function (startDate, endDate, scope, operator, current) {
13999
14024
  return { newStartDate: newStartDate, newEndDate: newEndDate };
14000
14025
  };
14001
14026
 
14002
- var Header = function (_a) {
14027
+ var Header = React__default.memo(function (_a) {
14003
14028
  var setChartOptions = _a.setChartOptions, autoRefresh = _a.autoRefresh, setAutoRefresh = _a.setAutoRefresh;
14004
14029
  var classes = useTrendingStyles();
14005
14030
  var _b = useTrendingContext(), state = _b.state, actions = _b.actions;
@@ -14095,9 +14120,10 @@ var Header = function (_a) {
14095
14120
  }
14096
14121
  setAutoRefresh(autoRefresh);
14097
14122
  } }))))));
14098
- };
14123
+ });
14124
+ Header.displayName = "Header";
14099
14125
 
14100
- var DraggableLineControl = function (_a) {
14126
+ var DraggableLineControl = React__default.memo(function (_a) {
14101
14127
  var initialLeft = _a.initialLeft, otherLineCoord = _a.otherLineCoord, onUpdate = _a.onUpdate, color = _a.color, chartArea = _a.chartArea;
14102
14128
  var _b = useState(false), isDragging = _b[0], setIsDragging = _b[1];
14103
14129
  var _c = useState(initialLeft), left = _c[0], setLeft = _c[1];
@@ -14156,10 +14182,11 @@ var DraggableLineControl = function (_a) {
14156
14182
  right: 0,
14157
14183
  margin: "auto",
14158
14184
  } })));
14159
- };
14185
+ });
14186
+ DraggableLineControl.displayName = "DraggableLineControl";
14160
14187
 
14161
14188
  var useGetVerticalLinePlugin = function (setChartArea, setCoords) {
14162
- var chartPlugin = {
14189
+ var chartPlugin = useMemo(function () { return ({
14163
14190
  id: "verticalLinePlugin",
14164
14191
  afterUpdate: function (chart) {
14165
14192
  if (chart.chartArea) {
@@ -14185,7 +14212,7 @@ var useGetVerticalLinePlugin = function (setChartArea, setCoords) {
14185
14212
  setChartArea(chart.chartArea);
14186
14213
  setCoords({ x1: x1, x2: x2 });
14187
14214
  },
14188
- };
14215
+ }); }, [setChartArea, setCoords]);
14189
14216
  return chartPlugin;
14190
14217
  };
14191
14218
 
@@ -14223,7 +14250,7 @@ var updateCursorData = function (chart, setCursorData) {
14223
14250
  };
14224
14251
 
14225
14252
  var useXAxisDatePlugin = function () {
14226
- var chartPlugin = {
14253
+ var chartPlugin = useMemo(function () { return ({
14227
14254
  id: "xAxisDatePlugin",
14228
14255
  afterBuildTicks: function (chart) {
14229
14256
  var oldTicks = chart.scales.x.ticks;
@@ -14249,14 +14276,14 @@ var useXAxisDatePlugin = function () {
14249
14276
  }
14250
14277
  chart.scales.x.ticks = newTicks;
14251
14278
  },
14252
- };
14279
+ }); }, []);
14253
14280
  return chartPlugin;
14254
14281
  };
14255
14282
 
14256
14283
  var useYAxisPlugin = function () {
14257
- var chartPlugin = {
14284
+ var chartPlugin = useMemo(function () { return ({
14258
14285
  id: "yAxisPlugin",
14259
- };
14286
+ }); }, []);
14260
14287
  return chartPlugin;
14261
14288
  };
14262
14289
 
@@ -14278,7 +14305,7 @@ var areRangesSimilar = function (tag1, tag2) {
14278
14305
  return isSignificantOverlap;
14279
14306
  };
14280
14307
 
14281
- var TrendingChart = function (_a) {
14308
+ var TrendingChart = React__default.memo(function (_a) {
14282
14309
  var series = _a.series, chartOptions = _a.chartOptions, setChartOptions = _a.setChartOptions, chartData = _a.chartData, setCursorData = _a.setCursorData, setChartData = _a.setChartData;
14283
14310
  var _b = useTrendingContext(), state = _b.state, viewTags = _b.state.viewTags; _b.actions;
14284
14311
  var _c = useState(null), lineTabCoords = _c[0], setLineTabCoords = _c[1];
@@ -14332,9 +14359,9 @@ var TrendingChart = function (_a) {
14332
14359
  id: "y-axis-".concat(axis.TagId),
14333
14360
  type: "linear",
14334
14361
  display: axis.IsVisible,
14335
- scaleLabel: {
14362
+ title: {
14336
14363
  display: true,
14337
- labelString: axis.TagName,
14364
+ text: axis.TagName,
14338
14365
  },
14339
14366
  min: axis.IsAutoScale ? undefined : min,
14340
14367
  max: axis.IsAutoScale ? undefined : max,
@@ -14400,13 +14427,18 @@ var TrendingChart = function (_a) {
14400
14427
  });
14401
14428
  }, 1000));
14402
14429
  var _e = useState(false), chartShouldInitCursors = _e[0], setChartShouldInitCursors = _e[1];
14403
- var verticalLinePlugin = useGetVerticalLinePlugin(setChartArea, setLineTabCoords);
14430
+ var memoizedSetChartArea = useCallback(function (area) { return setChartArea(area); }, []);
14431
+ var memoizedSetLineTabCoords = useCallback(function (coords) { return setLineTabCoords(coords); }, []);
14432
+ var verticalLinePlugin = useGetVerticalLinePlugin(memoizedSetChartArea, memoizedSetLineTabCoords);
14404
14433
  var xAxisDatePlugin = useXAxisDatePlugin();
14405
14434
  var yAxisPlugin = useYAxisPlugin();
14435
+ var plugins = useMemo(function () { return [verticalLinePlugin, xAxisDatePlugin, yAxisPlugin]; }, [verticalLinePlugin, xAxisDatePlugin, yAxisPlugin]);
14406
14436
  var seriesVsTags = useRef({});
14407
14437
  useEffect(function () {
14438
+ // Only run debounced update when series data actually changes
14439
+ // Display property changes (color, visibility, scales) are handled by immediate useEffects
14408
14440
  debouncedUpdateChartBasedOnData.current();
14409
- }, [state.graphShouldUpdate, series]);
14441
+ }, [series]); // Removed state.graphShouldUpdate to prevent running on display-only changes
14410
14442
  useEffect(function () {
14411
14443
  if (chartShouldInitCursors) {
14412
14444
  if (chartRef.current) {
@@ -14415,6 +14447,85 @@ var TrendingChart = function (_a) {
14415
14447
  }
14416
14448
  }
14417
14449
  }, [chartShouldInitCursors, state.graphShouldUpdate]);
14450
+ // Update colors and visibility immediately without debounce
14451
+ useEffect(function () {
14452
+ setChartData(function (prevData) {
14453
+ if (!prevData.datasets || !prevData.datasets.length)
14454
+ return prevData;
14455
+ var updatedDatasets = prevData.datasets.map(function (dataset) {
14456
+ var tag = viewTags[dataset.tagId];
14457
+ if (tag) {
14458
+ return __assign(__assign({}, dataset), { borderColor: tag.viewTag.Color, hidden: !tag.viewTag.IsVisible });
14459
+ }
14460
+ return dataset;
14461
+ });
14462
+ return __assign(__assign({}, prevData), { datasets: updatedDatasets });
14463
+ });
14464
+ }, [viewTags, setChartData]);
14465
+ // Update Y-axis scales immediately when AutoScale or Min/Max changes
14466
+ useEffect(function () {
14467
+ var axes = [];
14468
+ Object.values(viewTags).forEach(function (_a) {
14469
+ var tag = _a.viewTag;
14470
+ var existingAxis = axes.findIndex(function (existingTag) {
14471
+ return areRangesSimilar(existingTag, tag);
14472
+ });
14473
+ if (existingAxis === -1) {
14474
+ axes.push(tag);
14475
+ }
14476
+ });
14477
+ var yAxesConfig = axes.map(function (axis) {
14478
+ var min = Number(axis.MinScale);
14479
+ var max = Number(axis.MaxScale);
14480
+ if (!min && !max) {
14481
+ max = 1;
14482
+ }
14483
+ return {
14484
+ id: "y-axis-".concat(axis.TagId),
14485
+ type: "linear",
14486
+ display: axis.IsVisible,
14487
+ title: {
14488
+ display: true,
14489
+ text: axis.TagName,
14490
+ },
14491
+ min: axis.IsAutoScale ? undefined : min,
14492
+ max: axis.IsAutoScale ? undefined : max,
14493
+ suggestedMin: axis.IsAutoScale ? undefined : min,
14494
+ suggestedMax: axis.IsAutoScale ? undefined : max,
14495
+ stepSize: 10,
14496
+ grid: {
14497
+ display: true,
14498
+ },
14499
+ afterUpdate: function (a) {
14500
+ var chart = a.chart;
14501
+ var keys = Object.keys(chart.scales).filter(function (sc) { return sc !== "x"; });
14502
+ var counterOfDefaultsScales = 0;
14503
+ if (keys.length > 1) {
14504
+ for (var scaleKey in chart.scales) {
14505
+ var scale = chart.scales[scaleKey];
14506
+ if (scale.max === 1 && scale.min === 0) {
14507
+ chart.scales[scaleKey].display = false;
14508
+ chart.scales[scaleKey].options.display = false;
14509
+ counterOfDefaultsScales++;
14510
+ }
14511
+ else {
14512
+ chart.scales[scaleKey].display = true;
14513
+ chart.scales[scaleKey].options.display = true;
14514
+ }
14515
+ if (counterOfDefaultsScales === keys.length) {
14516
+ chart.scales[keys[0]].display = true;
14517
+ chart.scales[keys[0]].options.display = true;
14518
+ }
14519
+ }
14520
+ }
14521
+ },
14522
+ };
14523
+ });
14524
+ setChartOptions(function (prevOptions) { return (__assign(__assign({}, prevOptions), { scales: __assign({ x: __assign({}, prevOptions.scales.x) }, yAxesConfig.reduce(function (acc, cur) {
14525
+ var _a;
14526
+ return (__assign(__assign({}, acc), (_a = {}, _a[cur.id] = cur, _a)));
14527
+ }, {})) })); });
14528
+ }, [viewTags, setChartOptions]);
14418
14529
  return (React__default.createElement(Paper, { style: { height: "100%", position: "relative" } },
14419
14530
  lineTabCoords && chartArea ? (React__default.createElement(DraggableLineControl, { color: "red", chartArea: chartArea, initialLeft: lineTabCoords === null || lineTabCoords === void 0 ? void 0 : lineTabCoords.x1, otherLineCoord: lineTabCoords === null || lineTabCoords === void 0 ? void 0 : lineTabCoords.x2, onUpdate: function (newLeft) {
14420
14531
  setLineTabCoords(function (prevCoords) {
@@ -14434,11 +14545,12 @@ var TrendingChart = function (_a) {
14434
14545
  chartRef.current.secondLineX = newLeft;
14435
14546
  debouncedUpdateChart.current();
14436
14547
  } })) : null,
14437
- React__default.createElement(Line, { ref: chartRef, data: chartData, options: chartOptions, plugins: [verticalLinePlugin, xAxisDatePlugin, yAxisPlugin] })));
14438
- };
14548
+ React__default.createElement(Line, { ref: chartRef, data: chartData, options: chartOptions, plugins: plugins })));
14549
+ });
14550
+ TrendingChart.displayName = "TrendingChart";
14439
14551
 
14440
14552
  Chart.register(CategoryScale, LinearScale, PointElement, LineElement, Title, Tooltip$1, Legend, TimeScale, zoomPlugin);
14441
- var Trending = function (_a) {
14553
+ var Trending = React__default.memo(function (_a) {
14442
14554
  _a.title; var autoRefresh = _a.autoRefresh, setAutoRefresh = _a.setAutoRefresh;
14443
14555
  var _b = useTrendingContext(), state = _b.state, _c = _b.state, viewTags = _c.viewTags; _c.shouldRefetchSeries;
14444
14556
  var _d = useState(""), error = _d[0], setError = _d[1];
@@ -14496,7 +14608,8 @@ var Trending = function (_a) {
14496
14608
  React__default.createElement(CircularProgress, { size: "2rem" }))),
14497
14609
  React__default.createElement(TableComponent, { chartData: chartData, cursorData: cursorData, viewTagForDelete: viewTagForDelete, setViewTagForDelete: setViewTagForDelete, selectedRowTagId: selectedRowTagId, setSelectedRowTagId: setSelectedRowTagId }))),
14498
14610
  React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(""); }, title: "ERROR" })));
14499
- };
14611
+ });
14612
+ Trending.displayName = "Trending";
14500
14613
 
14501
14614
  var searchViews = function (_a) {
14502
14615
  var _b = _a.autoRefresh, autoRefresh = _b === void 0 ? false : _b;
@@ -14530,23 +14643,30 @@ var searchSeries = function (_a) {
14530
14643
  var start = _a.start, end = _a.end, tagIds = _a.tagIds, _b = _a.autoRefresh, autoRefresh = _b === void 0 ? false : _b;
14531
14644
  return useQuery({
14532
14645
  queryKey: ["series", start, end, tagIds],
14533
- queryFn: function () { return __awaiter(void 0, void 0, void 0, function () {
14646
+ queryFn: function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {
14534
14647
  var resp, error_1;
14535
- return __generator(this, function (_a) {
14536
- switch (_a.label) {
14648
+ var signal = _b.signal;
14649
+ return __generator(this, function (_c) {
14650
+ switch (_c.label) {
14537
14651
  case 0:
14538
- _a.trys.push([0, 2, , 3]);
14652
+ _c.trys.push([0, 2, , 3]);
14539
14653
  return [4 /*yield*/, axios.post("/series?nodeName=null", {
14540
14654
  start: start,
14541
14655
  end: end ? end : new Date().getTime(),
14542
14656
  tagIds: tagIds,
14543
14657
  sampleCount: 1000,
14658
+ }, {
14659
+ signal: signal,
14544
14660
  })];
14545
14661
  case 1:
14546
- resp = _a.sent();
14662
+ resp = _c.sent();
14547
14663
  return [2 /*return*/, get(resp, "data", [])];
14548
14664
  case 2:
14549
- error_1 = _a.sent();
14665
+ error_1 = _c.sent();
14666
+ // Ignore abort errors
14667
+ if (axios.isCancel(error_1) || error_1.name === "AbortError") {
14668
+ return [2 /*return*/, []];
14669
+ }
14550
14670
  throw new Error(getError(error_1));
14551
14671
  case 3: return [2 /*return*/];
14552
14672
  }
@@ -14842,8 +14962,10 @@ var useTableData$1 = function (_a) {
14842
14962
  field: "AssetName",
14843
14963
  headerName: "Asset",
14844
14964
  sortable: true,
14845
- flex: 1,
14965
+ flex: 2,
14846
14966
  minWidth: 70,
14967
+ wrapText: true,
14968
+ autoHeight: true,
14847
14969
  },
14848
14970
  ]
14849
14971
  : []), true), [
@@ -16876,8 +16998,10 @@ var useTableData = function (_a) {
16876
16998
  field: "AssetName",
16877
16999
  headerName: "Asset",
16878
17000
  sortable: true,
16879
- flex: 1,
17001
+ flex: 2,
16880
17002
  minWidth: 70,
17003
+ wrapText: true,
17004
+ autoHeight: true,
16881
17005
  },
16882
17006
  ]
16883
17007
  : []), true), [
@@ -17638,5 +17762,5 @@ var areaSelector = /*#__PURE__*/Object.freeze({
17638
17762
  AreaSelector: AreaSelector
17639
17763
  });
17640
17764
 
17641
- export { Account, AssetProvider, AssetTreePicker, AuthContext, AuthProvider, BarChartControl, ButtonWithLoading, ChangePassword, CheckBoxControl, Configuration$1 as Configuration, ContextMenu$1 as ContextMenu, ContextMenuMESFProvider, CurrencyFormatter, DataGridControl, DateFormatter, DateTimeFormatter, ErrorModal, FetchError, FilterPanel, GenericPanel, GenericTable, GetCrewColor, GetShiftColor, HelmetDexteel, IntegerFormatter, LogbookSettingsInitialState, LogbookSettingsProvider, Login, Logout, LongFilterPanel, MESApiService, MESFLogbookEntry, MESFLogbookReport, MESFMain, MESSAGE_API, MESSAGE_ERRORS, MasterDetailPanel, MesfModal, ModalTreeFilterControl, MultipleSelectorControl, NumberFormatter, ShiftDayNavigatorControl, ShiftNavigatorProvider, ShiftPeriodNavigatorControl, SimplePasswordControl, SimpleSelectorControl, TimeAndUserMenu, TimeFormatter, TimeService, TreePickerControl, TreePickerControlV2, TrendingsPage, USER_LABELS, UTLSettingsProvider, UserProvider, axiosInstance, deleteUser, dxtServerTimeZone, dxtToLocalServerTime, dxtToUTC, formatNumber, getAuthTypes, getCrewStyle, getDataUser, getError, getMomentTz, getShiftByParameters, getShiftStyle, getShiftsRangeByParameters, getTokenFromLS, getUserPermissionsFromAPI, getUsers, logbookNavbar, logbookRoutesMESF, renewToken, routeLogbookEntry, routeLogbookReport, searchAssets, searchSeries, searchTagsTree, searchViewTags, searchViews, setPassword, setProfilesToUser, themeDXT, themeMESF, upsertUser, useAssetContext, useContextMenuMESF, useHasPermission, useHasProfile, useLogbookSettings, useMesfRealtime, useShiftNavigator, useShiftNavigatorManager, useStyles$i as useStyles, useToken, useUTLSettingsContext, useUserContext };
17765
+ export { Account, AssetProvider, AssetTreePicker, AuthContext, AuthProvider, BarChartControl, ButtonWithLoading, ChangePassword, CheckBoxControl, Configuration$1 as Configuration, ContextMenu$1 as ContextMenu, ContextMenuMESFProvider, CreateNewAssetDialog, CurrencyFormatter, DataGridControl, DateFormatter, DateTimeFormatter, ENTRY_INITIAL_VALUES, EditAssetDialog, ErrorModal, FetchError, FilterPanel, GenericPanel, GenericTable, GetCrewColor, GetShiftColor, HelmetDexteel, IntegerFormatter, LogbookSettingsInitialState, LogbookSettingsProvider, Login, Logout, LongFilterPanel, MESApiService, MESFLogbookEntry, MESFLogbookReport, MESFMain, MESSAGE_API, MESSAGE_ERRORS, MasterDetailPanel, MesfModal, ModalTreeFilterControl, MultipleSelectorControl, NumberFormatter, RemoveAssetDialog, ShiftDayNavigatorControl, ShiftNavigatorProvider, ShiftPeriodNavigatorControl, SimplePasswordControl, SimpleSelectorControl, TimeAndUserMenu, TimeFormatter, TimeService, TreePickerControl, TreePickerControlV2, TrendingsPage, USER_LABELS, UTLSettingsProvider, UserProvider, axiosInstance, deleteUser, dxtServerTimeZone, dxtToLocalServerTime, dxtToUTC, formatNumber, getAuthTypes, getCrewStyle, getDataUser, getEntries, getError, getMomentTz, getShiftByParameters, getShiftStyle, getShiftsRangeByParameters, getTokenFromLS, getUserPermissionsFromAPI, getUsers, logbookNavbar, logbookRoutesMESF, renewToken, routeLogbookEntry, routeLogbookReport, searchAssets, searchSeries, searchTagsTree, searchViewTags, searchViews, setPassword, setProfilesToUser, themeDXT, themeMESF, upsertUser, useAssetContext, useContextMenuMESF, useHasPermission, useHasProfile, useLogbookSettings, useMesfRealtime, useShiftNavigator, useShiftNavigatorManager, useStyles$i as useStyles, useToken, useUTLSettingsContext, useUserContext };
17642
17766
  //# sourceMappingURL=index.esm.js.map