Changes from before AAPOR

This commit is contained in:
Scott Idem
2024-05-20 17:24:23 -04:00
parent f72d7be5b2
commit fa58d1accb
13 changed files with 609 additions and 21 deletions

View File

@@ -181,15 +181,15 @@ async function handle_load_ae_obj_li__sponsorship({account_id, try_cache=true})
if ($ae_loc.administrator_access) {
enabled = 'all';
hidden = 'all';
// hidden = 'all';
limit = 150;
} else if ($ae_loc.trusted_access) {
enabled = 'enabled';
hidden = 'not_hidden';
// hidden = 'not_hidden';
limit = 100;
} else {
enabled = 'enabled';
hidden = 'not_hidden';
// hidden = 'not_hidden';
limit = 25;
}
@@ -424,6 +424,58 @@ function send_guest_list_email() {
body_html: body_html,
});
}
function generate_guest_list_csv(ae_obj_li) {
console.log(`*** generate_guest_list_csv() ***`, ae_obj_li);
// We need to create a list with the column names and then a list of lists with the data.
let csv_data = [];
let csv_columns = ['Sponsor', 'Level', 'POC', 'Guest', 'Title', 'Affiliations', 'ADA', 'Dietary', 'Comments'];
csv_data.push(csv_columns);
for (let i = 0; i < ae_obj_li.length; i++) {
if (ae_obj_li[i].guest_li_json && ae_obj_li[i].guest_li_json.length > 0) {
for (let j = 0; j < ae_obj_li[i].guest_li_json.length; j++) {
let csv_row = [];
csv_row.push(ae_obj_li[i].name);
csv_row.push(ae_obj_li[i].level_num);
csv_row.push(ae_obj_li[i].poc_json.full_name ?? ae_obj_li[i].poc_json.given_name);
csv_row.push(ae_obj_li[i].guest_li_json[j].full_name);
csv_row.push(ae_obj_li[i].guest_li_json[j].title ?? '');
csv_row.push(ae_obj_li[i].guest_li_json[j].affiliations ?? '');
csv_row.push(ae_obj_li[i].guest_li_json[j].ada ?? '');
csv_row.push(ae_obj_li[i].guest_li_json[j].dietary ?? '');
csv_row.push(ae_obj_li[i].guest_li_json[j].comments ?? '');
csv_data.push(csv_row);
}
}
}
console.log('CSV Data:', csv_data);
let csv_content_str = '';
csv_data.forEach(function(row) {
csv_content_str += row.join(',');
csv_content_str += '\n';
});
const blob = new Blob([csv_content_str], { type: 'text/csv;charset=utf-8;' });
const obj_url = URL.createObjectURL(blob);
const download_link = document.createElement('a');
download_link.setAttribute('href', obj_url);
download_link.setAttribute('download', `CHOW_2024_Sponsor_Hub_guest_list_${ae_util.iso_datetime_formatter()}.csv`);
download_link.setAttribute('style', 'display: none;')
download_link.textContent = 'Download CSV';
// document.querySelector('body').appendChild(download_link);
document.getElementById('download_csv_container').appendChild(download_link);
// Automatically download the file
download_link.click();
return csv_data;
}
</script>
@@ -436,7 +488,9 @@ function send_guest_list_email() {
</h1>
</header>
<section>
<section
class="flex flex-col items-center space-y-2"
>
<button
class="btn variant-ghost-primary"
on:click={() => {
@@ -453,11 +507,14 @@ function send_guest_list_email() {
Start Sponsor Submission Form
</button>
{#if $ae_loc.trusted_access}
<span>
<button
type="button"
on:click={() => {
if (!confirm('Download data exported to an Excel file?')) {
if (!confirm('Download all data exported to an Excel file?')) {
return false;
}
ae_promises.download__sponsorships_export = core_func.handle_download_export__obj_type({
@@ -473,22 +530,21 @@ function send_guest_list_email() {
});
}}
class="btn btn-sm variant-ghost-primary w-48 mb-1 export_data_btn"
class="btn btn-sm variant-ghost-warning w-42 mb-1 export_data_btn text-xs"
title={`Download sponsorship data for ${$ae_loc.account_name}`}
>
{#await ae_promises.download__sponsorship_export}
<span class="fas fa-spinner fa-spin"></span>
<!-- <span class="loading-text">
Downloading...
</span> -->
<span class="fas fa-spinner fa-spin"></span>
{:then}
<!-- Done? -->
{/await}
<span class="fas fa-download mx-1"></span> Export Data
<span class="fas fa-download mx-1"></span> Export All Data
{#if $ae_sess.download && $ae_sess.download.size_total > $ae_sess.download.size_loaded}
{$ae_sess.download.percent_completed}%
{/if}
</button>
<button
<!-- <button
class="btn btn-sm variant-ghost-primary w-48 mb-1 email_data_btn"
on:click={() => {
if (!confirm(`Are you sure you want to send this email? To: ${$ae_loc.user_email}?`)) {return false;}
@@ -504,7 +560,47 @@ function send_guest_list_email() {
>
<span class="fas fa-paper-plane mx-1"></span>
Email With Guest List
</button> -->
<button
class="btn btn-sm variant-ghost-warning w-42 mb-1 generate_csv_btn text-xs"
on:click={() => {
if (!confirm('Generate and download a CSV file with the guest list?')) {
return false;
}
let csv_data = generate_guest_list_csv($slct.sponsorship_obj_li);
console.log('CSV Data:', csv_data);
}}
>
<span class="fas fa-file-csv mx-1"></span>
Export Guest List CSV
</button>
<span id="download_csv_container"></span>
<button
on:click={async () => {
console.log('Show hidden sponsorships');
if ($ae_loc.qry__hidden == 'all') {
$ae_loc.qry__hidden = 'not_hidden';
$slct_trigger = 'load__sponsorship_obj_li';
} else {
$ae_loc.qry__hidden = 'all';
$slct_trigger = 'load__sponsorship_obj_li';
}
}}
class="btn btn-sm variant-ghost-warning w-42 mb-1 text-xs"
>
{#if $ae_loc.qry__hidden == 'all'}
<span class="fas fa-eye mx-1"></span>
Hide Hidden Sponsorships
{:else}
<span class="fas fa-eye-slash mx-1"></span>
Show Hidden Sponsorships
{/if}
</button>
</span>
{/if}
</section>

View File

@@ -2527,19 +2527,43 @@ async function handle_delete_sponsorship_obj({sponsorship_id, hosted_file_id=nul
{#if $slct.sponsorship_id}
<!-- {#if $ae_loc.trusted_access} -->
<span class="ae_actions">
{#if $ae_loc.administrator_access}
<button
on:click={() => {
if (!confirm('CURRENTLY DISABLED: Are you sure you want to delete this sponsorship?')) {return false;}
// handle_delete_sponsorship_obj({sponsorship_id: $slct.sponsorship_id, method: 'delete'});
if (!confirm('Are you sure you want to delete this sponsorship?')) {return false;}
// $slct.sponsorship_id = null;
// $slct.sponsorship_obj = {};
handle_delete_sponsorship_obj({sponsorship_id: $slct.sponsorship_id, method: 'delete'});
$slct.sponsorship_id = null;
$slct.sponsorship_obj = {};
}}
class="btn btn-sm variant-glass-warning mx-1"
title="Delete record permanently"
>
<span class="fas fa-minus mx-1"></span> Delete
</button>
{/if}
<button
on:click={() => {
if (!confirm('Are you sure you want to remove this sponsorship?')) {return false;}
let method = 'hide';
if ($ae_loc.trusted_access) {
method = 'disable';
} else {
method = 'hide';
}
handle_delete_sponsorship_obj({sponsorship_id: $slct.sponsorship_id, method: method});
$slct.sponsorship_id = null;
$slct.sponsorship_obj = {};
}}
class="btn btn-sm variant-glass-warning mx-1"
class:hidden={!$ae_loc.administrator_access}
title="CURRENTLY DISABLED: Delete record permanently"
title="Remove sponsorship"
>
<span class="fas fa-minus mx-1"></span> Delete
<span class="fas fa-trash mx-1"></span> Remove
</button>
<button

View File

@@ -41,6 +41,7 @@ onMount(() => {
<tr
id={`ae_sponsorship_id__${ae_sponsorship_obj.sponsorship_id_random}`}
class="ae_object sponsorship_obj"
class:fade_50={ae_sponsorship_obj.hide}
>
<td class="ae_options sponsorship_obj__options">