Files
OSIT-AE-App-Svelte/src/lib/elements/element_obj_tbl_row.svelte
Scott Idem 88bc18cf15 fix(core): resolve 68 compiler errors and stabilize Svelte 5 reactivity
- Fixed 'Captured initial value' warnings in 65+ components by implementing
  proper sync effects with 'untrack' and derived states.
- Hardened Event Settings JSON editors using a temporary string-buffer pattern
  to safely decouple object-based data from CodeMirror's string requirements.
- Resolved strict TypeScript mismatches across core routes (Accounts, Sites, etc.)
  and improved property indexing safety in views.
- Patched Flowbite-Svelte Drawer transitions for Svelte 5 compatibility using
  prop spreading.
- Added comprehensive safety comments to high-risk reactivity blocks.
- Synchronized 'ae_types.ts' with V3 backend models.
2026-02-08 16:05:35 -05:00

149 lines
5.7 KiB
Svelte

<script lang="ts">
import { onMount } from 'svelte';
import { ae_util } from '$lib/ae_utils/ae_utils';
// Should these slct_* be exported???
let slct_obj_id = $state<any>(null);
let slct_obj_li_type = '';
let slct_obj_type = $state<string | null>(null);
interface Props {
row_header?: boolean;
primary_obj_li_type?: string; // account, person, user, event, event_session, membership_person
obj?: any;
}
let {
row_header = false,
primary_obj_li_type = $bindable(slct_obj_li_type),
obj = null
}: Props = $props();
onMount(() => {
console.log('** Element Mounted: ** Element Object Table Row');
if (obj) {
console.log('Table Row Object:', obj);
console.log(typeof obj);
} else {
return false;
}
});
</script>
<tr>
{#if obj != null && typeof obj == 'object'}
{#each Object.entries(obj) as [obj_prop_name, obj_prop_value]}
<!-- NEED TO ADD A CHECK IF:
NOTE and WARNING:
obj.id_random and obj.name then replace the ID field column with a link using obj.name
This should probably go outside/before this tr loop.
-->
{#if obj_prop_name.endsWith('_id_random') || obj_prop_name == 'for_type' || obj_prop_name == 'for_id'}
{#if row_header}
<th
data-obj_type={primary_obj_li_type}
data-obj_prop_name={obj_prop_name}
onclick={() =>
(primary_obj_li_type = obj_prop_name.replace('_id_random', ''))}
>
{ae_util.set_obj_prop_display_name({
prop_name: obj_prop_name,
obj_type: primary_obj_li_type
})}
</th>
{:else}
<td
data-obj_type={primary_obj_li_type}
data-obj_prop_name={obj_prop_name}
onclick={() => {
slct_obj_type = obj_prop_name.replace('_id_random', '');
slct_obj_id = obj_prop_value;
}}
onkeypress={() => {
slct_obj_type = obj_prop_name.replace('_id_random', '');
slct_obj_id = obj_prop_value;
}}
>
<!-- {obj_prop_value} -->
<!-- {#if (obj_prop_value && obj_prop_value.length > 25)}
{obj_prop_value.substring(0,25)}
{:else} -->
{#if obj_prop_value}
<a
href="/{ae_util.return_obj_type_path({
obj_type_prop_name: obj_prop_name
})}/{obj_prop_value}"
>
{String(obj_prop_value).substring(0, 25)}
</a>
{:else}
<!-- {obj_prop_value} -->
<span class="fs_smaller">-- None --</span>
{/if}
</td>
{/if}
{:else if obj_prop_name.endsWith('[URL]')}
{#if row_header}
<th
data-obj_type={primary_obj_li_type}
data-obj_prop_name={obj_prop_name}
onclick={() =>
(primary_obj_li_type = obj_prop_name.replaceAll('[URL]', ''))}
>
{ae_util.set_obj_prop_display_name({
prop_name: obj_prop_name.replaceAll('[URL]', ''),
obj_type: primary_obj_li_type
})}
</th>
{:else}
<td
data-obj_type={primary_obj_li_type}
data-obj_prop_name={obj_prop_name}
onclick={() => {
slct_obj_type = obj_prop_name.replaceAll('[URL]', '');
slct_obj_id = obj_prop_value;
}}
onkeypress={() => {
slct_obj_type = obj_prop_name.replaceAll('[URL]', '');
slct_obj_id = obj_prop_value;
}}
>
<a href={String(obj_prop_value)}>{String(obj_prop_value)}</a>
</td>
{/if}
{:else if row_header}
<th data-obj_type={primary_obj_li_type} data-obj_prop_name={obj_prop_name}>
{ae_util.set_obj_prop_display_name({
prop_name: obj_prop_name,
obj_type: primary_obj_li_type
})}
</th>
{:else}
<td data-obj_type={primary_obj_li_type} data-obj_prop_name={obj_prop_name}>
{#if obj_prop_value}
{#if typeof obj_prop_value === 'string' && obj_prop_value.length > 25}
{obj_prop_value.substring(0, 25)} ...
{:else}
{obj_prop_value}
{/if}
{:else}
<span class="fs_smaller">-- None --</span>
{/if}
</td>
{/if}
{/each}
{:else}
<!-- This should never happen -->
<td class="fs_smaller" colspan="100"> -- Not Set -- </td>
{/if}
</tr>
<style lang="postcss">
</style>