From 8c9c1e43a0ce6246d40b0b326375177065983790 Mon Sep 17 00:00:00 2001 From: pjb4466 <70671491+pjb4466@users.noreply.github.com> Date: Sat, 12 Dec 2020 16:05:49 -0500 Subject: [PATCH] Added prompt to include a reason for office hours visit --- nginx/public/index.html | 8 +++++--- nginx/public/officeHours.js | 7 +++++-- src/main/scala/model/OfficeHoursServer.scala | 16 ++++++++++++---- src/main/scala/model/StudentInQueue.scala | 5 ++++- 4 files changed, 26 insertions(+), 10 deletions(-) diff --git a/nginx/public/index.html b/nginx/public/index.html index 5443216..450b758 100644 --- a/nginx/public/index.html +++ b/nginx/public/index.html @@ -9,10 +9,12 @@
-

Welcome!

+

Welcome to Office Hours!

-

Name

- +

In the first box enter your UBIT name,

+

in the second give a reason for your visit

+
+


diff --git a/nginx/public/officeHours.js b/nginx/public/officeHours.js index 3514c14..cb87b5b 100644 --- a/nginx/public/officeHours.js +++ b/nginx/public/officeHours.js @@ -11,7 +11,7 @@ function displayQueue(queueJSON) { const queue = JSON.parse(queueJSON); let formattedQueue = ""; for (const student of queue) { - formattedQueue += student['username'] + " has been waiting since " + student['timestamp'] + "
" + formattedQueue += student['username'] + " has been waiting since " + student['timestamp'] + ". They are inquiring about: " + student['issue'] + "
" } document.getElementById("queue").innerHTML = formattedQueue; } @@ -19,8 +19,11 @@ function displayQueue(queueJSON) { function enterQueue() { let name = document.getElementById("name").value; - socket.emit("enter_queue", name); + let issue = document.getElementById("issue").value; + let userMap = [name, issue] + socket.emit("enter_queue", userMap); document.getElementById("name").value = ""; + document.getElementById("issue").value = ""; } function readyToHelp() { diff --git a/src/main/scala/model/OfficeHoursServer.scala b/src/main/scala/model/OfficeHoursServer.scala index 09ef61b..c896616 100644 --- a/src/main/scala/model/OfficeHoursServer.scala +++ b/src/main/scala/model/OfficeHoursServer.scala @@ -16,6 +16,8 @@ class OfficeHoursServer() { var usernameToSocket: Map[String, SocketIOClient] = Map() var socketToUsername: Map[SocketIOClient, String] = Map() + var socketToStudentIQ: Map[SocketIOClient, StudentInQueue] = Map() + var studentIQToSocket: Map[StudentInQueue, SocketIOClient] = Map() val config: Configuration = new Configuration { setHostname("0.0.0.0") @@ -25,7 +27,7 @@ class OfficeHoursServer() { val server: SocketIOServer = new SocketIOServer(config) server.addDisconnectListener(new DisconnectionListener(this)) - server.addEventListener("enter_queue", classOf[String], new EnterQueueListener(this)) + server.addEventListener("enter_queue", classOf[Array[String]], new EnterQueueListener(this)) server.addEventListener("ready_for_student", classOf[Nothing], new ReadyForStudentListener(this)) server.start() @@ -58,9 +60,15 @@ class DisconnectionListener(server: OfficeHoursServer) extends DisconnectListene } -class EnterQueueListener(server: OfficeHoursServer) extends DataListener[String] { - override def onData(socket: SocketIOClient, username: String, ackRequest: AckRequest): Unit = { - server.database.addStudentToQueue(StudentInQueue(username, System.nanoTime())) +class EnterQueueListener(server: OfficeHoursServer) extends DataListener[Array[String]] { + override def onData(socket: SocketIOClient, arguments: Array[String], ackRequest: AckRequest): Unit = { + val username: String = arguments.apply(0) + val issue: String = arguments.apply(1) + val student: StudentInQueue = new StudentInQueue(username, System.nanoTime()) + student.issue = issue + server.database.addStudentToQueue(student) + server.socketToStudentIQ += (socket -> student) + server.studentIQToSocket += (student -> socket) server.socketToUsername += (socket -> username) server.usernameToSocket += (username -> socket) server.server.getBroadcastOperations.sendEvent("queue", server.queueJSON()) diff --git a/src/main/scala/model/StudentInQueue.scala b/src/main/scala/model/StudentInQueue.scala index 464108f..5ddbed3 100644 --- a/src/main/scala/model/StudentInQueue.scala +++ b/src/main/scala/model/StudentInQueue.scala @@ -25,10 +25,13 @@ object StudentInQueue { class StudentInQueue(val username: String, val timestamp: Long) { + var issue: String = "Reason not specified" + def asJsValue(): JsValue ={ val messageMap: Map[String, JsValue] = Map( "username" -> Json.toJson(username), - "timestamp" -> Json.toJson(timestamp) + "timestamp" -> Json.toJson(timestamp), + "issue" -> Json.toJson(issue) ) Json.toJson(messageMap) }