mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-07-10 07:07:19 +00:00
power_clamp_functionality
This commit is contained in:
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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,
|
||||
|
@ -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
|
||||
|
Reference in New Issue
Block a user