From 31e7315dfdede9950ce0b4bd0c7a59403f10d8d1 Mon Sep 17 00:00:00 2001 From: Jeremy Clements Date: Wed, 5 Jul 2023 16:33:25 -0400 Subject: [PATCH] HPCC-29005 ECL Watch DFU workunit list should show timings Signed-off-by: Jeremy Clements --- esp/src/eclwatch/GetDFUWorkunitsWidget.js | 27 +++++++++++++-- .../components/DFUWorkunitDetails.tsx | 1 + esp/src/src-react/components/DFUWorkunits.tsx | 33 +++++++++++++++---- esp/src/src/nls/hpcc.ts | 2 ++ 4 files changed, 54 insertions(+), 9 deletions(-) diff --git a/esp/src/eclwatch/GetDFUWorkunitsWidget.js b/esp/src/eclwatch/GetDFUWorkunitsWidget.js index 5db8915d29d..ee3656b7968 100644 --- a/esp/src/eclwatch/GetDFUWorkunitsWidget.js +++ b/esp/src/eclwatch/GetDFUWorkunitsWidget.js @@ -368,10 +368,13 @@ define([ initWorkunitsGrid: function () { var context = this; + var filter = this.filter.toObject(); + filter.includeTimings = true; + filter.includeTransferRate = true; var store = this.params.searchResults ? this.params.searchResults : new ESPDFUWorkunit.CreateWUQueryStore(); this.workunitsGrid = new declare([ESPUtil.Grid(true, true, false, false, "GetDFUWorkunitsWidget")])({ store: store, - query: this.filter.toObject(), + query: filter, columns: { col1: selector({ width: 27, @@ -418,7 +421,24 @@ define([ domClass.add(node, "justify-right"); node.innerText = Utility.valueCleanUp(object.PercentDone); } + }, + TimeStarted: { label: this.i18n.TimeStarted, width: 150, sortable: true }, + TimeStopped: { label: nlsHPCC.TimeStopped, width: 150, sortable: true }, + KbPerSec: { + label: nlsHPCC.TransferRate, width: 120, + renderCell: function (object, value, node, options) { + node.innerText = Utility.convertedSize(object.KbPerSec * 1024) + " / sec"; + } + }, + /* + // KbPerSecAve seems to never be different than KbPerSec at the moment, see HPCC-29894 + KbPerSecAve: { + label: nlsHPCC.TransferRateAvg, width: 90, + renderCell: function (object, value, node, options) { + node.innerText = Utility.convertedSize(object.KbPerSecAve * 1024) + " / sec"; + } } + */ } }, this.id + "WorkunitsGrid"); @@ -459,7 +479,10 @@ define([ }, refreshGrid: function (clearSelection) { - this.workunitsGrid.set("query", this.filter.toObject()); + var filter = this.filter.toObject(); + filter.includeTimings = true; + filter.includeTransferRate = true; + this.workunitsGrid.set("query", filter); if (clearSelection) { this.workunitsGrid.clearSelection(); } diff --git a/esp/src/src-react/components/DFUWorkunitDetails.tsx b/esp/src/src-react/components/DFUWorkunitDetails.tsx index 3251a832c84..5b28af9388b 100644 --- a/esp/src/src-react/components/DFUWorkunitDetails.tsx +++ b/esp/src/src-react/components/DFUWorkunitDetails.tsx @@ -143,6 +143,7 @@ export const DFUWorkunitDetails: React.FunctionComponent = ({ }), isProtected: { headerIcon: "LockSolid", - width: 25, + width: 18, sortable: false, formatter: React.useCallback(function (_protected) { if (_protected === true) { @@ -103,7 +105,7 @@ export const DFUWorkunits: React.FunctionComponent = ({ }, ID: { label: nlsHPCC.ID, - width: 180, + width: 130, formatter: React.useCallback(function (ID, idx) { const wu = ESPDFUWorkunit.Get(ID); return <> @@ -115,7 +117,7 @@ export const DFUWorkunits: React.FunctionComponent = ({ }, Command: { label: nlsHPCC.Type, - width: 117, + width: 110, formatter: React.useCallback(function (command) { if (command in FileSpray.CommandMessages) { return FileSpray.CommandMessages[command]; @@ -124,15 +126,32 @@ export const DFUWorkunits: React.FunctionComponent = ({ }, []) }, User: { label: nlsHPCC.Owner, width: 90 }, - JobName: { label: nlsHPCC.JobName, width: 500 }, - ClusterName: { label: nlsHPCC.Cluster, width: 126 }, - StateMessage: { label: nlsHPCC.State, width: 72 }, + JobName: { label: nlsHPCC.JobName, width: 220 }, + ClusterName: { label: nlsHPCC.Cluster, width: 70 }, + StateMessage: { label: nlsHPCC.State, width: 70 }, PCTDone: { - label: nlsHPCC.PctComplete, width: 90, sortable: true, + label: nlsHPCC.PctComplete, width: 80, sortable: true, formatter: React.useCallback(function (value, row) { return Utility.valueCleanUp(row.PercentDone); }, []) + }, + TimeStarted: { label: nlsHPCC.TimeStarted, width: 100, sortable: true }, + TimeStopped: { label: nlsHPCC.TimeStopped, width: 100, sortable: true }, + KbPerSec: { + label: nlsHPCC.TransferRate, width: 90, + formatter: React.useCallback(function (value, row) { + return Utility.convertedSize(row.KbPerSec * 1024) + " / sec"; + }, []) + }, + /* + // KbPerSecAve seems to never be different than KbPerSec at the moment, see HPCC-29894 + KbPerSecAve: { + label: nlsHPCC.TransferRateAvg, width: 90, + formatter: React.useCallback(function (value, row) { + return Utility.convertedSize(row.KbPerSecAve * 1024) + " / sec"; + }, []) } + */ } }); diff --git a/esp/src/src/nls/hpcc.ts b/esp/src/src/nls/hpcc.ts index ec32ae5e08a..3b4309dd400 100644 --- a/esp/src/src/nls/hpcc.ts +++ b/esp/src/src/nls/hpcc.ts @@ -992,6 +992,8 @@ export = { TotalSize: "Total Size", TotalClusterTime: "Total Cluster Time", ToTime: "To Time", + TransferRate: "Transfer Rate", + TransferRateAvg: "Transfer Rate (Avg)", TransitionGuide: "Transition Guide", Text: "Text", Tree: "Tree",