diff --git a/web-console/src/dialogs/supervisor-table-action-dialog/supervisor-statistics-table/supervisor-statistics-table.tsx b/web-console/src/dialogs/supervisor-table-action-dialog/supervisor-statistics-table/supervisor-statistics-table.tsx index d0c9ee8756ce..96d4f05333ad 100644 --- a/web-console/src/dialogs/supervisor-table-action-dialog/supervisor-statistics-table/supervisor-statistics-table.tsx +++ b/web-console/src/dialogs/supervisor-table-action-dialog/supervisor-statistics-table/supervisor-statistics-table.tsx @@ -76,16 +76,18 @@ export const SupervisorStatisticsTable = React.memo(function SupervisorStatistic const formatNumber = isRate ? formatRate : formatInteger; const formatData = isRate ? formatByteRate : formatBytes; - const bytes = c.processedBytes ? ` (${formatData(c.processedBytes)})` : ''; - return ( + return c.processedBytes ? (
-
{`Processed: ${formatNumber(c.processed)}${bytes}`}
+
{`Input: ${formatData(c.processedBytes)}`}
+ {Boolean(c.processed) &&
{`Processed: ${formatNumber(c.processed)}`}
} {Boolean(c.processedWithError) && ( -
Processed with error: {formatNumber(c.processedWithError)}
+
{`Processed with error: ${formatNumber(c.processedWithError)}`}
)} - {Boolean(c.thrownAway) &&
Thrown away: {formatNumber(c.thrownAway)}
} - {Boolean(c.unparseable) &&
Unparseable: {formatNumber(c.unparseable)}
} + {Boolean(c.thrownAway) &&
{`Thrown away: ${formatNumber(c.thrownAway)}`}
} + {Boolean(c.unparseable) &&
{`Unparseable: ${formatNumber(c.unparseable)}`}
}
+ ) : ( +
No activity
); } diff --git a/web-console/src/views/supervisors-view/supervisors-view.tsx b/web-console/src/views/supervisors-view/supervisors-view.tsx index 75a0e9482f57..0b1bd9a19d29 100644 --- a/web-console/src/views/supervisors-view/supervisors-view.tsx +++ b/web-console/src/views/supervisors-view/supervisors-view.tsx @@ -875,19 +875,25 @@ export class SupervisorsView extends React.PureComponent< const c = getTotalSupervisorStats(value, statsKey, activeTaskIds); const seconds = getRowStatsKeySeconds(statsKey); + const issues = + (c.processedWithError || 0) + (c.thrownAway || 0) + (c.unparseable || 0); const totalLabel = `Total (past ${statsKey}): `; - const bytes = c.processedBytes ? ` (${formatByteRate(c.processedBytes)})` : ''; - return ( + return issues ? (
{`Processed: ${formatRate(c.processed)}${bytes}`}
+ data-tooltip={`${totalLabel}${formatBytes(c.processedBytes * seconds)}`} + >{`Input: ${formatByteRate(c.processedBytes)}`}
+ {Boolean(c.processed) && ( +
{`Processed: ${formatRate(c.processed)}`}
+ )} {Boolean(c.processedWithError) && (
Processed with error: {formatRate(c.processedWithError)}
@@ -895,7 +901,7 @@ export class SupervisorsView extends React.PureComponent< {Boolean(c.thrownAway) && (
Thrown away: {formatRate(c.thrownAway)}
@@ -903,12 +909,22 @@ export class SupervisorsView extends React.PureComponent< {Boolean(c.unparseable) && (
Unparseable: {formatRate(c.unparseable)}
)} + ) : c.processedBytes ? ( +
{`Processed: ${formatRate(c.processed)} (${formatByteRate( + c.processedBytes, + )})`}
+ ) : ( +
No activity
); }, show: visibleColumns.shown('Stats'),