Speakers form is now working pretty well. Including delete.

This commit is contained in:
Scott Idem
2024-03-08 18:00:36 -05:00
parent b53566aa41
commit 875f327c90
4 changed files with 243 additions and 26 deletions

View File

@@ -438,7 +438,7 @@ function handle_url_and_message(name: string, value: null|string) {
window.parent.postMessage(message, "*");
} else {
url.searchParams.delete(name);
// history.pushState({}, '', url);
history.pushState({}, '', url);
// console.log('url:', url);
// pushState({}, '', url.search);

View File

@@ -822,7 +822,7 @@ export let get_ae_obj_li_for_obj_id_crud = async function get_ae_obj_li_for_obj_
// Updated 2023-07-24
export let create_ae_obj_crud = async function create_ae_obj_crud({api_cfg, obj_type, field_name=null, field_value=null, fields={}, key, jwt=null, headers={}, params={}, data={}, return_obj=false, return_meta=false, log_lvl=0}) {
export let create_ae_obj_crud = async function create_ae_obj_crud({api_cfg, obj_type, field_name=null, field_value=null, fields={}, key, jwt=null, headers={}, params={}, data={}, return_obj=false, obj_v_name='', return_meta=false, log_lvl=0}) {
if (log_lvl) {
console.log('*** create_ae_obj_crud() ***');
}
@@ -831,6 +831,12 @@ export let create_ae_obj_crud = async function create_ae_obj_crud({api_cfg, obj_
data['jwt'] = jwt;
// NOTE: The key and or JWT should be in the header of the DELETE, GET, PATCH, POST
// This obj_v_name is the view name to use when returning data. Do not prefix it with v_. This is checked and done automatically by the API.
// This is not currently being exposed to other areas of the code. It is only used here. For now?
if (obj_v_name) {
obj_v_name = '';
}
let endpoint = '';
if (obj_type == 'account') {
endpoint = `/crud/account`;
@@ -864,6 +870,7 @@ export let create_ae_obj_crud = async function create_ae_obj_crud({api_cfg, obj_
endpoint = `/crud/event/presentation`;
} else if (obj_type == 'event_presenter') {
endpoint = `/crud/event/presenter`;
// obj_v_name = 'event_presenter_soft_links';
} else if (obj_type == 'event_session') {
endpoint = `/crud/event/session`;
} else if (obj_type == 'event_track') {
@@ -906,6 +913,11 @@ export let create_ae_obj_crud = async function create_ae_obj_crud({api_cfg, obj_
if (return_obj) {
params['return_obj'] = true;
// Pass along the view name to use for returning data.
if (obj_v_name) {
params['obj_v_name'] = obj_v_name;
}
} else {
params['return_obj'] = false; // NOTE: This is needed because the current default on the API is to return the object.
}
@@ -955,7 +967,7 @@ export let create_ae_obj_crud = async function create_ae_obj_crud({api_cfg, obj_
// Updated 2023-06-28
export let update_ae_obj_id_crud = async function update_ae_obj_id_crud({api_cfg, obj_type, obj_id, field_name, field_value, fields={}, key, jwt=null, headers={}, params={}, data={}, return_obj=false, return_meta=false, log_lvl=0}) {
export let update_ae_obj_id_crud = async function update_ae_obj_id_crud({api_cfg, obj_type, obj_id, field_name, field_value, fields={}, key, jwt=null, headers={}, params={}, data={}, return_obj=false, obj_v_name='', return_meta=false, log_lvl=0}) {
if (log_lvl) {
console.log('*** update_ae_obj_id_crud() ***');
}
@@ -964,6 +976,12 @@ export let update_ae_obj_id_crud = async function update_ae_obj_id_crud({api_cfg
data['jwt'] = jwt;
// NOTE: The key and or JWT should be in the header of the DELETE, GET, PATCH, POST
// This obj_v_name is the view name to use when returning data. Do not prefix it with v_. This is checked and done automatically by the API.
// This is not currently being exposed to other areas of the code. It is only used here. For now?
if (obj_v_name) {
obj_v_name = '';
}
let endpoint = '';
if (obj_type == 'account') {
endpoint = `/crud/account/${obj_id}`;
@@ -997,6 +1015,7 @@ export let update_ae_obj_id_crud = async function update_ae_obj_id_crud({api_cfg
endpoint = `/crud/event/presentation/${obj_id}`;
} else if (obj_type == 'event_presenter') {
endpoint = `/crud/event/presenter/${obj_id}`;
// obj_v_name = 'event_presenter_soft_links';
} else if (obj_type == 'event_session') {
endpoint = `/crud/event/session/${obj_id}`;
} else if (obj_type == 'event_track') {
@@ -1039,6 +1058,13 @@ export let update_ae_obj_id_crud = async function update_ae_obj_id_crud({api_cfg
if (return_obj) {
params['return_obj'] = true;
// Pass along the view name to use for returning data.
if (obj_v_name) {
params['obj_v_name'] = obj_v_name;
}
} else {
params['return_obj'] = false; // NOTE: This is needed because the current default on the API is to return the object.
}
if (field_name) {

View File

@@ -172,15 +172,15 @@ if ($ae_loc.mod.events.event_id) {
// $slct_trigger = 'load__event_presenter_obj_li';
// }
// $: if ($slct_trigger == 'load__event_presenter_obj_li' && $slct.event_id) {
// console.log(`load__event_presenter_obj_li event_id: ${$slct.event_id}`);
$: if ($slct_trigger == 'load__event_presenter_obj_li' && $slct.event_id) {
console.log(`load__event_presenter_obj_li event_id: ${$slct.event_id}`);
// $slct_trigger = null;
$slct_trigger = null;
// // $slct.event_id = $ae_loc.event_id;
// // handle_load_ae_obj_id__event({event_id: $slct.event_id, try_cache: false});
// handle_load_ae_obj_li__event_presenter({event_id: $slct.event_id, try_cache: false});
// }
// $slct.event_id = $ae_loc.event_id;
// handle_load_ae_obj_id__event({event_id: $slct.event_id, try_cache: false});
handle_load_ae_obj_li__event_presenter({event_id: $slct.event_id, try_cache: false});
}
async function handle_load_ae_obj_li__event_presenter({event_id, try_cache=true}) {
console.log('*** handle_load_ae_obj_li__event_presenter() ***');
@@ -281,6 +281,69 @@ async function handle_load_ae_obj_id__event_presenter({event_presenter_id, try_c
return ae_event_presenter_obj_get_promise;
}
// // let delete_event_presenter_obj_promise: Promise<any>;
// let delete_event_presenter_obj_promise;
// async function handle_delete_event_presenter_obj({event_presenter_id, hosted_file_id=null, method='delete'}) {
// console.log('*** handle_delete_event_presenter_obj() ***');
// // if (hosted_file_id) {
// // let delete_hosted_file_obj_promise = api.delete_hosted_file({
// // api_cfg: $ae_api,
// // hosted_file_id: hosted_file_id,
// // link_to_type: 'event_presenter',
// // link_to_id: event_presenter_id,
// // rm_orphan: true,
// // // params: params,
// // key: $ae_api.api_crud_super_key,
// // log_lvl: 2
// // })
// // .then(function (hosted_file_obj_delete_result) {
// // if (hosted_file_obj_delete_result) {
// // // console.log(`Result:`, hosted_file_obj_delete_result);
// // dispatch(
// // 'deleted__hosted_file_obj',
// // {
// // hosted_file_id: hosted_file_id,
// // }
// // );
// // }
// // })
// // .catch(function (error) {
// // console.log('The result was null or false when trying to delete.', error);
// // });
// // }
// delete_event_presenter_obj_promise = api.delete_ae_obj_id_crud({
// api_cfg: $ae_api,
// obj_type: 'event_presenter',
// obj_id: event_presenter_id,
// method: method,
// // params: params,
// key: $ae_api.api_crud_super_key,
// log_lvl: 0
// })
// .then(function (event_presenter_obj_delete_result) {
// if (event_presenter_obj_delete_result) {
// // console.log(`Result:`, event_presenter_obj_delete_result);
// }
// })
// .catch(function (error) {
// console.log('The result was null or false when trying to delete.', error);
// });
// return delete_event_presenter_obj_promise;
// }
</script>

View File

@@ -237,23 +237,43 @@ async function handle_submit_form(event) {
data: event_presenter_do
});
console.log(ae_promises.create__event_presenter);
$ae_loc.mod.events.presenter_link = `${$ae_loc.site_domain}/events_speakers/load?event_presenter_id=${$slct.event_presenter_id}`;
console.log('Speaker link:', $ae_loc.mod.events.presenter_link);
if (ae_promises.create__event_presenter.event_presenter_id_random) {
$slct.event_presenter_id = ae_promises.create__event_presenter.event_presenter_id_random;
$slct.event_presenter_obj = ae_promises.create__event_presenter;
$ae_loc.mod.events.presenter_link = `${$ae_loc.site_domain}/events_speakers/load?event_presenter_id=${$slct.event_presenter_id}`;
console.log('Speaker link:', $ae_loc.mod.events.presenter_link);
// This should no longer be needed! Will add a check later to trigger this or a second create if something does not look correct.
// $slct_trigger = 'load__event_presenter_obj';
$ae_sess.mod.events.submit_status = 'created';
} else {
console.log('No event_presenter_id_random was found. Something may have gone wrong.');
$ae_sess.mod.events.submit_status = 'created_unknown';
}
$ae_loc.mod.events.disable_submit__event_presenter_obj = false;
$ae_sess.mod.events.submit_status = 'created';
$slct_trigger = 'load__event_presenter_obj';
} else {
ae_promises.update__event_presenter_obj = await handle_update__event_presenter({
obj_type: 'event_presenter',
obj_id: $slct.event_presenter_id,
data: event_presenter_do
});
$ae_loc.mod.events.disable_submit__event_presenter_obj = false;
$ae_sess.mod.events.submit_status = 'updated';
console.log(ae_promises.update__event_presenter_obj);
if (ae_promises.update__event_presenter_obj.event_presenter_id_random) {
$slct.event_presenter_obj = ae_promises.update__event_presenter_obj;
$slct_trigger = 'load__event_presenter_obj';
// $slct_trigger = 'load__event_presenter_obj';
$ae_sess.mod.events.submit_status = 'updated';
} else {
console.log('No event_presenter_id_random was found. Something may have gone wrong.');
$ae_sess.mod.events.submit_status = 'updated_unknown';
console.log('Trigger a reload of the object.');
$slct_trigger = 'load__event_presenter_obj';
}
$ae_loc.mod.events.disable_submit__event_presenter_obj = false;
}
if ($slct.event_presenter_id) {
@@ -266,6 +286,8 @@ async function handle_submit_form(event) {
} else if ($store_current_tab == 'files' && $slct.event_presenter_id) {
$store_current_tab = 'summary';
}
$slct_trigger = 'load__event_presenter_obj_li';
} else {
console.log('No obj ID found!');
}
@@ -318,8 +340,20 @@ async function handle_submit_form_files(event) {
obj_id: $slct.event_presenter_id,
data: event_presenter_do
});
console.log(ae_promises.update__event_presenter_obj);
if (ae_promises.update__event_presenter_obj.event_presenter_id_random) {
$slct.event_presenter_obj = ae_promises.update__event_presenter_obj;
// $slct_trigger = 'load__event_presenter_obj';
$ae_sess.mod.events.submit_status = 'updated';
} else {
console.log('No event_presenter_id_random was found. Something may have gone wrong.');
$ae_sess.mod.events.submit_status = 'updated_unknown';
console.log('Trigger a reload of the object.');
$slct_trigger = 'load__event_presenter_obj';
}
$ae_sess.mod.events.disable_submit__event_presenter_obj = false;
$ae_sess.mod.events.submit_status = 'updated';
if ($store_current_tab == 'files' && $slct.event_presenter_id) {
$store_current_tab = 'summary';
@@ -370,6 +404,7 @@ async function handle_create__event_presenter({
obj_type: obj_type,
fields: data,
key: $ae_api.api_crud_super_key,
return_obj: true,
log_lvl: 2
})
.then(async function (create__obj_result) {
@@ -402,6 +437,7 @@ async function handle_update__event_presenter({
obj_id: obj_id,
fields: data,
key: $ae_api.api_crud_super_key,
return_obj: true,
log_lvl: 2
})
.then(async function (update__obj_result) {
@@ -449,6 +485,66 @@ function send_summary_email() {
body_html: body_html,
});
}
// let delete_event_presenter_obj_promise: Promise<any>;
let delete_event_presenter_obj_promise;
async function handle_delete_event_presenter_obj({event_presenter_id, hosted_file_id=null, method='delete'}) {
console.log('*** handle_delete_event_presenter_obj() ***');
if (hosted_file_id) {
// let delete_hosted_file_obj_promise = api.delete_hosted_file({
// api_cfg: $ae_api,
// hosted_file_id: hosted_file_id,
// link_to_type: 'event_presenter',
// link_to_id: event_presenter_id,
// rm_orphan: true,
// // params: params,
// key: $ae_api.api_crud_super_key,
// log_lvl: 2
// })
// .then(function (hosted_file_obj_delete_result) {
// if (hosted_file_obj_delete_result) {
// // console.log(`Result:`, hosted_file_obj_delete_result);
// dispatch(
// 'deleted__hosted_file_obj',
// {
// hosted_file_id: hosted_file_id,
// }
// );
// }
// })
// .catch(function (error) {
// console.log('The result was null or false when trying to delete.', error);
// });
}
delete_event_presenter_obj_promise = await api.delete_ae_obj_id_crud({
api_cfg: $ae_api,
obj_type: 'event_presenter',
obj_id: event_presenter_id,
method: method,
// params: params,
key: $ae_api.api_crud_super_key,
log_lvl: 2
})
.then(function (event_presenter_obj_delete_result) {
if (event_presenter_obj_delete_result) {
// console.log(`Result:`, event_presenter_obj_delete_result);
}
})
.catch(function (error) {
console.log('The result was null or false when trying to delete.', error);
});
console.log('Trigger a reload of the object list.');
$slct_trigger = 'load__event_presenter_obj_li';
parent.onClose();
return delete_event_presenter_obj_promise;
}
</script>
<!-- @component This is the Event Presenters modal edit form. -->
@@ -675,7 +771,7 @@ function send_summary_email() {
ds_code="events_speakers__form__waiver_html"
ds_type="html"
for_type="devent"
for_id={$slct.event_id}
for_id={$slct.event_presenter_id}
ds_name="Default: Events Speaker Form - Waiver HTML"
display="block"
class_li=""
@@ -935,20 +1031,52 @@ function send_summary_email() {
{#if $slct.event_presenter_id}
<!-- {#if $ae_loc.trusted_access} -->
<span class="ae_actions">
{#if $slct.event_presenter_id}
{#if $ae_loc.administrator_access}
<button
on:click={() => {
if (!confirm('CURRENTLY DISABLED: Are you sure you want to delete this presenter?')) {return false;}
// handle_delete_event_presenter_obj({event_presenter_id: $slct.event_presenter_id, method: 'delete'});
if (!confirm('Are you sure you want to delete this speaker?')) {return false;}
handle_delete_event_presenter_obj({event_presenter_id: $slct.event_presenter_id, method: 'delete'});
// $slct.event_presenter_id = null;
// $slct.event_presenter_obj = {};
$slct.event_presenter_id = null;
$slct.event_presenter_obj = {};
}}
class="btn variant-glass-warning mx-1"
class:hidden={!$ae_loc.administrator_access}
title="CURRENTLY DISABLED: Delete record permanently"
class="btn variant-glass-warning mx-1 text-xs" type="button"
title="Delete record permanently"
>
<span class="fas fa-minus mx-1"></span> Delete
</button>
{:else if $ae_loc.trusted_access}
<button
on:click={() => {
if (!confirm('Are you sure you want to disable this speaker?')) {return false;}
handle_delete_event_presenter_obj({event_presenter_id: $slct.event_presenter_id, method: 'disable'});
$slct.event_presenter_id = null;
$slct.event_presenter_obj = {};
}}
class="btn variant-glass-warning mx-1 text-xs" type="button"
title="Disable record to delete"
>
<span class="fas fa-minus mx-1"></span> Delete
</button>
{:else}
<button
on:click={() => {
if (!confirm('Are you sure you want to hide this speaker?')) {return false;}
handle_delete_event_presenter_obj({event_presenter_id: $slct.event_presenter_id, method: 'hide'});
$slct.event_presenter_id = null;
$slct.event_presenter_obj = {};
}}
class="btn variant-glass-warning mx-1 text-xs" type="button"
title="Hide record to delete"
>
<span class="fas fa-comment-slash mx-1"></span> Delete
</button>
{/if}
{/if}
<button
class="btn variant-soft-secondary"