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 }