From 7673d773fe8c0161d7ca5e7d97899f2b9b2e1de6 Mon Sep 17 00:00:00 2001 From: luyujun Date: Sat, 12 Dec 2020 12:49:13 -0500 Subject: [PATCH 1/2] finishing doing the contribution --- nginx/public/index.html | 3 ++- nginx/public/officeHours.js | 10 ++++++++-- src/main/scala/model/OfficeHoursServer.scala | 12 +++++++++--- src/main/scala/model/StudentInQueue.scala | 9 +++++---- src/main/scala/model/database/Database.scala | 3 ++- 5 files changed, 26 insertions(+), 11 deletions(-) diff --git a/nginx/public/index.html b/nginx/public/index.html index 5443216..f8f510a 100644 --- a/nginx/public/index.html +++ b/nginx/public/index.html @@ -11,8 +11,9 @@

Welcome!

-

Name

+

put your name in the first box and write problem description for your problem in the second box

+

diff --git a/nginx/public/officeHours.js b/nginx/public/officeHours.js index 3514c14..e696a9a 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'] + " and has a description about his/her problem that '" +student['description']+ "'" + "
" } document.getElementById("queue").innerHTML = formattedQueue; } @@ -19,8 +19,14 @@ function displayQueue(queueJSON) { function enterQueue() { let name = document.getElementById("name").value; - socket.emit("enter_queue", name); + let problem = document.getElementById("description").value + let sendfile = new Map() + sendfile["name"] = name + sendfile["description"] = problem + var sendstuff = JSON.stringify(sendfile) + socket.emit("enter_queue", sendstuff); document.getElementById("name").value = ""; + document.getElementById("description").value = ""; } function readyToHelp() { diff --git a/src/main/scala/model/OfficeHoursServer.scala b/src/main/scala/model/OfficeHoursServer.scala index 09ef61b..4ef2862 100644 --- a/src/main/scala/model/OfficeHoursServer.scala +++ b/src/main/scala/model/OfficeHoursServer.scala @@ -6,6 +6,7 @@ import model.database.{Database, DatabaseAPI, TestingDatabase} import play.api.libs.json.{JsValue, Json} + class OfficeHoursServer() { val database: DatabaseAPI = if(Configuration.DEV_MODE){ @@ -60,9 +61,14 @@ 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())) - server.socketToUsername += (socket -> username) - server.usernameToSocket += (username -> socket) + val parsed: JsValue = Json.parse(username) + // unused values, but this is how we would extract message and timestamp + val username1: String = (parsed \ "name").as[String] + val timestamp1: String = (parsed \ "description").as[String] + + server.database.addStudentToQueue(StudentInQueue(username1,System.nanoTime(),timestamp1)) + server.socketToUsername += (socket -> username1) + server.usernameToSocket += (username1 -> 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..bce45a1 100644 --- a/src/main/scala/model/StudentInQueue.scala +++ b/src/main/scala/model/StudentInQueue.scala @@ -16,19 +16,20 @@ object StudentInQueue { output } - def apply(username: String, timestamp: Long): StudentInQueue = { - new StudentInQueue(cleanString(username), timestamp) + def apply(username: String, timestamp: Long,description:String): StudentInQueue = { + new StudentInQueue(cleanString(username), timestamp,description) } } -class StudentInQueue(val username: String, val timestamp: Long) { +class StudentInQueue(val username: String, val timestamp: Long, val description:String) { def asJsValue(): JsValue ={ val messageMap: Map[String, JsValue] = Map( "username" -> Json.toJson(username), - "timestamp" -> Json.toJson(timestamp) + "timestamp" -> Json.toJson(timestamp), + "description" -> Json.toJson(description) ) Json.toJson(messageMap) } diff --git a/src/main/scala/model/database/Database.scala b/src/main/scala/model/database/Database.scala index bbc9f7a..af7ea28 100644 --- a/src/main/scala/model/database/Database.scala +++ b/src/main/scala/model/database/Database.scala @@ -49,7 +49,8 @@ class Database extends DatabaseAPI{ while (result.next()) { val username = result.getString("username") val timestamp = result.getLong("timestamp") - queue = new StudentInQueue(username, timestamp) :: queue + val description = result.getString("description") + queue = new StudentInQueue(username, timestamp,description) :: queue } queue.reverse From c02859cc8eac08ef836a92cbd345cf00612f4b26 Mon Sep 17 00:00:00 2001 From: luyujun Date: Sat, 12 Dec 2020 12:54:29 -0500 Subject: [PATCH 2/2] finishing doing the contribution --- src/main/scala/model/OfficeHoursServer.scala | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/scala/model/OfficeHoursServer.scala b/src/main/scala/model/OfficeHoursServer.scala index 4ef2862..3bab169 100644 --- a/src/main/scala/model/OfficeHoursServer.scala +++ b/src/main/scala/model/OfficeHoursServer.scala @@ -8,6 +8,7 @@ import play.api.libs.json.{JsValue, Json} class OfficeHoursServer() { + //come on val database: DatabaseAPI = if(Configuration.DEV_MODE){ new TestingDatabase