Files
flutter_tank_web_app/lib/controller/graph_controller.dart
T

64 lines
1.7 KiB
Dart

import 'package:get/get.dart';
//import '../models/tank_model.dart';
import '../models/tank_guru_directus_model.dart';
class GraphController extends GetxController {
final listTankModel = <TankGuruDirectusModel>[].obs;
final sumYearKm = 0.0.obs;
final sumYearLiters = 0.0.obs;
final sumYearPrice = 0.0.obs;
final averagePricePerLiter = 0.0.obs;
final szTachostand = ''.obs;
@override
void onInit() {
if (Get.arguments != null) {
var args = Get.arguments as List<TankGuruDirectusModel>;
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.tankDate!)!;
var dateB = DateTime.tryParse(b.tankDate!)!;
return dateA.compareTo(dateB);
});
var firstOdometer = double.tryParse(listTankModel.first.odometer!) ?? 0.0;
var lastOdometer = double.tryParse(listTankModel.last.odometer!) ?? 0.0;
sumYearKm.value = lastOdometer - firstOdometer;
szTachostand.value = listTankModel.last.odometer!;
double totalLiters = 0.0;
double totalPrice = 0.0;
for (var tank in listTankModel) {
totalLiters += double.tryParse(tank.liter!) ?? 0.0;
totalPrice += double.tryParse(tank.szPriceTotal!) ?? 0.0;
}
sumYearLiters.value = totalLiters;
sumYearPrice.value = totalPrice;
averagePricePerLiter.value = totalPrice / totalLiters;
}
}