Files
realestatedatainc/xsl/searchBusinessFacts.xsl

629 lines
36 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" encoding="utf-8" indent="yes"/>
<!-- Parameters -->
<xsl:param name="VERSION">2.0</xsl:param>
<xsl:param name="PAGE-TITLE">Search Business Facts</xsl:param>
<xsl:param name="PAGE-NAME">searchBusinessFacts</xsl:param>
<!-- Variables -->
<xsl:variable name="PAGINATION_COUNT" select="//businessfacts/@count"/>
<xsl:variable name="PAGINATION_START" select="//businessfacts/@start"/>
<xsl:variable name="PAGINATION_END" select="//businessfacts/@end"/>
<xsl:variable name="PAGINATION_PAGE" select="//businessfacts/@page"/>
<xsl:template match="/">
<script src="js/{$PAGE-NAME}.js?version={$VERSION}"/>
<div class="{$PAGE-NAME}">
<div class="card">
<div class="card-header bg-primary text-white p-1 ps-3 d-flex align-items-center">
<i class="bi bi-search me-2"/>
<xsl:value-of select="$PAGE-TITLE"/>
|
<xsl:value-of select="//subscriptions/record/subscription_full_title"/>
<span class="ms-auto">
Available Records: <xsl:value-of select="format-number(//userstotalavailablerecords/record/count, '#,##0')" />
</span>
</div>
<div class="card-body">
<form action="" name="{$PAGE-NAME}" method="post" id="{$PAGE-NAME}">
<input type="hidden" name="action" value="BusinessFacts.searchBusinessFacts"/>
<input type="hidden" name="subscription_serial" value="{//subscriptions/record/subscription_serial}"/>
<div class="row">
<div class="col-lg-4 mb-3">
<label class="form-label" for="businessfact_company">Company</label>
<input type="text" class="form-control form-control-sm" name="businessfact_company" id="businessfact_company" maxlength="100" autocomplete="off" autofocus="autofocus"
value="{//searchhistory/record/searchhistory_parameters/businessfact_company}"/>
</div>
<div class="col-lg-3 mb-3">
<label class="form-label" for="businessfact_zip">Zip Code</label>
<input type="text" class="form-control form-control-sm zip-mask" name="businessfact_zip" id="businessfact_zip" maxlength="20"
value="{//searchhistory/record/searchhistory_parameters/businessfact_zip}"/>
</div>
</div>
<div class="row">
<div class="col-lg-4 mb-3">
<label class="form-label" for="businessfact_city">City</label>
<select class="form-control form-control-sm multiple-dropdown" multiple="multiple" name="businessfact_city[]" id="businessfact_city" size="1">
<xsl:apply-templates select="//subscriptioncities"/>
</select>
</div>
<div class="col-lg-4 mb-3">
<label class="form-label" for="businessfact_county">County</label>
<select class="form-control form-control-sm multiple-dropdown" multiple="multiple" name="businessfact_county[]" id="businessfact_county" size="1">
<xsl:apply-templates select="//subscriptioncounties"/>
</select>
</div>
<div class="col-lg-4 mb-3">
<label class="form-label" for="businessfact_business_class">Business Classification</label>
<select class="form-control form-control-sm multiple-dropdown" multiple="multiple" name="businessfact_business_class[]" id="businessfact_business_class" size="1">
<xsl:call-template name="dropdowns">
<xsl:with-param name="dropdown-name" select="'business_classifications'"/>
<xsl:with-param name="selected-path" select="'businessfact_business_class'"/>
</xsl:call-template>
</select>
</div>
</div>
<div class="row">
<div class="col-lg-4 mb-3">
<label class="form-label" for="businessfact_action">Action</label>
<select class="form-control form-control-sm multiple-dropdown" multiple="multiple" name="businessfact_action[]" id="businessfact_action" size="1">
<xsl:call-template name="dropdowns">
<xsl:with-param name="dropdown-name" select="'actions'"/>
<xsl:with-param name="selected-path" select="'businessfact_action'"/>
</xsl:call-template>
</select>
</div>
<div class="col-lg-4 mb-3">
<label class="form-label" for="businessfact_sic_code">SIC Codes</label>
<select class="form-control form-control-sm multiple-dropdown" multiple="multiple" name="businessfact_sic_code[]" id="businessfact_sic_code" size="1">
<xsl:apply-templates select="//siccodes"/>
</select>
</div>
<div class="col-lg-4 mb-3">
<label class="form-label" for="businessfact_home_based_business">Home Based Business</label>
<select class="form-control form-control-sm" name="businessfact_home_based_business" id="businessfact_home_based_business" size="1">
<option value="">Choose..</option>
<option value="Y">
<xsl:if test="//searchhistory/record/searchhistory_parameters/businessfact_home_based_business = 'Y'">
<xsl:attribute name="selected">selected</xsl:attribute>
</xsl:if>Yes</option>
<option value="N">
<xsl:if test="//searchhistory/record/searchhistory_parameters/businessfact_home_based_business = 'N'">
<xsl:attribute name="selected">selected</xsl:attribute>
</xsl:if>No</option>
</select>
</div>
</div>
<div class="row">
<div class="col-md-6 mb-3">
<label class="form-label">Employee Count</label>
<div class="input-group input-group-sm">
<span class="input-group-text">From: </span>
<input type="text" class="form-control form-control-sm me-2 numeric-mask" name="businessfact_employee_count_from" id="businessfact_employee_count_from" maxlength="7"
value="{//searchhistory/record/searchhistory_parameters/businessfact_employee_count_from}"/>
<span class="input-group-text">To: </span>
<input type="text" class="form-control form-control-sm numeric-mask" name="businessfact_employee_count_to" id="businessfact_employee_count_to" maxlength="7"
value="{//searchhistory/record/searchhistory_parameters/businessfact_employee_count_to}"/>
</div>
</div>
<div class="col-md-6 mb-3">
<label class="form-label">Entry Date Range</label>
<div class="input-group input-group-sm entry_date">
<span class="input-group-text">From:</span>
<input type="text" class="form-control form-control-sm date-mask" name="businessfact_entry_date_from" id="businessfact_entry_date_from" autocomplete="off" maxlength="10"
value="{//searchhistory/record/searchhistory_parameters/businessfact_entry_date_from}"/>
<button class="btn btn-outline-primary btnEntryDateFromCalendar" type="button" data-target="#businessfact_entry_date_from" data-bs-toggle="tooltip" data-bs-title="Calendar" tabindex="-1">
<i class="bi bi-calendar3"></i>
</button>
<span class="input-group-text ms-2">To:</span>
<input type="text" class="form-control form-control-sm date-mask" name="businessfact_entry_date_to" id="businessfact_entry_date_to" autocomplete="off" maxlength="10"
value="{//searchhistory/record/searchhistory_parameters/businessfact_entry_date_to}"/>
<button class="btn btn-outline-primary btnEntryDateToCalendar" type="button" data-target="#businessfact_entry_date_to" data-bs-toggle="tooltip" data-bs-title="Calendar" tabindex="-1">
<i class="bi bi-calendar3"></i>
</button>
</div>
</div>
</div>
<xsl:if test="//subscriptions/record/subscription_serial = 10">
<div class="row">
<div class="col-md-6 mb-3">
<label class="form-label">Lease End - Date Range</label>
<div class="input-group input-group-sm lease-end-date">
<span class="input-group-text">From:</span>
<input type="text" class="form-control form-control-sm date-mask" name="businessfact_lease_end_from" id="businessfact_lease_end_from" autocomplete="off" maxlength="10"
value="{//searchhistory/record/searchhistory_parameters/businessfact_lease_end_from}"/>
<button class="btn btn-outline-primary btnLeaseEndDateFromCalendar" type="button" data-target="#businessfact_lease_end_from" data-bs-toggle="tooltip" data-bs-title="Calendar" tabindex="-1">
<i class="bi bi-calendar3"></i>
</button>
<span class="input-group-text ms-2">To:</span>
<input type="text" class="form-control form-control-sm date-mask" name="businessfact_lease_end_to" id="businessfact_lease_end_to" autocomplete="off" maxlength="10"
value="{//searchhistory/record/searchhistory_parameters/businessfact_lease_end_to}"/>
<button class="btn btn-outline-primary btnLeaseEndDateToCalendar" type="button" data-target="#businessfact_lease_end_to" data-bs-toggle="tooltip" data-bs-title="Calendar" tabindex="-1">
<i class="bi bi-calendar3"></i>
</button>
</div>
</div>
</div>
</xsl:if>
</form>
<div class="buttons mt-1 mb-2">
<button type="button" class="btn btn-sm btn-primary me-2 btnHome">
<i class="bi bi-house me-2"/>Return to Subscriptions Page</button>
<button type="button" class="btn btn-sm btn-primary me-2 btnSearch">
<i class="bi bi-search me-2"/>Search</button>
<button type="button" class="btn btn-sm btn-primary me-2 btnReset">
<i class="bi bi-arrow-clockwise me-2"/>Reset Search</button>
</div>
</div>
</div> <!-- Search Card -->
<!-- Results Card -->
<div class="card mt-4">
<div class="card-header bg-primary text-white p-1 ps-3 d-flex align-items-center">
<i class="bi bi-card-list me-2"/>
Results
<span class="ms-auto">
<xsl:if test="$PAGINATION_COUNT > 0">
<xsl:text> Showing </xsl:text>
<xsl:value-of select="format-number($PAGINATION_START, '###,##0')"/>
<xsl:text> to </xsl:text>
<xsl:value-of select="format-number($PAGINATION_END, '###,##0')"/>
<xsl:text> of </xsl:text>
<xsl:value-of select="format-number($PAGINATION_COUNT, '###,##0')"/>
Records
</xsl:if>
</span>
</div>
<div class="card-body">
<xsl:if test="number(//businessfacts/@count) > 0">
<div class="row align-items-center mt-2 mb-3">
<div class="col-lg-4">
<div class="input-group input-group-sm">
<input type="text" class="form-control autosave" name="filter" id="filter" maxlength="100" autocomplete="off" placeholder="{//popovers/record[popover_name = 'filter_businessfacts']/popover_placeholder}"/>
<button type="button" class="btn btn-primary fw-bold btnClearFilter" data-bs-toggle="tooltip" data-bs-title="Clear Filter" data-bs-custom-class="custom-tooltip">
<i class="bi bi-arrow-clockwise"/>
</button>
</div>
</div>
<div class="col-auto">
<div class="input-group input-group-sm" data-bs-toggle="tooltip" data-bs-title="Show Per Page" data-bs-custom-class="custom-tooltip">
<div class="input-group-text">
<i class="bi bi-list-ol"/>
</div>
<select class="form-select autosave" name="businessfacts_per_page" id="businessfacts_per_page">
<option value="20">20</option>
<option value="40">40</option>
<option value="60">60</option>
<option value="80">80</option>
<option value="100">100</option>
</select>
</div>
</div>
</div>
<div class="buttons mt-1 mb-2 print_page_buttons">
<div class="btn-group">
<button type="button" class="btn btn-sm btn-primary me-2 dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
<i class="bi bi-printer me-2"/>Print
</button>
<ul class="dropdown-menu">
<li>
<button class="dropdown-item btnPrintSearchResultsPDF" data-bs-toggle="tooltip" data-bs-title="{//popovers/record[popover_name = 'print_search_results']/popover_text}"
data-bs-html="true" data-bs-custom-class="custom-tooltip">
<!-- <xsl:if test="$PAGINATION_COUNT > 2500">
<xsl:attribute name="disabled">disabled</xsl:attribute>
</xsl:if>-->
<!--<i class="bi bi-filetype-pdf text-danger me-2"/>Search Results - PDF</button>-->
<i class="bi bi-filetype-pdf text-danger me-2"/>PDF</button>
</li>
<li>
<button class="dropdown-item" onclick="window.print()">
<i class="bi bi-display me-2"/>Screen</button>
</li>
<!-- <div class="dropdown-divider mt-1 mb-1"/>
<button class="dropdown-item btnPrintAllRecordsPDF" data-bs-toggle="tooltip" data-bs-title="{//popovers/record[popover_name = 'print_all_records_pdf']/popover_text}"
data-bs-html="true" data-bs-custom-class="custom-tooltip">
<i class="bi bi-filetype-pdf text-danger me-2"/>All Records - PDF</button>-->
</ul>
</div>
<div class="btn-group">
<button type="button" class="btn btn-sm btn-primary me-2 dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
<i class="bi bi-download me-2"/>Export
</button>
<ul class="dropdown-menu">
<li>
<button class="dropdown-item btnExportCSV" data-bs-toggle="tooltip" data-bs-title="{//popovers/record[popover_name = 'export_search_results_csv']/popover_text}"
data-bs-html="true" data-bs-custom-class="custom-tooltip">
<!-- <xsl:if test="$PAGINATION_COUNT > 2500">
<xsl:attribute name="disabled">disabled</xsl:attribute>
</xsl:if> -->
<!--<i class="bi bi-filetype-csv me-2 text-info"/> Searched Results - CSV</button>-->
<i class="bi bi-filetype-csv me-2 text-info"/>CSV</button>
</li>
<li>
<button class="dropdown-item btnExportExcel" data-bs-toggle="tooltip" data-bs-title="{//popovers/record[popover_name = 'export_search_results_excel']/popover_text}"
data-bs-html="true" data-bs-custom-class="custom-tooltip">
<!-- <xsl:if test="$PAGINATION_COUNT > 2500">
<xsl:attribute name="disabled">disabled</xsl:attribute>
</xsl:if>-->
<!--<i class="bi bi-filetype-xlsx me-2 text-success"/>Searched Results - Excel</button>-->
<i class="bi bi-filetype-xlsx me-2 text-success"/>Excel</button>
</li>
<!-- <div class="dropdown-divider mt-1 mb-1"/>
<button class="dropdown-item btnExportAllRecordsCSV" data-bs-toggle="tooltip" data-bs-title="{//popovers/record[popover_name = 'export_all_records_csv']/popover_text}"
data-bs-html="true" data-bs-custom-class="custom-tooltip">
<i class="bi bi-filetype-csv me-2 text-info"/> All Records - CSV</button>
<button class="dropdown-item btnExportAllRecordsExcel" data-bs-toggle="tooltip" data-bs-title="{//popovers/record[popover_name = 'export_all_records_excel']/popover_text}"
data-bs-html="true" data-bs-custom-class="custom-tooltip">
<i class="bi bi-filetype-xlsx me-2 text-success"/>All Records - Excel</button>-->
</ul>
</div>
<div class="btn-group ms-2" role="group">
<xsl:if test="$PAGINATION_PAGE > 1">
<button type="button" class="btn btn-sm btn-primary btnPagination" data-pagination="first" data-bs-toggle="tooltip" data-bs-title="First Page" data-bs-custom-class="custom-tooltip">
<i class="bi bi-chevron-bar-left me-1"/>First</button>
<button type="button" class="btn btn-sm btn-primary btnPagination" data-pagination="previous" data-bs-toggle="tooltip" data-bs-title="Previous Page" data-bs-custom-class="custom-tooltip">
<i class="bi bi-chevron-left me-1"/>Previous</button>
</xsl:if>
<xsl:if test="$PAGINATION_COUNT > $PAGINATION_END">
<button type="button" class="btn btn-sm btn-primary btnPagination" data-pagination="next" data-bs-toggle="tooltip" data-bs-title="Next Page" data-bs-custom-class="custom-tooltip">
<i class="bi bi-chevron-right me-1"/>Next</button>
<button type="button" class="btn btn-sm btn-primary btnPagination" data-pagination="last" data-bs-toggle="tooltip" data-bs-title="Last Page" data-bs-custom-class="custom-tooltip">
<i class="bi bi-chevron-bar-right me-1"/>Last</button>
</xsl:if>
</div>
</div>
<hr class="mt-3 mb-2"/>
</xsl:if>
<xsl:choose>
<xsl:when test="number(//businessfacts/@count) = 0">
<div class="fs-5 text-danger fw-bold fst-italic mb-1">
<xsl:text>There are no Business Facts to view...</xsl:text>
</div>
</xsl:when>
<xsl:otherwise>
<div class="scrollable-40">
<div class="fs-5 text-danger fw-bold fst-italic mt-2 mb-1 filter-error d-none">
<xsl:text>There are no Business Facts to view...</xsl:text>
</div>
<xsl:apply-templates select="//businessfacts"/>
</div>
</xsl:otherwise>
</xsl:choose>
</div>
</div>
</div>
</xsl:template>
<!-- Template for Dropdowns -->
<xsl:template name="dropdowns">
<xsl:param name="dropdown-name"/>
<!-- the node name inside searchhistory_parameters that holds <id> list -->
<xsl:param name="selected-path"/>
<!-- Grab the selected ids once -->
<xsl:variable name="selectedIds" select="/XML/searchhistory/record/searchhistory_parameters/*[name()=$selected-path]/id"/>
<xsl:choose>
<xsl:when test="//subscriptions/record/subscription_serial = 10">
<!--<xsl:for-each select="/XML/dropdowns/record[dropdowntype_name = $dropdown-name]">-->
<xsl:for-each select="/XML/dropdowns/record[dropdowntype_name = $dropdown-name]">
<option value="{dropdown_serial}" data-tokens="{dropdown_value}">
<xsl:if test="$selectedIds = dropdown_serial">
<xsl:attribute name="selected">selected</xsl:attribute>
</xsl:if>
<xsl:value-of select="dropdown_value"/>
</option>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:for-each select="/XML/dropdowns/record[dropdowntype_name = $dropdown-name and not(contains(translate(dropdown_value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'),'lease ending'))]">
<option value="{dropdown_serial}" data-tokens="{dropdown_value}">
<xsl:if test="$selectedIds = dropdown_serial">
<xsl:attribute name="selected">selected</xsl:attribute>
</xsl:if>
<xsl:value-of select="dropdown_value"/>
</option>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- Template for Cities dropdown -->
<xsl:template match="subscriptioncities">
<xsl:for-each select="record">
<option value="{subscriptioncity_city}" data-tokens="{subscriptioncities_city_name_verbose}">
<xsl:if test="//searchhistory/record/searchhistory_parameters/businessfact_city/id = subscriptioncity_city">
<xsl:attribute name="selected">selected</xsl:attribute>
</xsl:if>
<xsl:value-of select="subscriptioncities_city_name_verbose" />
</option>
</xsl:for-each>
</xsl:template>
<!-- Template for Counties dropdown -->
<xsl:template match="subscriptioncounties">
<xsl:for-each select="record">
<option value="{subscriptioncounty_county}" data-tokens="{subscriptioncounty_county}">
<xsl:if test="//searchhistory/record/searchhistory_parameters/businessfact_county/id = subscriptioncounty_county">
<xsl:attribute name="selected">selected</xsl:attribute>
</xsl:if>
<xsl:value-of select="subscriptioncounties_county_name_verbose" />
</option>
</xsl:for-each>
</xsl:template>
<!-- Template for SIC Codes dropdown -->
<xsl:template match="siccodes">
<xsl:for-each select="record">
<option value="{siccode_code}" data-tokens="{siccode_code}">
<xsl:if test="//searchhistory/record/searchhistory_parameters/businessfact_sic_code/id = siccode_code">
<xsl:attribute name="selected">selected</xsl:attribute>
</xsl:if>
<xsl:value-of select="concat(siccode_code, ' - ', siccode_description)" />
</option>
</xsl:for-each>
</xsl:template>
<!-- Template for Business Fact Cards -->
<xsl:template match="//businessfacts/record">
<div class="card mt-3 businessfact-card filterable">
<!-- Header -->
<div class="card-header bg-primary text-white d-flex align-items-start justify-content-between">
<div>
<div class="fw-semibold">
Company Name:
<xsl:value-of select="businessfact_company"/>
</div>
<div class="small">
<xsl:value-of select="businessfact_address_one"/>
<xsl:text>, </xsl:text>
<xsl:value-of select="businessfact_city_verbose"/>
<xsl:text>, </xsl:text>
<xsl:value-of select="businessfact_state"/>
<xsl:text></xsl:text>
<xsl:value-of select="businessfact_county_name_verbose"/>
</div>
</div>
<!-- far-right number -->
<div class="text-end ms-3">
<div class="small">Record #</div>
<div class="fw-bold">
<xsl:value-of select="businessfact_legacy_id"/>
</div>
</div>
</div>
<!-- Body -->
<div class="card-body">
<div class="row g-3">
<div class="col-md-3">
<div class="text-muted small">Contact Name:</div>
<div class="fw-semibold">
<xsl:value-of select="businessfact_contact_name"/>
</div>
</div>
<div class="col-md-3">
<div class="text-muted small">Title:</div>
<div class="fw-semibold">
<xsl:value-of select="businessfact_contact_title"/>
</div>
</div>
<div class="col-md-3">
<div class="text-muted small">Phone Number:</div>
<div class="fw-semibold">
<xsl:value-of select="concat('(', substring(businessfact_phone, 1, 3), ') ', substring(businessfact_phone, 4, 3), '-', substring(businessfact_phone, 7, 4))"/>
</div>
</div>
<div class="col-md-3">
<div class="text-muted small">Email Address:</div>
<div class="fw-semibold">
<xsl:choose>
<xsl:when test="normalize-space(businessfact_email_address) != ''">
<xsl:value-of select="businessfact_email_address"/>
</xsl:when>
<xsl:otherwise>N/A</xsl:otherwise>
</xsl:choose>
</div>
</div>
<div class="col-md-3">
<div class="text-muted small">SIC Code:</div>
<div class="fw-semibold">
<xsl:value-of select="concat(businessfact_sic_code, '-', businessfact_siccode_description_verbose)"/>
</div>
</div>
<div class="col-md-3">
<div class="text-muted small">Employee Count (ES):</div>
<div class="fw-semibold">
<xsl:value-of select="businessfact_employee_count"/>
</div>
</div>
<div class="col-md-3">
<div class="text-muted small">Home Based Business (HBB):</div>
<div class="fw-semibold">
<xsl:choose>
<xsl:when test="businessfact_home_based_business = 'Y'">Yes</xsl:when>
<xsl:otherwise>No</xsl:otherwise>
</xsl:choose>
</div>
</div>
<div class="col-md-3">
<div class="text-muted small">Year Established:</div>
<div class="fw-semibold">
<xsl:value-of select="businessfact_year_established"/>
</div>
</div>
<div class="col-md-3">
<div class="text-muted small">Business Class:</div>
<div class="fw-semibold">
<xsl:value-of select="businessfact_business_class_verbose"/>
</div>
</div>
<div class="col-md-3">
<div class="text-muted small">Action:</div>
<div class="fw-semibold">
<xsl:value-of select="businessfact_action_verbose"/>
</div>
</div>
<div class="col-md-3">
<div class="text-muted small">Entry Date:</div>
<div class="fw-semibold">
<xsl:value-of select="businessfact_entry_date_verbose"/>
</div>
</div>
</div>
<div class="row mt-3">
<div class="col-md-3">
<div class="text-muted small">Square Footage:</div>
<div class="fw-semibold">
<xsl:choose>
<xsl:when test="normalize-space(businessfact_square_feet) != ''">
<xsl:value-of select="businessfact_square_feet"/>
</xsl:when>
<xsl:otherwise>N/A</xsl:otherwise>
</xsl:choose>
</div>
</div>
<xsl:if test="//subscriptions/record/subscription_serial = 10">
<div class="col-md-3">
<div class="text-muted small">Lease Ending</div>
<div class="fw-semibold">
<xsl:choose>
<xsl:when test="businessfact_source_lease_ending = 0">NO</xsl:when>
<xsl:otherwise>Yes</xsl:otherwise>
</xsl:choose>
</div>
</div>
<div class="col-md-3">
<div class="text-muted small">Lease End:</div>
<div class="fw-semibold">
<xsl:choose>
<xsl:when test="normalize-space(businessfact_lease_end) != ''">
<xsl:value-of select="businessfact_lease_end_verbose"/>
</xsl:when>
<xsl:otherwise>N/A</xsl:otherwise>
</xsl:choose>
</div>
</div>
</xsl:if>
</div>
</div>
</div>
</xsl:template>
</xsl:stylesheet>