implement avg buildtime field in header

This commit is contained in:
2024-02-24 21:05:50 +01:00
parent 3108b9a658
commit ed57e14bef
6 changed files with 80 additions and 28 deletions

View File

@ -1,5 +1,6 @@
import 'package:aurcache/components/dashboard/quick_info_tile.dart';
import 'package:aurcache/utils/file_formatter.dart';
import 'package:aurcache/utils/time_formatter.dart';
import 'package:flutter/material.dart';
import '../../constants/color_constants.dart';
@ -61,7 +62,7 @@ class QuickInfoBanner extends StatelessWidget {
color: const Color(0xFF00F260),
icon: Icons.timelapse,
title: "Average Build Time",
subtitle: stats.avg_build_time.toString()),
subtitle: stats.avg_build_time.readableDuration()),
];
}

View File

@ -4,7 +4,8 @@ class Build {
final int pkg_id;
final String version;
final int status;
final int? start_time, end_time;
final DateTime? end_time;
final DateTime start_time;
Build(
{required this.id,
@ -16,12 +17,18 @@ class Build {
required this.status});
factory Build.fromJson(Map<String, dynamic> json) {
final startTime =
DateTime.fromMillisecondsSinceEpoch(json["start_time"] * 1000);
final endTime = json["end_time"] != null
? DateTime.fromMillisecondsSinceEpoch((json["end_time"] as int) * 1000)
: null;
return Build(
id: json["id"] as int,
pkg_id: json["pkg_id"] as int,
status: json["status"] as int,
start_time: json["start_time"] as int?,
end_time: json["end_time"] as int?,
start_time: startTime,
end_time: endTime,
pkg_name: json["pkg_name"] as String,
version: json["version"] as String,
);

View File

@ -2,17 +2,17 @@ class Stats {
final int total_builds,
failed_builds,
avg_queue_wait_time,
avg_build_time,
repo_storage_size,
active_builds,
total_packages;
final Duration avg_build_time;
factory Stats.fromJson(Map<String, dynamic> json) {
return Stats(
total_builds: json["total_builds"] as int,
failed_builds: json["failed_builds"] as int,
avg_queue_wait_time: json["avg_queue_wait_time"] as int,
avg_build_time: json["avg_build_time"] as int,
avg_build_time: Duration(seconds: json["avg_build_time"]),
repo_storage_size: json["repo_storage_size"] as int,
active_builds: json["active_builds"] as int,
total_packages: json["total_packages"] as int,

View File

@ -70,9 +70,6 @@ class _BuildScreenState extends State<BuildScreen> {
}
Widget _buildTopBar(Build buildData, BuildContext context) {
final start_time =
DateTime.fromMillisecondsSinceEpoch((buildData.start_time ?? 0) * 1000);
return Container(
color: secondaryColor,
child: Padding(
@ -117,7 +114,7 @@ class _BuildScreenState extends State<BuildScreen> {
const SizedBox(
width: 10,
),
Text("triggered ${start_time.readableDuration()}")
Text("triggered ${buildData.start_time.readableDuration()}")
],
),
Row(
@ -246,18 +243,12 @@ class _BuildScreenState extends State<BuildScreen> {
title: "Finished",
textRight: buildData.end_time == null
? "Not yet"
: DateTime.fromMillisecondsSinceEpoch(
buildData.end_time! * 1000)
.readableDuration(),
: buildData.end_time!.readableDuration(),
),
SideCard(
title: "Duration",
textRight: (buildData.end_time != null
? DateTime.fromMillisecondsSinceEpoch(
buildData.end_time! * 1000)
: DateTime.now())
.difference(DateTime.fromMillisecondsSinceEpoch(
buildData.start_time! * 1000))
textRight: (buildData.end_time ?? DateTime.now())
.difference(buildData.start_time)
.readableDuration(),
),
],