Now with QR codes for sessions and presenters!

This commit is contained in:
Scott Idem
2024-07-18 17:15:12 -04:00
parent a6f8f00e9e
commit af17a05022
7 changed files with 234 additions and 9 deletions

109
src/lib/ae_core__qr_code.ts Normal file
View File

@@ -0,0 +1,109 @@
import type { key_val } from '$lib/ae_stores';
import { api } from '$lib/api';
import { db_core } from "$lib/db_core";
let ae_promises: key_val = {};
// Updated 2024-07-18
export async function generate_qr_code(
{
api_cfg,
account_id,
qr_type, // mecard, obj, str, vcard
qr_id, // This is essentially the filename it can be found at /qr/{account_id}/{qr_id}
qr_data, // vcard fields:
obj_type,
obj_id,
str, // For encoding a string (like a URL) into a QR code.
return_blob=true, // blob or url?
try_cache=false,
log_lvl=0
}: {
api_cfg: any,
account_id: string,
qr_type: string,
qr_id: string,
qr_data?: any,
obj_type?: string,
obj_id?: string,
str?: string,
return_blob?: boolean,
try_cache?: boolean,
log_lvl?: number
}
) {
console.log(`*** generate_qr_code() *** qr_id=${qr_id}`);
let endpoint = `/qr/${account_id}/${qr_id}`;
console.log('Endpoint', endpoint);
let params: key_val = {
'regen': true, // Regenerate the file even if nothing has changed.
'return_file': return_blob,
'qr_type': qr_type, // mecard, obj, vcard
'qr_send': return_blob
};
if (qr_type == 'vcard') {
if (qr_data.informal_name) {
params['n'] = `${qr_data.family_name};${qr_data.given_name};${qr_data.informal_name}`;
} else {
params['n'] = `${qr_data.family_name};${qr_data.given_name}`;
}
params['fn'] = qr_data.full_name_override;
if (qr_data.affiliations) { params['org'] = qr_data.affiliations; }
// url
params['email'] = qr_data.email;
if (qr_data.phone) { params['tel'] = qr_data.phone; }
params['adr'] = qr_data.location_override;
if (qr_data.address_line_1) { params['adr_str'] = qr_data.address_line_1; }
params['adr_loc'] = qr_data.city;
params['adr_reg'] = qr_data.state_province;
params['adr_postal'] = qr_data.postal_code;
params['adr_country'] = qr_data.country;
} else if (qr_type == 'obj') {
params['obj_type'] = obj_type;
params['obj_id'] = obj_id;
} else if (qr_type == 'str') {
params['str'] = str;
}
console.log('Params', params);
// let filename = `qr_${$ae_loc.account_id}_${qr_id}_${qr_type}.png`;
let filename = null;
ae_promises.generate_qr_code = await api.get_object({
api_cfg: api_cfg,
endpoint: endpoint,
params: params,
return_blob: return_blob,
filename: filename,
auto_download: false,
log_lvl: log_lvl
});
console.log('QR Badge ID done?');
if (return_blob) {
let img_blob = new Blob([ae_promises.generate_qr_code.data]);
let img_obj_url = URL.createObjectURL(img_blob);
// console.log(img_obj_url);
// return img_blob;
return img_obj_url;
}
// let img_blob = new Blob([ae_promises.generate_qr_code.data]);
// console.log(img_blob);
// let img_obj_url = URL.createObjectURL(img_blob);
// console.log(img_obj_url);
// let qr_img_src = img_obj_url;
return ae_promises.generate_qr_code;
}

View File

@@ -11,12 +11,10 @@ import {
// handle_db_save_ae_obj_li__person
} from "$lib/ae_core__person";
// import { liveQuery } from "dexie";
// import { db_core } from "$lib/db_core";
import {
generate_qr_code,
} from "$lib/ae_core__qr_code";
// let example_li = liveQuery(
// () => db_core.badges.toArray()
// );
let ae_promises: key_val = {}; // Promise<any>;
@@ -373,5 +371,6 @@ let export_obj = {
handle_create_ae_obj__person: handle_create_ae_obj__person,
handle_update_ae_obj_id_crud: handle_update_ae_obj_id_crud,
handle_download_export__obj_type: handle_download_export__obj_type,
generate_qr_code: generate_qr_code
};
export let core_func = export_obj;

View File

@@ -287,9 +287,9 @@ let events_session_data_struct: key_val = {
new_upload_list: null,
files_uploading_count: null,
qry_max__sessions: 25,
qry_max__sessions: 75,
qry_max__presentations: 25,
qry_max__presenters: 25,
qry_max__presenters: 75,
qry_max__files: 25,
show_fields__presentation: true,
show_fields__session: true,