Files
atlhousingreport/js/searchPermitsByBuilder.js
T

653 lines
19 KiB
JavaScript

// =========================
// Search Permits By Builder
// =========================
$(document).ready(function () {
var $application = $("#APPLICATION_MNEMONIC").val(), $sessionStorage = JSON.parse(sessionStorage.getItem($application) || "{}");
// =================
// Process Enter Key
// =================
$(document).on('keypress', function (e) {
if (e.which === 13) {
e.preventDefault();
$("#searchPermitsByBuilder").submit();
}
});
// --------------------
// Initialize Dropdowns
// --------------------
$("#permits_per_page").val($sessionStorage.permits_per_page || "20");
// -----------
// Input Masks
// -----------
$(".date-mask").inputmask({alias: "datetime",
inputFormat: "mm/dd/yyyy",
placeholder: "MM/DD/YYYY",
showMaskOnHover: false});
// ------------
// Date Pickers
// ------------
$("#permit_entry_start_date").datepicker({format: "mm-dd-yyyy",
container: "div.permit_entry_start_date",
keyboardNavigation: false,
showOnFocus: false,
autoclose: true,
orientation: "left bottom",
todayBtn: "linked",
todayHighlight: true});
$("#permit_entry_end_date").datepicker({format: "mm-dd-yyyy",
container: "div.permit_entry_end_date",
keyboardNavigation: false,
showOnFocus: false,
autoclose: true,
orientation: "left bottom",
todayBtn: "linked",
todayHighlight: true});
$("#permit_permit_start_date").datepicker({format: "mm-dd-yyyy",
container: "div.permit_permit_start_date",
keyboardNavigation: false,
showOnFocus: false,
autoclose: true,
orientation: "left bottom",
todayBtn: "linked",
todayHighlight: true});
$("#permit_permit_end_date").datepicker({format: "mm-dd-yyyy",
container: "div.permit_permit_end_date",
keyboardNavigation: false,
showOnFocus: false,
autoclose: true,
orientation: "left bottom",
todayBtn: "linked",
todayHighlight: true});
// ---------------------
// Show Calendar Buttons
// ---------------------
$(".btnEntryStartDateCalendar").on("click", function (e) {
e.preventDefault();
$("#permit_entry_start_date").focus().datepicker("show");
});
$(".btnEntryEndDateCalendar").on("click", function (e) {
e.preventDefault();
$("#permit_entry_end_date").focus().datepicker("show");
});
$(".btnPermitStartDateCalendar").on("click", function (e) {
e.preventDefault();
$("#permit_permit_start_date").focus().datepicker("show");
});
$(".btnPermitEndDateCalendar").on("click", function (e) {
e.preventDefault();
$("#permit_permit_end_date").focus().datepicker("show");
});
// ----------------
// Filter the Rows.
// ----------------
$("#filter").on("keyup", function () {
var filter = $(this).val().toLowerCase();
$(".permit-row").hide().filter(function () {
return $(this).find(".filterable").text().toLowerCase().indexOf(filter) > -1;
}).show();
if ($(".permit-row:visible").length === 0) {
$("#permits-table thead").hide();
$(".filter-error").removeClass("d-none");
} else {
$("#permits-table thead").show();
$(".filter-error").addClass("d-none");
}
});
// -------------------
// Clear Filter Button
// -------------------
$(".btnClearFilter").on("click", function () {
$("#filter").val("").trigger("change");
$sessionStorage.action = "PermitsByBuilder.searchPermits";
$sessionStorage.pagination = "first";
sessionStorage.setItem($application, JSON.stringify($sessionStorage));
$("#spinner-dialog").modal("show");
formSubmit($sessionStorage);
});
// ---------------
// Per Page Change
// ---------------
$("#permits_per_page").on("change", function () {
$sessionStorage.permits_per_page = $(this).val();
$sessionStorage.action = "PermitsByBuilder.searchPermits";
$sessionStorage.pagination = "first";
sessionStorage.setItem($application, JSON.stringify($sessionStorage));
$("#spinner-dialog").modal("show");
formSubmit($sessionStorage);
});
// ------------------
// Pagination Buttons
// ------------------
$(".btnPagination").on("click", function () {
$sessionStorage.action = "PermitsByBuilder.searchPermits";
$sessionStorage.pagination = $(this).data("pagination");
sessionStorage.setItem($application, JSON.stringify($sessionStorage));
$("#spinner-dialog").modal("show");
formSubmit($sessionStorage);
delete $sessionStorage.pagination;
sessionStorage.setItem($application, JSON.stringify($sessionStorage));
});
// ----------------
// Display Scollbar
// ----------------
$(".scrollable").scroll(function () {
if ($(this).scrollTop() > 60) {
$("#btnTop").fadeIn();
} else {
$("#btnTop").fadeOut();
}
});
// -------------
// Search Button
// -------------
$(".btnSearch").on("click", function (e) {
e.preventDefault();
$("#searchPermitsByBuilder").submit();
});
// -------------
// Search Button
// -------------
$(".btnReset").on("click", function (e) {
e.preventDefault();
$sessionStorage.action = "PermitsByBuilder.searchPermits";
$sessionStorage.pagination = $(this).data("pagination");
$("#spinner-dialog").modal("show");
delete $sessionStorage.pagination;
delete $sessionStorage.permit_company;
delete $sessionStorage.permit_and_or;
delete $sessionStorage.permit_entry_start_date;
delete $sessionStorage.permit_entry_end_date;
delete $sessionStorage.permit_permit_start_date;
delete $sessionStorage.permit_permit_end_date;
sessionStorage.setItem($application, JSON.stringify($sessionStorage));
formSubmit($sessionStorage);
});
// -------------
// Cancel Button
// -------------
$(".btnCancel").on("click", function () {
$sessionStorage.action = $sessionStorage.userSubscriptions || "";
sessionStorage.setItem($application, JSON.stringify($sessionStorage));
formSubmit($sessionStorage);
});
// ---------------
// Validate Inputs
// ---------------
$("#searchPermitsByBuilder").submit(function (e) {
$("#spinner-dialog").modal("show");
var builder = $("#permit_company"),
permit_and_or = $("#permit_and_or"),
permit_entry_start_date = $("#permit_entry_start_date"),
permit_entry_end_date = $("#permit_entry_end_date"),
permit_permit_start_date = $("#permit_permit_start_date"),
permit_permit_end_date = $("#permit_permit_end_date"),
form_error = $("#search-form-error");
clearInputErrors();
// Function to display errors and hide spinner
function showError(message, element) {
$("#spinner-dialog").modal("hide");
createInputError(form_error, message);
if (element)
createInputError(element, "");
return false;
}
// Validate required fields
if ([builder, permit_entry_start_date, permit_entry_end_date, permit_permit_start_date, permit_permit_end_date].every(isBlank)) {
return showError("Please provide a search criteria.");
}
if (isBlank(permit_entry_start_date) && !isBlank(permit_entry_end_date)) {
return showError("Please provide an Entry From Date for range.", permit_entry_start_date);
}
if (isBlank(permit_permit_start_date) && !isBlank(permit_permit_end_date)) {
return showError("Please provide a Permit From Date for range.", permit_permit_start_date);
}
// Validate date ranges
if (permit_entry_end_date.val() && !checkEndingDate(permit_entry_start_date, permit_entry_end_date)) {
return showError("Start Date must be prior to End Date");
}
if (permit_permit_end_date.val() && !checkEndingDate(permit_permit_start_date, permit_permit_end_date)) {
return showError("Start Date must be prior to End Date");
}
e.preventDefault();
$sessionStorage.permit_company = builder.val();
$sessionStorage.permit_and_or = permit_and_or.val();
$sessionStorage.permit_entry_start_date = permit_entry_start_date.val();
$sessionStorage.permit_entry_end_date = permit_entry_end_date.val();
$sessionStorage.permit_permit_start_date = permit_permit_start_date.val();
$sessionStorage.permit_permit_end_date = permit_permit_end_date.val();
sessionStorage.setItem($application, JSON.stringify($sessionStorage));
formSubmit($sessionStorage);
});
// -------------------
// Column Heading Sort
// -------------------
if (($sessionStorage.permits_order_by || "") !== "") {
$("th[data-order-by = '" + ($sessionStorage.permits_order_by || "") + "']").append('<i class="' + ($sessionStorage.permits_order_icon || "") + ' text-danger ms-1 me-0"/>');
}
$("th.sortable").on("click", function (e) {
if ($(e.target).data("order-by") !== ($sessionStorage.permits_order_by || "")) { // New Column
$sessionStorage.permits_order_by = $(e.target).data("order-by");
$sessionStorage.permits_order_direction = "asc";
$sessionStorage.permits_order_icon = "bi bi-arrow-up";
} else {
switch ($sessionStorage.permits_order_direction) {
case "" :
$sessionStorage.permits_order_by = $(e.target).data("order-by");
$sessionStorage.permits_order_direction = "asc";
$sessionStorage.permits_order_icon = "bi bi-arrow-up";
break;
case "asc" :
$sessionStorage.permits_order_by = $(e.target).data("order-by");
$sessionStorage.permits_order_direction = "desc";
$sessionStorage.permits_order_icon = "bi bi-arrow-down";
break;
case "desc" :
$sessionStorage.permits_order_by = "";
$sessionStorage.permits_order_direction = "";
$sessionStorage.permits_order_icon = "";
break;
}
}
sessionStorage.setItem($application, JSON.stringify($sessionStorage));
$("#spinner-dialog").modal("show");
formSubmit($sessionStorage);
});
// -----------------
// Select All Button
// -----------------
$(".btnSelectAll").on("click", function (e) {
e.preventDefault();
$(".selection-checkbox:input:checkbox").prop("checked", true);
$(".btnDeselectAll, .btnExportSelected").removeClass("d-none");
});
// -------------------
// Deselect All Button
// -------------------
$(".btnDeselectAll").on("click", function (e) {
e.preventDefault();
$(".selection-checkbox:input:checkbox").prop("checked", false);
$(".btnDeselectAll, .btnExportSelected").addClass("d-none");
});
// ------------------------
// Toggle a Select Checkbox
// ------------------------
$(".permit-row").on("click touch", function (e) {
if (!($(e.target).hasClass("selection-area"))) {
return false;
}
;
e.preventDefault();
var $this = $(e.target), checked = ($this.closest("tr").find("input[name='selected[]']").prop("checked"));
// Toggle the selected Checkbox.
$this.closest("tr").find("input[name='selected[]']").prop("checked", !checked);
if ($("input[name='selected[]']:checked").length === 0) {
$(".btnDeselectAll, .btnExportSelected").addClass("d-none");
} else {
$(".btnDeselectAll, .btnExportSelected").removeClass("d-none");
}
});
// ------------------------
// Export All Permits - PDF
// ------------------------
$(".btnExportAllPDF").on("click", function (e) {
e.preventDefault();
window.open("", "PrintTab");
$("input[name = 'action']", "#PrintAllPermitsByBuilderPDFForm").val("print");
$("input[name = 'subscription_serial']", "#PrintAllPermitsByBuilderPDFForm").val($sessionStorage.subscription_serial);
$("#PrintAllPermitsByBuilderPDFForm").submit();
});
// --------------------------
// Export All Permits - Excel
// --------------------------
$(".btnExportAllExcel").on("click", function (e) {
$("#spinner-dialog").modal("show");
$sessionStorage.action = "Export_AllPermitsByBuilderExcel.export";
$sessionStorage.subscription_reference = $sessionStorage.subscription_serial;
$sessionStorage.downloadReturn = "Reports.selectReport";
sessionStorage.setItem($application, JSON.stringify($sessionStorage));
// Submit in a new tab
formSubmit($sessionStorage, "_blank");
// Hide spinner immediately, since the main page isn't going anywhere
setTimeout(function () {
$("#spinner-dialog").modal("hide");
}, 2000); // optional: add a slight delay so it feels responsive
});
// ------------------------
// Export All Permits - CSV
// ------------------------
$(".btnExportAllCSV").on("click", function (e) {
$("#spinner-dialog").modal("show");
$sessionStorage.action = "Export_AllPermitsByBuilderCSV.export";
$sessionStorage.subscription_reference = $sessionStorage.subscription_serial;
sessionStorage.setItem($application, JSON.stringify($sessionStorage));
// Submit in a new tab
formSubmit($sessionStorage, "_blank");
// Hide spinner immediately, since the main page isn't going anywhere
setTimeout(function () {
$("#spinner-dialog").modal("hide");
}, 2000); // optional: add a slight delay so it feels responsive
});
// ---------------------------------
// Print Selected Work Orders Button
// ---------------------------------
$(".btnPrintSelected").on("click", function (e) {
e.preventDefault();
window.open("", "PrintTab");
var selected = $("input[name='selected[]']:checked").map(function () {
return $(this).val();
}).get();
$("input[name = 'action']", "#PrintSelectedPermitsByBuilderForm").val("print");
$("input[name = 'selected_permits']", "#PrintSelectedPermitsByBuilderForm").val(selected);
$("input[name = 'subscription_serial']", "#PrintSelectedPermitsByBuilderForm").val($sessionStorage.subscription_serial);
$("#PrintSelectedPermitsByBuilderForm").submit();
});
// -----------------------------
// Export Selected Permits - CSV
// -----------------------------
$(".btnExportCSV").on("click", function (e) {
$("#spinner-dialog").modal("show");
var selected = $("input[name='selected[]']:checked").map(function () {
return $(this).val();
}).get();
$sessionStorage.action = "Export_SelectedPermitsByBuilderCSV.export";
$sessionStorage.selected_permits = selected;
$sessionStorage.subscription_reference = $sessionStorage.subscription_serial;
sessionStorage.setItem($application, JSON.stringify($sessionStorage));
// Submit in a new tab
formSubmit($sessionStorage, "_blank");
// Hide spinner immediately, since the main page isn't going anywhere
setTimeout(function () {
$("#spinner-dialog").modal("hide");
}, 2000); // optional: add a slight delay so it feels responsive
});
// -------------------------------
// Export Selected Permits - Excel
// -------------------------------
$(".btnExportExcel").on("click", function (e) {
$("#spinner-dialog").modal("show");
var selected = $("input[name='selected[]']:checked").map(function () {
return $(this).val();
}).get();
$sessionStorage.action = "Export_SelectedPermitsByBuilderExcel.export";
$sessionStorage.selected_permits = selected;
$sessionStorage.downloadReturn = "Reports.selectReport";
sessionStorage.setItem($application, JSON.stringify($sessionStorage));
// Submit in a new tab
formSubmit($sessionStorage, "_blank");
// Hide spinner immediately, since the main page isn't going anywhere
setTimeout(function () {
$("#spinner-dialog").modal("hide");
}, 2000); // optional: add a slight delay so it feels responsive
});
// -------------------
// Save Changed Inputs
// -------------------
$(".autosave").on("change", function (e) {
switch (e.target.type) {
case "text" :
$sessionStorage[e.target.name] = $(this).val();
break;
case "radio" :
$sessionStorage[e.target.name] = $(this).val();
break;
case "checkbox" :
$sessionStorage[e.target.name] = $(this).prop("checked");
break;
case "select-one" :
$sessionStorage[e.target.name] = $(this).val();
break;
case "hidden" :
$sessionStorage[e.target.name] = $(this).val();
break;
default :
$sessionStorage[e.target.name] = $(this).val();
break;
}
sessionStorage.setItem($application, JSON.stringify($sessionStorage));
});
// ----------------
// Initalize Inputs
// ----------------
$.each($sessionStorage, function (name, value) {
var $input = $(":input").filter("[name='" + name + "']");
if ($input.length > 0) {
switch ($input.prop("type")) {
case "text" :
$input.val(value);
break;
case "radio" :
$input.filter("[value=" + value + "]").prop("checked", true);
break;
case "checkbox" :
$input.prop("checked", value);
break;
case "select-one" :
$input.val(value);
break;
case "hidden" :
$input.val(value);
break;
default :
$input.val(value);
break;
}
}
});
// ------------------
// Save preset Inputs
// ------------------
$("input[type=radio]:checked").trigger("change");
// -----------------
// Per Page Dropdown
// -----------------
$("#permits_per_page").on("change", function () {
$(".btnFind").trigger("click");
});
});