diff --git a/lib/pages/device_managment/power_clamp/bloc/smart_power_bloc.dart b/lib/pages/device_managment/power_clamp/bloc/smart_power_bloc.dart index d36f0c74..02cf620d 100644 --- a/lib/pages/device_managment/power_clamp/bloc/smart_power_bloc.dart +++ b/lib/pages/device_managment/power_clamp/bloc/smart_power_bloc.dart @@ -522,7 +522,7 @@ class SmartPowerBloc extends Bloc { Future dayMonthYearPicker({ required BuildContext context, }) async { - DateTime selectedDate = DateTime.now(); // Default selected date + DateTime selectedDate = DateTime.now(); return await showDialog( context: context, @@ -584,61 +584,107 @@ class SmartPowerBloc extends Bloc { DateTime? dateTime = DateTime.now(); String formattedDate = DateFormat('yyyy/MM/dd').format(DateTime.now()); + // void checkDayMonthYearSelected( + // SelectDateEvent event, Emitter emit) async { + // if (currentIndex == 0) { + // await dayMonthYearPicker(context: event.context).then( + // (newDate) { + // if (newDate != null) { + // dateTime = newDate; + // formattedDate = DateFormat('yyyy/MM/dd').format(dateTime!); + + // add(FilterRecordsByDateEvent( + // selectedDate: dateTime!, + // viewType: views[currentIndex], + // )); + // } + // }, + // ); + // } else if (currentIndex == 1) { + // await selectMonthAndYear(event.context).then( + // (newDate) { + // if (newDate != null) { + // dateTime = newDate; + // formattedDate = DateFormat('yyyy-MM').format(dateTime!); + + // add(FilterRecordsByDateEvent( + // selectedDate: dateTime!, + // viewType: views[currentIndex], + // )); + // } + // }, + // ); + // } else if (currentIndex == 2) { + // await selectYear(event.context).then( + // (newDate) { + // if (newDate != null) { + // dateTime = newDate; + // formattedDate = DateFormat('yyyy').format(dateTime!); + + // add(FilterRecordsByDateEvent( + // selectedDate: dateTime!, + // viewType: views[currentIndex], + // )); + // } + // }, + // ); + // } + // emit(DateSelectedState()); + // } + void checkDayMonthYearSelected( SelectDateEvent event, Emitter emit) async { - // emit(SmartPowerLoading()); + Future Function(BuildContext context)? dateSelector; + String dateFormat; - if (currentIndex == 0) { - await dayMonthYearPicker(context: event.context).then( - (newDate) { - if (newDate != null) { - dateTime = newDate; - formattedDate = DateFormat('yyyy/MM/dd').format(dateTime!); - - add(FilterRecordsByDateEvent( - selectedDate: dateTime!, - viewType: views[currentIndex], - )); - } - }, - ); - } else if (currentIndex == 1) { - await selectMonthAndYear(event.context).then( - (newDate) { - if (newDate != null) { - dateTime = newDate; - formattedDate = DateFormat('yyyy-MM').format(dateTime!); - - add(FilterRecordsByDateEvent( - selectedDate: dateTime!, - viewType: views[currentIndex], - )); - } - }, - ); - } else if (currentIndex == 2) { - await selectYear(event.context).then( - (newDate) { - if (newDate != null) { - dateTime = newDate; - formattedDate = DateFormat('yyyy').format(dateTime!); - - add(FilterRecordsByDateEvent( - selectedDate: dateTime!, - viewType: views[currentIndex], - )); - } - }, - ); + // Determine which picker to use and format to apply + switch (currentIndex) { + case 0: + dateSelector = (context) { + return dayMonthYearPicker(context: context); + }; + dateFormat = 'yyyy/MM/dd'; + break; + case 1: + dateSelector = (context) { + return selectMonthAndYear(context); + }; + dateFormat = 'yyyy-MM'; + break; + case 2: + dateSelector = (context) { + return selectYear(context); + }; + dateFormat = 'yyyy'; + break; + default: + return; } - emit(DateSelectedState()); + Future.delayed(const Duration(milliseconds: 500), () { + emit(SmartPowerLoading()); + }); + // Use the selected picker + + await dateSelector(event.context).then((newDate) { + add(FilterRecordsByDateEvent( + selectedDate: dateTime!, + viewType: views[currentIndex], + )); + }); + emit(FilterRecordsState(filteredRecords: energyDataList)); + + // emit(DateSelectedState()); } List energyDataList = []; void _filterRecordsByDate( FilterRecordsByDateEvent event, Emitter emit) { - print('dddddddddddddddddddd'); - // emit(SmartPowerLoading()); + emit(SmartPowerLoading()); + + print('FilterRecordsByDate method called'); + print('Selected date: ${event.selectedDate}'); + print('View type: ${event.viewType}'); + if (event.viewType == 'Year') { filteredRecords = record .where((record) => record.eventTime!.year == event.selectedDate.year) @@ -657,11 +703,10 @@ class SmartPowerBloc extends Bloc { record.eventTime!.day == event.selectedDate.day) .toList(); } - String getMonthShortName(int month) { - final date = DateTime(0, month); - return DateFormat.MMM().format(date); - } + print('Filtered Records: ${filteredRecords.length} items found.'); + + // Update `energyDataList` with filtered records. energyDataList = filteredRecords.map((eventDevice) { return EnergyData( event.viewType == 'Year' @@ -674,9 +719,18 @@ class SmartPowerBloc extends Bloc { ); }).toList(); - Future.delayed(const Duration(milliseconds: 500)); - emit(SmartPowerStatusLoaded(deviceStatus, currentPage)); + // if (filteredRecords.isEmpty) { + // print('No records found for the selected date'); + // } else { + // print('Filtered energyDataList: ${energyDataList.length} items found.'); + // } + // Emitting state for filtered data emit(FilterRecordsState(filteredRecords: energyDataList)); } + + String getMonthShortName(int month) { + final date = DateTime(0, month); + return DateFormat.MMM().format(date); + } } diff --git a/lib/pages/device_managment/power_clamp/view/power_chart.dart b/lib/pages/device_managment/power_clamp/view/power_chart.dart index a4cb4a07..ce7d6add 100644 --- a/lib/pages/device_managment/power_clamp/view/power_chart.dart +++ b/lib/pages/device_managment/power_clamp/view/power_chart.dart @@ -69,18 +69,18 @@ class _EnergyConsumptionPageState extends State { ), ], ), - const Row( + Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - '01/08/2024 - 31/08/2024', - style: TextStyle( + widget.formattedDate, + style: const TextStyle( color: ColorsManager.grayColor, fontWeight: FontWeight.w400, fontSize: 8, ), ), - Text( + const Text( '1000.00 kWh', style: TextStyle( color: ColorsManager.grayColor, diff --git a/lib/pages/device_managment/power_clamp/view/smart_power_device_control.dart b/lib/pages/device_managment/power_clamp/view/smart_power_device_control.dart index 531a4297..dd176c11 100644 --- a/lib/pages/device_managment/power_clamp/view/smart_power_device_control.dart +++ b/lib/pages/device_managment/power_clamp/view/smart_power_device_control.dart @@ -35,6 +35,13 @@ class SmartPowerDeviceControl extends StatelessWidget context: context, blocProvider: _blocProvider, ); + } else if (state is FilterRecordsState) { + // Handle the state when the records are filtered + return _buildStatusControls( + currentPage: _blocProvider.currentPage, + context: context, + blocProvider: _blocProvider, + ); } return const Center(child: CircularProgressIndicator()); // } @@ -171,6 +178,10 @@ class SmartPowerDeviceControl extends StatelessWidget formattedDate: blocProvider.formattedDate, onTap: () { blocProvider.add(SelectDateEvent(context: context)); + blocProvider.add(FilterRecordsByDateEvent( + selectedDate: blocProvider.dateTime!, + viewType: blocProvider + .views[blocProvider.currentIndex])); }, widget: blocProvider.dateSwitcher(), chartData: blocProvider.energyDataList.isNotEmpty