104 lines
3.0 KiB
Dart
104 lines
3.0 KiB
Dart
class Statistiche {
|
|
final int totaleAllarmi;
|
|
final int totaleSiti;
|
|
final int allarmiAperti;
|
|
final int allarmiRecenti7gg;
|
|
|
|
// Per severità
|
|
final int allarmiCritical;
|
|
final int allarmiWarning;
|
|
final int allarmiInfo;
|
|
|
|
// Per stato
|
|
final int allarmiNuovo;
|
|
final int allarmiInGestione;
|
|
final int allarmiRisolto;
|
|
|
|
// Siti per tipo
|
|
final int sitiPonte;
|
|
final int sitiGalleria;
|
|
final int sitiDiga;
|
|
final int sitiFrana;
|
|
final int sitiVersante;
|
|
final int sitiEdificio;
|
|
|
|
Statistiche({
|
|
required this.totaleAllarmi,
|
|
required this.totaleSiti,
|
|
required this.allarmiAperti,
|
|
required this.allarmiRecenti7gg,
|
|
required this.allarmiCritical,
|
|
required this.allarmiWarning,
|
|
required this.allarmiInfo,
|
|
required this.allarmiNuovo,
|
|
required this.allarmiInGestione,
|
|
required this.allarmiRisolto,
|
|
required this.sitiPonte,
|
|
required this.sitiGalleria,
|
|
required this.sitiDiga,
|
|
required this.sitiFrana,
|
|
required this.sitiVersante,
|
|
required this.sitiEdificio,
|
|
});
|
|
|
|
factory Statistiche.fromJson(Map<String, dynamic> json) {
|
|
return Statistiche(
|
|
totaleAllarmi: json['totale_allarmi'] as int,
|
|
totaleSiti: json['totale_siti'] as int,
|
|
allarmiAperti: json['allarmi_aperti'] as int,
|
|
allarmiRecenti7gg: json['allarmi_recenti_7gg'] as int,
|
|
allarmiCritical: json['allarmi_critical'] as int,
|
|
allarmiWarning: json['allarmi_warning'] as int,
|
|
allarmiInfo: json['allarmi_info'] as int,
|
|
allarmiNuovo: json['allarmi_nuovo'] as int,
|
|
allarmiInGestione: json['allarmi_in_gestione'] as int,
|
|
allarmiRisolto: json['allarmi_risolto'] as int,
|
|
sitiPonte: json['siti_ponte'] as int,
|
|
sitiGalleria: json['siti_galleria'] as int,
|
|
sitiDiga: json['siti_diga'] as int,
|
|
sitiFrana: json['siti_frana'] as int,
|
|
sitiVersante: json['siti_versante'] as int,
|
|
sitiEdificio: json['siti_edificio'] as int,
|
|
);
|
|
}
|
|
|
|
int get totaleSeverita => allarmiCritical + allarmiWarning + allarmiInfo;
|
|
int get totaleStato => allarmiNuovo + allarmiInGestione + allarmiRisolto;
|
|
|
|
double get percentualeCritici =>
|
|
totaleAllarmi > 0 ? (allarmiCritical / totaleAllarmi) * 100 : 0;
|
|
double get percentualeAperti =>
|
|
totaleAllarmi > 0 ? (allarmiAperti / totaleAllarmi) * 100 : 0;
|
|
}
|
|
|
|
class AllarmePerGiorno {
|
|
final DateTime data;
|
|
final int count;
|
|
|
|
AllarmePerGiorno({
|
|
required this.data,
|
|
required this.count,
|
|
});
|
|
|
|
factory AllarmePerGiorno.fromJson(Map<String, dynamic> json) {
|
|
return AllarmePerGiorno(
|
|
data: DateTime.parse(json['data'] as String),
|
|
count: json['count'] as int,
|
|
);
|
|
}
|
|
}
|
|
|
|
class AllarmiPerGiornoResponse {
|
|
final List<AllarmePerGiorno> dati;
|
|
|
|
AllarmiPerGiornoResponse({required this.dati});
|
|
|
|
factory AllarmiPerGiornoResponse.fromJson(Map<String, dynamic> json) {
|
|
return AllarmiPerGiornoResponse(
|
|
dati: (json['dati'] as List)
|
|
.map((item) => AllarmePerGiorno.fromJson(item as Map<String, dynamic>))
|
|
.toList(),
|
|
);
|
|
}
|
|
}
|