import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types.js' import type { FuneralHome } from '../../types/record.types.js' import type { Sunrise } from './types.js' declare const cityssm: cityssmGlobal declare const exports: Record ;(() => { const sunrise = exports.sunrise as Sunrise const funeralHomes = exports.funeralHomes as FuneralHome[] const searchFilterElement = document.querySelector( '#searchFilter--funeralHome' ) as HTMLInputElement const searchResultsContainerElement = document.querySelector( '#container--searchResults' ) as HTMLElement // eslint-disable-next-line complexity function renderResults(): void { // eslint-disable-next-line no-unsanitized/property searchResultsContainerElement.innerHTML = sunrise.getLoadingParagraphHTML( "Loading Funeral Homes..." ) let searchResultCount = 0 const searchResultsTbodyElement = document.createElement('tbody') const filterStringSplit = searchFilterElement.value .trim() .toLowerCase() .split(' ') for (const funeralHome of funeralHomes) { const searchString = `${funeralHome.funeralHomeName ?? ''} ${funeralHome.funeralHomeAddress1 ?? ''} ${funeralHome.funeralHomeAddress2 ?? ''}`.toLowerCase() let showRecord = true for (const filterStringPiece of filterStringSplit) { if (!searchString.includes(filterStringPiece)) { showRecord = false break } } if (!showRecord) { continue } searchResultCount += 1 // eslint-disable-next-line no-unsanitized/method searchResultsTbodyElement.insertAdjacentHTML( 'beforeend', ` ${cityssm.escapeHTML( (funeralHome.funeralHomeName ?? '') === '' ? '(No Name)' : funeralHome.funeralHomeName ?? '' )} ${ (funeralHome.funeralHomeAddress1 ?? '') === '' ? '' : `${cityssm.escapeHTML(funeralHome.funeralHomeAddress1 ?? '')}
` } ${ (funeralHome.funeralHomeAddress2 ?? '') === '' ? '' : `${cityssm.escapeHTML(funeralHome.funeralHomeAddress2 ?? '')}
` } ${ funeralHome.funeralHomeCity || funeralHome.funeralHomeProvince ? `${cityssm.escapeHTML(funeralHome.funeralHomeCity ?? '')}, ${cityssm.escapeHTML(funeralHome.funeralHomeProvince ?? '')}
` : '' } ${ (funeralHome.funeralHomePostalCode ?? '') === '' ? '' : cityssm.escapeHTML(funeralHome.funeralHomePostalCode ?? '') } ${cityssm.escapeHTML(funeralHome.funeralHomePhoneNumber ?? '')} ` ) } searchResultsContainerElement.innerHTML = '' if (searchResultCount === 0) { searchResultsContainerElement.innerHTML = `

There are no funeral homes that meet the search criteria.

` } else { const searchResultsTableElement = document.createElement('table') searchResultsTableElement.className = 'table is-fullwidth is-striped is-hoverable has-sticky-header' searchResultsTableElement.innerHTML = ` Funeral Home Address Phone Number ` searchResultsTableElement.append(searchResultsTbodyElement) searchResultsContainerElement.append(searchResultsTableElement) } } searchFilterElement.addEventListener('keyup', renderResults) document .querySelector('#form--searchFilters') ?.addEventListener('submit', (formEvent) => { formEvent.preventDefault() renderResults() }) renderResults() })()