commit 01/10/2025

This commit is contained in:
2025-10-01 13:57:20 +07:00
parent 54775641bb
commit c55db5e4f7
23 changed files with 895 additions and 517 deletions

View File

@@ -19,38 +19,38 @@
* List of Soundbank data loaded from server
* @type {SoundBank[]}
*/
let soundbankdata = [];
window.soundbankdata = [];
/**
* Currently selected soundbank row in the table
* @type {JQuery<HTMLElement>|null}
*/
let selectedsoundrow = null;
window.selectedsoundrow = null;
/**
* List of sound files in the soundbank directory, that ends with .wav or .mp3
* @type {string[]}
*/
let soundbankfiles = [];
window.soundbankfiles = [];
/**
* Select2 data source
* See https://select2.org/data-sources/formats
* @type {Select2item[]}
*/
let select2data = [];
window.select2data = [];
/**
* Reload sound bank from server
* @param {String} APIURL API URL endpoint, default "SoundBank/"
*/
function reloadSoundBank(APIURL = "SoundBank/") {
soundbankdata = [];
window.soundbankdata = [];
fetchAPI(APIURL + "List", "GET", {}, null, (okdata) => {
if (Array.isArray(okdata)) {
soundbankdata = okdata;
selectedsoundrow = null;
fill_soundbanktablebody(soundbankdata);
window.soundbankdata.push(...okdata);
window.selectedsoundrow = null;
fill_soundbanktablebody(window.soundbankdata);
}
}, (errdata) => {
alert("Error loading soundbank : " + errdata.message);
@@ -77,17 +77,17 @@ function fill_soundbanktablebody(vv) {
$('#soundbanktablebody').append(row);
let $addedrow = $('#soundbanktablebody tr:last');
$addedrow.on('click', function () {
if (selectedsoundrow) {
selectedsoundrow.find('td').css('background-color', '');
if (selectedsoundrow.is($(this))) {
selectedsoundrow = null;
if (window.selectedsoundrow) {
window.selectedsoundrow.find('td').css('background-color', '');
if (window.selectedsoundrow.is($(this))) {
window.selectedsoundrow = null;
$('#btnRemove').prop('disabled', true);
$('#btnEdit').prop('disabled', true);
return;
}
}
$(this).find('td').css('background-color', '#ffeeba');
selectedsoundrow = $(this);
window.selectedsoundrow = $(this);
$('#btnRemove').prop('disabled', false);
$('#btnEdit').prop('disabled', false);
});
@@ -103,13 +103,13 @@ function fill_soundbanktablebody(vv) {
* @param {String} APIURL API URL endpoint (default "SoundBank/")
*/
function reloadSoundbankFiles(APIURL = "SoundBank/") {
soundbankfiles = [];
window.soundbankfiles = [];
fetchAPI(APIURL + "ListFiles", "GET", {}, null, (okdata) => {
// okdata is a string contains elements separated by semicolon ;
if (Array.isArray(okdata)) {
soundbankfiles = okdata.filter(item => item.trim().length > 0);
window.soundbankfiles = okdata.filter(item => item.trim().length > 0);
// refill select2data
select2data = soundbankfiles.map((item, index) => ({ id: index + 1, text: item }));
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);
@@ -120,7 +120,7 @@ $(document).ready(function () {
console.log("soundbank.js loaded successfully");
reloadSoundbankFiles();
$('#soundbanktablebody').empty();
selectedsoundrow = null;
window.selectedsoundrow = null;
let $btnClear = $('#btnClear');
let $btnAdd = $('#btnAdd');
let $btnRemove = $('#btnRemove');
@@ -166,9 +166,9 @@ $(document).ready(function () {
$modalvoicetype.val(null);
// fill modalpath options from soundbankfiles[]
// TODO read https://jeesite.com/front/jquery-select2/4.0/index.htm
console.log("select2data has " + select2data.length + " items");
console.log("window.select2data has " + window.select2data.length + " items");
$('#modalpath').select2({
data: select2data
data: window.select2data
})
}
@@ -176,12 +176,12 @@ $(document).ready(function () {
$('#findsoundbank').on('input', function () {
let searchTerm = $(this).val().trim().toLowerCase();
if (searchTerm.length > 0) {
selectedsoundrow = null;
let filtered = soundbankdata.filter(item => item.description.toLowerCase().includes(searchTerm) || item.tag.toLowerCase().includes(searchTerm) || item.path.toLowerCase().includes(searchTerm));
window.selectedsoundrow = null;
let filtered = window.soundbankdata.filter(item => item.description.toLowerCase().includes(searchTerm) || item.tag.toLowerCase().includes(searchTerm) || item.path.toLowerCase().includes(searchTerm));
fill_soundbanktablebody(filtered);
} else {
selectedsoundrow = null;
fill_soundbanktablebody(soundbankdata);
window.selectedsoundrow = null;
fill_soundbanktablebody(window.soundbankdata);
}
});
$btnClear.click(() => {
@@ -208,8 +208,8 @@ $(document).ready(function () {
});
});
$btnRemove.click(() => {
if (selectedsoundrow) {
let cells = selectedsoundrow.find('td');
if (window.selectedsoundrow) {
let cells = window.selectedsoundrow.find('td');
/** @type {SoundBank} */
let sb = {
index: cells.eq(0).text(),
@@ -231,8 +231,8 @@ $(document).ready(function () {
}
});
$btnEdit.click(() => {
if (selectedsoundrow) {
let cells = selectedsoundrow.find('td');
if (window.selectedsoundrow) {
let cells = window.selectedsoundrow.find('td');
/** @type {SoundBank} */
let sb = {
index: cells.eq(0).text(),