commit 26/01/2026

This commit is contained in:
2026-01-26 17:12:48 +07:00
parent 9b6c714e53
commit 8744a47cb3
37 changed files with 109125 additions and 582 deletions

View File

@@ -6,6 +6,8 @@
*
*/
dtLanguageLink = null;
/** List of Languagebank data loaded from server
* @type {LanguageBank[]}
*/
@@ -21,32 +23,36 @@ window.selectedlanguagerow = null;
* @param {LanguageBank[]} vv values to fill
*/
function fill_languagebanktablebody(vv) {
$('#languagebanktablebody').empty();
dtLanguageLink.clear();
if (!Array.isArray(vv) || vv.length === 0) return;
vv.forEach(item => {
const row = `<tr>
<td>${item.index}</td>
<td>${item.tag}</td>
<td>${item.language}</td>
</tr>`;
$('#languagebanktablebody').append(row);
let $addedrow = $('#languagebanktablebody tr:last');
$addedrow.click(function () {
if (window.selectedlanguagerow) {
window.selectedlanguagerow.find('td').css('background-color', '');
if (window.selectedlanguagerow.is($(this))) {
window.selectedlanguagerow = null;
$('#btnRemove').prop('disabled', true);
$('#btnEdit').prop('disabled', true);
return;
}
}
$addedrow.find('td').css('background-color', '#ffeeba');
window.selectedlanguagerow = $addedrow;
$('#btnRemove').prop('disabled', false);
$('#btnEdit').prop('disabled', false);
});
});
dtLanguageLink.rows.add(vv);
dtLanguageLink.draw();
$('#languagebanktable tbody').off('click').on('click', 'tr', function () {
// if no data
if (!dtLanguageLink) return;
// if user click an empty row
if (!dtLanguageLink.data().any()) return;
const selected = dtLanguageLink.row(this)
// toggle behaviour - unselect if already selected
if ($(this).hasClass('row-selected')) {
$(this).removeClass('row-selected').find('td').css('background-color', '');
window.selectedlanguagerow = null;
$('#btnRemove').prop('disabled', true);
$('#btnEdit').prop('disabled', true);
return;
}
// unselect previously selected row
$('#languagebanktable tbody tr.row-selected').removeClass('row-selected').find('td').css('background-color', '');
$(this).addClass('row-selected').find('td').css('background-color', '#ffeeba');
window.selectedlanguagerow = selected.data();
$('#btnRemove').prop('disabled', false);
$('#btnEdit').prop('disabled', false);
})
$('#tablesize').text("Table Size: " + vv.length);
}
@@ -69,7 +75,6 @@ function reloadLanguageBank(APIURL = "LanguageLink/") {
$(document).ready(function () {
console.log('languagebank.js loaded');
$('#languagebanktablebody').empty();
window.selectedlanguagerow = null;
let $btnClear = $('#btnClear');
@@ -92,6 +97,19 @@ $(document).ready(function () {
let $cbJap = $modal.find('#langJap');
let $cbChi = $modal.find('#langChi');
if (dtLanguageLink === null) {
dtLanguageLink = new DataTable('#languagebanktable', {
data: [],
pageLength: 25,
columns: [
{ title: "No", data: "index" },
{ title: "TAG", data: "tag" },
{ title: "Languages", data: "language" }
]
});
}
function clearLanguageModal() {
$langid.prop('disabled', true).val('');
$langtag.val('');
@@ -103,17 +121,17 @@ $(document).ready(function () {
$cbChi.prop('checked', false);
}
$findlanguage.on('input', function () {
let searchTerm = $findlanguage.val().toLowerCase();
if (searchTerm.length > 0) {
window.selectedlanguagerow = null;
let filtered = window.languagebankdata.filter(item => item.tag.toLowerCase().includes(searchTerm) || item.language.toLowerCase().includes(searchTerm));
fill_languagebanktablebody(filtered);
} else {
window.selectedlanguagerow = null;
fill_languagebanktablebody(window.languagebankdata);
}
});
// $findlanguage.on('input', function () {
// let searchTerm = $findlanguage.val().toLowerCase();
// if (searchTerm.length > 0) {
// window.selectedlanguagerow = null;
// let filtered = window.languagebankdata.filter(item => item.tag.toLowerCase().includes(searchTerm) || item.language.toLowerCase().includes(searchTerm));
// fill_languagebanktablebody(filtered);
// } else {
// window.selectedlanguagerow = null;
// fill_languagebanktablebody(window.languagebankdata);
// }
// });
reloadLanguageBank(APIURL);
$btnClear.click(() => {
@@ -172,12 +190,11 @@ $(document).ready(function () {
});
$btnRemove.click(() => {
if (window.selectedlanguagerow) {
let cells = window.selectedlanguagerow.find('td');
/** @type {Language} */
let ll = {
index: Number(cells.eq(0).text()),
tag: cells.eq(1).text(),
language: cells.eq(2).text()
index: window.selectedlanguagerow.index,
tag: window.selectedlanguagerow.tag,
language: window.selectedlanguagerow.language
}
if (confirm(`Are you sure to delete language [${ll.index}] Tag=${ll.tag} Language=${ll.language}?`)) {
fetchAPI(APIURL + "DeleteByIndex/" + ll.index, "DELETE", {}, null, (okdata) => {
@@ -191,12 +208,11 @@ $(document).ready(function () {
});
$btnEdit.click(() => {
if (window.selectedlanguagerow) {
let cells = window.selectedlanguagerow.find('td');
/** @type {Language} */
let ll = {
index: Number(cells.eq(0).text()),
tag: cells.eq(1).text(),
language: cells.eq(2).text()
index: window.selectedlanguagerow.index,
tag: window.selectedlanguagerow.tag,
language: window.selectedlanguagerow.language
}
if (confirm(`Are you sure to edit language [${ll.index}] Tag=${ll.tag} Language=${ll.language}?`)) {