From 5191c1e4560162236838eb566ddff653975d8800 Mon Sep 17 00:00:00 2001 From: Faris Armoush Date: Thu, 15 May 2025 15:28:36 +0300 Subject: [PATCH 1/5] Performed selection validation, and made future dates disabled. --- .../widgets/month_picker_widget.dart | 42 +++++++++++++++---- .../analytics/widgets/year_picker_widget.dart | 4 +- 2 files changed, 37 insertions(+), 9 deletions(-) diff --git a/lib/pages/analytics/modules/analytics/widgets/month_picker_widget.dart b/lib/pages/analytics/modules/analytics/widgets/month_picker_widget.dart index 53ba31af..c1862ac8 100644 --- a/lib/pages/analytics/modules/analytics/widgets/month_picker_widget.dart +++ b/lib/pages/analytics/modules/analytics/widgets/month_picker_widget.dart @@ -121,6 +121,7 @@ class _MonthPickerWidgetState extends State { } Row _buildYearSelector() { + final currentYear = DateTime.now().year; return Row( mainAxisAlignment: MainAxisAlignment.center, children: [ @@ -134,17 +135,35 @@ class _MonthPickerWidgetState extends State { ), const Spacer(), IconButton( - onPressed: () => setState(() => _currentYear = _currentYear - 1), + onPressed: () { + setState(() { + _currentYear = _currentYear - 1; + }); + }, icon: const Icon( Icons.chevron_left, color: ColorsManager.grey700, ), ), IconButton( - onPressed: () => setState(() => _currentYear = _currentYear + 1), - icon: const Icon( + onPressed: _currentYear < currentYear + ? () { + setState(() { + _currentYear = _currentYear + 1; + // Clear selected month if it becomes invalid in the new year + if (_currentYear == currentYear && + _selectedMonth != null && + _selectedMonth! > DateTime.now().month - 1) { + _selectedMonth = null; + } + }); + } + : null, + icon: Icon( Icons.chevron_right, - color: ColorsManager.grey700, + color: _currentYear < currentYear + ? ColorsManager.grey700 + : ColorsManager.grey700.withValues(alpha: 0.3), ), ), ], @@ -152,6 +171,9 @@ class _MonthPickerWidgetState extends State { } Widget _buildMonthsGrid() { + final currentDate = DateTime.now(); + final isCurrentYear = _currentYear == currentDate.year; + return GridView.builder( shrinkWrap: true, itemCount: 12, @@ -165,14 +187,18 @@ class _MonthPickerWidgetState extends State { ), itemBuilder: (context, index) { final isSelected = _selectedMonth == index; + final isFutureMonth = isCurrentYear && index > currentDate.month - 1; + return InkWell( - onTap: () => setState(() => _selectedMonth = index), + onTap: isFutureMonth ? null : () => setState(() => _selectedMonth = index), child: Container( alignment: Alignment.center, decoration: BoxDecoration( color: isSelected ? ColorsManager.vividBlue.withValues(alpha: 0.7) - : const Color(0xFFEDF2F7), + : isFutureMonth + ? ColorsManager.grey700.withValues(alpha: 0.1) + : const Color(0xFFEDF2F7), borderRadius: isSelected ? BorderRadius.circular(15) : BorderRadius.zero, ), @@ -182,7 +208,9 @@ class _MonthPickerWidgetState extends State { fontSize: 12, color: isSelected ? ColorsManager.whiteColors - : ColorsManager.blackColor.withValues(alpha: 0.8), + : isFutureMonth + ? ColorsManager.blackColor.withValues(alpha: 0.3) + : ColorsManager.blackColor.withValues(alpha: 0.8), fontWeight: FontWeight.w500, ), ), diff --git a/lib/pages/analytics/modules/analytics/widgets/year_picker_widget.dart b/lib/pages/analytics/modules/analytics/widgets/year_picker_widget.dart index 4c7bb748..c27a2d9a 100644 --- a/lib/pages/analytics/modules/analytics/widgets/year_picker_widget.dart +++ b/lib/pages/analytics/modules/analytics/widgets/year_picker_widget.dart @@ -20,9 +20,9 @@ class _YearPickerWidgetState extends State { late int _currentYear; static final years = List.generate( - DateTime.now().year - 2020 + 1, + DateTime.now().year - (DateTime.now().year - 5) + 1, (index) => (2020 + index), - ); + ).where((year) => year <= DateTime.now().year).toList(); @override void initState() { From 051bf657ed196b0a48c4128d9852ab1529c0eca0 Mon Sep 17 00:00:00 2001 From: Faris Armoush Date: Thu, 15 May 2025 15:29:09 +0300 Subject: [PATCH 2/5] Changed background color of analytics date pickers to match the design language of the platform. --- .../modules/analytics/widgets/month_picker_widget.dart | 2 +- .../analytics/modules/analytics/widgets/year_picker_widget.dart | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/pages/analytics/modules/analytics/widgets/month_picker_widget.dart b/lib/pages/analytics/modules/analytics/widgets/month_picker_widget.dart index c1862ac8..ab7603e5 100644 --- a/lib/pages/analytics/modules/analytics/widgets/month_picker_widget.dart +++ b/lib/pages/analytics/modules/analytics/widgets/month_picker_widget.dart @@ -45,7 +45,7 @@ class _MonthPickerWidgetState extends State { @override Widget build(BuildContext context) { return Dialog( - backgroundColor: Theme.of(context).colorScheme.surface, + backgroundColor: ColorsManager.whiteColors, child: Container( padding: const EdgeInsetsDirectional.all(20), width: 320, diff --git a/lib/pages/analytics/modules/analytics/widgets/year_picker_widget.dart b/lib/pages/analytics/modules/analytics/widgets/year_picker_widget.dart index c27a2d9a..2bcb223b 100644 --- a/lib/pages/analytics/modules/analytics/widgets/year_picker_widget.dart +++ b/lib/pages/analytics/modules/analytics/widgets/year_picker_widget.dart @@ -33,7 +33,7 @@ class _YearPickerWidgetState extends State { @override Widget build(BuildContext context) { return Dialog( - backgroundColor: Theme.of(context).colorScheme.surface, + backgroundColor: ColorsManager.whiteColors, child: Container( padding: const EdgeInsetsDirectional.all(20), width: 320, From b1bae3cb15a46f8639c11d0d2fda4445c2a1557c Mon Sep 17 00:00:00 2001 From: Faris Armoush Date: Thu, 15 May 2025 15:59:02 +0300 Subject: [PATCH 3/5] fixed overflow bug on charts. --- .../helpers/energy_management_charts_helper.dart | 6 ++++-- .../widgets/total_energy_consumption_chart.dart | 1 + .../modules/occupancy/widgets/occupancy_chart.dart | 9 ++++++++- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/pages/analytics/modules/energy_management/helpers/energy_management_charts_helper.dart b/lib/pages/analytics/modules/energy_management/helpers/energy_management_charts_helper.dart index 5c56d229..b8849335 100644 --- a/lib/pages/analytics/modules/energy_management/helpers/energy_management_charts_helper.dart +++ b/lib/pages/analytics/modules/energy_management/helpers/energy_management_charts_helper.dart @@ -20,7 +20,8 @@ abstract final class EnergyManagementChartsHelper { interval: 1, reservedSize: 32, showTitles: true, - maxIncluded: true, + maxIncluded: false, + minIncluded: false, getTitlesWidget: (value, meta) => Padding( padding: const EdgeInsetsDirectional.only(top: 20.0), child: Text( @@ -36,7 +37,8 @@ abstract final class EnergyManagementChartsHelper { leftTitles: AxisTitles( sideTitles: SideTitles( showTitles: true, - maxIncluded: true, + maxIncluded: false, + minIncluded: false, interval: leftTitlesInterval, reservedSize: 110, getTitlesWidget: (value, meta) => Padding( diff --git a/lib/pages/analytics/modules/energy_management/widgets/total_energy_consumption_chart.dart b/lib/pages/analytics/modules/energy_management/widgets/total_energy_consumption_chart.dart index b0f7961a..81052d02 100644 --- a/lib/pages/analytics/modules/energy_management/widgets/total_energy_consumption_chart.dart +++ b/lib/pages/analytics/modules/energy_management/widgets/total_energy_consumption_chart.dart @@ -21,6 +21,7 @@ class TotalEnergyConsumptionChart extends StatelessWidget { gridData: EnergyManagementChartsHelper.gridData().copyWith( checkToShowHorizontalLine: (value) => true, horizontalInterval: 250, + ), borderData: EnergyManagementChartsHelper.borderData(), lineTouchData: EnergyManagementChartsHelper.lineTouchData(), diff --git a/lib/pages/analytics/modules/occupancy/widgets/occupancy_chart.dart b/lib/pages/analytics/modules/occupancy/widgets/occupancy_chart.dart index dc1357bc..8a93ccf1 100644 --- a/lib/pages/analytics/modules/occupancy/widgets/occupancy_chart.dart +++ b/lib/pages/analytics/modules/occupancy/widgets/occupancy_chart.dart @@ -23,7 +23,14 @@ class OccupancyChart extends StatelessWidget { ), borderData: EnergyManagementChartsHelper.borderData(), barTouchData: _barTouchData(context), - titlesData: _titlesData(context), + titlesData: _titlesData(context).copyWith( + leftTitles: _titlesData(context).leftTitles.copyWith( + sideTitles: _titlesData(context).leftTitles.sideTitles.copyWith( + maxIncluded: true, + minIncluded: true, + ), + ), + ), barGroups: List.generate(chartData.length, (index) { final actual = chartData[index]; return BarChartGroupData( From 3e3e17019a58f9d3b58c8c2cb0dc2f22ba9d8124 Mon Sep 17 00:00:00 2001 From: Faris Armoush Date: Thu, 15 May 2025 16:22:54 +0300 Subject: [PATCH 4/5] format. --- .../widgets/total_energy_consumption_chart.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/pages/analytics/modules/energy_management/widgets/total_energy_consumption_chart.dart b/lib/pages/analytics/modules/energy_management/widgets/total_energy_consumption_chart.dart index 81052d02..b0f7961a 100644 --- a/lib/pages/analytics/modules/energy_management/widgets/total_energy_consumption_chart.dart +++ b/lib/pages/analytics/modules/energy_management/widgets/total_energy_consumption_chart.dart @@ -21,7 +21,6 @@ class TotalEnergyConsumptionChart extends StatelessWidget { gridData: EnergyManagementChartsHelper.gridData().copyWith( checkToShowHorizontalLine: (value) => true, horizontalInterval: 250, - ), borderData: EnergyManagementChartsHelper.borderData(), lineTouchData: EnergyManagementChartsHelper.lineTouchData(), From a849c1dafbe07291f80a3eb5b3027e25b14163e1 Mon Sep 17 00:00:00 2001 From: Faris Armoush Date: Thu, 15 May 2025 16:31:11 +0300 Subject: [PATCH 5/5] removed unused import. --- .../widgets/power_clamp_energy_data_widget.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/pages/analytics/modules/energy_management/widgets/power_clamp_energy_data_widget.dart b/lib/pages/analytics/modules/energy_management/widgets/power_clamp_energy_data_widget.dart index 8a53d037..8ae6cd7f 100644 --- a/lib/pages/analytics/modules/energy_management/widgets/power_clamp_energy_data_widget.dart +++ b/lib/pages/analytics/modules/energy_management/widgets/power_clamp_energy_data_widget.dart @@ -12,7 +12,6 @@ import 'package:syncrow_web/pages/analytics/modules/energy_management/widgets/po import 'package:syncrow_web/pages/analytics/modules/energy_management/widgets/power_clamp_phases_data_widget.dart'; import 'package:syncrow_web/pages/analytics/widgets/analytics_error_widget.dart'; import 'package:syncrow_web/pages/device_managment/power_clamp/models/power_clamp_model.dart'; -import 'package:syncrow_web/pages/space_tree/bloc/space_tree_bloc.dart'; import 'package:syncrow_web/utils/color_manager.dart'; import 'package:syncrow_web/utils/constants/assets.dart'; import 'package:syncrow_web/utils/extension/build_context_x.dart';