Still working on listing the presentations

This commit is contained in:
Scott Idem
2020-02-05 11:17:55 -05:00
parent c285483cec
commit 33d163512e
4 changed files with 978 additions and 30 deletions

View File

@@ -266,6 +266,9 @@
let safe_to_render_launcher = false; // currently only set to true in module_app_idb.js let safe_to_render_launcher = false; // currently only set to true in module_app_idb.js
let run_check_file_cache = false; let run_check_file_cache = false;
let looping_tbl_event_presentation = false;
//const loading_loop_interval = app_config.loading_loop_interval; // in milliseconds //const loading_loop_interval = app_config.loading_loop_interval; // in milliseconds
//const loading_loop_interval = 500; //const loading_loop_interval = 500;
//const main_loop_interval = app_config.main_loop_interval; // in milliseconds //const main_loop_interval = app_config.main_loop_interval; // in milliseconds
@@ -401,7 +404,7 @@
run_idb_to_launcher = true; // Set to true so that the launcher object is rebuilt run_idb_to_launcher = true; // Set to true so that the launcher object is rebuilt
safe_to_render_launcher = false; // Set to false so that the launcher render only starts after the launcher object has updated safe_to_render_launcher = false; // Set to false so that the launcher render only starts after the launcher object has updated
idb_event_presentation_check_datetime = Date.now() + idb_event_presentation_check_period; idb_event_presentation_check_datetime = Date.now() + idb_event_presentation_check_period;
let render_event_presentation_records_result = uiv2.render_event_presentation_records(); // NOTE: v2 idb to ui let render_event_presentation_records_result = await uiv2.render_event_presentation_records(); // NOTE: v2 idb to ui
} }
if (idb_event_presenter_check_datetime < Date.now()) { if (idb_event_presenter_check_datetime < Date.now()) {

View File

@@ -0,0 +1,436 @@
exports.render_event_records = function () {
console.log('Rendering event records...');
//console.log(tbl_event);
//console.log(event_id);
tbl_event.iterate(function(value, key, iteration) {
if (value.id == event_id) {
console.log('*** Event id ('+event_id+') found in table.');
document.getElementById('event_name').innerHTML = '@'+value.name;
} else {
console.log('Event not it.');
}
}).then(function() {
console.log('idb_to_ui: Iterate tbl_event_file complete')
tbl_event_complete = true;
});
}
// NOTE: The event_file table should probably only be looped through once when the table is actually updated.
// NOTE: Not each time the other objects (event, location, session, presentation, presenter) are updated.
exports.render_event_file_records = function (event_files, event_id) {
console.log('Rendering event file records...');
/*
tbl_event_file.iterate(function(value, key, iteration) {
if (value.id == event_id) {
console.log('*** Event id ('+event_id+') found in table.');
document.getElementById('event_name').innerHTML = '@'+value.name;
} else {
console.log('Event not it.');
}
}).then(function() {
console.log('idb_to_ui: Iterate tbl_event_file complete')
tbl_event_complete = true;
});
document.getElementById('event_files_menu').innerHTML = '<h2>Event Files</h2>';
document.getElementById('event_files_menu').innerHTML += '<ul class="list-group list-group-flush">';
for (var i in launcher_tmp.event_file) {
document.getElementById('event_files_menu').innerHTML += '<li id="menu_event_file_'+launcher_tmp.event_file[i].event_file_id+'" class="list-group-item btn btn-secondary d-flex justify-content-between align-items-center open_local_file" data-hash_sha256="'+launcher_tmp.event_file[i].hash_sha256+'.file" data-filename="'+launcher_tmp.event_file[i].event_file_filename+'">'+launcher_tmp.event_file[i].event_file_filename+'</li>';
}
document.getElementById('event_files_menu').innerHTML += '</ul>';
*/
}
exports.render_event_location_records = async function () {
console.log('Rendering event location records...');
await tbl_event_location.iterate(function(value, key, iteration) {
if (value.id == event_location_id) {
console.log('*** Event location id ('+event_location_id+') found in table.');
document.getElementById('location_name').innerHTML = '<span class="fas fa-map-marker"></span> '+value.name;
} else {
console.log('Event location not it.');
}
}).then(function() {
console.log('idb_to_ui: Iterate tbl_event_file complete')
tbl_event_location_complete = true;
});
}
exports.render_event_location_file_records = function (events) {
console.log('Rendering event location file records...');
}
exports.render_event_session_records = async function () {
console.log('Rendering event session records...');
// First: update or add sessions
tbl_event_session.iterate(function(value, key, iteration) {
if (value.event_id == event_id && value.event_location_id == event_location_id) {
console.log('*** Event session id ('+value.id+') is part of this event location.');
// *** ** * Checking if the session is already in the launcher menu * ** ***
if (document.getElementById('menu_event_session_'+value.id)) {
// Update the session menu list item
document.getElementById('menu_event_session_'+value.id).innerHTML = value.name;
} else {
// Unhide the sessions menu
if (document.getElementById('sessions_menu').classList.contains('d-none') ) {
document.getElementById('sessions_menu').classList.remove('d-none');
document.getElementById('sessions_menu').classList.add('d-block');
}
// Add the new session to the session menu
let node = document.createElement('LI');
node.id = 'menu_event_session_'+value.id;
node.className = 'list-group-item btn btn-info d-flex justify-content-between align-items-center btn_view_session';
node.setAttribute('data-session_id', value.id);
let text_node = document.createTextNode(value.name);
node.appendChild(text_node);
document.getElementById('sessions_menu').getElementsByTagName('ul')[0].appendChild(node);
}
let session_startdatetime = new Date(value.start_datetime);
// *** ** * Checking if the session is already in the launcher sessions detail * ** ***
if (document.getElementById('detail_session_'+value.id)) {
// Update the launcher sessions list
// NOTE: Updating this text is very awkward?
document.getElementById('detail_session_'+value.id).getElementsByTagName('h2')[0].firstChild.data = value.name;
console.log(document.getElementById('detail_session_'+value.id).getElementsByTagName('h2')[0]);
document.getElementById('detail_session_'+value.id).getElementsByTagName('h2')[0].getElementsByTagName('span')[0].innerHTML = dateFns.format(session_startdatetime, 'ddd h:mm A');
} else {
// Add the new session to the launcher sessions list
let div_node = document.createElement('DIV');
div_node.id = 'detail_session_'+value.id;
div_node.className = 'container d-none session_detail';
div_node.setAttribute('data-session_id', value.id);
let h2_node = document.createElement('H2');
h2_node.className = 'session_title d-flex justify-content-between align-items-center';
// NOTE: Instead of a text node should this just be wrapped in a set of tags?
// Updating this is kind of awkward... see above
let h2_text_node = document.createTextNode(value.name);
h2_node.appendChild(h2_text_node);
let h2_span_node = document.createElement('SPAN');
h2_span_node.className = 'badge badge-pill badge-info';
let h2_span_text_node = document.createTextNode(dateFns.format(session_startdatetime, 'ddd h:mm A'));
h2_span_node.appendChild(h2_span_text_node);
h2_node.appendChild(h2_span_node);
div_node.appendChild(h2_node);
// Add placeholder cards for session files and session presentations
// Files
let files_div_node = document.createElement('DIV');
files_div_node.className = 'card session_files';
let files_header_div_node = document.createElement('DIV');
files_header_div_node.className = 'card-header';
let files_header_text_node = document.createTextNode('Sessions Files:');
files_header_div_node.appendChild(files_header_text_node);
let files_body_div_node = document.createElement('DIV');
files_body_div_node.className = 'card-body';
let files_body_ul_node = document.createElement('UL');
files_body_ul_node.className = 'list-group list-group-flush';
files_body_div_node.appendChild(files_body_ul_node);
files_div_node.appendChild(files_header_div_node);
files_div_node.appendChild(files_body_div_node);
div_node.appendChild(files_div_node);
// Presentations
let presentations_div_node = document.createElement('DIV');
presentations_div_node.className = 'card session_presentations';
let presentations_header_div_node = document.createElement('DIV');
presentations_header_div_node.className = 'card-header';
let presentations_header_text_node = document.createTextNode('Presentations:');
presentations_header_div_node.appendChild(presentations_header_text_node);
let presentations_body_div_node = document.createElement('DIV');
presentations_body_div_node.className = 'card-body';
let presentations_body_ul_node = document.createElement('UL');
presentations_body_ul_node.className = 'list-group list-group-flush';
presentations_body_div_node.appendChild(presentations_body_ul_node);
presentations_div_node.appendChild(presentations_header_div_node);
presentations_div_node.appendChild(presentations_body_div_node);
div_node.appendChild(presentations_div_node);
document.getElementById('launcher_sessions').appendChild(div_node);
}
} else {
console.log('Event session not it.');
}
}).then(function() {
console.log('idb_to_ui: Iterate tbl_event_session complete')
tbl_event_session_complete = true;
}).then(function() {
// Second: remove sessions from the launcher sessions menu and sessions list
// This is basing the removal of sessions only on the menu list of sessions.
// In theory this should be safe as long as nothing gets out sync...
console.log('Looking for removed sessions...');
let session_list_items = document.getElementById('sessions_menu').getElementsByTagName('ul')[0].childNodes;
console.log(session_list_items);
//console.log(session_list_items.length);
for (var i in session_list_items) {
console.log(session_list_items[i].getAttribute('data-session_id'));
//console.log(session_list_items[i]);
let session_id = session_list_items[i].getAttribute('data-session_id')
let session_valid = false;
tbl_event_session.iterate(function(value, key, iteration) {
//console.log(value.event_id+' ?= '+event_id+' : '+value.event_location_id+' ?= '+event_location_id+' : '+value.id+' ?= '+session_id);
if (value.event_id == event_id && value.event_location_id == event_location_id && value.id == session_id) {
// The session is still part of the event and the location
session_valid = true;
} else {
// The session is no longer part of the event and or the location
//console.log('Need to remove session id '+session_id);
}
}).then(function() {
console.log('idb_to_ui: Iterate tbl_event_session looking for sessions to remove is complete')
if (session_valid) {
console.log('Keep session id '+session_id);
} else {
console.log('Remove session id '+session_id);
document.getElementById('menu_event_session_'+session_id).remove(); // Remove the node from the launcher sessions menu list
document.getElementById('detail_session_'+session_id).remove(); // Remove the node from the launcher sessions list
}
});
}
});
// Third: re-index view session buttons
// NOTE: Should this go in a .then() section?
// NOTE: It might make even more sense to only have this done individually per add. Should also do a remove to keep things clean.
//index_launcher_sessions('btn_view_session');
index_launcher_sessions('btn_view_session');
}
exports.render_event_session_file_records = function (events) {
console.log('Rendering event session file records...');
}
exports.render_event_presentation_records = async function (events) {
console.log('********** ********* ****** ** * ** ****** ********* *********');
console.log('Rendering event presentation records...');
let launcher_sessions = document.getElementById('launcher_sessions').childNodes; //_list_items
console.log(launcher_sessions);
console.log(tbl_event_presentation);
for (let i in launcher_sessions) {
console.log(launcher_sessions[i].getAttribute('data-session_id'));
let session_id = launcher_sessions[i].getAttribute('data-session_id');
//console.log(launcher_sessions[i].getElementsByClassName('session_presentations')[0].getElementsByTagName('ul').childElementCount);
let presentations_list = launcher_sessions[i].getElementsByClassName('session_presentations')[0].getElementsByTagName('ul')[0].childNodes;
console.log(presentations_list);
//console.log(presentations_list.length);
if (presentations_list.length) {
console.log('Presentations listed under this session (id='+session_id+'). (launcher sessions loop i = '+i+')');
console.log(launcher_sessions[i].getElementsByClassName('session_presentations')[0].getElementsByTagName('ul'));
/*
* loop through list of presentations
* if in
*/
await tbl_event_presentation.iterate(function(value, key, iteration) {
if (document.getElementById('event_presentation_'+value.id)) {
// Update the launcher presentations list for a session
document.getElementById('event_presentation_'+value.id).getElementsByTagName('div')[0].getElementsByTagName('strong')[0].innerHTML = value.name;
let presentation_startdatetime = new Date(value.start_datetime);
document.getElementById('event_presentation_'+value.id).getElementsByTagName('div')[0].getElementsByTagName('span')[0].innerHTML = dateFns.format(presentation_startdatetime, 'h:mm A');
} else {
}
}).then(function() {
});
} else {
console.log('No presentations listed under this session (id='+session_id+'). Time to iterate through presentations table. (launcher sessions loop i = '+i+')');
let new_i = i;
console.log(new_i);
//if (!looping_tbl_event_presentation) {
// looping_tbl_event_presentation = true;
await tbl_event_presentation.iterate(function(value, key, iteration) {
console.log('Launcher sessions loop i: '+i+' : '+new_i);
if (value.event_session_id == session_id) {
console.log('*** Presentation id ('+value.id+') is part of this session ('+session_id+'). (launcher sessions loop i='+i+')');
// Add the new session to the launcher sessions list
let presentation_li_node = document.createElement('LI');
presentation_li_node.id = 'event_presentation_'+value.id;
presentation_li_node.className = 'list-group-item';
presentation_li_node.setAttribute('data-presentation_id', value.id);
let presentation_li_heading_div_node = document.createElement('DIV');
presentation_li_heading_div_node.className = 'list-group-item-heading d-flex justify-content-between align-items-center';
let presentation_name_strong_node = document.createElement('STRONG');
let presentation_name_text_node= document.createTextNode(value.name);
presentation_name_strong_node.appendChild(presentation_name_text_node);
let presentation_heading_span_node = document.createElement('SPAN');
presentation_heading_span_node.className = 'badge badge-pill badge-info';
let presentation_startdatetime = new Date(value.start_datetime);
let presentation_heading_span_text_node = document.createTextNode(dateFns.format(presentation_startdatetime, 'h:mm A'));
presentation_heading_span_node.appendChild(presentation_heading_span_text_node);
presentation_li_heading_div_node.appendChild(presentation_name_strong_node);
presentation_li_heading_div_node.appendChild(presentation_heading_span_node);
presentation_li_node.appendChild(presentation_li_heading_div_node);
console.log('************ ISSUE ************');
console.log(launcher_sessions[i].getElementsByClassName('session_presentations'));
//launcher_sessions[i].getElementsByClassName('session_presentations')[0].getElementsByTagName('ul')[0].appendChild(presentation_li_node);
let launcher_session_details = document.getElementById('detail_session_'+session_id);
console.log(launcher_session_details.getElementsByClassName('session_presentations'));
let session = document.getElementById('detail_session_'+session_id).getElementsByClassName('session_presentations')[0].getElementsByTagName('ul')[0].appendChild(presentation_li_node);
} else {
console.log('*** Presentation id ('+value.id+') is NOT part of this session ('+session_id+'). (launcher sessions loop i='+i+')');
}
}).then(function() {
console.log('idb_to_ui: Iterate tbl_event_presentation looking for presentations to update or add is complete');
looping_tbl_event_presentation = true;
//tbl_event_presentation_iterate_count++;
/*
if (session_valid) {
console.log('Keep session id '+session_id);
} else {
console.log('Remove session id '+session_id);
document.getElementById('menu_event_session_'+session_id).remove(); // Remove the node from the launcher sessions menu list
document.getElementById('detail_session_'+session_id).remove(); // Remove the node from the launcher sessions list
}
*/
});
//} else {
// console.log('Waiting until tbl_event_presentation has finished iterating...');
//}
/*
<div class="card session_presentations">
<div class="card-header">Presentations:</div>
<div class="card-body">
<ul class="list-group list-group-flush"></ul>
</div>
</div>
*/
}
//} else {
// console.log('Waiting until launcher_sessions has finished looping...');
//}
}
return true;
}
exports.render_event_presention_file_records = function (events) {
console.log('Rendering event presentation file records...');
}
exports.render_event_presenter_records = function (events) {
console.log('Rendering event presenter records...');
}
exports.render_event_presenter_file_records = function (events) {
console.log('Rendering event presenter file records...');
}
/* Updated 2020-01-31 */
function index_launcher_sessions(class_name) {
console.log('Indexing launcher sessions with class name: '+class_name);
var class_elements = document.getElementsByClassName(class_name);
for (var i = 0; i < class_elements.length; i++) {
class_elements[i].addEventListener( 'click', function() {view_session( this.getAttribute('data-session_id')) } );
}
console.log(class_elements);
return true;
}
/* Updated 2020-01-31 */
function view_session(session_id) {
var class_elements = document.getElementsByClassName('session_detail'); // This class name should be the class names for each div container
console.log('*** View session ID: '+session_id);
for (var i = 0; i < class_elements.length; i++) {
console.log('*** checking: '+class_elements[i].getAttribute('data-session_id'));
if (class_elements[i].getAttribute('data-session_id') == session_id) {
console.log('show');
class_elements[i].classList.remove('d-none');
class_elements[i].classList.add('d-block');
} else {
console.log('hide');
class_elements[i].classList.remove('d-block');
class_elements[i].classList.add('d-none');
}
}
return true;
}
function format_bytes(bytes, decimals = 2) {
if (bytes === 0) return '0 Bytes';
const k = 1024;
const dm = decimals < 0 ? 0 : decimals;
const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
const i = Math.floor(Math.log(bytes) / Math.log(k));
return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
}

View File

@@ -0,0 +1,459 @@
exports.render_event_records = function () {
console.log('Rendering event records...');
//console.log(tbl_event);
//console.log(event_id);
tbl_event.iterate(function(value, key, iteration) {
if (value.id == event_id) {
console.log('*** Event id ('+event_id+') found in table.');
document.getElementById('event_name').innerHTML = '@'+value.name;
} else {
console.log('Event not it.');
}
}).then(function() {
console.log('idb_to_ui: Iterate tbl_event_file complete')
tbl_event_complete = true;
});
}
// NOTE: The event_file table should probably only be looped through once when the table is actually updated.
// NOTE: Not each time the other objects (event, location, session, presentation, presenter) are updated.
exports.render_event_file_records = function (event_files, event_id) {
console.log('Rendering event file records...');
/*
tbl_event_file.iterate(function(value, key, iteration) {
if (value.id == event_id) {
console.log('*** Event id ('+event_id+') found in table.');
document.getElementById('event_name').innerHTML = '@'+value.name;
} else {
console.log('Event not it.');
}
}).then(function() {
console.log('idb_to_ui: Iterate tbl_event_file complete')
tbl_event_complete = true;
});
document.getElementById('event_files_menu').innerHTML = '<h2>Event Files</h2>';
document.getElementById('event_files_menu').innerHTML += '<ul class="list-group list-group-flush">';
for (var i in launcher_tmp.event_file) {
document.getElementById('event_files_menu').innerHTML += '<li id="menu_event_file_'+launcher_tmp.event_file[i].event_file_id+'" class="list-group-item btn btn-secondary d-flex justify-content-between align-items-center open_local_file" data-hash_sha256="'+launcher_tmp.event_file[i].hash_sha256+'.file" data-filename="'+launcher_tmp.event_file[i].event_file_filename+'">'+launcher_tmp.event_file[i].event_file_filename+'</li>';
}
document.getElementById('event_files_menu').innerHTML += '</ul>';
*/
}
exports.render_event_location_records = async function () {
console.log('Rendering event location records...');
await tbl_event_location.iterate(function(value, key, iteration) {
if (value.id == event_location_id) {
console.log('*** Event location id ('+event_location_id+') found in table.');
document.getElementById('location_name').innerHTML = '<span class="fas fa-map-marker"></span> '+value.name;
} else {
console.log('Event location not it.');
}
}).then(function() {
console.log('idb_to_ui: Iterate tbl_event_file complete')
tbl_event_location_complete = true;
});
}
exports.render_event_location_file_records = function (events) {
console.log('Rendering event location file records...');
}
exports.render_event_session_records = async function () {
console.log('Rendering event session records...');
// First: update or add sessions
tbl_event_session.iterate(function(value, key, iteration) {
if (value.event_id == event_id && value.event_location_id == event_location_id) {
console.log('*** Event session id ('+value.id+') is part of this event location.');
// *** ** * Checking if the session is already in the launcher menu * ** ***
if (document.getElementById('menu_event_session_'+value.id)) {
// Update the session menu list item
document.getElementById('menu_event_session_'+value.id).innerHTML = value.name;
} else {
// Unhide the sessions menu
if (document.getElementById('sessions_menu').classList.contains('d-none') ) {
document.getElementById('sessions_menu').classList.remove('d-none');
document.getElementById('sessions_menu').classList.add('d-block');
}
// Add the new session to the session menu
let node = document.createElement('LI');
node.id = 'menu_event_session_'+value.id;
node.className = 'list-group-item btn btn-info d-flex justify-content-between align-items-center btn_view_session';
node.setAttribute('data-session_id', value.id);
let text_node = document.createTextNode(value.name);
node.appendChild(text_node);
document.getElementById('sessions_menu').getElementsByTagName('ul')[0].appendChild(node);
}
let session_startdatetime = new Date(value.start_datetime);
// *** ** * Checking if the session is already in the launcher sessions detail * ** ***
if (document.getElementById('detail_session_'+value.id)) {
// Update the launcher sessions list
// NOTE: Updating this text is very awkward?
document.getElementById('detail_session_'+value.id).getElementsByTagName('h2')[0].firstChild.data = value.name;
console.log(document.getElementById('detail_session_'+value.id).getElementsByTagName('h2')[0]);
document.getElementById('detail_session_'+value.id).getElementsByTagName('h2')[0].getElementsByTagName('span')[0].innerHTML = dateFns.format(session_startdatetime, 'ddd h:mm A');
} else {
// Add the new session to the launcher sessions list
let div_node = document.createElement('DIV');
div_node.id = 'detail_session_'+value.id;
div_node.className = 'container d-none session_detail';
div_node.setAttribute('data-session_id', value.id);
let h2_node = document.createElement('H2');
h2_node.className = 'session_title d-flex justify-content-between align-items-center';
// NOTE: Instead of a text node should this just be wrapped in a set of tags?
// Updating this is kind of awkward... see above
let h2_text_node = document.createTextNode(value.name);
h2_node.appendChild(h2_text_node);
let h2_span_node = document.createElement('SPAN');
h2_span_node.className = 'badge badge-pill badge-info';
let h2_span_text_node = document.createTextNode(dateFns.format(session_startdatetime, 'ddd h:mm A'));
h2_span_node.appendChild(h2_span_text_node);
h2_node.appendChild(h2_span_node);
div_node.appendChild(h2_node);
// Add placeholder cards for session files and session presentations
// Files
let files_div_node = document.createElement('DIV');
files_div_node.className = 'card session_files';
let files_header_div_node = document.createElement('DIV');
files_header_div_node.className = 'card-header';
let files_header_text_node = document.createTextNode('Sessions Files:');
files_header_div_node.appendChild(files_header_text_node);
let files_body_div_node = document.createElement('DIV');
files_body_div_node.className = 'card-body';
let files_body_ul_node = document.createElement('UL');
files_body_ul_node.className = 'list-group list-group-flush';
files_body_div_node.appendChild(files_body_ul_node);
files_div_node.appendChild(files_header_div_node);
files_div_node.appendChild(files_body_div_node);
div_node.appendChild(files_div_node);
// Presentations
let presentations_div_node = document.createElement('DIV');
presentations_div_node.className = 'card session_presentations';
let presentations_header_div_node = document.createElement('DIV');
presentations_header_div_node.className = 'card-header';
let presentations_header_text_node = document.createTextNode('Presentations:');
presentations_header_div_node.appendChild(presentations_header_text_node);
let presentations_body_div_node = document.createElement('DIV');
presentations_body_div_node.className = 'card-body';
let presentations_body_ul_node = document.createElement('UL');
presentations_body_ul_node.className = 'list-group list-group-flush';
presentations_body_div_node.appendChild(presentations_body_ul_node);
presentations_div_node.appendChild(presentations_header_div_node);
presentations_div_node.appendChild(presentations_body_div_node);
div_node.appendChild(presentations_div_node);
document.getElementById('launcher_sessions').appendChild(div_node);
}
} else {
console.log('Event session not it.');
}
}).then(function() {
console.log('idb_to_ui: Iterate tbl_event_session complete')
tbl_event_session_complete = true;
}).then(function() {
// Second: remove sessions from the launcher sessions menu and sessions list
// This is basing the removal of sessions only on the menu list of sessions.
// In theory this should be safe as long as nothing gets out sync...
console.log('Looking for removed sessions...');
let session_list_items = document.getElementById('sessions_menu').getElementsByTagName('ul')[0].childNodes;
console.log(session_list_items);
//console.log(session_list_items.length);
for (var i in session_list_items) {
console.log(session_list_items[i].getAttribute('data-session_id'));
//console.log(session_list_items[i]);
let session_id = session_list_items[i].getAttribute('data-session_id')
let session_valid = false;
tbl_event_session.iterate(function(value, key, iteration) {
//console.log(value.event_id+' ?= '+event_id+' : '+value.event_location_id+' ?= '+event_location_id+' : '+value.id+' ?= '+session_id);
if (value.event_id == event_id && value.event_location_id == event_location_id && value.id == session_id) {
// The session is still part of the event and the location
session_valid = true;
} else {
// The session is no longer part of the event and or the location
//console.log('Need to remove session id '+session_id);
}
}).then(function() {
console.log('idb_to_ui: Iterate tbl_event_session looking for sessions to remove is complete')
if (session_valid) {
console.log('Keep session id '+session_id);
} else {
console.log('Remove session id '+session_id);
document.getElementById('menu_event_session_'+session_id).remove(); // Remove the node from the launcher sessions menu list
document.getElementById('detail_session_'+session_id).remove(); // Remove the node from the launcher sessions list
}
});
}
});
// Third: re-index view session buttons
// NOTE: Should this go in a .then() section?
// NOTE: It might make even more sense to only have this done individually per add. Should also do a remove to keep things clean.
//index_launcher_sessions('btn_view_session');
index_launcher_sessions('btn_view_session');
}
exports.render_event_session_file_records = function (events) {
console.log('Rendering event session file records...');
}
exports.render_event_presentation_records = async function (events) {
console.log('********** ********* ****** ** * ** ****** ********* *********');
console.log('Rendering event presentation records...');
let launcher_sessions = document.getElementById('launcher_sessions').childNodes; //_list_items
console.log(launcher_sessions);
console.log(tbl_event_presentation);
/*
loop through the sessions list (not table) {
let session_id = ;
attempt to loop through list of presentations (possibly empty) {
let presentation_id = ;
let presentation_id_found = false;
iterate through tbl_event_presentation
if (li presentation_id = tbl_event_presentation.id and session id = tbl_event_presentation.event_session_id) {
update the presentation_id
presentation_id_found = true;
} else if (session id = tbl_event_presentation.event_session_id) {
add in the new presentation_id from the table
presentation_id_found = true;
}
if (presentation_id_found == false) {
// remove the presentation
}
}
}
*/
for (let i in launcher_sessions) {
console.log(launcher_sessions[i].getAttribute('data-session_id'));
let session_id = launcher_sessions[i].getAttribute('data-session_id');
//console.log(launcher_sessions[i].getElementsByClassName('session_presentations')[0].getElementsByTagName('ul').childElementCount);
let presentations_list = launcher_sessions[i].getElementsByClassName('session_presentations')[0].getElementsByTagName('ul')[0].childNodes;
console.log(presentations_list);
//console.log(presentations_list.length);
if (presentations_list.length) {
console.log('Presentations listed under this session (id='+session_id+'). (launcher sessions loop i = '+i+')');
console.log(launcher_sessions[i].getElementsByClassName('session_presentations')[0].getElementsByTagName('ul'));
/*
* loop through list of presentations
* if in
*/
await tbl_event_presentation.iterate(function(value, key, iteration) {
if (document.getElementById('event_presentation_'+value.id)) {
// Update the launcher presentations list for a session
document.getElementById('event_presentation_'+value.id).getElementsByTagName('div')[0].getElementsByTagName('strong')[0].innerHTML = value.name;
let presentation_startdatetime = new Date(value.start_datetime);
document.getElementById('event_presentation_'+value.id).getElementsByTagName('div')[0].getElementsByTagName('span')[0].innerHTML = dateFns.format(presentation_startdatetime, 'h:mm A');
} else {
}
}).then(function() {
});
} else {
console.log('No presentations listed under this session (id='+session_id+'). Time to iterate through presentations table. (launcher sessions loop i = '+i+')');
let new_i = i;
console.log(new_i);
//if (!looping_tbl_event_presentation) {
// looping_tbl_event_presentation = true;
await tbl_event_presentation.iterate(function(value, key, iteration) {
console.log('Launcher sessions loop i: '+i+' : '+new_i);
if (value.event_session_id == session_id) {
console.log('*** Presentation id ('+value.id+') is part of this session ('+session_id+'). (launcher sessions loop i='+i+')');
// Add the new session to the launcher sessions list
let presentation_li_node = document.createElement('LI');
presentation_li_node.id = 'event_presentation_'+value.id;
presentation_li_node.className = 'list-group-item';
presentation_li_node.setAttribute('data-presentation_id', value.id);
let presentation_li_heading_div_node = document.createElement('DIV');
presentation_li_heading_div_node.className = 'list-group-item-heading d-flex justify-content-between align-items-center';
let presentation_name_strong_node = document.createElement('STRONG');
let presentation_name_text_node= document.createTextNode(value.name);
presentation_name_strong_node.appendChild(presentation_name_text_node);
let presentation_heading_span_node = document.createElement('SPAN');
presentation_heading_span_node.className = 'badge badge-pill badge-info';
let presentation_startdatetime = new Date(value.start_datetime);
let presentation_heading_span_text_node = document.createTextNode(dateFns.format(presentation_startdatetime, 'h:mm A'));
presentation_heading_span_node.appendChild(presentation_heading_span_text_node);
presentation_li_heading_div_node.appendChild(presentation_name_strong_node);
presentation_li_heading_div_node.appendChild(presentation_heading_span_node);
presentation_li_node.appendChild(presentation_li_heading_div_node);
console.log('************ ISSUE ************');
console.log(launcher_sessions[i].getElementsByClassName('session_presentations'));
//launcher_sessions[i].getElementsByClassName('session_presentations')[0].getElementsByTagName('ul')[0].appendChild(presentation_li_node);
let launcher_session_details = document.getElementById('detail_session_'+session_id);
console.log(launcher_session_details.getElementsByClassName('session_presentations'));
let session = document.getElementById('detail_session_'+session_id).getElementsByClassName('session_presentations')[0].getElementsByTagName('ul')[0].appendChild(presentation_li_node);
} else {
console.log('*** Presentation id ('+value.id+') is NOT part of this session ('+session_id+'). (launcher sessions loop i='+i+')');
}
}).then(function() {
console.log('idb_to_ui: Iterate tbl_event_presentation looking for presentations to update or add is complete');
looping_tbl_event_presentation = true;
//tbl_event_presentation_iterate_count++;
/*
if (session_valid) {
console.log('Keep session id '+session_id);
} else {
console.log('Remove session id '+session_id);
document.getElementById('menu_event_session_'+session_id).remove(); // Remove the node from the launcher sessions menu list
document.getElementById('detail_session_'+session_id).remove(); // Remove the node from the launcher sessions list
}
*/
});
//} else {
// console.log('Waiting until tbl_event_presentation has finished iterating...');
//}
/*
<div class="card session_presentations">
<div class="card-header">Presentations:</div>
<div class="card-body">
<ul class="list-group list-group-flush"></ul>
</div>
</div>
*/
}
//} else {
// console.log('Waiting until launcher_sessions has finished looping...');
//}
}
return true;
}
exports.render_event_presention_file_records = function (events) {
console.log('Rendering event presentation file records...');
}
exports.render_event_presenter_records = function (events) {
console.log('Rendering event presenter records...');
}
exports.render_event_presenter_file_records = function (events) {
console.log('Rendering event presenter file records...');
}
/* Updated 2020-01-31 */
function index_launcher_sessions(class_name) {
console.log('Indexing launcher sessions with class name: '+class_name);
var class_elements = document.getElementsByClassName(class_name);
for (var i = 0; i < class_elements.length; i++) {
class_elements[i].addEventListener( 'click', function() {view_session( this.getAttribute('data-session_id')) } );
}
console.log(class_elements);
return true;
}
/* Updated 2020-01-31 */
function view_session(session_id) {
var class_elements = document.getElementsByClassName('session_detail'); // This class name should be the class names for each div container
console.log('*** View session ID: '+session_id);
for (var i = 0; i < class_elements.length; i++) {
console.log('*** checking: '+class_elements[i].getAttribute('data-session_id'));
if (class_elements[i].getAttribute('data-session_id') == session_id) {
console.log('show');
class_elements[i].classList.remove('d-none');
class_elements[i].classList.add('d-block');
} else {
console.log('hide');
class_elements[i].classList.remove('d-block');
class_elements[i].classList.add('d-none');
}
}
return true;
}
function format_bytes(bytes, decimals = 2) {
if (bytes === 0) return '0 Bytes';
const k = 1024;
const dm = decimals < 0 ? 0 : decimals;
const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
const i = Math.floor(Math.log(bytes) / Math.log(k));
return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
}

View File

@@ -49,10 +49,10 @@ exports.render_event_file_records = function (event_files, event_id) {
} }
exports.render_event_location_records = function () { exports.render_event_location_records = async function () {
console.log('Rendering event location records...'); console.log('Rendering event location records...');
tbl_event_location.iterate(function(value, key, iteration) { await tbl_event_location.iterate(function(value, key, iteration) {
if (value.id == event_location_id) { if (value.id == event_location_id) {
console.log('*** Event location id ('+event_location_id+') found in table.'); console.log('*** Event location id ('+event_location_id+') found in table.');
document.getElementById('location_name').innerHTML = '<span class="fas fa-map-marker"></span> '+value.name; document.getElementById('location_name').innerHTML = '<span class="fas fa-map-marker"></span> '+value.name;
@@ -72,7 +72,7 @@ exports.render_event_location_file_records = function (events) {
} }
exports.render_event_session_records = function () { exports.render_event_session_records = async function () {
console.log('Rendering event session records...'); console.log('Rendering event session records...');
// First: update or add sessions // First: update or add sessions
@@ -245,32 +245,79 @@ exports.render_event_session_file_records = function (events) {
} }
exports.render_event_presentation_records = function (events) { exports.render_event_presentation_records = async function (events) {
console.log('********** ********* ****** ** * ** ****** ********* *********'); console.log('********** ********* ****** ** * ** ****** ********* *********');
console.log('Rendering event presentation records...'); console.log('Rendering event presentation records...');
let launcher_sessions = document.getElementById('launcher_sessions').childNodes; //_list_items let launcher_sessions = document.getElementById('launcher_sessions').childNodes; //_list_items
console.log(launcher_sessions); console.log(launcher_sessions);
console.log(tbl_event_presentation);
for (var i in launcher_sessions) { /*
loop through the sessions list (not table) {
let session_id = ;
attempt to loop through list of presentations (possibly empty) {
let presentation_id = ;
let presentation_id_found = false;
iterate through tbl_event_presentation
if (li presentation_id = tbl_event_presentation.id and session id = tbl_event_presentation.event_session_id) {
update the presentation_id
presentation_id_found = true;
} else if (session id = tbl_event_presentation.event_session_id) {
add in the new presentation_id from the table
presentation_id_found = true;
}
if (presentation_id_found == false) {
// remove the presentation
}
}
}
*/
for (let i in launcher_sessions) {
console.log(launcher_sessions[i].getAttribute('data-session_id')); console.log(launcher_sessions[i].getAttribute('data-session_id'));
let session_id = launcher_sessions[i].getAttribute('data-session_id'); let session_id = launcher_sessions[i].getAttribute('data-session_id');
console.log(launcher_sessions[i].getElementsByClassName('session_presentations')[0].getElementsByTagName('ul').childElementCount); //console.log(launcher_sessions[i].getElementsByClassName('session_presentations')[0].getElementsByTagName('ul').childElementCount);
let new_i = i;
if (launcher_sessions[new_i].getElementsByClassName('session_presentations')[0].getElementsByTagName('ul').childElementCount) { let presentations_list = launcher_sessions[i].getElementsByClassName('session_presentations')[0].getElementsByTagName('ul')[0].childNodes;
console.log('Presentations listed under this session'); console.log(presentations_list);
//console.log(presentations_list.length);
if (presentations_list.length) {
console.log('Presentations listed under this session (id='+session_id+'). (launcher sessions loop i = '+i+')');
console.log(launcher_sessions[i].getElementsByClassName('session_presentations')[0].getElementsByTagName('ul')); console.log(launcher_sessions[i].getElementsByClassName('session_presentations')[0].getElementsByTagName('ul'));
} else { /*
console.log('No presentations listed under this session. Time to iterate through presentations table.'); * loop through list of presentations
* if in
*/
await tbl_event_presentation.iterate(function(value, key, iteration) {
if (document.getElementById('event_presentation_'+value.id)) {
// Update the launcher presentations list for a session
document.getElementById('event_presentation_'+value.id).getElementsByTagName('div')[0].getElementsByTagName('strong')[0].innerHTML = value.name;
let presentation_startdatetime = new Date(value.start_datetime);
document.getElementById('event_presentation_'+value.id).getElementsByTagName('div')[0].getElementsByTagName('span')[0].innerHTML = dateFns.format(presentation_startdatetime, 'h:mm A');
} else {
}
}).then(function() {
});
} else {
console.log('No presentations listed under this session (id='+session_id+'). Time to iterate through presentations table. (launcher sessions loop i = '+i+')');
let new_i = i;
console.log(new_i); console.log(new_i);
tbl_event_presentation.iterate(function(value, key, iteration) { //if (!looping_tbl_event_presentation) {
console.log('here 1??? '+new_i); // looping_tbl_event_presentation = true;
await tbl_event_presentation.iterate(function(value, key, iteration) {
console.log('Launcher sessions loop i: '+i+' : '+new_i);
if (value.event_session_id == session_id) { if (value.event_session_id == session_id) {
console.log('*** Presentation id ('+value.id+') is part of this session.'); console.log('*** Presentation id ('+value.id+') is part of this session ('+session_id+'). (launcher sessions loop i='+i+')');
// Add the new session to the launcher sessions list // Add the new session to the launcher sessions list
let presentation_li_node = document.createElement('LI'); let presentation_li_node = document.createElement('LI');
@@ -299,14 +346,18 @@ exports.render_event_presentation_records = function (events) {
presentation_li_node.appendChild(presentation_li_heading_div_node); presentation_li_node.appendChild(presentation_li_heading_div_node);
console.log('************ ISSUE ************'); console.log('************ ISSUE ************');
console.log('here 2??? '+new_i); console.log(launcher_sessions[i].getElementsByClassName('session_presentations'));
console.log(launcher_sessions[new_i].getElementsByClassName('session_presentations')); //launcher_sessions[i].getElementsByClassName('session_presentations')[0].getElementsByTagName('ul')[0].appendChild(presentation_li_node);
launcher_sessions[new_i].getElementsByClassName('session_presentations')[0].getElementsByTagName('ul')[0].appendChild(presentation_li_node); let launcher_session_details = document.getElementById('detail_session_'+session_id);
console.log(launcher_session_details.getElementsByClassName('session_presentations'));
let session = document.getElementById('detail_session_'+session_id).getElementsByClassName('session_presentations')[0].getElementsByTagName('ul')[0].appendChild(presentation_li_node);
} else { } else {
console.log('*** Presentation id ('+value.id+') is NOT part of this session.'); console.log('*** Presentation id ('+value.id+') is NOT part of this session ('+session_id+'). (launcher sessions loop i='+i+')');
} }
}).then(function() { }).then(function() {
console.log('idb_to_ui: Iterate tbl_event_presentation looking for presentations to update or add is complete') console.log('idb_to_ui: Iterate tbl_event_presentation looking for presentations to update or add is complete');
looping_tbl_event_presentation = true;
//tbl_event_presentation_iterate_count++;
/* /*
if (session_valid) { if (session_valid) {
console.log('Keep session id '+session_id); console.log('Keep session id '+session_id);
@@ -317,6 +368,10 @@ exports.render_event_presentation_records = function (events) {
} }
*/ */
}); });
//} else {
// console.log('Waiting until tbl_event_presentation has finished iterating...');
//}
/* /*
@@ -331,18 +386,13 @@ exports.render_event_presentation_records = function (events) {
} }
//} else {
// console.log('Waiting until launcher_sessions has finished looping...');
//}
} }
//.getElementsByTagName('ul')[0].childNodes; return true;
/*
Loop through session divs
Look for presentations to update in each session. Update
Look for presentations to add in each session. Append presentations into the div
Look for presentations to remove from each session. Remove
*/
} }