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