Bug fixes for loading the IDAA Rec Mtg when navigating. Other improvements.

This commit is contained in:
Scott Idem
2025-07-09 11:46:27 -04:00
parent 6bdedecfd8
commit 628659f348
4 changed files with 98 additions and 43 deletions

View File

@@ -10,16 +10,15 @@ import { onDestroy } from "svelte";
import { browser } from '$app/environment';
// *** Import other supporting libraries
import { Modal } from 'flowbite-svelte';
// import { Modal } from 'flowbite-svelte';
import { liveQuery } from "dexie";
// *** Import Aether specific variables and functions
import { ae_util } from '$lib/ae_utils/ae_utils';
import { db_posts } from "$lib/ae_posts/db_posts";
import { ae_snip, ae_loc, ae_sess, ae_api, ae_trig, slct, slct_trigger } from '$lib/ae_stores';
import { db_posts } from "$lib/ae_posts/db_posts";
// import { posts_func } from '$lib/ae_posts/ae_posts_functions';
import { idaa_loc, idaa_sess, idaa_slct, idaa_trig, idaa_prom } from '$lib/ae_idaa_stores';
import { posts_func } from '$lib/ae_posts/ae_posts_functions';
import Comp__post_obj_id_edit from '.././ae_idaa_comp__post_obj_id_edit.svelte';
import Comp__post_obj_id_view from '.././ae_idaa_comp__post_obj_id_view.svelte';
@@ -47,6 +46,9 @@ let lq__post_obj = $derived(liveQuery(async () => {
if ($idaa_slct.post_obj && results) {
if (JSON.stringify($idaa_slct.post_obj) !== JSON.stringify(results)) {
$idaa_slct.post_obj = { ...results};
if (log_lvl) {
console.log(`$idaa_slct.post_obj = `, $idaa_slct.post_obj);
}
} else {
if (log_lvl) {
console.log(`Post object has not changed for post_id: ${$idaa_slct.post_id}`);
@@ -54,7 +56,6 @@ let lq__post_obj = $derived(liveQuery(async () => {
}
}
// console.log(`$idaa_slct.post_obj = `, $idaa_slct.post_obj);
return results;
}));
@@ -107,9 +108,9 @@ onDestroy(() => {
<svelte:head>
<title>
IDAA Bulletin Board:
IDAA BB:
{$lq__post_obj?.name ? ae_util.shorten_string({ string: $lq__post_obj?.name, max_length: 20, begin_length: 10, end_length: 4 }) : ''}
- Novi - {$ae_loc?.name}
- Novi - {$ae_loc?.title}
</title>
</svelte:head>
@@ -162,11 +163,15 @@ onDestroy(() => {
"
>
<a href="/idaa/bb" class="novi_btn btn btn-secondary btn-sm
preset-tonal-tertiary border border-tertiary-500
hover:preset-filled-tertiary-500
transition
">
<a
href="/idaa/bb"
class="
novi_btn btn btn-secondary btn-sm
preset-tonal-tertiary border border-tertiary-500
hover:preset-filled-tertiary-500
transition
"
>
<span class="fas fa-arrow-left m-1"></span> Back to Posts List
<!-- <span class="fas fa-times m-1"></span> View Other Meetings -->
</a>

View File

@@ -12,12 +12,14 @@ let {
}: Props = $props();
// *** Import Svelte specific
// import { createEventDispatcher, onDestroy, onMount } from 'svelte';
// import { onDestroy, onMount } from 'svelte';
import { fade } from 'svelte/transition';
import { browser } from '$app/environment';
import { goto } from '$app/navigation';
// *** Import Aether core variables and functions
// *** Import other supporting libraries
// *** Import Aether specific variables and functions
import type { key_val } from '$lib/ae_stores';
import { ae_util } from '$lib/ae_utils/ae_utils';
import { core_func } from '$lib/ae_core/ae_core_functions';
@@ -34,6 +36,7 @@ import Comp_hosted_files_upload from '$lib/ae_core/ae_comp__hosted_files_upload.
if (!$idaa_slct.post_obj) {
$idaa_slct.post_obj = {};
}
// Create a copy of the post object
let orig_post_obj: any = { ...$idaa_slct.post_obj };
if (browser) {
// console.log(`$lq__post_obj = `, $lq__post_obj);

View File

@@ -3,24 +3,22 @@ import type { PageData } from './$types';
let { data }: { data: PageData } = $props();
let log_lvl: number = 0;
let log_lvl: number = 1;
// *** Import Svelte specific
import { onDestroy } from "svelte";
import { browser } from '$app/environment';
// *** Import other supporting libraries
import { Modal } from 'flowbite-svelte';
// import { Modal } from 'flowbite-svelte';
import { liveQuery } from "dexie";
// *** Import Aether specific variables and functions
import { ae_util } from '$lib/ae_utils/ae_utils';
import { ae_snip, ae_loc, ae_sess, ae_api, ae_trig, slct, slct_trigger } from '$lib/ae_stores';
import { idaa_loc, idaa_sess, idaa_slct, idaa_trig, idaa_prom } from '$lib/ae_idaa_stores';
import { db_events } from "$lib/ae_events/db_events";
import { events_func } from '$lib/ae_events_functions';
// import { events_func } from '$lib/ae_events_functions';
import { idaa_loc, idaa_sess, idaa_slct, idaa_trig, idaa_prom } from '$lib/ae_idaa_stores';
import Event_obj_id_edit from '.././ae_idaa_comp__event_obj_id_edit.svelte';
import Event_obj_id_view from '.././ae_idaa_comp__event_obj_id_view.svelte';
@@ -31,7 +29,7 @@ if (log_lvl) {
console.log(`ae_acct = `, ae_acct);
}
$idaa_sess.recovery_meetings.edit__event_id = null;
$idaa_sess.recovery_meetings.edit__event_obj = null;
$idaa_slct.event_id = ae_acct.slct.event_id;
$idaa_trig.event_id = ae_acct.slct.event_id;
// $idaa_slct.event_obj = ae_acct.slct.event_obj;
@@ -49,6 +47,9 @@ let lq__event_obj = $derived(liveQuery(async () => {
if ($idaa_slct.event_obj && results) {
if (JSON.stringify($idaa_slct.event_obj) !== JSON.stringify(results)) {
$idaa_slct.event_obj = { ...results};
if (log_lvl) {
console.log(`$idaa_slct.event_obj = `, $idaa_slct.event_obj);
}
} else {
if (log_lvl) {
console.log(`Event object has not changed for event_id: ${$idaa_slct.event_id}`);
@@ -80,15 +81,15 @@ onDestroy(() => {
let message = {'event_id': null};
window.parent.postMessage(message, "*");
$idaa_slct.event_id = null;
$idaa_slct.event_obj = null;
// $idaa_slct.event_id = null;
// $idaa_slct.event_obj = null;
});
</script>
<svelte:head>
<title>
IDAA Recovery Meetings:
IDAA Recovery Mtgs:
{$lq__event_obj?.name ? ae_util.shorten_string({ string: $lq__event_obj?.name, max_length: 20, begin_length: 10, end_length: 4 }) : ''}
- Novi - {$ae_loc?.title}
</title>
@@ -158,30 +159,40 @@ onDestroy(() => {
"
>
<a href="/idaa/recovery_meetings" class="novi_btn btn btn-secondary btn-sm
preset-tonal-tertiary border border-tertiary-500
hover:preset-filled-tertiary-500
transition
">
<a
href="/idaa/recovery_meetings"
class="
novi_btn btn btn-secondary btn-sm
preset-tonal-tertiary border border-tertiary-500
hover:preset-filled-tertiary-500
transition
"
>
<span class="fas fa-arrow-left m-1"></span> Back to Meeting List
<!-- <span class="fas fa-times m-1"></span> View Other Meetings -->
</a>
<!-- View (default)/Edit event_id toggle -->
{#if $idaa_sess.recovery_meetings.edit__event_id}
{#if $idaa_sess.recovery_meetings.edit__event_obj}
<button
type="button"
class="novi_btn btn btn-warning btn-sm preset-tonal-tertiary border border-tertiary-500
hover:preset-filled-tertiary-500 transition"
class="
novi_btn
btn btn-sm
preset-filled-warning-200-800 hover:preset-filled-success-200-800
transition
"
onclick={() => {
$idaa_sess.recovery_meetings.edit__event_id = false;
$idaa_sess.recovery_meetings.edit__event_obj = false;
if (log_lvl) {
console.log(`Toggle edit__event_id: ${$idaa_sess.recovery_meetings.edit__event_id}`);
console.log(`Toggle edit__event_obj: ${$idaa_sess.recovery_meetings.edit__event_obj}`);
}
}}
title="View this recovery meeting"
title="View this Recovery Meeting"
>
View Meeting?
<!-- <span class="far fa-window-close m-1"></span> -->
<span class="fas fa-times m-1"></span>
Cancel Edit
</button>
{:else}
<!-- This checks if the currently logged in Novi user has a matching UUID or email address. -->
@@ -191,21 +202,21 @@ onDestroy(() => {
class="novi_btn btn btn-warning btn-sm preset-tonal-warning border border-warning-500
hover:preset-filled-warning-500 transition"
onclick={() => {
$idaa_sess.recovery_meetings.edit__event_id = $idaa_slct.event_id;
$idaa_sess.recovery_meetings.edit__event_obj = $idaa_slct.event_id;
if (log_lvl) {
console.log(`Toggle edit__event_id: ${$idaa_sess.recovery_meetings.edit__event_id}`);
console.log(`Toggle edit__event_obj: ${$idaa_sess.recovery_meetings.edit__event_obj}`);
}
}}
title="Edit this recovery meeting"
title="Edit this Recovery Meeting"
>
<span class="fas fa-edit m-1"></span>
Edit Meeting?
Edit Meeting
</button>
{/if}
{/if}
</div>
{#if $idaa_sess.recovery_meetings.edit__event_id}
{#if $idaa_sess.recovery_meetings.edit__event_obj}
<Event_obj_id_edit
lq__event_obj={lq__event_obj}
bind:obj_changed={$idaa_sess.recovery_meetings.obj_changed}

View File

@@ -12,12 +12,15 @@ let {
}: Props = $props();
// *** Import Svelte core
import { run, preventDefault } from 'svelte/legacy';
// *** Import Svelte specific
// import { preventDefault } from 'svelte/legacy';
// import { onDestroy, onMount } from 'svelte';
import { fade } from 'svelte/transition';
import { browser } from '$app/environment';
// *** Import other supporting libraries
// *** Import Aether specific variables and functions
import type { key_val } from '$lib/ae_stores';
import { ae_util } from '$lib/ae_utils/ae_utils';
import { core_func } from '$lib/ae_core/ae_core_functions';
@@ -29,8 +32,20 @@ import Tiptap_editor from '$lib/element_tiptap_editor.svelte';
// export let container_class_li = [];
if (!$idaa_slct.event_obj) {
$idaa_slct.event_obj = {};
}
// Create a copy of the event object
let orig_event_obj: any = { ...$idaa_slct.event_obj };
if ($idaa_loc.recovery_meetings.edit__event_obj) {
$idaa_sess.recovery_meetings.edit__event_obj = $idaa_loc.recovery_meetings.edit__event_obj;
$idaa_loc.recovery_meetings.edit__event_obj = false;
}
let prom_api__event_obj: any = $state();
let description_new_html = $state('');
let description_changed = $state(false);
let location_text_new_html = $state('');
@@ -622,6 +637,27 @@ function send_staff_notification_email() {
</div>
*/
function preventDefault(fn) {
return function (event) {
event.preventDefault();
fn.call(this, event);
};
}
$effect(() => {
if (orig_event_obj === null || orig_event_obj === undefined || orig_event_obj === 'undefined') {
obj_changed = false;
} else if (!obj_changed && orig_event_obj?.id && (JSON.stringify($idaa_slct.event_obj) !== JSON.stringify(orig_event_obj) || description_changed || notes_changed)) {
// console.log('Post object has changed from original.', $inspect(orig_event_obj));
console.log('Post object has changed from original.', orig_event_obj);
console.log('Post object has changed.', $idaa_slct.event_obj);
obj_changed = true;
} else if (obj_changed && orig_event_obj?.id && (JSON.stringify($idaa_slct.event_obj) === JSON.stringify(orig_event_obj) && !description_changed && !notes_changed)) {
obj_changed = false;
}
});
</script>