import 'package:equatable/equatable.dart'; import 'package:flutter/material.dart'; import 'package:syncrow_web/utils/color_manager.dart'; class AirQualityDataModel extends Equatable { const AirQualityDataModel({ required this.date, required this.data, }); final DateTime date; final List data; factory AirQualityDataModel.fromJson(Map json) { return AirQualityDataModel( date: DateTime.parse(json['date'] as String), data: (json['data'] as List) .map((e) => AirQualityPercentageData.fromJson(e as Map)) .toList(), ); } static final Map metricColors = { 'good': ColorsManager.goodGreen.withValues(alpha: 0.7), 'moderate': ColorsManager.moderateYellow.withValues(alpha: 0.7), 'poor': ColorsManager.poorOrange.withValues(alpha: 0.7), 'unhealthy': ColorsManager.unhealthyRed.withValues(alpha: 0.7), 'severe': ColorsManager.severePink.withValues(alpha: 0.7), 'hazardous': ColorsManager.hazardousPurple.withValues(alpha: 0.7), }; @override List get props => [date, data]; } class AirQualityPercentageData extends Equatable { const AirQualityPercentageData({ required this.type, required this.name, required this.percentage, }); final String type; final String name; final double percentage; factory AirQualityPercentageData.fromJson(Map json) { return AirQualityPercentageData( type: json['type'] as String? ?? '', name: json['name'] as String? ?? '', percentage: (json['percentage'] as num?)?.toDouble() ?? 0, ); } @override List get props => [type, name, percentage]; }