power_clamp_functionality

This commit is contained in:
mohammad
2024-10-24 17:40:32 +03:00
parent 9b4e687e9a
commit b8ad20b3ff
3 changed files with 122 additions and 57 deletions

View File

@ -522,7 +522,7 @@ class SmartPowerBloc extends Bloc<SmartPowerEvent, SmartPowerState> {
Future<DateTime?> dayMonthYearPicker({ Future<DateTime?> dayMonthYearPicker({
required BuildContext context, required BuildContext context,
}) async { }) async {
DateTime selectedDate = DateTime.now(); // Default selected date DateTime selectedDate = DateTime.now();
return await showDialog<DateTime>( return await showDialog<DateTime>(
context: context, context: context,
@ -584,61 +584,107 @@ class SmartPowerBloc extends Bloc<SmartPowerEvent, SmartPowerState> {
DateTime? dateTime = DateTime.now(); DateTime? dateTime = DateTime.now();
String formattedDate = DateFormat('yyyy/MM/dd').format(DateTime.now()); String formattedDate = DateFormat('yyyy/MM/dd').format(DateTime.now());
// void checkDayMonthYearSelected(
// SelectDateEvent event, Emitter<SmartPowerState> 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( void checkDayMonthYearSelected(
SelectDateEvent event, Emitter<SmartPowerState> emit) async { SelectDateEvent event, Emitter<SmartPowerState> emit) async {
// emit(SmartPowerLoading()); Future<DateTime?> Function(BuildContext context)? dateSelector;
String dateFormat;
if (currentIndex == 0) { // Determine which picker to use and format to apply
await dayMonthYearPicker(context: event.context).then( switch (currentIndex) {
(newDate) { case 0:
if (newDate != null) { dateSelector = (context) {
dateTime = newDate; return dayMonthYearPicker(context: context);
formattedDate = DateFormat('yyyy/MM/dd').format(dateTime!); };
dateFormat = 'yyyy/MM/dd';
add(FilterRecordsByDateEvent( break;
selectedDate: dateTime!, case 1:
viewType: views[currentIndex], dateSelector = (context) {
)); return selectMonthAndYear(context);
} };
}, dateFormat = 'yyyy-MM';
); break;
} else if (currentIndex == 1) { case 2:
await selectMonthAndYear(event.context).then( dateSelector = (context) {
(newDate) { return selectYear(context);
if (newDate != null) { };
dateTime = newDate; dateFormat = 'yyyy';
formattedDate = DateFormat('yyyy-MM').format(dateTime!); break;
default:
add(FilterRecordsByDateEvent( return;
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()); 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<EnergyData> energyDataList = []; List<EnergyData> energyDataList = [];
void _filterRecordsByDate( void _filterRecordsByDate(
FilterRecordsByDateEvent event, Emitter<SmartPowerState> emit) { FilterRecordsByDateEvent event, Emitter<SmartPowerState> 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') { if (event.viewType == 'Year') {
filteredRecords = record filteredRecords = record
.where((record) => record.eventTime!.year == event.selectedDate.year) .where((record) => record.eventTime!.year == event.selectedDate.year)
@ -657,11 +703,10 @@ class SmartPowerBloc extends Bloc<SmartPowerEvent, SmartPowerState> {
record.eventTime!.day == event.selectedDate.day) record.eventTime!.day == event.selectedDate.day)
.toList(); .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) { energyDataList = filteredRecords.map((eventDevice) {
return EnergyData( return EnergyData(
event.viewType == 'Year' event.viewType == 'Year'
@ -674,9 +719,18 @@ class SmartPowerBloc extends Bloc<SmartPowerEvent, SmartPowerState> {
); );
}).toList(); }).toList();
Future.delayed(const Duration(milliseconds: 500)); // if (filteredRecords.isEmpty) {
emit(SmartPowerStatusLoaded(deviceStatus, currentPage)); // 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)); emit(FilterRecordsState(filteredRecords: energyDataList));
} }
String getMonthShortName(int month) {
final date = DateTime(0, month);
return DateFormat.MMM().format(date);
}
} }

View File

@ -69,18 +69,18 @@ class _EnergyConsumptionPageState extends State<EnergyConsumptionPage> {
), ),
], ],
), ),
const Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Text( Text(
'01/08/2024 - 31/08/2024', widget.formattedDate,
style: TextStyle( style: const TextStyle(
color: ColorsManager.grayColor, color: ColorsManager.grayColor,
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
fontSize: 8, fontSize: 8,
), ),
), ),
Text( const Text(
'1000.00 kWh', '1000.00 kWh',
style: TextStyle( style: TextStyle(
color: ColorsManager.grayColor, color: ColorsManager.grayColor,

View File

@ -35,6 +35,13 @@ class SmartPowerDeviceControl extends StatelessWidget
context: context, context: context,
blocProvider: _blocProvider, 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()); return const Center(child: CircularProgressIndicator());
// } // }
@ -171,6 +178,10 @@ class SmartPowerDeviceControl extends StatelessWidget
formattedDate: blocProvider.formattedDate, formattedDate: blocProvider.formattedDate,
onTap: () { onTap: () {
blocProvider.add(SelectDateEvent(context: context)); blocProvider.add(SelectDateEvent(context: context));
blocProvider.add(FilterRecordsByDateEvent(
selectedDate: blocProvider.dateTime!,
viewType: blocProvider
.views[blocProvider.currentIndex]));
}, },
widget: blocProvider.dateSwitcher(), widget: blocProvider.dateSwitcher(),
chartData: blocProvider.energyDataList.isNotEmpty chartData: blocProvider.energyDataList.isNotEmpty