From fa8d5e9507262dcc660e3b71825166c3882f0ece Mon Sep 17 00:00:00 2001 From: Tim Dalton Date: Thu, 15 Jan 2026 07:52:27 -0600 Subject: [PATCH 1/5] LIB-62 Modify Address Display On The Map (Search Bar) ,, , , I made it so that incorporated areas that don't have a city will list the county instead. Signed-off-by: Tim Dalton --- .../src/lib/components/MapGeosearch.svelte | 44 ++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/frontend/src/lib/components/MapGeosearch.svelte b/frontend/src/lib/components/MapGeosearch.svelte index 387c7203..3d650bbe 100644 --- a/frontend/src/lib/components/MapGeosearch.svelte +++ b/frontend/src/lib/components/MapGeosearch.svelte @@ -26,17 +26,59 @@ import { GeoSearchControl, OpenStreetMapProvider } from 'leaflet-geosearch'; import { createEventDispatcher, getContext, onDestroy, onMount } from 'svelte'; import L from 'leaflet'; + import type { SearchResult } from '../../node_modules/leaflet-geosearch/dist/providers/provider'; + + interface NominatimAddress { + house_number?: string; + road?: string; + city?: string; + town?: string; + village?: string; + hamlet?: string; + county?: string; + state?: string; + postcode?: string; + } + + interface NominatimRaw { + address?: NominatimAddress; + class?: string; + type?: string; + } + + function formatAddress(result: SearchResult): SearchResult | null { + const address = result.raw?.address; + if (!address) return null; + + const streetNumber = address.house_number; + const streetName = address.road; + const city = + address.city ?? address.town ?? address.village ?? address.hamlet ?? address.county; + const state = address.state; + const zip = address.postcode; + + if (!streetName) return null; + + result.label = [streetNumber ? `${streetNumber} ${streetName}` : streetName, city, state, zip] + .filter(Boolean) + .join(', '); + + return result; + } const map = getContext<{ getMap: () => L.Map }>('map').getMap(); const provider = new OpenStreetMapProvider({ params: { + addressdetails: 1, countrycodes: 'us' } }); const control = GeoSearchControl({ provider, style: 'bar', - showMarker: false + showMarker: false, + resultFormat: ({ result }: { result: SearchResult }) => + formatAddress(result).label }); const dispatch = createEventDispatcher<{ From 8979aee4538932ec1a4a3ea94383b59e1dc29e6b Mon Sep 17 00:00:00 2001 From: Tim Dalton Date: Thu, 15 Jan 2026 09:36:47 -0600 Subject: [PATCH 2/5] Just used our own SearchResult after weirdness trying to import it from node_modules. Signed-off-by: Tim Dalton --- frontend/src/lib/components/MapGeosearch.svelte | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/frontend/src/lib/components/MapGeosearch.svelte b/frontend/src/lib/components/MapGeosearch.svelte index 3d650bbe..3dbd5a10 100644 --- a/frontend/src/lib/components/MapGeosearch.svelte +++ b/frontend/src/lib/components/MapGeosearch.svelte @@ -26,7 +26,11 @@ import { GeoSearchControl, OpenStreetMapProvider } from 'leaflet-geosearch'; import { createEventDispatcher, getContext, onDestroy, onMount } from 'svelte'; import L from 'leaflet'; - import type { SearchResult } from '../../node_modules/leaflet-geosearch/dist/providers/provider'; + + interface SearchResult { + label?: string; + raw: TRawResult; + } interface NominatimAddress { house_number?: string; @@ -78,7 +82,7 @@ style: 'bar', showMarker: false, resultFormat: ({ result }: { result: SearchResult }) => - formatAddress(result).label + formatAddress(result)?.label ?? null }); const dispatch = createEventDispatcher<{ From 4a6767c844a4b8580589dae043797c0111b6e7ec Mon Sep 17 00:00:00 2001 From: Tim Dalton Date: Thu, 15 Jan 2026 09:42:39 -0600 Subject: [PATCH 3/5] Need to avoid no explict anys Signed-off-by: Tim Dalton --- frontend/src/lib/components/MapGeosearch.svelte | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/src/lib/components/MapGeosearch.svelte b/frontend/src/lib/components/MapGeosearch.svelte index 3dbd5a10..ea5bb8c7 100644 --- a/frontend/src/lib/components/MapGeosearch.svelte +++ b/frontend/src/lib/components/MapGeosearch.svelte @@ -27,9 +27,9 @@ import { createEventDispatcher, getContext, onDestroy, onMount } from 'svelte'; import L from 'leaflet'; - interface SearchResult { + interface AddressSearchResult { label?: string; - raw: TRawResult; + raw: NominatimRaw; } interface NominatimAddress { @@ -50,7 +50,7 @@ type?: string; } - function formatAddress(result: SearchResult): SearchResult | null { + function formatAddress(result: AddressSearchResult): AddressSearchResult | null { const address = result.raw?.address; if (!address) return null; @@ -81,7 +81,7 @@ provider, style: 'bar', showMarker: false, - resultFormat: ({ result }: { result: SearchResult }) => + resultFormat: ({ result }: { result: AddressSearchResult }) => formatAddress(result)?.label ?? null }); From 3cd966b6f50c609671ac880d637980ce58d79268 Mon Sep 17 00:00:00 2001 From: Tim Dalton Date: Thu, 15 Jan 2026 10:03:04 -0600 Subject: [PATCH 4/5] AI suggestion to use "1" where "true" is more truthy. Signed-off-by: Tim Dalton --- frontend/src/lib/components/MapGeosearch.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/lib/components/MapGeosearch.svelte b/frontend/src/lib/components/MapGeosearch.svelte index ea5bb8c7..ba7852ab 100644 --- a/frontend/src/lib/components/MapGeosearch.svelte +++ b/frontend/src/lib/components/MapGeosearch.svelte @@ -73,7 +73,7 @@ const map = getContext<{ getMap: () => L.Map }>('map').getMap(); const provider = new OpenStreetMapProvider({ params: { - addressdetails: 1, + addressdetails: true, countrycodes: 'us' } }); From b613a1809c6864730541468f71c56d0defb99a23 Mon Sep 17 00:00:00 2001 From: Tim Dalton Date: Fri, 16 Jan 2026 14:22:47 -0600 Subject: [PATCH 5/5] Took the county out since we use it on our reverse lookup. Signed-off-by: Tim Dalton --- frontend/src/lib/components/MapGeosearch.svelte | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/frontend/src/lib/components/MapGeosearch.svelte b/frontend/src/lib/components/MapGeosearch.svelte index ba7852ab..1de2df51 100644 --- a/frontend/src/lib/components/MapGeosearch.svelte +++ b/frontend/src/lib/components/MapGeosearch.svelte @@ -56,8 +56,7 @@ const streetNumber = address.house_number; const streetName = address.road; - const city = - address.city ?? address.town ?? address.village ?? address.hamlet ?? address.county; + const city = address.city ?? address.town ?? address.village ?? address.hamlet; const state = address.state; const zip = address.postcode;