fix: fix several different data parsing issues

This commit is contained in:
2026-04-18 14:47:06 +00:00
parent 5141ed20f9
commit f91d8debcb
16 changed files with 632 additions and 49 deletions
@@ -15,6 +15,27 @@
export let permissions: PermissionMap;
export let isMobile: boolean;
export let mobileActiveTab: string | null;
// Selected site for the sites dropdown
let selectedSiteUid: string | null = null;
$: allAddresses = company?.cw_Data?.allAddresses ?? [];
$: activeSites = allAddresses.filter((a) => !a.inactiveFlag);
$: selectedSite =
selectedSiteUid !== null
? activeSites.find((a) => a.uid === selectedSiteUid) ?? null
: activeSites.find((a) => a.defaultFlag) ?? activeSites[0] ?? null;
function formatSiteAddress(site: (typeof activeSites)[number]): string[] {
const lines: string[] = [];
if (site.addressLine1) lines.push(site.addressLine1);
if (site.addressLine2) lines.push(site.addressLine2);
const cityStateZip = [site.city, site.state, site.zip]
.filter(Boolean)
.join(", ");
if (cityStateZip) lines.push(cityStateZip);
if (site.country) lines.push(site.country);
return lines;
}
</script>
<div
@@ -170,7 +191,54 @@
</div>
{/if}
{#if permissions["company.fetch.address"] && formatAddress(company).length > 0}
{#if permissions["company.fetch.address"] && activeSites.length > 0}
<div class="info-row">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
class="info-icon"
>
<path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0118 0z" />
<circle cx="12" cy="10" r="3" />
</svg>
<div class="info-content">
{#if activeSites.length > 1}
<select
class="site-select"
bind:value={selectedSiteUid}
on:change={(e) => (selectedSiteUid = e.currentTarget.value)}
>
{#each activeSites as site}
<option value={site.uid}>
{site.name}{site.defaultFlag ? " (Default)" : ""}
</option>
{/each}
</select>
{:else}
<span class="info-label"
>{activeSites[0]?.name ?? "Address"}</span
>
{/if}
{#if selectedSite}
{@const lines = formatSiteAddress(selectedSite)}
{#if lines.length > 0}
<span class="info-value address-multiline">
{#each lines as line}
{line}<br />
{/each}
</span>
{/if}
{#if selectedSite.phone}
<span class="info-value site-phone"
>{formatPhone(selectedSite.phone)}</span
>
{/if}
{/if}
</div>
</div>
{:else if permissions["company.fetch.address"] && formatAddress(company).length > 0}
<div class="info-row">
<svg
viewBox="0 0 24 24"