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