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..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, @@ -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..2bcb223b 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() { @@ -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, 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/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'; 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(