Working on network online offline detection

This commit is contained in:
Scott Idem
2020-03-04 16:36:49 -05:00
parent 7bb17de8f6
commit e3c297fb98
11 changed files with 495 additions and 174 deletions

View File

@@ -1,5 +1,21 @@
async function api_token_request_async(axios, secret_key) {
console.log('Requesting API temporary token...');
if (waiting_on_api_token) {
console.log('Already waiting on an API token request. Not starting another until finished.');
return false;
} else {
}
if (navigator.onLine) {
} else {
app_online = false;
return false;
}
waiting_on_api_token = true;
const url = '/api_token_request';
let data = { secret_key: secret_key };
@@ -13,8 +29,10 @@ async function api_token_request_async(axios, secret_key) {
})
.catch(function (error) {
console.error(error);
return error;
return false;
});
waiting_on_api_token = false;
return response;
}

View File

@@ -100,8 +100,10 @@ async function render_event_file_records() {
file_li_node.id = 'event_file_'+tbl_file_id;
if (tbl_for_type != 'event' && tbl_for_type != 'location') {
file_li_node.className = 'list-group-item btn btn-primary d-flex justify-content-between align-items-center open_local_file event_file';
//file_li_node.className = 'list-group-item btn btn-primary justify-content-between align-items-center open_local_file event_file';
} else {
file_li_node.className = 'list-group-item btn btn-sm btn-secondary d-flex justify-content-between align-items-center open_local_file event_file';
//file_li_node.className = 'list-group-item btn btn-sm btn-secondary justify-content-between align-items-center open_local_file event_file';
}
file_li_node.setAttribute('data-file_id', tbl_file_id);

View File

@@ -38,7 +38,10 @@ async function render_event_presentation_records(events) {
console.log('Presentation ('+presentation_id+') was found in the session ('+session_id+'). Updating...');
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');
let presentation_startdatetime_string = dateFns.format(presentation_startdatetime, 'h:mm A')
document.getElementById('event_presentation_'+value.id).getElementsByTagName('div')[0].getElementsByTagName('span')[0].innerHTML = presentation_startdatetime_string;
} else if (session_id != value.event_session_id && presentation_id == value.id) {
// Found presentation in a session that it should not be in. Removing...
@@ -120,10 +123,32 @@ async function render_event_presentation_records(events) {
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';
if (display_presentation_badges) {
presentation_heading_span_node.className = 'badge badge-pill badge-info d-inline';
} else {
presentation_heading_span_node.className = 'badge badge-pill badge-info d-none';
}
/*
// Create the session code span
let span_session_code_node = document.createElement('SPAN');
span_session_code_node.id = 'detail_session_code_'+value.id;
if ( display_session_codes && value.code && value.code.length) {
span_session_code_node.className = 'd-inline detail_session_code';
} else {
span_session_code_node.className = 'd-none detail_session_code';
}
let span_session_code_text_node = document.createTextNode('('+value.code+')');
span_session_code_node.appendChild(span_session_code_text_node);
*/
//let presenation_font = '<span class="fas fa-hourglass-start"></span> ';
let presentation_startdatetime = new Date(value.start_datetime);
let presentation_heading_span_text_node = document.createTextNode(dateFns.format(presentation_startdatetime, 'h:mm A'));
let presentation_startdatetime_string = dateFns.format(presentation_startdatetime, 'h:mm A');
let presentation_heading_span_text_node = document.createTextNode(presentation_startdatetime_string);
presentation_heading_span_node.appendChild(presentation_heading_span_text_node);
presentation_li_heading_div_node.appendChild(presentation_name_strong_node);

View File

@@ -19,7 +19,7 @@ async function render_event_session_records() {
// *** ** * 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;
document.getElementById('menu_session_name_'+value.id).innerHTML = value.name;
} else {
// Unhide the sessions menu
if (document.getElementById('sessions_menu').classList.contains('d-none') ) {
@@ -28,18 +28,38 @@ async function render_event_session_records() {
}
// 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-success d-flex justify-content-between align-items-center btn_view_session';
node.setAttribute('data-session_id', value.id);
let li_session_node = document.createElement('LI');
li_session_node.id = 'menu_event_session_'+value.id;
//li_session_node.className = 'list-group-item btn btn-success d-flex justify-content-between align-items-center btn_view_session';
li_session_node.className = 'list-group-item btn btn-success justify-content-between align-items-center btn_view_session';
li_session_node.setAttribute('data-session_id', value.id);
node.title = 'id='+value.id+' session_id='+value.id;
li_session_node.title = 'id='+value.id+' session_id='+value.id;
let text_node = document.createTextNode(value.name);
// Create the session name span
let li_span_name_node = document.createElement('SPAN');
li_span_name_node.id = 'menu_session_name_'+value.id;
li_span_name_node.className = 'd-inline menu_session_name';
node.appendChild(text_node);
let li_span_name_text_node = document.createTextNode(value.name);
li_span_name_node.appendChild(li_span_name_text_node);
document.getElementById('sessions_menu').getElementsByTagName('ul')[0].appendChild(node);
// Create the session code span
let li_span_badge_node = document.createElement('SPAN');
if ( display_session_codes && value.code && value.code.length) {
li_span_badge_node.className = 'd-inline menu_session_code';
} else {
li_span_badge_node.className = 'd-none';
}
let li_span_badge_text_node = document.createTextNode('('+value.code+')');
li_span_badge_node.appendChild(li_span_badge_text_node);
li_session_node.appendChild(li_span_name_node);
li_session_node.appendChild(li_span_badge_node);
document.getElementById('sessions_menu').getElementsByTagName('ul')[0].appendChild(li_session_node);
}
let session_startdatetime = new Date(value.start_datetime);
@@ -48,33 +68,68 @@ async function render_event_session_records() {
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');
//document.getElementById('detail_session_'+value.id).getElementsByTagName('h2')[0].firstChild.data = value.name;
document.getElementById('detail_session_name_'+value.id).innerHTML = value.name;
document.getElementById('detail_session_code_'+value.id).innerHTML = '('+value.code+')';
//console.log(document.getElementById('detail_session_'+value.id).getElementsByTagName('h2')[0]);
document.getElementById('detail_session_badge_'+value.id).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 event_session';
div_node.setAttribute('data-session_id', value.id);
let div_session_node = document.createElement('DIV');
div_session_node.id = 'detail_session_'+value.id;
div_session_node.className = 'container d-none session_detail event_session';
div_session_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';
let h2_session_node = document.createElement('H2');
h2_session_node.className = 'session_heading d-flex justify-content-between align-items-center border-bottom border-primary';
//h2_session_node.className = 'detail_session_title 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);
// Group the name and code together for the title
let span_session_title_node = document.createElement('SPAN');
span_session_title_node.className = 'session_title';
let h2_span_node = document.createElement('SPAN');
h2_span_node.className = 'badge badge-pill badge-info';
// Create the session name span
let span_session_name_node = document.createElement('SPAN');
span_session_name_node.id = 'detail_session_name_'+value.id;
span_session_name_node.className = 'detail_session_name';
let h2_span_text_node = document.createTextNode(dateFns.format(session_startdatetime, 'ddd h:mm A'));
h2_span_node.appendChild(h2_span_text_node);
let span_session_name_text_node = document.createTextNode('('+value.name+')');
span_session_name_node.appendChild(span_session_name_text_node);
h2_node.appendChild(h2_span_node);
//h2_session_node.appendChild(span_session_name_node);
span_session_title_node.appendChild(span_session_name_node);
div_node.appendChild(h2_node);
// Create the session code span
let span_session_code_node = document.createElement('SPAN');
span_session_code_node.id = 'detail_session_code_'+value.id;
if ( display_session_codes && value.code && value.code.length) {
span_session_code_node.className = 'd-inline detail_session_code';
} else {
span_session_code_node.className = 'd-none detail_session_code';
}
let span_session_code_text_node = document.createTextNode('('+value.code+')');
span_session_code_node.appendChild(span_session_code_text_node);
//h2_session_node.appendChild(span_session_code_node);
span_session_title_node.appendChild(span_session_code_node);
h2_session_node.appendChild(span_session_title_node);
let span_session_badge_node = document.createElement('SPAN');
span_session_badge_node.id = 'detail_session_badge_'+value.id;
if (display_session_badges) {
span_session_badge_node.className = 'badge badge-pill badge-info d-inline';
} else {
span_session_badge_node.className = 'badge badge-pill badge-info d-none';
}
let span_session_badge_text_node = document.createTextNode(dateFns.format(session_startdatetime, 'ddd h:mm A'));
span_session_badge_node.appendChild(span_session_badge_text_node);
h2_session_node.appendChild(span_session_badge_node);
div_session_node.appendChild(h2_session_node);
// Add placeholder cards for session files and session presentations
// Files
@@ -100,7 +155,7 @@ async function render_event_session_records() {
files_div_node.appendChild(files_header_div_node);
files_div_node.appendChild(files_body_div_node);
div_node.appendChild(files_div_node);
div_session_node.appendChild(files_div_node);
// Presentations
let presentations_div_node = document.createElement('DIV');
@@ -126,10 +181,10 @@ async function render_event_session_records() {
presentations_div_node.appendChild(presentations_header_div_node);
presentations_div_node.appendChild(presentations_body_div_node);
div_node.appendChild(presentations_div_node);
div_session_node.appendChild(presentations_div_node);
document.getElementById('launcher_sessions').appendChild(div_node);
document.getElementById('launcher_sessions').appendChild(div_session_node);
}
} else {

View File

@@ -63,5 +63,29 @@ exports.load_config = function () {
} else {
//close();
}
//console.log(config);
return config;
}
exports.currently_online = function() {
//alert('You are currently online');
console.log('Currently online');
app_online = true;
document.getElementById('network_status1').classList.remove('btn-warning');
document.getElementById('network_status1').classList.add('btn-success');
document.getElementById('network_status1').innerHTML = '<span class="fas fa-check"></span> <span class="fas fa-globe"></span> Currently Online';
//document.getElementById('network_status1').innerHTML('Currently Online');
}
exports.currently_offline = function() {
//alert('You are currently offline');
console.log('Currently offline');
app_online = false;
document.getElementById('network_status1').classList.remove('btn-success');
document.getElementById('network_status1').classList.add('btn-warning');
document.getElementById('network_status1').innerHTML = '<span class="fas fa-exclamation"></span> <span class="fas fa-globe"></span> Currently Offline';
//document.getElementById('network_status1').innerHTML('Currently Offline');
}
//window.addEventListener('online', currently_online);
//window.addEventListener('offline', currently_offline);