fix: fix several different data parsing issues
This commit is contained in:
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user