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)
}