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

@@ -21,46 +21,50 @@ window.schedulebankdata = [];
*/
window.selectedschedulerow = null;
dtScheduleBank = null;
/**
* Fill schedulebank table body with values
* @param {ScheduleBank[]} vv values to fill
*/
function fill_schedulebanktablebody(vv) {
$('#schedulebanktablebody').empty();
dtScheduleBank.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.day}</td>
<td>${item.time}</td>
<td>${item.soundpath}</td>
<td>${item.repeat}</td>
<td>${item.enable}</td>
<td>${item.broadcastZones}</td>
<td>${item.language}</td>
</tr>`;
$('#schedulebanktablebody').append(row);
let $addedrow = $('#schedulebanktablebody tr:last');
$addedrow.click(function () {
if (selectedschedulerow) {
selectedschedulerow.find('td').css('background-color', '');
if (selectedschedulerow.is($(this))) {
selectedschedulerow = null;
$('#btnRemove').prop('disabled', true);
$('#btnEdit').prop('disabled', true);
return;
}
}
$addedrow.find('td').css('background-color', '#ffeeba');
selectedschedulerow = $addedrow;
$('#btnRemove').prop('disabled', false);
$('#btnEdit').prop('disabled', false);
});
dtScheduleBank.rows.add(vv);
dtScheduleBank.draw();
$('#schedulebanktable tbody').off('click').on('click', 'tr', function () {
// if no data
if (!dtScheduleBank) return;
// if user click an empty row
if (!dtScheduleBank.data().any()) return;
const selected = dtScheduleBank.row(this)
// toggle behaviour - unselect if already selected
if ($(this).hasClass('row-selected')) {
$(this).removeClass('row-selected').find('td').css('background-color', '');
window.selectedschedulerow = null;
$('#btnRemove').prop('disabled', true);
$('#btnEdit').prop('disabled', true);
return;
}
// unselect previously selected row
$('#schedulebanktable tbody tr.row-selected').removeClass('row-selected').find('td').css('background-color', '');
$(this).addClass('row-selected').find('td').css('background-color', '#ffeeba');
window.selectedschedulerow = selected.data();
$('#btnRemove').prop('disabled', false);
$('#btnEdit').prop('disabled', false);
});
$('#tablesize').text("Table Size: " + vv.length);
}
/**
* Convert input date string yyyy-mm-dd to dd/mm/yyyy
* @param {String} value from input date, which is in format yyyy-mm-dd
@@ -128,6 +132,25 @@ $(document).ready(function () {
$btnRemove.prop('disabled', true);
let APIURL = "ScheduleBank/";
if (dtScheduleBank === null) {
dtScheduleBank = new DataTable('#schedulebanktable', {
data: [],
pageLength: 25,
columns: [
{ title: "No", data: "index" },
{ title: "Description", data: "description" },
{ title: "Day", data: "day" },
{ title: "Time", data: "time" },
{ title: "Sound Path", data: "soundpath" },
{ title: "Repeat", data: "repeat" },
{ title: "Enable", data: "enable" },
{ title: "Broadcast Zones", data: "broadcastZones" },
{ title: "Language", data: "language" }
]
});
}
let $schedulemodal = $('#schedulemodal');
// text input
let $scheduleid = $schedulemodal.find('#scheduleid');
@@ -237,20 +260,20 @@ $(document).ready(function () {
}
let $findschedule = $('#findschedule');
$findschedule.off('input').on('input', function () {
let searchTerm = $findschedule.val().toLowerCase();
if (searchTerm.length > 0) {
window.selectedschedulerow = null;
let filtered = window.schedulebankdata.filter(item =>
item.description.toLowerCase().includes(searchTerm)
|| item.soundpath.toLowerCase().includes(searchTerm)
|| item.broadcastZones.toLowerCase().includes(searchTerm));
fill_schedulebanktablebody(filtered);
} else {
window.selectedschedulerow = null;
fill_schedulebanktablebody(window.schedulebankdata);
}
});
// $findschedule.off('input').on('input', function () {
// let searchTerm = $findschedule.val().toLowerCase();
// if (searchTerm.length > 0) {
// window.selectedschedulerow = null;
// let filtered = window.schedulebankdata.filter(item =>
// item.description.toLowerCase().includes(searchTerm)
// || item.soundpath.toLowerCase().includes(searchTerm)
// || item.broadcastZones.toLowerCase().includes(searchTerm));
// fill_schedulebanktablebody(filtered);
// } else {
// window.selectedschedulerow = null;
// fill_schedulebanktablebody(window.schedulebankdata);
// }
// });
reloadTimerBank(APIURL);
@@ -328,18 +351,17 @@ $(document).ready(function () {
});
$btnRemove.click(() => {
if (window.selectedschedulerow) {
let cells = window.selectedschedulerow.find('td');
/** @type {ScheduleBank} */
let sr = {
index: Number(cells.eq(0).text()),
description: cells.eq(1).text(),
day: cells.eq(2).text(),
time: cells.eq(3).text(),
soundpath: cells.eq(4).text(),
repeat: cells.eq(5).text(),
enable: cells.eq(6).text(),
broadcastZones: cells.eq(7).text(),
language: cells.eq(8).text()
index: window.selectedschedulerow.index,
description: window.selectedschedulerow.description,
day: window.selectedschedulerow.day,
time: window.selectedschedulerow.time,
soundpath: window.selectedschedulerow.soundpath,
repeat: window.selectedschedulerow.repeat,
enable: window.selectedschedulerow.enable,
broadcastZones: window.selectedschedulerow.broadcastZones,
language: window.selectedschedulerow.language
}
if (confirm(`Are you sure to delete schedule [${sr.index}] Description=${sr.description}?`)) {
fetchAPI(APIURL + "DeleteByIndex/" + sr.index, "DELETE", {}, null, (okdata) => {
@@ -353,18 +375,17 @@ $(document).ready(function () {
});
$btnEdit.click(() => {
if (window.selectedschedulerow) {
let cells = window.selectedschedulerow.find('td');
/** @type {ScheduleBank} */
let sr = {
index: Number(cells.eq(0).text()),
Description: cells.eq(1).text(),
Day: cells.eq(2).text(),
Time: cells.eq(3).text(),
Soundpath: cells.eq(4).text(),
Repeat: cells.eq(5).text(),
Enable: cells.eq(6).text(),
BroadcastZones: cells.eq(7).text(),
Language: cells.eq(8).text()
index: window.selectedschedulerow.index,
Description: window.selectedschedulerow.description,
Day: window.selectedschedulerow.day,
Time: window.selectedschedulerow.time,
Soundpath: window.selectedschedulerow.soundpath,
Repeat: window.selectedschedulerow.repeat,
Enable: window.selectedschedulerow.enable,
BroadcastZones: window.selectedschedulerow.broadcastZones,
Language: window.selectedschedulerow.language
}
if (confirm(`Are you sure to edit schedule [${sr.index}] Description=${sr.Description}?`)) {
$schedulemodal.modal('show');
@@ -385,7 +406,7 @@ $(document).ready(function () {
case 'Everyday':
$scheduleeveryday.click();
break;
case 'Sunday' :
case 'Sunday':
case 'Monday':
case 'Tuesday':
case 'Wednesday':