Skip to content

Commit ccd8f70

Browse files
authored
Merge pull request #2232 from Kobzol/status-page-fix
Fix duration formatting on the status page
2 parents 9b65696 + 00cc79d commit ccd8f70

File tree

6 files changed

+23
-19
lines changed

6 files changed

+23
-19
lines changed

site/frontend/src/pages/status/page.vue

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import {getJson} from "../../utils/requests";
33
import {STATUS_DATA_URL} from "../../urls";
44
import {withLoading} from "../../utils/loading";
5-
import {formatDuration} from "../../utils/formatting";
5+
import {formatSecondsAsDuration} from "../../utils/formatting";
66
import {computed, ref, Ref} from "vue";
77
import {
88
Artifact,
@@ -275,7 +275,9 @@ loadStatus(loading);
275275
<td>
276276
{{ format(currentRun.expected_end, "HH:mm") }}
277277
</td>
278-
<td>{{ timeLeft <= 0 ? "?" : formatDuration(timeLeft) }}</td>
278+
<td>
279+
{{ timeLeft <= 0 ? "?" : formatSecondsAsDuration(timeLeft) }}
280+
</td>
279281
</tr>
280282
</tbody>
281283
</table>
@@ -307,11 +309,11 @@ loadStatus(loading);
307309
{{
308310
step.current_progress == 0
309311
? ""
310-
: formatDuration(step.current_progress)
312+
: formatSecondsAsDuration(step.current_progress)
311313
}}
312314
</td>
313315
<td class="aligned">
314-
{{ formatDuration(step.expected_duration) }}
316+
{{ formatSecondsAsDuration(step.expected_duration) }}
315317
</td>
316318
</tr>
317319
</tbody>
@@ -322,7 +324,7 @@ loadStatus(loading);
322324
<div>
323325
Last collection finished at
324326
{{ fromUnixTime(lastFinishedRun.finished_at).toLocaleString() }} ({{
325-
formatDuration(
327+
formatSecondsAsDuration(
326328
differenceInSeconds(
327329
new Date(),
328330
fromUnixTime(lastFinishedRun.finished_at)
@@ -373,7 +375,7 @@ loadStatus(loading);
373375
}}<template v-if="item.end_estimated"> (est.)</template>
374376
</td>
375377
<td v-if="item.duration !== null">
376-
{{ formatDuration(item.duration) }}
378+
{{ formatSecondsAsDuration(item.duration) }}
377379
</td>
378380
<td v-else class="centered">-</td>
379381
<td v-if="item.errors.length > 0">

site/frontend/src/pages/status_new/data.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ export const BenchmarkRequestArtifactsReadyStr = "artifacts_ready";
55
type BenchmarkRequestStatusComplete = {
66
state: typeof BenchmarkRequestCompleteStr;
77
completedAt: string;
8-
duration: number; // time in milliseconds
8+
duration_s: number;
99
};
1010

1111
type BenchmarkRequestStatusInProgress = {

site/frontend/src/pages/status_new/page.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {h, ref, Ref} from "vue";
44
import {getJson} from "../../utils/requests";
55
import {STATUS_DATA_NEW_URL} from "../../urls";
66
import {withLoading} from "../../utils/loading";
7-
import {formatDuration} from "../../utils/formatting";
7+
import {formatSecondsAsDuration} from "../../utils/formatting";
88
import {
99
StatusResponse,
1010
CollectorJobMap,
@@ -45,7 +45,7 @@ function getCreatedAt(request: BenchmarkRequest): string {
4545
4646
function getDuration(request: BenchmarkRequest): string {
4747
if (request.status.state == BenchmarkRequestCompleteStr) {
48-
return formatDuration(request.status.duration);
48+
return formatSecondsAsDuration(request.status.duration_s);
4949
}
5050
return "";
5151
}

site/frontend/src/utils/formatting.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
1-
export function formatDuration(milliseconds: number): string {
2-
let seconds = milliseconds / 1000;
3-
let secs = seconds % 60;
4-
let mins = Math.trunc(seconds / 60);
1+
// `time` has to be in seconds
2+
export function formatSecondsAsDuration(time: number): string {
3+
let seconds = time % 60;
4+
let mins = Math.trunc(time / 60);
55
let hours = Math.trunc(mins / 60);
66
mins -= hours * 60;
77

88
let s = "";
99
if (hours > 0) {
1010
s = `${hours}h ${mins < 10 ? "0" + mins : mins}m ${
11-
secs < 10 ? "0" + secs : secs
11+
seconds < 10 ? "0" + seconds : seconds
1212
}s`;
1313
} else {
14-
s = `${mins < 10 ? " " + mins : mins}m ${secs < 10 ? "0" + secs : secs}s`;
14+
s = `${mins < 10 ? " " + mins : mins}m ${
15+
seconds < 10 ? "0" + seconds : seconds
16+
}s`;
1517
}
1618
return s;
1719
}

site/src/api.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -401,7 +401,7 @@ pub mod status_new {
401401
pub struct BenchmarkRequestStatusUi {
402402
pub state: String,
403403
pub completed_at: Option<DateTime<Utc>>,
404-
pub duration: Option<u32>,
404+
pub duration_s: Option<u64>,
405405
}
406406

407407
#[derive(Serialize, Debug)]

site/src/request_handlers/status_page_new.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,18 @@ use database::{
1212
};
1313

1414
fn benchmark_request_status_to_ui(status: BenchmarkRequestStatus) -> BenchmarkRequestStatusUi {
15-
let (completed_at, duration) = match status {
15+
let (completed_at, duration_s) = match status {
1616
BenchmarkRequestStatus::Completed {
1717
duration,
1818
completed_at,
19-
} => (Some(completed_at), u32::try_from(duration.as_millis()).ok()),
19+
} => (Some(completed_at), Some(duration.as_secs())),
2020
_ => (None, None),
2121
};
2222

2323
BenchmarkRequestStatusUi {
2424
state: status.as_str().to_owned(),
2525
completed_at,
26-
duration,
26+
duration_s,
2727
}
2828
}
2929

0 commit comments

Comments
 (0)