From 00277742d0750444f9c8bfab65eb0965ccb8d1af Mon Sep 17 00:00:00 2001 From: ashrafzarkanisala Date: Mon, 7 Oct 2024 01:12:35 +0300 Subject: [PATCH] push garage door records --- .../garage_door/bloc/garage_door_bloc.dart | 10 ++++- .../garage_door/bloc/garage_door_event.dart | 7 +++- .../view/garage_door_control_view.dart | 21 +++++++---- .../shared/table/report_table.dart | 37 ++++++++++--------- 4 files changed, 47 insertions(+), 28 deletions(-) diff --git a/lib/pages/device_managment/garage_door/bloc/garage_door_bloc.dart b/lib/pages/device_managment/garage_door/bloc/garage_door_bloc.dart index bc67b081..f640a50d 100644 --- a/lib/pages/device_managment/garage_door/bloc/garage_door_bloc.dart +++ b/lib/pages/device_managment/garage_door/bloc/garage_door_bloc.dart @@ -32,6 +32,7 @@ class GarageDoorBloc extends Bloc { on(_updateSelectedDay); on(_updateFunctionOn); on(_initializeAddSchedule); + on(_backToGridView); } void _fetchGarageDoorStatus(GarageDoorInitialEvent event, Emitter emit) async { @@ -167,13 +168,20 @@ class GarageDoorBloc extends Bloc { Future _fetchRecords(FetchGarageDoorRecordsEvent event, Emitter emit) async { emit(GarageDoorReportsLoadingState()); try { - final DeviceReport records = await DevicesManagementApi.getDeviceReports(event.deviceId, 'switch_1'); + final from = DateTime.now().subtract(const Duration(days: 30)).millisecondsSinceEpoch; + final to = DateTime.now().millisecondsSinceEpoch; + final DeviceReport records = + await DevicesManagementApi.getDeviceReportsByDate(event.deviceId, 'switch_1', from.toString(), to.toString()); emit(GarageDoorReportsState(deviceReport: records)); } catch (e) { emit(GarageDoorReportsFailedState(error: e.toString())); } } + void _backToGridView(BackToGarageDoorGridViewEvent event, Emitter emit) { + emit(GarageDoorLoadedState(status: deviceStatus)); + } + void _handleUpdate(GarageDoorUpdatedEvent event, Emitter emit) { emit(GarageDoorLoadedState(status: deviceStatus)); } diff --git a/lib/pages/device_managment/garage_door/bloc/garage_door_event.dart b/lib/pages/device_managment/garage_door/bloc/garage_door_event.dart index ee07713a..20758077 100644 --- a/lib/pages/device_managment/garage_door/bloc/garage_door_event.dart +++ b/lib/pages/device_managment/garage_door/bloc/garage_door_event.dart @@ -102,13 +102,16 @@ class DecreaseGarageDoorDelayEvent extends GarageDoorEvent { class FetchGarageDoorRecordsEvent extends GarageDoorEvent { final String deviceId; + final String code; - const FetchGarageDoorRecordsEvent({required this.deviceId}); + const FetchGarageDoorRecordsEvent({required this.deviceId, required this.code}); @override - List get props => [deviceId]; + List get props => [deviceId, code]; } +class BackToGarageDoorGridViewEvent extends GarageDoorEvent {} + class GarageDoorUpdatedEvent extends GarageDoorEvent {} class UpdateSelectedTimeEvent extends GarageDoorEvent { diff --git a/lib/pages/device_managment/garage_door/view/garage_door_control_view.dart b/lib/pages/device_managment/garage_door/view/garage_door_control_view.dart index 41e6baee..1ad3c756 100644 --- a/lib/pages/device_managment/garage_door/view/garage_door_control_view.dart +++ b/lib/pages/device_managment/garage_door/view/garage_door_control_view.dart @@ -5,6 +5,7 @@ import 'package:syncrow_web/pages/device_managment/garage_door/bloc/garage_door_ import 'package:syncrow_web/pages/device_managment/garage_door/bloc/garage_door_state.dart'; import 'package:syncrow_web/pages/device_managment/garage_door/models/garage_door_model.dart'; import 'package:syncrow_web/pages/device_managment/garage_door/widgets/schedule_garage_view.dart'; +import 'package:syncrow_web/pages/device_managment/shared/table/report_table.dart'; import 'package:syncrow_web/pages/device_managment/shared/toggle_widget.dart'; import 'package:syncrow_web/utils/color_manager.dart'; import 'package:syncrow_web/utils/constants/assets.dart'; @@ -26,6 +27,16 @@ class GarageDoorControlView extends StatelessWidget with HelperResponsiveLayout builder: (context, state) { if (state is GarageDoorLoadingState) { return const Center(child: CircularProgressIndicator()); + } else if (state is GarageDoorReportsState) { + return ReportsTable( + report: state.deviceReport, + hideValueShowDescription: true, + garageDoorSensor: true, + onRowTap: (index) {}, + onClose: () { + context.read().add(BackToGarageDoorGridViewEvent()); + }, + ); } else if (state is GarageDoorLoadedState) { return _buildControlView(context, state.status); } else if (state is GarageDoorErrorState) { @@ -162,9 +173,7 @@ class GarageDoorControlView extends StatelessWidget with HelperResponsiveLayout name: 'Records', icon: Assets.records, onTap: () { - // context.read().add( - // (deviceId: status.uuid, isOpen: !status.isOpen, code: 'switch_1'), - // ); + context.read().add(FetchGarageDoorRecordsEvent(code: 'switch_1', deviceId: status.uuid)); }, status: false, textColor: ColorsManager.blackColor, @@ -174,11 +183,7 @@ class GarageDoorControlView extends StatelessWidget with HelperResponsiveLayout isFullIcon: false, name: 'Preferences', icon: Assets.preferences, - onTap: () { - // context.read().add( - // (deviceId: status.uuid, isOpen: !status.isOpen, code: 'switch_1'), - // ); - }, + onTap: () {}, status: false, textColor: ColorsManager.blackColor, // paddingAmount: 6, diff --git a/lib/pages/device_managment/shared/table/report_table.dart b/lib/pages/device_managment/shared/table/report_table.dart index 7dda10e1..527ae783 100644 --- a/lib/pages/device_managment/shared/table/report_table.dart +++ b/lib/pages/device_managment/shared/table/report_table.dart @@ -13,6 +13,7 @@ class ReportsTable extends StatelessWidget { final VoidCallback onClose; bool? hideValueShowDescription; bool? mainDoorSensor; + bool? garageDoorSensor; ReportsTable({ super.key, @@ -23,6 +24,7 @@ class ReportsTable extends StatelessWidget { this.thirdColumnDescription, this.hideValueShowDescription, this.mainDoorSensor, + this.garageDoorSensor, }); @override @@ -53,30 +55,31 @@ class ReportsTable extends StatelessWidget { DeviceEvent data = entry.value; // Parse eventTime into Date and Time - DateTime eventDateTime = - DateTime.fromMillisecondsSinceEpoch(data.eventTime!); + DateTime eventDateTime = DateTime.fromMillisecondsSinceEpoch(data.eventTime!); String date = DateFormat('dd/MM/yyyy').format(eventDateTime); String time = DateFormat('HH:mm').format(eventDateTime); + String value; + if (hideValueShowDescription == true) { + if (mainDoorSensor != null && mainDoorSensor == true) { + value = data.value == 'true' ? 'Open' : 'Close'; + } else if (garageDoorSensor != null && garageDoorSensor == true) { + value = data.value == 'true' ? 'Opened' : 'Closed'; + } else { + value = '${data.value!} ${thirdColumnDescription ?? ''}'; + } + } else { + value = '${data.value!} ${thirdColumnDescription ?? ''}'; + } + return TableRow( children: [ TableCellWidget(value: date), TableCellWidget(value: time), - hideValueShowDescription == true - ? TableCellWidget( - value: (mainDoorSensor != null && - mainDoorSensor == true) - ? data.value == 'true' - ? 'Open' - : 'Close' - : thirdColumnDescription ?? '', - onTap: () => onRowTap(index), - ) - : TableCellWidget( - value: - '${data.value!} ${thirdColumnDescription ?? ''}', - onTap: () => onRowTap(index), - ), + TableCellWidget( + value: value, + onTap: () => onRowTap(index), + ), ], ); }),