493 lines
16 KiB
JavaScript
493 lines
16 KiB
JavaScript
|
|
|
||
|
|
// ==============
|
||
|
|
// Business Facts
|
||
|
|
// ==============
|
||
|
|
|
||
|
|
$(document).ready(function () {
|
||
|
|
|
||
|
|
var $application = $("#APPLICATION_MNEMONIC").val(), $sessionStorage = JSON.parse(sessionStorage.getItem($application) || "{}");
|
||
|
|
|
||
|
|
// -----------
|
||
|
|
// Input Masks
|
||
|
|
// -----------
|
||
|
|
|
||
|
|
$(".zip-mask").inputmask("9{5}", {showMaskOnHover: false, removeMaskOnSubmit: true});
|
||
|
|
|
||
|
|
$(".date-mask").inputmask({alias: "datetime",
|
||
|
|
inputFormat: "mm/dd/yyyy",
|
||
|
|
placeholder: "MM/DD/YYYY",
|
||
|
|
showMaskOnHover: false});
|
||
|
|
|
||
|
|
$(".numeric-mask").inputmask("9{0,9}", {showMaskOnHover: false});
|
||
|
|
|
||
|
|
// --------------
|
||
|
|
// Select Pickers
|
||
|
|
// --------------
|
||
|
|
|
||
|
|
$(".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
|
||
|
|
// ------------
|
||
|
|
|
||
|
|
$("#businessfact_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});
|
||
|
|
|
||
|
|
$("#businessfact_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});
|
||
|
|
|
||
|
|
$("#businessfact_lease_end_from").datepicker({format: "mm-dd-yyyy",
|
||
|
|
container: "div.lease-end-date",
|
||
|
|
keyboardNavigation: false,
|
||
|
|
showOnFocus: false,
|
||
|
|
autoclose: true,
|
||
|
|
// endDate: "0d",
|
||
|
|
orientation: "left bottom",
|
||
|
|
todayBtn: "linked",
|
||
|
|
todayHighlight: true});
|
||
|
|
|
||
|
|
$("#businessfact_lease_end_to").datepicker({format: "mm-dd-yyyy",
|
||
|
|
container: "div.lease-end-date",
|
||
|
|
keyboardNavigation: false,
|
||
|
|
showOnFocus: false,
|
||
|
|
autoclose: true,
|
||
|
|
// endDate: "0d",
|
||
|
|
orientation: "left bottom",
|
||
|
|
todayBtn: "linked",
|
||
|
|
todayHighlight: true});
|
||
|
|
|
||
|
|
// ---------------------
|
||
|
|
// Show Calendar Buttons
|
||
|
|
// ---------------------
|
||
|
|
|
||
|
|
$(".btnEntryDateFromCalendar").on("click", function (e) {
|
||
|
|
e.preventDefault();
|
||
|
|
$("#businessfact_entry_date_from").focus().datepicker("show");
|
||
|
|
});
|
||
|
|
$(".btnEntryDateToCalendar").on("click", function (e) {
|
||
|
|
e.preventDefault();
|
||
|
|
$("#businessfact_entry_date_to").focus().datepicker("show");
|
||
|
|
});
|
||
|
|
|
||
|
|
$(".btnLeaseEndDateFromCalendar").on("click", function (e) {
|
||
|
|
e.preventDefault();
|
||
|
|
$("#businessfact_lease_end_from").focus().datepicker("show");
|
||
|
|
});
|
||
|
|
$(".btnLeaseEndDateToCalendar").on("click", function (e) {
|
||
|
|
e.preventDefault();
|
||
|
|
$("#businessfact_lease_end_to").focus().datepicker("show");
|
||
|
|
});
|
||
|
|
|
||
|
|
$("#businessfacts_per_page").val($sessionStorage.businessfacts_per_page || "20");
|
||
|
|
|
||
|
|
// ---------------
|
||
|
|
// Per Page Change
|
||
|
|
// ---------------
|
||
|
|
|
||
|
|
$("#businessfacts_per_page").on("change", function () {
|
||
|
|
|
||
|
|
$sessionStorage.businessfacts_per_page = $(this).val();
|
||
|
|
$sessionStorage.action = "BusinessFacts.searchBusinessFacts";
|
||
|
|
$sessionStorage.pagination = "first";
|
||
|
|
|
||
|
|
sessionStorage.setItem($application, JSON.stringify($sessionStorage));
|
||
|
|
|
||
|
|
$("#spinner-dialog").modal("show");
|
||
|
|
|
||
|
|
formSubmit($sessionStorage);
|
||
|
|
|
||
|
|
});
|
||
|
|
|
||
|
|
// ------------------
|
||
|
|
// Pagination Buttons
|
||
|
|
// ------------------
|
||
|
|
|
||
|
|
$(".btnPagination").on("click", function () {
|
||
|
|
|
||
|
|
$sessionStorage.action = "BusinessFacts.searchBusinessFacts";
|
||
|
|
$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();
|
||
|
|
$("#searchBusinessFacts").submit();
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
// -----------------------
|
||
|
|
// Filter the Business Cards
|
||
|
|
// -----------------------
|
||
|
|
|
||
|
|
$("#filter").on("keyup", function () {
|
||
|
|
|
||
|
|
const filter = $(this).val().toLowerCase().trim();
|
||
|
|
|
||
|
|
$(".businessfact-card").hide().filter(function () {
|
||
|
|
return $(this).text().toLowerCase().indexOf(filter) > -1;
|
||
|
|
}).show();
|
||
|
|
|
||
|
|
if ($(".businessfact-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 Business Facts - Excel
|
||
|
|
// -----------------------------
|
||
|
|
|
||
|
|
$(".btnExportExcel").on("click", function (e) {
|
||
|
|
|
||
|
|
$("#spinner-dialog").modal("show");
|
||
|
|
|
||
|
|
$sessionStorage.action = "Export_BusinessFactsToExcel.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
|
||
|
|
});
|
||
|
|
|
||
|
|
// ---------------------------
|
||
|
|
// Export Business Facts - CSV
|
||
|
|
// ---------------------------
|
||
|
|
|
||
|
|
$(".btnExportCSV").on("click", function (e) {
|
||
|
|
|
||
|
|
$("#spinner-dialog").modal("show");
|
||
|
|
|
||
|
|
$sessionStorage.action = "Export_BusinessFactsToCSV.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 Business Facts - PDF
|
||
|
|
// --------------------------
|
||
|
|
|
||
|
|
$(".btnPrintSearchResultsPDF").on("click", function (e) {
|
||
|
|
|
||
|
|
$("#spinner-dialog").modal("show");
|
||
|
|
|
||
|
|
$sessionStorage.action = "Print_BusinessFactsPDF.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);
|
||
|
|
|
||
|
|
});
|
||
|
|
|
||
|
|
|
||
|
|
// -------------
|
||
|
|
// Search Button
|
||
|
|
// -------------
|
||
|
|
|
||
|
|
$(".btnSearch").on("click", function (e) {
|
||
|
|
e.preventDefault();
|
||
|
|
$("#searchBusinessFacts").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($('#searchBusinessFacts'));
|
||
|
|
|
||
|
|
$sessionStorage = clearSubscriptionSessionVariableFilters($sessionStorage);
|
||
|
|
|
||
|
|
$sessionStorage.action = "BusinessFacts.searchBusinessFacts";
|
||
|
|
|
||
|
|
sessionStorage.setItem($application, JSON.stringify($sessionStorage));
|
||
|
|
|
||
|
|
formSubmit($sessionStorage);
|
||
|
|
|
||
|
|
});
|
||
|
|
|
||
|
|
// ---------------
|
||
|
|
// Validate Inputs
|
||
|
|
// ---------------
|
||
|
|
|
||
|
|
$("#searchBusinessFacts").submit(function (e) {
|
||
|
|
|
||
|
|
var businessfact_company = $("#businessfact_company").val(),
|
||
|
|
businessfact_zip = $("#businessfact_zip").val(),
|
||
|
|
businessfact_city = $("#businessfact_city").val(),
|
||
|
|
businessfact_county = $("#businessfact_county").val(),
|
||
|
|
businessfact_business_class = $("#businessfact_business_class").val(),
|
||
|
|
businessfact_action = $("#businessfact_action").val(),
|
||
|
|
businessfact_sic_code = $("#businessfact_sic_code").val(),
|
||
|
|
businessfact_home_based_business = $("#businessfact_home_based_business").val(),
|
||
|
|
businessfact_employee_count_from = $("#businessfact_employee_count_from"),
|
||
|
|
businessfact_employee_count_to = $("#businessfact_employee_count_to"),
|
||
|
|
businessfact_entry_date_from = $("#businessfact_entry_date_from"),
|
||
|
|
businessfact_entry_date_to = $("#businessfact_entry_date_to"),
|
||
|
|
businessfact_lease_end_from = $("#businessfact_lease_end_from"),
|
||
|
|
businessfact_lease_end_to = $("#businessfact_lease_end_to");
|
||
|
|
|
||
|
|
clearInputErrors();
|
||
|
|
|
||
|
|
// Normalize values (strip $, commas, etc.)
|
||
|
|
let minValue = parseFloat(businessfact_employee_count_from.val().replace(/[^0-9.-]/g, ''));
|
||
|
|
let maxValue = parseFloat(businessfact_employee_count_to.val().replace(/[^0-9.-]/g, ''));
|
||
|
|
|
||
|
|
// Range validation
|
||
|
|
if (!isNaN(minValue) && !isNaN(maxValue)) {
|
||
|
|
if (minValue > maxValue) {
|
||
|
|
createInputError(businessfact_employee_count_from, "Minimum amount is greater than maximum amount");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if ((!isBlank(businessfact_entry_date_from)) && (!businessfact_entry_date_from.inputmask("isComplete"))) {
|
||
|
|
createInputError(businessfact_entry_date_from, "Date is incomplete");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
|
||
|
|
if ((!isBlank(businessfact_entry_date_to)) && (!businessfact_entry_date_to.inputmask("isComplete"))) {
|
||
|
|
createInputError(businessfact_entry_date_to, "Date is incomplete");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
|
||
|
|
let startDate = new Date(businessfact_entry_date_from.val()),
|
||
|
|
endDate = new Date(businessfact_entry_date_to.val());
|
||
|
|
|
||
|
|
if (startDate > endDate) {
|
||
|
|
createInputError(businessfact_entry_date_from, "Start Date is after End Date");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
|
||
|
|
if ((!isBlank(businessfact_lease_end_from)) && (!businessfact_lease_end_from.inputmask("isComplete"))) {
|
||
|
|
createInputError(businessfact_lease_end_from, "Date is incomplete");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
|
||
|
|
if ((!isBlank(businessfact_lease_end_to)) && (!businessfact_lease_end_to.inputmask("isComplete"))) {
|
||
|
|
createInputError(businessfact_lease_end_to, "Date is incomplete");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
|
||
|
|
let lease_startDate = new Date(businessfact_lease_end_from.val()),
|
||
|
|
lease_endDate = new Date(businessfact_lease_end_to.val());
|
||
|
|
|
||
|
|
if (lease_startDate > lease_endDate) {
|
||
|
|
createInputError(businessfact_lease_end_from, "Start Date is after End Date");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
|
||
|
|
e.preventDefault();
|
||
|
|
|
||
|
|
$sessionStorage.action = "BusinessFacts.searchBusinessFacts";
|
||
|
|
$sessionStorage.pagination = "first";
|
||
|
|
|
||
|
|
$sessionStorage.businessfact_company = businessfact_company;
|
||
|
|
$sessionStorage.businessfact_zip = businessfact_zip;
|
||
|
|
$sessionStorage.businessfact_city = businessfact_city;
|
||
|
|
$sessionStorage.businessfact_county = businessfact_county;
|
||
|
|
$sessionStorage.businessfact_business_class = businessfact_business_class;
|
||
|
|
$sessionStorage.businessfact_action = businessfact_action;
|
||
|
|
$sessionStorage.businessfact_sic_code = businessfact_sic_code;
|
||
|
|
$sessionStorage.businessfact_home_based_business = businessfact_home_based_business;
|
||
|
|
$sessionStorage.businessfact_employee_count_from = businessfact_employee_count_from.val();
|
||
|
|
$sessionStorage.businessfact_employee_count_to = businessfact_employee_count_to.val();
|
||
|
|
$sessionStorage.businessfact_entry_date_from = businessfact_entry_date_from.val();
|
||
|
|
$sessionStorage.businessfact_entry_date_to = businessfact_entry_date_to.val();
|
||
|
|
|
||
|
|
if (businessfact_lease_end_from.length) {
|
||
|
|
$sessionStorage.businessfact_lease_end_from = businessfact_lease_end_from.val();
|
||
|
|
$sessionStorage.businessfact_lease_end_to = businessfact_lease_end_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=hidden]):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 and multiple selects
|
||
|
|
$form.find('select').each(function () {
|
||
|
|
$(this).val($(this).prop('multiple') ? [] : '').trigger('change');
|
||
|
|
});
|
||
|
|
|
||
|
|
// Refresh bootstrap-select (selectpicker)
|
||
|
|
if ($.fn.selectpicker) {
|
||
|
|
$form.find('select.multiple-dropdown, select.selectpicker').selectpicker('refresh');
|
||
|
|
}
|
||
|
|
|
||
|
|
// Clear jQuery UI / Bootstrap datepickers
|
||
|
|
$form.find('.date-mask').each(function () {
|
||
|
|
if ($(this).data('datepicker')) {
|
||
|
|
$(this).datepicker('clearDates');
|
||
|
|
}
|
||
|
|
$(this).val('').trigger('change');
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
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
|
||
|
|
}
|