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