commit 14/10/2025

Messagebank belum beres
This commit is contained in:
2025-10-14 15:14:21 +07:00
parent de54d142ae
commit 4d3dc538bd
3 changed files with 51 additions and 27 deletions

View File

@@ -121,18 +121,33 @@ $(document).ready(function () {
function refill_messageavailablevariables() { function refill_messageavailablevariables() {
$messageavailablevariables.empty(); $messageavailablevariables.empty();
categories.forEach(cat => { categories.forEach(cat => {
$messageavailablevariables.append(ListItem(`{${cat}}`)); $messageavailablevariables.append(ListItem(`[${cat}]`));
}); });
if ($messagelanguage.val() && $messagevoicetype.val()) { let lang = $messagelanguage.val();
soundbankdata let vt = $messagevoicetype.val();
.filter(sb => sb.language.toLowerCase() === $messagelanguage.val().toLowerCase()) if (lang && lang.length > 0){
.filter(sb => sb.voiceType.toLowerCase() === $messagevoicetype.val().toLowerCase()) console.log("Selected Language:", lang);
.filter(sb => sb.category.toLowerCase() === "phrase") if (vt && vt.length > 0){
.forEach(sb => { console.log("Selected Voice Type:", vt);
$messageavailablevariables.append(ListItem(`[${sb.Description}]`));
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(''); $messagedescription.val('');
// fill messagelanguage options from languages[] // fill messagelanguage options from languages[]
$messagelanguage.empty(); $messagelanguage.empty();
languages.forEach(lang => { window.languages.forEach(lang => {
$messagelanguage.append(new Option(lang, lang)); $messagelanguage.append(new Option(lang, lang));
}); });
$messagelanguage.val(null); $messagelanguage.val(null);
@@ -154,7 +169,7 @@ $(document).ready(function () {
$messageannid.val(1); $messageannid.val(1);
// fill messagevoicetype options from voiceTypes[] // fill messagevoicetype options from voiceTypes[]
$messagevoicetype.empty(); $messagevoicetype.empty();
voiceTypes.forEach(vt => { window.voiceTypes.forEach(vt => {
$messagevoicetype.append(new Option(vt, vt)); $messagevoicetype.append(new Option(vt, vt));
}); });
$messagevoicetype.val(null); $messagevoicetype.val(null);
@@ -344,19 +359,8 @@ $(document).ready(function () {
// Fill modal fields with selected messagebank data // Fill modal fields with selected messagebank data
$messageindex.val(mb.index).prop('disabled', true); $messageindex.val(mb.index).prop('disabled', true);
$messagedescription.val(mb.description); $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); $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); $messagevoicetype.val(mb.voice_Type);
// Set annid
$messageannid.val(mb.aNN_ID); $messageannid.val(mb.aNN_ID);
// Refill message available variables // Refill message available variables
refill_messageavailablevariables(); refill_messageavailablevariables();

View File

@@ -1,3 +1,11 @@
/**
* @typedef {Object} Select2item
* @property {number} id
* @property {string} text
*/
/** /**
* @typedef {Object} SoundBank * @typedef {Object} SoundBank
* @property {number} index * @property {number} index
@@ -9,12 +17,6 @@
* @property {string} path * @property {string} path
*/ */
/**
* @typedef {Object} Select2item
* @property {number} id
* @property {string} text
*/
/** /**
* List of Soundbank data loaded from server * List of Soundbank data loaded from server
* @type {SoundBank[]} * @type {SoundBank[]}

View File

@@ -34,6 +34,7 @@ import io.javalin.apibuilder.ApiBuilder.path
import io.javalin.apibuilder.ApiBuilder.post import io.javalin.apibuilder.ApiBuilder.post
import io.javalin.apibuilder.ApiBuilder.ws import io.javalin.apibuilder.ApiBuilder.ws
import io.javalin.http.Context import io.javalin.http.Context
import io.javalin.http.servlet.splitKeyValueStringAndGroupByKey
import io.javalin.json.JavalinJackson import io.javalin.json.JavalinJackson
import io.javalin.websocket.WsMessageContext import io.javalin.websocket.WsMessageContext
import org.apache.poi.xssf.usermodel.XSSFWorkbook import org.apache.poi.xssf.usermodel.XSSFWorkbook
@@ -235,6 +236,23 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
get("ListFiles") { get("ListFiles") {
it.result(objectmapper.writeValueAsString(ListAudioFiles(Somecodes.Soundbank_directory))) 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 -> get("AirlineTags") { ctx ->
val value = db.soundDB.List val value = db.soundDB.List
.filter { it.Category == Category.Airplane_Name.name } .filter { it.Category == Category.Airplane_Name.name }