add graph_view
This commit is contained in:
60
lib/controller/graph_controller.dart
Normal file
60
lib/controller/graph_controller.dart
Normal file
@@ -0,0 +1,60 @@
|
||||
import 'package:flutter_tank_web_app/models/tank_model.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
class GraphController extends GetxController {
|
||||
final listTankModel = <TankModel>[].obs;
|
||||
final sumYearKm = 0.0.obs;
|
||||
final sumYearLiters = 0.0.obs;
|
||||
final sumYearPrice = 0.0.obs;
|
||||
final averagePricePerLiter = 0.0.obs;
|
||||
|
||||
@override
|
||||
void onInit() {
|
||||
if (Get.arguments != null) {
|
||||
var args = Get.arguments as List<TankModel>;
|
||||
listTankModel.addAll(args);
|
||||
_calcSumms();
|
||||
}
|
||||
super.onInit();
|
||||
}
|
||||
|
||||
@override
|
||||
void onReady() {}
|
||||
|
||||
@override
|
||||
void onClose() {}
|
||||
|
||||
// Calculate yearly summaries
|
||||
void _calcSumms() {
|
||||
if (listTankModel.length < 2) {
|
||||
sumYearKm.value = 0.0;
|
||||
sumYearLiters.value = 0.0;
|
||||
sumYearPrice.value = 0.0;
|
||||
return;
|
||||
}
|
||||
|
||||
// Sort by date to calculate km correctly
|
||||
listTankModel.sort((a, b) {
|
||||
var dateA = DateTime.tryParse(a.szDate)!;
|
||||
var dateB = DateTime.tryParse(b.szDate)!;
|
||||
return dateA.compareTo(dateB);
|
||||
});
|
||||
|
||||
var firstOdometer = double.tryParse(listTankModel.first.szOdometer) ?? 0.0;
|
||||
var lastOdometer = double.tryParse(listTankModel.last.szOdometer) ?? 0.0;
|
||||
|
||||
sumYearKm.value = lastOdometer - firstOdometer;
|
||||
|
||||
double totalLiters = 0.0;
|
||||
double totalPrice = 0.0;
|
||||
|
||||
for (var tank in listTankModel) {
|
||||
totalLiters += double.tryParse(tank.szLiters) ?? 0.0;
|
||||
totalPrice += double.tryParse(tank.szPriceTotal) ?? 0.0;
|
||||
}
|
||||
|
||||
sumYearLiters.value = totalLiters;
|
||||
sumYearPrice.value = totalPrice;
|
||||
averagePricePerLiter.value = totalPrice / totalLiters;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user