commit 26/01/2026
This commit is contained in:
@@ -5,41 +5,43 @@
|
||||
*/
|
||||
window.selectedmessagerow = null;
|
||||
|
||||
dtMessageBank = null;
|
||||
|
||||
/**
|
||||
* Fill messagebank table body with values
|
||||
* @param {MessageBank[]} vv values to fill
|
||||
*/
|
||||
function fill_messagebanktablebody(vv) {
|
||||
$('#messagebanktablebody').empty();
|
||||
dtMessageBank.clear();
|
||||
if (!Array.isArray(vv) || vv.length === 0) return;
|
||||
vv.forEach(item => {
|
||||
const row = `<tr>
|
||||
<td>${item.index}</td>
|
||||
<td>${item.description}</td>
|
||||
<td>${item.language}</td>
|
||||
<td>${item.aNN_ID}</td>
|
||||
<td>${item.voice_Type}</td>
|
||||
<td>${item.message_Detail}</td>
|
||||
<td>${item.message_TAGS}</td>
|
||||
</tr>`;
|
||||
$('#messagebanktablebody').append(row);
|
||||
let $addedrow = $('#messagebanktablebody tr:last');
|
||||
$addedrow.click(function () {
|
||||
if (window.selectedmessagerow) {
|
||||
window.selectedmessagerow.find('td').css('background-color', '');
|
||||
if (window.selectedmessagerow.is($(this))) {
|
||||
window.selectedmessagerow = null;
|
||||
$('#btnRemove').prop('disabled', true);
|
||||
$('#btnEdit').prop('disabled', true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
$addedrow.find('td').css('background-color', '#ffeeba');
|
||||
window.selectedmessagerow = $addedrow;
|
||||
$('#btnRemove').prop('disabled', false);
|
||||
$('#btnEdit').prop('disabled', false);
|
||||
});
|
||||
});
|
||||
|
||||
dtMessageBank.rows.add(vv);
|
||||
dtMessageBank.draw();
|
||||
|
||||
$('#messagebanktable tbody').off('click').on('click', 'tr', function () {
|
||||
// if no data
|
||||
if (!dtMessageBank) return;
|
||||
// if user click an empty row
|
||||
if (!dtMessageBank.data().any()) return;
|
||||
|
||||
const selected = dtMessageBank.row(this)
|
||||
// toggle behaviour - unselect if already selected
|
||||
if ($(this).hasClass('row-selected')) {
|
||||
$(this).removeClass('row-selected').find('td').css('background-color', '');
|
||||
window.selectedmessagerow = null;
|
||||
$('#btnRemove').prop('disabled', true);
|
||||
$('#btnEdit').prop('disabled', true);
|
||||
return;
|
||||
}
|
||||
|
||||
// unselect previously selected row
|
||||
$('#messagebanktable tbody tr.row-selected').removeClass('row-selected').find('td').css('background-color', '');
|
||||
|
||||
$(this).addClass('row-selected').find('td').css('background-color', '#ffeeba');
|
||||
window.selectedmessagerow = selected.data();
|
||||
$('#btnRemove').prop('disabled', false);
|
||||
$('#btnEdit').prop('disabled', false);
|
||||
})
|
||||
|
||||
$('#tablesize').text("Table Size: " + vv.length);
|
||||
}
|
||||
@@ -59,7 +61,6 @@ function fill_messagebanktablebody(vv) {
|
||||
|
||||
$(document).ready(function () {
|
||||
console.log("messagebank.js loaded");
|
||||
$('#messagebanktablebody').empty();
|
||||
window.selectedmessagerow = null;
|
||||
let $btnClear = $('#btnClear');
|
||||
let $btnAdd = $('#btnAdd');
|
||||
@@ -72,6 +73,23 @@ $(document).ready(function () {
|
||||
let APIURL = "MessageBank/";
|
||||
let $findmessage = $('#findmessage');
|
||||
|
||||
if (dtMessageBank === null) {
|
||||
dtMessageBank = new DataTable('#messagebanktable', {
|
||||
data: [],
|
||||
pageLength: 25,
|
||||
columns: [
|
||||
{ title: "Index", data: "index" },
|
||||
{ title: "Description", data: "description" },
|
||||
{ title: "Language", data: "language" },
|
||||
{ title: "ANN ID", data: "aNN_ID" },
|
||||
{ title: "Type", data: "voice_Type" },
|
||||
{ title: "Message Details", data: "message_Detail" },
|
||||
{ title: "Message TAGS", data: "message_TAGS" }
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// modal for add / edit messagebank
|
||||
let $modal = $('#messagebankmodal');
|
||||
// text input, disabled by default
|
||||
@@ -106,43 +124,43 @@ $(document).ready(function () {
|
||||
if ("Phrase" === cat) return; // skip Phrase category
|
||||
if ("Airline_Code" === cat) cat = "Flight_Number"; // revisi 15012026 karena inconsistensi penamaan tag
|
||||
let displayCat = `[${cat}]`.toUpperCase();
|
||||
$messageavailablevariables.append(new Option(text=displayCat, value=displayCat));
|
||||
$messageavailablevariables.append(new Option(text = displayCat, value = displayCat));
|
||||
});
|
||||
// tambah [ETAD], [BCB] revisi 19012026
|
||||
$messageavailablevariables.append(new Option(text='[ETAD]', value='[ETAD]'));
|
||||
$messageavailablevariables.append(new Option(text='[BCB]', value='[BCB]'));
|
||||
$messageavailablevariables.append(new Option(text = '[ETAD]', value = '[ETAD]'));
|
||||
$messageavailablevariables.append(new Option(text = '[BCB]', value = '[BCB]'));
|
||||
|
||||
let lang = $messagelanguage.val();
|
||||
let vt = $messagevoicetype.val();
|
||||
if (lang && lang.length > 0 && vt && vt.length > 0) {
|
||||
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) {
|
||||
let v1 = sb.tag.toUpperCase();
|
||||
let t1 = sb.description+` [${v1}]`;
|
||||
let t2 = sb.description;
|
||||
$messageavailablevariables.append($('<option>', { value: v1, text: t1, title: t2 }));
|
||||
}
|
||||
});
|
||||
if (cbLoaded && typeof cbLoaded === 'function') {
|
||||
cbLoaded();
|
||||
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) {
|
||||
let v1 = sb.tag.toUpperCase();
|
||||
let t1 = sb.description + ` [${v1}]`;
|
||||
let t2 = sb.description;
|
||||
$messageavailablevariables.append($('<option>', { value: v1, text: t1, title: t2 }));
|
||||
}
|
||||
}
|
||||
}, (errdata) => {
|
||||
//alert("Error loading phrases from soundbank : " + errdata.message);
|
||||
});
|
||||
if (cbLoaded && typeof cbLoaded === 'function') {
|
||||
cbLoaded();
|
||||
}
|
||||
});
|
||||
}
|
||||
}, (errdata) => {
|
||||
//alert("Error loading phrases from soundbank : " + errdata.message);
|
||||
if (cbLoaded && typeof cbLoaded === 'function') {
|
||||
cbLoaded();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
if (cbLoaded && typeof cbLoaded === 'function') {
|
||||
cbLoaded();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -267,17 +285,17 @@ $(document).ready(function () {
|
||||
}
|
||||
|
||||
|
||||
$findmessage.on('input', function () {
|
||||
let searchTerm = $findmessage.val().toLowerCase();
|
||||
if (searchTerm.length > 0) {
|
||||
window.selectedmessagerow = null;
|
||||
let filtered = window.messagebankdata.filter(item => item.description.toLowerCase().includes(searchTerm) || item.message_Detail.toLowerCase().includes(searchTerm) || item.message_TAGS.toLowerCase().includes(searchTerm));
|
||||
fill_messagebanktablebody(filtered);
|
||||
} else {
|
||||
window.selectedmessagerow = null;
|
||||
fill_messagebanktablebody(window.messagebankdata);
|
||||
}
|
||||
});
|
||||
// $findmessage.on('input', function () {
|
||||
// let searchTerm = $findmessage.val().toLowerCase();
|
||||
// if (searchTerm.length > 0) {
|
||||
// window.selectedmessagerow = null;
|
||||
// let filtered = window.messagebankdata.filter(item => item.description.toLowerCase().includes(searchTerm) || item.message_Detail.toLowerCase().includes(searchTerm) || item.message_TAGS.toLowerCase().includes(searchTerm));
|
||||
// fill_messagebanktablebody(filtered);
|
||||
// } else {
|
||||
// window.selectedmessagerow = null;
|
||||
// fill_messagebanktablebody(window.messagebankdata);
|
||||
// }
|
||||
// });
|
||||
|
||||
|
||||
reloadMessageBank(APIURL, () => fill_messagebanktablebody(window.messagebankdata));
|
||||
@@ -296,7 +314,7 @@ $(document).ready(function () {
|
||||
|
||||
$modal.modal('show');
|
||||
clearMessageModal();
|
||||
|
||||
|
||||
|
||||
$('#closemodalbutton').off('click').on('click', function () {
|
||||
console.log('Close button clicked')
|
||||
@@ -322,16 +340,15 @@ $(document).ready(function () {
|
||||
});
|
||||
$btnRemove.click(() => {
|
||||
if (window.selectedmessagerow) {
|
||||
let cells = window.selectedmessagerow.find('td');
|
||||
/** @type {MessageBank} */
|
||||
let mb = {
|
||||
index: Number(cells.eq(0).text()),
|
||||
description: cells.eq(1).text(),
|
||||
language: cells.eq(2).text(),
|
||||
aNN_ID: parseInt(cells.eq(3).text()),
|
||||
voice_Type: cells.eq(4).text(),
|
||||
message_Detail: cells.eq(5).text(),
|
||||
message_TAGS: cells.eq(6).text()
|
||||
index: window.selectedmessagerow.index,
|
||||
description: window.selectedmessagerow.description,
|
||||
language: window.selectedmessagerow.language,
|
||||
aNN_ID: window.selectedmessagerow.aNN_ID,
|
||||
voice_Type: window.selectedmessagerow.voice_Type,
|
||||
message_Detail: window.selectedmessagerow.message_Detail,
|
||||
message_TAGS: window.selectedmessagerow.message_TAGS
|
||||
}
|
||||
|
||||
if (confirm(`Are you sure to delete messagebank [${mb.index}] Description=${mb.description}? ANN_ID=${mb.aNN_ID} Language=${mb.language} Voice_Type=${mb.voice_Type} `)) {
|
||||
@@ -346,16 +363,15 @@ $(document).ready(function () {
|
||||
});
|
||||
$btnEdit.click(() => {
|
||||
if (window.selectedmessagerow) {
|
||||
let cells = window.selectedmessagerow.find('td');
|
||||
/** @type {MessageBank} */
|
||||
let mb = {
|
||||
index: Number(cells.eq(0).text()),
|
||||
description: cells.eq(1).text(),
|
||||
language: cells.eq(2).text(),
|
||||
aNN_ID: parseInt(cells.eq(3).text()),
|
||||
voice_Type: cells.eq(4).text(),
|
||||
message_Detail: cells.eq(5).text(),
|
||||
message_TAGS: cells.eq(6).text()
|
||||
index: window.selectedmessagerow.index,
|
||||
description: window.selectedmessagerow.description,
|
||||
language: window.selectedmessagerow.language,
|
||||
aNN_ID: window.selectedmessagerow.aNN_ID,
|
||||
voice_Type: window.selectedmessagerow.voice_Type,
|
||||
message_Detail: window.selectedmessagerow.message_Detail,
|
||||
message_TAGS: window.selectedmessagerow.message_TAGS
|
||||
}
|
||||
if (confirm(`Are you sure to edit messagebank [${mb.index}] Description=${mb.description} ANN_ID=${mb.aNN_ID} Language=${mb.language} Voice_Type=${mb.voice_Type} `)) {
|
||||
$modal.modal('show');
|
||||
@@ -370,41 +386,41 @@ $(document).ready(function () {
|
||||
$messageannid.val(mb.aNN_ID).prop('disabled', true);
|
||||
// Refill message available variables
|
||||
refill_messageavailablevariables(() => {
|
||||
// Fill messageselectedvariables from message_Detail and message_TAGS
|
||||
$messageselectedvariables.empty();
|
||||
if (mb.message_Detail && mb.message_Detail.length > 0) {
|
||||
if (mb.message_TAGS && mb.message_TAGS.length > 0) {
|
||||
let tags = mb.message_TAGS.split(" ");
|
||||
tags.forEach((tag, idx) => {
|
||||
//console.log(`Restoring tag[${idx}]: ${tag}`);
|
||||
let tagLower = tag.toLowerCase();
|
||||
let isfound = false;
|
||||
if (tagLower==="[airline_code]") {
|
||||
tagLower = "[flight_number]";
|
||||
}
|
||||
if (tagLower==="[gatenumber]") {
|
||||
tagLower = "[gate]";
|
||||
}
|
||||
// find <option> in messageavailablevariables with value=tag
|
||||
$messageavailablevariables.find('option').each(function () {
|
||||
let valx = $(this).val().toLowerCase();
|
||||
//console.log(`Available option value: ${valx}`);
|
||||
if (valx === tagLower) {
|
||||
isfound = true;
|
||||
//console.log(`Found matching option for tag: ${tag}`);
|
||||
$messageselectedvariables.append($(this).clone());
|
||||
// Fill messageselectedvariables from message_Detail and message_TAGS
|
||||
$messageselectedvariables.empty();
|
||||
if (mb.message_Detail && mb.message_Detail.length > 0) {
|
||||
if (mb.message_TAGS && mb.message_TAGS.length > 0) {
|
||||
let tags = mb.message_TAGS.split(" ");
|
||||
tags.forEach((tag, idx) => {
|
||||
//console.log(`Restoring tag[${idx}]: ${tag}`);
|
||||
let tagLower = tag.toLowerCase();
|
||||
let isfound = false;
|
||||
if (tagLower === "[airline_code]") {
|
||||
tagLower = "[flight_number]";
|
||||
}
|
||||
if (tagLower === "[gatenumber]") {
|
||||
tagLower = "[gate]";
|
||||
}
|
||||
// find <option> in messageavailablevariables with value=tag
|
||||
$messageavailablevariables.find('option').each(function () {
|
||||
let valx = $(this).val().toLowerCase();
|
||||
//console.log(`Available option value: ${valx}`);
|
||||
if (valx === tagLower) {
|
||||
isfound = true;
|
||||
//console.log(`Found matching option for tag: ${tag}`);
|
||||
$messageselectedvariables.append($(this).clone());
|
||||
}
|
||||
});
|
||||
// if (isfound) {
|
||||
// console.log(`Appended tag to selected variables: ${tag}`);
|
||||
// } else {
|
||||
// console.log(`Tag not found in available variables: ${tag}`);
|
||||
// }
|
||||
});
|
||||
// if (isfound) {
|
||||
// console.log(`Appended tag to selected variables: ${tag}`);
|
||||
// } else {
|
||||
// console.log(`Tag not found in available variables: ${tag}`);
|
||||
// }
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
// Save button event
|
||||
$('#savemodalbutton').off('click').on('click', function () {
|
||||
|
||||
Reference in New Issue
Block a user