Now with better Zoom info support.
This commit is contained in:
@@ -833,6 +833,7 @@ export async function db_save_ae_obj_li__event(
|
||||
mod_abstracts_json: obj.mod_abstracts_json,
|
||||
mod_badges_json: obj.mod_badges_json,
|
||||
mod_exhibits_json: obj.mod_exhibits_json,
|
||||
mod_meetings_json: obj.mod_meetings_json,
|
||||
mod_pres_mgmt_json: obj.mod_pres_mgmt_json,
|
||||
cfg_json: obj.cfg_json,
|
||||
|
||||
@@ -869,6 +870,7 @@ export async function db_save_ae_obj_li__event(
|
||||
|
||||
attend_url: obj.attend_url,
|
||||
attend_url_text: obj.attend_url_text,
|
||||
attend_url_code: obj.attend_url_code,
|
||||
attend_url_passcode: obj.attend_url_passcode,
|
||||
attend_phone: obj.attend_phone,
|
||||
attend_phone_passcode: obj.attend_phone_passcode,
|
||||
@@ -1059,6 +1061,7 @@ export const properties_to_save = [
|
||||
'mod_abstracts_json',
|
||||
'mod_badges_json',
|
||||
'mod_exhibits_json',
|
||||
'mod_meetings_json',
|
||||
'mod_pres_mgmt_json',
|
||||
'cfg_json',
|
||||
|
||||
@@ -1095,6 +1098,7 @@ export const properties_to_save = [
|
||||
|
||||
'attend_url',
|
||||
'attend_url_text',
|
||||
'attend_url_code',
|
||||
'attend_url_passcode',
|
||||
'attend_phone',
|
||||
'attend_phone_passcode',
|
||||
@@ -1183,6 +1187,7 @@ export async function process_ae_obj__event_props({
|
||||
mod_abstracts_json: obj.mod_abstracts_json,
|
||||
mod_badges_json: obj.mod_badges_json,
|
||||
mod_exhibits_json: obj.mod_exhibits_json,
|
||||
mod_meetings_json: obj.mod_meetings_json,
|
||||
mod_pres_mgmt_json: obj.mod_pres_mgmt_json,
|
||||
cfg_json: obj.cfg_json,
|
||||
|
||||
@@ -1223,6 +1228,7 @@ export async function process_ae_obj__event_props({
|
||||
|
||||
attend_url: obj.attend_url,
|
||||
attend_url_text: obj.attend_url_text,
|
||||
attend_url_code: obj.attend_url_code,
|
||||
attend_url_passcode: obj.attend_url_passcode,
|
||||
attend_phone: obj.attend_phone,
|
||||
attend_phone_passcode: obj.attend_phone_passcode,
|
||||
|
||||
@@ -43,6 +43,7 @@ export interface Event {
|
||||
mod_abstracts_json?: null|key_val;
|
||||
mod_badges_json?: null|key_val;
|
||||
mod_exhibits_json?: null|key_val;
|
||||
mod_meetings_json?: null|key_val;
|
||||
mod_pres_mgmt_json?: null|key_val;
|
||||
cfg_json?: null|key_val;
|
||||
|
||||
@@ -84,6 +85,7 @@ export interface Event {
|
||||
|
||||
attend_url?: null|string;
|
||||
attend_url_text?: null|string;
|
||||
attend_url_code?: null|string; // Meeting ID, Conference ID, etc.
|
||||
attend_url_passcode?: null|string;
|
||||
attend_phone?: null|string;
|
||||
attend_phone_passcode?: null|string;
|
||||
|
||||
@@ -151,6 +151,8 @@ let idaa_session_data_struct: key_val = {
|
||||
show__modal_edit__event_id: null,
|
||||
show__modal_view__event_id: null,
|
||||
obj_changed: false, // Used to track if the event object has been changed in the edit view
|
||||
|
||||
attend_platform: null, // 'Zoom', 'Google Meet', 'Microsoft Teams', etc.
|
||||
},
|
||||
|
||||
};
|
||||
|
||||
@@ -27,7 +27,7 @@ import { ae_util } from '$lib/ae_utils/ae_utils';
|
||||
import { core_func } from '$lib/ae_core/ae_core_functions';
|
||||
import { api } from '$lib/api';
|
||||
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 } from '$lib/ae_idaa_stores';
|
||||
import { idaa_loc, idaa_sess, idaa_slct, idaa_trig } from '$lib/ae_idaa_stores';
|
||||
import { events_func } from '$lib/ae_events_functions';
|
||||
import Tiptap_editor from '$lib/element_tiptap_editor.svelte';
|
||||
|
||||
@@ -101,13 +101,18 @@ if ($idaa_slct.event_id) {
|
||||
|
||||
location_text: null,
|
||||
|
||||
attend_platform: null,
|
||||
attend_url: null,
|
||||
attend_url_code: null,
|
||||
attend_url_passcode: null,
|
||||
attend_phone: null,
|
||||
attend_phone_passcode: null,
|
||||
|
||||
attend_text: null,
|
||||
|
||||
attend_json: {
|
||||
},
|
||||
|
||||
timezone: null,
|
||||
|
||||
recurring_text: null,
|
||||
@@ -347,7 +352,9 @@ async function handle_submit_form(event: any) {
|
||||
}
|
||||
|
||||
event_do['attend_url'] = event_meeting_fd.attend_url;
|
||||
event_do['attend_url_code'] = event_meeting_fd.attend_url_code;
|
||||
event_do['attend_url_passcode'] = event_meeting_fd.attend_url_passcode;
|
||||
|
||||
event_do['attend_phone'] = event_meeting_fd.attend_phone;
|
||||
event_do['attend_phone_passcode'] = event_meeting_fd.attend_phone_passcode;
|
||||
|
||||
@@ -358,6 +365,41 @@ async function handle_submit_form(event: any) {
|
||||
console.log('New attend text is not a string. Do nothing.');
|
||||
}
|
||||
|
||||
if ($idaa_sess.recovery_meetings?.attend_platform === 'Zoom') {
|
||||
// event_do['attend_url_passcode_enc'] = event_meeting_fd.attend_url_passcode_enc;
|
||||
|
||||
let zoom_attend_domain = event_meeting_fd.attend_domain ?? 'zoom.us';
|
||||
let zoom_meeting_id = event_do['attend_url_code'] ? event_do['attend_url_code'].replace(/[^0-9]/g, '').trim() : null; // Strip out any non-numeric characters
|
||||
let zoom_passcode = event_do['attend_url_passcode'] ? event_do['attend_url_passcode'].trim() : null; // Strip out any non-alphanumeric characters
|
||||
let zoom_passcode_enc = event_meeting_fd.attend_url_passcode_enc ? event_meeting_fd.attend_url_passcode_enc.replace(/[^a-zA-Z0-9]/g, '').trim() : null; // Strip out any non-alphanumeric characters
|
||||
|
||||
let zoom_url = event_meeting_fd.zoom_attend_url ? event_meeting_fd.zoom_attend_url.trim() : null;
|
||||
|
||||
// Example JSON structure:
|
||||
// "zoom": {
|
||||
// domain = attend_url_base; Zoom domain; Vanity URL
|
||||
// meeting_id = append as /j/attend_url_code;
|
||||
// passcode = attend_url_passcode
|
||||
// url = ''; // generated below
|
||||
// phone = ''; // ignored; Just use the standard list?
|
||||
// }
|
||||
// domain: only contain letters, numbers and dashes (-)
|
||||
// let domain = event_do['attend_url'] ? event_do['attend_url'].replace(/[^a-zA-Z0-9-]/g, '') : null; // Strip out any non-alphanumeric characters except dashes
|
||||
event_do['attend_json'] = {
|
||||
'zoom':
|
||||
{
|
||||
domain: zoom_attend_domain,
|
||||
meeting_id: zoom_meeting_id,
|
||||
passcode: zoom_passcode,
|
||||
passcode_enc: zoom_passcode_enc,
|
||||
full_url: zoom_url,
|
||||
}
|
||||
};
|
||||
console.log(event_do['attend_json']);
|
||||
} else {
|
||||
event_do['attend_json'] = {};
|
||||
}
|
||||
|
||||
event_do['timezone'] = event_meeting_fd.timezone;
|
||||
|
||||
event_do['recurring'] = true; // Assume always true 2024-10 !!event_meeting_fd.recurring;
|
||||
@@ -653,15 +695,69 @@ $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);
|
||||
// console.log('Event object has changed from original.', $inspect(orig_event_obj));
|
||||
console.log('Event object has changed from original.', orig_event_obj);
|
||||
console.log('Event 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;
|
||||
// console.log(orig_event_obj?.attend_json);
|
||||
// if (orig_event_obj?.attend_json?.zoom) {
|
||||
// $idaa_sess.recovery_meetings.attend_platform = 'Zoom';
|
||||
// } else {
|
||||
// $idaa_sess.recovery_meetings.attend_platform = null;
|
||||
// }
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
// $effect(() => {
|
||||
// if ($idaa_slct.event_obj?.attend_json?.zoom) {
|
||||
// $idaa_sess.recovery_meetings.attend_platform = 'Zoom';
|
||||
// } else {
|
||||
// $idaa_sess.recovery_meetings.attend_platform = null;
|
||||
// }
|
||||
// });
|
||||
if (browser && $idaa_slct.event_obj?.attend_json) {
|
||||
if ($idaa_slct.event_obj?.attend_json?.zoom) {
|
||||
$idaa_sess.recovery_meetings.attend_platform = 'Zoom';
|
||||
} else {
|
||||
$idaa_sess.recovery_meetings.attend_platform = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$effect(() => {
|
||||
if ($idaa_trig == 'update_zoom_full_url' && $idaa_slct.event_obj.attend_url_code && $idaa_slct.event_obj.attend_url_passcode && $idaa_sess.recovery_meetings.attend_platform === 'Zoom') {
|
||||
$idaa_trig = null;
|
||||
// $idaa_slct.event_obj.attend_json.zoom.full_url = `https://${$idaa_slct.event_obj.attend_url.replace(/[^a-zA-Z0-9-]/g, '')}/j/${$idaa_slct.event_obj.attend_url_code.replace(/[^0-9]/g, '')}?pwd=${$idaa_slct.event_obj.attend_url_passcode.replace(/[^a-zA-Z0-9]/g, '')}`;
|
||||
|
||||
// $idaa_slct.event_obj.attend_url_code = String($idaa_slct.event_obj.attend_url_code).replace(/\D/g, '').trim();
|
||||
$idaa_slct.event_obj.attend_url_code = String($idaa_slct.event_obj.attend_url_code).replace(/[^0-9]/g, '').trim() ?? '';
|
||||
|
||||
$idaa_slct.event_obj.attend_url_passcode = String($idaa_slct.event_obj.attend_url_passcode).trim() ?? '';
|
||||
|
||||
// $idaa_slct.event_obj.attend_json.zoom.passcode_enc = String($idaa_slct.event_obj.attend_json.zoom.passcode_enc).replace(/[^a-zA-Z0-9]/g, '').trim();
|
||||
$idaa_slct.event_obj.attend_json.zoom.passcode_enc = String($idaa_slct.event_obj.attend_json.zoom.passcode_enc) ?? '';
|
||||
|
||||
// $idaa_slct.event_obj.attend_json.zoom.domain = $idaa_slct.event_obj.attend_json.zoom.domain ? String($idaa_slct.event_obj.attend_json.zoom.domain).replace(/[^a-zA-Z0-9.-]/g, '').trim() : 'zoom.us';
|
||||
$idaa_slct.event_obj.attend_json.zoom.domain = $idaa_slct.event_obj.attend_json.zoom.domain ? String($idaa_slct.event_obj.attend_json.zoom.domain).toLowerCase().trim() : 'zoom.us';
|
||||
$idaa_slct.event_obj.attend_json.zoom.domain = $idaa_slct.event_obj.attend_json.zoom.domain.replace(/^https?:\/\//, '').replace(/\/.*$/, ''); // Remove any leading http(s):// and anything after the first /
|
||||
|
||||
if ($idaa_slct.event_obj.attend_json.zoom.passcode_enc && $idaa_slct.event_obj.attend_json.zoom.passcode_enc.length >= 8) {
|
||||
$idaa_slct.event_obj.attend_json.zoom.full_url = `https://${$idaa_slct.event_obj.attend_json.zoom.domain}/j/${$idaa_slct.event_obj.attend_url_code}?pwd=${$idaa_slct.event_obj.attend_json.zoom.passcode_enc}`;
|
||||
} else {
|
||||
$idaa_slct.event_obj.attend_json.zoom.full_url = `https://${$idaa_slct.event_obj.attend_json.zoom.domain}/j/${$idaa_slct.event_obj.attend_url_code}?pwd=${$idaa_slct.event_obj.attend_url_passcode}`;
|
||||
}
|
||||
} else {
|
||||
// $idaa_slct.event_obj.attend_json = {};
|
||||
// $idaa_slct.event_obj.attend_json.zoom = null;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
@@ -712,7 +808,7 @@ $effect(() => {
|
||||
|
||||
<div>
|
||||
<label for="name" class="w-full">
|
||||
<span class="text-lg font-semibold">
|
||||
<span class="text-lg text-neutral-500 font-semibold">
|
||||
Name of Recovery Meeting
|
||||
</span>
|
||||
<input
|
||||
@@ -734,7 +830,7 @@ $effect(() => {
|
||||
</div>
|
||||
|
||||
<label for="description" class="ae_label event__description w-full">
|
||||
<span class="text-lg font-semibold">
|
||||
<span class="text-lg text-neutral-500 font-semibold">
|
||||
Short description
|
||||
</span>
|
||||
<!-- <textarea name="description" id="description" class="ae_value event__description tinymce_editor editor_basic textarea" rows="5" cols="70" bind:value={$idaa_slct.event_obj.description} ></textarea> -->
|
||||
@@ -770,7 +866,7 @@ $effect(() => {
|
||||
|
||||
<div>
|
||||
<label class="form-group w-100">
|
||||
<span class="text-lg font-semibold">
|
||||
<span class="text-lg text-neutral-500 font-semibold">
|
||||
Type of Recovery Meeting
|
||||
</span>
|
||||
<select
|
||||
@@ -787,7 +883,7 @@ $effect(() => {
|
||||
<option value="Family Recovery">Family Recovery</option>
|
||||
</select>
|
||||
</label>
|
||||
<ul class="list-disc list-inside">
|
||||
<ul class="text-sm text-neutral-500 list-disc list-inside">
|
||||
<li><strong>IDAA</strong> - Open to IDAA members only</li>
|
||||
<li><strong>Caduceus</strong> - Open to all healthcare workers including those who do not qualify for IDAA</li>
|
||||
<li><strong>Family Recovery</strong> - Open to spouses, parents, and adult children of medical professionals who have substance use disorder.
|
||||
@@ -802,7 +898,7 @@ $effect(() => {
|
||||
<h3 class="h2">How to Attended</h3>
|
||||
|
||||
<fieldset class="event__physical_virtual">
|
||||
<legend class="legend text-lg font-semibold">Face-to-Face or Virtual</legend>
|
||||
<legend class="legend text-lg text-neutral-500 font-semibold">Face-to-Face or Virtual</legend>
|
||||
<p>Is this a face-to-face/in person meeting, a virtual/online meeting, or both?</p>
|
||||
<div class="ae_group border border-gray-200 rounded-md p-2 space-y-1 ">
|
||||
<label
|
||||
@@ -893,7 +989,7 @@ $effect(() => {
|
||||
class:hidden={!$idaa_slct.event_obj?.physical && !$idaa_slct.event_obj?.more__location_fields}
|
||||
>
|
||||
|
||||
<legend class="legend text-lg font-semibold">Address</legend>
|
||||
<legend class="legend text-lg text-neutral-500 font-semibold">Address</legend>
|
||||
|
||||
<input id="" name="address_location_id_random" type="hidden" value="{$lq__event_obj?.address_location_id_random}">
|
||||
|
||||
@@ -1043,7 +1139,7 @@ $effect(() => {
|
||||
class="w-full"
|
||||
class:hidden={!$idaa_slct.event_obj?.physical && !$idaa_slct.event_obj?.more__location_fields}
|
||||
>
|
||||
<span class="text-lg font-semibold">
|
||||
<span class="text-lg text-neutral-500 font-semibold">
|
||||
Additional information about the meeting location
|
||||
</span>
|
||||
<!-- <textarea class="ae_value event__location_text tinymce_editor editor_less_100 textarea" id="location_text" name="location_text" placeholder="Additional information about the meeting location" rows="2" cols="70" bind:value={$idaa_slct.event_obj.location_text}></textarea> -->
|
||||
@@ -1109,26 +1205,240 @@ $effect(() => {
|
||||
"
|
||||
class:hidden={!$idaa_slct.event_obj.virtual && !$idaa_slct.event_obj?.more__virtual_fields}
|
||||
>
|
||||
<legend class="legend text-lg font-semibold">Virtual/Online</legend>
|
||||
<legend class="legend text-lg font-semibold">
|
||||
Virtual/Online
|
||||
{#if $idaa_sess.recovery_meetings.attend_platform == 'Zoom'}
|
||||
<span class="text-sm italic text-gray-600"> (Zoom Meeting)</span>
|
||||
{:else if $idaa_sess.recovery_meetings.attend_platform == 'Google Meet'}
|
||||
<span class="text-sm italic text-gray-600"> (Google Meet)</span>
|
||||
{:else if $idaa_sess.recovery_meetings.attend_platform == 'Microsoft Teams'}
|
||||
<span class="text-sm italic text-gray-600"> (Microsoft Teams)</span>
|
||||
{:else if $idaa_sess.recovery_meetings.attend_platform == 'other'}
|
||||
<span class="text-sm italic text-gray-600"> (Other Platform/ Service)</span>
|
||||
{/if}
|
||||
</legend>
|
||||
|
||||
<label for="attend_url">URL to access the virtual meeting
|
||||
<input type="url" class="input w-72 preset-tonal-surface hover:preset-filled-surface-100-900 form-control" id="attend_url" name="attend_url" placeholder="URL to access the virtual meeting" value={$lq__event_obj?.attend_url ?? ''} autocomplete="url">
|
||||
</label>
|
||||
<label for="attend_url_passcode">Passcode to join at URL
|
||||
<input type="text" class="input w-72 preset-tonal-surface hover:preset-filled-surface-100-900 form-control" id="attend_url_passcode" name="attend_url_passcode" placeholder="Passcode to join at URL" value={$lq__event_obj?.attend_url_passcode ?? ''} autocomplete="off">
|
||||
</label>
|
||||
<!-- Toggle if this is a Zoom meeting, Google Meet, Microsoft Teams, or "other" as a catch all type of virtual meeting. For now just toggle between "Zoom" and "other" -->
|
||||
<div class="w-full flex flex-col flex-wrap gap-1 items-center justify-center">
|
||||
<p class="text-sm italic text-gray-600">
|
||||
Click button to toggle if this is a Zoom meeting or other platform/service.
|
||||
<!-- {$idaa_slct.event_obj?.attend_json?.zoom} -->
|
||||
{$idaa_sess.recovery_meetings.attend_platform}
|
||||
</p>
|
||||
{#if $idaa_sess.recovery_meetings?.attend_platform === 'Zoom'}
|
||||
<button
|
||||
type="button"
|
||||
class="
|
||||
novi_btn
|
||||
btn btn-lg
|
||||
preset-filled-tertiary-200-800
|
||||
transition
|
||||
"
|
||||
onclick={() => {
|
||||
$idaa_sess.recovery_meetings.attend_platform = 'other'
|
||||
}}
|
||||
>
|
||||
<span class="fas fa-minus"></span>
|
||||
Not Zoom? Other Platform/Service
|
||||
</button>
|
||||
{:else if !$idaa_sess.recovery_meetings?.attend_platform || $idaa_sess.recovery_meetings?.attend_platform === 'other'}
|
||||
<button
|
||||
type="button"
|
||||
class="
|
||||
novi_btn
|
||||
btn btn-lg
|
||||
w-48
|
||||
preset-filled-tertiary-200-800
|
||||
transition
|
||||
"
|
||||
onclick={() => {
|
||||
if (!$idaa_slct.event_obj.attend_json || JSON.stringify($idaa_slct.event_obj.attend_json) === '{}') {
|
||||
$idaa_slct.event_obj.attend_json = {
|
||||
"zoom": {
|
||||
"domain": "zoom.us",
|
||||
"meeting_id": "",
|
||||
"passcode": "",
|
||||
"passcode_enc": "",
|
||||
"full_url": "",
|
||||
}
|
||||
};
|
||||
}
|
||||
$idaa_sess.recovery_meetings.attend_platform = 'Zoom'
|
||||
$idaa_trig = 'update_zoom_full_url';
|
||||
}}
|
||||
>
|
||||
<!-- <span class="fas fa-plus"></span> -->
|
||||
<span class="fas fa-video m-1"></span>
|
||||
Zoom Meeting?
|
||||
</button>
|
||||
{/if}
|
||||
<!-- <label for="attend_platform" class="form-group w-100 col-12">
|
||||
<span class="text-lg font-semibold">
|
||||
Platform/Service
|
||||
</span>
|
||||
<select
|
||||
class="
|
||||
form-control col-6
|
||||
select w-48 p-1
|
||||
preset-tonal-surface hover:preset-filled-surface-100-900
|
||||
"
|
||||
id="attend_platform"
|
||||
name="attend_platform"
|
||||
value={$idaa_slct.event_obj?.tmp__attend_platform ?? 'other'}
|
||||
>
|
||||
<option value="Zoom">Zoom</option>
|
||||
<option value="Google Meet">Google Meet</option>
|
||||
<option value="Microsoft Teams">Microsoft Teams</option>
|
||||
<option value="other">Other / Not specified</option>
|
||||
</select>
|
||||
</label> -->
|
||||
</div>
|
||||
{#if $idaa_sess.recovery_meetings?.attend_platform === 'Zoom'}
|
||||
<div class="flex flex-row flex-wrap gap-2 items-center justify-start">
|
||||
<label for="attend_url_code">
|
||||
Zoom Meeting ID
|
||||
<input
|
||||
type="number"
|
||||
id="attend_url_code" name="attend_url_code"
|
||||
max="99999999999"
|
||||
autocomplete="off"
|
||||
required
|
||||
bind:value={$idaa_slct.event_obj.attend_url_code}
|
||||
onchange={() => {
|
||||
console.log('Changed Zoom Meeting ID to:', $idaa_slct.event_obj.attend_url_code);
|
||||
if ($idaa_slct.event_obj.attend_url_code && $idaa_slct.event_obj.attend_url_code.length > 8) {
|
||||
// $idaa_slct.event_obj.attend_url_code = String($idaa_slct.event_obj.attend_url_code).replace(/\D/g, '').trim();
|
||||
|
||||
<label for="attend_phone">Phone number for meeting conference call
|
||||
<input type="tel" class="input w-72 preset-tonal-surface hover:preset-filled-surface-100-900 form-control" id="attend_phone" name="attend_phone" placeholder="Phone number for meeting conference call" value={$lq__event_obj?.attend_phone ?? ''} autocomplete="tel">
|
||||
</label>
|
||||
<label for="attend_phone_passcode">Passcode to join conference call
|
||||
<input type="text" class="input w-72 preset-tonal-surface hover:preset-filled-surface-100-900 form-control" id="attend_phone_passcode" name="attend_phone_passcode" placeholder="Passcode to join conference call" value={$lq__event_obj?.attend_phone_passcode ?? ''} autocomplete="off">
|
||||
</label>
|
||||
$idaa_trig = 'update_zoom_full_url';
|
||||
} else {
|
||||
// $idaa_slct.event_obj.attend_url_code = '';
|
||||
}
|
||||
}}
|
||||
class="
|
||||
form-control
|
||||
input w-72 preset-tonal-surface hover:preset-filled-surface-100-900
|
||||
invalid:[&:not(:placeholder-shown):not(:focus)]:border-red-500
|
||||
required:preset-filled-warning
|
||||
invalid:preset-filled-error
|
||||
"
|
||||
placeholder="Zoom Meeting ID"
|
||||
>
|
||||
</label>
|
||||
<label for="attend_url_passcode">
|
||||
Zoom Passcode
|
||||
<input
|
||||
type="text"
|
||||
id="attend_url_passcode" name="attend_url_passcode"
|
||||
autocomplete="off"
|
||||
bind:value={$idaa_slct.event_obj.attend_url_passcode}
|
||||
onchange={() => {
|
||||
console.log('Changed Zoom Passcode to:', $idaa_slct.event_obj.attend_url_passcode);
|
||||
if ($idaa_slct.event_obj.attend_url_passcode && $idaa_slct.event_obj.attend_url_passcode.length > 3) {
|
||||
// $idaa_slct.event_obj.attend_url_passcode = String($idaa_slct.event_obj.attend_url_passcode).trim();
|
||||
|
||||
$idaa_trig = 'update_zoom_full_url';
|
||||
} else {
|
||||
$idaa_slct.event_obj.attend_url_passcode = '';
|
||||
}
|
||||
}}
|
||||
class="
|
||||
form-control
|
||||
input w-72 preset-tonal-surface hover:preset-filled-surface-100-900
|
||||
"
|
||||
placeholder="Zoom Passcode"
|
||||
>
|
||||
</label>
|
||||
<label for="attend_url_passcode_enc">
|
||||
Zoom Encrypted Passcode
|
||||
<input
|
||||
type="text"
|
||||
id="attend_url_passcode_enc" name="attend_url_passcode_enc"
|
||||
autocomplete="off"
|
||||
bind:value={$idaa_slct.event_obj.attend_json.zoom.passcode_enc}
|
||||
onchange={() => {
|
||||
console.log('Changed Zoom Encrypted Passcode to:', $idaa_slct.event_obj.attend_json.zoom.passcode_enc);
|
||||
if ($idaa_slct.event_obj.attend_json.zoom.passcode_enc && $idaa_slct.event_obj.attend_json.zoom.passcode_enc.length >= 8) {
|
||||
// $idaa_slct.event_obj.attend_json.zoom.passcode_enc = String($idaa_slct.event_obj.attend_json.zoom.passcode_enc).replace(/[^a-zA-Z0-9]/g, '').trim();
|
||||
|
||||
$idaa_trig = 'update_zoom_full_url';
|
||||
} else {
|
||||
// $idaa_slct.event_obj.attend_json.zoom.passcode_enc = '';
|
||||
}
|
||||
}}
|
||||
class="
|
||||
form-control
|
||||
input w-72 preset-tonal-surface hover:preset-filled-surface-100-900
|
||||
"
|
||||
placeholder="Zoom Encrypted Passcode"
|
||||
>
|
||||
</label>
|
||||
<label for="attend_domain">
|
||||
Zoom domain / Vanity URL
|
||||
<input
|
||||
type="text"
|
||||
id="attend_domain" name="attend_domain"
|
||||
autocomplete="url"
|
||||
bind:value={$idaa_slct.event_obj.attend_json.zoom.domain}
|
||||
onchange={() => {
|
||||
console.log('Changed Zoom domain to:', $idaa_slct.event_obj.attend_json.zoom.domain);
|
||||
if ($idaa_slct.event_obj.attend_json.zoom.domain) {
|
||||
// Remove any protocol (http:// or https://) and any trailing slashes
|
||||
// $idaa_slct.event_obj.attend_json.zoom.domain = String($idaa_slct.event_obj.attend_json.zoom.domain).replace(/(^\w+:|^)\/\//, '').replace(/\/+$/, '').toLowerCase();
|
||||
// $idaa_slct.event_obj.attend_json.zoom.domain = String($idaa_slct.event_obj.attend_json.zoom.domain).toLowerCase();
|
||||
|
||||
$idaa_trig = 'update_zoom_full_url';
|
||||
} else {
|
||||
$idaa_slct.event_obj.attend_json.zoom.domain = 'zoom.us';
|
||||
}
|
||||
}}
|
||||
class="
|
||||
form-control
|
||||
input w-72 preset-tonal-surface hover:preset-filled-surface-100-900
|
||||
"
|
||||
placeholder="Zoom domain"
|
||||
>
|
||||
<!-- Example: example.zoom.us -->
|
||||
</label>
|
||||
</div>
|
||||
<label for="zoom_attend_url">
|
||||
Zoom Meeting URL
|
||||
<input
|
||||
type="url"
|
||||
id="zoom_attend_url" name="zoom_attend_url"
|
||||
autocomplete="url"
|
||||
readonly
|
||||
bind:value={$idaa_slct.event_obj.attend_json.zoom.full_url}
|
||||
class="
|
||||
input w-100 preset-tonal-surface hover:preset-filled-surface-100-900 form-control
|
||||
"
|
||||
placeholder="Zoom Meeting URL"
|
||||
>
|
||||
<!-- Example: https://zoom.us/j/1234567890?pwd=abcdefg -->
|
||||
</label>
|
||||
<!-- https://{$idaa_slct.event_obj?.attend_json?.zoom?.domain?? 'zoom.us'}/j/{$idaa_slct.event_obj?.attend_url_code ?? 'INVALID' }?pwd={$idaa_slct.event_obj?.attend_url_passcode ?? 'REQUIRED'} -->
|
||||
|
||||
<!-- {$idaa_slct.event_obj.attend_json.zoom.full_url} -->
|
||||
|
||||
{:else if !$idaa_sess.recovery_meetings?.attend_platform || $idaa_sess.recovery_meetings?.attend_platform === 'other'}
|
||||
<label for="attend_url">URL to access the virtual meeting
|
||||
<input type="url" class="input w-72 preset-tonal-surface hover:preset-filled-surface-100-900 form-control" id="attend_url" name="attend_url" placeholder="URL to access the virtual meeting" value={$lq__event_obj?.attend_url ?? ''} autocomplete="url">
|
||||
</label>
|
||||
<label for="attend_url_passcode">Passcode to join at URL
|
||||
<input type="text" class="input w-72 preset-tonal-surface hover:preset-filled-surface-100-900 form-control" id="attend_url_passcode" name="attend_url_passcode" placeholder="Passcode to join at URL" value={$lq__event_obj?.attend_url_passcode ?? ''} autocomplete="off">
|
||||
</label>
|
||||
|
||||
<label for="attend_phone">Phone number for meeting conference call
|
||||
<input type="tel" class="input w-72 preset-tonal-surface hover:preset-filled-surface-100-900 form-control" id="attend_phone" name="attend_phone" placeholder="Phone number for meeting conference call" value={$lq__event_obj?.attend_phone ?? ''} autocomplete="tel">
|
||||
</label>
|
||||
<label for="attend_phone_passcode">Passcode to join conference call
|
||||
<input type="text" class="input w-72 preset-tonal-surface hover:preset-filled-surface-100-900 form-control" id="attend_phone_passcode" name="attend_phone_passcode" placeholder="Passcode to join conference call" value={$lq__event_obj?.attend_phone_passcode ?? ''} autocomplete="off">
|
||||
</label>
|
||||
{/if}
|
||||
|
||||
</fieldset>
|
||||
|
||||
<label for="attend_text" class="w-full">
|
||||
<span class="text-lg font-semibold">
|
||||
<span class="text-lg text-neutral-500 font-semibold">
|
||||
Additional information on how to attend
|
||||
</span>
|
||||
<!-- <textarea class="ae_value event__attend_text tinymce_editor editor_less_100 textarea" id="attend_text" name="attend_text" placeholder="Additional information on how to attend or join the meeting" rows="2" cols="70" value={$lq__event_obj?.attend_text ?? ''}></textarea> -->
|
||||
@@ -1201,7 +1511,7 @@ $effect(() => {
|
||||
|
||||
<!-- <legend class="legend">Recurring</legend> -->
|
||||
<label for="recurring_pattern" class="form-group w-100 col-12">
|
||||
<span class="text-lg font-semibold">
|
||||
<span class="text-lg text-neutral-500 font-semibold">
|
||||
Recurring Repeats
|
||||
</span>
|
||||
<select
|
||||
@@ -1269,7 +1579,7 @@ $effect(() => {
|
||||
|
||||
<fieldset class="flex flex-row flex-wrap gap-1 items-center justify-start flex_row flex_gap_md flex_justify_around space-y-1">
|
||||
<label class="form-group w-56">
|
||||
<span class="text-lg font-semibold">
|
||||
<span class="text-lg text-neutral-500 font-semibold">
|
||||
Timezone
|
||||
</span>
|
||||
{#if $ae_loc?.lu_time_zone_list && $ae_loc?.lu_time_zone_list.length > 0}
|
||||
@@ -1296,7 +1606,7 @@ $effect(() => {
|
||||
<!-- client TZ: {$ae_loc?.current_timezone} -->
|
||||
</label>
|
||||
<label class="form-group">
|
||||
<span class="text-lg font-semibold">
|
||||
<span class="text-lg text-neutral-500 font-semibold">
|
||||
Start Time
|
||||
</span>
|
||||
<input name="recurring_start_time"
|
||||
@@ -1311,7 +1621,7 @@ $effect(() => {
|
||||
/>
|
||||
</label>
|
||||
<label class="form-group">
|
||||
<span class="text-lg font-semibold">
|
||||
<span class="text-lg text-neutral-500 font-semibold">
|
||||
End Time
|
||||
</span>
|
||||
<input
|
||||
@@ -1331,7 +1641,7 @@ $effect(() => {
|
||||
{#if ( $ae_loc.administrator_access || $lq__event_obj && ($idaa_slct.event_obj?.show_recurring_text || ($lq__event_obj?.recurring_text && !$lq__event_obj?.recurring_text.includes('*gen*'))) )}
|
||||
<p>Please only use the text box for additional information if the options above do not cover your needs. This may affect how this meeting shows up in search results.</p>
|
||||
<label for="recurring_text" class="w-full">
|
||||
<span class="text-lg font-semibold">
|
||||
<span class="text-lg text-neutral-500 font-semibold">
|
||||
Additional information on when and how often
|
||||
</span>
|
||||
<!-- <textarea class="ae_value event__recurring_text tinymce_editor editor_less_100 textarea" id="recurring_text" name="recurring_text" placeholder="Additional information on when and how often" value={$lq__event_obj?.recurring_text ?? ''}></textarea> -->
|
||||
@@ -1375,6 +1685,7 @@ $effect(() => {
|
||||
novi_btn
|
||||
btn btn-sm
|
||||
preset-filled-tertiary-200-800
|
||||
transition
|
||||
"
|
||||
onclick={() => {
|
||||
if (confirm('Are you sure you want to remove the text for the additional details?')) {
|
||||
@@ -1396,6 +1707,7 @@ $effect(() => {
|
||||
novi_btn
|
||||
btn btn-sm
|
||||
preset-filled-success-200-800
|
||||
transition
|
||||
"
|
||||
onclick={preventDefault(() => {
|
||||
// Remove *gen* prefix from recurring_text
|
||||
|
||||
@@ -6,6 +6,7 @@ import { browser } from '$app/environment';
|
||||
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 } from '$lib/ae_idaa_stores';
|
||||
import MyClipboard from '$lib/e_app_clipboard.svelte';
|
||||
|
||||
export let lq__event_obj: any;
|
||||
|
||||
@@ -139,6 +140,54 @@ if ($idaa_slct.event_id) {
|
||||
class:meeting_virtual={$lq__event_obj?.virtual}
|
||||
class:hidden={!$lq__event_obj?.virtual}
|
||||
>
|
||||
|
||||
<div
|
||||
class="event__attend"
|
||||
class:ae_d_none={!$lq__event_obj?.attend_json?.zoom?.full_url}
|
||||
>
|
||||
<span class="ae_label">
|
||||
<span class="fas fa-video m-1"></span>
|
||||
Zoom Meeting:
|
||||
</span>
|
||||
<span class="ae_value">
|
||||
<!-- text-blue-800 hover:underline -->
|
||||
<a
|
||||
href="{$lq__event_obj?.attend_json?.zoom?.full_url}"
|
||||
target="_blank"
|
||||
class="
|
||||
novi_btn btn-default
|
||||
btn btn-sm
|
||||
preset-outlined-tertiary-800-200
|
||||
preset-filled-tertiary-200-800
|
||||
hover:preset-filled-tertiary-600-400
|
||||
transition
|
||||
"
|
||||
>
|
||||
<span class="fas fa-link m-1"></span>
|
||||
<!-- {$lq__event_obj?.attend_json?.zoom?.full_url} -->
|
||||
Join: Zoom ID {$lq__event_obj?.attend_json?.zoom?.meeting_id}
|
||||
{#if $lq__event_obj?.attend_json?.zoom?.passcode}
|
||||
| Passcode: {$lq__event_obj?.attend_json?.zoom?.passcode}
|
||||
{/if}
|
||||
</a>
|
||||
</span>
|
||||
|
||||
<MyClipboard
|
||||
value={$lq__event_obj?.attend_json?.zoom?.full_url}
|
||||
btn_text="Copy Zoom Link"
|
||||
btn_title="Copy Zoom link to clipboard"
|
||||
btn_class="
|
||||
novi_btn
|
||||
btn btn-sm
|
||||
preset-outlined-tertiary-800-200
|
||||
preset-filled-tertiary-200-800
|
||||
hover:preset-filled-tertiary-600-400
|
||||
transition
|
||||
"
|
||||
></MyClipboard>
|
||||
</div>
|
||||
|
||||
{#if !$lq__event_obj?.attend_json?.zoom?.full_url || !$lq__event_obj?.attend_json?.zoom?.meeting_id}
|
||||
<div class="meeting_attend_url"
|
||||
class:hidden={!$lq__event_obj?.attend_url}
|
||||
>
|
||||
@@ -163,6 +212,7 @@ if ($idaa_slct.event_id) {
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
{/if}
|
||||
<div class="meeting_attend_phone"
|
||||
class:hidden={!$lq__event_obj?.attend_phone}
|
||||
>
|
||||
|
||||
@@ -28,6 +28,7 @@ import { ae_util } from '$lib/ae_utils/ae_utils';
|
||||
import { core_func } from '$lib/ae_core/ae_core_functions';
|
||||
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 } from '$lib/ae_idaa_stores';
|
||||
import MyClipboard from '$lib/e_app_clipboard.svelte';
|
||||
|
||||
|
||||
if (browser) {
|
||||
@@ -228,6 +229,52 @@ function add_activity_log(
|
||||
<span class="ae_value">{idaa_event_obj?.type}</span>
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="event__attend"
|
||||
class:ae_d_none={!idaa_event_obj?.attend_json?.zoom?.full_url}
|
||||
>
|
||||
<span class="ae_label">
|
||||
<span class="fas fa-video m-1"></span>
|
||||
Zoom Meeting:
|
||||
</span>
|
||||
<span class="ae_value">
|
||||
<!-- text-blue-800 hover:underline -->
|
||||
<a
|
||||
href="{idaa_event_obj?.attend_json?.zoom?.full_url}"
|
||||
target="_blank"
|
||||
class="
|
||||
novi_btn btn-default
|
||||
btn btn-sm
|
||||
preset-outlined-tertiary-800-200
|
||||
preset-filled-tertiary-200-800
|
||||
hover:preset-filled-tertiary-600-400
|
||||
transition
|
||||
"
|
||||
>
|
||||
<span class="fas fa-link m-1"></span>
|
||||
<!-- {idaa_event_obj?.attend_json?.zoom?.full_url} -->
|
||||
Join: Zoom ID {idaa_event_obj?.attend_json?.zoom?.meeting_id}
|
||||
{#if idaa_event_obj?.attend_json?.zoom?.passcode}
|
||||
| Passcode: {idaa_event_obj?.attend_json?.zoom?.passcode}
|
||||
{/if}
|
||||
</a>
|
||||
</span>
|
||||
|
||||
<MyClipboard
|
||||
value={idaa_event_obj?.attend_json?.zoom?.full_url}
|
||||
btn_text="Copy Zoom Link"
|
||||
btn_title="Copy Zoom link to clipboard"
|
||||
btn_class="
|
||||
novi_btn
|
||||
btn btn-sm
|
||||
preset-outlined-tertiary-800-200
|
||||
preset-filled-tertiary-200-800
|
||||
hover:preset-filled-tertiary-600-400
|
||||
transition
|
||||
"
|
||||
></MyClipboard>
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="ae_group event__timezone event__recurring_start_time"
|
||||
>
|
||||
|
||||
Reference in New Issue
Block a user