diff --git a/html/webpage/assets/js/messagebank.js b/html/webpage/assets/js/messagebank.js index 5de0112..7022166 100644 --- a/html/webpage/assets/js/messagebank.js +++ b/html/webpage/assets/js/messagebank.js @@ -121,17 +121,32 @@ $(document).ready(function () { function refill_messageavailablevariables() { $messageavailablevariables.empty(); categories.forEach(cat => { - $messageavailablevariables.append(ListItem(`{${cat}}`)); + $messageavailablevariables.append(ListItem(`[${cat}]`)); }); - if ($messagelanguage.val() && $messagevoicetype.val()) { - soundbankdata - .filter(sb => sb.language.toLowerCase() === $messagelanguage.val().toLowerCase()) - .filter(sb => sb.voiceType.toLowerCase() === $messagevoicetype.val().toLowerCase()) - .filter(sb => sb.category.toLowerCase() === "phrase") - .forEach(sb => { - $messageavailablevariables.append(ListItem(`[${sb.Description}]`)); + let lang = $messagelanguage.val(); + let vt = $messagevoicetype.val(); + if (lang && lang.length > 0){ + console.log("Selected Language:", lang); + if (vt && vt.length > 0){ + console.log("Selected Voice Type:", vt); + + fetchAPI(`SoundBank/GetPhrases/${lang}/${vt}`, "GET", {}, null, (okdata) => { + if (Array.isArray(okdata) && okdata.length > 0) { + console.log(`Loaded ${okdata.length} phrases from soundbank for language=${lang} and voiceType=${vt}`); + console.log(JSON.stringify(okdata)); + okdata.forEach(sb => { + if (sb.description && sb.description.length > 0) { + $messageavailablevariables.append(ListItem(`${sb.description} [${sb.TAG}]`)); + } + }); + } + }, (errdata) => { + //alert("Error loading phrases from soundbank : " + errdata.message); }); + } + } + } @@ -143,7 +158,7 @@ $(document).ready(function () { $messagedescription.val(''); // fill messagelanguage options from languages[] $messagelanguage.empty(); - languages.forEach(lang => { + window.languages.forEach(lang => { $messagelanguage.append(new Option(lang, lang)); }); $messagelanguage.val(null); @@ -154,7 +169,7 @@ $(document).ready(function () { $messageannid.val(1); // fill messagevoicetype options from voiceTypes[] $messagevoicetype.empty(); - voiceTypes.forEach(vt => { + window.voiceTypes.forEach(vt => { $messagevoicetype.append(new Option(vt, vt)); }); $messagevoicetype.val(null); @@ -344,19 +359,8 @@ $(document).ready(function () { // Fill modal fields with selected messagebank data $messageindex.val(mb.index).prop('disabled', true); $messagedescription.val(mb.description); - // Fill messagelanguage options and select current - $messagelanguage.empty(); - languages.forEach(lang => { - $messagelanguage.append(new Option(lang, lang)); - }); $messagelanguage.val(mb.language); - // Fill messagevoicetype options and select current - $messagevoicetype.empty(); - voiceTypes.forEach(vt => { - $messagevoicetype.append(new Option(vt, vt)); - }); $messagevoicetype.val(mb.voice_Type); - // Set annid $messageannid.val(mb.aNN_ID); // Refill message available variables refill_messageavailablevariables(); diff --git a/html/webpage/assets/js/soundbank.js b/html/webpage/assets/js/soundbank.js index c0f07c9..9abf4a3 100644 --- a/html/webpage/assets/js/soundbank.js +++ b/html/webpage/assets/js/soundbank.js @@ -1,3 +1,11 @@ + + +/** + * @typedef {Object} Select2item + * @property {number} id + * @property {string} text + */ + /** * @typedef {Object} SoundBank * @property {number} index @@ -9,12 +17,6 @@ * @property {string} path */ -/** - * @typedef {Object} Select2item - * @property {number} id - * @property {string} text - */ - /** * List of Soundbank data loaded from server * @type {SoundBank[]} diff --git a/src/web/WebApp.kt b/src/web/WebApp.kt index a448ccd..0d54ab3 100644 --- a/src/web/WebApp.kt +++ b/src/web/WebApp.kt @@ -34,6 +34,7 @@ import io.javalin.apibuilder.ApiBuilder.path import io.javalin.apibuilder.ApiBuilder.post import io.javalin.apibuilder.ApiBuilder.ws import io.javalin.http.Context +import io.javalin.http.servlet.splitKeyValueStringAndGroupByKey import io.javalin.json.JavalinJackson import io.javalin.websocket.WsMessageContext import org.apache.poi.xssf.usermodel.XSSFWorkbook @@ -235,6 +236,23 @@ class WebApp(val listenPort: Int, val userlist: List>) { get("ListFiles") { it.result(objectmapper.writeValueAsString(ListAudioFiles(Somecodes.Soundbank_directory))) } + get("GetPhrases/{Language}/{VoiceType}"){ + val language = it.pathParam("Language") + val voiceType = it.pathParam("VoiceType") + if (ValidString(language) && Language.entries.any { lang -> lang.name == language }) { + if (ValidString(voiceType) && VoiceType.entries.any { vt -> vt.name == voiceType }) { + val phrases = db.soundDB.List + .filter { sb -> sb.Language == language } + .filter {sb -> sb.VoiceType == voiceType} + .filter { sb -> sb.Category == Category.Phrase.name} + .distinctBy { sb -> sb.TAG } + .sortedBy { sb -> sb.TAG } + it.result(objectmapper.writeValueAsString(phrases)) + } else it.status(400) + .result(objectmapper.writeValueAsString(resultMessage("Invalid VoiceType"))) + } else it.status(400) + .result(objectmapper.writeValueAsString(resultMessage("Invalid Language"))) + } get("AirlineTags") { ctx -> val value = db.soundDB.List .filter { it.Category == Category.Airplane_Name.name }