Modified all points Allan sent via email on 04-05-2026

This commit is contained in:
James Richie
2026-04-08 20:09:13 -04:00
parent da832f82fc
commit cb9e1a9fa1
11 changed files with 422 additions and 480 deletions
+1 -3
View File
@@ -62,11 +62,9 @@ class PermitsByBuilder extends Base {
$XML = $this->mergeXML($permits, "<XML/>"); $XML = $this->mergeXML($permits, "<XML/>");
$XML = $this->mergeXML($subscription, $XML); $XML = $this->mergeXML($subscription, $XML);
$XML = $this->mergeXML($searchhistory, $XML);
$XML = $this->mergeXML($popovers, $XML); $XML = $this->mergeXML($popovers, $XML);
// echo $XML;
// die();
$content = $this->applyXSL($XML, $this->getXSL("searchPermitsByBuilder")); $content = $this->applyXSL($XML, $this->getXSL("searchPermitsByBuilder"));
$this->displayContent($content); $this->displayContent($content);
} }
+160 -148
View File
@@ -46,14 +46,26 @@ class PermitsBySubdivision extends Base {
$permit_area = $subscription->record->subscription_area; $permit_area = $subscription->record->subscription_area;
$projecttype = $subscription->record->subscription_projecttype; $projecttype = $subscription->record->subscription_projecttype;
$searchhistory = (new SearchHistory())->getUsersPreviousSearchParameters($this->current_user_serial, $subscription_serial);
// Update Search History Record
if (empty($searchhistory)) {
(new SearchHistory())->saveUserSearchParameters($_POST);
} else {
(new SearchHistory())->updateUserSearchParameters($_POST);
}
$permits = $this->getPermits($permit_area, $projecttype); $permits = $this->getPermits($permit_area, $projecttype);
$searchhistory = (new SearchHistory())->getUsersPreviousSearchParameters($this->current_user_serial, $subscription_serial);
$counties = (new Counties())->getCountiesByArea($permit_area); $counties = (new Counties())->getCountiesByArea($permit_area);
$popovers = (new Popovers())->getPopovers(); $popovers = (new Popovers())->getPopovers();
$XML = $this->mergeXML($permits, "<XML/>"); $XML = $this->mergeXML($permits, "<XML/>");
$XML = $this->mergeXML($counties, $XML); $XML = $this->mergeXML($counties, $XML);
$XML = $this->mergeXML($subscription, $XML); $XML = $this->mergeXML($subscription, $XML);
$XML = $this->mergeXML($searchhistory, $XML);
$XML = $this->mergeXML($popovers, $XML); $XML = $this->mergeXML($popovers, $XML);
$content = $this->applyXSL($XML, $this->getXSL("searchPermitsBySubdivision")); $content = $this->applyXSL($XML, $this->getXSL("searchPermitsBySubdivision"));
@@ -62,47 +74,47 @@ class PermitsBySubdivision extends Base {
public function getPermits($permit_area, $projecttype) { public function getPermits($permit_area, $projecttype) {
$rdi_county_raw = trim(filter_input(INPUT_POST, "rdi_county") ?: ""); $permit_county_raw = trim(filter_input(INPUT_POST, "permit_county") ?: "");
$rdi_and_or = trim(filter_input(INPUT_POST, "rdi_and_or") ?: "OR"); $permit_and_or = trim(filter_input(INPUT_POST, "permit_and_or") ?: "OR");
$rdi_company = trim(filter_input(INPUT_POST, "rdi_company") ?: ""); $permit_company = trim(filter_input(INPUT_POST, "permit_company") ?: "");
$rdi_sub_div_name = trim(filter_input(INPUT_POST, "rdi_sub_div_name") ?: ""); $permit_sub_div_name = trim(filter_input(INPUT_POST, "permit_sub_div_name") ?: "");
$rdi_project_city = trim(filter_input(INPUT_POST, "rdi_project_city") ?: ""); $permit_project_city = trim(filter_input(INPUT_POST, "permit_project_city") ?: "");
$rdi_project_addr = trim(filter_input(INPUT_POST, "rdi_project_addr") ?: ""); $permit_project_addr = trim(filter_input(INPUT_POST, "permit_project_addr") ?: "");
$rdi_entry_start_date = filter_input(INPUT_POST, "rdi_entry_start_date") ?: ""; $permit_entry_start_date = filter_input(INPUT_POST, "permit_entry_start_date") ?: "";
$rdi_entry_end_date = filter_input(INPUT_POST, "rdi_entry_end_date") ?: ""; $permit_entry_end_date = filter_input(INPUT_POST, "permit_entry_end_date") ?: "";
$rdi_permit_start_date = filter_input(INPUT_POST, "rdi_permit_start_date") ?: ""; $permit_permit_start_date = filter_input(INPUT_POST, "permit_permit_start_date") ?: "";
$rdi_permit_end_date = filter_input(INPUT_POST, "rdi_permit_end_date") ?: ""; $permit_permit_end_date = filter_input(INPUT_POST, "permit_permit_end_date") ?: "";
$pagination = filter_input(INPUT_POST, "pagination") ?: ""; $pagination = filter_input(INPUT_POST, "pagination") ?: "";
// Normalize dates to Y-m-d or null // Normalize dates to Y-m-d or null
$rdi_entry_start_date = ($rdi_entry_start_date === "") ? null : date("Y-m-d", strtotime($rdi_entry_start_date)); $permit_entry_start_date = ($permit_entry_start_date === "") ? null : date("Y-m-d", strtotime($permit_entry_start_date));
$rdi_entry_end_date = ($rdi_entry_end_date === "") ? null : date("Y-m-d", strtotime($rdi_entry_end_date)); $permit_entry_end_date = ($permit_entry_end_date === "") ? null : date("Y-m-d", strtotime($permit_entry_end_date));
$rdi_permit_start_date = ($rdi_permit_start_date === "") ? null : date("Y-m-d", strtotime($rdi_permit_start_date)); $permit_permit_start_date = ($permit_permit_start_date === "") ? null : date("Y-m-d", strtotime($permit_permit_start_date));
$rdi_permit_end_date = ($rdi_permit_end_date === "") ? null : date("Y-m-d", strtotime($rdi_permit_end_date)); $permit_permit_end_date = ($permit_permit_end_date === "") ? null : date("Y-m-d", strtotime($permit_permit_end_date));
// Validate AND/OR // Validate AND/OR
if (!in_array(strtoupper($rdi_and_or), ["AND", "OR"], true)) { if (!in_array(strtoupper($permit_and_or), ["AND", "OR"], true)) {
$rdi_and_or = "OR"; $permit_and_or = "OR";
} }
// Pagination / ordering // Pagination / ordering
$this->pagination_size = filter_input(INPUT_POST, "rdis_per_page", FILTER_SANITIZE_NUMBER_INT) ?: $this->pagination_size; $this->pagination_size = filter_input(INPUT_POST, "permits_per_page", FILTER_SANITIZE_NUMBER_INT) ?: $this->pagination_size;
$rdis_order_by = filter_input(INPUT_POST, "rdis_order_by") ?: "rdi_permit_number"; $permits_order_by = filter_input(INPUT_POST, "permits_order_by") ?: "permit_permit_number";
$rdis_order_direction = filter_input(INPUT_POST, "rdis_order_direction" ?? "DESC"); $permits_order_direction = filter_input(INPUT_POST, "permits_order_direction" ?? "DESC");
$allowed_order_columns = [ $allowed_order_columns = [
"rdi_permit_number", "permit_permit_number",
"rdi_county", "rdi_sub_div_name", "rdi_project_addr", "rdi_city", "permit_county", "permit_sub_div_name", "permit_project_addr", "permit_city",
"rdi_state", "rdi_zip", "rdi_company", "rdi_permit_date", "rdi_size", "rdi_value" "permit_state", "permit_zip", "permit_company", "permit_permit_date", "permit_size", "permit_value"
]; ];
if (!in_array($rdis_order_by, $allowed_order_columns, true)) { if (!in_array($permits_order_by, $allowed_order_columns, true)) {
$rdis_order_by = "rdi_sub_div_name"; $permits_order_by = "permit_sub_div_name";
} }
if (!in_array(strtoupper((string) $rdis_order_direction), ["ASC", "DESC"], true)) { if (!in_array(strtoupper((string) $permits_order_direction), ["ASC", "DESC"], true)) {
$rdis_order_direction = "DESC"; $permits_order_direction = "DESC";
} }
// Database Connection // Database Connection
@@ -113,7 +125,7 @@ class PermitsBySubdivision extends Base {
$countyIds = array_values(array_filter( $countyIds = array_values(array_filter(
array_map( array_map(
fn($v) => ctype_digit(trim($v)) ? (int) trim($v) : null, fn($v) => ctype_digit(trim($v)) ? (int) trim($v) : null,
explode(",", $rdi_county_raw) explode(",", $permit_county_raw)
), ),
fn($v) => $v !== null fn($v) => $v !== null
)); ));
@@ -125,8 +137,8 @@ class PermitsBySubdivision extends Base {
if (!empty($countyIds)) { if (!empty($countyIds)) {
if (count($countyIds) === 1) { if (count($countyIds) === 1) {
$countyClauseCount = " and rdi_county = :county_0"; $countyClauseCount = " and permit_county = :county_0";
$countyClauseData = " and view_rdis.rdi_county = :county_0"; $countyClauseData = " and view_permits.permit_county = :county_0";
$countyParams[':county_0'] = $countyIds[0]; $countyParams[':county_0'] = $countyIds[0];
} else { } else {
$ph = []; $ph = [];
@@ -136,12 +148,12 @@ class PermitsBySubdivision extends Base {
$countyParams[$k] = $id; $countyParams[$k] = $id;
} }
$in = implode(",", $ph); $in = implode(",", $ph);
$countyClauseCount = " and rdi_county in ($in)"; $countyClauseCount = " and permit_county in ($in)";
$countyClauseData = " and view_rdis.rdi_county in ($in)"; $countyClauseData = " and view_permits.permit_county in ($in)";
} }
} elseif ($permit_area != "All") { } elseif ($permit_area != "All") {
$countyClauseCount = " and rdi_county in (select county_serial from view_counties where county_area = :permit_area)"; $countyClauseCount = " and permit_county in (select county_serial from view_counties where county_area = :permit_area)";
$countyClauseData = " and view_rdis.rdi_county in (select county_serial from view_counties where county_area = :permit_area)"; $countyClauseData = " and view_permits.permit_county in (select county_serial from view_counties where county_area = :permit_area)";
$bindArea = true; $bindArea = true;
} else { } else {
// No county/area filter -> omit entirely to keep the plan simple // No county/area filter -> omit entirely to keep the plan simple
@@ -151,47 +163,47 @@ class PermitsBySubdivision extends Base {
// ===================== COUNT QUERY ===================== // ===================== COUNT QUERY =====================
$SQL = "select count(*) as count $SQL = "select count(*) as count
from view_rdis from view_permits
where rdi_project_type = :rdi_project_type where permit_project_type = :permit_project_type
$countyClauseCount "; $countyClauseCount ";
if (!empty($rdi_company)) { if (!empty($permit_company)) {
$SQL .= " and rdi_company like :rdi_company"; $SQL .= " and permit_company like :permit_company";
} }
if (!empty($rdi_sub_div_name)) { if (!empty($permit_sub_div_name)) {
$SQL .= " and rdi_sub_div_name like :rdi_sub_div_name"; $SQL .= " and permit_sub_div_name like :permit_sub_div_name";
} }
if (!empty($rdi_project_city)) { if (!empty($permit_project_city)) {
$SQL .= " and rdi_project_city like :rdi_project_city"; $SQL .= " and permit_project_city like :permit_project_city";
} }
if (!empty($rdi_project_addr)) { if (!empty($permit_project_addr)) {
$SQL .= " and rdi_project_addr like :rdi_project_addr"; $SQL .= " and permit_project_addr like :permit_project_addr";
} }
// group date conditions so $rdi_and_or applies between themcx // group date conditions so $permit_and_or applies between themcx
$dateConds = []; $dateConds = [];
if ($rdi_entry_start_date && $rdi_entry_end_date) { if ($permit_entry_start_date && $permit_entry_end_date) {
$dateConds[] = "(rdi_entry_date between :rdi_entry_start_date and :rdi_entry_end_date)"; $dateConds[] = "(permit_entry_date between :permit_entry_start_date and :permit_entry_end_date)";
} elseif ($rdi_entry_start_date) { } elseif ($permit_entry_start_date) {
$dateConds[] = "(rdi_entry_date >= :rdi_entry_start_date)"; $dateConds[] = "(permit_entry_date >= :permit_entry_start_date)";
} }
if ($rdi_permit_start_date && $rdi_permit_end_date) { if ($permit_permit_start_date && $permit_permit_end_date) {
$dateConds[] = "(rdi_permit_date between :rdi_permit_start_date and :rdi_permit_end_date)"; $dateConds[] = "(permit_permit_date between :permit_permit_start_date and :permit_permit_end_date)";
} elseif ($rdi_permit_start_date) { } elseif ($permit_permit_start_date) {
$dateConds[] = "(rdi_permit_date >= :rdi_permit_start_date)"; $dateConds[] = "(permit_permit_date >= :permit_permit_start_date)";
} }
if ($dateConds) { if ($dateConds) {
$SQL .= " and (" . implode(" $rdi_and_or ", $dateConds) . ")"; $SQL .= " and (" . implode(" $permit_and_or ", $dateConds) . ")";
} }
$statement = $connection->prepare($SQL); $statement = $connection->prepare($SQL);
$statement->bindValue(":rdi_project_type", $projecttype, PDO::PARAM_STR); $statement->bindValue(":permit_project_type", $projecttype, PDO::PARAM_STR);
foreach ($countyParams as $k => $v) { foreach ($countyParams as $k => $v) {
$statement->bindValue($k, $v, PDO::PARAM_INT); $statement->bindValue($k, $v, PDO::PARAM_INT);
@@ -200,29 +212,29 @@ class PermitsBySubdivision extends Base {
if ($bindArea) { if ($bindArea) {
$statement->bindValue(":permit_area", $permit_area, PDO::PARAM_STR); $statement->bindValue(":permit_area", $permit_area, PDO::PARAM_STR);
} }
if (!empty($rdi_company)) { if (!empty($permit_company)) {
$statement->bindValue(":rdi_company", '%' . $rdi_company . '%', PDO::PARAM_STR); $statement->bindValue(":permit_company", '%' . $permit_company . '%', PDO::PARAM_STR);
} }
if (!empty($rdi_sub_div_name)) { if (!empty($permit_sub_div_name)) {
$statement->bindValue(":rdi_sub_div_name", '%' . $rdi_sub_div_name . '%', PDO::PARAM_STR); $statement->bindValue(":permit_sub_div_name", '%' . $permit_sub_div_name . '%', PDO::PARAM_STR);
} }
if (!empty($rdi_project_city)) { if (!empty($permit_project_city)) {
$statement->bindValue(":rdi_project_city", '%' . $rdi_project_city . '%', PDO::PARAM_STR); $statement->bindValue(":permit_project_city", '%' . $permit_project_city . '%', PDO::PARAM_STR);
} }
if (!empty($rdi_project_addr)) { if (!empty($permit_project_addr)) {
$statement->bindValue(":rdi_project_addr", '%' . $rdi_project_addr . '%', PDO::PARAM_STR); $statement->bindValue(":permit_project_addr", '%' . $permit_project_addr . '%', PDO::PARAM_STR);
} }
if ($rdi_entry_start_date) { if ($permit_entry_start_date) {
$statement->bindValue(":rdi_entry_start_date", $rdi_entry_start_date); $statement->bindValue(":permit_entry_start_date", $permit_entry_start_date);
} }
if ($rdi_entry_end_date && str_contains($SQL, ":rdi_entry_end_date")) { if ($permit_entry_end_date && str_contains($SQL, ":permit_entry_end_date")) {
$statement->bindValue(":rdi_entry_end_date", $rdi_entry_end_date); $statement->bindValue(":permit_entry_end_date", $permit_entry_end_date);
} }
if ($rdi_permit_start_date) { if ($permit_permit_start_date) {
$statement->bindValue(":rdi_permit_start_date", $rdi_permit_start_date); $statement->bindValue(":permit_permit_start_date", $permit_permit_start_date);
} }
if ($rdi_permit_end_date && str_contains($SQL, ":rdi_permit_end_date")) { if ($permit_permit_end_date && str_contains($SQL, ":permit_permit_end_date")) {
$statement->bindValue(":rdi_permit_end_date", $rdi_permit_end_date); $statement->bindValue(":permit_permit_end_date", $permit_permit_end_date);
} }
$statement->execute(); $statement->execute();
@@ -249,49 +261,49 @@ class PermitsBySubdivision extends Base {
$end = min($count, $start + $this->pagination_size - 1); $end = min($count, $start + $this->pagination_size - 1);
// ===================== DATA QUERY ===================== // ===================== DATA QUERY =====================
$SQL = "select view_rdis.* $SQL = "select view_permits.*
from view_rdis from view_permits
where view_rdis.rdi_project_type = :rdi_project_type where view_permits.permit_project_type = :permit_project_type
$countyClauseData"; $countyClauseData";
if (!empty($rdi_company)) { if (!empty($permit_company)) {
$SQL .= " and view_rdis.rdi_company like :rdi_company"; $SQL .= " and view_permits.permit_company like :permit_company";
} }
if (!empty($rdi_sub_div_name)) { if (!empty($permit_sub_div_name)) {
$SQL .= " and view_rdis.rdi_sub_div_name like :rdi_sub_div_name"; $SQL .= " and view_permits.permit_sub_div_name like :permit_sub_div_name";
} }
if (!empty($rdi_project_city)) { if (!empty($permit_project_city)) {
$SQL .= " and view_rdis.rdi_project_city like :rdi_project_city"; $SQL .= " and view_permits.permit_project_city like :permit_project_city";
} }
if (!empty($rdi_project_addr)) { if (!empty($permit_project_addr)) {
$SQL .= " and view_rdis.rdi_project_addr like :rdi_project_addr"; $SQL .= " and view_permits.permit_project_addr like :permit_project_addr";
} }
$dateConds = []; $dateConds = [];
if ($rdi_entry_start_date && $rdi_entry_end_date) { if ($permit_entry_start_date && $permit_entry_end_date) {
$dateConds[] = "(view_rdis.rdi_entry_date between :rdi_entry_start_date and :rdi_entry_end_date)"; $dateConds[] = "(view_permits.permit_entry_date between :permit_entry_start_date and :permit_entry_end_date)";
} elseif ($rdi_entry_start_date) { } elseif ($permit_entry_start_date) {
$dateConds[] = "(view_rdis.rdi_entry_date >= :rdi_entry_start_date)"; $dateConds[] = "(view_permits.permit_entry_date >= :permit_entry_start_date)";
} }
if ($rdi_permit_start_date && $rdi_permit_end_date) { if ($permit_permit_start_date && $permit_permit_end_date) {
$dateConds[] = "(view_rdis.rdi_permit_date between :rdi_permit_start_date and :rdi_permit_end_date)"; $dateConds[] = "(view_permits.permit_permit_date between :permit_permit_start_date and :permit_permit_end_date)";
} elseif ($rdi_permit_start_date) { } elseif ($permit_permit_start_date) {
$dateConds[] = "(view_rdis.rdi_permit_date >= :rdi_permit_start_date)"; $dateConds[] = "(view_permits.permit_permit_date >= :permit_permit_start_date)";
} }
if ($dateConds) { if ($dateConds) {
$SQL .= " and (" . implode(" $rdi_and_or ", $dateConds) . ")"; $SQL .= " and (" . implode(" $permit_and_or ", $dateConds) . ")";
} }
$SQL .= " order by $rdis_order_by $rdis_order_direction $SQL .= " order by $permits_order_by $permits_order_direction
limit :limit limit :limit
offset :offset"; offset :offset";
$statement = $connection->prepare($SQL); $statement = $connection->prepare($SQL);
$statement->bindValue(":rdi_project_type", $projecttype, PDO::PARAM_STR); $statement->bindValue(":permit_project_type", $projecttype, PDO::PARAM_STR);
foreach ($countyParams as $k => $v) { foreach ($countyParams as $k => $v) {
$statement->bindValue($k, $v, PDO::PARAM_INT); $statement->bindValue($k, $v, PDO::PARAM_INT);
@@ -300,52 +312,52 @@ class PermitsBySubdivision extends Base {
if ($bindArea) { if ($bindArea) {
$statement->bindValue(":permit_area", $permit_area, PDO::PARAM_STR); $statement->bindValue(":permit_area", $permit_area, PDO::PARAM_STR);
} }
if (!empty($rdi_company)) { if (!empty($permit_company)) {
$statement->bindValue(":rdi_company", '%' . $rdi_company . '%', PDO::PARAM_STR); $statement->bindValue(":permit_company", '%' . $permit_company . '%', PDO::PARAM_STR);
} }
if (!empty($rdi_sub_div_name)) { if (!empty($permit_sub_div_name)) {
$statement->bindValue(":rdi_sub_div_name", '%' . $rdi_sub_div_name . '%', PDO::PARAM_STR); $statement->bindValue(":permit_sub_div_name", '%' . $permit_sub_div_name . '%', PDO::PARAM_STR);
} }
if (!empty($rdi_project_city)) { if (!empty($permit_project_city)) {
$statement->bindValue(":rdi_project_city", '%' . $rdi_project_city . '%', PDO::PARAM_STR); $statement->bindValue(":permit_project_city", '%' . $permit_project_city . '%', PDO::PARAM_STR);
} }
if (!empty($rdi_project_addr)) { if (!empty($permit_project_addr)) {
$statement->bindValue(":rdi_project_addr", '%' . $rdi_project_addr . '%', PDO::PARAM_STR); $statement->bindValue(":permit_project_addr", '%' . $permit_project_addr . '%', PDO::PARAM_STR);
} }
if ($rdi_entry_start_date) { if ($permit_entry_start_date) {
$statement->bindValue(":rdi_entry_start_date", $rdi_entry_start_date); $statement->bindValue(":permit_entry_start_date", $permit_entry_start_date);
} }
if ($rdi_entry_end_date && str_contains($SQL, ":rdi_entry_end_date")) { if ($permit_entry_end_date && str_contains($SQL, ":permit_entry_end_date")) {
$statement->bindValue(":rdi_entry_end_date", $rdi_entry_end_date); $statement->bindValue(":permit_entry_end_date", $permit_entry_end_date);
} }
if ($rdi_permit_start_date) { if ($permit_permit_start_date) {
$statement->bindValue(":rdi_permit_start_date", $rdi_permit_start_date); $statement->bindValue(":permit_permit_start_date", $permit_permit_start_date);
} }
if ($rdi_permit_end_date && str_contains($SQL, ":rdi_permit_end_date")) { if ($permit_permit_end_date && str_contains($SQL, ":permit_permit_end_date")) {
$statement->bindValue(":rdi_permit_end_date", $rdi_permit_end_date); $statement->bindValue(":permit_permit_end_date", $permit_permit_end_date);
} }
$statement->bindValue(":limit", $this->pagination_size, PDO::PARAM_INT); $statement->bindValue(":limit", $this->pagination_size, PDO::PARAM_INT);
$statement->bindValue(":offset", $offset, PDO::PARAM_INT); $statement->bindValue(":offset", $offset, PDO::PARAM_INT);
$statement->execute(); $statement->execute();
$rdis = $this->getTableXML("rdis", $statement); $permits = $this->getTableXML("permits", $statement);
foreach ($rdis as $rdi) { foreach ($permits as $permit) {
if (!empty($rdi->rdi_county)) { if (!empty($permit->permit_county)) {
$county = (new Counties())->getCounty($rdi->rdi_county); $county = (new Counties())->getCounty($permit->permit_county);
$rdi->rdi_county_name_verbose = $county->record->county_name ?? null; $permit->permit_county_name_verbose = $county->record->county_name ?? null;
} }
} }
// Pagination attributes // Pagination attributes
$rdis->addAttribute("count", $count); $permits->addAttribute("count", $count);
$rdis->addAttribute("start", $start); $permits->addAttribute("start", $start);
$rdis->addAttribute("end", $end); $permits->addAttribute("end", $end);
$rdis->addAttribute("page", $this->pagination_page); $permits->addAttribute("page", $this->pagination_page);
$_SESSION[self::PAGINATION_PAGE] = $this->pagination_page; $_SESSION[self::PAGINATION_PAGE] = $this->pagination_page;
return $rdis; return $permits;
} }
// ============================= // =============================
@@ -358,17 +370,17 @@ class PermitsBySubdivision extends Base {
// Count Query // Count Query
$SQL = "select count(*) as count $SQL = "select count(*) as count
from view_rdis r from view_permits r
join counties c on r.rdi_county = c.county_serial join counties c on r.permit_county = c.county_serial
where r.rdi_project_type = :rdi_project_type where r.permit_project_type = :permit_project_type
and r.rdi_county in and r.permit_county in
(select county_serial (select county_serial
from view_counties from view_counties
where county_area = :permit_area)"; where county_area = :permit_area)";
$statement = $connection->prepare($SQL); $statement = $connection->prepare($SQL);
$statement->bindValue(":rdi_project_type", $projecttype, PDO::PARAM_STR); $statement->bindValue(":permit_project_type", $projecttype, PDO::PARAM_STR);
$statement->bindValue(":permit_area", $permit_area, PDO::PARAM_STR); $statement->bindValue(":permit_area", $permit_area, PDO::PARAM_STR);
$statement->execute(); $statement->execute();
@@ -376,28 +388,28 @@ class PermitsBySubdivision extends Base {
$count = $recordset ? (int) $recordset["count"] : 0; $count = $recordset ? (int) $recordset["count"] : 0;
// === DATA QUERY === // === DATA QUERY ===
$SQL = "select r.*, c.county_name as rdi_county_name_verbose $SQL = "select r.*, c.county_name as permit_county_name_verbose
from view_rdis r from view_permits r
join counties c on r.rdi_county = c.county_serial join counties c on r.permit_county = c.county_serial
where r.rdi_project_type = :rdi_project_type where r.permit_project_type = :permit_project_type
and r.rdi_county in and r.permit_county in
(select county_serial (select county_serial
from view_counties from view_counties
where county_area = :permit_area)"; where county_area = :permit_area)";
$statement = $connection->prepare($SQL); $statement = $connection->prepare($SQL);
$statement->bindValue(":rdi_project_type", $projecttype, PDO::PARAM_STR); $statement->bindValue(":permit_project_type", $projecttype, PDO::PARAM_STR);
$statement->bindValue(":permit_area", $permit_area, PDO::PARAM_STR); $statement->bindValue(":permit_area", $permit_area, PDO::PARAM_STR);
$statement->execute(); $statement->execute();
$rdis = $this->getTableXML("rdis", $statement); $permits = $this->getTableXML("permits", $statement);
// Insert Pagination Attributes // Insert Pagination Attributes
$rdis->addAttribute("count", $count); $permits->addAttribute("count", $count);
return $rdis; return $permits;
} }
// ====================== // ======================
@@ -410,7 +422,7 @@ class PermitsBySubdivision extends Base {
return; return;
} }
$SQL = "select view_rdis.* from view_rdis where rdi_serial in ({$permits})"; $SQL = "select view_permits.* from view_permits where permit_serial in ({$permits})";
return $this->getTable("permits", $SQL); return $this->getTable("permits", $SQL);
} }
@@ -423,18 +435,18 @@ class PermitsBySubdivision extends Base {
$results = array(); $results = array();
$subdivision = filter_input(INPUT_GET, "rdi_sub_div_name") ?: ""; $subdivision = filter_input(INPUT_GET, "permit_sub_div_name") ?: "";
$subdivision = trim(preg_replace("/\s+/", " ", $subdivision)); $subdivision = trim(preg_replace("/\s+/", " ", $subdivision));
$subdivision = preg_replace("/'+/", "'", $subdivision); $subdivision = preg_replace("/'+/", "'", $subdivision);
$subdivision = preg_replace('/"+/', '"', $subdivision); $subdivision = preg_replace('/"+/', '"', $subdivision);
$subdivision = str_replace("'", "''", $subdivision); $subdivision = str_replace("'", "''", $subdivision);
$SQL = "select distinct rdi_sub_div_name from view_rdis where rdi_sub_div_name like '%{$subdivision}%' order by rdi_sub_div_name limit 10 offset 0"; $SQL = "select distinct permit_sub_div_name from view_permits where permit_sub_div_name like '%{$subdivision}%' order by permit_sub_div_name limit 10 offset 0";
$matches = $this->getTable("subdivisions", $SQL); $matches = $this->getTable("subdivisions", $SQL);
foreach ($matches as $match) { foreach ($matches as $match) {
$results[] = (string) $match->rdi_sub_div_name; $results[] = (string) $match->permit_sub_div_name;
} }
header('Content-Type: application/json'); header('Content-Type: application/json');
@@ -450,18 +462,18 @@ class PermitsBySubdivision extends Base {
$results = array(); $results = array();
$city = filter_input(INPUT_GET, "rdi_project_city") ?: ""; $city = filter_input(INPUT_GET, "permit_project_city") ?: "";
$city = trim(preg_replace("/\s+/", " ", $city)); $city = trim(preg_replace("/\s+/", " ", $city));
$city = preg_replace("/'+/", "'", $city); $city = preg_replace("/'+/", "'", $city);
$city = preg_replace('/"+/', '"', $city); $city = preg_replace('/"+/', '"', $city);
$city = str_replace("'", "''", $city); $city = str_replace("'", "''", $city);
$SQL = "select distinct rdi_project_city from view_rdis where rdi_project_city like '%{$city}%' order by rdi_project_city limit 10 offset 0"; $SQL = "select distinct permit_project_city from view_permits where permit_project_city like '%{$city}%' order by permit_project_city limit 10 offset 0";
$matches = $this->getTable("cities", $SQL); $matches = $this->getTable("cities", $SQL);
foreach ($matches as $match) { foreach ($matches as $match) {
$results[] = (string) $match->rdi_project_city; $results[] = (string) $match->permit_project_city;
} }
header('Content-Type: application/json'); header('Content-Type: application/json');
@@ -477,18 +489,18 @@ class PermitsBySubdivision extends Base {
$results = array(); $results = array();
$street = filter_input(INPUT_GET, "rdi_project_addr") ?: ""; $street = filter_input(INPUT_GET, "permit_project_addr") ?: "";
$street = trim(preg_replace("/\s+/", " ", $street)); $street = trim(preg_replace("/\s+/", " ", $street));
$street = preg_replace("/'+/", "'", $street); $street = preg_replace("/'+/", "'", $street);
$street = preg_replace('/"+/', '"', $street); $street = preg_replace('/"+/', '"', $street);
$street = str_replace("'", "''", $street); $street = str_replace("'", "''", $street);
$SQL = "select distinct rdi_project_addr from view_rdis where rdi_project_addr like '%{$street}%' order by rdi_project_addr limit 10 offset 0"; $SQL = "select distinct permit_project_addr from view_permits where permit_project_addr like '%{$street}%' order by permit_project_addr limit 10 offset 0";
$matches = $this->getTable("cities", $SQL); $matches = $this->getTable("cities", $SQL);
foreach ($matches as $match) { foreach ($matches as $match) {
$results[] = (string) $match->rdi_project_addr; $results[] = (string) $match->permit_project_addr;
} }
header('Content-Type: application/json'); header('Content-Type: application/json');
@@ -500,9 +512,9 @@ class PermitsBySubdivision extends Base {
// Return a Permit Object // Return a Permit Object
// ====================== // ======================
public function getPermit($rdi_serial = 0) { public function getPermit($permit_serial = 0) {
$SQL = "select view_rdis.* from view_rdis where rdi_serial = {$rdi_serial}"; $SQL = "select view_permits.* from view_permits where permit_serial = {$permit_serial}";
return $this->getTable("permit", $SQL); return $this->getTable("permit", $SQL);
} }
@@ -513,12 +525,12 @@ class PermitsBySubdivision extends Base {
public function getPermitRecordDialog() { public function getPermitRecordDialog() {
$rdi_serial = filter_input(INPUT_POST, "rdi_serial", FILTER_SANITIZE_NUMBER_INT) ?: 9; $permit_serial = filter_input(INPUT_POST, "permit_serial", FILTER_SANITIZE_NUMBER_INT) ?: 9;
$permit_record = $this->getPermit($rdi_serial); $permit_record = $this->getPermit($permit_serial);
$rdi_county = (new Counties())->getCounty($permit_record->record->rdi_county); $permit_county = (new Counties())->getCounty($permit_record->record->permit_county);
$permit_record->record->rdi_county = $rdi_county->record->county_name; $permit_record->record->permit_county = $permit_county->record->county_name;
$content = $this->applyXSL($permit_record, $this->getXSL("permitRecordDialog")); $content = $this->applyXSL($permit_record, $this->getXSL("permitRecordDialog"));
+4 -4
View File
@@ -42,7 +42,7 @@ class SearchHistory extends Base {
case 13: case 13:
case 15: case 15:
$searchcriteria = json_encode(array_filter($searchpayload, fn($key) => str_starts_with($key, 'rdi_'), ARRAY_FILTER_USE_KEY)); $searchcriteria = json_encode(array_filter($searchpayload, fn($key) => str_starts_with($key, 'permit_'), ARRAY_FILTER_USE_KEY));
break; break;
@@ -52,7 +52,7 @@ class SearchHistory extends Base {
case 14: case 14:
case 16: case 16:
$searchcriteria = json_encode(array_filter($searchpayload, fn($key) => str_starts_with($key, 'rdi_'), ARRAY_FILTER_USE_KEY)); $searchcriteria = json_encode(array_filter($searchpayload, fn($key) => str_starts_with($key, 'permit_'), ARRAY_FILTER_USE_KEY));
break; break;
@@ -103,7 +103,7 @@ class SearchHistory extends Base {
case 13: case 13:
case 15: case 15:
$searchcriteria = json_encode(array_filter($searchpayload, fn($key) => str_starts_with($key, 'rdi_'), ARRAY_FILTER_USE_KEY)); $searchcriteria = json_encode(array_filter($searchpayload, fn($key) => str_starts_with($key, 'permit_'), ARRAY_FILTER_USE_KEY));
break; break;
@@ -113,7 +113,7 @@ class SearchHistory extends Base {
case 14: case 14:
case 16: case 16:
$searchcriteria = json_encode(array_filter($searchpayload, fn($key) => str_starts_with($key, 'rdi_'), ARRAY_FILTER_USE_KEY)); $searchcriteria = json_encode(array_filter($searchpayload, fn($key) => str_starts_with($key, 'permit_'), ARRAY_FILTER_USE_KEY));
break; break;
+12 -6
View File
@@ -595,12 +595,18 @@ class Subscriptions extends Base {
public function getUsersActiveSubscriptions($user_serial) { public function getUsersActiveSubscriptions($user_serial) {
$SQL = "select view_usersubscriptions.* $SQL = "SELECT view_usersubscriptions.*
from view_usersubscriptions FROM view_usersubscriptions
where usersubscription_user_serial = {$user_serial} WHERE usersubscription_user_serial = 67
and view_usersubscriptions.usersubscription_status = 'ACTIVE' AND view_usersubscriptions.usersubscription_status = 'ACTIVE'
and view_usersubscriptions.usersubscription_stop_date >= now() AND view_usersubscriptions.usersubscription_stop_date >= NOW()
order by view_usersubscriptions.subscription_title, view_usersubscriptions.usersubscription_status"; ORDER BY
CASE
WHEN view_usersubscriptions.subscription_area = 'All' THEN 0
ELSE 1
END,
view_usersubscriptions.subscription_title,
view_usersubscriptions.usersubscription_status";
return $this->getTable("usersubscriptions", $SQL); return $this->getTable("usersubscriptions", $SQL);
} }
-78
View File
@@ -562,84 +562,6 @@ $(document).ready(function () {
}, 2000); // optional: add a slight delay so it feels responsive }, 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 // Per Page Dropdown
// ----------------- // -----------------
+82 -82
View File
@@ -24,7 +24,7 @@ $(document).ready(function () {
// Initialize Dropdowns // Initialize Dropdowns
// -------------------- // --------------------
$("#rdis_per_page").val($sessionStorage.rdis_per_page || "20"); $("#permits_per_page").val($sessionStorage.permits_per_page || "20");
// ----------- // -----------
// Input Masks // Input Masks
@@ -53,8 +53,8 @@ $(document).ready(function () {
// Date Pickers // Date Pickers
// ------------ // ------------
$("#rdi_entry_start_date").datepicker({format: "mm-dd-yyyy", $("#permit_entry_start_date").datepicker({format: "mm-dd-yyyy",
container: "div.rdi_entry_start_date", container: "div.permit_entry_start_date",
keyboardNavigation: false, keyboardNavigation: false,
showOnFocus: false, showOnFocus: false,
autoclose: true, autoclose: true,
@@ -62,8 +62,8 @@ $(document).ready(function () {
todayBtn: "linked", todayBtn: "linked",
todayHighlight: true}); todayHighlight: true});
$("#rdi_entry_end_date").datepicker({format: "mm-dd-yyyy", $("#permit_entry_end_date").datepicker({format: "mm-dd-yyyy",
container: "div.rdi_entry_end_date", container: "div.permit_entry_end_date",
keyboardNavigation: false, keyboardNavigation: false,
showOnFocus: false, showOnFocus: false,
autoclose: true, autoclose: true,
@@ -71,8 +71,8 @@ $(document).ready(function () {
todayBtn: "linked", todayBtn: "linked",
todayHighlight: true}); todayHighlight: true});
$("#rdi_permit_start_date").datepicker({format: "mm-dd-yyyy", $("#permit_permit_start_date").datepicker({format: "mm-dd-yyyy",
container: "div.rdi_permit_start_date", container: "div.permit_permit_start_date",
keyboardNavigation: false, keyboardNavigation: false,
showOnFocus: false, showOnFocus: false,
autoclose: true, autoclose: true,
@@ -80,8 +80,8 @@ $(document).ready(function () {
todayBtn: "linked", todayBtn: "linked",
todayHighlight: true}); todayHighlight: true});
$("#rdi_permit_end_date").datepicker({format: "mm-dd-yyyy", $("#permit_permit_end_date").datepicker({format: "mm-dd-yyyy",
container: "div.rdi_permit_end_date", container: "div.permit_permit_end_date",
keyboardNavigation: false, keyboardNavigation: false,
showOnFocus: false, showOnFocus: false,
autoclose: true, autoclose: true,
@@ -97,7 +97,7 @@ $(document).ready(function () {
e.preventDefault(); e.preventDefault();
$("#rdi_entry_start_date").focus().datepicker("show"); $("#permit_entry_start_date").focus().datepicker("show");
}); });
@@ -105,7 +105,7 @@ $(document).ready(function () {
e.preventDefault(); e.preventDefault();
$("#rdi_entry_end_date").focus().datepicker("show"); $("#permit_entry_end_date").focus().datepicker("show");
}); });
@@ -113,7 +113,7 @@ $(document).ready(function () {
e.preventDefault(); e.preventDefault();
$("#rdi_permit_start_date").focus().datepicker("show"); $("#permit_permit_start_date").focus().datepicker("show");
}); });
@@ -121,7 +121,7 @@ $(document).ready(function () {
e.preventDefault(); e.preventDefault();
$("#rdi_permit_end_date").focus().datepicker("show"); $("#permit_permit_end_date").focus().datepicker("show");
}); });
@@ -133,15 +133,15 @@ $(document).ready(function () {
var filter = $(this).val().toLowerCase(); var filter = $(this).val().toLowerCase();
$(".rdi-row").hide().filter(function () { $(".permit-row").hide().filter(function () {
return $(this).find(".filterable").text().toLowerCase().indexOf(filter) > -1; return $(this).find(".filterable").text().toLowerCase().indexOf(filter) > -1;
}).show(); }).show();
if ($(".rdi-row:visible").length === 0) { if ($(".permit-row:visible").length === 0) {
$("#rdis-table thead").hide(); $("#permits-table thead").hide();
$(".filter-error").removeClass("d-none"); $(".filter-error").removeClass("d-none");
} else { } else {
$("#rdis-table thead").show(); $("#permits-table thead").show();
$(".filter-error").addClass("d-none"); $(".filter-error").addClass("d-none");
} }
@@ -170,9 +170,9 @@ $(document).ready(function () {
// Per Page Change // Per Page Change
// --------------- // ---------------
$("#rdis_per_page").on("change", function () { $("#permits_per_page").on("change", function () {
$sessionStorage.rdis_per_page = $(this).val(); $sessionStorage.permits_per_page = $(this).val();
$sessionStorage.action = "PermitsBySubdivision.searchPermits"; $sessionStorage.action = "PermitsBySubdivision.searchPermits";
$sessionStorage.pagination = "first"; $sessionStorage.pagination = "first";
@@ -214,7 +214,7 @@ $(document).ready(function () {
resolverSettings: { resolverSettings: {
url: "main.php?Xaction=PermitsBySubdivision.getAutoCompleteSubdivisions", url: "main.php?Xaction=PermitsBySubdivision.getAutoCompleteSubdivisions",
queryKey: "rdi_sub_div_name", queryKey: "permit_sub_div_name",
requestThrottling: 0 requestThrottling: 0
}, },
noResultsText: "No Matching Subdivisions Found.", noResultsText: "No Matching Subdivisions Found.",
@@ -225,7 +225,7 @@ $(document).ready(function () {
$(".city-autocomplete").autoComplete({ $(".city-autocomplete").autoComplete({
resolverSettings: { resolverSettings: {
url: "main.php?Xaction=PermitsBySubdivision.getAutoCompleteCities", url: "main.php?Xaction=PermitsBySubdivision.getAutoCompleteCities",
queryKey: "rdi_project_city", queryKey: "permit_project_city",
requestThrottling: 0 requestThrottling: 0
}, },
noResultsText: "No Matching Cities Found.", noResultsText: "No Matching Cities Found.",
@@ -237,7 +237,7 @@ $(document).ready(function () {
resolverSettings: { resolverSettings: {
url: "main.php?Xaction=PermitsBySubdivision.getAutoCompleteStreets", url: "main.php?Xaction=PermitsBySubdivision.getAutoCompleteStreets",
queryKey: "rdi_project_addr", queryKey: "permit_project_addr",
requestThrottling: 0 requestThrottling: 0
}, },
noResultsText: "No Matching Streets Found.", noResultsText: "No Matching Streets Found.",
@@ -279,16 +279,16 @@ $(document).ready(function () {
$("#spinner-dialog").modal("show"); $("#spinner-dialog").modal("show");
delete $sessionStorage.pagination; delete $sessionStorage.pagination;
delete $sessionStorage.rdi_company; delete $sessionStorage.permit_company;
delete $sessionStorage.rdi_county; delete $sessionStorage.permit_county;
delete $sessionStorage.rdi_sub_div_name; delete $sessionStorage.permit_sub_div_name;
delete $sessionStorage.rdi_project_city; delete $sessionStorage.permit_project_city;
delete $sessionStorage.rdi_project_addr; delete $sessionStorage.permit_project_addr;
delete $sessionStorage.rdi_and_or; delete $sessionStorage.permit_and_or;
delete $sessionStorage.rdi_entry_start_date; delete $sessionStorage.permit_entry_start_date;
delete $sessionStorage.rdi_entry_end_date; delete $sessionStorage.permit_entry_end_date;
delete $sessionStorage.rdi_permit_start_date; delete $sessionStorage.permit_permit_start_date;
delete $sessionStorage.rdi_permit_end_date; delete $sessionStorage.permit_permit_end_date;
sessionStorage.setItem($application, JSON.stringify($sessionStorage)); sessionStorage.setItem($application, JSON.stringify($sessionStorage));
@@ -317,16 +317,16 @@ $(document).ready(function () {
$("#spinner-dialog").modal("show"); $("#spinner-dialog").modal("show");
var rdi_county = $("#rdi_county"), var permit_county = $("#permit_county"),
rdi_and_or = $("#rdi_and_or"), permit_and_or = $("#permit_and_or"),
rdi_company = $("#rdi_company"), permit_company = $("#permit_company"),
rdi_sub_div_name = $("#rdi_sub_div_name"), permit_sub_div_name = $("#permit_sub_div_name"),
rdi_project_city = $("#rdi_project_city"), permit_project_city = $("#permit_project_city"),
rdi_project_addr = $("#rdi_project_addr"), permit_project_addr = $("#permit_project_addr"),
rdi_entry_start_date = $("#rdi_entry_start_date"), permit_entry_start_date = $("#permit_entry_start_date"),
rdi_entry_end_date = $("#rdi_entry_end_date"), permit_entry_end_date = $("#permit_entry_end_date"),
rdi_permit_start_date = $("#rdi_permit_start_date"), permit_permit_start_date = $("#permit_permit_start_date"),
rdi_permit_end_date = $("#rdi_permit_end_date"), permit_permit_end_date = $("#permit_permit_end_date"),
form_error = $("#search-form-error"); form_error = $("#search-form-error");
clearInputErrors(); clearInputErrors();
@@ -341,39 +341,39 @@ $(document).ready(function () {
} }
// Validate required fields // Validate required fields
if ([rdi_county, rdi_company, rdi_sub_div_name, rdi_project_city, rdi_project_addr, rdi_entry_start_date, rdi_entry_end_date, rdi_permit_start_date, rdi_permit_end_date].every(isBlank)) { if ([permit_county, permit_company, permit_sub_div_name, permit_project_city, permit_project_addr, 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."); return showError("Please provide a search criteria.");
} }
if (isBlank(rdi_entry_start_date) && !isBlank(rdi_entry_end_date)) { if (isBlank(permit_entry_start_date) && !isBlank(permit_entry_end_date)) {
return showError("Please provide an Entry From Date for range.", rdi_entry_start_date); return showError("Please provide an Entry From Date for range.", permit_entry_start_date);
} }
if (isBlank(rdi_permit_start_date) && !isBlank(rdi_permit_end_date)) { if (isBlank(permit_permit_start_date) && !isBlank(permit_permit_end_date)) {
return showError("Please provide a Permit From Date for range.", rdi_permit_start_date); return showError("Please provide a Permit From Date for range.", permit_permit_start_date);
} }
// Validate date ranges // Validate date ranges
if (rdi_entry_end_date.val() && !checkEndingDate(rdi_entry_start_date, rdi_entry_end_date)) { 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"); return showError("Start Date must be prior to End Date");
} }
if (rdi_permit_end_date.val() && !checkEndingDate(rdi_permit_start_date, rdi_permit_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"); return showError("Start Date must be prior to End Date");
} }
e.preventDefault(); e.preventDefault();
$sessionStorage.rdi_company = rdi_company.val(); $sessionStorage.permit_company = permit_company.val();
$sessionStorage.rdi_county = rdi_county.val(); $sessionStorage.permit_county = permit_county.val();
$sessionStorage.rdi_and_or = rdi_and_or.val(); $sessionStorage.permit_and_or = permit_and_or.val();
$sessionStorage.rdi_sub_div_name = rdi_sub_div_name.val(); $sessionStorage.permit_sub_div_name = permit_sub_div_name.val();
$sessionStorage.rdi_project_city = rdi_project_city.val(); $sessionStorage.permit_project_city = permit_project_city.val();
$sessionStorage.rdi_project_addr = rdi_project_addr.val(); $sessionStorage.permit_project_addr = permit_project_addr.val();
$sessionStorage.rdi_entry_start_date = rdi_entry_start_date.val(); $sessionStorage.permit_entry_start_date = permit_entry_start_date.val();
$sessionStorage.rdi_entry_end_date = rdi_entry_end_date.val(); $sessionStorage.permit_entry_end_date = permit_entry_end_date.val();
$sessionStorage.rdi_permit_start_date = rdi_permit_start_date.val(); $sessionStorage.permit_permit_start_date = permit_permit_start_date.val();
$sessionStorage.rdi_permit_end_date = rdi_permit_end_date.val(); $sessionStorage.permit_permit_end_date = permit_permit_end_date.val();
sessionStorage.setItem($application, JSON.stringify($sessionStorage)); sessionStorage.setItem($application, JSON.stringify($sessionStorage));
@@ -385,43 +385,43 @@ $(document).ready(function () {
// Column Heading Sort // Column Heading Sort
// ------------------- // -------------------
if (($sessionStorage.rdis_order_by || "") !== "") { if (($sessionStorage.permits_order_by || "") !== "") {
$("th[data-order-by = '" + ($sessionStorage.rdis_order_by || "") + "']").append('<i class="' + ($sessionStorage.rdis_order_icon || "") + ' text-danger ms-1 me-0"/>'); $("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) { $("th.sortable").on("click", function (e) {
if ($(e.target).data("order-by") !== ($sessionStorage.rdis_order_by || "")) { // New Column if ($(e.target).data("order-by") !== ($sessionStorage.permits_order_by || "")) { // New Column
$sessionStorage.rdis_order_by = $(e.target).data("order-by"); $sessionStorage.permits_order_by = $(e.target).data("order-by");
$sessionStorage.rdis_order_direction = "asc"; $sessionStorage.permits_order_direction = "asc";
$sessionStorage.rdis_order_icon = "bi bi-arrow-up"; $sessionStorage.permits_order_icon = "bi bi-arrow-up";
} else { } else {
switch ($sessionStorage.rdis_order_direction) { switch ($sessionStorage.permits_order_direction) {
case "" : case "" :
$sessionStorage.rdis_order_by = $(e.target).data("order-by"); $sessionStorage.permits_order_by = $(e.target).data("order-by");
$sessionStorage.rdis_order_direction = "asc"; $sessionStorage.permits_order_direction = "asc";
$sessionStorage.rdis_order_icon = "bi bi-arrow-up"; $sessionStorage.permits_order_icon = "bi bi-arrow-up";
break; break;
case "asc" : case "asc" :
$sessionStorage.rdis_order_by = $(e.target).data("order-by"); $sessionStorage.permits_order_by = $(e.target).data("order-by");
$sessionStorage.rdis_order_direction = "desc"; $sessionStorage.permits_order_direction = "desc";
$sessionStorage.rdis_order_icon = "bi bi-arrow-down"; $sessionStorage.permits_order_icon = "bi bi-arrow-down";
break; break;
case "desc" : case "desc" :
$sessionStorage.rdis_order_by = ""; $sessionStorage.permits_order_by = "";
$sessionStorage.rdis_order_direction = ""; $sessionStorage.permits_order_direction = "";
$sessionStorage.rdis_order_icon = ""; $sessionStorage.permits_order_icon = "";
break; break;
} }
@@ -468,7 +468,7 @@ $(document).ready(function () {
// Toggle a Select Checkbox // Toggle a Select Checkbox
// ------------------------ // ------------------------
$(".rdi-row").on("click touch", function (e) { $(".permit-row").on("click touch", function (e) {
if (!($(e.target).hasClass("selection-area"))) { if (!($(e.target).hasClass("selection-area"))) {
return false; return false;
@@ -492,16 +492,16 @@ $(document).ready(function () {
}); });
$("#rdis-table tbody tr").on("click touch", function (e) { $("#permits-table tbody tr").on("click touch", function (e) {
// If the click was on selection area (or the checkbox itself), do nothing // If the click was on selection area (or the checkbox itself), do nothing
if ($(e.target).closest(".selection-area, input[name='selected[]'], label").length) { if ($(e.target).closest(".selection-area, input[name='selected[]'], label").length) {
return; return;
} }
const rdi_serial = $(this).data("rdi-serial"); const permit_serial = $(this).data("permit-serial");
openPermitDialog(getPermitRecordDialog(rdi_serial)); openPermitDialog(getPermitRecordDialog(permit_serial));
}); });
@@ -729,7 +729,7 @@ $(document).ready(function () {
// Per Page Dropdown // Per Page Dropdown
// ----------------- // -----------------
$("#rdis_per_page").on("change", function () { $("#permits_per_page").on("change", function () {
$(".btnFind").trigger("click"); $(".btnFind").trigger("click");
@@ -758,7 +758,7 @@ function openPermitDialog(modalHtml) {
// Returns Modal with Permit Record Data // Returns Modal with Permit Record Data
// ------------------------------------- // -------------------------------------
function getPermitRecordDialog(rdi_serial) { function getPermitRecordDialog(permit_serial) {
var dialog = null; var dialog = null;
@@ -766,7 +766,7 @@ function getPermitRecordDialog(rdi_serial) {
url: "main.php?Xaction=PermitsBySubdivision.getPermitRecordDialog", url: "main.php?Xaction=PermitsBySubdivision.getPermitRecordDialog",
type: "POST", type: "POST",
async: false, async: false,
data: {rdi_serial: rdi_serial}, data: {permit_serial: permit_serial},
dataType: "html", dataType: "html",
success: function (result) { success: function (result) {
dialog = result; dialog = result;
+1 -2
View File
@@ -3,8 +3,7 @@
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/> <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2"> <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
<group> <group>
<file>file:/C:/Users/JamesRichie/OneDrive%20-%20OneSource%20IT%20Solutions%20LLC/Documents/NetBeansProjects/dec-international/atlhousingreport/classes/PermitsByBuilder.php</file> <file>file:/C:/Users/JamesRichie/OneDrive%20-%20OneSource%20IT%20Solutions%20LLC/Documents/NetBeansProjects/dec-international/atlhousingreport/views/view_company_permit_trends.php</file>
<file>file:/C:/Users/JamesRichie/OneDrive%20-%20OneSource%20IT%20Solutions%20LLC/Documents/NetBeansProjects/dec-international/atlhousingreport/classes/Consolidation.php</file>
<file>file:/C:/Users/JamesRichie/OneDrive%20-%20OneSource%20IT%20Solutions%20LLC/Documents/NetBeansProjects/dec-international/atlhousingreport/xsl/searchPermitsByBuilder.xsl</file> <file>file:/C:/Users/JamesRichie/OneDrive%20-%20OneSource%20IT%20Solutions%20LLC/Documents/NetBeansProjects/dec-international/atlhousingreport/xsl/searchPermitsByBuilder.xsl</file>
</group> </group>
</open-files> </open-files>
+58 -72
View File
@@ -1,82 +1,68 @@
<?php <?php
$SQL = "create or replace view view_company_permit_trends as $SQL = "create or replace view view_company_permit_trends as
select
companies.permit_company,
ifnull(prev.prev_ytd_permits, 0) as prev_ytd_permits, select companies.permit_company,
ifnull(curr.ytd_permits, 0) as ytd_permits, ifnull(prev.prev_ytd_permits, 0) as prev_ytd_permits,
ifnull(curr.ytd_permits, 0) as ytd_permits,
ifnull(prev.prev_ytd_value, 0) as prev_ytd_value,
ifnull(curr.ytd_value, 0) as ytd_value,
ifnull(prev.prev_ytd_value, 0) as prev_ytd_value, case
ifnull(curr.ytd_value, 0) as ytd_value, when ifnull(prev.prev_ytd_permits, 0) = 0 then null
else round( ((ifnull(curr.ytd_permits, 0) - prev.prev_ytd_permits) / prev.prev_ytd_permits) * 100, 2 )
end
as permits_pct_change,
case case
when ifnull(prev.prev_ytd_permits, 0) = 0 then null when ifnull(prev.prev_ytd_value, 0) = 0 then null
else round( else round(((ifnull(curr.ytd_value, 0) - prev.prev_ytd_value) / prev.prev_ytd_value) * 100, 2 )
((ifnull(curr.ytd_permits, 0) - prev.prev_ytd_permits) / prev.prev_ytd_permits) * 100, end
2 as value_pct_change,
)
end as permits_pct_change,
case case
when ifnull(prev.prev_ytd_value, 0) = 0 then null when ifnull(prev.prev_ytd_permits, 0) = 0 then ''
else round( when ( ifnull(curr.ytd_permits, 0) / prev.prev_ytd_permits) < 0.75 then 'down'
((ifnull(curr.ytd_value, 0) - prev.prev_ytd_value) / prev.prev_ytd_value) * 100, when (( ifnull(curr.ytd_permits, 0) - prev.prev_ytd_permits) / prev.prev_ytd_permits) >= 0.05 then 'up'
2 when (( ifnull(curr.ytd_permits, 0) - prev.prev_ytd_permits) / prev.prev_ytd_permits) <= -0.05 then '='
) else '='
end as value_pct_change, end
as permits_trend,
case case
when ifnull(prev.prev_ytd_permits, 0) = 0 then '' when ifnull(prev.prev_ytd_value, 0) = 0 then ''
when (ifnull(curr.ytd_permits, 0) / prev.prev_ytd_permits) < 0.75 then 'down' when ( ifnull(curr.ytd_value, 0) / prev.prev_ytd_value) < 0.75 then '='
when ((ifnull(curr.ytd_permits, 0) - prev.prev_ytd_permits) / prev.prev_ytd_permits) >= 0.05 then 'up' when (( ifnull(curr.ytd_value, 0) - prev.prev_ytd_value) / prev.prev_ytd_value) >= 0.05 then 'up'
when ((ifnull(curr.ytd_permits, 0) - prev.prev_ytd_permits) / prev.prev_ytd_permits) <= -0.05 then 'down' when (( ifnull(curr.ytd_value, 0) - prev.prev_ytd_value) / prev.prev_ytd_value) <= -0.05 then 'down'
else '=' else '='
end as permits_trend, end
as value_trend
from (
select distinct permit_company
from permits
where permit_company is not null
and trim(permit_company) <> '' ) companies
left join (
select permit_company, count(*) as prev_ytd_permits, sum(ifnull(permit_value, 0)) as prev_ytd_value
from permits
where permit_company is not null
and trim(permit_company) <> ''
and permit_permit_date >= makedate(year(curdate()) - 1, 1)
and permit_permit_date <= date_sub(curdate(), interval 1 year)
group by permit_company ) prev
on companies.permit_company = prev.permit_company
case left join (
when ifnull(prev.prev_ytd_value, 0) = 0 then '' select permit_company, count(*) as ytd_permits, sum(ifnull(permit_value, 0)) as ytd_value
when (ifnull(curr.ytd_value, 0) / prev.prev_ytd_value) < 0.75 then '=' from permits
when ((ifnull(curr.ytd_value, 0) - prev.prev_ytd_value) / prev.prev_ytd_value) >= 0.05 then 'up' where permit_company is not null
when ((ifnull(curr.ytd_value, 0) - prev.prev_ytd_value) / prev.prev_ytd_value) <= -0.05 then 'down' and trim(permit_company) <> ''
else '=' and permit_permit_date >= makedate(year(curdate()), 1)
end as value_trend and permit_permit_date <= curdate()
group by permit_company ) curr
from on companies.permit_company = curr.permit_company";
(
select distinct permit_company
from permits
where permit_company is not null
and trim(permit_company) <> ''
) companies
left join
(
select
permit_company,
count(*) as prev_ytd_permits,
sum(ifnull(permit_value, 0)) as prev_ytd_value
from permits
where permit_company is not null
and trim(permit_company) <> ''
and permit_permit_date >= makedate(year(curdate()) - 1, 1)
and permit_permit_date <= date_sub(curdate(), interval 1 year)
group by permit_company
) prev
on companies.permit_company = prev.permit_company
left join
(
select
permit_company,
count(*) as ytd_permits,
sum(ifnull(permit_value, 0)) as ytd_value
from permits
where permit_company is not null
and trim(permit_company) <> ''
and permit_permit_date >= makedate(year(curdate()), 1)
and permit_permit_date <= curdate()
group by permit_company
) curr
on companies.permit_company = curr.permit_company";
?> ?>
+29 -11
View File
@@ -12,9 +12,9 @@
<div class="modal-header bg-primary"> <div class="modal-header bg-primary">
<h5 class="modal-title text-white" id="permit-details-title"> <h5 class="modal-title text-white" id="permit-details-title">
<xsl:value-of select="//permit/record/rdi_sub_div_name"/> <xsl:value-of select="//permit/record/permit_sub_div_name"/>
<xsl:text> - </xsl:text> <xsl:text> - </xsl:text>
<xsl:value-of select="concat(//permit/record/rdi_project_addr, ' ', //permit/record/rdi_project_city, ' ', //permit/record/rdi_project_state)"/> <xsl:value-of select="concat(//permit/record/permit_project_addr, ' ', //permit/record/permit_project_city, ' ', //permit/record/permit_project_state)"/>
</h5> </h5>
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Close"></button> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Close"></button>
@@ -26,21 +26,39 @@
<div class="col-md-4"> <div class="col-md-4">
<label class="form-label">Permit Number</label> <label class="form-label">Permit Number</label>
<p class="mb-0"> <p class="mb-0">
<xsl:value-of select="//permit/record/rdi_permit_number"/> <xsl:value-of select="//permit/record/permit_permit_number"/>
</p> </p>
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
<label class="form-label">Permit Date</label> <label class="form-label">Permit Date</label>
<p class="mb-0"> <p class="mb-0">
<xsl:value-of select="//permit/record/rdi_permit_date_verbose"/> <xsl:value-of select="//permit/record/permit_permit_date_verbose"/>
</p> </p>
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
<label class="form-label">Entry Date</label> <label class="form-label">Entry Date</label>
<p class="mb-0"> <p class="mb-0">
<xsl:value-of select="//permit/record/rdi_entry_date_verbose"/> <xsl:value-of select="//permit/record/permit_entry_date_verbose"/>
</p>
</div>
</div>
<hr class="my-3"/>
<div class="row g-3">
<div class="col-md-4">
<label class="form-label">Value</label>
<p class="mb-0">
<xsl:value-of select="//permit/record/permit_value_verbose"/>
</p>
</div>
<div class="col-md-4">
<label class="form-label">Square Footage</label>
<p class="mb-0">
<xsl:value-of select="//permit/record/permit_size_verbose"/>
</p> </p>
</div> </div>
</div> </div>
@@ -51,14 +69,14 @@
<div class="col-md-6"> <div class="col-md-6">
<label class="form-label">Project Address</label> <label class="form-label">Project Address</label>
<p class="mb-0"> <p class="mb-0">
<xsl:value-of select="concat(//permit/record/rdi_project_addr, ' ', //permit/record/rdi_project_city, ', ', //permit/record/rdi_project_state, ' ', //permit/record/rdi_zip)"/> <xsl:value-of select="concat(//permit/record/permit_project_addr, ' ', //permit/record/permit_project_city, ', ', //permit/record/permit_project_state, ' ', //permit/record/permit_zip)"/>
</p> </p>
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
<label class="form-label">Owner Address</label> <label class="form-label">Owner Address</label>
<p class="mb-0"> <p class="mb-0">
<xsl:value-of select="concat(//permit/record/rdi_owner_address, ' ', //permit/record/rdi_owner_city, ', ', //permit/record/rdi_owner_state, ' ', //permit/record/rdi_owner_zip)"/> <xsl:value-of select="concat(//permit/record/permit_owner_address, ' ', //permit/record/permit_owner_city, ', ', //permit/record/permit_owner_state, ' ', //permit/record/permit_owner_zip)"/>
</p> </p>
</div> </div>
</div> </div>
@@ -69,14 +87,14 @@
<div class="col-md-6"> <div class="col-md-6">
<label class="form-label">Company</label> <label class="form-label">Company</label>
<p class="mb-0"> <p class="mb-0">
<xsl:value-of select="//permit/record/rdi_company"/> <xsl:value-of select="//permit/record/permit_company"/>
</p> </p>
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
<label class="form-label">Project Name</label> <label class="form-label">Project Name</label>
<p class="mb-0"> <p class="mb-0">
<xsl:value-of select="//permit/record/rdi_sub_div_name"/> <xsl:value-of select="//permit/record/permit_sub_div_name"/>
</p> </p>
</div> </div>
</div> </div>
@@ -87,14 +105,14 @@
<div class="col-md-6"> <div class="col-md-6">
<label class="form-label">County</label> <label class="form-label">County</label>
<p class="mb-0"> <p class="mb-0">
<xsl:value-of select="//permit/record/rdi_county"/> <xsl:value-of select="//permit/record/permit_county"/>
</p> </p>
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
<label class="form-label">Owner Name</label> <label class="form-label">Owner Name</label>
<p class="mb-0"> <p class="mb-0">
<xsl:value-of select="//permit/record/rdi_owner_name"/> <xsl:value-of select="//permit/record/permit_owner_name"/>
</p> </p>
</div> </div>
</div> </div>
+9 -8
View File
@@ -376,14 +376,6 @@
<td class="ytd_permits text-nowrap filterable text-center"> <td class="ytd_permits text-nowrap filterable text-center">
<xsl:value-of select="ytd_permits"/> <xsl:value-of select="ytd_permits"/>
</td>
<td class="permit_ytd_value filterable text-center">
<xsl:value-of select="concat('$', format-number(ytd_value, '###,###'))"/>
</td>
<td class="permit_12mth_prev_permits filterable text-center">
<xsl:value-of select="previous_ytd_permits"/>
<xsl:choose> <xsl:choose>
<xsl:when test="permits_trend = 'up'"> <xsl:when test="permits_trend = 'up'">
<i class="bi bi-arrow-up text-success"></i> <i class="bi bi-arrow-up text-success"></i>
@@ -397,6 +389,15 @@
</xsl:choose> </xsl:choose>
</td> </td>
<td class="permit_ytd_value filterable text-center">
<xsl:value-of select="concat('$', format-number(ytd_value, '###,###'))"/>
</td>
<td class="permit_12mth_prev_permits filterable text-center">
<xsl:value-of select="previous_ytd_permits"/>
</td>
<td class="permit_address filterable"> <td class="permit_address filterable">
<xsl:value-of select="concat(permit_address, ' ', permit_city, ', ', permit_state, ' ', permit_zip)"/> <xsl:value-of select="concat(permit_address, ' ', permit_city, ', ', permit_state, ' ', permit_zip)"/>
</td> </td>
+66 -66
View File
@@ -11,10 +11,10 @@
<!-- Variables --> <!-- Variables -->
<xsl:variable name="PAGINATION_COUNT" select="//rdis/@count"/> <xsl:variable name="PAGINATION_COUNT" select="//permits/@count"/>
<xsl:variable name="PAGINATION_START" select="//rdis/@start"/> <xsl:variable name="PAGINATION_START" select="//permits/@start"/>
<xsl:variable name="PAGINATION_END" select="//rdis/@end"/> <xsl:variable name="PAGINATION_END" select="//permits/@end"/>
<xsl:variable name="PAGINATION_PAGE" select="//rdis/@page"/> <xsl:variable name="PAGINATION_PAGE" select="//permits/@page"/>
<xsl:template match="/"> <xsl:template match="/">
@@ -47,15 +47,15 @@
<div class="row"> <div class="row">
<div class="col-lg-4 mb-3"> <div class="col-lg-4 mb-3">
<label class="form-label" for="rdi_county">County</label> <label class="form-label" for="permit_county">County</label>
<select class="form-control form-control-sm multiple-dropdown" multiple="multiple" name="rdi_county" id="rdi_county" size="1"> <select class="form-control form-control-sm multiple-dropdown" multiple="multiple" name="permit_county" id="permit_county" size="1">
<xsl:apply-templates select="//counties"/> <xsl:apply-templates select="//counties"/>
</select> </select>
</div> </div>
<div class="col-lg-1 mb-3"> <div class="col-lg-1 mb-3">
<label class="form-label" for="rdi_and_or">And/Or</label> <label class="form-label" for="permit_and_or">And/Or</label>
<select class="form-select form-select-sm" name="rdi_and_or" id="rdi_and_or" size="1"> <select class="form-select form-select-sm" name="permit_and_or" id="permit_and_or" size="1">
<option value="and">And</option> <option value="and">And</option>
<option value="or">Or</option> <option value="or">Or</option>
</select> </select>
@@ -66,59 +66,59 @@
<div class="row"> <div class="row">
<div class="col-lg-3 mb-3"> <div class="col-lg-3 mb-3">
<label class="form-label" for="rdi_company">Company/Builder</label> <label class="form-label" for="permit_company">Company/Builder</label>
<input type="text" class="form-control form-control-sm" name="rdi_company" id="rdi_company" maxlength="120" autocomplete="off" autofocus="autofocus"/> <input type="text" class="form-control form-control-sm" name="permit_company" id="permit_company" maxlength="120" autocomplete="off" autofocus="autofocus"/>
</div> </div>
<div class="col-lg-3 mb-3"> <div class="col-lg-3 mb-3">
<label class="form-label" for="rdi_sub_div_name">Subdivision</label> <label class="form-label" for="permit_sub_div_name">Subdivision</label>
<input type="text" class="form-control form-control-sm subdivision-autocomplete" autocomplete="chrome-off" name="rdi_sub_div_name" id="rdi_sub_div_name" maxlength="100"/> <input type="text" class="form-control form-control-sm subdivision-autocomplete" autocomplete="chrome-off" name="permit_sub_div_name" id="permit_sub_div_name" maxlength="100"/>
</div> </div>
<div class="col-lg-3 mb-3"> <div class="col-lg-3 mb-3">
<label class="form-label" for="rdi_project_city">City</label> <label class="form-label" for="permit_project_city">City</label>
<input type="text" class="form-control form-control-sm city-autocomplete" autocomplete="chrome-off" name="rdi_project_city" id="rdi_project_city" maxlength="100"/> <input type="text" class="form-control form-control-sm city-autocomplete" autocomplete="chrome-off" name="permit_project_city" id="permit_project_city" maxlength="100"/>
</div> </div>
<div class="col-lg-3 mb-3"> <div class="col-lg-3 mb-3">
<label class="form-label" for="rdi_project_addr">Street Name</label> <label class="form-label" for="permit_project_addr">Street Name</label>
<input type="text" class="form-control form-control-sm street-autocomplete" autocomplete="chrome-off" name="rdi_project_addr" id="rdi_project_addr" maxlength="100"/> <input type="text" class="form-control form-control-sm street-autocomplete" autocomplete="chrome-off" name="permit_project_addr" id="permit_project_addr" maxlength="100"/>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-lg-2 mb-3"> <div class="col-lg-2 mb-3">
<label class="form-label" for="rdi_entry_start_date">Entry Start Date</label> <label class="form-label" for="permit_entry_start_date">Entry Start Date</label>
<div class="input-group input-group-sm rdi_entry_start_date"> <div class="input-group input-group-sm permit_entry_start_date">
<input type="text" class="form-control form-control-sm date-mask" name="rdi_entry_start_date" id="rdi_entry_start_date" autocomplete="off" value=""/> <input type="text" class="form-control form-control-sm date-mask" name="permit_entry_start_date" id="permit_entry_start_date" autocomplete="off" value=""/>
<button class="btn btn-sm btn-outline-primary btnEntryStartDateCalendar" type="button" data-bs-toggle="tooltip" data-bs-title="Calendar" data-bs-custom-class="custom-tooltip" tabindex="-1"> <button class="btn btn-sm btn-outline-primary btnEntryStartDateCalendar" type="button" data-bs-toggle="tooltip" data-bs-title="Calendar" data-bs-custom-class="custom-tooltip" tabindex="-1">
<i class="bi bi-calendar3"/> <i class="bi bi-calendar3"/>
</button> </button>
</div> </div>
</div> </div>
<div class="col-lg-2 mb-3"> <div class="col-lg-2 mb-3">
<label class="form-label" for="rdi_entry_end_date">Entry End Date</label> <label class="form-label" for="permit_entry_end_date">Entry End Date</label>
<div class="input-group input-group-sm rdi_entry_end_date"> <div class="input-group input-group-sm permit_entry_end_date">
<input type="text" class="form-control form-control-sm date-mask" name="rdi_entry_end_date" id="rdi_entry_end_date" autocomplete="off" value=""/> <input type="text" class="form-control form-control-sm date-mask" name="permit_entry_end_date" id="permit_entry_end_date" autocomplete="off" value=""/>
<button class="btn btn-sm btn-outline-primary btnEntryEndDateCalendar" type="button" data-bs-toggle="tooltip" data-bs-title="Calendar" data-bs-custom-class="custom-tooltip" tabindex="-1"> <button class="btn btn-sm btn-outline-primary btnEntryEndDateCalendar" type="button" data-bs-toggle="tooltip" data-bs-title="Calendar" data-bs-custom-class="custom-tooltip" tabindex="-1">
<i class="bi bi-calendar3"/> <i class="bi bi-calendar3"/>
</button> </button>
</div> </div>
</div> </div>
<div class="col-lg-2 mb-3"> <div class="col-lg-2 mb-3">
<label class="form-label" for="rdi_permit_start_date">Permit Start Date</label> <label class="form-label" for="permit_permit_start_date">Permit Start Date</label>
<div class="input-group input-group-sm rdi_permit_start_date"> <div class="input-group input-group-sm permit_permit_start_date">
<input type="text" class="form-control form-control-sm date-mask" name="rdi_permit_start_date" id="rdi_permit_start_date" autocomplete="off" value=""/> <input type="text" class="form-control form-control-sm date-mask" name="permit_permit_start_date" id="permit_permit_start_date" autocomplete="off" value=""/>
<button class="btn btn-sm btn-outline-primary btnPermitStartDateCalendar" type="button" data-bs-toggle="tooltip" data-bs-title="Calendar" data-bs-custom-class="custom-tooltip" tabindex="-1"> <button class="btn btn-sm btn-outline-primary btnPermitStartDateCalendar" type="button" data-bs-toggle="tooltip" data-bs-title="Calendar" data-bs-custom-class="custom-tooltip" tabindex="-1">
<i class="bi bi-calendar3"/> <i class="bi bi-calendar3"/>
</button> </button>
</div> </div>
</div> </div>
<div class="col-lg-2 mb-3"> <div class="col-lg-2 mb-3">
<label class="form-label" for="rdi_permit_end_date">Permit End Date</label> <label class="form-label" for="permit_permit_end_date">Permit End Date</label>
<div class="input-group input-group-sm rdi_permit_end_date"> <div class="input-group input-group-sm permit_permit_end_date">
<input type="text" class="form-control form-control-sm date-mask" name="rdi_permit_end_date" id="rdi_permit_end_date" autocomplete="off"/> <input type="text" class="form-control form-control-sm date-mask" name="permit_permit_end_date" id="permit_permit_end_date" autocomplete="off"/>
<button class="btn btn-sm btn-outline-primary btnPermitEndDateCalendar" type="button" data-bs-toggle="tooltip" data-bs-title="Calendar" data-bs-custom-class="custom-tooltip" tabindex="-1"> <button class="btn btn-sm btn-outline-primary btnPermitEndDateCalendar" type="button" data-bs-toggle="tooltip" data-bs-title="Calendar" data-bs-custom-class="custom-tooltip" tabindex="-1">
<i class="bi bi-calendar3"/> <i class="bi bi-calendar3"/>
</button> </button>
@@ -148,7 +148,7 @@
<xsl:choose> <xsl:choose>
<xsl:when test="count(//rdis/record) > 0"> <xsl:when test="count(//permits/record) > 0">
<div class="card mt-3"> <div class="card mt-3">
@@ -183,7 +183,7 @@
<div class="input-group-text"> <div class="input-group-text">
<i class="bi bi-list-ol"/> <i class="bi bi-list-ol"/>
</div> </div>
<select class="form-select" name="rdis_per_page" id="rdis_per_page"> <select class="form-select" name="permits_per_page" id="permits_per_page">
<option value="20">20</option> <option value="20">20</option>
<option value="40">40</option> <option value="40">40</option>
<option value="60">60</option> <option value="60">60</option>
@@ -199,7 +199,7 @@
<div class="buttons mt-1 mb-1"> <div class="buttons mt-1 mb-1">
<xsl:if test="count(//rdis/record) > 0"> <xsl:if test="count(//permits/record) > 0">
<button type="button" class="btn btn-sm btn-primary me-2 mb-2 btnSelectAll"> <button type="button" class="btn btn-sm btn-primary me-2 mb-2 btnSelectAll">
<i class="bi bi-check2-square me-2"/>Select All</button> <i class="bi bi-check2-square me-2"/>Select All</button>
</xsl:if> </xsl:if>
@@ -268,7 +268,7 @@
<xsl:choose> <xsl:choose>
<xsl:when test="count(//rdis/record) = 0"> <xsl:when test="count(//permits/record) = 0">
@@ -282,19 +282,19 @@
<div class="table-responsive scrollable"> <div class="table-responsive scrollable">
<table class="table table-sm table-striped table-hover base-table" id="rdis-table"> <table class="table table-sm table-striped table-hover base-table" id="permits-table">
<thead class="sticky-header" data-theme="{$THEME}"> <thead class="sticky-header" data-theme="{$THEME}">
<th class="text-center">Select</th> <th class="text-center">Select</th>
<th class="sortable text-nowrap" data-order-by="rdi_county" >County</th> <th class="sortable text-nowrap" data-order-by="permit_county" >County</th>
<th class="sortable text-nowrap" data-order-by="rdi_sub_div_name">Subdivison/Project Name</th> <th class="sortable text-nowrap" data-order-by="permit_sub_div_name">Subdivison/Project Name</th>
<th class="sortable text-nowrap" data-order-by="rdi_project_addr">Address</th> <th class="sortable text-nowrap" data-order-by="permit_project_addr">Address</th>
<th class="text-nowrap" data-order-by="rdi_project_city">City</th> <th class="text-nowrap" data-order-by="permit_project_city">City</th>
<th class="text-nowrap" data-order-by="rdi_state" >State</th> <th class="text-nowrap" data-order-by="permit_state" >State</th>
<th class="text-nowrap" data-order-by="rdi_zip" >Zip</th> <th class="text-nowrap" data-order-by="permit_zip" >Zip</th>
<th class="text-nowrap" >Builder</th> <th class="text-nowrap" >Builder</th>
<th class="sortable text-nowrap" data-order-by="rdi_permit_date" >Permit Date</th> <th class="sortable text-nowrap" data-order-by="permit_permit_date" >Permit Date</th>
<th class="text-nowrap" >Sq. Ft. </th> <th class="text-nowrap" >Sq. Ft. </th>
<th class="text-nowrap" >Value</th> <th class="text-nowrap" >Value</th>
@@ -302,7 +302,7 @@
<tbody> <tbody>
<xsl:apply-templates select="//rdis"/> <xsl:apply-templates select="//permits"/>
</tbody> </tbody>
@@ -382,54 +382,54 @@
<!-- Template for RDI rows --> <!-- Template for RDI rows -->
<xsl:template match="rdis/record"> <xsl:template match="permits/record">
<tr class="hoverable rdi-row text-nowrap" data-rdi-serial="{rdi_serial}"> <tr class="hoverable permit-row text-nowrap" data-permit-serial="{permit_serial}">
<td class="checkbox text-center selection-checkboxes selection-area"> <td class="checkbox text-center selection-checkboxes selection-area">
<input type="checkbox" class="selection-checkbox selection-area" name="selected[]" value="{rdi_serial}"> <input type="checkbox" class="selection-checkbox selection-area" name="selected[]" value="{permit_serial}">
</input> </input>
<span class="selection-area user-select-none">&#160;</span> <span class="selection-area user-select-none">&#160;</span>
</td> </td>
<td class="rdi_county filterable"> <td class="permit_county filterable">
<xsl:value-of select="rdi_county_name_verbose"/> <xsl:value-of select="permit_county_name_verbose"/>
</td> </td>
<td class="rdi_sub_div_name text-nowrap filterable"> <td class="permit_sub_div_name text-nowrap filterable">
<xsl:value-of select="rdi_sub_div_name"/> <xsl:value-of select="permit_sub_div_name"/>
</td> </td>
<td class="rdi_address text-nowrap filterable"> <td class="permit_address text-nowrap filterable">
<xsl:value-of select="rdi_project_addr"/> <xsl:value-of select="permit_project_addr"/>
</td> </td>
<td class="rdi_address text-nowrap"> <td class="permit_address text-nowrap">
<xsl:value-of select="rdi_project_city"/> <xsl:value-of select="permit_project_city"/>
</td> </td>
<td class="rdi_address text-nowrap"> <td class="permit_address text-nowrap">
<xsl:value-of select="rdi_state"/> <xsl:value-of select="permit_state"/>
</td> </td>
<td class="rdi_address text-nowrap"> <td class="permit_address text-nowrap">
<xsl:value-of select="rdi_zip"/> <xsl:value-of select="permit_zip"/>
</td> </td>
<td class="rdi_company filterable"> <td class="permit_company filterable">
<xsl:value-of select="rdi_company"/> <xsl:value-of select="permit_company"/>
</td> </td>
<td class="rdi_permit_date filterable"> <td class="permit_permit_date filterable">
<xsl:value-of select="rdi_permit_date_verbose"/> <xsl:value-of select="permit_permit_date_verbose"/>
</td> </td>
<td class="rdi_value filterable"> <td class="permit_value filterable">
<xsl:value-of select="rdi_size_verbose"/> <xsl:value-of select="permit_size_verbose"/>
</td> </td>
<td class="rdi_value filterable"> <td class="permit_value filterable">
<xsl:value-of select="rdi_value_verbose"/> <xsl:value-of select="permit_value_verbose"/>
</td> </td>
</tr> </tr>
@@ -443,9 +443,9 @@
<option value="{county_serial}" data-tokens="{county_serial}"> <option value="{county_serial}" data-tokens="{county_serial}">
<!-- <xsl:if test="//searchhistory/record/searchhistory_parameters/permitfact_county/id = subscriptioncounty_county"> <xsl:if test="//searchhistory/record/searchhistory_parameters/permit_county/id = county_serial">
<xsl:attribute name="selected">selected</xsl:attribute> <xsl:attribute name="selected">selected</xsl:attribute>
</xsl:if>--> </xsl:if>
<xsl:value-of select="county_name"/> <xsl:value-of select="county_name"/>
</option> </option>