diff --git a/assets/images/time_icon.svg b/assets/images/time_icon.svg new file mode 100644 index 00000000..a8f06677 --- /dev/null +++ b/assets/images/time_icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/lib/main.dart b/lib/main.dart index c00a8da7..af74170d 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -59,7 +59,6 @@ class MyApp extends StatelessWidget { colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), // Set up color scheme useMaterial3: true, // Enable Material 3 ), - // home: VisitorPasswordDialog() home:isLoggedIn == 'Success' ? const HomePage() : const LoginPage(), )); } diff --git a/lib/pages/access_management/view/access_management.dart b/lib/pages/access_management/view/access_management.dart index e2f79429..e202194f 100644 --- a/lib/pages/access_management/view/access_management.dart +++ b/lib/pages/access_management/view/access_management.dart @@ -125,6 +125,7 @@ class AccessManagementPage extends StatelessWidget { width: 15, ), DateTimeWebWidget( + isTime: false, isRequired: false, title: 'Access Time', size: size, diff --git a/lib/pages/common/custom_table.dart b/lib/pages/common/custom_table.dart index c2a83273..86f34124 100644 --- a/lib/pages/common/custom_table.dart +++ b/lib/pages/common/custom_table.dart @@ -143,7 +143,7 @@ class _DynamicTableState extends State { alignment: Alignment.centerLeft, child: Padding( padding: const EdgeInsets.all(8.0), - child: Text(title, style: const TextStyle(fontWeight: FontWeight.bold)), + child: Text(title, style: const TextStyle(fontWeight: FontWeight.w400,fontSize: 13,color: Color(0xFF999999))), ), ), ); diff --git a/lib/pages/common/custom_web_textfield.dart b/lib/pages/common/custom_web_textfield.dart index 82fb86c9..daaa2c13 100644 --- a/lib/pages/common/custom_web_textfield.dart +++ b/lib/pages/common/custom_web_textfield.dart @@ -37,8 +37,7 @@ class CustomWebTextField extends StatelessWidget { .bodyMedium! .copyWith(color: Colors.red), ), - Text(textFieldName, - style: Theme.of(context).textTheme.bodySmall!.copyWith( + Text(textFieldName, style: Theme.of(context).textTheme.bodySmall!.copyWith( color: Colors.black,fontSize: 13),), ], ), diff --git a/lib/pages/common/date_time_widget.dart b/lib/pages/common/date_time_widget.dart index f5034342..39dc582c 100644 --- a/lib/pages/common/date_time_widget.dart +++ b/lib/pages/common/date_time_widget.dart @@ -12,6 +12,7 @@ class DateTimeWebWidget extends StatelessWidget { required this.title, required this.startTime, required this.endTime, + required this.isTime, required this.firstString, required this.secondString, }); @@ -19,6 +20,7 @@ class DateTimeWebWidget extends StatelessWidget { final Size size; final String title; final bool isRequired; + final bool isTime; final String firstString; final String secondString; final Function()? startTime; @@ -66,6 +68,8 @@ class DateTimeWebWidget extends StatelessWidget { child: Text(secondString, style: Theme.of(context).textTheme.bodySmall!.copyWith( color: ColorsManager.grayColor,fontSize: 12,fontWeight: FontWeight.w400),)), SvgPicture.asset( + isTime? + Assets.timeIcon: Assets.calendarIcon, ), ], diff --git a/lib/pages/visitor_password/bloc/visitor_password_bloc.dart b/lib/pages/visitor_password/bloc/visitor_password_bloc.dart index e620cc59..65d82dda 100644 --- a/lib/pages/visitor_password/bloc/visitor_password_bloc.dart +++ b/lib/pages/visitor_password/bloc/visitor_password_bloc.dart @@ -262,12 +262,10 @@ class VisitorPasswordBloc Emitter emit) async { try { generate7DigitNumber(); - // emit(DeviceLoaded()); await AccessMangApi().postOffLineOneTime( email: event.email, devicesUuid: selectedDevices, passwordName: event.passwordName); - // emit(TableLoaded(data)); } catch (e) { emit(FailedState(e.toString())); } @@ -278,14 +276,14 @@ class VisitorPasswordBloc Emitter emit) async { try { generate7DigitNumber(); - // emit(DeviceLoaded()); await AccessMangApi().postOffLineMultipleTime( email: event.email, devicesUuid: selectedDevices, passwordName: event.passwordName, - invalidTime: event.invalidTime, - effectiveTime: event.effectiveTime); - // emit(TableLoaded(data)); + invalidTime: expirationTimeTimeStamp.toString(), + effectiveTime: effectiveTimeTimeStamp.toString(), + + ); } catch (e) { emit(FailedState(e.toString())); } @@ -335,8 +333,6 @@ class VisitorPasswordBloc return matchesDeviceName && matchesDeviceId; }).toList(); - // emit(TableLoaded(filteredData)); - add(UpdateFilteredDevicesEvent(filteredData)); } @@ -414,11 +410,6 @@ class VisitorPasswordBloc expirationTimeTimeStamp = selectedTimestamp; } } - print('effectiveTime=$effectiveTime'); - print('expirationTime=$expirationTime'); - - print('expirationTimeTimeStamp=$expirationTimeTimeStamp'); - print('effectiveTimeTimeStamp=$effectiveTimeTimeStamp'); emit(TimeSelectedState()); } } diff --git a/lib/pages/visitor_password/view/add_device_dialog.dart b/lib/pages/visitor_password/view/add_device_dialog.dart index 844e0ca9..7f9ca94e 100644 --- a/lib/pages/visitor_password/view/add_device_dialog.dart +++ b/lib/pages/visitor_password/view/add_device_dialog.dart @@ -55,7 +55,11 @@ class AddDeviceDialog extends StatelessWidget { ), ), SizedBox(width: 10,), - Text('Only online accessible devices can be added'), + Text('Only online accessible devices can be added', + style: Theme.of(context).textTheme.bodySmall!.copyWith( + fontWeight: FontWeight.w400, + fontSize: 12, + color: ColorsManager.grayColor),), ], ) ), diff --git a/lib/pages/visitor_password/view/repeat_widget.dart b/lib/pages/visitor_password/view/repeat_widget.dart index 73770100..31bedb05 100644 --- a/lib/pages/visitor_password/view/repeat_widget.dart +++ b/lib/pages/visitor_password/view/repeat_widget.dart @@ -14,28 +14,29 @@ class RepeatWidget extends StatelessWidget { @override Widget build(BuildContext context) { Size size = MediaQuery.of(context).size; - return BlocBuilder( builder: (context, state) { final visitorBloc = BlocProvider.of(context); return Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, children: [ + Container( - width: size.width * 0.8, - height: size.height * 0.06, // Adjust height as needed - child: ListView( - scrollDirection: Axis.horizontal, + height: size.height * 0.05, // Adjust height as needed + child: Wrap( children: visitorBloc.days.map((day) { return Container( - width: size.width* 0.09, + width: size.width * 0.05, child: CheckboxListTile( + contentPadding: EdgeInsets.zero, title: Text( day['day']!, style: TextStyle( - fontSize: 18, + fontSize: 12, color: visitorBloc.selectedDays.contains(day['key']) ? Colors.black - : ColorsManager.grayColor, + : ColorsManager.blackColor, ), ), value: visitorBloc.selectedDays.contains(day['key']), @@ -52,27 +53,23 @@ class RepeatWidget extends StatelessWidget { Padding( padding: const EdgeInsets.all(8.0), child: DateTimeWebWidget( + isTime: true, isRequired: false, title: '', size: size, endTime: () { - print('sadasd'); - visitorBloc.add(SelectTimeEvent( - context: context, - isEffective: false)); - new Future.delayed(const Duration(milliseconds: 500), () { + visitorBloc.add(SelectTimeEvent( + context: context, + isEffective: false)); + Future.delayed(const Duration(milliseconds: 500), () { visitorBloc.add(ChangeTimeEvent(val: visitorBloc.endTime, isStartEndTime: true)); - }); - - }, startTime: () { - new Future.delayed(const Duration(milliseconds: 500), () { + Future.delayed(const Duration(milliseconds: 500), () { visitorBloc.add(ChangeTimeEvent(val: visitorBloc.endTime, isStartEndTime: true)); }); visitorBloc.add(SelectTimeEvent(context: context, isEffective: true)); - }, firstString:visitorBloc.effectiveTime , secondString: visitorBloc.expirationTime , diff --git a/lib/pages/visitor_password/view/visitor_password_dialog.dart b/lib/pages/visitor_password/view/visitor_password_dialog.dart index 2299877f..9998ec3e 100644 --- a/lib/pages/visitor_password/view/visitor_password_dialog.dart +++ b/lib/pages/visitor_password/view/visitor_password_dialog.dart @@ -245,10 +245,10 @@ class VisitorPasswordDialog extends StatelessWidget { height: 20, ), if ((visitorBloc.usageFrequencySelected != 'One-Time' || - visitorBloc.accessTypeSelected != - 'Offline Password') && - (visitorBloc.usageFrequencySelected != '')) + visitorBloc.accessTypeSelected != 'Offline Password') && + (visitorBloc.usageFrequencySelected != '')) DateTimeWebWidget( + isTime: false, isRequired: true, title: 'Access Period', size: size, @@ -282,42 +282,44 @@ class VisitorPasswordDialog extends StatelessWidget { .bodyMedium! .copyWith(color: Colors.red), ), - Text('Access Devices', style: Theme.of(context).textTheme.bodySmall!.copyWith( + Text('Access Devices', + style: Theme.of(context).textTheme.bodySmall!.copyWith( color: Colors.black,fontSize: 13),), ], ), Text( - 'Within the validity period, each device can be unlocked only once.',style: Theme.of(context).textTheme.bodySmall!.copyWith( + 'Within the validity period, each device can be unlocked only once.', + style: Theme.of(context).textTheme.bodySmall!.copyWith( fontWeight: FontWeight.w400, color: ColorsManager.grayColor,fontSize: 9),), const SizedBox( height: 20, ), - if (visitorBloc.usageFrequencySelected == - 'Periodic' && - visitorBloc.accessTypeSelected == - 'Online Password') + if (visitorBloc.usageFrequencySelected == 'Periodic' && + visitorBloc.accessTypeSelected == 'Online Password') SizedBox( width: 100, - child: ListTile( - contentPadding: EdgeInsets.zero, - leading: const Text('Repeat'), - trailing: Transform.scale( - scale: .8, - child: CupertinoSwitch( - value: visitorBloc.repeat, - onChanged: (value) { - visitorBloc.add(ToggleRepeatEvent()); - }, - applyTheme: true, - ), - ), + child: Column( + children: [ + Text('Repeat', + style: Theme.of(context).textTheme.bodySmall!.copyWith( + color: Colors.black,fontSize: 13),), + Transform.scale( + scale: .8, + child: CupertinoSwitch( + value: visitorBloc.repeat, + onChanged: (value) { + visitorBloc.add(ToggleRepeatEvent()); + }, + applyTheme: true, + ), + ), + ], + ), ), - if (visitorBloc.usageFrequencySelected == - 'Periodic' && - visitorBloc.accessTypeSelected == - 'Online Password') + if (visitorBloc.usageFrequencySelected == 'Periodic' && + visitorBloc.accessTypeSelected == 'Online Password') isRepeat ? const RepeatWidget() : const SizedBox(), Container( decoration: containerDecoration, @@ -406,70 +408,40 @@ class VisitorPasswordDialog extends StatelessWidget { child: DefaultButton( borderRadius: 8, onPressed: () { - if (visitorBloc.usageFrequencySelected == - 'One-Time' && - visitorBloc.accessTypeSelected == - 'Online Password') { + if (visitorBloc.usageFrequencySelected == 'One-Time' && + visitorBloc.accessTypeSelected == 'Online Password') { visitorBloc.add( OnlineOneTimePasswordEvent( context: context, - passwordName: visitorBloc - .userNameController.text, - email: visitorBloc - .emailController.text)); - } else if (visitorBloc - .usageFrequencySelected == - 'Periodic' && - visitorBloc.accessTypeSelected == - 'Online Password') { - visitorBloc.add( - OnlineMultipleTimePasswordEvent( - passwordName: - visitorBloc - .userNameController - .text, - email: - visitorBloc - .emailController.text, - effectiveTime: visitorBloc - .effectiveTimeTimeStamp - .toString(), - invalidTime: visitorBloc - .expirationTimeTimeStamp - .toString())); - } else if (visitorBloc - .usageFrequencySelected == - 'One-Time' && - visitorBloc.accessTypeSelected == - 'Offline Password') { - visitorBloc - .add(OfflineOneTimePasswordEvent( - passwordName: visitorBloc - .userNameController.text, - email: - visitorBloc.emailController.text, + passwordName: visitorBloc.userNameController.text, + email: visitorBloc.emailController.text)); + } else if (visitorBloc.usageFrequencySelected == 'Periodic' && + visitorBloc.accessTypeSelected == 'Online Password') { + visitorBloc.add(OnlineMultipleTimePasswordEvent( + passwordName: visitorBloc.userNameController.text, + email: visitorBloc.emailController.text, + effectiveTime: visitorBloc.effectiveTimeTimeStamp.toString(), + invalidTime: visitorBloc.expirationTimeTimeStamp.toString())); + } else if (visitorBloc.usageFrequencySelected == 'One-Time' && + visitorBloc.accessTypeSelected == 'Offline Password') { + visitorBloc.add(OfflineOneTimePasswordEvent( + passwordName: visitorBloc.userNameController.text, + email: visitorBloc.emailController.text, )); - } else if (visitorBloc - .usageFrequencySelected == - 'Periodic' && - visitorBloc.accessTypeSelected == - 'Offline Password') { + } else if (visitorBloc.usageFrequencySelected == 'Periodic' && + visitorBloc.accessTypeSelected == 'Offline Password') { visitorBloc.add( OfflineMultipleTimePasswordEvent( - passwordName: visitorBloc - .userNameController.text, - email: visitorBloc - .emailController.text, - effectiveTime: visitorBloc - .effectiveTimeTimeStamp - .toString(), - invalidTime: visitorBloc - .expirationTimeTimeStamp - .toString())); + passwordName: visitorBloc.userNameController.text, + email: visitorBloc.emailController.text, + effectiveTime: visitorBloc.effectiveTimeTimeStamp.toString(), + invalidTime: visitorBloc.expirationTimeTimeStamp.toString())); } }, - child: const Text( - 'Ok', + child: Text('Ok', + style: Theme.of(context).textTheme.bodySmall!.copyWith( + fontWeight: FontWeight.w400, + color: ColorsManager.whiteColors,fontSize: 16), ), ), ), @@ -531,7 +503,9 @@ class VisitorPasswordDialog extends StatelessWidget { } }, borderRadius: 8, - child: Text('Ok'), + child: Text('Ok', style: Theme.of(context).textTheme.bodySmall!.copyWith( + fontWeight: FontWeight.w400, + color: ColorsManager.whiteColors,fontSize: 16),), ), ), ], diff --git a/lib/utils/constants/assets.dart b/lib/utils/constants/assets.dart index 2c2a6e43..62f991fe 100644 --- a/lib/utils/constants/assets.dart +++ b/lib/utils/constants/assets.dart @@ -25,4 +25,5 @@ class Assets { static const String assetIcon = "assets/images/asset_icon.svg"; static const String calendarIcon = "assets/images/calendar_icon.svg"; static const String deviceNoteIcon = "assets/images/device_note.svg"; + static const String timeIcon = "assets/images/time_icon.svg"; }