commit 09/02/2026
This commit is contained in:
@@ -22,6 +22,15 @@ window.schedulebankdata = [];
|
||||
window.selectedschedulerow = null;
|
||||
|
||||
dtScheduleBank = null;
|
||||
dtTodaySchedule = null;
|
||||
|
||||
function fill_todayscheduletablebody(vv) {
|
||||
dtTodaySchedule.clear();
|
||||
if (!Array.isArray(vv) || vv.length === 0) return;
|
||||
|
||||
dtTodaySchedule.rows.add(vv);
|
||||
dtTodaySchedule.draw();
|
||||
}
|
||||
|
||||
/**
|
||||
* Fill schedulebank table body with values
|
||||
@@ -117,7 +126,19 @@ function reloadTimerBank(APIURL = "ScheduleBank/") {
|
||||
});
|
||||
}
|
||||
|
||||
function reloadTodaySchedule(APIURL = "ScheduleBank/") {
|
||||
fetchAPI(APIURL + "TodaySchedule", "GET", {}, null, (okdata) => {
|
||||
if (Array.isArray(okdata)) {
|
||||
console.log("Today's Schedule: ", okdata);
|
||||
fill_todayscheduletablebody(okdata);
|
||||
}
|
||||
}, (errdata) => {
|
||||
alert("Error loading today's schedule : " + errdata.message);
|
||||
});
|
||||
}
|
||||
|
||||
dayViewMode = 'all'; // all, everyday, monday, tuesday, wednesday, thursday, friday, saturday, sunday
|
||||
scheduledate = null; // Litepicker instance for schedule date selection
|
||||
|
||||
$(document).ready(function () {
|
||||
console.log("schedulebank.js loaded successfully");
|
||||
@@ -169,6 +190,26 @@ $(document).ready(function () {
|
||||
});
|
||||
}
|
||||
|
||||
if (dtTodaySchedule === null) {
|
||||
dtTodaySchedule = new DataTable('#todaytable', {
|
||||
dom: 'Bfrtip',
|
||||
data: [],
|
||||
pageLength: 25,
|
||||
columns: [
|
||||
{ title: "No", data: "index" },
|
||||
{ title: "Description", data: "description" },
|
||||
{ title: "Day", data: "day" },
|
||||
{ title: "Time", data: "time" },
|
||||
{ title: "Message", data: "soundpath" },
|
||||
{ title: "Repeat", data: "repeat" },
|
||||
{ title: "Enable", data: "enable" },
|
||||
{ title: "Broadcast Zones", data: "broadcastZones" },
|
||||
{ title: "Language", data: "language" }
|
||||
],
|
||||
buttons: ['print', 'pdf']
|
||||
});
|
||||
}
|
||||
|
||||
$.fn.dataTable.ext.search.push(function (settings, data, dataIndex, rowData) {
|
||||
if (settings.nTable.id !== 'schedulebanktable') return true;
|
||||
switch (dayViewMode) {
|
||||
@@ -223,16 +264,30 @@ $(document).ready(function () {
|
||||
let $weeklyselect = $schedulemodal.find('#weeklyselect');
|
||||
// radio button for specific date
|
||||
let $schedulespecialdate = $schedulemodal.find('#schedulespecialdate');
|
||||
|
||||
scheduledate = new Litepicker({
|
||||
element: document.getElementById('scheduledate'),
|
||||
format: 'DD/MM/YYYY',
|
||||
lang: 'en-US',
|
||||
autoApply: true,
|
||||
singleMode: true,
|
||||
startDate: new Date(),
|
||||
onSelect: (date) => {
|
||||
console.log("Selected special date: " + date.format('DD/MM/YYYY'));
|
||||
}
|
||||
})
|
||||
// date input
|
||||
let $scheduledate = $schedulemodal.find('#scheduledate');
|
||||
//let $scheduledate = $schedulemodal.find('#scheduledate');
|
||||
// select2 for language
|
||||
let $languageselect = $schedulemodal.find('#languageselect');
|
||||
|
||||
$schedulespecialdate.off('change').on('change', function () {
|
||||
if ($(this).is(':checked')) {
|
||||
$scheduledate.prop('disabled', false);
|
||||
//$scheduledate.prop('disabled', false);
|
||||
scheduledate.disabled = false
|
||||
} else {
|
||||
$scheduledate.prop('disabled', true);
|
||||
//$scheduledate.prop('disabled', true);
|
||||
scheduledate.disabled = true
|
||||
}
|
||||
});
|
||||
|
||||
@@ -261,7 +316,8 @@ $(document).ready(function () {
|
||||
dropdownParent: $('#schedulemodal')
|
||||
});
|
||||
|
||||
$scheduledate.prop('disabled', true).val('');
|
||||
//$scheduledate.prop('disabled', true).val('');
|
||||
scheduledate.disabled = true;
|
||||
$schedulezones.empty().select2({
|
||||
data: window.BroadcastZoneList.map(zone => ({ id: zone.description, text: zone.description })),
|
||||
placeholder: 'Select broadcast zones',
|
||||
@@ -284,24 +340,28 @@ $(document).ready(function () {
|
||||
$scheduleeveryday.off('change').on('change', function () {
|
||||
if ($(this).is(':checked')) {
|
||||
$weeklyselect.prop('disabled', true);
|
||||
$scheduledate.prop('disabled', true);
|
||||
//$scheduledate.prop('disabled', true);
|
||||
scheduledate.disabled = true;
|
||||
}
|
||||
});
|
||||
$scheduleweekly.off('change').on('change', function () {
|
||||
if ($(this).is(':checked')) {
|
||||
$weeklyselect.prop('disabled', false);
|
||||
$scheduledate.prop('disabled', true);
|
||||
//$scheduledate.prop('disabled', true);
|
||||
scheduledate.disabled = true;
|
||||
}
|
||||
});
|
||||
$schedulespecialdate.off('change').on('change', function () {
|
||||
if ($(this).is(':checked')) {
|
||||
$weeklyselect.prop('disabled', true);
|
||||
$scheduledate.prop('disabled', false);
|
||||
//$scheduledate.prop('disabled', false);
|
||||
scheduledate.disabled = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
reloadTimerBank(APIURL);
|
||||
reloadTodaySchedule(APIURL);
|
||||
reloadBroadcastZones();
|
||||
getLanguages();
|
||||
getScheduledDays();
|
||||
@@ -309,6 +369,7 @@ $(document).ready(function () {
|
||||
$btnClear.click(() => {
|
||||
DoClear(APIURL, "Timerbank", (okdata) => {
|
||||
reloadTimerBank(APIURL);
|
||||
reloadTodaySchedule(APIURL);
|
||||
alert("Success clear schedulebank : " + okdata.message);
|
||||
}, (errdata) => {
|
||||
alert("Error clear schedulebank : " + errdata.message);
|
||||
@@ -317,7 +378,9 @@ $(document).ready(function () {
|
||||
});
|
||||
$btnAdd.click(() => {
|
||||
$schedulemodal.modal('show');
|
||||
|
||||
clearScheduleModal();
|
||||
$scheduleeveryday.prop('checked', true).trigger('click');
|
||||
|
||||
$schedulemodal.off('click.scheduleclose').on('click.scheduleclose', '#scheduleclose', function () {
|
||||
$schedulemodal.modal('hide');
|
||||
@@ -333,7 +396,7 @@ $(document).ready(function () {
|
||||
if ($scheduleeveryday.is(':checked')) {
|
||||
_Day = "Everyday";
|
||||
} else if ($schedulespecialdate.is(':checked')) {
|
||||
_Day = Convert_input_date_to_string($scheduledate.val());
|
||||
_Day = Convert_input_date_to_string(scheduledate.getDate().format('DD/MM/YYYY'));
|
||||
} else if ($scheduleweekly.is(':checked')) {
|
||||
_Day = $weeklyselect.val();
|
||||
}
|
||||
@@ -363,6 +426,7 @@ $(document).ready(function () {
|
||||
|
||||
fetchAPI(APIURL + "Add", "POST", {}, scheduleObj, (okdata) => {
|
||||
reloadTimerBank(APIURL);
|
||||
reloadTodaySchedule(APIURL);
|
||||
alert("Success add schedule: " + okdata.message);
|
||||
}, (errdata) => {
|
||||
alert("Error add schedule: " + errdata.message);
|
||||
@@ -393,6 +457,7 @@ $(document).ready(function () {
|
||||
if (confirm(`Are you sure to delete schedule [${sr.index}] Description=${sr.description}?`)) {
|
||||
fetchAPI(APIURL + "DeleteByIndex/" + sr.index, "DELETE", {}, null, (okdata) => {
|
||||
reloadTimerBank(APIURL);
|
||||
reloadTodaySchedule(APIURL);
|
||||
alert("Success delete schedule : " + okdata.message);
|
||||
}, (errdata) => {
|
||||
alert("Error delete schedule : " + errdata.message);
|
||||
@@ -438,7 +503,8 @@ $(document).ready(function () {
|
||||
$weeklyselect.val(null).trigger('change');
|
||||
$weeklyselect.prop('disabled', true);
|
||||
|
||||
$scheduledate.prop('disabled', true);
|
||||
//$scheduledate.prop('disabled', true);
|
||||
scheduledate.disabled = true;
|
||||
break;
|
||||
case 'Sunday':
|
||||
case 'Monday':
|
||||
@@ -452,7 +518,8 @@ $(document).ready(function () {
|
||||
$weeklyselect.val(sr.Day).trigger('change');
|
||||
$weeklyselect.prop('disabled', false);
|
||||
|
||||
$scheduledate.prop('disabled', true);
|
||||
//$scheduledate.prop('disabled', true);
|
||||
scheduledate.disabled = true;
|
||||
break;
|
||||
default:
|
||||
console.log("Assuming special date for Day: ", sr.Day);
|
||||
@@ -461,8 +528,10 @@ $(document).ready(function () {
|
||||
if (/^\d{2}\/\d{2}\/\d{4}$/.test(sr.Day)) {
|
||||
$schedulespecialdate.prop('checked', true);
|
||||
|
||||
$scheduledate.val(Convert_string_to_input_date(sr.Day));
|
||||
$scheduledate.prop('disabled', false);
|
||||
//$scheduledate.val(Convert_string_to_input_date(sr.Day));
|
||||
// $scheduledate.prop('disabled', false);
|
||||
scheduledate.setDate(dayjs(sr.Day,'DD/MM/YYYY'));
|
||||
scheduledate.disabled = false;
|
||||
|
||||
$weeklyselect.val(null).trigger('change');
|
||||
$weeklyselect.prop('disabled', true);
|
||||
@@ -484,7 +553,8 @@ $(document).ready(function () {
|
||||
Day = "Everyday";
|
||||
} else if ($schedulespecialdate.is(':checked')) {
|
||||
// convert date from yyyy-mm-dd to dd/mm/yyyy
|
||||
Day = Convert_input_date_to_string($scheduledate.val());
|
||||
//Day = Convert_input_date_to_string($scheduledate.val());
|
||||
Day = scheduledate.getDate().format('DD/MM/YYYY');
|
||||
} else if ($scheduleweekly.is(':checked')) {
|
||||
Day = $weeklyselect.val();
|
||||
}
|
||||
@@ -516,6 +586,7 @@ $(document).ready(function () {
|
||||
fetchAPI(APIURL + "UpdateByIndex/" + sr.index, "PATCH", {}, scheduleObj, (okdata) => {
|
||||
alert("Success edit schedule: " + okdata.message);
|
||||
reloadTimerBank(APIURL);
|
||||
reloadTodaySchedule(APIURL);
|
||||
}, (errdata) => {
|
||||
alert("Error edit schedule: " + errdata.message);
|
||||
});
|
||||
@@ -537,6 +608,7 @@ $(document).ready(function () {
|
||||
$btnImport.click(() => {
|
||||
DoImport(APIURL, (okdata) => {
|
||||
reloadTimerBank(APIURL);
|
||||
reloadTodaySchedule(APIURL);
|
||||
alert("Success import schedulebank from XLSX : " + okdata.message);
|
||||
}, (errdata) => {
|
||||
alert("Error importing schedulebank from XLSX : " + errdata.message);
|
||||
|
||||
Reference in New Issue
Block a user