diff --git a/lib/presentation/Screens/charts/widgets/chart_widget.dart b/lib/presentation/Screens/charts/widgets/chart_widget.dart index 9a9b4553..d27c4c88 100644 --- a/lib/presentation/Screens/charts/widgets/chart_widget.dart +++ b/lib/presentation/Screens/charts/widgets/chart_widget.dart @@ -1,6 +1,7 @@ import 'dart:math'; import 'package:fl_chart/fl_chart.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; // import 'package:syncfusion_flutter_charts/charts.dart'; @@ -259,16 +260,24 @@ class ChartWidget extends StatelessWidget { }, ), ), - SizedBox(height: 20), - Padding( - padding: - const EdgeInsets.all(8.0), // Add spacing around indicators + SizedBox(height: 25), + + Flexible( + child: SingleChildScrollView( + scrollDirection: Axis.vertical, + child: Container( + constraints: BoxConstraints(minHeight: 5), // Allow dynamic height + child: Padding( + padding: const EdgeInsets.only(left: 8.0 ,right: 8.0,bottom: 8.0,top:20.0), child: Wrap( spacing: 12, runSpacing: 8, children: generateIndicators(chartData, chartData['group_by']), ), ), + ), + ), + ), ], ); case 'fl_stacked_bar': @@ -912,19 +921,27 @@ class ChartWidget extends StatelessWidget { return Padding( padding: const EdgeInsets.only(top: 8.0), child: Transform.rotate( - angle: -45 * - (3.1415927 / 180), // Rotating by -45 degrees + angle: -1.58, + // angle: -45 * + // (3.1415927 / 180), // Rotating by -45 degrees alignment: Alignment.center, - child: Text( - xAxisData[value.toInt()], - style: TextStyle(fontSize: 12), + child: Center( + child: SizedBox( + width: 100, + child: Text( + xAxisData[value.toInt()], + style: const TextStyle(fontSize: 12), + softWrap: true, + maxLines: 2, + ), + ), ), ), ); } return Container(); }, - reservedSize: 60, + reservedSize: 85, ), ), topTitles: AxisTitles( @@ -979,6 +996,16 @@ class ChartWidget extends StatelessWidget { } else if (chartData['dataset'] == 'labour_force') { crop = item['ObsKey']['GENDER']; cropType = item['ObsKey'][groupByKey]; + } else if (chartData['dataset'] == 'clinics') { + + if (kDebugMode) { + print('forclinics'); + print('ObsKey: ${item['ObsKey']}'); + // print('NR_TYPE: ${item['ObsKey']?['NR_TYPE']}'); + } + + crop = item['ObsKey']['MEASURE']; + cropType = item['ObsKey'][groupByKey]; } else { crop = item['ObsKey']['CROP']; cropType = item['ObsKey'][groupByKey]; @@ -1169,7 +1196,52 @@ class ChartWidget extends StatelessWidget { if (chartData['dataset'] == 'natural_reserves') { crop = item['ObsKey']['NR_TYPE']; cropType = item['ObsKey'][groupByKey]; - } else { + } + else if(chartData['dataset'] == 'gdp') + { + print("ForGDP"); + if (kDebugMode) { + + print('ObsKey: ${item['ObsKey']}'); + // print('NR_TYPE: ${item['ObsKey']?['NR_TYPE']}'); + } + crop = item['ObsKey']['BOP_ITEM']; + + cropType = item['ObsKey'][groupByKey]; + } else if(chartData['dataset'] == 'air_transport') + { + print("Forair_transport"); + if (kDebugMode) { + + print('ObsKey: ${item['ObsKey']}'); + // print('NR_TYPE: ${item['ObsKey']?['NR_TYPE']}'); + } + crop = item['ObsKey']['MEASURE']; + + cropType = item['ObsKey'][groupByKey]; + } else if(chartData['dataset'] == 'import') + { + print("Forimport"); + if (kDebugMode) { + + print('ObsKey: ${item['ObsKey']}'); + // print('NR_TYPE: ${item['ObsKey']?['NR_TYPE']}'); + } + crop = item['ObsKey']['COUNTRY']; + + cropType = item['ObsKey'][groupByKey]; + } + else if(chartData['dataset'] == 'gdpq') + { + print("ForGDPq"); + if (kDebugMode) { + print('ObsKey: ${item['ObsKey']}'); + } + crop = item['ObsKey']['MEASURE']; + // crop = item['ObsKey']['TIME_PERIOD']; + cropType = item['ObsKey'][groupByKey]; + } + else { crop = item['ObsKey']['CROP']; cropType = item['ObsKey'][groupByKey]; } @@ -1184,6 +1256,18 @@ class ChartWidget extends StatelessWidget { int rotationTurns = 1; print('Grouped Crops: $groupedCrops'); + + int numberOfBars = groupedCrops.length; // Number of grouped sets (bar groups) + double barHeight = 40.0; // Height per individual bar + double barSpacing = 30.0; // Space between bar sets + double minHeight = 300.0; // Minimum chart height + double maxHeight = 1000.0; // Maximum chart height + +// Calculate total height dynamically + double chartHeight = ((numberOfBars * barHeight) + ((numberOfBars - 1) * barSpacing)) + .clamp(minHeight, maxHeight); + + return Column(children: [ Text( chartData['chart_heading'] ?? '', // Chart title from data @@ -1196,6 +1280,13 @@ class ChartWidget extends StatelessWidget { SizedBox(height: 10), // Chart Expanded( + child: SingleChildScrollView( + scrollDirection: Axis.vertical, + child: SingleChildScrollView( + scrollDirection: Axis.horizontal, + child:SizedBox( + width: 1000, + height: chartHeight, child: BarChart( BarChartData( maxY: 400000, @@ -1347,7 +1438,9 @@ class ChartWidget extends StatelessWidget { alignment: BarChartAlignment.spaceAround, ), ), - ) + ), + ), + )), // Expanded( // child: Stack( // children:[ @@ -2013,7 +2106,12 @@ class ChartWidget extends StatelessWidget { ]; final barColor; if (chartData['dataset'] == 'general_education' || - chartData['dataset'] == 'higher_education') { + chartData['dataset'] == 'higher_education' || + chartData['dataset'] == 'air_transport' || + chartData['dataset'] == 'labour_force' || + chartData['dataset'] == 'gdp' + ) { + barColor = uniqueColorsForTwo[colorIndex % uniqueColorsForTwo.length]; colorIndex++; } else {