diff --git a/lib/pages/access_management/view/access_management.dart b/lib/pages/access_management/view/access_management.dart index f66c8a99..89bc7032 100644 --- a/lib/pages/access_management/view/access_management.dart +++ b/lib/pages/access_management/view/access_management.dart @@ -30,7 +30,7 @@ class AccessManagementPage extends StatelessWidget with HelperResponsiveLayout { final padding = isLargeScreen ? const EdgeInsets.all(30) : const EdgeInsets.all(15); return WebScaffold( - enableMenuSideba: false, + enableMenuSidebar: false, appBarTitle: FittedBox( child: Text( 'Access Management', diff --git a/lib/pages/common/hour_picker_dialog.dart b/lib/pages/common/hour_picker_dialog.dart index 6fb4f83a..01a87720 100644 --- a/lib/pages/common/hour_picker_dialog.dart +++ b/lib/pages/common/hour_picker_dialog.dart @@ -1,7 +1,10 @@ + + import 'package:flutter/material.dart'; class HourPickerDialog extends StatefulWidget { final TimeOfDay initialTime; + const HourPickerDialog({super.key, required this.initialTime}); @override @@ -9,70 +12,50 @@ class HourPickerDialog extends StatefulWidget { } class _HourPickerDialogState extends State { - late int _selectedHour; - bool _isPm = true; + late String selectedHour; @override void initState() { super.initState(); - _selectedHour = widget.initialTime.hour > 12 - ? widget.initialTime.hour - 12 - : widget.initialTime.hour; - _isPm = widget.initialTime.period == DayPeriod.am; + // Initialize the selectedHour with the initial time passed to the dialog + selectedHour = widget.initialTime.hour.toString().padLeft(2, '0') + ':00'; } @override Widget build(BuildContext context) { return AlertDialog( title: const Text('Select Hour'), - content: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - DropdownButton( - value: _selectedHour, - items: List.generate(12, (index) { - int displayHour = index + 1; - return DropdownMenuItem( - value: displayHour, - child: Text(displayHour.toString()), - ); - }), - onChanged: (value) { - setState(() { - _selectedHour = value!; - }); - }, - ), - SizedBox(width: 16.0), - DropdownButton( - value: _isPm, - items: const [ - DropdownMenuItem( - value: true, - child: Text('AM'), - ), - DropdownMenuItem( - value:false , - child: Text('PM'), - ), - ], - onChanged: (value) { - setState(() { - _isPm = value!; - }); - }, - ), - ], + content: DropdownButton( + value: selectedHour, // Show the currently selected hour + items: List.generate(24, (index) { + String hour = index.toString().padLeft(2, '0'); + return DropdownMenuItem( + value: '$hour:00', + child: Text('$hour:00'), + ); + }), + onChanged: (String? newValue) { + if (newValue != null) { + setState(() { + selectedHour = newValue; // Update the selected hour without closing the dialog + }); + } + }, ), actions: [ TextButton( - onPressed: () => Navigator.of(context).pop(null), + onPressed: () => Navigator.of(context).pop(null), // Close the dialog without selection child: const Text('Cancel'), ), TextButton( onPressed: () { - int hour = _isPm ? _selectedHour + 12 : _selectedHour; - Navigator.of(context).pop(TimeOfDay(hour: hour, minute: 0)); + // Close the dialog and return the selected time + Navigator.of(context).pop( + TimeOfDay( + hour: int.parse(selectedHour.split(':')[0]), + minute: 0, + ), + ); }, child: const Text('OK'), ), @@ -86,6 +69,7 @@ Future showHourPicker({ required TimeOfDay initialTime, }) { return showDialog( + barrierDismissible: false, context: context, builder: (context) => HourPickerDialog(initialTime: initialTime), ); diff --git a/lib/pages/device_managment/all_devices/view/device_managment_page.dart b/lib/pages/device_managment/all_devices/view/device_managment_page.dart index 93480ae5..8265cd81 100644 --- a/lib/pages/device_managment/all_devices/view/device_managment_page.dart +++ b/lib/pages/device_managment/all_devices/view/device_managment_page.dart @@ -21,13 +21,11 @@ class DeviceManagementPage extends StatelessWidget with HelperResponsiveLayout { ), ), rightBody: const NavigateHomeGridView(), - enableMenuSideba: isLargeScreenSize(context), scaffoldBody: BlocBuilder( builder: (context, state) { if (state is DeviceManagementLoading) { return const Center(child: CircularProgressIndicator()); - } else if (state is DeviceManagementLoaded || - state is DeviceManagementFiltered) { + } else if (state is DeviceManagementLoaded || state is DeviceManagementFiltered) { final devices = state is DeviceManagementLoaded ? state.devices : (state as DeviceManagementFiltered).filteredDevices; diff --git a/lib/pages/device_managment/all_devices/widgets/device_managment_body.dart b/lib/pages/device_managment/all_devices/widgets/device_managment_body.dart index 28a1d356..ab2f07fc 100644 --- a/lib/pages/device_managment/all_devices/widgets/device_managment_body.dart +++ b/lib/pages/device_managment/all_devices/widgets/device_managment_body.dart @@ -116,7 +116,7 @@ class DeviceManagementBody extends StatelessWidget with HelperResponsiveLayout { ? const EdgeInsets.all(30) : const EdgeInsets.all(15), child: DynamicTable( - withSelectAll: true, + withSelectAll: false, cellDecoration: containerDecoration, onRowSelected: (index, isSelected, row) { final selectedDevice = devicesToShow[index]; diff --git a/lib/pages/home/view/home_page_mobile.dart b/lib/pages/home/view/home_page_mobile.dart index e8371cf2..560ef0d5 100644 --- a/lib/pages/home/view/home_page_mobile.dart +++ b/lib/pages/home/view/home_page_mobile.dart @@ -18,7 +18,7 @@ class HomeMobilePage extends StatelessWidget { canPop: false, onPopInvoked: (didPop) => false, child: WebScaffold( - enableMenuSideba: false, + enableMenuSidebar: false, appBarTitle: Row( children: [ SvgPicture.asset( @@ -41,8 +41,7 @@ class HomeMobilePage extends StatelessWidget { SizedBox(height: size.height * 0.05), const Text( 'ACCESS YOUR APPS', - style: - TextStyle(fontSize: 20, fontWeight: FontWeight.w700), + style: TextStyle(fontSize: 20, fontWeight: FontWeight.w700), ), const SizedBox(height: 30), Expanded( @@ -52,8 +51,7 @@ class HomeMobilePage extends StatelessWidget { width: size.width * 0.68, child: GridView.builder( itemCount: 8, - gridDelegate: - const SliverGridDelegateWithFixedCrossAxisCount( + gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 2, crossAxisSpacing: 20.0, mainAxisSpacing: 20.0, @@ -65,8 +63,7 @@ class HomeMobilePage extends StatelessWidget { active: homeItems[index]['active'], name: homeItems[index]['title'], img: homeItems[index]['icon'], - onTap: () => - homeBloc.homeItems[index].onPress(context), + onTap: () => homeBloc.homeItems[index].onPress(context), ); }, ), diff --git a/lib/pages/home/view/home_page_web.dart b/lib/pages/home/view/home_page_web.dart index c1fc54f9..cb806dfc 100644 --- a/lib/pages/home/view/home_page_web.dart +++ b/lib/pages/home/view/home_page_web.dart @@ -20,7 +20,7 @@ class HomeWebPage extends StatelessWidget { builder: (context, state) { final homeBloc = BlocProvider.of(context); return WebScaffold( - enableMenuSideba: false, + enableMenuSidebar: false, appBarTitle: Row( children: [ SvgPicture.asset( diff --git a/lib/pages/visitor_password/bloc/visitor_password_bloc.dart b/lib/pages/visitor_password/bloc/visitor_password_bloc.dart index 02f5ef0a..151d6d1f 100644 --- a/lib/pages/visitor_password/bloc/visitor_password_bloc.dart +++ b/lib/pages/visitor_password/bloc/visitor_password_bloc.dart @@ -32,9 +32,9 @@ class VisitorPasswordBloc extends Bloc(selectTimeOfLinePassword); on(changeTime); } + final TextEditingController userNameController = TextEditingController(); final TextEditingController emailController = TextEditingController(); - final TextEditingController deviceNameController = TextEditingController(); final TextEditingController deviceIdController = TextEditingController(); final TextEditingController unitNameController = TextEditingController(); @@ -51,6 +51,7 @@ class VisitorPasswordBloc extends Bloc expirationTimeTimeStamp!) { - CustomSnackBar.displaySnackBar('Effective Time cannot be later than Expiration Time.'); + accessPeriodValidate = "Effective Time cannot be later than Expiration Time."; } else { - effectiveTime = - selectedDateTime.toString().split('.').first; // Remove seconds and milliseconds + accessPeriodValidate = ''; + effectiveTime = selectedDateTime.toString().split('.').first; effectiveTimeTimeStamp = selectedTimestamp; } } else { if (effectiveTimeTimeStamp != null && selectedTimestamp < effectiveTimeTimeStamp!) { - CustomSnackBar.displaySnackBar( - 'Expiration Time cannot be earlier than Effective Time.'); + accessPeriodValidate = 'Expiration Time cannot be earlier than Effective Time.'; } else { - expirationTime = - selectedDateTime.toString().split('.').first; // Remove seconds and milliseconds + accessPeriodValidate = ''; + expirationTime = selectedDateTime.toString().split('.').first; expirationTimeTimeStamp = selectedTimestamp; } } @@ -448,7 +448,6 @@ class VisitorPasswordBloc extends Bloc[ TextButton( onPressed: () { - Navigator.of(context).pop(true); }, child: const Text('OK'), diff --git a/lib/pages/visitor_password/view/visitor_password_dialog.dart b/lib/pages/visitor_password/view/visitor_password_dialog.dart index ad11b30f..1f014352 100644 --- a/lib/pages/visitor_password/view/visitor_password_dialog.dart +++ b/lib/pages/visitor_password/view/visitor_password_dialog.dart @@ -404,6 +404,9 @@ class VisitorPasswordDialog extends StatelessWidget { ? visitorBloc.expirationTime : visitorBloc.endTimeAccess.toString(), icon: Assets.calendarIcon), + const SizedBox(height: 10,), + Text(visitorBloc.accessPeriodValidate, + style: Theme.of(context).textTheme.bodyMedium!.copyWith(color: ColorsManager.red),), const SizedBox( height: 20, ), diff --git a/lib/utils/style.dart b/lib/utils/style.dart index 3f31f9d7..bda3665f 100644 --- a/lib/utils/style.dart +++ b/lib/utils/style.dart @@ -41,3 +41,4 @@ BoxDecoration containerDecoration = BoxDecoration( ], color: ColorsManager.boxColor, borderRadius: const BorderRadius.all(Radius.circular(10))); + diff --git a/lib/web_layout/web_scaffold.dart b/lib/web_layout/web_scaffold.dart index b4edd764..c1d6075f 100644 --- a/lib/web_layout/web_scaffold.dart +++ b/lib/web_layout/web_scaffold.dart @@ -6,7 +6,7 @@ import 'package:syncrow_web/web_layout/web_app_bar.dart'; import 'menu_sidebar.dart'; class WebScaffold extends StatelessWidget with HelperResponsiveLayout { - final bool enableMenuSideba; + final bool enableMenuSidebar; final Widget? appBarTitle; final Widget? centerBody; final Widget? rightBody; @@ -17,7 +17,7 @@ class WebScaffold extends StatelessWidget with HelperResponsiveLayout { this.centerBody, this.rightBody, this.scaffoldBody, - this.enableMenuSideba = true, + this.enableMenuSidebar = false, }); @override Widget build(BuildContext context) { @@ -49,7 +49,7 @@ class WebScaffold extends StatelessWidget with HelperResponsiveLayout { Expanded( child: Row( children: [ - if (enableMenuSideba && !isSmall) const MenuSidebar(), + if (enableMenuSidebar && !isSmall) const MenuSidebar(), Expanded(flex: 5, child: scaffoldBody!) ], ), diff --git a/pubspec.yaml b/pubspec.yaml index d187cf1a..8b327340 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -50,7 +50,6 @@ dependencies: dropdown_search: ^5.0.6 flutter_dotenv: ^5.1.0 - dev_dependencies: flutter_test: sdk: flutter