import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types.js' import type { LOS } from '../../types/globalTypes.js' import type { MapRecord } from '../../types/recordTypes.js' declare const cityssm: cityssmGlobal declare const exports: Record ;(() => { const los = exports.los as LOS const maps = exports.maps as MapRecord[] const searchFilterElement = document.querySelector( '#searchFilter--map' ) as HTMLInputElement const searchResultsContainerElement = document.querySelector( '#container--searchResults' ) as HTMLElement function renderResults(): void { // eslint-disable-next-line no-unsanitized/property searchResultsContainerElement.innerHTML = los.getLoadingParagraphHTML( `Loading ${los.escapedAliases.Maps}...` ) let searchResultCount = 0 const searchResultsTbodyElement = document.createElement('tbody') const filterStringSplit = searchFilterElement.value .trim() .toLowerCase() .split(' ') for (const map of maps) { const mapSearchString = `${map.mapName ?? ''} ${ map.mapDescription ?? '' } ${map.mapAddress1 ?? ''} ${map.mapAddress2 ?? ''}`.toLowerCase() let showMap = true for (const filterStringPiece of filterStringSplit) { if (!mapSearchString.includes(filterStringPiece)) { showMap = false break } } if (!showMap) { continue } searchResultCount += 1 // eslint-disable-next-line no-unsanitized/method searchResultsTbodyElement.insertAdjacentHTML( 'beforeend', ` ${cityssm.escapeHTML( (map.mapName ?? '') === '' ? '(No Name)' : map.mapName ?? '' )}
${cityssm.escapeHTML(map.mapDescription ?? '')} ${ (map.mapAddress1 ?? '') === '' ? '' : `${cityssm.escapeHTML(map.mapAddress1 ?? '')}
` } ${ (map.mapAddress2 ?? '') === '' ? '' : `${cityssm.escapeHTML(map.mapAddress2 ?? '')}
` } ${ map.mapCity || map.mapProvince ? `${cityssm.escapeHTML(map.mapCity ?? '')}, ${cityssm.escapeHTML(map.mapProvince ?? '')}
` : '' } ${ (map.mapPostalCode ?? '') === '' ? '' : cityssm.escapeHTML(map.mapPostalCode ?? '') } ${cityssm.escapeHTML(map.mapPhoneNumber ?? '')} ${ map.mapLatitude && map.mapLongitude ? ` ` : '' } ${ (map.mapSVG ?? '') === '' ? '' : '' } ${map.lotCount} ` ) } searchResultsContainerElement.innerHTML = '' if (searchResultCount === 0) { // eslint-disable-next-line no-unsanitized/property searchResultsContainerElement.innerHTML = `

There are no ${los.escapedAliases.maps} that meet the search criteria.

` } else { const searchResultsTableElement = document.createElement('table') searchResultsTableElement.className = 'table is-fullwidth is-striped is-hoverable has-sticky-header' // eslint-disable-next-line no-unsanitized/property searchResultsTableElement.innerHTML = ` ${los.escapedAliases.Map} Address Phone Number Coordinates Image ${los.escapedAliases.Lot} Count ` searchResultsTableElement.append(searchResultsTbodyElement) searchResultsContainerElement.append(searchResultsTableElement) } } searchFilterElement.addEventListener('keyup', renderResults) document .querySelector('#form--searchFilters') ?.addEventListener('submit', (formEvent) => { formEvent.preventDefault() renderResults() }) renderResults() })()