implement avg buildtime field in header
This commit is contained in:
@ -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()),
|
||||
];
|
||||
}
|
||||
|
||||
|
@ -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,
|
||||
);
|
||||
|
@ -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,
|
||||
|
@ -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(),
|
||||
),
|
||||
],
|
||||
|
Reference in New Issue
Block a user