2026-10-18 17:01:36 +00:00
|
|
|
|
|
|
|
|
// =========
|
|
|
|
|
// Add Alert
|
|
|
|
|
// =========
|
|
|
|
|
|
|
|
|
|
$(document).ready(function () {
|
|
|
|
|
|
2026-10-21 06:53:45 -04:00
|
|
|
var $application = $("#APPLICATION_MNEMONIC").val(), $sessionStorage = JSON.parse(sessionStorage.getItem($application) || "{}");
|
2026-10-18 17:01:36 +00:00
|
|
|
|
|
|
|
|
// ----------------------
|
|
|
|
|
// Initialize the Editor.
|
|
|
|
|
// ----------------------
|
|
|
|
|
|
2026-10-21 06:53:45 -04:00
|
|
|
HcrRichText.create(document.querySelector('#alert_message'));
|
2026-10-18 17:01:36 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
// ------------
|
|
|
|
|
// Date Pickers
|
|
|
|
|
// ------------
|
|
|
|
|
|
|
|
|
|
$("#alert_starts_date").datepicker({format: "yyyy-mm-dd",
|
|
|
|
|
container: "div.starts-date",
|
|
|
|
|
keyboardNavigation: false,
|
|
|
|
|
autoclose: true,
|
|
|
|
|
orientation: "bottom",
|
|
|
|
|
todayBtn: "linked",
|
|
|
|
|
todayHighlight: true});
|
|
|
|
|
|
|
|
|
|
$("#alert_expires_date").datepicker({format: "yyyy-mm-dd",
|
|
|
|
|
container: "div.expires-date",
|
|
|
|
|
keyboardNavigation: false,
|
|
|
|
|
autoclose: true,
|
|
|
|
|
orientation: "bottom",
|
|
|
|
|
todayBtn: "linked",
|
|
|
|
|
todayHighlight: true});
|
|
|
|
|
|
|
|
|
|
$("#alert_starts_time").inputmask({alias: "datetime",
|
|
|
|
|
placeholder: "HH:MM",
|
|
|
|
|
inputFormat: "HH:MM",
|
|
|
|
|
insertMode: false,
|
|
|
|
|
showMaskOnHover: false,
|
|
|
|
|
hourFormat: 24
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
$("#alert_expires_time").inputmask({alias: "datetime",
|
|
|
|
|
placeholder: "HH:MM",
|
|
|
|
|
inputFormat: "HH:MM",
|
|
|
|
|
insertMode: false,
|
|
|
|
|
showMaskOnHover: false,
|
|
|
|
|
hourFormat: 24
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// ---------------------
|
|
|
|
|
// Show Calendar Buttons
|
|
|
|
|
// ---------------------
|
|
|
|
|
|
2026-10-20 06:45:30 -04:00
|
|
|
$(".btnAlertStartDateCalendar").on("click", async function (e) {
|
2026-10-18 17:01:36 +00:00
|
|
|
e.preventDefault();
|
|
|
|
|
$("#alert_starts_date").focus().datepicker("show");
|
|
|
|
|
});
|
|
|
|
|
|
2026-10-20 06:45:30 -04:00
|
|
|
$(".btnAlertExpiresDateCalendar").on("click", async function (e) {
|
2026-10-18 17:01:36 +00:00
|
|
|
e.preventDefault();
|
|
|
|
|
$("#alert_expires_date").focus().datepicker("show");
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
2026-10-20 06:45:30 -04:00
|
|
|
$("#alert_starts_date").on("blur", async function () {
|
2026-10-18 17:01:36 +00:00
|
|
|
$("#alert_starts_time").focus();
|
|
|
|
|
});
|
|
|
|
|
|
2026-10-20 06:45:30 -04:00
|
|
|
$("#alert_expires_date").on("blur", async function () {
|
2026-10-18 17:01:36 +00:00
|
|
|
$("#alert_expires_time").focus();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// -----------
|
|
|
|
|
// Save Button
|
|
|
|
|
// -----------
|
|
|
|
|
|
2026-10-20 06:45:30 -04:00
|
|
|
$(".btnSave").on("click", async function (e) {
|
2026-10-18 17:01:36 +00:00
|
|
|
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
|
|
|
|
|
$("#addAlert").submit();
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// -------------
|
|
|
|
|
// Cancel Button
|
|
|
|
|
// -------------
|
|
|
|
|
|
2026-10-20 06:45:30 -04:00
|
|
|
$(".btnCancel").on("click", async function () {
|
2026-10-18 17:01:36 +00:00
|
|
|
|
|
|
|
|
$sessionStorage.action = $sessionStorage.addAlert || "";
|
|
|
|
|
|
|
|
|
|
sessionStorage.setItem($application, JSON.stringify($sessionStorage));
|
|
|
|
|
|
|
|
|
|
formSubmit($sessionStorage);
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// ---------------
|
|
|
|
|
// Validate Inputs
|
|
|
|
|
// ---------------
|
|
|
|
|
|
2026-10-20 06:45:30 -04:00
|
|
|
$("#addAlert").submit(async function (e) {
|
|
|
|
|
e.preventDefault();
|
2026-10-18 17:01:36 +00:00
|
|
|
|
|
|
|
|
var alert_title = $("#alert_title"),
|
|
|
|
|
alert_starts_date = $("#alert_starts_date"),
|
|
|
|
|
alert_starts_time = $("#alert_starts_time"),
|
|
|
|
|
alert_expires_date = $("#alert_expires_date"),
|
|
|
|
|
alert_expires_time = $("#alert_expires_time"),
|
|
|
|
|
alert_message = $("#alert_message");
|
|
|
|
|
|
|
|
|
|
clearInputErrors();
|
|
|
|
|
|
|
|
|
|
alert_title.val(alert_title.val().replace(/\s+/g, " ").trim());
|
|
|
|
|
|
|
|
|
|
if (isBlank(alert_title)) {
|
|
|
|
|
createInputError(alert_title, "Title is required");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2026-10-20 06:45:30 -04:00
|
|
|
if ((!isBlank(alert_starts_date)) && (!await isDate(alert_starts_date))) {
|
2026-10-18 17:01:36 +00:00
|
|
|
createInputError(alert_starts_date, "Date is invalid");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (isBlank(alert_starts_time)) {
|
|
|
|
|
createInputError(alert_starts_time, "Please enter a Time");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!alert_starts_time.inputmask("isComplete")) {
|
|
|
|
|
createInputError(alert_starts_time, "Please enter a Time");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (isBlank(alert_expires_date)) {
|
|
|
|
|
createInputError(alert_expires_date, "Please enter a Date");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2026-10-20 06:45:30 -04:00
|
|
|
if ((!isBlank(alert_expires_date)) && (!await isDate(alert_expires_date))) {
|
2026-10-18 17:01:36 +00:00
|
|
|
createInputError(alert_expires_date, "Date is invalid");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (isBlank(alert_expires_time)) {
|
|
|
|
|
createInputError(alert_expires_time, "Please enter a Time");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!alert_expires_time.inputmask("isComplete")) {
|
|
|
|
|
createInputError(alert_expires_time, "Please enter a Time");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// if (isBlank(alert_message)) {
|
|
|
|
|
// createInputError(alert_message, "Please enter a Message");
|
|
|
|
|
// return false;
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
if (!checkDateTime(alert_starts_date, alert_starts_time, alert_expires_date, alert_expires_time)) {
|
|
|
|
|
createInputError(alert_expires_time, "Cannot be prior to Start");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
|
2026-10-21 06:53:45 -04:00
|
|
|
if (!HcrRichText.sync(document.querySelector('#alert_message'))) return;
|
2026-10-18 17:01:36 +00:00
|
|
|
|
|
|
|
|
$.post("./", $(this).serialize())
|
|
|
|
|
|
|
|
|
|
.done(function () {
|
|
|
|
|
|
|
|
|
|
$sessionStorage.action = $sessionStorage.addAlert || "";
|
|
|
|
|
|
|
|
|
|
sessionStorage.setItem($application, JSON.stringify($sessionStorage));
|
|
|
|
|
|
|
|
|
|
formSubmit($sessionStorage);
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// -----------------------------------------------------
|
|
|
|
|
// Expires date/time cannot be prior to Start date/time.
|
|
|
|
|
// -----------------------------------------------------
|
|
|
|
|
|
|
|
|
|
function checkDateTime(alert_starts_date, alert_starts_time, alert_expires_date, alert_expires_time) {
|
|
|
|
|
|
|
|
|
|
var starts_date_parts = alert_starts_date.val().split("-"),
|
|
|
|
|
starts_time_parts = alert_starts_time.val().split(":"),
|
|
|
|
|
expires_date_parts = alert_expires_date.val().split("-"),
|
|
|
|
|
expires_time_parts = alert_expires_time.val().split(":"),
|
|
|
|
|
starts_date,
|
|
|
|
|
expires_date;
|
|
|
|
|
|
|
|
|
|
starts_date = new Date(starts_date_parts[0], parseInt(starts_date_parts[1], 10) - 1, starts_date_parts[2]);
|
|
|
|
|
expires_date = new Date(expires_date_parts[0], parseInt(expires_date_parts[1], 10) - 1, expires_date_parts[2]);
|
|
|
|
|
|
|
|
|
|
starts_date.setHours(starts_time_parts[0], starts_time_parts[1], 0, 0);
|
|
|
|
|
expires_date.setHours(expires_time_parts[0], expires_time_parts[1], 0, 0);
|
|
|
|
|
|
|
|
|
|
if (expires_date.getTime() < starts_date.getTime()) {
|
|
|
|
|
return false;
|
|
|
|
|
} else {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|