From 6f26885c2076c6852ba9f843b81022327ecf10e8 Mon Sep 17 00:00:00 2001 From: "sewmina7@gmail.com" Date: Wed, 9 Aug 2023 22:49:13 +0530 Subject: [PATCH] kinda done --- lib/backend/DataManager.dart | 12 +++ lib/scanning_page.dart | 86 ++++++++++++++++++++++ lib/service_info.dart | 137 ++++++++++++++++++++++++----------- 3 files changed, 191 insertions(+), 44 deletions(-) create mode 100644 lib/scanning_page.dart diff --git a/lib/backend/DataManager.dart b/lib/backend/DataManager.dart index 083b428..446d25e 100644 --- a/lib/backend/DataManager.dart +++ b/lib/backend/DataManager.dart @@ -36,6 +36,18 @@ class _DataManager{ }catch(e){ Debug.LogError(e); } + + List _services= []; + for (var s in services) { + Map se = jsonDecode(s); + + if(DateTime.now().isAfter(DateTime.parse(se['end_time']))){ + continue; + } + + _services.add(s); + } + services = _services; } Future AddService(String name, DateTime sTime, DateTime eTime,Duration duration) async { diff --git a/lib/scanning_page.dart b/lib/scanning_page.dart new file mode 100644 index 0000000..e66958a --- /dev/null +++ b/lib/scanning_page.dart @@ -0,0 +1,86 @@ +import 'package:flutter/material.dart'; +import 'package:queue_mgr/backend/DataManager.dart'; + +class ScanningPage extends StatefulWidget { + ScanningPage({super.key,required this.id}); + String id; + @override + State createState() => _ScanningPageState(); +} + +class _ScanningPageState extends State { + int tokenID = 0; + @override + Widget build(BuildContext context) { + Map service = DataManager.instance().GetServiceById(widget.id.toString()); + + return Scaffold( + appBar: AppBar(title: Text("${service['name']} - Scan Mode"),), + body: Padding( + padding: const EdgeInsets.all(18.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon(Icons.token), + Text(" Token ID"), + ], + ), + Text(tokenID.toString(),style: TextStyle(fontSize: 65),), + + LimitedBox( + maxWidth: 300, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 30.0), + child: GridView.count(crossAxisCount: 3,shrinkWrap: true,children: List.generate(9, (index){ + return Padding( + padding: const EdgeInsets.all(8.0), + child: ElevatedButton(onPressed: (){OnButton(index+1);}, child: Text((index+1).toString(),style: TextStyle(fontSize: 20),)), + ); + }),), + ), + ), + Container( + height:95, + width: 135, + padding: const EdgeInsets.symmetric(horizontal: 30.0,vertical: 10), + child: ElevatedButton(onPressed: (){OnButton(0);}, child: Text("0",style: TextStyle(fontSize: 20))), + ) + + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + ElevatedButton(onPressed: (){ + tokenID=0; + setState(() { + + }); + }, child: Padding( + padding: const EdgeInsets.all(18.0), + child: Text("Clear",style: TextStyle(fontSize: 15)), + ),), + ElevatedButton(onPressed: (){}, child: Padding( + padding: const EdgeInsets.all(18.0), + child: Text("Complete",style: TextStyle(fontSize: 15)), + )) + ], + ) + ], + ), + ), + ); + } + + void OnButton(int num){ + tokenID = int.parse(tokenID.toString() + num.toString()); + setState(() { + + }); + } +} diff --git a/lib/service_info.dart b/lib/service_info.dart index 87c2a9e..294044b 100644 --- a/lib/service_info.dart +++ b/lib/service_info.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:queue_mgr/backend/DataManager.dart'; +import 'package:queue_mgr/scanning_page.dart'; class ServicePage extends StatefulWidget { ServicePage({super.key,required this.serviceId}); @@ -12,62 +13,110 @@ class _ServicePageState extends State { @override Widget build(BuildContext context) { Map service = DataManager.instance().GetServiceById(widget.serviceId.toString()); - + List members = service['members'].toString().split(','); + members.removeAt(0); return Scaffold( appBar: AppBar(title: Text(service['name']),), - body: Padding( - padding: const EdgeInsets.all(12.0), - child: Column( - children: [ - GridView.count(shrinkWrap: true,crossAxisCount: 2,children: [ - Card(child: - Column( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - Row(mainAxisAlignment: MainAxisAlignment.center,children: [Icon(Icons.play_arrow),Text(" Starting Time")],), + body: SafeArea( + child: SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(12.0), + child: Column( + children: [ + GridView.count(shrinkWrap: true,crossAxisCount: 2,children: [ + Card(child: Column( + mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ - Text(dateFormat.format(DateTime.parse(service['start_time']))), - Text(timeFormat.format(DateTime.parse(service['start_time'])),style: TextStyle(fontSize: 20)), + Row(mainAxisAlignment: MainAxisAlignment.center,children: [Icon(Icons.play_arrow),Text(" Starting Time")],), + Column( + children: [ + Text(dateFormat.format(DateTime.parse(service['start_time']))), + Text(timeFormat.format(DateTime.parse(service['start_time'])),style: TextStyle(fontSize: 20)), + ], + ), + Container(height: 20,) + ], + ),), + Card(child: + Column( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Row(mainAxisAlignment: MainAxisAlignment.center,children: [Icon(Icons.stop),Text(" Ending Time")],), + Column( + children: [ + Text(dateFormat.format(DateTime.parse(service['end_time']))), + Text(timeFormat.format(DateTime.parse(service['end_time'])),style: TextStyle(fontSize: 20)), + ], + ), + Container(height: 20,) + ], + ),), + + ],), + Card( + child: Padding( + padding: const EdgeInsets.all(12.0), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon(Icons.people_alt_rounded), + Text(" Queue Length"), + ], + ), + Text(members.length.toString(),style: TextStyle(fontSize: 25),) ], ), - Container(height: 20,) - ], - ),), - Card(child: - Column( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - Row(mainAxisAlignment: MainAxisAlignment.center,children: [Icon(Icons.stop),Text(" Ending Time")],), - Column( + ), + ), + SizedBox( + height: 50, + ), + ElevatedButton(onPressed: (){ + Navigator.of(context).push(MaterialPageRoute(builder: (context)=> ScanningPage(id: widget.serviceId))); + }, child: Padding( + padding: const EdgeInsets.all(20.0), + child: Column( children: [ - Text(dateFormat.format(DateTime.parse(service['end_time']))), - Text(timeFormat.format(DateTime.parse(service['end_time'])),style: TextStyle(fontSize: 20)), + Icon(Icons.qr_code_scanner), + SizedBox(height: 10,), + Text("Scan Mode"), ], ), - Container(height: 20,) - ], - ),), - - ],), - Card( - child: Padding( - padding: const EdgeInsets.all(12.0), - child: Column( - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.center, + )), + SizedBox(height: 50,), + (members.length >0) ? Card( + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( children: [ - Icon(Icons.people_alt_rounded), - Text(" Queue Length"), + Row(mainAxisAlignment: MainAxisAlignment.center,children: [ + Icon(Icons.emoji_people), + Text(" Queue") + ],), + SizedBox(height: 20,), + GridView.count( + crossAxisCount: 5, + mainAxisSpacing: 10, + crossAxisSpacing: 10, + shrinkWrap: true, + children: List.generate(members.length, (index){ + if(members[index].length <=0){return Container();} + return Container(decoration: BoxDecoration(borderRadius: BorderRadius.circular(20),color: Colors.black.withOpacity(0.2)),child: Padding( + padding: const EdgeInsets.all(8.0), + child: Center(child: Text(members[index],style: TextStyle(fontSize: 18),)), + )); + }), + ), ], ), - Text(service['members'].toString().split(',').length.toString(),style: TextStyle(fontSize: 25),) - ], - ), - ), - ) - ], + ), + ) : Container() + ], + ), + ), ), ), );