first commit
This commit is contained in:
@@ -0,0 +1,565 @@
|
||||
|
||||
// ==========
|
||||
// Add County
|
||||
// ==========
|
||||
|
||||
$(document).ready(function () {
|
||||
|
||||
var $application = $("#APPLICATION_MNEMONIC").val(), $sessionStorage = JSON.parse(sessionStorage.getItem($application) || "{}");
|
||||
|
||||
// -----------
|
||||
// Input Masks
|
||||
// -----------
|
||||
|
||||
$(".date-mask").inputmask({alias: "datetime",
|
||||
inputFormat: "mm/dd/yyyy",
|
||||
placeholder: "MM/DD/YYYY",
|
||||
showMaskOnHover: false});
|
||||
|
||||
$(".numeric-mask").inputmask("9{0,9}", {showMaskOnHover: false});
|
||||
$(".zip-mask").inputmask("9{5}", {showMaskOnHover: false, removeMaskOnSubmit: true});
|
||||
$('.money-mask').inputmask('currency', {
|
||||
prefix: '$',
|
||||
groupSeparator: ',',
|
||||
digits: 2,
|
||||
digitsOptional: false,
|
||||
autoGroup: true,
|
||||
removeMaskOnSubmit: true
|
||||
});
|
||||
|
||||
$('.sqft-mask').inputmask('numeric', {
|
||||
groupSeparator: ',',
|
||||
autoGroup: true,
|
||||
digits: 0, // whole numbers only
|
||||
digitsOptional: false,
|
||||
allowMinus: false,
|
||||
rightAlign: false,
|
||||
removeMaskOnSubmit: true
|
||||
});
|
||||
|
||||
|
||||
// --------------
|
||||
// Select Pickers
|
||||
// --------------
|
||||
|
||||
$(".search-dropdown").selectpicker({noneSelectedText: "",
|
||||
style: "",
|
||||
styleBase: "form-select form-select-sm",
|
||||
iconBase: "bi",
|
||||
virtualScroll: true,
|
||||
size: 10,
|
||||
selectOnTab: true,
|
||||
containter: "body",
|
||||
liveSearch: true});
|
||||
|
||||
$(".multiple-dropdown").selectpicker({noneSelectedText: "Choose...",
|
||||
style: "",
|
||||
styleBase: "form-select form-select-sm",
|
||||
iconBase: "fa",
|
||||
actionsBox: true,
|
||||
selectedTextFormat: "count",
|
||||
virtualScroll: true,
|
||||
size: 10,
|
||||
selectOnTab: true,
|
||||
containter: "body",
|
||||
liveSearch: true});
|
||||
|
||||
// ------------
|
||||
// Date Pickers
|
||||
// ------------
|
||||
|
||||
$("#permitfact_permit_date_from").datepicker({format: "mm-dd-yyyy",
|
||||
container: "div.permit_date",
|
||||
keyboardNavigation: false,
|
||||
showOnFocus: false,
|
||||
autoclose: true,
|
||||
endDate: "0d",
|
||||
orientation: "left bottom",
|
||||
todayBtn: "linked",
|
||||
todayHighlight: true});
|
||||
|
||||
$("#permitfact_permit_date_to").datepicker({format: "mm-dd-yyyy",
|
||||
container: "div.permit_date",
|
||||
keyboardNavigation: false,
|
||||
showOnFocus: false,
|
||||
autoclose: true,
|
||||
endDate: "0d",
|
||||
orientation: "left bottom",
|
||||
todayBtn: "linked",
|
||||
todayHighlight: true});
|
||||
|
||||
$("#permitfact_entry_date_from").datepicker({format: "mm-dd-yyyy",
|
||||
container: "div.entry_date",
|
||||
keyboardNavigation: false,
|
||||
showOnFocus: false,
|
||||
autoclose: true,
|
||||
endDate: "0d",
|
||||
orientation: "left bottom",
|
||||
todayBtn: "linked",
|
||||
todayHighlight: true});
|
||||
|
||||
$("#permitfact_entry_date_to").datepicker({format: "mm-dd-yyyy",
|
||||
container: "div.entry_date",
|
||||
keyboardNavigation: false,
|
||||
showOnFocus: false,
|
||||
autoclose: true,
|
||||
endDate: "0d",
|
||||
orientation: "left bottom",
|
||||
todayBtn: "linked",
|
||||
todayHighlight: true});
|
||||
|
||||
// ---------------------
|
||||
// Show Calendar Buttons
|
||||
// ---------------------
|
||||
|
||||
$(".btnPermitDateFromCalendar").on("click", function (e) {
|
||||
e.preventDefault();
|
||||
$("#permitfact_permit_date_from").focus().datepicker("show");
|
||||
});
|
||||
$(".btnPermitDateToCalendar").on("click", function (e) {
|
||||
e.preventDefault();
|
||||
$("#permitfact_permit_date_to").focus().datepicker("show");
|
||||
});
|
||||
|
||||
$(".btnEntryDateFromCalendar").on("click", function (e) {
|
||||
e.preventDefault();
|
||||
$("#permitfact_entry_date_from").focus().datepicker("show");
|
||||
});
|
||||
$(".btnEntryDateToCalendar").on("click", function (e) {
|
||||
e.preventDefault();
|
||||
$("#permitfact_entry_date_to").focus().datepicker("show");
|
||||
});
|
||||
|
||||
$("#permitfacts_per_page").val($sessionStorage.permitfacts_per_page || "20");
|
||||
|
||||
// ---------------
|
||||
// Per Page Change
|
||||
// ---------------
|
||||
|
||||
$("#permitfacts_per_page").on("change", function () {
|
||||
|
||||
$sessionStorage.permitfacts_per_page = $(this).val();
|
||||
$sessionStorage.action = "PermitFacts.searchPermitFacts";
|
||||
$sessionStorage.pagination = "first";
|
||||
|
||||
sessionStorage.setItem($application, JSON.stringify($sessionStorage));
|
||||
|
||||
$("#spinner-dialog").modal("show");
|
||||
|
||||
formSubmit($sessionStorage);
|
||||
|
||||
});
|
||||
|
||||
// ------------------
|
||||
// Pagination Buttons
|
||||
// ------------------
|
||||
|
||||
$(".btnPagination").on("click", function () {
|
||||
|
||||
$sessionStorage.action = "PermitFacts.searchPermitFacts";
|
||||
$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));
|
||||
|
||||
});
|
||||
|
||||
// =================
|
||||
// Process Enter Key
|
||||
// =================
|
||||
|
||||
$(document).on('keypress', function (e) {
|
||||
if (e.which === 13) {
|
||||
e.preventDefault();
|
||||
$("#searchPermitFacts").submit();
|
||||
}
|
||||
});
|
||||
|
||||
// -----------------------
|
||||
// Filter the Permit Cards
|
||||
// -----------------------
|
||||
|
||||
$("#filter").on("keyup", function () {
|
||||
|
||||
const filter = $(this).val().toLowerCase().trim();
|
||||
|
||||
$(".permitfact-card").hide().filter(function () {
|
||||
return $(this).text().toLowerCase().indexOf(filter) > -1;
|
||||
}).show();
|
||||
|
||||
if ($(".permitfact-card:visible").length === 0) {
|
||||
$(".filter-error").removeClass("d-none");
|
||||
$(".print_page_buttons").addClass("d-none");
|
||||
} else {
|
||||
$(".filter-error").addClass("d-none");
|
||||
$(".print_page_buttons").removeClass("d-none");
|
||||
}
|
||||
});
|
||||
|
||||
// ----------------
|
||||
// Clear the filter
|
||||
// ----------------
|
||||
|
||||
$("#filter").on("keydown", function (e) {
|
||||
if (e.key === "Escape") {
|
||||
$(this).val("").trigger("keyup");
|
||||
}
|
||||
});
|
||||
|
||||
// ---------------------------
|
||||
// Export Permit Facts - Excel
|
||||
// ---------------------------
|
||||
|
||||
$(".btnExportExcel").on("click", function (e) {
|
||||
|
||||
$("#spinner-dialog").modal("show");
|
||||
|
||||
$sessionStorage.action = "Export_PermitFactsToExcel.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
|
||||
});
|
||||
|
||||
// -------------------------
|
||||
// Export Permit Facts - CSV
|
||||
// -------------------------
|
||||
|
||||
$(".btnExportCSV").on("click", function (e) {
|
||||
|
||||
$("#spinner-dialog").modal("show");
|
||||
|
||||
$sessionStorage.action = "Export_PermitFactsToExcel.export";
|
||||
$sessionStorage.subscription_reference = $sessionStorage.subscription_serial;
|
||||
$sessionStorage.pagination = "off";
|
||||
|
||||
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 Search Results - PDF
|
||||
// --------------------------
|
||||
|
||||
$(".btnPrintSearchResultsPDF").on("click", function (e) {
|
||||
|
||||
$("#spinner-dialog").modal("show");
|
||||
|
||||
$sessionStorage.action = "Print_PermitFactsPDF.print";
|
||||
$sessionStorage.subscription_reference = $sessionStorage.subscription_serial;
|
||||
$sessionStorage.pagination = "off";
|
||||
|
||||
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 Permit Facts - CSV
|
||||
// -----------------------------
|
||||
|
||||
$(".btnExportAllRecordsCSV").on("click", function (e) {
|
||||
|
||||
$sessionStorage.action = "Export.createExportRequest";
|
||||
$sessionStorage.subscription_reference = $sessionStorage.subscription_serial;
|
||||
$sessionStorage.userSubscriptions = "Export.usersExports";
|
||||
$sessionStorage.report_type = "csv";
|
||||
|
||||
sessionStorage.setItem($application, JSON.stringify($sessionStorage));
|
||||
|
||||
formSubmit($sessionStorage);
|
||||
|
||||
});
|
||||
// -------------------------------
|
||||
// Export All Permit Facts - Excel
|
||||
// -------------------------------
|
||||
|
||||
$(".btnExportAllRecordsExcel").on("click", function (e) {
|
||||
|
||||
$sessionStorage.action = "Export.createExportRequest";
|
||||
$sessionStorage.subscription_reference = $sessionStorage.subscription_serial;
|
||||
$sessionStorage.userSubscriptions = "Export.usersExports";
|
||||
$sessionStorage.report_type = "xlsx";
|
||||
|
||||
sessionStorage.setItem($application, JSON.stringify($sessionStorage));
|
||||
|
||||
formSubmit($sessionStorage);
|
||||
|
||||
});
|
||||
// -----------------------------
|
||||
// Export All Permit Facts - PDF
|
||||
// -----------------------------
|
||||
|
||||
$(".btnPrintAllRecordsPDF").on("click", function (e) {
|
||||
|
||||
$sessionStorage.action = "Export.createExportRequest";
|
||||
$sessionStorage.subscription_reference = $sessionStorage.subscription_serial;
|
||||
$sessionStorage.userSubscriptions = "Export.usersExports";
|
||||
$sessionStorage.report_type = "pdf";
|
||||
|
||||
sessionStorage.setItem($application, JSON.stringify($sessionStorage));
|
||||
|
||||
formSubmit($sessionStorage);
|
||||
|
||||
});
|
||||
|
||||
// -----------
|
||||
// Save Button
|
||||
// -----------
|
||||
|
||||
$(".btnSearch").on("click", function (e) {
|
||||
e.preventDefault();
|
||||
$("#searchPermitFacts").submit();
|
||||
});
|
||||
|
||||
// -----------
|
||||
// Home Button
|
||||
// -----------
|
||||
|
||||
$(".btnHome").on("click", function () {
|
||||
|
||||
$sessionStorage.action = "Subscriptions.usersSubscriptions";
|
||||
|
||||
sessionStorage.setItem($application, JSON.stringify($sessionStorage));
|
||||
|
||||
formSubmit($sessionStorage);
|
||||
|
||||
});
|
||||
|
||||
// -------------------
|
||||
// Reset Search Button
|
||||
// -------------------
|
||||
|
||||
$(".btnReset").on("click", function () {
|
||||
|
||||
clearForm($('#searchPermitFacts'));
|
||||
|
||||
$sessionStorage = clearSubscriptionSessionVariableFilters($sessionStorage);
|
||||
|
||||
$sessionStorage.action = "PermitFacts.searchPermitFacts";
|
||||
|
||||
sessionStorage.setItem($application, JSON.stringify($sessionStorage));
|
||||
|
||||
formSubmit($sessionStorage);
|
||||
|
||||
});
|
||||
|
||||
// ---------------
|
||||
// Validate Inputs
|
||||
// ---------------
|
||||
|
||||
$("#searchPermitFacts").submit(function (e) {
|
||||
|
||||
var permitfact_size_from = $("#permitfact_size_from"),
|
||||
permitfact_size_to = $("#permitfact_size_to"),
|
||||
permitfact_value_from = $("#permitfact_value_from"),
|
||||
permitfact_value_to = $("#permitfact_value_to"),
|
||||
permitfact_permit_date_from = $("#permitfact_permit_date_from"),
|
||||
permitfact_permit_date_to = $("#permitfact_permit_date_to"),
|
||||
permitfact_entry_date_from = $("#permitfact_entry_date_from"),
|
||||
permitfact_entry_date_to = $("#permitfact_entry_date_to"),
|
||||
permitfact_company = $("#permitfact_company").val(),
|
||||
permitfact_project_name = $("#permitfact_project_name").val(),
|
||||
permitfact_project_zip = $("#permitfact_project_zip").val(),
|
||||
permitfact_project_city = $("#permitfact_project_city").val(),
|
||||
permitfact_county = $("#permitfact_county").val(),
|
||||
permitfact_project_type = $("#permitfact_project_type").val(),
|
||||
permitfact_work_type = $("#permitfact_work_type").val(),
|
||||
permitfact_building_type = $("#permitfact_building_type").val();
|
||||
|
||||
|
||||
clearInputErrors();
|
||||
|
||||
if ((!isBlank(permitfact_size_from)) && (!permitfact_size_from.inputmask("isComplete"))) {
|
||||
createInputError(permitfact_size_from, "Square footage is incomplete");
|
||||
return false;
|
||||
}
|
||||
|
||||
if ((!isBlank(permitfact_size_to)) && (!permitfact_size_to.inputmask("isComplete"))) {
|
||||
createInputError(permitfact_size_to, "Square footage is incomplete");
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
* Normalize values (strip commas, spaces, etc.)
|
||||
*/
|
||||
let minSqft = parseInt(permitfact_size_from.val().replace(/[^0-9]/g, ''), 10);
|
||||
let maxSqft = parseInt(permitfact_size_to.val().replace(/[^0-9]/g, ''), 10);
|
||||
|
||||
/*
|
||||
* Range validation
|
||||
*/
|
||||
if (!isNaN(minSqft) && !isNaN(maxSqft)) {
|
||||
if (minSqft > maxSqft) {
|
||||
createInputError(permitfact_size_from, "Min Sq Ft is greater than Max Sq Ft");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if ((!isBlank(permitfact_value_from)) && (!permitfact_value_from.inputmask("isComplete"))) {
|
||||
createInputError(permitfact_value_from, "Amount is incomplete");
|
||||
return false;
|
||||
}
|
||||
|
||||
if ((!isBlank(permitfact_value_to)) && (!permitfact_value_to.inputmask("isComplete"))) {
|
||||
createInputError(permitfact_value_to, "Amount is incomplete");
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
* Normalize values (strip $, commas, etc.)
|
||||
*/
|
||||
let minValue = parseFloat(
|
||||
permitfact_value_from.val().replace(/[^0-9.-]/g, '')
|
||||
);
|
||||
|
||||
let maxValue = parseFloat(
|
||||
permitfact_value_to.val().replace(/[^0-9.-]/g, '')
|
||||
);
|
||||
|
||||
/*
|
||||
* Range validation
|
||||
*/
|
||||
if (!isNaN(minValue) && !isNaN(maxValue)) {
|
||||
if (minValue > maxValue) {
|
||||
createInputError(permitfact_value_from, "Minimum amount is greater than maximum amount");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ((!isBlank(permitfact_permit_date_from)) && (!permitfact_permit_date_from.inputmask("isComplete"))) {
|
||||
createInputError(permitfact_permit_date_from, "Date is incomplete");
|
||||
return false;
|
||||
}
|
||||
|
||||
if ((!isBlank(permitfact_permit_date_to)) && (!permitfact_permit_date_to.inputmask("isComplete"))) {
|
||||
createInputError(permitfact_permit_date_to, "Date is incomplete");
|
||||
return false;
|
||||
}
|
||||
|
||||
let startDate = new Date(permitfact_permit_date_from.val()),
|
||||
endDate = new Date(permitfact_permit_date_to.val());
|
||||
|
||||
if (startDate > endDate) {
|
||||
createInputError(permitfact_permit_date_from, "Date is after End Date");
|
||||
return false;
|
||||
}
|
||||
|
||||
if ((!isBlank(permitfact_entry_date_from)) && (!permitfact_entry_date_from.inputmask("isComplete"))) {
|
||||
createInputError(permitfact_entry_date_from, "Date is incomplete");
|
||||
return false;
|
||||
}
|
||||
|
||||
if ((!isBlank(permitfact_entry_date_to)) && (!permitfact_entry_date_to.inputmask("isComplete"))) {
|
||||
createInputError(permitfact_entry_date_to, "Date is incomplete");
|
||||
return false;
|
||||
}
|
||||
|
||||
let startDate2 = new Date(permitfact_entry_date_from.val()),
|
||||
endDate2 = new Date(permitfact_entry_date_to.val());
|
||||
|
||||
if (startDate2 > endDate2) {
|
||||
createInputError(permitfact_entry_date_from, "Date is after End Date");
|
||||
return false;
|
||||
}
|
||||
|
||||
e.preventDefault();
|
||||
|
||||
$sessionStorage.action = "PermitFacts.searchPermitFacts";
|
||||
$sessionStorage.pagination = "first";
|
||||
|
||||
$sessionStorage.permitfact_company = permitfact_company;
|
||||
$sessionStorage.permitfact_project_name = permitfact_project_name;
|
||||
$sessionStorage.permitfact_project_zip = permitfact_project_zip;
|
||||
$sessionStorage.permitfact_project_city = permitfact_project_city;
|
||||
$sessionStorage.permitfact_county = permitfact_county;
|
||||
$sessionStorage.permitfact_project_type = permitfact_project_type;
|
||||
$sessionStorage.permitfact_work_type = permitfact_work_type;
|
||||
$sessionStorage.permitfact_building_type = permitfact_building_type;
|
||||
$sessionStorage.permitfact_size_from = permitfact_size_from.val();
|
||||
$sessionStorage.permitfact_size_to = permitfact_size_to.val();
|
||||
$sessionStorage.permitfact_value_from = permitfact_value_from.val();
|
||||
$sessionStorage.permitfact_value_to = permitfact_value_to.val();
|
||||
$sessionStorage.permitfact_permit_date_from = permitfact_permit_date_from.val();
|
||||
$sessionStorage.permitfact_permit_date_to = permitfact_permit_date_to.val();
|
||||
$sessionStorage.permitfact_entry_date_from = permitfact_entry_date_from.val();
|
||||
$sessionStorage.permitfact_entry_date_to = permitfact_entry_date_to.val();
|
||||
|
||||
sessionStorage.setItem($application, JSON.stringify($sessionStorage));
|
||||
|
||||
$("#spinner-dialog").modal("show");
|
||||
|
||||
formSubmit($sessionStorage);
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
function clearForm($form) {
|
||||
|
||||
// Clear text, number, masked inputs, and textareas
|
||||
$form.find('input:not([type=checkbox]):not([type=radio]), textarea')
|
||||
.val('')
|
||||
.trigger('change');
|
||||
|
||||
// Clear checkboxes and radios
|
||||
$form.find('input[type=checkbox], input[type=radio]')
|
||||
.prop('checked', false)
|
||||
.trigger('change');
|
||||
|
||||
// Clear standard selects
|
||||
$form.find('select').val('').trigger('change');
|
||||
|
||||
// Refresh bootstrap-select (selectpicker)
|
||||
if ($.fn.selectpicker) {
|
||||
$form.find('.selectpicker').selectpicker('refresh');
|
||||
}
|
||||
|
||||
// Clear jQuery UI / Bootstrap datepickers
|
||||
$form.find('.date-mask').each(function () {
|
||||
if ($(this).data('datepicker')) {
|
||||
$(this).datepicker('clearDates');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function printElement(selector) {
|
||||
const content = document.querySelector(selector).innerHTML;
|
||||
const original = document.body.innerHTML;
|
||||
|
||||
document.body.innerHTML = content;
|
||||
window.print();
|
||||
document.body.innerHTML = original;
|
||||
location.reload(); // restores JS state
|
||||
}
|
||||
Reference in New Issue
Block a user