commit 02/10/2025

This commit is contained in:
2025-10-02 16:03:28 +07:00
parent 3768f4263b
commit 20dbc12b02
11 changed files with 410 additions and 273 deletions

View File

@@ -1,61 +1,11 @@
/**
* @typedef {Object} SoundBank
* @property {number} index
* @property {string} description
* @property {string} tag
* @property {string} category
* @property {string} language
* @property {string} voiceType
* @property {string} path
*/
/**
* @typedef {Object} Select2item
* @property {number} id
* @property {string} text
*/
/**
* List of Soundbank data loaded from server
* @type {SoundBank[]}
*/
window.soundbankdata = [];
/**
* Currently selected soundbank row in the table
* @type {JQuery<HTMLElement>|null}
*/
window.selectedsoundrow = null;
/**
* List of sound files in the soundbank directory, that ends with .wav or .mp3
* @type {string[]}
*/
window.soundbankfiles = [];
/**
* Select2 data source
* See https://select2.org/data-sources/formats
* @type {Select2item[]}
*/
window.select2data = [];
/**
* Reload sound bank from server
* @param {String} APIURL API URL endpoint, default "SoundBank/"
*/
function reloadSoundBank(APIURL = "SoundBank/") {
window.soundbankdata = [];
fetchAPI(APIURL + "List", "GET", {}, null, (okdata) => {
if (Array.isArray(okdata)) {
window.soundbankdata.push(...okdata);
window.selectedsoundrow = null;
fill_soundbanktablebody(window.soundbankdata);
}
}, (errdata) => {
alert("Error loading soundbank : " + errdata.message);
});
}
/**
* Fill soundbank table body with values
@@ -63,6 +13,7 @@ function reloadSoundBank(APIURL = "SoundBank/") {
*/
function fill_soundbanktablebody(vv) {
$('#soundbanktablebody').empty();
console.log("Filling soundbank table with " + vv.length + " items");
if (!Array.isArray(vv) || vv.length === 0) return;
vv.forEach(item => {
const row = `<tr>
@@ -98,23 +49,7 @@ function fill_soundbanktablebody(vv) {
}
/**
* Reload soundbank files from server
* @param {String} APIURL API URL endpoint (default "SoundBank/")
*/
function reloadSoundbankFiles(APIURL = "SoundBank/") {
window.soundbankfiles = [];
fetchAPI(APIURL + "ListFiles", "GET", {}, null, (okdata) => {
// okdata is a string contains elements separated by semicolon ;
if (Array.isArray(okdata)) {
window.soundbankfiles = okdata.filter(item => item.trim().length > 0);
// refill select2data
window.select2data = window.soundbankfiles.map((item, index) => ({ id: index + 1, text: item }));
} else console.log("reloadSoundbankFiles: okdata is not array");
}, (errdata) => {
alert("Error loading soundbank files : " + errdata.message);
});
}
$(document).ready(function () {
console.log("soundbank.js loaded successfully");
@@ -172,7 +107,10 @@ $(document).ready(function () {
})
}
reloadSoundBank(APIURL);
reloadSoundBank(APIURL, () => {
fill_soundbanktablebody(window.soundbankdata);
});
$('#findsoundbank').on('input', function () {
let searchTerm = $(this).val().trim().toLowerCase();
if (searchTerm.length > 0) {
@@ -186,8 +124,10 @@ $(document).ready(function () {
});
$btnClear.click(() => {
DoClear(APIURL, "Soundbank", (okdata) => {
reloadSoundBank(APIURL);
alert("Success clear soundbank : " + okdata.message);
reloadSoundBank(APIURL, () => {
fill_soundbanktablebody(window.soundbankdata);
alert("Success clear soundbank : " + okdata.message);
});
}, (errdata) => {
alert("Error clear soundbank : " + errdata.message);
});
@@ -222,8 +162,10 @@ $(document).ready(function () {
}
if (confirm(`Are you sure to delete soundbank [${sb.index}] Description=${sb.description} Tag=${sb.tag}?`)) {
fetchAPI(APIURL + "DeleteByIndex/" + sb.index, "DELETE", {}, null, (okdata) => {
reloadSoundBank(APIURL);
alert("Success delete soundbank : " + okdata.message);
reloadSoundBank(APIURL, () => {
fill_soundbanktablebody(window.soundbankdata);
alert("Success delete soundbank : " + okdata.message);
});
}, (errdata) => {
alert("Error delete soundbank : " + errdata.message);
});
@@ -265,8 +207,10 @@ $(document).ready(function () {
});
$btnImport.click(() => {
DoImport(APIURL, (okdata) => {
reloadSoundBank(APIURL);
alert("Success import soundbank : " + okdata.message);
reloadSoundBank(APIURL, () => {
fill_soundbanktablebody(window.soundbankdata);
alert("Success import soundbank : " + okdata.message);
});
}, (errdata) => {
alert("Error importing soundbank from XLSX : " + errdata.message);
});