diff --git a/lib/pages/analytics/modules/air_quality/widgets/aqi_distribution_chart.dart b/lib/pages/analytics/modules/air_quality/widgets/aqi_distribution_chart.dart index 373e36ca..2f3d7ff0 100644 --- a/lib/pages/analytics/modules/air_quality/widgets/aqi_distribution_chart.dart +++ b/lib/pages/analytics/modules/air_quality/widgets/aqi_distribution_chart.dart @@ -16,11 +16,6 @@ class AqiDistributionChart extends StatelessWidget { @override Widget build(BuildContext context) { - final sortedData = List.from(chartData) - ..sort( - (a, b) => a.date.compareTo(b.date), - ); - return BarChart( BarChartData( maxY: 100.1, @@ -30,29 +25,25 @@ class AqiDistributionChart extends StatelessWidget { borderData: EnergyManagementChartsHelper.borderData(), barTouchData: _barTouchData(context), titlesData: _titlesData(context), - barGroups: _buildBarGroups(sortedData), + barGroups: _buildBarGroups(), ), duration: Duration.zero, ); } - List _buildBarGroups(List sortedData) { - return List.generate(sortedData.length, (index) { - final data = sortedData[index]; + List _buildBarGroups() { + return List.generate(chartData.length, (index) { + final data = chartData[index]; final stackItems = []; double currentY = 0; - bool isFirstElement = true; + var isFirstElement = true; - // Sort data by type to ensure consistent order - final sortedPercentageData = List.from(data.data) - ..sort((a, b) => a.type.compareTo(b.type)); - - for (final percentageData in sortedPercentageData) { + for (final percentageData in data.data) { stackItems.add( BarChartRodData( fromY: currentY, - toY: currentY + percentageData.percentage , - color: AirQualityDataModel.metricColors[percentageData.name]!, + toY: currentY + percentageData.percentage, + color: AirQualityDataModel.metricColors[percentageData.type], borderRadius: isFirstElement ? const BorderRadius.only( topLeft: Radius.circular(22), @@ -84,23 +75,21 @@ class AqiDistributionChart extends StatelessWidget { tooltipRoundedRadius: 16, tooltipPadding: const EdgeInsets.all(8), getTooltipItem: (group, groupIndex, rod, rodIndex) { - final data = chartData[group.x.toInt()]; + final data = chartData[group.x]; - final List children = []; + final children = []; final textStyle = context.textTheme.bodySmall?.copyWith( color: ColorsManager.blackColor, - fontSize: 12, + fontSize: 8, ); - // Sort data by type to ensure consistent order - final sortedPercentageData = List.from(data.data) - ..sort((a, b) => a.type.compareTo(b.type)); - - for (final percentageData in sortedPercentageData) { + for (final percentageData in data.data) { + final percentage = percentageData.percentage.toStringAsFixed(1); + final type = percentageData.type[0].toUpperCase() + + percentageData.type.substring(1).replaceAll('_', ' '); children.add(TextSpan( - text: - '\n${percentageData.type.toUpperCase()}: ${percentageData.percentage.toStringAsFixed(1)}%', + text: '\n$type: $percentage%', style: textStyle, )); } @@ -109,9 +98,10 @@ class AqiDistributionChart extends StatelessWidget { DateFormat('dd/MM/yyyy').format(data.date), context.textTheme.bodyMedium!.copyWith( color: ColorsManager.blackColor, - fontSize: 16, + fontSize: 9, fontWeight: FontWeight.w600, ), + textAlign: TextAlign.start, children: children, ); },