commit 08/10/2025 WebApp
This commit is contained in:
@@ -101,6 +101,8 @@ $(document).ready(function () {
|
|||||||
let $schedulehour = $schedulemodal.find('#schedulehour');
|
let $schedulehour = $schedulemodal.find('#schedulehour');
|
||||||
// number input 0-59
|
// number input 0-59
|
||||||
let $scheduleminute = $schedulemodal.find('#scheduleminute');
|
let $scheduleminute = $schedulemodal.find('#scheduleminute');
|
||||||
|
|
||||||
|
//TODO ganti dropdown with list of messages from MessageBank
|
||||||
// text input
|
// text input
|
||||||
let $schedulesoundpath = $schedulemodal.find('#schedulesoundpath');
|
let $schedulesoundpath = $schedulemodal.find('#schedulesoundpath');
|
||||||
// number input 0-5
|
// number input 0-5
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import database.MariaDB
|
|||||||
import database.Messagebank
|
import database.Messagebank
|
||||||
import database.SoundChannel
|
import database.SoundChannel
|
||||||
import database.Soundbank
|
import database.Soundbank
|
||||||
|
import database.ScheduleBank
|
||||||
import db
|
import db
|
||||||
import io.javalin.Javalin
|
import io.javalin.Javalin
|
||||||
import io.javalin.apibuilder.ApiBuilder.before
|
import io.javalin.apibuilder.ApiBuilder.before
|
||||||
@@ -202,7 +203,8 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
it.result(MariaDB.ArrayListtoString(db.soundDB.List))
|
it.result(MariaDB.ArrayListtoString(db.soundDB.List))
|
||||||
}
|
}
|
||||||
get("ListFiles"){
|
get("ListFiles"){
|
||||||
it.result(objectmapper.writeValueAsString(ListAudioFiles("C:\\soundbank")))
|
//it.result(objectmapper.writeValueAsString(ListAudioFiles("C:\\soundbank")))
|
||||||
|
|
||||||
}
|
}
|
||||||
post("Add") {
|
post("Add") {
|
||||||
try {
|
try {
|
||||||
@@ -644,6 +646,7 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
// get timer list
|
// get timer list
|
||||||
it.result(MariaDB.ArrayListtoString(db.scheduleDB.List))
|
it.result(MariaDB.ArrayListtoString(db.scheduleDB.List))
|
||||||
}
|
}
|
||||||
|
|
||||||
delete("List") {
|
delete("List") {
|
||||||
// truncate timer table
|
// truncate timer table
|
||||||
if (db.scheduleDB.Clear()) {
|
if (db.scheduleDB.Clear()) {
|
||||||
@@ -655,6 +658,38 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
}
|
}
|
||||||
post("Add"){
|
post("Add"){
|
||||||
// TODO add new schedule
|
// TODO add new schedule
|
||||||
|
// recheck lagi tambahan steph
|
||||||
|
val json: JsonNode = objectmapper.readTree(it.body())
|
||||||
|
val description = json.get("Description")?.asText("") ?: ""
|
||||||
|
val day = json.get("Day")?.asText("") ?: ""
|
||||||
|
val time = json.get("Time")?.asText("") ?: ""
|
||||||
|
val soundpath = json.get("Soundpath")?.asText("") ?: ""
|
||||||
|
val repeat = json.get("Repeat")?.asInt()?.toUByte() ?: 0u
|
||||||
|
val enable = json.get("Enable")?.asBoolean() ?: false
|
||||||
|
val broadcast_zones = json.get("BroadcastZones")?.asText("") ?: ""
|
||||||
|
val language = json.get("Language")?.asText("") ?: ""
|
||||||
|
if (ValidString(description)){
|
||||||
|
if (ValidString(day) && ValidScheduleDay(day)){
|
||||||
|
if (ValidString(time) && ValidScheduleTime(time)){
|
||||||
|
if (ValidString(soundpath) && ValidFile(soundpath)){
|
||||||
|
if (repeat in 0u..127u){
|
||||||
|
if (ValidString(broadcast_zones)){
|
||||||
|
val zones = broadcast_zones.split(";")
|
||||||
|
if (zones.all { zz -> db.broadcastDB.List.any { xx -> xx.description.equals(zz,true) } }){
|
||||||
|
if (ValidString(language) && Language.entries.any{ lang -> lang.name == language }){
|
||||||
|
val newvalue = ScheduleBank(0u, description, day, time, soundpath, repeat, enable, broadcast_zones, language)
|
||||||
|
if (db.scheduleDB.Add(newvalue)){
|
||||||
|
db.scheduleDB.Resort()
|
||||||
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
} else it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to add schedule to database")))
|
||||||
|
} else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid Language")))
|
||||||
|
} else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Contains unsupported BroadcastZones")))
|
||||||
|
} else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid BroadcastZones")))
|
||||||
|
} else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid Repeat, must be between 0-127")))
|
||||||
|
} else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid Soundpath")))
|
||||||
|
} else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid Time format, must be HH:mm")))
|
||||||
|
} else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid Day format")))
|
||||||
|
} else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid Description")))
|
||||||
}
|
}
|
||||||
delete("DeleteByIndex/{index}") {
|
delete("DeleteByIndex/{index}") {
|
||||||
// delete by index
|
// delete by index
|
||||||
@@ -785,6 +820,17 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid XLSX file")))
|
it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid XLSX file")))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Kirim list message dan broadcast zones untuk ADD/Edit schedule
|
||||||
|
//TODO add at js file for messagebank and broadcast zones values
|
||||||
|
get("GetMessageAndBroadcastZones") {
|
||||||
|
val result = object {
|
||||||
|
//TODO filter message without input variable
|
||||||
|
val messages = db.messageDB.List.filter { mb -> !mb.Message_Detail.contains("[") && !mb.Message_Detail.contains("]") }
|
||||||
|
val broadcastzones = db.broadcastDB.List
|
||||||
|
}
|
||||||
|
it.result(objectmapper.writeValueAsString(result))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
path("Log") {
|
path("Log") {
|
||||||
get("List") { get1 ->
|
get("List") { get1 ->
|
||||||
@@ -1084,6 +1130,73 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Steph : coba tambah untuk QueuePaging Table. Belum ada di JS file(?)
|
||||||
|
path("QueuePaging"){
|
||||||
|
|
||||||
|
get("List"){
|
||||||
|
it.result(MariaDB.ArrayListtoString(db.queuepagingDB.List))
|
||||||
|
}
|
||||||
|
|
||||||
|
delete("List"){
|
||||||
|
// truncate queue paging table
|
||||||
|
if (db.queuepagingDB.Clear()) {
|
||||||
|
db.queuepagingDB.Get()
|
||||||
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
} else {
|
||||||
|
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to truncate queue paging table")))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
delete("DeleteByIndex/{index}") {
|
||||||
|
// delete by index
|
||||||
|
val index = it.pathParam("index").toUIntOrNull()
|
||||||
|
if (index == null) {
|
||||||
|
it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid index")))
|
||||||
|
} else {
|
||||||
|
if (db.queuepagingDB.DeleteByIndex(index.toInt())) {
|
||||||
|
db.queuepagingDB.Resort()
|
||||||
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
} else {
|
||||||
|
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to delete queue paging with index $index")))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Steph : coba tambah untuk QueueTable Table. Belum ada di JS file(?)
|
||||||
|
path("QueueTable"){
|
||||||
|
|
||||||
|
get("List"){
|
||||||
|
it.result(MariaDB.ArrayListtoString(db.queuetableDB.List))
|
||||||
|
}
|
||||||
|
|
||||||
|
delete("List"){
|
||||||
|
// truncate queue table
|
||||||
|
if (db.queuetableDB.Clear()) {
|
||||||
|
db.queuetableDB.Get()
|
||||||
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
} else {
|
||||||
|
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to truncate queue sound table")))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
delete("DeleteByIndex/{index}") {
|
||||||
|
// delete by index
|
||||||
|
val index = it.pathParam("index").toUIntOrNull()
|
||||||
|
if (index == null) {
|
||||||
|
it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid index")))
|
||||||
|
} else {
|
||||||
|
if (db.queuetableDB.DeleteByIndex(index.toInt())) {
|
||||||
|
db.queuetableDB.Resort()
|
||||||
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
} else {
|
||||||
|
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to delete queue sound with index $index")))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}.start(listenPort)
|
}.start(listenPort)
|
||||||
|
|||||||
Reference in New Issue
Block a user