add some new features
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
|
||||
import '../helper/storage_keys.dart';
|
||||
import '../models/bauteil_auswertung_model.dart';
|
||||
import '../models/bauteil_model.dart';
|
||||
import '../services/get_storage_services.dart';
|
||||
|
||||
class BauteilAuswertungController extends GetxController {
|
||||
final storage = Get.find<GetStorageService>();
|
||||
final bauteile = <BauteilModel>[].obs;
|
||||
final zeitraum = BauteilZeitraum.monat.obs;
|
||||
final scrollController = ScrollController();
|
||||
|
||||
@override
|
||||
void onInit() {
|
||||
super.onInit();
|
||||
final entries = storage
|
||||
.getModelList(StorageKeys.bauteile)
|
||||
.map(BauteilModel.fromJson)
|
||||
.toList();
|
||||
entries.sort((a, b) {
|
||||
final datum = b.erstelltAm.compareTo(a.erstelltAm);
|
||||
return datum == 0 ? a.bauteilId.compareTo(b.bauteilId) : datum;
|
||||
});
|
||||
bauteile.assignAll(entries);
|
||||
}
|
||||
|
||||
double get gesamtsumme => BauteilAuswertungsGruppe.summeFuer(bauteile);
|
||||
int get ohnePreis => bauteile
|
||||
.where((item) => !BauteilAuswertungsGruppe.preisBekannt(item))
|
||||
.length;
|
||||
|
||||
List<BauteilAuswertungsGruppe> get gruppen {
|
||||
final auswahl = zeitraum.value;
|
||||
final gruppiert = <DateTime, List<BauteilModel>>{};
|
||||
for (final bauteil in bauteile) {
|
||||
final datum = bauteil.erstelltAm.toLocal();
|
||||
final beginn = switch (auswahl) {
|
||||
BauteilZeitraum.jahr => DateTime(datum.year),
|
||||
BauteilZeitraum.monat => DateTime(datum.year, datum.month),
|
||||
BauteilZeitraum.tag => DateTime(datum.year, datum.month, datum.day),
|
||||
};
|
||||
gruppiert.putIfAbsent(beginn, () => []).add(bauteil);
|
||||
}
|
||||
final zeitpunkte = gruppiert.keys.toList()..sort((a, b) => b.compareTo(a));
|
||||
return zeitpunkte
|
||||
.map(
|
||||
(beginn) => BauteilAuswertungsGruppe(
|
||||
beginn: beginn,
|
||||
bauteile: List.unmodifiable(gruppiert[beginn]!),
|
||||
),
|
||||
)
|
||||
.toList();
|
||||
}
|
||||
|
||||
String gruppenTitel(DateTime beginn) => switch (zeitraum.value) {
|
||||
BauteilZeitraum.jahr => 'Jahr ${beginn.year}',
|
||||
BauteilZeitraum.monat => 'Monat ${DateFormat('MM.yyyy').format(beginn)}',
|
||||
BauteilZeitraum.tag => DateFormat('dd.MM.yyyy').format(beginn),
|
||||
};
|
||||
|
||||
void waehleZeitraum(BauteilZeitraum auswahl) {
|
||||
if (auswahl == zeitraum.value) return;
|
||||
if (scrollController.hasClients) scrollController.jumpTo(0);
|
||||
zeitraum.value = auswahl;
|
||||
}
|
||||
|
||||
@override
|
||||
void onClose() {
|
||||
scrollController.dispose();
|
||||
super.onClose();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user