diff --git a/app/index.html b/app/index.html index 7d8bb2e..4142282 100644 --- a/app/index.html +++ b/app/index.html @@ -380,8 +380,8 @@ } if (idb_event_session_check_datetime < Date.now()) { - console.log('**** *** Time to check event --location-- sessions *** ****'); - let v2_event_sessions = await api.v2_get_event_sessions(axios, event_id); + console.log('**** *** Time to check event sessions *** ****'); // All event sessions, not just location specific. + let v2_event_sessions = await api.v2_get_event_sessions(axios, event_id); // Was v2_get_event_location_sessions //tbl_event_session.clear(); for (var i in v2_event_sessions) { tbl_event_session.setItem(v2_event_sessions[i].id.toString(), v2_event_sessions[i]); @@ -390,6 +390,7 @@ safe_to_render_launcher = false; // Set to false so that the launcher render only starts after the launcher object has updated idb_event_session_check_datetime = Date.now() + idb_event_session_check_period; let render_event_session_records_result = uiv2.render_event_session_records(); // NOTE: v2 idb to ui + //ui.index_launcher_sessions('btn_view_session'); // NOTE: This should probably go in module_app_ui_v2.js } if (idb_event_presentation_check_datetime < Date.now()) { @@ -511,7 +512,7 @@ console.log('FLAG: safe_to_render_launcher='+safe_to_render_launcher); console.log('FLAG: enough_time_to_render='+enough_time_to_render); if (safe_to_render_launcher && enough_time_to_render) { - let render_launcher_result = ui.render_launcher(launcher); + //////////////let render_launcher_result = ui.render_launcher(launcher); run_render_launcher = false; // Set to true so that the launcher will be rendered again safe_to_render_launcher = false; diff --git a/app/js/.module_app_ui_v2.js.kate-swp b/app/js/.module_app_ui_v2.js.kate-swp new file mode 100644 index 0000000..ac68b65 Binary files /dev/null and b/app/js/.module_app_ui_v2.js.kate-swp differ diff --git a/app/js/module_app_ui.js b/app/js/module_app_ui.js index b063ef2..d7dc8b4 100644 --- a/app/js/module_app_ui.js +++ b/app/js/module_app_ui.js @@ -231,6 +231,7 @@ exports.render_launcher = function (launcher_tmp) { /* Updated 2019-12-19 */ 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++) { @@ -243,7 +244,7 @@ function index_launcher_sessions(class_name) { /* Updated 2019-12-19 */ function view_session(session_id) { - var class_elements = document.getElementsByClassName('session_detail'); + var class_elements = document.getElementsByClassName('launcher_sessions'); 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')); diff --git a/app/js/module_app_ui_v2.js b/app/js/module_app_ui_v2.js index 78dd248..917f46d 100644 --- a/app/js/module_app_ui_v2.js +++ b/app/js/module_app_ui_v2.js @@ -80,7 +80,7 @@ exports.render_event_session_records = function () { 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 + // *** ** * 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; @@ -102,22 +102,17 @@ exports.render_event_session_records = function () { 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 + // *** ** * Checking if the session is already in the launcher sessions detail * ** *** if (document.getElementById('detail_session_'+value.id)) { - // Update the session menu list item - document.getElementById('detail_session_'+value.id).getElementsByTagName('h2')[0].innerHTML = value.name; - document.getElementById('detail_session_'+value.id).getElementsByTagName('h2')[0].getElementsByTagName('span')[0].innerHTML = dateFns.format(value.startdatetime, 'ddd h:mm A'); + // 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 { - /* - // Unhide the sessions menu - if (document.getElementById('launcher_sessions').classList.contains('d-none') ) { - document.getElementById('launcher_sessions').classList.remove('d-none'); - document.getElementById('launcher_sessions').classList.add('d-block'); - } - */ - - // Add the new session to the launcher session detail + // 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'; @@ -126,13 +121,15 @@ exports.render_event_session_records = function () { 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(value.startdatetime, 'ddd h:mm A')); + 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); @@ -142,10 +139,6 @@ exports.render_event_session_records = function () { document.getElementById('launcher_sessions').appendChild(div_node); } - - - - } else { console.log('Event session not it.'); } @@ -153,14 +146,14 @@ exports.render_event_session_records = function () { console.log('idb_to_ui: Iterate tbl_event_session complete') tbl_event_session_complete = true; }).then(function() { - // Second: remove sessions + // 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').childNodes; let session_list_items = document.getElementById('sessions_menu').getElementsByTagName('ul')[0].childNodes; console.log(session_list_items); - - console.log(session_list_items.length); + //console.log(session_list_items.length); for (var i in session_list_items) { console.log(session_list_items[i].getAttribute('data-session_id')); @@ -169,7 +162,7 @@ exports.render_event_session_records = function () { 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); + 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; @@ -183,8 +176,9 @@ exports.render_event_session_records = function () { console.log('Keep session id '+session_id); } else { console.log('Remove session id '+session_id); - session_list_items[i].remove(); - document.getElementById('menu_event_session_'+session_id).remove(); + //session_list_items[i].remove(); + 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 } }); } @@ -194,6 +188,7 @@ exports.render_event_session_records = function () { // 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'); } @@ -222,3 +217,50 @@ 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]; +}