push garage door records

This commit is contained in:
ashrafzarkanisala
2024-10-07 01:12:35 +03:00
parent 9733295dca
commit 00277742d0
4 changed files with 47 additions and 28 deletions

View File

@ -32,6 +32,7 @@ class GarageDoorBloc extends Bloc<GarageDoorEvent, GarageDoorState> {
on<UpdateSelectedDayEvent>(_updateSelectedDay);
on<UpdateFunctionOnEvent>(_updateFunctionOn);
on<InitializeAddScheduleEvent>(_initializeAddSchedule);
on<BackToGarageDoorGridViewEvent>(_backToGridView);
}
void _fetchGarageDoorStatus(GarageDoorInitialEvent event, Emitter<GarageDoorState> emit) async {
@ -167,13 +168,20 @@ class GarageDoorBloc extends Bloc<GarageDoorEvent, GarageDoorState> {
Future<void> _fetchRecords(FetchGarageDoorRecordsEvent event, Emitter<GarageDoorState> 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<GarageDoorState> emit) {
emit(GarageDoorLoadedState(status: deviceStatus));
}
void _handleUpdate(GarageDoorUpdatedEvent event, Emitter<GarageDoorState> emit) {
emit(GarageDoorLoadedState(status: deviceStatus));
}

View File

@ -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<Object?> get props => [deviceId];
List<Object?> get props => [deviceId, code];
}
class BackToGarageDoorGridViewEvent extends GarageDoorEvent {}
class GarageDoorUpdatedEvent extends GarageDoorEvent {}
class UpdateSelectedTimeEvent extends GarageDoorEvent {

View File

@ -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<GarageDoorBloc>().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<GarageDoorBloc>().add(
// (deviceId: status.uuid, isOpen: !status.isOpen, code: 'switch_1'),
// );
context.read<GarageDoorBloc>().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<GarageDoorBloc>().add(
// (deviceId: status.uuid, isOpen: !status.isOpen, code: 'switch_1'),
// );
},
onTap: () {},
status: false,
textColor: ColorsManager.blackColor,
// paddingAmount: 6,

View File

@ -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,28 +55,29 @@ 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 ?? ''}',
TableCellWidget(
value: value,
onTap: () => onRowTap(index),
),
],