mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-11-27 02:54:56 +00:00
make the aqi range chart read its data from RangeOfAqiBloc.
This commit is contained in:
@ -1,25 +1,34 @@
|
|||||||
import 'package:fl_chart/fl_chart.dart';
|
import 'package:fl_chart/fl_chart.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:syncrow_web/pages/analytics/models/range_of_aqi.dart';
|
||||||
import 'package:syncrow_web/pages/analytics/modules/air_quality/helpers/range_of_aqi_charts_helper.dart';
|
import 'package:syncrow_web/pages/analytics/modules/air_quality/helpers/range_of_aqi_charts_helper.dart';
|
||||||
import 'package:syncrow_web/pages/analytics/modules/energy_management/helpers/energy_management_charts_helper.dart';
|
import 'package:syncrow_web/pages/analytics/modules/energy_management/helpers/energy_management_charts_helper.dart';
|
||||||
import 'package:syncrow_web/utils/color_manager.dart';
|
import 'package:syncrow_web/utils/color_manager.dart';
|
||||||
|
|
||||||
class RangeOfAqiChart extends StatelessWidget {
|
class RangeOfAqiChart extends StatelessWidget {
|
||||||
final List<double> minValues;
|
final List<RangeOfAqi> chartData;
|
||||||
final List<double> avgValues;
|
|
||||||
final List<double> maxValues;
|
|
||||||
|
|
||||||
const RangeOfAqiChart({
|
const RangeOfAqiChart({
|
||||||
super.key,
|
super.key,
|
||||||
required this.minValues,
|
required this.chartData,
|
||||||
required this.avgValues,
|
|
||||||
required this.maxValues,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
List<(List<double> values, Color color, Color? dotColor)> _lines() => [
|
List<(List<double> values, Color color, Color? dotColor)> _lines() => [
|
||||||
(maxValues, const Color(0xFF962DFF), const Color(0xFF5F00BD)),
|
(
|
||||||
(avgValues, Colors.white, null),
|
chartData.map((e) => e.max).toList(),
|
||||||
(minValues, const Color(0xFF93AAFD), const Color(0xFF023DFE)),
|
const Color(0xFF962DFF),
|
||||||
|
const Color(0xFF5F00BD)
|
||||||
|
),
|
||||||
|
(
|
||||||
|
chartData.map((e) => e.avg).toList(),
|
||||||
|
Colors.white,
|
||||||
|
null,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
chartData.map((e) => e.min).toList(),
|
||||||
|
const Color(0xFF93AAFD),
|
||||||
|
const Color(0xFF023DFE)
|
||||||
|
),
|
||||||
];
|
];
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@ -1,6 +1,9 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
import 'package:syncrow_web/pages/analytics/modules/air_quality/blocs/range_of_aqi/range_of_aqi_bloc.dart';
|
||||||
import 'package:syncrow_web/pages/analytics/modules/air_quality/widgets/range_of_aqi_chart.dart';
|
import 'package:syncrow_web/pages/analytics/modules/air_quality/widgets/range_of_aqi_chart.dart';
|
||||||
import 'package:syncrow_web/pages/analytics/modules/energy_management/widgets/chart_title.dart';
|
import 'package:syncrow_web/pages/analytics/modules/energy_management/widgets/chart_title.dart';
|
||||||
|
import 'package:syncrow_web/pages/analytics/widgets/analytics_error_widget.dart';
|
||||||
import 'package:syncrow_web/utils/style.dart';
|
import 'package:syncrow_web/utils/style.dart';
|
||||||
|
|
||||||
class RangeOfAqiChartBox extends StatelessWidget {
|
class RangeOfAqiChartBox extends StatelessWidget {
|
||||||
@ -8,70 +11,32 @@ class RangeOfAqiChartBox extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Container(
|
return BlocBuilder<RangeOfAqiBloc, RangeOfAqiState>(
|
||||||
padding: const EdgeInsetsDirectional.all(30),
|
builder: (context, state) {
|
||||||
decoration: subSectionContainerDecoration.copyWith(
|
return Container(
|
||||||
borderRadius: BorderRadius.circular(30),
|
padding: const EdgeInsetsDirectional.all(30),
|
||||||
),
|
decoration: subSectionContainerDecoration.copyWith(
|
||||||
child: const Column(
|
borderRadius: BorderRadius.circular(30),
|
||||||
mainAxisSize: MainAxisSize.min,
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
ChartTitle(title: Text('Range of AQI')),
|
|
||||||
SizedBox(height: 10),
|
|
||||||
Divider(),
|
|
||||||
SizedBox(height: 20),
|
|
||||||
Expanded(
|
|
||||||
child: RangeOfAqiChart(
|
|
||||||
avgValues: [
|
|
||||||
50,
|
|
||||||
70,
|
|
||||||
90,
|
|
||||||
110,
|
|
||||||
130,
|
|
||||||
150,
|
|
||||||
170,
|
|
||||||
190,
|
|
||||||
210,
|
|
||||||
230,
|
|
||||||
250,
|
|
||||||
270,
|
|
||||||
290,
|
|
||||||
],
|
|
||||||
minValues: [
|
|
||||||
0,
|
|
||||||
20,
|
|
||||||
40,
|
|
||||||
60,
|
|
||||||
80,
|
|
||||||
100,
|
|
||||||
120,
|
|
||||||
140,
|
|
||||||
160,
|
|
||||||
180,
|
|
||||||
200,
|
|
||||||
220,
|
|
||||||
240,
|
|
||||||
],
|
|
||||||
maxValues: [
|
|
||||||
100,
|
|
||||||
120,
|
|
||||||
140,
|
|
||||||
160,
|
|
||||||
180,
|
|
||||||
200,
|
|
||||||
220,
|
|
||||||
240,
|
|
||||||
260,
|
|
||||||
280,
|
|
||||||
300,
|
|
||||||
301,
|
|
||||||
301,
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
],
|
child: Column(
|
||||||
),
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
AnalyticsErrorWidget(state.errorMessage),
|
||||||
|
const SizedBox(height: 10),
|
||||||
|
const ChartTitle(title: Text('Range of AQI')),
|
||||||
|
const SizedBox(height: 10),
|
||||||
|
const Divider(),
|
||||||
|
const SizedBox(height: 20),
|
||||||
|
Expanded(
|
||||||
|
child: RangeOfAqiChart(
|
||||||
|
chartData: state.rangeOfAqi,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user