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({
required BuildContext context,
}) async {
DateTime selectedDate = DateTime.now(); // Default selected date
DateTime selectedDate = DateTime.now();
return await showDialog<DateTime>(
context: context,
@ -584,61 +584,107 @@ class SmartPowerBloc extends Bloc<SmartPowerEvent, SmartPowerState> {
DateTime? dateTime = 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(
SelectDateEvent event, Emitter<SmartPowerState> emit) async {
// emit(SmartPowerLoading());
Future<DateTime?> 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<EnergyData> energyDataList = [];
void _filterRecordsByDate(
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') {
filteredRecords = record
.where((record) => record.eventTime!.year == event.selectedDate.year)
@ -657,11 +703,10 @@ class SmartPowerBloc extends Bloc<SmartPowerEvent, SmartPowerState> {
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<SmartPowerEvent, SmartPowerState> {
);
}).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);
}
}

View File

@ -69,18 +69,18 @@ class _EnergyConsumptionPageState extends State<EnergyConsumptionPage> {
),
],
),
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,

View File

@ -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