From 185ef512a1e68b589a667624e26461a61a99f05a Mon Sep 17 00:00:00 2001 From: FaizHashmiCS22 Date: Tue, 24 Dec 2024 17:25:18 +0300 Subject: [PATCH] Fisrt push --- lib/constants/app_constants.dart | 2 +- lib/models/global_config_model.dart | 12 ++++---- lib/utilities/extensions.dart | 4 +-- lib/view_models/queuing_view_model.dart | 5 ++-- lib/view_models/screen_config_view_model.dart | 23 +++++++++++++- lib/views/common_widgets/app_footer.dart | 24 ++++++++++----- .../components/priority_tickets.dart | 5 ++-- .../main_queue_screen/main_queue_screen.dart | 30 +++++++++++++++++-- 8 files changed, 80 insertions(+), 25 deletions(-) diff --git a/lib/constants/app_constants.dart b/lib/constants/app_constants.dart index e9685aa..bae5933 100644 --- a/lib/constants/app_constants.dart +++ b/lib/constants/app_constants.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:logger/logger.dart'; -bool useTestIP = true; +bool useTestIP = false; Logger logger = Logger(printer: PrettyPrinter(printEmojis: false, colors: true, dateTimeFormat: DateTimeFormat.none)); class AppStrings { diff --git a/lib/models/global_config_model.dart b/lib/models/global_config_model.dart index 722c522..646fdb8 100644 --- a/lib/models/global_config_model.dart +++ b/lib/models/global_config_model.dart @@ -50,8 +50,8 @@ class GlobalConfigurationsModel { bool isWeatherReq = false; bool isPrayerTimeReq = false; bool isRssFeedReq = false; - int? qType; - int? screenType; + QTypeEnum qTypeEnum = QTypeEnum.lab; + ScreenTypeEnum screenTypeEnum = ScreenTypeEnum.waitingAreaScreen; int? projectID; double? projectLatitude; double? projectLongitude; @@ -105,8 +105,8 @@ class GlobalConfigurationsModel { this.isWeatherReq = false, this.isPrayerTimeReq = false, this.isRssFeedReq = false, - this.qType, - this.screenType, + this.qTypeEnum = QTypeEnum.lab, + this.screenTypeEnum = ScreenTypeEnum.waitingAreaScreen, this.projectID, this.projectLatitude, this.projectLongitude, @@ -163,8 +163,8 @@ class GlobalConfigurationsModel { isWeatherReq = json['isWeatherReq'] ?? false; isPrayerTimeReq = json['isPrayerTimeReq'] ?? false; isRssFeedReq = json['isRssFeedReq'] ?? false; - qType = json['qType']; - screenType = json['screenType']; + qTypeEnum = (json['qType'] as int).toQTypeEnum(); + screenTypeEnum = (json['screenType'] as int).toScreenTypeEnum(); projectID = json['projectID']; projectLatitude = json['projectLatitude']; projectLongitude = json['projectLongitude']; diff --git a/lib/utilities/extensions.dart b/lib/utilities/extensions.dart index 0289e5e..272e247 100644 --- a/lib/utilities/extensions.dart +++ b/lib/utilities/extensions.dart @@ -110,7 +110,7 @@ extension IntToLanguageEnum on int { case 2: return LanguageEnum.arabic; default: - throw Exception('Invalid language integer: $this'); + return LanguageEnum.english; } } } @@ -123,7 +123,7 @@ extension LanguageEnumToInt on LanguageEnum { case LanguageEnum.arabic: return 2; default: - throw Exception('Invalid language Type: $this'); + return 1; } } } diff --git a/lib/view_models/queuing_view_model.dart b/lib/view_models/queuing_view_model.dart index 8c19329..c6a0980 100644 --- a/lib/view_models/queuing_view_model.dart +++ b/lib/view_models/queuing_view_model.dart @@ -54,14 +54,15 @@ class QueuingViewModel extends ChangeNotifier { } Future onHubConfigCall(var response) async { - logger.i("onHubConfigCall: $response"); + log("onHubConnected: $response"); + // ScreenConfigViewModel screenConfigViewModel = getIt.get(); + // screenConfigViewModel.updateGlobalConfigurationsModel(true); } Future onHubReconnected(var response) async { log("onHubConnected: $response"); ScreenConfigViewModel screenConfigViewModel = getIt.get(); screenConfigViewModel.updateIsHubConnected(true); - log("screenConfigViewModel: ${screenConfigViewModel.isHubConnected}"); screenConfigViewModel.notifyListeners(); } diff --git a/lib/view_models/screen_config_view_model.dart b/lib/view_models/screen_config_view_model.dart index c89852f..4f0da4d 100644 --- a/lib/view_models/screen_config_view_model.dart +++ b/lib/view_models/screen_config_view_model.dart @@ -62,6 +62,18 @@ class ScreenConfigViewModel extends ChangeNotifier { notifyListeners(); } + ScreenTypeEnum currentScreenTypeEnum = ScreenTypeEnum.waitingAreaScreen; + + updateCurrentScreenTypeEnum(ScreenTypeEnum value) { + currentScreenTypeEnum = value; + } + + QTypeEnum currentQTypeEnum = QTypeEnum.lab; + + updateCurrentQTypeEnum(QTypeEnum value) { + currentQTypeEnum = value; + } + String currentScreenIP = ""; Future getCurrentScreenIP() async { @@ -90,10 +102,19 @@ class ScreenConfigViewModel extends ChangeNotifier { if (response == null) { return; } - globalConfigurationsModel = response; + updateGlobalConfigurationsModel(value: response); + updateCurrentScreenTypeEnum(globalConfigurationsModel.screenTypeEnum); + updateCurrentQTypeEnum(globalConfigurationsModel.qTypeEnum); notifyListeners(); } + void updateGlobalConfigurationsModel({required var value, bool needNotify = false}) { + globalConfigurationsModel = value; + if (needNotify) { + notifyListeners(); + } + } + Future getInfoWidgetsDetailsFromServer() async { if (globalConfigurationsModel.isWeatherReq) { await getWeatherDetailsFromServer(); diff --git a/lib/views/common_widgets/app_footer.dart b/lib/views/common_widgets/app_footer.dart index 41c9452..0a05674 100644 --- a/lib/views/common_widgets/app_footer.dart +++ b/lib/views/common_widgets/app_footer.dart @@ -15,7 +15,7 @@ class AppFooter extends StatelessWidget { return Consumer(builder: (BuildContext context, ScreenConfigViewModel screenConfigVM, Widget? child) { return Container( color: Colors.grey.withOpacity(0.1), - height: SizeConfig.getHeightMultiplier() * 0.5, + height: SizeConfig.getHeightMultiplier() * 0.7, width: double.infinity, child: Row( crossAxisAlignment: CrossAxisAlignment.center, @@ -29,8 +29,7 @@ class AppFooter extends StatelessWidget { children: [ AppText( AppStrings.poweredBy, - medium: true, - fontSize: SizeConfig.getWidthMultiplier() * 2.6, + fontSize: SizeConfig.getWidthMultiplier() * 2, ), Text(screenConfigVM.currentScreenIP, style: TextStyle(fontWeight: FontWeight.w500, fontSize: SizeConfig.getWidthMultiplier() * 2.2)), Row( @@ -39,25 +38,34 @@ class AppFooter extends StatelessWidget { onTap: () { screenConfigVM.updateCurrentScreenRotation(ScreenOrientationEnum.portraitUp); }, - child: const Icon(Icons.arrow_upward), + child: Icon( + Icons.arrow_upward, + size: SizeConfig.getWidthMultiplier() * 2, + ), ), InkWell( onTap: () { screenConfigVM.updateCurrentScreenRotation(ScreenOrientationEnum.landscapeRight); }, - child: const Icon(Icons.arrow_forward), + child: Icon(Icons.arrow_forward, size: SizeConfig.getWidthMultiplier() * 2), ), InkWell( onTap: () { screenConfigVM.updateCurrentScreenRotation(ScreenOrientationEnum.portraitDown); }, - child: const Icon(Icons.arrow_downward), + child: Icon( + Icons.arrow_downward, + size: SizeConfig.getWidthMultiplier() * 2, + ), ), InkWell( onTap: () { screenConfigVM.updateCurrentScreenRotation(ScreenOrientationEnum.landscapeLeft); }, - child: const Icon(Icons.arrow_back), + child: Icon( + Icons.arrow_back, + size: SizeConfig.getWidthMultiplier() * 2, + ), ), ], ), @@ -77,7 +85,7 @@ class AppFooter extends StatelessWidget { padding: const EdgeInsets.symmetric(horizontal: 10), child: Marquee( text: screenConfigVM.rssFeedModel.rssFeed ?? "", - style: TextStyle(fontWeight: FontWeight.w500, fontSize: SizeConfig.getWidthMultiplier() * 5), + style: TextStyle(fontWeight: FontWeight.w500, fontSize: SizeConfig.getWidthMultiplier() * 4), scrollAxis: Axis.horizontal, crossAxisAlignment: CrossAxisAlignment.center, blankSpace: 20.0, diff --git a/lib/views/main_queue_screen/components/priority_tickets.dart b/lib/views/main_queue_screen/components/priority_tickets.dart index 25d965a..840f0ba 100644 --- a/lib/views/main_queue_screen/components/priority_tickets.dart +++ b/lib/views/main_queue_screen/components/priority_tickets.dart @@ -18,12 +18,11 @@ class PriorityTickets extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ - SizedBox(height: SizeConfig.getHeightMultiplier() * 0.7), TicketItem( ticketNo: firstTicket.ticketModel!.queueNo ?? '', scale: 1.2, blink: true, - roomNo: "roomHere", + roomNo: firstTicket.ticketModel!.roomNo ?? '', roomText: globalConfigurationsModel.roomText ?? "", isClinicAdded: false, textDirection: globalConfigurationsModel.textDirection, @@ -40,7 +39,7 @@ class PriorityTickets extends StatelessWidget { child: TicketItem( ticketNo: ticket.ticketModel!.queueNo ?? '', scale: 0.8, - roomNo: "roomHere", + roomNo: firstTicket.ticketModel!.roomNo ?? '', roomText: globalConfigurationsModel.roomText ?? "", isClinicAdded: false, textDirection: globalConfigurationsModel.textDirection, diff --git a/lib/views/main_queue_screen/main_queue_screen.dart b/lib/views/main_queue_screen/main_queue_screen.dart index 7780217..81097f5 100644 --- a/lib/views/main_queue_screen/main_queue_screen.dart +++ b/lib/views/main_queue_screen/main_queue_screen.dart @@ -133,7 +133,13 @@ class MainQueueScreen extends StatelessWidget { builder: (BuildContext context, ScreenConfigViewModel screenConfigViewModel, QueuingViewModel queuingViewModel, Widget? child) { Widget widget = const SizedBox(); // queuingViewModel.voiceCallTicket(ticketData: queuingViewModel.currentTickets.first.ticketModel); - if (queuingViewModel.currentTickets.isEmpty) { + + if (screenConfigViewModel.globalConfigurationsModel.screenTypeEnum == ScreenTypeEnum.roomLevelScreen) { + widget = PriorityTickets( + tickets: [queuingViewModel.currentTickets.first], + globalConfigurationsModel: screenConfigViewModel.globalConfigurationsModel, + ); + } else if (queuingViewModel.currentTickets.isEmpty) { widget = noPatientInQueue(); } else if (queuingViewModel.currentTickets.length > AppConstants.thresholdForListUI) { widget = PriorityTicketsSidelist( @@ -153,6 +159,25 @@ class MainQueueScreen extends StatelessWidget { ); } + int getFlexForScreenTypes(ScreenConfigViewModel screenConfigVM) { + int flex = 1; + + if (screenConfigVM.currentScreenTypeEnum == ScreenTypeEnum.roomLevelScreen) { + if (screenConfigVM.currentScreenRotation == ScreenOrientationEnum.portraitUp || screenConfigVM.currentScreenRotation == ScreenOrientationEnum.portraitDown) { + flex = 2; + } else { + flex = 3; + } + } else { + if (screenConfigVM.currentScreenRotation == ScreenOrientationEnum.portraitUp || screenConfigVM.currentScreenRotation == ScreenOrientationEnum.portraitDown) { + flex = 2; + } else { + flex = 1; + } + } + return flex; + } + Widget getBody({required BuildContext context}) { return Consumer(builder: ( BuildContext context, @@ -162,7 +187,7 @@ class MainQueueScreen extends StatelessWidget { return Column( children: [ Expanded( - flex: (screenConfigVM.currentScreenRotation == ScreenOrientationEnum.portraitUp || screenConfigVM.currentScreenRotation == ScreenOrientationEnum.portraitDown) ? 2 : 1, + flex: getFlexForScreenTypes(screenConfigVM), child: Padding( padding: const EdgeInsets.symmetric(horizontal: 20), child: Row( @@ -173,6 +198,7 @@ class MainQueueScreen extends StatelessWidget { ], )), ), + const SizedBox(height: 12), Expanded(flex: 10, child: dataContent(context: context)), ], );