commit 26/01/2026
This commit is contained in:
@@ -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}?`)) {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user