Initial commit
This commit is contained in:
1
app/js/app_helper.js
Normal file
1
app/js/app_helper.js
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
413
app/js/app_idb 2020-01-09.js.bak
Normal file
413
app/js/app_idb 2020-01-09.js.bak
Normal file
@@ -0,0 +1,413 @@
|
||||
const os = require('os');
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
|
||||
const { ipcRenderer } = require('electron');
|
||||
|
||||
|
||||
exports.launcher_cache_check = async function (launcher, api_base_url, api_temporary_token, host_file_cache_path) {
|
||||
if (typeof launcher.event === 'undefined') {
|
||||
launcher.event = await api.get_event_details(axios, launcher.event_id);
|
||||
console.log(launcher.event.id);
|
||||
idbKeyval.set(launcher.event.id, launcher.event, tbl_event);
|
||||
/*
|
||||
.then(function (data) {
|
||||
console.log(data.id);
|
||||
idbKeyval.set(data.id, data, tbl_event);
|
||||
//for (var i in response) {
|
||||
//var event_record = data[i];
|
||||
//idbKeyval.set(response[i].id, response[i], tbl_event);
|
||||
//}
|
||||
});
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
if (typeof launcher.location === 'undefined') {
|
||||
launcher.location = await api.get_event_location_details(axios, launcher.event_id, launcher.event_location_id);
|
||||
}
|
||||
|
||||
if (typeof launcher.event_files === 'undefined') {
|
||||
console.log('Check for global event files.');
|
||||
let for_id = launcher.event_id;
|
||||
launcher.event_files = await api.get_files_for_type_for_id(axios, 'event', for_id);
|
||||
for (var i in launcher.event_files) {
|
||||
console.log('f: ('+launcher.event_files[i].event_file_id+') '+launcher.event_files[i].event_file_filename+' ***')
|
||||
file_id = launcher.event_files[i].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
let filename = launcher.event_files[i].hash_sha256+'.file';
|
||||
|
||||
save_path = path.join(host_file_cache_path, filename);
|
||||
|
||||
if (fs.existsSync(save_path)) {
|
||||
console.log('Local file already exists: '+save_path);
|
||||
} else {
|
||||
console.log('File not found locally. Downloading file: '+save_path);
|
||||
let api_endpoint = '/event/file/'+file_id+'/download';
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // Must download file using main node.js thread.
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No check for global event files');
|
||||
}
|
||||
|
||||
|
||||
if (typeof launcher.location_files === 'undefined') {
|
||||
console.log('Check for location specific files.');
|
||||
let for_id = launcher.event_location_id;
|
||||
launcher.location_files = await api.get_files_for_type_for_id(axios, 'location', for_id);
|
||||
for (var i in launcher.location_files) {
|
||||
console.log('f: ('+launcher.location_files[i].event_file_id+') '+launcher.location_files[i].event_file_filename+' ***')
|
||||
file_id = launcher.location_files[i].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
let filename = launcher.location_files[i].hash_sha256+'.file';
|
||||
|
||||
save_path = path.join(host_file_cache_path, filename);
|
||||
|
||||
if (fs.existsSync(save_path)) {
|
||||
console.log('Local file already exists: '+save_path);
|
||||
} else {
|
||||
console.log('File not found locally. Downloading file: '+save_path);
|
||||
let api_endpoint = '/event/file/'+file_id+'/download';
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // Must download file using main node.js thread.
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No check for location specific files.');
|
||||
}
|
||||
|
||||
|
||||
if (typeof launcher.sessions === 'undefined') {
|
||||
console.log('Check for location sessions.');
|
||||
launcher.sessions = await api.get_event_location_sessions(axios, launcher.event_id, launcher.event_location_id);
|
||||
for (var i in launcher.sessions) {
|
||||
console.log('*** '+launcher.sessions[i].name+' ***')
|
||||
|
||||
// Check for session files start
|
||||
if (typeof launcher.sessions[i].files === 'undefined') {
|
||||
console.log('Check for session files.');
|
||||
let for_id = launcher.sessions[i].id;
|
||||
launcher.sessions[i].files = await api.get_files_for_type_for_id(axios, 'session', for_id);
|
||||
if (launcher.sessions[i].files) {
|
||||
console.log('Session files found.');
|
||||
for (var j in launcher.sessions[i].files) {
|
||||
console.log('f: ('+launcher.sessions[i].files[j].event_file_id+') '+launcher.sessions[i].files[j].event_file_filename+' ***');
|
||||
file_id = launcher.sessions[i].files[j].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
let filename = launcher.sessions[i].files[j].hash_sha256+'.file';
|
||||
|
||||
save_path = path.join(host_file_cache_path, filename);
|
||||
|
||||
if (fs.existsSync(save_path)) {
|
||||
console.log('Local file already exists: '+save_path);
|
||||
} else {
|
||||
console.log('File not found locally. Downloading file: '+save_path);
|
||||
let api_endpoint = '/event/file/'+file_id+'/download';
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // Must download file using main node.js thread.
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No session files found.');
|
||||
}
|
||||
} else {
|
||||
console.log('No check for session files.');
|
||||
}
|
||||
// Check for session files end
|
||||
|
||||
// Get session presentations and associated files
|
||||
launcher.sessions[i].presentations = await api.get_session_presentations(axios, launcher.event_id, launcher.sessions[i].id);
|
||||
for (var j in launcher.sessions[i].presentations) {
|
||||
console.log('* '+launcher.sessions[i].presentations[j].name);
|
||||
|
||||
// Check for presentation files start
|
||||
if (typeof launcher.sessions[i].presentations[j].files === 'undefined') {
|
||||
console.log('Check for presentation files.');
|
||||
let for_id = launcher.sessions[i].presentations[j].id;
|
||||
launcher.sessions[i].presentations[j].files = await api.get_files_for_type_for_id(axios, 'presentation', for_id);
|
||||
if (launcher.sessions[i].presentations[j].files) {
|
||||
console.log('Presentation files found.');
|
||||
for (var k in launcher.sessions[i].presentations[j].files) {
|
||||
console.log('f: ('+launcher.sessions[i].presentations[j].files[k].event_file_id+') '+launcher.sessions[i].presentations[j].files[k].event_file_filename+' ***');
|
||||
file_id = launcher.sessions[i].presentations[j].files[k].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
let filename = launcher.sessions[i].presentations[j].files[k].hash_sha256+'.file';
|
||||
|
||||
save_path = path.join(host_file_cache_path, filename);
|
||||
|
||||
if (fs.existsSync(save_path)) {
|
||||
console.log('Local file already exists: '+save_path);
|
||||
} else {
|
||||
console.log('File not found locally. Downloading file: '+save_path);
|
||||
let api_endpoint = '/event/file/'+file_id+'/download';
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // Must download file using main node.js thread.
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No presentation files found.');
|
||||
}
|
||||
} else {
|
||||
console.log('No check for presentation files.');
|
||||
}
|
||||
// Check for presentation files end
|
||||
|
||||
|
||||
// Get session presentations presenters and associated files
|
||||
//let event_presentation_id = launcher.sessions[i].presentations[j].id;
|
||||
launcher.sessions[i].presentations[j].presenters = await api.get_presentation_presenters(axios, launcher.event_id, launcher.sessions[i].id, launcher.sessions[i].presentations[j].id);
|
||||
for (var k in launcher.sessions[i].presentations[j].presenters) {
|
||||
console.log('-- '+launcher.sessions[i].presentations[j].presenters[k].given_name+' '+launcher.sessions[i].presentations[j].presenters[k].family_name)
|
||||
|
||||
// Check for presenter files start
|
||||
if (typeof launcher.sessions[i].presentations[j].presenters[k].files === 'undefined') {
|
||||
console.log('Check for presenter files.');
|
||||
let for_id = launcher.sessions[i].presentations[j].presenters[k].id;
|
||||
launcher.sessions[i].presentations[j].presenters[k].files = await api.get_files_for_type_for_id(axios, 'presenter', for_id);
|
||||
if (launcher.sessions[i].presentations[j].presenters[k].files) {
|
||||
console.log('Presenter files found.');
|
||||
for (var l in launcher.sessions[i].presentations[j].presenters[k].files) {
|
||||
console.log('f: ('+launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_id+') '+launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_filename+' ***')
|
||||
file_id = launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
let filename = launcher.sessions[i].presentations[j].presenters[k].files[l].hash_sha256+'.file';
|
||||
|
||||
save_path = path.join(host_file_cache_path, filename);
|
||||
|
||||
if (fs.existsSync(save_path)) {
|
||||
console.log('Local file already exists: '+save_path);
|
||||
} else {
|
||||
console.log('File not found locally. Downloading file: '+save_path);
|
||||
let api_endpoint = '/event/file/'+file_id+'/download';
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // Must download file using main node.js thread.
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No presenter files found.');
|
||||
}
|
||||
} else {
|
||||
console.log('No check for presenter files.');
|
||||
}
|
||||
// Check for presenter files end
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No check for location sessions.');
|
||||
}
|
||||
|
||||
console.log('Location cache check finished.');
|
||||
return true;
|
||||
}
|
||||
|
||||
exports.launcher_render = async function (launcher) {
|
||||
console.log('Rendering launcher...');
|
||||
document.getElementById('location_title').innerHTML = '<h1>Launcher '+launcher.location.name+'@'+launcher.event.name+'</h1>';
|
||||
|
||||
document.getElementById('event_files_menu').innerHTML = '<h2>Event Files</h2>';
|
||||
document.getElementById('event_files_menu').innerHTML += '<ul class="">';
|
||||
for (var i in launcher.event_files) {
|
||||
document.getElementById('event_files_menu').innerHTML += '<li id="menu_event_file_id_'+launcher.event_files[i].id+'" class="btn btn-info btn_no_case open_local_file" data-hash_sha256="'+launcher.event_files[i].hash_sha256+'.file" data-filename="'+launcher.event_files[i].event_file_filename+'">'+launcher.event_files[i].event_file_filename+'</li>';
|
||||
}
|
||||
document.getElementById('event_files_menu').innerHTML += '</ul>';
|
||||
|
||||
document.getElementById('location_files_menu').innerHTML = '<h2>Location Files</h2>';
|
||||
document.getElementById('location_files_menu').innerHTML += '<ul class="" role="">';
|
||||
for (var i in launcher.location_files) {
|
||||
document.getElementById('location_files_menu').innerHTML += '<li id="menu_event_file_id_'+launcher.location_files[i].id+'" class="btn btn-info open_local_file" data-hash_sha256="'+launcher.location_files[i].hash_sha256+'.file" data-filename="'+launcher.location_files[i].event_file_filename+'">'+launcher.location_files[i].event_file_filename+'</li>';
|
||||
}
|
||||
document.getElementById('location_files_menu').innerHTML += '</ul>';
|
||||
|
||||
document.getElementById('sessions_menu').innerHTML = '<h2>Sessions</h2>';
|
||||
document.getElementById('sessions_menu').innerHTML += '<ul class="" role="">';
|
||||
//let location_detail = '';
|
||||
if (document.getElementById('location_detail').innerHTML.length) {
|
||||
console.log('detail_session_id_xx already exists');
|
||||
} else {
|
||||
console.log('location_detail already populated');
|
||||
document.getElementById('location_detail').innerHTML = ''; // This needs to be reviewed.
|
||||
}
|
||||
for (var i in launcher.sessions) {
|
||||
// List sessions in menu
|
||||
document.getElementById('sessions_menu').innerHTML += '<li id="menu_session_id_'+launcher.sessions[i].id+'" class="btn btn-info btn_view_session" data-session_id="'+launcher.sessions[i].id+'">'+launcher.sessions[i].name+'</li>';
|
||||
|
||||
// Create containers for each session
|
||||
let session_detail = '';
|
||||
|
||||
if (typeof(document.getElementById('detail_session_id_'+launcher.sessions[i].id)) != 'undefined' && document.getElementById('detail_session_id_'+launcher.sessions[i].id) != null) {
|
||||
//console.log('detail_session_id_xx already exists');
|
||||
} else {
|
||||
//console.log('Adding detail_session_id_xx');
|
||||
session_detail += '<div id="detail_session_id_'+launcher.sessions[i].id+'" class="container d-none session_detail" data-session_id="'+launcher.sessions[i].id+'">';
|
||||
}
|
||||
|
||||
|
||||
|
||||
var session_startdatetime = new Date(launcher.sessions[i].start_datetime);
|
||||
|
||||
session_detail += '<h2 class="session_title">'+launcher.sessions[i].name+'<span class="badge badge-pill badge-info float-right">'+dateFns.format(session_startdatetime, 'ddd h:mm A')+'</span>'+'</h2>';
|
||||
|
||||
|
||||
//session_detail += '<div class="">'; // for card-group
|
||||
|
||||
session_detail += '<div class="card">';
|
||||
session_detail += '<div class="card-header">Session Files:</div>';
|
||||
session_detail += '<div class="card-body">';
|
||||
|
||||
session_detail += '<ul>';
|
||||
for (var j in launcher.sessions[i].files) {
|
||||
//console.log(launcher.sessions[i].files[j].event_file_filename);
|
||||
session_detail += '<li class="btn btn-info open_local_file" data-hash_sha256="'+launcher.sessions[i].files[j].hash_sha256+'.file" data-filename="'+launcher.sessions[i].files[j].event_file_filename+'">'+launcher.sessions[i].files[j].event_file_filename+'</li>';
|
||||
}
|
||||
session_detail += '</ul>';
|
||||
|
||||
session_detail += '</div>'; // for card-body
|
||||
session_detail += '</div> <!-- for session files card -->'; // for session files card
|
||||
|
||||
|
||||
//session_detail += '<div class="session_presentations">';
|
||||
|
||||
for (var j in launcher.sessions[i].presentations) {
|
||||
//session_detail += '<li>'+launcher.sessions[i].presentations[j].name;
|
||||
|
||||
var session_presentation_startdatetime = new Date(launcher.sessions[i].presentations[j].start_datetime);
|
||||
|
||||
session_detail += '<div class="card">';
|
||||
session_detail += '<div class="card-header">'+launcher.sessions[i].presentations[j].name+'<span class="badge badge-pill badge-info float-right">'+dateFns.format(session_startdatetime, 'h:mm a')+'</span>'+':</div>';
|
||||
session_detail += '<div class="card-body">';
|
||||
|
||||
session_detail += '<ul class="list-group">';
|
||||
for (var k in launcher.sessions[i].presentations[j].files) {
|
||||
//console.log(launcher.sessions[i].presentations[j].files[k].event_file_filename);
|
||||
session_detail += '<li class="list-group-item btn btn-info open_local_file" data-hash_sha256="'+launcher.sessions[i].presentations[j].files[k].hash_sha256+'.file" data-filename="'+launcher.sessions[i].presentations[j].files[k].event_file_filename+'">'+launcher.sessions[i].presentations[j].files[k].event_file_filename+'</li>';
|
||||
}
|
||||
session_detail += '</ul>';
|
||||
|
||||
|
||||
session_detail += '<ul>';
|
||||
for (var k in launcher.sessions[i].presentations[j].presenters) {
|
||||
//console.log(launcher.sessions[i].presentations[j].presenters[k].given_name);
|
||||
session_detail += '<li>'+launcher.sessions[i].presentations[j].presenters[k].given_name+' '+launcher.sessions[i].presentations[j].presenters[k].family_name;
|
||||
|
||||
session_detail += '<ul class="list-group">';
|
||||
for (var l in launcher.sessions[i].presentations[j].presenters[k].files) {
|
||||
//console.log(launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_filename);
|
||||
//session_detail += '<li class="list-group-item" data-hash_sha256="'+launcher.sessions[i].presentations[j].presenters[k].files[l].hash_sha256+'.file" data-filename="'+launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_filename+'">'+launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_filename;
|
||||
session_detail += '<li class="list-group-item" data-hash_sha256="'+launcher.sessions[i].presentations[j].presenters[k].files[l].hash_sha256+'.file" data-filename="'+launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_filename+'">';
|
||||
session_detail += '<button class="btn btn-info open_local_file" data-hash_sha256="'+launcher.sessions[i].presentations[j].presenters[k].files[l].hash_sha256+'.file" data-filename="'+launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_filename+'">'+launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_filename+'</button>';
|
||||
|
||||
var event_file_size = launcher.sessions[i].presentations[j].presenters[k].files[l].size;
|
||||
var event_file_created_on = new Date(launcher.sessions[i].presentations[j].presenters[k].files[l].created_on);
|
||||
|
||||
session_detail += '<span class="badge badge-pill badge-light float-right">'+format_bytes(event_file_size, 2)+'; '+dateFns.format(event_file_created_on, 'MMM M h:mm A')+'; '+launcher.sessions[i].presentations[j].presenters[k].files[l].internal_os+'</span>';
|
||||
|
||||
|
||||
session_detail += '</li>';
|
||||
}
|
||||
session_detail += '</ul>';
|
||||
|
||||
session_detail +='</li>';
|
||||
}
|
||||
session_detail += '</ul>';
|
||||
|
||||
|
||||
session_detail += '</ul>';
|
||||
session_detail += '</div>'; // for card-body
|
||||
session_detail += '</div> <!-- for card -->'; // for card
|
||||
|
||||
}
|
||||
//session_detail += '</div> <!-- for session_presentations -->'; // for session_presentations
|
||||
|
||||
//session_detail += '</div>'; // for card-group
|
||||
session_detail += '</div> <!-- End session detail for '+launcher.sessions[i].id+' -->';
|
||||
|
||||
|
||||
//document.getElementById('location_detail').innerHTML += session_detail;
|
||||
|
||||
if (typeof(document.getElementById('detail_session_id_'+launcher.sessions[i].id)) != 'undefined' && document.getElementById('detail_session_id_'+launcher.sessions[i].id) != null) {
|
||||
document.getElementById('detail_session_id_'+launcher.sessions[i].id).innerHTML = session_detail;
|
||||
} else {
|
||||
document.getElementById('location_detail').innerHTML += session_detail;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
document.getElementById('sessions_menu').innerHTML += '</ul>';
|
||||
|
||||
index_location_detail('btn_view_session');
|
||||
|
||||
index_open_file_buttons('open_local_file');
|
||||
|
||||
|
||||
//const btn_session_{{ event_presentation.id }}_name = document.querySelector('button#presentation_{{ event_presentation.id }}_name');
|
||||
//btn_presentation_{{ event_presentation.id }}_name.onclick = display_hide_poster_for_type_id.bind(this, true, 'presentation', {{ event_presentation.id }});
|
||||
console.log('Rendering launcher finished.');
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/* Updated 2019-12-19 */
|
||||
function index_location_detail(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')) } );
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/* Updated 2019-12-19 */
|
||||
function view_session(session_id) {
|
||||
var class_elements = document.getElementsByClassName('session_detail');
|
||||
console.log('*** 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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* Updated 2019-12-20 */
|
||||
function index_open_file_buttons(class_name) {
|
||||
var class_elements = document.getElementsByClassName(class_name);
|
||||
|
||||
for (var i = 0; i < class_elements.length; i++) {
|
||||
//class_elements[i].addEventListener( 'click', function() {open_local_file( this.getAttribute('data-filename')) } );
|
||||
|
||||
//let directory = 'file_cache/';
|
||||
|
||||
//directory_and_filename = path.join(directory, class_elements[i].getAttribute('data-filename'));
|
||||
|
||||
let file_path = path.join(host_file_cache_path, class_elements[i].getAttribute('data-hash_sha256'));
|
||||
let filename = class_elements[i].getAttribute('data-filename');
|
||||
|
||||
class_elements[i].addEventListener( 'click', function() { ipcRenderer.send('open_local_file', file_path, filename) } );
|
||||
//ipcRenderer.send('open_local_file', this.getAttribute('data-filename')); // in render thread
|
||||
}
|
||||
|
||||
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];
|
||||
}
|
||||
589
app/js/hold api.js
Normal file
589
app/js/hold api.js
Normal file
@@ -0,0 +1,589 @@
|
||||
async function api_token_request_async() {
|
||||
//var api_temporary_token = '';
|
||||
axios.defaults.baseURL = 'http://api.localhost:5001'; // 'http://api.localhost:5001' 'https://api.oneskyit.com';
|
||||
//axios.defaults.headers.post['Content-Type'] ='application/json;charset=utf-8';
|
||||
axios.defaults.headers.post['Access-Control-Allow-Origin'] = '*';
|
||||
//axios.defaults.headers.common['Authorization'] = `Token ${api_temporary_token}`
|
||||
|
||||
url = '/api_token_request';
|
||||
|
||||
let data = { secret_key: 'YWAAk39H2qH0edK6lPH0yg' };
|
||||
|
||||
//console.log(data);
|
||||
|
||||
try {
|
||||
const response = await axios.post(url, data);
|
||||
console.log(response);
|
||||
api_temporary_token = response.data.temporary_token;
|
||||
axios.defaults.headers.common['Authorization'] = `Token ${api_temporary_token}`;
|
||||
return true;
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
function api_token_request_sync() {
|
||||
var api_temporary_token = '';
|
||||
axios.defaults.baseURL = 'http://api.localhost:5001'; // 'http://api.localhost:5001' 'https://api.oneskyit.com';
|
||||
//axios.defaults.headers.post['Content-Type'] ='application/json;charset=utf-8';
|
||||
axios.defaults.headers.post['Access-Control-Allow-Origin'] = '*';
|
||||
//axios.defaults.headers.common['Authorization'] = `Token ${api_temporary_token}`
|
||||
|
||||
url = '/api_token_request';
|
||||
|
||||
let data = { secret_key: 'YWAAk39H2qH0edK6lPH0yg' };
|
||||
|
||||
console.log(data);
|
||||
|
||||
axios.post(url, data)
|
||||
.then(function (response) {
|
||||
console.log(response);
|
||||
api_temporary_token = response.data.temporary_token;
|
||||
axios.defaults.headers.common['Authorization'] = `Token ${api_temporary_token}`;
|
||||
return true;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return false;
|
||||
});
|
||||
return false;
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
function get_all_events() {
|
||||
url = '/event';
|
||||
|
||||
let data = { };
|
||||
|
||||
//console.log(data);
|
||||
|
||||
axios.get(url)
|
||||
.then(function (response) {
|
||||
console.log(response);
|
||||
|
||||
if (response.data != null) {
|
||||
records = response.data;
|
||||
|
||||
let html = '';
|
||||
html += '<select>';
|
||||
for (var i in records) {
|
||||
html += '<option value="'+records[i].id+'">'+records[i].name+'</option>'
|
||||
}
|
||||
html += '</select>';
|
||||
|
||||
/*
|
||||
role_table = '<table class="table table-striped table-bordered results_table">';
|
||||
role_table += '<tr><th>Name</th><th>For Type</th><th>For ID</th><th>Disable</th><th>Enable On</th><th>Disable On</th><th>Notes</th><th>Created On</th><th>Updated On</th></tr>';
|
||||
|
||||
for (var i in records) {
|
||||
|
||||
role_table += '<tr>';
|
||||
role_table += '<td>'+records[i].name+'</td>';
|
||||
role_table += '<td>'+records[i].for_type+'</td>';
|
||||
role_table += '<td>'+records[i].for_id+'</td>';
|
||||
role_table += '<td>'+records[i].disable+'</td>';
|
||||
role_table += '<td>'+records[i].enable_on+'</td>';
|
||||
role_table += '<td>'+records[i].disable_on+'</td>';
|
||||
role_table += '<td>'+records[i].notes+'</td>';
|
||||
role_table += '<td>'+records[i].created_on+'</td>';
|
||||
role_table += '<td>'+records[i].updated_on+'</td>';
|
||||
role_table += '</tr>';
|
||||
}
|
||||
|
||||
role_table += '</table>';
|
||||
*/
|
||||
|
||||
document.getElementById('events').innerHTML = html;
|
||||
} else {
|
||||
document.getElementById('events').innerHTML = 'No events found.';
|
||||
}
|
||||
|
||||
return true;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return false;
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
function get_event(event_id) {
|
||||
url = '/event/'+event_id;
|
||||
|
||||
let data = { };
|
||||
|
||||
//console.log(data);
|
||||
|
||||
axios.get(url)
|
||||
.then(function (response) {
|
||||
console.log(response);
|
||||
|
||||
if (response.data != null) {
|
||||
record = response.data;
|
||||
|
||||
let html = '';
|
||||
html += '<div>';
|
||||
html += record.name;
|
||||
html += '</div>';
|
||||
|
||||
document.getElementById('event').innerHTML = html;
|
||||
} else {
|
||||
document.getElementById('event').innerHTML = 'Event not found.';
|
||||
}
|
||||
|
||||
return true;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return false;
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
function get_event_locations(event_id) {
|
||||
url = '/event/'+event_id+'/location';
|
||||
|
||||
let data = { };
|
||||
|
||||
//console.log(data);
|
||||
|
||||
axios.get(url)
|
||||
.then(function (response) {
|
||||
console.log(response);
|
||||
|
||||
if (response.data != null) {
|
||||
records = response.data;
|
||||
|
||||
let html = '';
|
||||
html += '<ul>';
|
||||
for (var i in records) {
|
||||
html += '<li>'+records[i].name+'</li>'
|
||||
}
|
||||
html += '</ul>';
|
||||
|
||||
document.getElementById('event_locations').innerHTML = html;
|
||||
} else {
|
||||
document.getElementById('event_locations').innerHTML = 'Event locations not found.';
|
||||
}
|
||||
|
||||
return true;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return false;
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
function get_event_location(event_id, event_location_id) {
|
||||
url = '/event/'+event_id+'/location/'+event_location_id;
|
||||
|
||||
let data = { };
|
||||
|
||||
//console.log(data);
|
||||
|
||||
axios.get(url)
|
||||
.then(function (response) {
|
||||
console.log(response);
|
||||
|
||||
if (response.data != null) {
|
||||
record = response.data;
|
||||
|
||||
let html = '';
|
||||
html += '<div>';
|
||||
html += record.name;
|
||||
html += '</div>';
|
||||
|
||||
document.getElementById('event_location').innerHTML = html;
|
||||
} else {
|
||||
document.getElementById('event_location').innerHTML = 'Event location not found.';
|
||||
}
|
||||
|
||||
return true;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return false;
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
function get_event_location_sessions(event_id, event_location_id) {
|
||||
url = '/event/'+event_id+'/location/'+event_location_id+'/session';
|
||||
|
||||
let data = { };
|
||||
|
||||
//console.log(data);
|
||||
|
||||
axios.get(url)
|
||||
.then(function (response) {
|
||||
console.log(response);
|
||||
|
||||
if (response.data != null) {
|
||||
record = response.data;
|
||||
|
||||
let html = '';
|
||||
html += '<div>';
|
||||
html += record.name;
|
||||
html += '</div>';
|
||||
|
||||
document.getElementById('event_location_sessions').innerHTML = html;
|
||||
} else {
|
||||
document.getElementById('event_location_sessions').innerHTML = 'Event location sessions not found.';
|
||||
}
|
||||
|
||||
return true;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return false;
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
function get_event_sessions(event_id) {
|
||||
url = '/event/'+event_id+'/session';
|
||||
|
||||
let data = { };
|
||||
|
||||
//console.log(data);
|
||||
|
||||
axios.get(url)
|
||||
.then(function (response) {
|
||||
console.log(response);
|
||||
|
||||
if (response.data != null) {
|
||||
records = response.data;
|
||||
|
||||
let html = '';
|
||||
html += '<ul>';
|
||||
for (var i in records) {
|
||||
html += '<li>'+records[i].name+'</li>'
|
||||
}
|
||||
html += '</ul>';
|
||||
|
||||
document.getElementById('event_sessions').innerHTML = html;
|
||||
} else {
|
||||
document.getElementById('event_sessions').innerHTML = 'Event sessions not found.';
|
||||
}
|
||||
|
||||
return true;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return false;
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
function get_event_session(event_id, event_session_id) {
|
||||
url = '/event/'+event_id+'/session/'+event_session_id;
|
||||
|
||||
let data = { };
|
||||
|
||||
//console.log(data);
|
||||
|
||||
axios.get(url)
|
||||
.then(function (response) {
|
||||
console.log(response);
|
||||
|
||||
if (response.data != null) {
|
||||
record = response.data;
|
||||
|
||||
let html = '';
|
||||
html += '<div>';
|
||||
html += record.name;
|
||||
html += '</div>';
|
||||
|
||||
document.getElementById('event_session').innerHTML = html;
|
||||
} else {
|
||||
document.getElementById('event_session').innerHTML = 'Event session not found.';
|
||||
}
|
||||
|
||||
return true;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return false;
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
function get_event_session_presentations(event_id, event_session_id) {
|
||||
url = '/event/'+event_id+'/session/'+event_session_id+'/presentation';
|
||||
|
||||
let data = { };
|
||||
|
||||
//console.log(data);
|
||||
|
||||
axios.get(url)
|
||||
.then(function (response) {
|
||||
console.log(response);
|
||||
|
||||
if (response.data != null) {
|
||||
records = response.data;
|
||||
|
||||
let html = '';
|
||||
html += '<ul>';
|
||||
for (var i in records) {
|
||||
html += '<li>'+records[i].name+'</li>'
|
||||
}
|
||||
html += '</ul>';
|
||||
|
||||
document.getElementById('event_presentations').innerHTML = html;
|
||||
} else {
|
||||
document.getElementById('event_presentations').innerHTML = 'Event session presentations not found.';
|
||||
}
|
||||
|
||||
return true;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return false;
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
function get_event_session_presentation(event_id, event_session_id, event_presentation_id) {
|
||||
url = '/event/'+event_id+'/session/'+event_session_id+'/presentation/'+event_presentation_id;
|
||||
|
||||
let data = { };
|
||||
|
||||
//console.log(data);
|
||||
|
||||
axios.get(url)
|
||||
.then(function (response) {
|
||||
console.log(response);
|
||||
|
||||
if (response.data != null) {
|
||||
record = response.data;
|
||||
|
||||
let html = '';
|
||||
html += '<div>';
|
||||
html += record.name;
|
||||
html += '</div>';
|
||||
|
||||
document.getElementById('event_presentation').innerHTML = html;
|
||||
} else {
|
||||
document.getElementById('event_presentation').innerHTML = 'Event session presentation not found.';
|
||||
}
|
||||
|
||||
return true;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return false;
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
function get_event_session_presentation_presenters(event_id, event_session_id, event_presentation_id) {
|
||||
url = '/event/'+event_id+'/session/'+event_session_id+'/presentation/'+event_presentation_id+'/presenter';
|
||||
|
||||
let data = { };
|
||||
|
||||
//console.log(data);
|
||||
|
||||
axios.get(url)
|
||||
.then(function (response) {
|
||||
console.log(response);
|
||||
|
||||
if (response.data != null) {
|
||||
records = response.data;
|
||||
|
||||
let html = '';
|
||||
html += '<ul>';
|
||||
for (var i in records) {
|
||||
html += '<li>'+records[i].given_name+' '+records[i].family_name;'</li>'
|
||||
}
|
||||
html += '</ul>';
|
||||
|
||||
document.getElementById('event_presenters').innerHTML = html;
|
||||
} else {
|
||||
document.getElementById('event_presenters').innerHTML = 'Event session presentation presenters not found.';
|
||||
}
|
||||
|
||||
return true;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return false;
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
function get_event_session_presentation_presenter(event_id, event_session_id, event_presentation_id, event_presenter_id) {
|
||||
url = '/event/'+event_id+'/session/'+event_session_id+'/presentation/'+event_presentation_id+'/presenter/'+event_presenter_id;
|
||||
|
||||
let data = { };
|
||||
|
||||
//console.log(data);
|
||||
|
||||
axios.get(url)
|
||||
.then(function (response) {
|
||||
console.log(response);
|
||||
|
||||
if (response.data != null) {
|
||||
record = response.data;
|
||||
|
||||
let html = '';
|
||||
html += '<div>';
|
||||
html += record.given_name+' '+record.family_name;
|
||||
html += '</div>';
|
||||
|
||||
document.getElementById('event_presenter').innerHTML = html;
|
||||
} else {
|
||||
document.getElementById('event_presenter').innerHTML = 'Event session presentation presenter not found.';
|
||||
}
|
||||
|
||||
return true;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return false;
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
function get_event_files(event_id) {
|
||||
url = '/event/'+event_id+'/file';
|
||||
|
||||
let data = { };
|
||||
|
||||
//console.log(data);
|
||||
|
||||
axios.get(url)
|
||||
.then(function (response) {
|
||||
console.log(response);
|
||||
|
||||
if (response.data != null) {
|
||||
records = response.data;
|
||||
|
||||
let html = '';
|
||||
html += '<ul>';
|
||||
for (var i in records) {
|
||||
html += '<li>'+records[i].filename+'</li>'
|
||||
}
|
||||
html += '</ul>';
|
||||
|
||||
document.getElementById('event_files').innerHTML = html;
|
||||
} else {
|
||||
document.getElementById('event_files').innerHTML = 'Event files not found.';
|
||||
}
|
||||
|
||||
return true;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return false;
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
function get_event_file(event_id, event_file_id) {
|
||||
url = '/event/'+event_id+'/file/'+event_file_id;
|
||||
|
||||
let data = { };
|
||||
|
||||
//console.log(data);
|
||||
|
||||
axios.get(url)
|
||||
.then(function (response) {
|
||||
console.log(response);
|
||||
|
||||
if (response.data != null) {
|
||||
record = response.data;
|
||||
|
||||
let html = '';
|
||||
html += '<div>';
|
||||
html += record.filename;
|
||||
html += '</div>';
|
||||
|
||||
document.getElementById('event_file').innerHTML = html;
|
||||
} else {
|
||||
document.getElementById('event_file').innerHTML = 'Event file not found.';
|
||||
}
|
||||
|
||||
return true;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return false;
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
function get_event_file_download(event_id, event_file_id) {
|
||||
url = '/event/'+event_id+'/file/'+event_file_id+'/download';
|
||||
|
||||
let data = { };
|
||||
|
||||
//console.log(data);
|
||||
|
||||
axios.get(url)
|
||||
.then(function (response) {
|
||||
console.log(response);
|
||||
|
||||
if (response.data != null) {
|
||||
record = response.data;
|
||||
|
||||
let html = '';
|
||||
html += '<div>';
|
||||
html += 'no idea'; //record.filename;
|
||||
html += '</div>';
|
||||
|
||||
document.getElementById('event_file').innerHTML = html;
|
||||
} else {
|
||||
document.getElementById('event_file').innerHTML = 'Event file not found.';
|
||||
}
|
||||
|
||||
return true;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return false;
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function api_users() {
|
||||
url = '/user';
|
||||
|
||||
let data = { };
|
||||
|
||||
//console.log(data);
|
||||
|
||||
axios.get(url)
|
||||
.then(function (response) {
|
||||
console.log(response);
|
||||
return true;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return false;
|
||||
});
|
||||
return false;
|
||||
}
|
||||
142
app/js/hold launcher.js
Normal file
142
app/js/hold launcher.js
Normal file
@@ -0,0 +1,142 @@
|
||||
const os = require('os');
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
|
||||
let request_waiting = false;
|
||||
|
||||
setInterval(async function() {
|
||||
if (typeof axios.defaults.headers.common['Authorization'] !== 'undefined' && axios.defaults.headers.common['Authorization'] != null) {
|
||||
|
||||
if (typeof launcher.sessions === 'undefined') {
|
||||
console.log('Check for location files.');
|
||||
let for_id = launcher.event_location_id;
|
||||
launcher.files = await api.get_files_for_type_for_id(axios, 'location', for_id);
|
||||
for (var i in launcher.files) {
|
||||
console.log('f: ('+launcher.files[i].event_file_id+') '+launcher.files[i].event_file_filename+' ***')
|
||||
file_id = launcher.files[i].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
filename = launcher.files[i].hash_sha256+'.file';
|
||||
|
||||
save_path = path.join(file_cache_path, filename);
|
||||
|
||||
//console.log(directory_and_filename);
|
||||
|
||||
if (fs.existsSync(save_path)) {
|
||||
console.log('Local file already exists: '+save_path);
|
||||
} else {
|
||||
console.log('File not found locally. Downloading file: '+save_path);
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // Must download file using main node.js thread.
|
||||
//response.data.pipe(fs.createWriteStream(directory_and_filename));
|
||||
}
|
||||
//let results = await api.download_file_id(axios, file_id, hash_sha256);
|
||||
|
||||
}
|
||||
} else {
|
||||
console.log('No check for location files.');
|
||||
}
|
||||
|
||||
if (typeof launcher.sessions === 'undefined') {
|
||||
console.log('Check for location sessions.');
|
||||
launcher.sessions = await api.get_event_location_sessions(axios, launcher.event_id, launcher.event_location_id);
|
||||
for (var i in launcher.sessions) {
|
||||
console.log('*** '+launcher.sessions[i].name+' ***')
|
||||
|
||||
// Check for session files start
|
||||
if (typeof launcher.sessions[i].files === 'undefined') {
|
||||
console.log('Check for session files.');
|
||||
let for_id = launcher.sessions[i].id;
|
||||
launcher.sessions[i].files = await api.get_files_for_type_for_id(axios, 'session', for_id);
|
||||
if (launcher.sessions[i].files) {
|
||||
console.log('Session files found.');
|
||||
for (var j in launcher.sessions[i].files) {
|
||||
console.log('f: ('+launcher.sessions[i].files[j].event_file_id+') '+launcher.sessions[i].files[j].event_file_filename+' ***');
|
||||
file_id = launcher.sessions[i].files[j].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
hash_sha256 = launcher.sessions[i].files[j].hash_sha256+'.file';
|
||||
let results = await api.download_file_id(axios, file_id, hash_sha256);
|
||||
}
|
||||
} else {
|
||||
console.log('No session files found.');
|
||||
}
|
||||
} else {
|
||||
console.log('No check for session files.');
|
||||
}
|
||||
// Check for session files end
|
||||
|
||||
// Get session presentations and associated files
|
||||
launcher.sessions[i].presentations = await api.get_session_presentations(axios, launcher.event_id, launcher.sessions[i].id);
|
||||
for (var j in launcher.sessions[i].presentations) {
|
||||
console.log('* '+launcher.sessions[i].presentations[j].name);
|
||||
|
||||
// Check for presentation files start
|
||||
if (typeof launcher.sessions[i].presentations[j].files === 'undefined') {
|
||||
console.log('Check for presentation files.');
|
||||
let for_id = launcher.sessions[i].presentations[j].id;
|
||||
launcher.sessions[i].presentations[j].files = await api.get_files_for_type_for_id(axios, 'presentation', for_id);
|
||||
if (launcher.sessions[i].presentations[j].files) {
|
||||
console.log('Presentation files found.');
|
||||
for (var k in launcher.sessions[i].presentations[j].files) {
|
||||
console.log('f: ('+launcher.sessions[i].presentations[j].files[k].event_file_id+') '+launcher.sessions[i].presentations[j].files[k].event_file_filename+' ***');
|
||||
file_id = launcher.sessions[i].presentations[j].files[k].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
hash_sha256 = launcher.sessions[i].presentations[j].files[k].hash_sha256+'.file';
|
||||
let results = await api.download_file_id(axios, file_id, hash_sha256);
|
||||
}
|
||||
} else {
|
||||
console.log('No presentation files found.');
|
||||
}
|
||||
} else {
|
||||
console.log('No check for presentation files.');
|
||||
}
|
||||
// Check for presentation files end
|
||||
|
||||
|
||||
// Get session presentations presenters and associated files
|
||||
//let event_presentation_id = launcher.sessions[i].presentations[j].id;
|
||||
launcher.sessions[i].presentations[j].presenters = await api.get_presentation_presenters(axios, launcher.event_id, launcher.sessions[i].id, launcher.sessions[i].presentations[j].id);
|
||||
for (var k in launcher.sessions[i].presentations[j].presenters) {
|
||||
console.log('-- '+launcher.sessions[i].presentations[j].presenters[k].given_name+' '+launcher.sessions[i].presentations[j].presenters[k].family_name)
|
||||
|
||||
// Check for presenter files start
|
||||
if (typeof launcher.sessions[i].presentations[j].presenters[k].files === 'undefined') {
|
||||
console.log('Check for presenter files.');
|
||||
let for_id = launcher.sessions[i].presentations[j].presenters[k].id;
|
||||
launcher.sessions[i].presentations[j].presenters[k].files = await api.get_files_for_type_for_id(axios, 'presenter', for_id);
|
||||
if (launcher.sessions[i].presentations[j].presenters[k].files) {
|
||||
console.log('Presenter files found.');
|
||||
for (var l in launcher.sessions[i].presentations[j].presenters[k].files) {
|
||||
console.log('f: ('+launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_id+') '+launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_filename+' ***')
|
||||
file_id = launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
hash_sha256 = launcher.sessions[i].presentations[j].presenters[k].files[l].hash_sha256+'.file';
|
||||
let results = await api.download_file_id(axios, file_id, hash_sha256);
|
||||
}
|
||||
} else {
|
||||
console.log('No presenter files found.');
|
||||
}
|
||||
} else {
|
||||
console.log('No check for presenter files.');
|
||||
}
|
||||
// Check for presenter files end
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No check for location sessions.');
|
||||
}
|
||||
/*
|
||||
if (launcher.sessions) {
|
||||
console.log('Check for session files.');
|
||||
let for_id = launcher.event_location_id;
|
||||
launcher.files = await api.get_files_for_type_for_id(axios, 'location', for_id);
|
||||
for (var i in launcher.sessions) {
|
||||
console.log('f: ('+launcher.sessions[i].event_file_id+') '+launcher.files[i].event_file_filename+' ***')
|
||||
file_id = launcher.files[i].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
let results = await api.download_file_id(axios, file_id);
|
||||
}
|
||||
} else {
|
||||
console.log('No check for location files.');
|
||||
}
|
||||
*/
|
||||
|
||||
} else {
|
||||
console.log('Waiting a few more seconds to see if Authorization header is set.');
|
||||
}
|
||||
}, 5000);
|
||||
50
app/js/hold testing.js
Normal file
50
app/js/hold testing.js
Normal file
@@ -0,0 +1,50 @@
|
||||
const { shell } = require('electron');
|
||||
const fs = require('fs');
|
||||
const screen = require('screen');
|
||||
|
||||
const path = '';
|
||||
const filename = 'test.txt';
|
||||
|
||||
//Check if file exists
|
||||
if(fs.existsSync(filename)) {
|
||||
} else {
|
||||
console.log("File does not exist. Creating new file.")
|
||||
fs.writeFile(filename, '', (err) => {
|
||||
if(err)
|
||||
console.log(err)
|
||||
})
|
||||
}
|
||||
|
||||
//shell.openItem('test.txt');
|
||||
|
||||
/*
|
||||
const path = './';
|
||||
if (fs.stat.isDirectory(path)) {
|
||||
console.log('Directory');
|
||||
} else {
|
||||
console.log('File or nothing');
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
function testing() {
|
||||
console.log(api_temporary_token);
|
||||
}
|
||||
*/
|
||||
|
||||
/* Testing inter-process communication (IPC) */
|
||||
/*
|
||||
var ipc = require('electron').ipcRenderer;
|
||||
var authButton = document.getElementById('test_button');
|
||||
authButton.addEventListener('click', function(){
|
||||
ipc.once('action_reply', function(event, response){
|
||||
processResponse(response);
|
||||
})
|
||||
//ipc.send('invoke_action', 'Test PowerPoint.pptx');
|
||||
ipc.send('invoke_action', api_temporary_token);
|
||||
});
|
||||
|
||||
function processResponse(response) {
|
||||
document.getElementById('response').innerHTML = "Response: "+response;
|
||||
}
|
||||
*/
|
||||
142
app/js/launcher.js.bak
Normal file
142
app/js/launcher.js.bak
Normal file
@@ -0,0 +1,142 @@
|
||||
const os = require('os');
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
|
||||
let request_waiting = false;
|
||||
|
||||
setInterval(async function() {
|
||||
if (typeof axios.defaults.headers.common['Authorization'] !== 'undefined' && axios.defaults.headers.common['Authorization'] != null) {
|
||||
|
||||
if (typeof launcher.sessions === 'undefined') {
|
||||
console.log('Check for location files.');
|
||||
let for_id = launcher.event_location_id;
|
||||
launcher.files = await api.get_files_for_type_for_id(axios, 'location', for_id);
|
||||
for (var i in launcher.files) {
|
||||
console.log('f: ('+launcher.files[i].event_file_id+') '+launcher.files[i].event_file_filename+' ***')
|
||||
file_id = launcher.files[i].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
filename = launcher.files[i].hash_sha256+'.file';
|
||||
|
||||
save_path = path.join(file_cache_path, filename);
|
||||
|
||||
//console.log(directory_and_filename);
|
||||
|
||||
if (fs.existsSync(save_path)) {
|
||||
console.log('Local file already exists: '+save_path);
|
||||
} else {
|
||||
console.log('File not found locally. Downloading file: '+save_path);
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // Must download file using main node.js thread.
|
||||
//response.data.pipe(fs.createWriteStream(directory_and_filename));
|
||||
}
|
||||
//let results = await api.download_file_id(axios, file_id, hash_sha256);
|
||||
|
||||
}
|
||||
} else {
|
||||
console.log('No check for location files.');
|
||||
}
|
||||
|
||||
if (typeof launcher.sessions === 'undefined') {
|
||||
console.log('Check for location sessions.');
|
||||
launcher.sessions = await api.get_event_location_sessions(axios, launcher.event_id, launcher.event_location_id);
|
||||
for (var i in launcher.sessions) {
|
||||
console.log('*** '+launcher.sessions[i].name+' ***')
|
||||
|
||||
// Check for session files start
|
||||
if (typeof launcher.sessions[i].files === 'undefined') {
|
||||
console.log('Check for session files.');
|
||||
let for_id = launcher.sessions[i].id;
|
||||
launcher.sessions[i].files = await api.get_files_for_type_for_id(axios, 'session', for_id);
|
||||
if (launcher.sessions[i].files) {
|
||||
console.log('Session files found.');
|
||||
for (var j in launcher.sessions[i].files) {
|
||||
console.log('f: ('+launcher.sessions[i].files[j].event_file_id+') '+launcher.sessions[i].files[j].event_file_filename+' ***');
|
||||
file_id = launcher.sessions[i].files[j].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
hash_sha256 = launcher.sessions[i].files[j].hash_sha256+'.file';
|
||||
let results = await api.download_file_id(axios, file_id, hash_sha256);
|
||||
}
|
||||
} else {
|
||||
console.log('No session files found.');
|
||||
}
|
||||
} else {
|
||||
console.log('No check for session files.');
|
||||
}
|
||||
// Check for session files end
|
||||
|
||||
// Get session presentations and associated files
|
||||
launcher.sessions[i].presentations = await api.get_session_presentations(axios, launcher.event_id, launcher.sessions[i].id);
|
||||
for (var j in launcher.sessions[i].presentations) {
|
||||
console.log('* '+launcher.sessions[i].presentations[j].name);
|
||||
|
||||
// Check for presentation files start
|
||||
if (typeof launcher.sessions[i].presentations[j].files === 'undefined') {
|
||||
console.log('Check for presentation files.');
|
||||
let for_id = launcher.sessions[i].presentations[j].id;
|
||||
launcher.sessions[i].presentations[j].files = await api.get_files_for_type_for_id(axios, 'presentation', for_id);
|
||||
if (launcher.sessions[i].presentations[j].files) {
|
||||
console.log('Presentation files found.');
|
||||
for (var k in launcher.sessions[i].presentations[j].files) {
|
||||
console.log('f: ('+launcher.sessions[i].presentations[j].files[k].event_file_id+') '+launcher.sessions[i].presentations[j].files[k].event_file_filename+' ***');
|
||||
file_id = launcher.sessions[i].presentations[j].files[k].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
hash_sha256 = launcher.sessions[i].presentations[j].files[k].hash_sha256+'.file';
|
||||
let results = await api.download_file_id(axios, file_id, hash_sha256);
|
||||
}
|
||||
} else {
|
||||
console.log('No presentation files found.');
|
||||
}
|
||||
} else {
|
||||
console.log('No check for presentation files.');
|
||||
}
|
||||
// Check for presentation files end
|
||||
|
||||
|
||||
// Get session presentations presenters and associated files
|
||||
//let event_presentation_id = launcher.sessions[i].presentations[j].id;
|
||||
launcher.sessions[i].presentations[j].presenters = await api.get_presentation_presenters(axios, launcher.event_id, launcher.sessions[i].id, launcher.sessions[i].presentations[j].id);
|
||||
for (var k in launcher.sessions[i].presentations[j].presenters) {
|
||||
console.log('-- '+launcher.sessions[i].presentations[j].presenters[k].given_name+' '+launcher.sessions[i].presentations[j].presenters[k].family_name)
|
||||
|
||||
// Check for presenter files start
|
||||
if (typeof launcher.sessions[i].presentations[j].presenters[k].files === 'undefined') {
|
||||
console.log('Check for presenter files.');
|
||||
let for_id = launcher.sessions[i].presentations[j].presenters[k].id;
|
||||
launcher.sessions[i].presentations[j].presenters[k].files = await api.get_files_for_type_for_id(axios, 'presenter', for_id);
|
||||
if (launcher.sessions[i].presentations[j].presenters[k].files) {
|
||||
console.log('Presenter files found.');
|
||||
for (var l in launcher.sessions[i].presentations[j].presenters[k].files) {
|
||||
console.log('f: ('+launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_id+') '+launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_filename+' ***')
|
||||
file_id = launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
hash_sha256 = launcher.sessions[i].presentations[j].presenters[k].files[l].hash_sha256+'.file';
|
||||
let results = await api.download_file_id(axios, file_id, hash_sha256);
|
||||
}
|
||||
} else {
|
||||
console.log('No presenter files found.');
|
||||
}
|
||||
} else {
|
||||
console.log('No check for presenter files.');
|
||||
}
|
||||
// Check for presenter files end
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No check for location sessions.');
|
||||
}
|
||||
/*
|
||||
if (launcher.sessions) {
|
||||
console.log('Check for session files.');
|
||||
let for_id = launcher.event_location_id;
|
||||
launcher.files = await api.get_files_for_type_for_id(axios, 'location', for_id);
|
||||
for (var i in launcher.sessions) {
|
||||
console.log('f: ('+launcher.sessions[i].event_file_id+') '+launcher.files[i].event_file_filename+' ***')
|
||||
file_id = launcher.files[i].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
let results = await api.download_file_id(axios, file_id);
|
||||
}
|
||||
} else {
|
||||
console.log('No check for location files.');
|
||||
}
|
||||
*/
|
||||
|
||||
} else {
|
||||
console.log('Waiting a few more seconds to see if Authorization header is set.');
|
||||
}
|
||||
}, 5000);
|
||||
422
app/js/module_api 2019-12-20.js.bak
Normal file
422
app/js/module_api 2019-12-20.js.bak
Normal file
@@ -0,0 +1,422 @@
|
||||
const os = require('os');
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
|
||||
const { ipcRenderer } = require('electron');
|
||||
|
||||
exports.api_token_request_async = async function (axios, secret_key) {
|
||||
console.log('Requesting API temporary token...');
|
||||
const url = '/api_token_request';
|
||||
|
||||
let data = { secret_key: secret_key };
|
||||
|
||||
const response = await axios.post(url, data)
|
||||
.then(function (response) {
|
||||
//console.log(response);
|
||||
const api_temporary_token = response.data.temporary_token;
|
||||
//console.log('API Temporary Token: '+temporary_token);
|
||||
return api_temporary_token;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.error(error);
|
||||
return error;
|
||||
});
|
||||
return response;
|
||||
}
|
||||
|
||||
|
||||
exports.get_event_location_sessions = async function (axios, event_id, event_location_id) {
|
||||
console.log('Requesting location sessions...');
|
||||
const url = '/event/'+event_id+'/location/'+event_location_id+'/session';
|
||||
|
||||
const data = await axios.get(url)
|
||||
.then(function (response) {
|
||||
//console.log(response.data);
|
||||
//data = response.data;
|
||||
return response.data;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return error;
|
||||
});
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
exports.get_session_presentations = async function (axios, event_id, event_session_id) {
|
||||
console.log('Requesting session presentations...');
|
||||
const url = '/event/'+event_id+'/session/'+event_session_id+'/presentation';
|
||||
|
||||
const data = await axios.get(url)
|
||||
.then(function (response) {
|
||||
//console.log(response.data);
|
||||
//data = response.data;
|
||||
return response.data;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return error;
|
||||
});
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
exports.get_presentation_presenters = async function (axios, event_id, event_session_id, event_presentation_id) {
|
||||
console.log('Requesting presentation presenters...');
|
||||
const url = '/event/'+event_id+'/session/'+event_session_id+'/presentation/'+event_presentation_id+'/presenter';
|
||||
|
||||
const data = await axios.get(url)
|
||||
.then(function (response) {
|
||||
//console.log(response.data);
|
||||
//data = response.data;
|
||||
return response.data;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return error;
|
||||
});
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
exports.get_files_for_type_for_id = async function (axios, for_type, for_id) {
|
||||
console.log('Requesting files for '+for_type+' '+for_id);
|
||||
const url = '/event/file/'+for_type+'/'+for_id;
|
||||
|
||||
const data = await axios.get(url)
|
||||
.then(function (response) {
|
||||
//console.log(response.data);
|
||||
//data = response.data;
|
||||
return response.data;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return error;
|
||||
});
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
exports.download_file_id = async function (axios, file_id, filename) {
|
||||
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // in render thread
|
||||
|
||||
console.log('1: download file id '+file_id);
|
||||
const url = '/event/file/'+file_id+'/download';
|
||||
|
||||
//const data = await axios.get(url, responseType: 'stream')
|
||||
const data = await axios({
|
||||
method: "get",
|
||||
url: url,
|
||||
responseType: "stream"
|
||||
})
|
||||
.then(function (response) {
|
||||
console.log('2: downloaded file id '+file_id);
|
||||
console.log(response);
|
||||
//console.log(response.data);
|
||||
|
||||
let filename = 'default.txt';
|
||||
|
||||
if (typeof filename_override === 'undefined' || filename_override == null) {
|
||||
let headerLine = response.data.headers['content-disposition'];
|
||||
|
||||
console.log(headerLine);
|
||||
console.log(headerLine.indexOf('="'));
|
||||
console.log(headerLine.indexOf('='));
|
||||
if (headerLine.indexOf('="') != -1) {
|
||||
let startFileNameIndex = headerLine.indexOf('="') + 2;
|
||||
let endFileNameIndex = headerLine.lastIndexOf('"');
|
||||
filename = headerLine.substring(startFileNameIndex, endFileNameIndex);
|
||||
} else if (headerLine.indexOf('=') != -1) {
|
||||
let startFileNameIndex = headerLine.indexOf('=') + 1;
|
||||
let endFileNameIndex = headerLine.length;
|
||||
filename = headerLine.substring(startFileNameIndex, endFileNameIndex);
|
||||
} else {
|
||||
filename = 'filename_not_found_in_header.txt';
|
||||
}
|
||||
} else {
|
||||
filename = filename_override;
|
||||
}
|
||||
|
||||
let directory = 'file_cache/';
|
||||
|
||||
directory_and_filename = path.join(directory, filename);
|
||||
|
||||
//console.log(directory_and_filename);
|
||||
|
||||
if (fs.existsSync(directory_and_filename)) {
|
||||
console.log('3a: file already exists: '+directory_and_filename);
|
||||
} else {
|
||||
console.log('3b: saving file: '+directory_and_filename);
|
||||
response.data.pipe(fs.createWriteStream(directory_and_filename));
|
||||
}
|
||||
//data = response.data;
|
||||
console.log('4: saved file id '+file_id);
|
||||
return true;
|
||||
//return response.data;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return error;
|
||||
});
|
||||
|
||||
//return data;
|
||||
}
|
||||
|
||||
exports.launcher_cache_check = async function (launcher, api_base_url, api_temporary_token, file_cache_path) {
|
||||
if (typeof launcher.event_files === 'undefined') {
|
||||
console.log('Check for global event files.');
|
||||
let for_id = launcher.event_id;
|
||||
launcher.event_files = await api.get_files_for_type_for_id(axios, 'event', for_id);
|
||||
for (var i in launcher.event_files) {
|
||||
console.log('f: ('+launcher.event_files[i].event_file_id+') '+launcher.event_files[i].event_file_filename+' ***')
|
||||
file_id = launcher.event_files[i].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
let filename = launcher.event_files[i].hash_sha256+'.file';
|
||||
|
||||
save_path = path.join(file_cache_path, filename);
|
||||
|
||||
if (fs.existsSync(save_path)) {
|
||||
console.log('Local file already exists: '+save_path);
|
||||
} else {
|
||||
console.log('File not found locally. Downloading file: '+save_path);
|
||||
let api_endpoint = '/event/file/'+file_id+'/download';
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // Must download file using main node.js thread.
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No check for global event files');
|
||||
}
|
||||
|
||||
|
||||
if (typeof launcher.location_files === 'undefined') {
|
||||
console.log('Check for location specific files.');
|
||||
let for_id = launcher.event_location_id;
|
||||
launcher.location_files = await api.get_files_for_type_for_id(axios, 'location', for_id);
|
||||
for (var i in launcher.location_files) {
|
||||
console.log('f: ('+launcher.location_files[i].event_file_id+') '+launcher.location_files[i].event_file_filename+' ***')
|
||||
file_id = launcher.location_files[i].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
let filename = launcher.location_files[i].hash_sha256+'.file';
|
||||
|
||||
save_path = path.join(file_cache_path, filename);
|
||||
|
||||
if (fs.existsSync(save_path)) {
|
||||
console.log('Local file already exists: '+save_path);
|
||||
} else {
|
||||
console.log('File not found locally. Downloading file: '+save_path);
|
||||
let api_endpoint = '/event/file/'+file_id+'/download';
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // Must download file using main node.js thread.
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No check for location specific files.');
|
||||
}
|
||||
|
||||
|
||||
if (typeof launcher.sessions === 'undefined') {
|
||||
console.log('Check for location sessions.');
|
||||
launcher.sessions = await api.get_event_location_sessions(axios, launcher.event_id, launcher.event_location_id);
|
||||
for (var i in launcher.sessions) {
|
||||
console.log('*** '+launcher.sessions[i].name+' ***')
|
||||
|
||||
// Check for session files start
|
||||
if (typeof launcher.sessions[i].files === 'undefined') {
|
||||
console.log('Check for session files.');
|
||||
let for_id = launcher.sessions[i].id;
|
||||
launcher.sessions[i].files = await api.get_files_for_type_for_id(axios, 'session', for_id);
|
||||
if (launcher.sessions[i].files) {
|
||||
console.log('Session files found.');
|
||||
for (var j in launcher.sessions[i].files) {
|
||||
console.log('f: ('+launcher.sessions[i].files[j].event_file_id+') '+launcher.sessions[i].files[j].event_file_filename+' ***');
|
||||
file_id = launcher.sessions[i].files[j].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
let filename = launcher.sessions[i].files[j].hash_sha256+'.file';
|
||||
|
||||
save_path = path.join(file_cache_path, filename);
|
||||
|
||||
if (fs.existsSync(save_path)) {
|
||||
console.log('Local file already exists: '+save_path);
|
||||
} else {
|
||||
console.log('File not found locally. Downloading file: '+save_path);
|
||||
let api_endpoint = '/event/file/'+file_id+'/download';
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // Must download file using main node.js thread.
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No session files found.');
|
||||
}
|
||||
} else {
|
||||
console.log('No check for session files.');
|
||||
}
|
||||
// Check for session files end
|
||||
|
||||
// Get session presentations and associated files
|
||||
launcher.sessions[i].presentations = await api.get_session_presentations(axios, launcher.event_id, launcher.sessions[i].id);
|
||||
for (var j in launcher.sessions[i].presentations) {
|
||||
console.log('* '+launcher.sessions[i].presentations[j].name);
|
||||
|
||||
// Check for presentation files start
|
||||
if (typeof launcher.sessions[i].presentations[j].files === 'undefined') {
|
||||
console.log('Check for presentation files.');
|
||||
let for_id = launcher.sessions[i].presentations[j].id;
|
||||
launcher.sessions[i].presentations[j].files = await api.get_files_for_type_for_id(axios, 'presentation', for_id);
|
||||
if (launcher.sessions[i].presentations[j].files) {
|
||||
console.log('Presentation files found.');
|
||||
for (var k in launcher.sessions[i].presentations[j].files) {
|
||||
console.log('f: ('+launcher.sessions[i].presentations[j].files[k].event_file_id+') '+launcher.sessions[i].presentations[j].files[k].event_file_filename+' ***');
|
||||
file_id = launcher.sessions[i].presentations[j].files[k].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
let filename = launcher.sessions[i].presentations[j].files[k].hash_sha256+'.file';
|
||||
|
||||
save_path = path.join(file_cache_path, filename);
|
||||
|
||||
if (fs.existsSync(save_path)) {
|
||||
console.log('Local file already exists: '+save_path);
|
||||
} else {
|
||||
console.log('File not found locally. Downloading file: '+save_path);
|
||||
let api_endpoint = '/event/file/'+file_id+'/download';
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // Must download file using main node.js thread.
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No presentation files found.');
|
||||
}
|
||||
} else {
|
||||
console.log('No check for presentation files.');
|
||||
}
|
||||
// Check for presentation files end
|
||||
|
||||
|
||||
// Get session presentations presenters and associated files
|
||||
//let event_presentation_id = launcher.sessions[i].presentations[j].id;
|
||||
launcher.sessions[i].presentations[j].presenters = await api.get_presentation_presenters(axios, launcher.event_id, launcher.sessions[i].id, launcher.sessions[i].presentations[j].id);
|
||||
for (var k in launcher.sessions[i].presentations[j].presenters) {
|
||||
console.log('-- '+launcher.sessions[i].presentations[j].presenters[k].given_name+' '+launcher.sessions[i].presentations[j].presenters[k].family_name)
|
||||
|
||||
// Check for presenter files start
|
||||
if (typeof launcher.sessions[i].presentations[j].presenters[k].files === 'undefined') {
|
||||
console.log('Check for presenter files.');
|
||||
let for_id = launcher.sessions[i].presentations[j].presenters[k].id;
|
||||
launcher.sessions[i].presentations[j].presenters[k].files = await api.get_files_for_type_for_id(axios, 'presenter', for_id);
|
||||
if (launcher.sessions[i].presentations[j].presenters[k].files) {
|
||||
console.log('Presenter files found.');
|
||||
for (var l in launcher.sessions[i].presentations[j].presenters[k].files) {
|
||||
console.log('f: ('+launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_id+') '+launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_filename+' ***')
|
||||
file_id = launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
let filename = launcher.sessions[i].presentations[j].presenters[k].files[l].hash_sha256+'.file';
|
||||
|
||||
save_path = path.join(file_cache_path, filename);
|
||||
|
||||
if (fs.existsSync(save_path)) {
|
||||
console.log('Local file already exists: '+save_path);
|
||||
} else {
|
||||
console.log('File not found locally. Downloading file: '+save_path);
|
||||
let api_endpoint = '/event/file/'+file_id+'/download';
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // Must download file using main node.js thread.
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No presenter files found.');
|
||||
}
|
||||
} else {
|
||||
console.log('No check for presenter files.');
|
||||
}
|
||||
// Check for presenter files end
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No check for location sessions.');
|
||||
}
|
||||
|
||||
console.log('Location cache check finished.');
|
||||
return true;
|
||||
}
|
||||
|
||||
exports.launcher_render = async function (launcher) {
|
||||
console.log('Rendering launcher...');
|
||||
document.getElementById('location_title').innerHTML = '<h1>Launcher '+launcher.event_location_id+'@'+launcher.event_id+'</h1>';
|
||||
|
||||
document.getElementById('event_files_menu').innerHTML = '<h2>Event Files</h2>';
|
||||
document.getElementById('event_files_menu').innerHTML += '<ul class="">';
|
||||
for (var i in launcher.event_files) {
|
||||
document.getElementById('event_files_menu').innerHTML += '<li id="menu_event_file_id_'+launcher.event_files[i].id+'" class="btn btn-info">'+launcher.event_files[i].event_file_filename+'</li>';
|
||||
}
|
||||
document.getElementById('event_files_menu').innerHTML += '</ul>';
|
||||
|
||||
document.getElementById('location_files_menu').innerHTML = '<h2>Location Files</h2>';
|
||||
document.getElementById('location_files_menu').innerHTML += '<ul class="" role="">';
|
||||
for (var i in launcher.location_files) {
|
||||
document.getElementById('location_files_menu').innerHTML += '<li id="menu_event_file_id_'+launcher.location_files[i].id+'" class="btn btn-info">'+launcher.location_files[i].event_file_filename+'</li>';
|
||||
}
|
||||
document.getElementById('location_files_menu').innerHTML += '</ul>';
|
||||
|
||||
document.getElementById('sessions_menu').innerHTML = '<h2>Sessions</h2>';
|
||||
document.getElementById('sessions_menu').innerHTML += '<ul class="" role="">';
|
||||
//let sessions_detail = '';
|
||||
document.getElementById('sessions_detail').innerHTML = ''; // This needs to be reviewed.
|
||||
for (var i in launcher.sessions) {
|
||||
// List sessions in menu
|
||||
document.getElementById('sessions_menu').innerHTML += '<li id="menu_session_id_'+launcher.sessions[i].id+'" class="btn btn-info btn_view_session" data-session_id="'+launcher.sessions[i].id+'">'+launcher.sessions[i].name+'</li>';
|
||||
|
||||
// Create containers for each session
|
||||
let session_detail = '';
|
||||
session_detail += '<div id="detail_session_id_'+launcher.sessions[i].id+'" class="container d-none session_detail" data-session_id="'+launcher.sessions[i].id+'">';
|
||||
session_detail += '<h2 class="session_title">'+launcher.sessions[i].name+'</h2>';
|
||||
session_detail += '<div class="session_presentations"><ul>';
|
||||
for (var j in launcher.sessions[i].presentations) {
|
||||
session_detail += '<li>'+launcher.sessions[i].presentations[j].name+'</li>';
|
||||
}
|
||||
session_detail += '</ul></div>';
|
||||
session_detail += '</div> <!-- End session detail for '+launcher.sessions[i].id+' -->';
|
||||
|
||||
document.getElementById('sessions_detail').innerHTML += session_detail;
|
||||
|
||||
//document.getElementById('sessions_menu').innerHTML += '</ul>';
|
||||
|
||||
}
|
||||
document.getElementById('sessions_menu').innerHTML += '</ul>';
|
||||
|
||||
index_sessions_detail('btn_view_session');
|
||||
|
||||
|
||||
//const btn_session_{{ event_presentation.id }}_name = document.querySelector('button#presentation_{{ event_presentation.id }}_name');
|
||||
//btn_presentation_{{ event_presentation.id }}_name.onclick = display_hide_poster_for_type_id.bind(this, true, 'presentation', {{ event_presentation.id }});
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/* Updated 2019-12-19 */
|
||||
function index_sessions_detail(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')) } );
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/* Updated 2019-12-19 */
|
||||
function view_session(session_id) {
|
||||
var class_elements = document.getElementsByClassName('session_detail');
|
||||
console.log('*** 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;
|
||||
}
|
||||
614
app/js/module_api 2020-01-08.js.bak
Normal file
614
app/js/module_api 2020-01-08.js.bak
Normal file
@@ -0,0 +1,614 @@
|
||||
const os = require('os');
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
|
||||
const { ipcRenderer } = require('electron');
|
||||
|
||||
exports.api_token_request_async = async function (axios, secret_key) {
|
||||
console.log('Requesting API temporary token...');
|
||||
const url = '/api_token_request';
|
||||
|
||||
let data = { secret_key: secret_key };
|
||||
|
||||
const response = await axios.post(url, data)
|
||||
.then(function (response) {
|
||||
//console.log(response);
|
||||
const api_temporary_token = response.data.temporary_token;
|
||||
//console.log('API Temporary Token: '+temporary_token);
|
||||
return api_temporary_token;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.error(error);
|
||||
return error;
|
||||
});
|
||||
return response;
|
||||
}
|
||||
|
||||
|
||||
exports.get_event_details = async function (axios, event_id) {
|
||||
console.log('Requesting event details...');
|
||||
const url = '/event/'+event_id;
|
||||
|
||||
const data = await axios.get(url)
|
||||
.then(function (response) {
|
||||
//console.log(response.data);
|
||||
//data = response.data;
|
||||
return response.data;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return error;
|
||||
});
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
exports.get_event_location_details = async function (axios, event_id, event_location_id) {
|
||||
console.log('Requesting event location details...');
|
||||
const url = '/event/'+event_id+'/location/'+event_location_id;
|
||||
|
||||
const data = await axios.get(url)
|
||||
.then(function (response) {
|
||||
//console.log(response.data);
|
||||
//data = response.data;
|
||||
return response.data;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return error;
|
||||
});
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
exports.get_event_location_sessions = async function (axios, event_id, event_location_id) {
|
||||
console.log('Requesting location sessions...');
|
||||
const url = '/event/'+event_id+'/location/'+event_location_id+'/session';
|
||||
|
||||
const data = await axios.get(url)
|
||||
.then(function (response) {
|
||||
//console.log(response.data);
|
||||
//data = response.data;
|
||||
return response.data;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return error;
|
||||
});
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
exports.get_session_presentations = async function (axios, event_id, event_session_id) {
|
||||
console.log('Requesting session presentations...');
|
||||
const url = '/event/'+event_id+'/session/'+event_session_id+'/presentation';
|
||||
|
||||
const data = await axios.get(url)
|
||||
.then(function (response) {
|
||||
//console.log(response.data);
|
||||
//data = response.data;
|
||||
return response.data;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return error;
|
||||
});
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
exports.get_presentation_presenters = async function (axios, event_id, event_session_id, event_presentation_id) {
|
||||
console.log('Requesting presentation presenters...');
|
||||
const url = '/event/'+event_id+'/session/'+event_session_id+'/presentation/'+event_presentation_id+'/presenter';
|
||||
|
||||
const data = await axios.get(url)
|
||||
.then(function (response) {
|
||||
//console.log(response.data);
|
||||
//data = response.data;
|
||||
return response.data;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return error;
|
||||
});
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
exports.get_files_for_type_for_id = async function (axios, for_type, for_id) {
|
||||
console.log('Requesting files for '+for_type+' '+for_id);
|
||||
const url = '/event/file/'+for_type+'/'+for_id;
|
||||
|
||||
const data = await axios.get(url)
|
||||
.then(function (response) {
|
||||
//console.log(response.data);
|
||||
//data = response.data;
|
||||
return response.data;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return error;
|
||||
});
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
exports.download_file_id = async function (axios, file_id, filename) {
|
||||
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // in render thread
|
||||
|
||||
console.log('1: download file id '+file_id);
|
||||
const url = '/event/file/'+file_id+'/download';
|
||||
|
||||
//const data = await axios.get(url, responseType: 'stream')
|
||||
const data = await axios({
|
||||
method: "get",
|
||||
url: url,
|
||||
responseType: "stream"
|
||||
})
|
||||
.then(function (response) {
|
||||
console.log('2: downloaded file id '+file_id);
|
||||
console.log(response);
|
||||
//console.log(response.data);
|
||||
|
||||
let filename = 'default.txt';
|
||||
|
||||
if (typeof filename_override === 'undefined' || filename_override == null) {
|
||||
let headerLine = response.data.headers['content-disposition'];
|
||||
|
||||
console.log(headerLine);
|
||||
console.log(headerLine.indexOf('="'));
|
||||
console.log(headerLine.indexOf('='));
|
||||
if (headerLine.indexOf('="') != -1) {
|
||||
let startFileNameIndex = headerLine.indexOf('="') + 2;
|
||||
let endFileNameIndex = headerLine.lastIndexOf('"');
|
||||
filename = headerLine.substring(startFileNameIndex, endFileNameIndex);
|
||||
} else if (headerLine.indexOf('=') != -1) {
|
||||
let startFileNameIndex = headerLine.indexOf('=') + 1;
|
||||
let endFileNameIndex = headerLine.length;
|
||||
filename = headerLine.substring(startFileNameIndex, endFileNameIndex);
|
||||
} else {
|
||||
filename = 'filename_not_found_in_header.txt';
|
||||
}
|
||||
} else {
|
||||
filename = filename_override;
|
||||
}
|
||||
|
||||
let directory = 'file_cache/';
|
||||
|
||||
directory_and_filename = path.join(directory, filename);
|
||||
|
||||
//console.log(directory_and_filename);
|
||||
|
||||
if (fs.existsSync(directory_and_filename)) {
|
||||
console.log('3a: file already exists: '+directory_and_filename);
|
||||
} else {
|
||||
console.log('3b: saving file: '+directory_and_filename);
|
||||
response.data.pipe(fs.createWriteStream(directory_and_filename));
|
||||
}
|
||||
//data = response.data;
|
||||
console.log('4: saved file id '+file_id);
|
||||
return true;
|
||||
//return response.data;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return error;
|
||||
});
|
||||
|
||||
//return data;
|
||||
}
|
||||
|
||||
exports.launcher_cache_check = async function (launcher, api_base_url, api_temporary_token, file_cache_path) {
|
||||
|
||||
if (typeof launcher.event === 'undefined') {
|
||||
launcher.event = await api.get_event_details(axios, launcher.event_id);
|
||||
console.log(launcher.event.id);
|
||||
idbKeyval.set(launcher.event.id, launcher.event, db_event);
|
||||
/*
|
||||
.then(function (data) {
|
||||
console.log(data.id);
|
||||
idbKeyval.set(data.id, data, db_event);
|
||||
//for (var i in response) {
|
||||
//var event_record = data[i];
|
||||
//idbKeyval.set(response[i].id, response[i], db_event);
|
||||
//}
|
||||
});
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
if (typeof launcher.location === 'undefined') {
|
||||
launcher.location = await api.get_event_location_details(axios, launcher.event_id, launcher.event_location_id);
|
||||
}
|
||||
|
||||
if (typeof launcher.event_files === 'undefined') {
|
||||
console.log('Check for global event files.');
|
||||
let for_id = launcher.event_id;
|
||||
launcher.event_files = await api.get_files_for_type_for_id(axios, 'event', for_id);
|
||||
for (var i in launcher.event_files) {
|
||||
console.log('f: ('+launcher.event_files[i].event_file_id+') '+launcher.event_files[i].event_file_filename+' ***')
|
||||
file_id = launcher.event_files[i].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
let filename = launcher.event_files[i].hash_sha256+'.file';
|
||||
|
||||
save_path = path.join(file_cache_path, filename);
|
||||
|
||||
if (fs.existsSync(save_path)) {
|
||||
console.log('Local file already exists: '+save_path);
|
||||
} else {
|
||||
console.log('File not found locally. Downloading file: '+save_path);
|
||||
let api_endpoint = '/event/file/'+file_id+'/download';
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // Must download file using main node.js thread.
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No check for global event files');
|
||||
}
|
||||
|
||||
|
||||
if (typeof launcher.location_files === 'undefined') {
|
||||
console.log('Check for location specific files.');
|
||||
let for_id = launcher.event_location_id;
|
||||
launcher.location_files = await api.get_files_for_type_for_id(axios, 'location', for_id);
|
||||
for (var i in launcher.location_files) {
|
||||
console.log('f: ('+launcher.location_files[i].event_file_id+') '+launcher.location_files[i].event_file_filename+' ***')
|
||||
file_id = launcher.location_files[i].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
let filename = launcher.location_files[i].hash_sha256+'.file';
|
||||
|
||||
save_path = path.join(file_cache_path, filename);
|
||||
|
||||
if (fs.existsSync(save_path)) {
|
||||
console.log('Local file already exists: '+save_path);
|
||||
} else {
|
||||
console.log('File not found locally. Downloading file: '+save_path);
|
||||
let api_endpoint = '/event/file/'+file_id+'/download';
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // Must download file using main node.js thread.
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No check for location specific files.');
|
||||
}
|
||||
|
||||
|
||||
if (typeof launcher.sessions === 'undefined') {
|
||||
console.log('Check for location sessions.');
|
||||
launcher.sessions = await api.get_event_location_sessions(axios, launcher.event_id, launcher.event_location_id);
|
||||
for (var i in launcher.sessions) {
|
||||
console.log('*** '+launcher.sessions[i].name+' ***')
|
||||
|
||||
// Check for session files start
|
||||
if (typeof launcher.sessions[i].files === 'undefined') {
|
||||
console.log('Check for session files.');
|
||||
let for_id = launcher.sessions[i].id;
|
||||
launcher.sessions[i].files = await api.get_files_for_type_for_id(axios, 'session', for_id);
|
||||
if (launcher.sessions[i].files) {
|
||||
console.log('Session files found.');
|
||||
for (var j in launcher.sessions[i].files) {
|
||||
console.log('f: ('+launcher.sessions[i].files[j].event_file_id+') '+launcher.sessions[i].files[j].event_file_filename+' ***');
|
||||
file_id = launcher.sessions[i].files[j].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
let filename = launcher.sessions[i].files[j].hash_sha256+'.file';
|
||||
|
||||
save_path = path.join(file_cache_path, filename);
|
||||
|
||||
if (fs.existsSync(save_path)) {
|
||||
console.log('Local file already exists: '+save_path);
|
||||
} else {
|
||||
console.log('File not found locally. Downloading file: '+save_path);
|
||||
let api_endpoint = '/event/file/'+file_id+'/download';
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // Must download file using main node.js thread.
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No session files found.');
|
||||
}
|
||||
} else {
|
||||
console.log('No check for session files.');
|
||||
}
|
||||
// Check for session files end
|
||||
|
||||
// Get session presentations and associated files
|
||||
launcher.sessions[i].presentations = await api.get_session_presentations(axios, launcher.event_id, launcher.sessions[i].id);
|
||||
for (var j in launcher.sessions[i].presentations) {
|
||||
console.log('* '+launcher.sessions[i].presentations[j].name);
|
||||
|
||||
// Check for presentation files start
|
||||
if (typeof launcher.sessions[i].presentations[j].files === 'undefined') {
|
||||
console.log('Check for presentation files.');
|
||||
let for_id = launcher.sessions[i].presentations[j].id;
|
||||
launcher.sessions[i].presentations[j].files = await api.get_files_for_type_for_id(axios, 'presentation', for_id);
|
||||
if (launcher.sessions[i].presentations[j].files) {
|
||||
console.log('Presentation files found.');
|
||||
for (var k in launcher.sessions[i].presentations[j].files) {
|
||||
console.log('f: ('+launcher.sessions[i].presentations[j].files[k].event_file_id+') '+launcher.sessions[i].presentations[j].files[k].event_file_filename+' ***');
|
||||
file_id = launcher.sessions[i].presentations[j].files[k].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
let filename = launcher.sessions[i].presentations[j].files[k].hash_sha256+'.file';
|
||||
|
||||
save_path = path.join(file_cache_path, filename);
|
||||
|
||||
if (fs.existsSync(save_path)) {
|
||||
console.log('Local file already exists: '+save_path);
|
||||
} else {
|
||||
console.log('File not found locally. Downloading file: '+save_path);
|
||||
let api_endpoint = '/event/file/'+file_id+'/download';
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // Must download file using main node.js thread.
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No presentation files found.');
|
||||
}
|
||||
} else {
|
||||
console.log('No check for presentation files.');
|
||||
}
|
||||
// Check for presentation files end
|
||||
|
||||
|
||||
// Get session presentations presenters and associated files
|
||||
//let event_presentation_id = launcher.sessions[i].presentations[j].id;
|
||||
launcher.sessions[i].presentations[j].presenters = await api.get_presentation_presenters(axios, launcher.event_id, launcher.sessions[i].id, launcher.sessions[i].presentations[j].id);
|
||||
for (var k in launcher.sessions[i].presentations[j].presenters) {
|
||||
console.log('-- '+launcher.sessions[i].presentations[j].presenters[k].given_name+' '+launcher.sessions[i].presentations[j].presenters[k].family_name)
|
||||
|
||||
// Check for presenter files start
|
||||
if (typeof launcher.sessions[i].presentations[j].presenters[k].files === 'undefined') {
|
||||
console.log('Check for presenter files.');
|
||||
let for_id = launcher.sessions[i].presentations[j].presenters[k].id;
|
||||
launcher.sessions[i].presentations[j].presenters[k].files = await api.get_files_for_type_for_id(axios, 'presenter', for_id);
|
||||
if (launcher.sessions[i].presentations[j].presenters[k].files) {
|
||||
console.log('Presenter files found.');
|
||||
for (var l in launcher.sessions[i].presentations[j].presenters[k].files) {
|
||||
console.log('f: ('+launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_id+') '+launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_filename+' ***')
|
||||
file_id = launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
let filename = launcher.sessions[i].presentations[j].presenters[k].files[l].hash_sha256+'.file';
|
||||
|
||||
save_path = path.join(file_cache_path, filename);
|
||||
|
||||
if (fs.existsSync(save_path)) {
|
||||
console.log('Local file already exists: '+save_path);
|
||||
} else {
|
||||
console.log('File not found locally. Downloading file: '+save_path);
|
||||
let api_endpoint = '/event/file/'+file_id+'/download';
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // Must download file using main node.js thread.
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No presenter files found.');
|
||||
}
|
||||
} else {
|
||||
console.log('No check for presenter files.');
|
||||
}
|
||||
// Check for presenter files end
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No check for location sessions.');
|
||||
}
|
||||
|
||||
console.log('Location cache check finished.');
|
||||
return true;
|
||||
}
|
||||
|
||||
exports.launcher_render = async function (launcher) {
|
||||
console.log('Rendering launcher...');
|
||||
document.getElementById('location_title').innerHTML = '<h1>Launcher '+launcher.location.name+'@'+launcher.event.name+'</h1>';
|
||||
|
||||
document.getElementById('event_files_menu').innerHTML = '<h2>Event Files</h2>';
|
||||
document.getElementById('event_files_menu').innerHTML += '<ul class="">';
|
||||
for (var i in launcher.event_files) {
|
||||
document.getElementById('event_files_menu').innerHTML += '<li id="menu_event_file_id_'+launcher.event_files[i].id+'" class="btn btn-info btn_no_case open_local_file" data-hash_sha256="'+launcher.event_files[i].hash_sha256+'.file" data-filename="'+launcher.event_files[i].event_file_filename+'">'+launcher.event_files[i].event_file_filename+'</li>';
|
||||
}
|
||||
document.getElementById('event_files_menu').innerHTML += '</ul>';
|
||||
|
||||
document.getElementById('location_files_menu').innerHTML = '<h2>Location Files</h2>';
|
||||
document.getElementById('location_files_menu').innerHTML += '<ul class="" role="">';
|
||||
for (var i in launcher.location_files) {
|
||||
document.getElementById('location_files_menu').innerHTML += '<li id="menu_event_file_id_'+launcher.location_files[i].id+'" class="btn btn-info open_local_file" data-hash_sha256="'+launcher.location_files[i].hash_sha256+'.file" data-filename="'+launcher.location_files[i].event_file_filename+'">'+launcher.location_files[i].event_file_filename+'</li>';
|
||||
}
|
||||
document.getElementById('location_files_menu').innerHTML += '</ul>';
|
||||
|
||||
document.getElementById('sessions_menu').innerHTML = '<h2>Sessions</h2>';
|
||||
document.getElementById('sessions_menu').innerHTML += '<ul class="" role="">';
|
||||
//let location_detail = '';
|
||||
if (document.getElementById('location_detail').innerHTML.length) {
|
||||
console.log('detail_session_id_xx already exists');
|
||||
} else {
|
||||
console.log('location_detail already populated');
|
||||
document.getElementById('location_detail').innerHTML = ''; // This needs to be reviewed.
|
||||
}
|
||||
for (var i in launcher.sessions) {
|
||||
// List sessions in menu
|
||||
document.getElementById('sessions_menu').innerHTML += '<li id="menu_session_id_'+launcher.sessions[i].id+'" class="btn btn-info btn_view_session" data-session_id="'+launcher.sessions[i].id+'">'+launcher.sessions[i].name+'</li>';
|
||||
|
||||
// Create containers for each session
|
||||
let session_detail = '';
|
||||
|
||||
if (typeof(document.getElementById('detail_session_id_'+launcher.sessions[i].id)) != 'undefined' && document.getElementById('detail_session_id_'+launcher.sessions[i].id) != null) {
|
||||
//console.log('detail_session_id_xx already exists');
|
||||
} else {
|
||||
//console.log('Adding detail_session_id_xx');
|
||||
session_detail += '<div id="detail_session_id_'+launcher.sessions[i].id+'" class="container d-none session_detail" data-session_id="'+launcher.sessions[i].id+'">';
|
||||
}
|
||||
|
||||
|
||||
|
||||
var session_startdatetime = new Date(launcher.sessions[i].start_datetime);
|
||||
|
||||
session_detail += '<h2 class="session_title">'+launcher.sessions[i].name+'<span class="badge badge-pill badge-info float-right">'+dateFns.format(session_startdatetime, 'ddd h:mm A')+'</span>'+'</h2>';
|
||||
|
||||
|
||||
//session_detail += '<div class="">'; // for card-group
|
||||
|
||||
session_detail += '<div class="card">';
|
||||
session_detail += '<div class="card-header">Session Files:</div>';
|
||||
session_detail += '<div class="card-body">';
|
||||
|
||||
session_detail += '<ul>';
|
||||
for (var j in launcher.sessions[i].files) {
|
||||
//console.log(launcher.sessions[i].files[j].event_file_filename);
|
||||
session_detail += '<li class="btn btn-info open_local_file" data-hash_sha256="'+launcher.sessions[i].files[j].hash_sha256+'.file" data-filename="'+launcher.sessions[i].files[j].event_file_filename+'">'+launcher.sessions[i].files[j].event_file_filename+'</li>';
|
||||
}
|
||||
session_detail += '</ul>';
|
||||
|
||||
session_detail += '</div>'; // for card-body
|
||||
session_detail += '</div> <!-- for session files card -->'; // for session files card
|
||||
|
||||
|
||||
//session_detail += '<div class="session_presentations">';
|
||||
|
||||
for (var j in launcher.sessions[i].presentations) {
|
||||
//session_detail += '<li>'+launcher.sessions[i].presentations[j].name;
|
||||
|
||||
var session_presentation_startdatetime = new Date(launcher.sessions[i].presentations[j].start_datetime);
|
||||
|
||||
session_detail += '<div class="card">';
|
||||
session_detail += '<div class="card-header">'+launcher.sessions[i].presentations[j].name+'<span class="badge badge-pill badge-info float-right">'+dateFns.format(session_startdatetime, 'h:mm a')+'</span>'+':</div>';
|
||||
session_detail += '<div class="card-body">';
|
||||
|
||||
session_detail += '<ul class="list-group">';
|
||||
for (var k in launcher.sessions[i].presentations[j].files) {
|
||||
//console.log(launcher.sessions[i].presentations[j].files[k].event_file_filename);
|
||||
session_detail += '<li class="list-group-item btn btn-info open_local_file" data-hash_sha256="'+launcher.sessions[i].presentations[j].files[k].hash_sha256+'.file" data-filename="'+launcher.sessions[i].presentations[j].files[k].event_file_filename+'">'+launcher.sessions[i].presentations[j].files[k].event_file_filename+'</li>';
|
||||
}
|
||||
session_detail += '</ul>';
|
||||
|
||||
|
||||
session_detail += '<ul>';
|
||||
for (var k in launcher.sessions[i].presentations[j].presenters) {
|
||||
//console.log(launcher.sessions[i].presentations[j].presenters[k].given_name);
|
||||
session_detail += '<li>'+launcher.sessions[i].presentations[j].presenters[k].given_name+' '+launcher.sessions[i].presentations[j].presenters[k].family_name;
|
||||
|
||||
session_detail += '<ul class="list-group">';
|
||||
for (var l in launcher.sessions[i].presentations[j].presenters[k].files) {
|
||||
//console.log(launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_filename);
|
||||
//session_detail += '<li class="list-group-item" data-hash_sha256="'+launcher.sessions[i].presentations[j].presenters[k].files[l].hash_sha256+'.file" data-filename="'+launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_filename+'">'+launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_filename;
|
||||
session_detail += '<li class="list-group-item" data-hash_sha256="'+launcher.sessions[i].presentations[j].presenters[k].files[l].hash_sha256+'.file" data-filename="'+launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_filename+'">';
|
||||
session_detail += '<button class="btn btn-info open_local_file" data-hash_sha256="'+launcher.sessions[i].presentations[j].presenters[k].files[l].hash_sha256+'.file" data-filename="'+launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_filename+'">'+launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_filename+'</button>';
|
||||
|
||||
var event_file_size = launcher.sessions[i].presentations[j].presenters[k].files[l].size;
|
||||
var event_file_created_on = new Date(launcher.sessions[i].presentations[j].presenters[k].files[l].created_on);
|
||||
|
||||
session_detail += '<span class="badge badge-pill badge-light float-right">'+format_bytes(event_file_size, 2)+'; '+dateFns.format(event_file_created_on, 'MMM M h:mm A')+'; '+launcher.sessions[i].presentations[j].presenters[k].files[l].internal_os+'</span>';
|
||||
|
||||
|
||||
session_detail += '</li>';
|
||||
}
|
||||
session_detail += '</ul>';
|
||||
|
||||
session_detail +='</li>';
|
||||
}
|
||||
session_detail += '</ul>';
|
||||
|
||||
|
||||
session_detail += '</ul>';
|
||||
session_detail += '</div>'; // for card-body
|
||||
session_detail += '</div> <!-- for card -->'; // for card
|
||||
|
||||
}
|
||||
//session_detail += '</div> <!-- for session_presentations -->'; // for session_presentations
|
||||
|
||||
//session_detail += '</div>'; // for card-group
|
||||
session_detail += '</div> <!-- End session detail for '+launcher.sessions[i].id+' -->';
|
||||
|
||||
|
||||
//document.getElementById('location_detail').innerHTML += session_detail;
|
||||
|
||||
if (typeof(document.getElementById('detail_session_id_'+launcher.sessions[i].id)) != 'undefined' && document.getElementById('detail_session_id_'+launcher.sessions[i].id) != null) {
|
||||
document.getElementById('detail_session_id_'+launcher.sessions[i].id).innerHTML = session_detail;
|
||||
} else {
|
||||
document.getElementById('location_detail').innerHTML += session_detail;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
document.getElementById('sessions_menu').innerHTML += '</ul>';
|
||||
|
||||
index_location_detail('btn_view_session');
|
||||
|
||||
index_open_file_buttons('open_local_file');
|
||||
|
||||
|
||||
//const btn_session_{{ event_presentation.id }}_name = document.querySelector('button#presentation_{{ event_presentation.id }}_name');
|
||||
//btn_presentation_{{ event_presentation.id }}_name.onclick = display_hide_poster_for_type_id.bind(this, true, 'presentation', {{ event_presentation.id }});
|
||||
console.log('Rendering launcher finished.');
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/* Updated 2019-12-19 */
|
||||
function index_location_detail(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')) } );
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/* Updated 2019-12-19 */
|
||||
function view_session(session_id) {
|
||||
var class_elements = document.getElementsByClassName('session_detail');
|
||||
console.log('*** 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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* Updated 2019-12-20 */
|
||||
function index_open_file_buttons(class_name) {
|
||||
var class_elements = document.getElementsByClassName(class_name);
|
||||
|
||||
for (var i = 0; i < class_elements.length; i++) {
|
||||
//class_elements[i].addEventListener( 'click', function() {open_local_file( this.getAttribute('data-filename')) } );
|
||||
|
||||
//let directory = 'file_cache/';
|
||||
|
||||
//directory_and_filename = path.join(directory, class_elements[i].getAttribute('data-filename'));
|
||||
|
||||
let file_path = path.join(file_cache_path, class_elements[i].getAttribute('data-hash_sha256'));
|
||||
let filename = class_elements[i].getAttribute('data-filename');
|
||||
|
||||
class_elements[i].addEventListener( 'click', function() { ipcRenderer.send('open_local_file', file_path, filename) } );
|
||||
//ipcRenderer.send('open_local_file', this.getAttribute('data-filename')); // in render thread
|
||||
}
|
||||
|
||||
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];
|
||||
}
|
||||
331
app/js/module_api.js
Normal file
331
app/js/module_api.js
Normal file
@@ -0,0 +1,331 @@
|
||||
/*
|
||||
const os = require('os');
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
|
||||
const { ipcRenderer } = require('electron');
|
||||
*/
|
||||
|
||||
exports.api_token_request_async = async function (axios, secret_key) {
|
||||
console.log('Requesting API temporary token...');
|
||||
const url = '/api_token_request';
|
||||
|
||||
let data = { secret_key: secret_key };
|
||||
|
||||
const response = await axios.post(url, data)
|
||||
.then(function (response) {
|
||||
//console.log(response);
|
||||
const api_temporary_token = response.data.temporary_token;
|
||||
//console.log('API Temporary Token: '+temporary_token);
|
||||
return api_temporary_token;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.error(error);
|
||||
return error;
|
||||
});
|
||||
return response;
|
||||
}
|
||||
|
||||
|
||||
exports.get_event_details = async function (axios, event_id) {
|
||||
console.log('Requesting event details...');
|
||||
const url = '/event/'+event_id;
|
||||
|
||||
const data = await axios.get(url)
|
||||
.then(function (response) {
|
||||
//console.log(response.data);
|
||||
//data = response.data;
|
||||
return response.data;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return error;
|
||||
});
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
exports.get_event_location_details = async function (axios, event_id, event_location_id) {
|
||||
console.log('Requesting event location details...');
|
||||
const url = '/event/'+event_id+'/location/'+event_location_id;
|
||||
|
||||
const data = await axios.get(url)
|
||||
.then(function (response) {
|
||||
//console.log(response.data);
|
||||
//data = response.data;
|
||||
return response.data;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return error;
|
||||
});
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
exports.get_event_location_sessions = async function (axios, event_id, event_location_id) {
|
||||
console.log('Requesting location sessions...');
|
||||
const url = '/event/'+event_id+'/location/'+event_location_id+'/session';
|
||||
|
||||
const data = await axios.get(url)
|
||||
.then(function (response) {
|
||||
//console.log(response.data);
|
||||
//data = response.data;
|
||||
return response.data;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return error;
|
||||
});
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
exports.get_session_presentations = async function (axios, event_id, event_session_id) {
|
||||
console.log('Requesting session presentations...');
|
||||
const url = '/event/'+event_id+'/session/'+event_session_id+'/presentation';
|
||||
|
||||
const data = await axios.get(url)
|
||||
.then(function (response) {
|
||||
//console.log(response.data);
|
||||
//data = response.data;
|
||||
return response.data;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return error;
|
||||
});
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
exports.get_presentation_presenters = async function (axios, event_id, event_session_id, event_presentation_id) {
|
||||
console.log('Requesting presentation presenters...');
|
||||
const url = '/event/'+event_id+'/session/'+event_session_id+'/presentation/'+event_presentation_id+'/presenter';
|
||||
|
||||
const data = await axios.get(url)
|
||||
.then(function (response) {
|
||||
//console.log(response.data);
|
||||
//data = response.data;
|
||||
return response.data;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return error;
|
||||
});
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
exports.get_files_for_type_for_id = async function (axios, for_type, for_id) {
|
||||
console.log('Requesting files for '+for_type+' '+for_id);
|
||||
const url = '/event/file/'+for_type+'/'+for_id;
|
||||
|
||||
const data = await axios.get(url)
|
||||
.then(function (response) {
|
||||
//console.log(response.data);
|
||||
//data = response.data;
|
||||
return response.data;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return error;
|
||||
});
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
/*
|
||||
exports.download_file_id = async function (axios, file_id, filename) {
|
||||
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // in render thread
|
||||
|
||||
console.log('1: download file id '+file_id);
|
||||
const url = '/event/file/'+file_id+'/download';
|
||||
|
||||
//const data = await axios.get(url, responseType: 'stream')
|
||||
const data = await axios({
|
||||
method: "get",
|
||||
url: url,
|
||||
responseType: "stream"
|
||||
})
|
||||
.then(function (response) {
|
||||
console.log('2: downloaded file id '+file_id);
|
||||
console.log(response);
|
||||
//console.log(response.data);
|
||||
|
||||
let filename = 'default.txt';
|
||||
|
||||
if (typeof filename_override === 'undefined' || filename_override == null) {
|
||||
let headerLine = response.data.headers['content-disposition'];
|
||||
|
||||
console.log(headerLine);
|
||||
console.log(headerLine.indexOf('="'));
|
||||
console.log(headerLine.indexOf('='));
|
||||
if (headerLine.indexOf('="') != -1) {
|
||||
let startFileNameIndex = headerLine.indexOf('="') + 2;
|
||||
let endFileNameIndex = headerLine.lastIndexOf('"');
|
||||
filename = headerLine.substring(startFileNameIndex, endFileNameIndex);
|
||||
} else if (headerLine.indexOf('=') != -1) {
|
||||
let startFileNameIndex = headerLine.indexOf('=') + 1;
|
||||
let endFileNameIndex = headerLine.length;
|
||||
filename = headerLine.substring(startFileNameIndex, endFileNameIndex);
|
||||
} else {
|
||||
filename = 'filename_not_found_in_header.txt';
|
||||
}
|
||||
} else {
|
||||
filename = filename_override;
|
||||
}
|
||||
|
||||
let directory = 'file_cache/';
|
||||
|
||||
directory_and_filename = path.join(directory, filename);
|
||||
|
||||
//console.log(directory_and_filename);
|
||||
|
||||
if (fs.existsSync(directory_and_filename)) {
|
||||
console.log('3a: file already exists: '+directory_and_filename);
|
||||
} else {
|
||||
console.log('3b: saving file: '+directory_and_filename);
|
||||
response.data.pipe(fs.createWriteStream(directory_and_filename));
|
||||
}
|
||||
//data = response.data;
|
||||
console.log('4: saved file id '+file_id);
|
||||
return true;
|
||||
//return response.data;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return error;
|
||||
});
|
||||
|
||||
//return data;
|
||||
}
|
||||
*/
|
||||
|
||||
/* v2 Section */
|
||||
|
||||
exports.v2_get_account_events = async function (axios, account_id) {
|
||||
console.log('Requesting account events...');
|
||||
const url = '/v2/account/'+account_id+'/events';
|
||||
|
||||
const data = await axios.get(url)
|
||||
.then(function (response) {
|
||||
console.log('v2 account events data: ***');
|
||||
console.log(response.data);
|
||||
console.log('v2 account events data: ^^^');
|
||||
return response.data;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return error;
|
||||
});
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
exports.v2_get_event_locations = async function (axios, event_id) {
|
||||
console.log('Requesting event locations...');
|
||||
const url = '/v2/event/'+event_id+'/event_locations';
|
||||
|
||||
const data = await axios.get(url)
|
||||
.then(function (response) {
|
||||
console.log('v2 event locations data: ***');
|
||||
console.log(response.data);
|
||||
console.log('v2 event locations data: ^^^');
|
||||
return response.data;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return error;
|
||||
});
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
exports.v2_get_event_location_sessions = async function (axios, event_location_id) {
|
||||
console.log('Requesting location sessions...');
|
||||
const url = '/v2/event_location/'+event_location_id+'/event_sessions';
|
||||
|
||||
const data = await axios.get(url)
|
||||
.then(function (response) {
|
||||
console.log('v2 location sessions data: ***');
|
||||
console.log(response.data);
|
||||
console.log('v2 location sessions data: ^^^');
|
||||
return response.data;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return error;
|
||||
});
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
exports.v2_get_event_location_presentations = async function (axios, event_location_id) {
|
||||
console.log('Requesting location presentations...');
|
||||
const url = '/v2/event_location/'+event_location_id+'/event_presentations';
|
||||
|
||||
const data = await axios.get(url)
|
||||
.then(function (response) {
|
||||
console.log('v2 location presentations data: ***');
|
||||
console.log(response.data);
|
||||
console.log('v2 location presentations data: ^^^');
|
||||
return response.data;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return error;
|
||||
});
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
exports.v2_get_event_location_presenters = async function (axios, event_location_id) {
|
||||
console.log('Requesting location presenters...');
|
||||
const url = '/v2/event_location/'+event_location_id+'/event_presenters';
|
||||
|
||||
const data = await axios.get(url)
|
||||
.then(function (response) {
|
||||
console.log('v2 location presenters data: ***');
|
||||
console.log(response.data);
|
||||
console.log('v2 location presenters data: ^^^');
|
||||
return response.data;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return error;
|
||||
});
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
exports.v2_get_event_location_files = async function (axios, event_location_id) {
|
||||
console.log('Requesting location files...');
|
||||
const url = '/v2/event_location/'+event_location_id+'/event_files';
|
||||
|
||||
const data = await axios.get(url)
|
||||
.then(function (response) {
|
||||
console.log('v2 location files data: ***');
|
||||
console.log(response.data);
|
||||
console.log('v2 location files data: ^^^');
|
||||
//data = response.data;
|
||||
return response.data;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return error;
|
||||
});
|
||||
|
||||
return data;
|
||||
}
|
||||
300
app/js/module_api.js.bak
Normal file
300
app/js/module_api.js.bak
Normal file
@@ -0,0 +1,300 @@
|
||||
const os = require('os');
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
|
||||
const { ipcRenderer } = require('electron');
|
||||
|
||||
exports.api_token_request_async = async function (axios, secret_key) {
|
||||
console.log('Requesting API temporary token...');
|
||||
const url = '/api_token_request';
|
||||
|
||||
let data = { secret_key: secret_key };
|
||||
|
||||
const response = await axios.post(url, data)
|
||||
.then(function (response) {
|
||||
//console.log(response);
|
||||
const api_temporary_token = response.data.temporary_token;
|
||||
//console.log('API Temporary Token: '+temporary_token);
|
||||
return api_temporary_token;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.error(error);
|
||||
return error;
|
||||
});
|
||||
return response;
|
||||
}
|
||||
|
||||
|
||||
exports.get_event_location_sessions = async function (axios, event_id, event_location_id) {
|
||||
console.log('Requesting location sessions...');
|
||||
const url = '/event/'+event_id+'/location/'+event_location_id+'/session';
|
||||
|
||||
const data = await axios.get(url)
|
||||
.then(function (response) {
|
||||
//console.log(response.data);
|
||||
//data = response.data;
|
||||
return response.data;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return error;
|
||||
});
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
exports.get_session_presentations = async function (axios, event_id, event_session_id) {
|
||||
console.log('Requesting session presentations...');
|
||||
const url = '/event/'+event_id+'/session/'+event_session_id+'/presentation';
|
||||
|
||||
const data = await axios.get(url)
|
||||
.then(function (response) {
|
||||
//console.log(response.data);
|
||||
//data = response.data;
|
||||
return response.data;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return error;
|
||||
});
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
exports.get_presentation_presenters = async function (axios, event_id, event_session_id, event_presentation_id) {
|
||||
console.log('Requesting presentation presenters...');
|
||||
const url = '/event/'+event_id+'/session/'+event_session_id+'/presentation/'+event_presentation_id+'/presenter';
|
||||
|
||||
const data = await axios.get(url)
|
||||
.then(function (response) {
|
||||
//console.log(response.data);
|
||||
//data = response.data;
|
||||
return response.data;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return error;
|
||||
});
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
exports.get_files_for_type_for_id = async function (axios, for_type, for_id) {
|
||||
console.log('Requesting files...');
|
||||
const url = '/event/file/'+for_type+'/'+for_id;
|
||||
|
||||
const data = await axios.get(url)
|
||||
.then(function (response) {
|
||||
//console.log(response.data);
|
||||
//data = response.data;
|
||||
return response.data;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return error;
|
||||
});
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
exports.download_file_id = async function (axios, file_id, filename) {
|
||||
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // in render thread
|
||||
|
||||
console.log('1: download file id '+file_id);
|
||||
const url = '/event/file/'+file_id+'/download';
|
||||
|
||||
//const data = await axios.get(url, responseType: 'stream')
|
||||
const data = await axios({
|
||||
method: "get",
|
||||
url: url,
|
||||
responseType: "stream"
|
||||
})
|
||||
.then(function (response) {
|
||||
console.log('2: downloaded file id '+file_id);
|
||||
console.log(response);
|
||||
//console.log(response.data);
|
||||
|
||||
let filename = 'default.txt';
|
||||
|
||||
if (typeof filename_override === 'undefined' || filename_override == null) {
|
||||
let headerLine = response.data.headers['content-disposition'];
|
||||
|
||||
console.log(headerLine);
|
||||
console.log(headerLine.indexOf('="'));
|
||||
console.log(headerLine.indexOf('='));
|
||||
if (headerLine.indexOf('="') != -1) {
|
||||
let startFileNameIndex = headerLine.indexOf('="') + 2;
|
||||
let endFileNameIndex = headerLine.lastIndexOf('"');
|
||||
filename = headerLine.substring(startFileNameIndex, endFileNameIndex);
|
||||
} else if (headerLine.indexOf('=') != -1) {
|
||||
let startFileNameIndex = headerLine.indexOf('=') + 1;
|
||||
let endFileNameIndex = headerLine.length;
|
||||
filename = headerLine.substring(startFileNameIndex, endFileNameIndex);
|
||||
} else {
|
||||
filename = 'filename_not_found_in_header.txt';
|
||||
}
|
||||
} else {
|
||||
filename = filename_override;
|
||||
}
|
||||
|
||||
let directory = 'file_cache/';
|
||||
|
||||
directory_and_filename = path.join(directory, filename);
|
||||
|
||||
//console.log(directory_and_filename);
|
||||
|
||||
if (fs.existsSync(directory_and_filename)) {
|
||||
console.log('3a: file already exists: '+directory_and_filename);
|
||||
} else {
|
||||
console.log('3b: saving file: '+directory_and_filename);
|
||||
response.data.pipe(fs.createWriteStream(directory_and_filename));
|
||||
}
|
||||
//data = response.data;
|
||||
console.log('4: saved file id '+file_id);
|
||||
return true;
|
||||
//return response.data;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
return error;
|
||||
});
|
||||
|
||||
//return data;
|
||||
}
|
||||
|
||||
exports.launcher_cache = async function (launcher, api_base_url, api_endpoint, api_temporary_token, file_cache_path) {
|
||||
if (typeof launcher.sessions === 'undefined') {
|
||||
console.log('Check for location files.');
|
||||
let for_id = launcher.event_location_id;
|
||||
launcher.files = await api.get_files_for_type_for_id(axios, 'location', for_id);
|
||||
for (var i in launcher.files) {
|
||||
console.log('f: ('+launcher.files[i].event_file_id+') '+launcher.files[i].event_file_filename+' ***')
|
||||
file_id = launcher.files[i].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
let filename = launcher.files[i].hash_sha256+'.file';
|
||||
|
||||
save_path = path.join(file_cache_path, filename);
|
||||
|
||||
//console.log(directory_and_filename);
|
||||
|
||||
if (fs.existsSync(save_path)) {
|
||||
console.log('Local file already exists: '+save_path);
|
||||
} else {
|
||||
console.log('File not found locally. Downloading file: '+save_path);
|
||||
const api_endpoint = '/event/file/'+file_id+'/download';
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // Must download file using main node.js thread.
|
||||
//response.data.pipe(fs.createWriteStream(directory_and_filename));
|
||||
}
|
||||
//let results = await api.download_file_id(axios, file_id, hash_sha256);
|
||||
|
||||
}
|
||||
} else {
|
||||
console.log('No check for location files.');
|
||||
}
|
||||
|
||||
if (typeof launcher.sessions === 'undefined') {
|
||||
console.log('Check for location sessions.');
|
||||
launcher.sessions = await api.get_event_location_sessions(axios, launcher.event_id, launcher.event_location_id);
|
||||
for (var i in launcher.sessions) {
|
||||
console.log('*** '+launcher.sessions[i].name+' ***')
|
||||
|
||||
// Check for session files start
|
||||
if (typeof launcher.sessions[i].files === 'undefined') {
|
||||
console.log('Check for session files.');
|
||||
let for_id = launcher.sessions[i].id;
|
||||
launcher.sessions[i].files = await api.get_files_for_type_for_id(axios, 'session', for_id);
|
||||
if (launcher.sessions[i].files) {
|
||||
console.log('Session files found.');
|
||||
for (var j in launcher.sessions[i].files) {
|
||||
console.log('f: ('+launcher.sessions[i].files[j].event_file_id+') '+launcher.sessions[i].files[j].event_file_filename+' ***');
|
||||
file_id = launcher.sessions[i].files[j].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
hash_sha256 = launcher.sessions[i].files[j].hash_sha256+'.file';
|
||||
let results = await api.download_file_id(axios, file_id, hash_sha256);
|
||||
}
|
||||
} else {
|
||||
console.log('No session files found.');
|
||||
}
|
||||
} else {
|
||||
console.log('No check for session files.');
|
||||
}
|
||||
// Check for session files end
|
||||
|
||||
// Get session presentations and associated files
|
||||
launcher.sessions[i].presentations = await api.get_session_presentations(axios, launcher.event_id, launcher.sessions[i].id);
|
||||
for (var j in launcher.sessions[i].presentations) {
|
||||
console.log('* '+launcher.sessions[i].presentations[j].name);
|
||||
|
||||
// Check for presentation files start
|
||||
if (typeof launcher.sessions[i].presentations[j].files === 'undefined') {
|
||||
console.log('Check for presentation files.');
|
||||
let for_id = launcher.sessions[i].presentations[j].id;
|
||||
launcher.sessions[i].presentations[j].files = await api.get_files_for_type_for_id(axios, 'presentation', for_id);
|
||||
if (launcher.sessions[i].presentations[j].files) {
|
||||
console.log('Presentation files found.');
|
||||
for (var k in launcher.sessions[i].presentations[j].files) {
|
||||
console.log('f: ('+launcher.sessions[i].presentations[j].files[k].event_file_id+') '+launcher.sessions[i].presentations[j].files[k].event_file_filename+' ***');
|
||||
file_id = launcher.sessions[i].presentations[j].files[k].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
hash_sha256 = launcher.sessions[i].presentations[j].files[k].hash_sha256+'.file';
|
||||
let results = await api.download_file_id(axios, file_id, hash_sha256);
|
||||
}
|
||||
} else {
|
||||
console.log('No presentation files found.');
|
||||
}
|
||||
} else {
|
||||
console.log('No check for presentation files.');
|
||||
}
|
||||
// Check for presentation files end
|
||||
|
||||
|
||||
// Get session presentations presenters and associated files
|
||||
//let event_presentation_id = launcher.sessions[i].presentations[j].id;
|
||||
launcher.sessions[i].presentations[j].presenters = await api.get_presentation_presenters(axios, launcher.event_id, launcher.sessions[i].id, launcher.sessions[i].presentations[j].id);
|
||||
for (var k in launcher.sessions[i].presentations[j].presenters) {
|
||||
console.log('-- '+launcher.sessions[i].presentations[j].presenters[k].given_name+' '+launcher.sessions[i].presentations[j].presenters[k].family_name)
|
||||
|
||||
// Check for presenter files start
|
||||
if (typeof launcher.sessions[i].presentations[j].presenters[k].files === 'undefined') {
|
||||
console.log('Check for presenter files.');
|
||||
let for_id = launcher.sessions[i].presentations[j].presenters[k].id;
|
||||
launcher.sessions[i].presentations[j].presenters[k].files = await api.get_files_for_type_for_id(axios, 'presenter', for_id);
|
||||
if (launcher.sessions[i].presentations[j].presenters[k].files) {
|
||||
console.log('Presenter files found.');
|
||||
for (var l in launcher.sessions[i].presentations[j].presenters[k].files) {
|
||||
console.log('f: ('+launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_id+') '+launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_filename+' ***')
|
||||
file_id = launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
hash_sha256 = launcher.sessions[i].presentations[j].presenters[k].files[l].hash_sha256+'.file';
|
||||
let results = await api.download_file_id(axios, file_id, hash_sha256);
|
||||
}
|
||||
} else {
|
||||
console.log('No presenter files found.');
|
||||
}
|
||||
} else {
|
||||
console.log('No check for presenter files.');
|
||||
}
|
||||
// Check for presenter files end
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No check for location sessions.');
|
||||
}
|
||||
/*
|
||||
if (launcher.sessions) {
|
||||
console.log('Check for session files.');
|
||||
let for_id = launcher.event_location_id;
|
||||
launcher.files = await api.get_files_for_type_for_id(axios, 'location', for_id);
|
||||
for (var i in launcher.sessions) {
|
||||
console.log('f: ('+launcher.sessions[i].event_file_id+') '+launcher.files[i].event_file_filename+' ***')
|
||||
file_id = launcher.files[i].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
let results = await api.download_file_id(axios, file_id);
|
||||
}
|
||||
} else {
|
||||
console.log('No check for location files.');
|
||||
}
|
||||
*/
|
||||
}
|
||||
67
app/js/module_app.js
Normal file
67
app/js/module_app.js
Normal file
@@ -0,0 +1,67 @@
|
||||
'use strict';
|
||||
const os = require('os');
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
|
||||
exports.load_config = function () {
|
||||
console.log('CWD: '+process.cwd());
|
||||
|
||||
let home_directory = require('os').homedir();
|
||||
console.log('Home: '+home_directory);
|
||||
|
||||
let tmp_directory = require('os').tmpdir();
|
||||
console.log('Temporary: '+tmp_directory);
|
||||
|
||||
let config = null;
|
||||
let config_directory = null;
|
||||
let default_config_path = path.join(process.cwd(),'config.json.default');
|
||||
let config_path = null;
|
||||
|
||||
if (os.platform == 'darwin') {
|
||||
config_directory = path.join(home_directory, 'Library/Application Support/OSIT');
|
||||
console.log('macOS config directory: '+config_directory);
|
||||
} else if (os.platform == 'linux') {
|
||||
config_directory = path.join(home_directory, '.config/OSIT');
|
||||
console.log('Linux config directory: '+config_directory);
|
||||
}
|
||||
|
||||
if (fs.existsSync(config_directory)) {
|
||||
console.log('Config: '+config_directory);
|
||||
config_path = path.join(config_directory, 'config.json');
|
||||
} else {
|
||||
fs.mkdirSync(config_directory);
|
||||
console.log('Config directory created: '+config_directory);
|
||||
|
||||
//default_config_path = path.join(process.cwd(),'config.json.default');
|
||||
config_path = path.join(config_directory, 'config.json');
|
||||
fs.copyFileSync(default_config_path, config_path);
|
||||
console.log('Default config file copied: '+config_directory);
|
||||
}
|
||||
|
||||
if (fs.existsSync(config_path)) {
|
||||
console.log('Config path: '+config_path);
|
||||
console.log('Config file (config.json) found under '+config_directory+'.');
|
||||
|
||||
config = JSON.parse(fs.readFileSync(config_path));
|
||||
console.log('Config file read.');
|
||||
} else if (!fs.existsSync(config_path)) {
|
||||
fs.copyFileSync(default_config_path, config_path);
|
||||
console.log('Default config file copied: '+config_directory);
|
||||
|
||||
config = JSON.parse(fs.readFileSync(config_path));
|
||||
console.log('Config file read.');
|
||||
} else if (fs.existsSync('config.json')) {
|
||||
//fs.copyFileSync(default_config_path, config_path);
|
||||
//console.log('Default config file copied: '+config_directory);
|
||||
|
||||
config = JSON.parse(fs.readFileSync('config.json'));
|
||||
console.log('Config file (config.json) not found under '+config_directory+'. Using config in CWD.');
|
||||
console.log('Config file read.');
|
||||
|
||||
//console.log('Config file (config.json) not found under '+config_directory+'. Using config in CWD.');
|
||||
//config = JSON.parse(fs.readFileSync('config.json'));
|
||||
} else {
|
||||
//close();
|
||||
}
|
||||
return config;
|
||||
}
|
||||
271
app/js/module_app_idb 2020-01-21.js.bak
Normal file
271
app/js/module_app_idb 2020-01-21.js.bak
Normal file
@@ -0,0 +1,271 @@
|
||||
const os = require('os');
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
|
||||
const { ipcRenderer } = require('electron');
|
||||
|
||||
|
||||
exports.launcher_cache_check = async function (launcher, api_base_url, api_temporary_token, host_file_cache_path) {
|
||||
if (typeof launcher.event === 'undefined') {
|
||||
launcher.event = await api.get_event_details(axios, launcher.event_id);
|
||||
tbl_event.setItem(launcher.event.id.toString(), launcher.event);
|
||||
/*
|
||||
.then(function (data) {
|
||||
console.log(data.id);
|
||||
idbKeyval.set(data.id, data, tbl_event);
|
||||
//for (var i in response) {
|
||||
//var event_record = data[i];
|
||||
//idbKeyval.set(response[i].id, response[i], tbl_event);
|
||||
//}
|
||||
});
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
if (typeof launcher.location === 'undefined') {
|
||||
launcher.location = await api.get_event_location_details(axios, launcher.event_id, launcher.event_location_id);
|
||||
tbl_event_location.setItem(launcher.location.id.toString(), launcher.location);
|
||||
}
|
||||
|
||||
if (typeof launcher.event_files === 'undefined') {
|
||||
console.log('Check for global event files.');
|
||||
let for_id = launcher.event_id;
|
||||
launcher.event_files = await api.get_files_for_type_for_id(axios, 'event', for_id);
|
||||
for (var i in launcher.event_files) {
|
||||
console.log('f: ('+launcher.event_files[i].event_file_id+') '+launcher.event_files[i].event_file_filename+' ***')
|
||||
tbl_event_file.setItem(launcher.event_files[i].event_file_id.toString(), launcher.event_files[i]);
|
||||
|
||||
file_id = launcher.event_files[i].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
let filename = launcher.event_files[i].hash_sha256+'.file';
|
||||
|
||||
save_path = path.join(host_file_cache_path, filename);
|
||||
|
||||
if (fs.existsSync(save_path)) {
|
||||
console.log('Local file already exists: '+save_path);
|
||||
} else {
|
||||
console.log('File not found locally. Downloading file: '+save_path);
|
||||
let api_endpoint = '/event/file/'+file_id+'/download';
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // Must download file using main node.js thread.
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No check for global event files');
|
||||
}
|
||||
|
||||
|
||||
if (typeof launcher.location_files === 'undefined') {
|
||||
console.log('Check for location specific files.');
|
||||
let for_id = launcher.event_location_id;
|
||||
launcher.location_files = await api.get_files_for_type_for_id(axios, 'location', for_id);
|
||||
for (var i in launcher.location_files) {
|
||||
console.log('f: ('+launcher.location_files[i].event_file_id+') '+launcher.location_files[i].event_file_filename+' ***')
|
||||
tbl_event_file.setItem(launcher.location_files[i].event_file_id.toString(), launcher.location_files[i]);
|
||||
|
||||
file_id = launcher.location_files[i].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
let filename = launcher.location_files[i].hash_sha256+'.file';
|
||||
|
||||
save_path = path.join(host_file_cache_path, filename);
|
||||
|
||||
if (fs.existsSync(save_path)) {
|
||||
console.log('Local file already exists: '+save_path);
|
||||
} else {
|
||||
console.log('File not found locally. Downloading file: '+save_path);
|
||||
let api_endpoint = '/event/file/'+file_id+'/download';
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // Must download file using main node.js thread.
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No check for location specific files.');
|
||||
}
|
||||
|
||||
|
||||
if (typeof launcher.sessions === 'undefined') {
|
||||
console.log('Check for location sessions.');
|
||||
launcher.sessions = await api.get_event_location_sessions(axios, launcher.event_id, launcher.event_location_id);
|
||||
for (var i in launcher.sessions) {
|
||||
console.log('*** '+launcher.sessions[i].name+' ***')
|
||||
tbl_event_session.setItem(launcher.sessions[i].id.toString(), launcher.sessions[i]);
|
||||
|
||||
// Check for session files start
|
||||
if (typeof launcher.sessions[i].files === 'undefined') {
|
||||
console.log('Check for session files.');
|
||||
let for_id = launcher.sessions[i].id;
|
||||
launcher.sessions[i].files = await api.get_files_for_type_for_id(axios, 'session', for_id);
|
||||
if (launcher.sessions[i].files) {
|
||||
console.log('Session files found.');
|
||||
for (var j in launcher.sessions[i].files) {
|
||||
console.log('f: ('+launcher.sessions[i].files[j].event_file_id+') '+launcher.sessions[i].files[j].event_file_filename+' ***');
|
||||
tbl_event_file.setItem(launcher.sessions[i].files[j].event_file_id.toString(), launcher.sessions[i].files[j]);
|
||||
|
||||
file_id = launcher.sessions[i].files[j].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
let filename = launcher.sessions[i].files[j].hash_sha256+'.file';
|
||||
|
||||
save_path = path.join(host_file_cache_path, filename);
|
||||
|
||||
if (fs.existsSync(save_path)) {
|
||||
console.log('Local file already exists: '+save_path);
|
||||
} else {
|
||||
console.log('File not found locally. Downloading file: '+save_path);
|
||||
let api_endpoint = '/event/file/'+file_id+'/download';
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // Must download file using main node.js thread.
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No session files found.');
|
||||
}
|
||||
} else {
|
||||
console.log('No check for session files.');
|
||||
}
|
||||
// Check for session files end
|
||||
|
||||
// Get session presentations and associated files
|
||||
launcher.sessions[i].presentations = await api.get_session_presentations(axios, launcher.event_id, launcher.sessions[i].id);
|
||||
for (var j in launcher.sessions[i].presentations) {
|
||||
console.log('* '+launcher.sessions[i].presentations[j].name);
|
||||
tbl_event_presentation.setItem(launcher.sessions[i].presentations[j].id.toString(), launcher.sessions[i].presentations[j]);
|
||||
|
||||
// Check for presentation files start
|
||||
if (typeof launcher.sessions[i].presentations[j].files === 'undefined') {
|
||||
console.log('Check for presentation files.');
|
||||
let for_id = launcher.sessions[i].presentations[j].id;
|
||||
launcher.sessions[i].presentations[j].files = await api.get_files_for_type_for_id(axios, 'presentation', for_id);
|
||||
if (launcher.sessions[i].presentations[j].files) {
|
||||
console.log('Presentation files found.');
|
||||
for (var k in launcher.sessions[i].presentations[j].files) {
|
||||
console.log('f: ('+launcher.sessions[i].presentations[j].files[k].event_file_id+') '+launcher.sessions[i].presentations[j].files[k].event_file_filename+' ***');
|
||||
tbl_event_file.setItem(launcher.sessions[i].presentations[j].files[k].event_file_id.toString(), launcher.sessions[i].presentations[j].files[k]);
|
||||
|
||||
file_id = launcher.sessions[i].presentations[j].files[k].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
let filename = launcher.sessions[i].presentations[j].files[k].hash_sha256+'.file';
|
||||
|
||||
save_path = path.join(host_file_cache_path, filename);
|
||||
|
||||
if (fs.existsSync(save_path)) {
|
||||
console.log('Local file already exists: '+save_path);
|
||||
} else {
|
||||
console.log('File not found locally. Downloading file: '+save_path);
|
||||
let api_endpoint = '/event/file/'+file_id+'/download';
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // Must download file using main node.js thread.
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No presentation files found.');
|
||||
}
|
||||
} else {
|
||||
console.log('No check for presentation files.');
|
||||
}
|
||||
// Check for presentation files end
|
||||
|
||||
|
||||
// Get session presentations presenters and associated files
|
||||
//let event_presentation_id = launcher.sessions[i].presentations[j].id;
|
||||
launcher.sessions[i].presentations[j].presenters = await api.get_presentation_presenters(axios, launcher.event_id, launcher.sessions[i].id, launcher.sessions[i].presentations[j].id);
|
||||
for (var k in launcher.sessions[i].presentations[j].presenters) {
|
||||
console.log('-- '+launcher.sessions[i].presentations[j].presenters[k].given_name+' '+launcher.sessions[i].presentations[j].presenters[k].family_name)
|
||||
tbl_event_presenter.setItem(launcher.sessions[i].presentations[j].presenters[k].id.toString(), launcher.sessions[i].presentations[j].presenters[k]);
|
||||
|
||||
// Check for presenter files start
|
||||
if (typeof launcher.sessions[i].presentations[j].presenters[k].files === 'undefined') {
|
||||
console.log('Check for presenter files.');
|
||||
let for_id = launcher.sessions[i].presentations[j].presenters[k].id;
|
||||
launcher.sessions[i].presentations[j].presenters[k].files = await api.get_files_for_type_for_id(axios, 'presenter', for_id);
|
||||
if (launcher.sessions[i].presentations[j].presenters[k].files) {
|
||||
console.log('Presenter files found.');
|
||||
for (var l in launcher.sessions[i].presentations[j].presenters[k].files) {
|
||||
console.log('f: ('+launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_id+') '+launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_filename+' ***');
|
||||
tbl_event_file.setItem(launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_id.toString(), launcher.sessions[i].presentations[j].presenters[k].files[l]);
|
||||
|
||||
file_id = launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
let filename = launcher.sessions[i].presentations[j].presenters[k].files[l].hash_sha256+'.file';
|
||||
|
||||
save_path = path.join(host_file_cache_path, filename);
|
||||
|
||||
if (fs.existsSync(save_path)) {
|
||||
console.log('Local file already exists: '+save_path);
|
||||
} else {
|
||||
console.log('File not found locally. Downloading file: '+save_path);
|
||||
let api_endpoint = '/event/file/'+file_id+'/download';
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // Must download file using main node.js thread.
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No presenter files found.');
|
||||
}
|
||||
} else {
|
||||
console.log('No check for presenter files.');
|
||||
}
|
||||
// Check for presenter files end
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No check for location sessions.');
|
||||
}
|
||||
|
||||
console.log('Location cache check finished.');
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* Updated 2019-12-19 */
|
||||
function index_location_detail(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')) } );
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/* Updated 2019-12-19 */
|
||||
function view_session(session_id) {
|
||||
var class_elements = document.getElementsByClassName('session_detail');
|
||||
console.log('*** 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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* Updated 2019-12-20 */
|
||||
function index_open_file_buttons(class_name) {
|
||||
var class_elements = document.getElementsByClassName(class_name);
|
||||
|
||||
for (var i = 0; i < class_elements.length; i++) {
|
||||
//class_elements[i].addEventListener( 'click', function() {open_local_file( this.getAttribute('data-filename')) } );
|
||||
|
||||
//let directory = 'file_cache/';
|
||||
|
||||
//directory_and_filename = path.join(directory, class_elements[i].getAttribute('data-filename'));
|
||||
|
||||
let file_path = path.join(host_file_cache_path, class_elements[i].getAttribute('data-hash_sha256'));
|
||||
let filename = class_elements[i].getAttribute('data-filename');
|
||||
|
||||
class_elements[i].addEventListener( 'click', function() { ipcRenderer.send('open_local_file', file_path, filename) } );
|
||||
//ipcRenderer.send('open_local_file', this.getAttribute('data-filename')); // in render thread
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
368
app/js/module_app_idb 2020-01-24.js.bak
Normal file
368
app/js/module_app_idb 2020-01-24.js.bak
Normal file
@@ -0,0 +1,368 @@
|
||||
const os = require('os');
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
|
||||
const { ipcRenderer } = require('electron');
|
||||
|
||||
|
||||
exports.launcher_cache_check = async function (launcher, api_base_url, api_temporary_token, host_file_cache_path) {
|
||||
if (typeof launcher.event === 'undefined') {
|
||||
launcher.event = await api.get_event_details(axios, launcher.event_id);
|
||||
tbl_event.setItem(launcher.event.id.toString(), launcher.event);
|
||||
/*
|
||||
.then(function (data) {
|
||||
console.log(data.id);
|
||||
idbKeyval.set(data.id, data, tbl_event);
|
||||
//for (var i in response) {
|
||||
//var event_record = data[i];
|
||||
//idbKeyval.set(response[i].id, response[i], tbl_event);
|
||||
//}
|
||||
});
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
if (typeof launcher.location === 'undefined') {
|
||||
launcher.location = await api.get_event_location_details(axios, launcher.event_id, launcher.event_location_id);
|
||||
tbl_event_location.setItem(launcher.location.id.toString(), launcher.location);
|
||||
}
|
||||
|
||||
if (typeof launcher.event_files === 'undefined') {
|
||||
console.log('Check for global event files.');
|
||||
let for_id = launcher.event_id;
|
||||
launcher.event_files = await api.get_files_for_type_for_id(axios, 'event', for_id);
|
||||
for (var i in launcher.event_files) {
|
||||
console.log('f: ('+launcher.event_files[i].event_file_id+') '+launcher.event_files[i].event_file_filename+' ***')
|
||||
tbl_event_file.setItem(launcher.event_files[i].event_file_id.toString(), launcher.event_files[i]);
|
||||
|
||||
file_id = launcher.event_files[i].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
let filename = launcher.event_files[i].hash_sha256+'.file';
|
||||
|
||||
save_path = path.join(host_file_cache_path, filename);
|
||||
|
||||
if (fs.existsSync(save_path)) {
|
||||
console.log('Local file already exists: '+save_path);
|
||||
} else {
|
||||
console.log('File not found locally. Downloading file: '+save_path);
|
||||
let api_endpoint = '/event/file/'+file_id+'/download';
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // Must download file using main node.js thread.
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No check for global event files');
|
||||
}
|
||||
|
||||
|
||||
if (typeof launcher.location_files === 'undefined') {
|
||||
console.log('Check for location specific files.');
|
||||
let for_id = launcher.event_location_id;
|
||||
launcher.location_files = await api.get_files_for_type_for_id(axios, 'location', for_id);
|
||||
for (var i in launcher.location_files) {
|
||||
console.log('f: ('+launcher.location_files[i].event_file_id+') '+launcher.location_files[i].event_file_filename+' ***')
|
||||
tbl_event_file.setItem(launcher.location_files[i].event_file_id.toString(), launcher.location_files[i]);
|
||||
|
||||
file_id = launcher.location_files[i].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
let filename = launcher.location_files[i].hash_sha256+'.file';
|
||||
|
||||
save_path = path.join(host_file_cache_path, filename);
|
||||
|
||||
if (fs.existsSync(save_path)) {
|
||||
console.log('Local file already exists: '+save_path);
|
||||
} else {
|
||||
console.log('File not found locally. Downloading file: '+save_path);
|
||||
let api_endpoint = '/event/file/'+file_id+'/download';
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // Must download file using main node.js thread.
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No check for location specific files.');
|
||||
}
|
||||
|
||||
|
||||
if (typeof launcher.sessions === 'undefined') {
|
||||
console.log('Check for location sessions.');
|
||||
launcher.sessions = await api.get_event_location_sessions(axios, launcher.event_id, launcher.event_location_id);
|
||||
for (var i in launcher.sessions) {
|
||||
console.log('*** '+launcher.sessions[i].name+' ***')
|
||||
tbl_event_session.setItem(launcher.sessions[i].id.toString(), launcher.sessions[i]);
|
||||
|
||||
// Check for session files start
|
||||
if (typeof launcher.sessions[i].files === 'undefined') {
|
||||
console.log('Check for session files.');
|
||||
let for_id = launcher.sessions[i].id;
|
||||
launcher.sessions[i].files = await api.get_files_for_type_for_id(axios, 'session', for_id);
|
||||
if (launcher.sessions[i].files) {
|
||||
console.log('Session files found.');
|
||||
for (var j in launcher.sessions[i].files) {
|
||||
console.log('f: ('+launcher.sessions[i].files[j].event_file_id+') '+launcher.sessions[i].files[j].event_file_filename+' ***');
|
||||
tbl_event_file.setItem(launcher.sessions[i].files[j].event_file_id.toString(), launcher.sessions[i].files[j]);
|
||||
|
||||
file_id = launcher.sessions[i].files[j].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
let filename = launcher.sessions[i].files[j].hash_sha256+'.file';
|
||||
|
||||
save_path = path.join(host_file_cache_path, filename);
|
||||
|
||||
if (fs.existsSync(save_path)) {
|
||||
console.log('Local file already exists: '+save_path);
|
||||
} else {
|
||||
console.log('File not found locally. Downloading file: '+save_path);
|
||||
let api_endpoint = '/event/file/'+file_id+'/download';
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // Must download file using main node.js thread.
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No session files found.');
|
||||
}
|
||||
} else {
|
||||
console.log('No check for session files.');
|
||||
}
|
||||
// Check for session files end
|
||||
|
||||
// Get session presentations and associated files
|
||||
launcher.sessions[i].presentations = await api.get_session_presentations(axios, launcher.event_id, launcher.sessions[i].id);
|
||||
for (var j in launcher.sessions[i].presentations) {
|
||||
console.log('* '+launcher.sessions[i].presentations[j].name);
|
||||
tbl_event_presentation.setItem(launcher.sessions[i].presentations[j].id.toString(), launcher.sessions[i].presentations[j]);
|
||||
|
||||
// Check for presentation files start
|
||||
if (typeof launcher.sessions[i].presentations[j].files === 'undefined') {
|
||||
console.log('Check for presentation files.');
|
||||
let for_id = launcher.sessions[i].presentations[j].id;
|
||||
launcher.sessions[i].presentations[j].files = await api.get_files_for_type_for_id(axios, 'presentation', for_id);
|
||||
if (launcher.sessions[i].presentations[j].files) {
|
||||
console.log('Presentation files found.');
|
||||
for (var k in launcher.sessions[i].presentations[j].files) {
|
||||
console.log('f: ('+launcher.sessions[i].presentations[j].files[k].event_file_id+') '+launcher.sessions[i].presentations[j].files[k].event_file_filename+' ***');
|
||||
tbl_event_file.setItem(launcher.sessions[i].presentations[j].files[k].event_file_id.toString(), launcher.sessions[i].presentations[j].files[k]);
|
||||
|
||||
file_id = launcher.sessions[i].presentations[j].files[k].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
let filename = launcher.sessions[i].presentations[j].files[k].hash_sha256+'.file';
|
||||
|
||||
save_path = path.join(host_file_cache_path, filename);
|
||||
|
||||
if (fs.existsSync(save_path)) {
|
||||
console.log('Local file already exists: '+save_path);
|
||||
} else {
|
||||
console.log('File not found locally. Downloading file: '+save_path);
|
||||
let api_endpoint = '/event/file/'+file_id+'/download';
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // Must download file using main node.js thread.
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No presentation files found.');
|
||||
}
|
||||
} else {
|
||||
console.log('No check for presentation files.');
|
||||
}
|
||||
// Check for presentation files end
|
||||
|
||||
|
||||
// Get session presentations presenters and associated files
|
||||
//let event_presentation_id = launcher.sessions[i].presentations[j].id;
|
||||
launcher.sessions[i].presentations[j].presenters = await api.get_presentation_presenters(axios, launcher.event_id, launcher.sessions[i].id, launcher.sessions[i].presentations[j].id);
|
||||
for (var k in launcher.sessions[i].presentations[j].presenters) {
|
||||
console.log('-- '+launcher.sessions[i].presentations[j].presenters[k].given_name+' '+launcher.sessions[i].presentations[j].presenters[k].family_name)
|
||||
tbl_event_presenter.setItem(launcher.sessions[i].presentations[j].presenters[k].id.toString(), launcher.sessions[i].presentations[j].presenters[k]);
|
||||
|
||||
// Check for presenter files start
|
||||
if (typeof launcher.sessions[i].presentations[j].presenters[k].files === 'undefined') {
|
||||
console.log('Check for presenter files.');
|
||||
let for_id = launcher.sessions[i].presentations[j].presenters[k].id;
|
||||
launcher.sessions[i].presentations[j].presenters[k].files = await api.get_files_for_type_for_id(axios, 'presenter', for_id);
|
||||
if (launcher.sessions[i].presentations[j].presenters[k].files) {
|
||||
console.log('Presenter files found.');
|
||||
for (var l in launcher.sessions[i].presentations[j].presenters[k].files) {
|
||||
console.log('f: ('+launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_id+') '+launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_filename+' ***');
|
||||
tbl_event_file.setItem(launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_id.toString(), launcher.sessions[i].presentations[j].presenters[k].files[l]);
|
||||
|
||||
file_id = launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
let filename = launcher.sessions[i].presentations[j].presenters[k].files[l].hash_sha256+'.file';
|
||||
|
||||
save_path = path.join(host_file_cache_path, filename);
|
||||
|
||||
if (fs.existsSync(save_path)) {
|
||||
console.log('Local file already exists: '+save_path);
|
||||
} else {
|
||||
console.log('File not found locally. Downloading file: '+save_path);
|
||||
let api_endpoint = '/event/file/'+file_id+'/download';
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // Must download file using main node.js thread.
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No presenter files found.');
|
||||
}
|
||||
} else {
|
||||
console.log('No check for presenter files.');
|
||||
}
|
||||
// Check for presenter files end
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('No check for location sessions.');
|
||||
}
|
||||
|
||||
console.log('Location cache check finished.');
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
exports.idb_to_launcher = async function idb_to_launcher() {
|
||||
//tbl_example.iterate(tbl_check, tbl_check_success, tbl_check_error); //tbl_check(value, key, iteration)
|
||||
//let launcher = new Object();
|
||||
|
||||
// Look for *events*
|
||||
let tmp_event = [];
|
||||
tbl_event.iterate(function(event_value, key, iteration) {
|
||||
tmp_event.push(event_value);
|
||||
});
|
||||
launcher.event = tmp_event;
|
||||
|
||||
// Look for *event files*
|
||||
let tmp_event_file = []
|
||||
tbl_event_file.iterate(function(file_value, key, iteration) {
|
||||
//console.log('event id: '+launcher.event[0].id+' -> file_id: '+file_value.id+'for type: '+file_value.for_type+' for id: '+file_value.id);
|
||||
if (file_value.for_type == 'event' && launcher.event[0].id == file_value.for_id) {
|
||||
tmp_event_file.push(file_value);
|
||||
}
|
||||
}).then(function() {
|
||||
console.log('idb_to_launcher: Iterate tbl_event_file complete')
|
||||
});
|
||||
launcher.event_file = tmp_event_file;
|
||||
|
||||
|
||||
// Look for *locations*
|
||||
let tmp_event_location = []
|
||||
tbl_event_location.iterate(function(location_value, key, iteration) {
|
||||
tmp_event_location.push(location_value);
|
||||
});
|
||||
launcher.location = tmp_event_location;
|
||||
|
||||
// Look for *event location files*
|
||||
let tmp_event_location_file = []
|
||||
tbl_event_file.iterate(function(file_value, key, iteration) {
|
||||
if (file_value.for_type == 'location' && launcher.location[0].id == file_value.for_id) {
|
||||
tmp_event_location_file.push(file_value);
|
||||
}
|
||||
});
|
||||
launcher.location_file = tmp_event_location_file;
|
||||
|
||||
|
||||
// Look for *sessions*
|
||||
let tmp_event_session = []
|
||||
tbl_event_session.iterate(function(session_value, session_key, session_iteration) {
|
||||
//console.log('session id: '+session_value.id);
|
||||
|
||||
|
||||
// Look for *session files*
|
||||
session_value.file = [];
|
||||
tbl_event_file.iterate(function(session_file_value, session_file_key, session_file_iteration) {
|
||||
if (session_file_value.for_type == 'session' && session_value.id == session_file_value.for_id) {
|
||||
//console.log('session id: '+session_value.id+' -> file id: '+session_file_value.id);
|
||||
session_value.file.push(session_file_value)
|
||||
//tmp_event_session_file.push(session_file_value);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// Look for *presentations per session*
|
||||
session_value.presentation = [];
|
||||
tbl_event_presentation.iterate(function(presentation_value, presentation_key, presentation_iteration) {
|
||||
if (session_value.id == presentation_value.event_session_id) {
|
||||
//console.log('session id: '+session_value.id+' -> presentation id: '+presentation_value.id);
|
||||
|
||||
|
||||
// Look for *presentation files*
|
||||
presentation_value.file = [];
|
||||
tbl_event_file.iterate(function(presentation_file_value, presentation_file_key, presentation_file_iteration) {
|
||||
if (presentation_file_value.for_type == 'presentation' && presentation_value.id == presentation_file_value.for_id) {
|
||||
presentation_value.file.push(presentation_file_value);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// Look for *presenters per presentation*
|
||||
presentation_value.presenter = [];
|
||||
tbl_event_presenter.iterate(function(presenter_value, presenter_key, presenter_iteration) {
|
||||
if (presentation_value.id == presenter_value.event_presentation_id) {
|
||||
//console.log('presentation id: '+presentation_value.id+' -> presenter id: '+presenter_value.id);
|
||||
|
||||
// Look for *presenter files*
|
||||
presenter_value.file = [];
|
||||
tbl_event_file.iterate(function(presenter_file_value, presenter_file_key, presenter_file_iteration) {
|
||||
if (presenter_file_value.for_type == 'presenter' && presenter_value.id == presenter_file_value.for_id) {
|
||||
presenter_value.file.push(presenter_file_value);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
//NOTE for some reason this is adding duplicate presenters to a session
|
||||
//NOTE is this iterating twice or something???
|
||||
/*
|
||||
tbl_event_file.iterate(function(presenter_file_value, key, iteration) {
|
||||
|
||||
});
|
||||
*/
|
||||
presentation_value.presenter.push(presenter_value);
|
||||
}
|
||||
});
|
||||
|
||||
//NOTE add in presenters and then presenter's files
|
||||
|
||||
|
||||
session_value.presentation.push(presentation_value);
|
||||
}//);
|
||||
|
||||
});
|
||||
//});
|
||||
|
||||
tmp_event_session.push(session_value);
|
||||
|
||||
}).then(function() {
|
||||
console.log('idb_to_launcher: Iterate tbl_event_session complete')
|
||||
});
|
||||
launcher.session = tmp_event_session;
|
||||
|
||||
/*
|
||||
console.log('v2 idb to launcher object: ***');
|
||||
console.log(launcher);
|
||||
console.log('v2 idb to launcher object: ^^^');
|
||||
*/
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
exports.check_file_cache = async function () {
|
||||
console.log('Checking the local file cache against the remote server.');
|
||||
tbl_event_file.iterate(function(file_value, key, iteration) {
|
||||
if (file_value.event_location_id == event_location_id) {
|
||||
console.log('f: ('+file_value.event_file_id+') '+file_value.event_file_filename+' ***')
|
||||
|
||||
file_id = file_value.event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
let filename = file_value.hash_sha256+'.file';
|
||||
|
||||
save_path = path.join(host_file_cache_path, filename);
|
||||
|
||||
if (fs.existsSync(save_path)) {
|
||||
console.log('Local file already exists: '+save_path);
|
||||
} else {
|
||||
console.log('File not found locally. Downloading file: '+save_path);
|
||||
let api_endpoint = '/event/file/'+file_id+'/download';
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // Must download file using main node.js thread.
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function tbl_check(value, key, iteration) {
|
||||
console.log(value);
|
||||
}
|
||||
|
||||
function tbl_check_success(result) {
|
||||
console.log(result);
|
||||
}
|
||||
function tbl_check_error(result) {
|
||||
console.log(result);
|
||||
}
|
||||
173
app/js/module_app_idb.js
Normal file
173
app/js/module_app_idb.js
Normal file
@@ -0,0 +1,173 @@
|
||||
const os = require('os');
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
|
||||
const { ipcRenderer } = require('electron');
|
||||
|
||||
|
||||
exports.create_load_idb = async function create_load_idb() {
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
exports.idb_to_launcher = async function idb_to_launcher() {
|
||||
//tbl_example.iterate(tbl_check, tbl_check_success, tbl_check_error); //tbl_check(value, key, iteration)
|
||||
//let launcher = new Object();
|
||||
|
||||
// Look for *events*
|
||||
let tmp_event = [];
|
||||
tbl_event.iterate(function(event_value, key, iteration) {
|
||||
tmp_event.push(event_value);
|
||||
});
|
||||
launcher.event = tmp_event;
|
||||
|
||||
// Look for *event files*
|
||||
let tmp_event_file = []
|
||||
tbl_event_file.iterate(function(file_value, key, iteration) {
|
||||
//console.log('event id: '+launcher.event[0].id+' -> file_id: '+file_value.id+'for type: '+file_value.for_type+' for id: '+file_value.id);
|
||||
if (file_value.for_type == 'event' && launcher.event[0].id == file_value.for_id) {
|
||||
tmp_event_file.push(file_value);
|
||||
}
|
||||
}).then(function() {
|
||||
console.log('idb_to_launcher: Iterate tbl_event_file complete')
|
||||
});
|
||||
launcher.event_file = tmp_event_file;
|
||||
|
||||
|
||||
// Look for *locations*
|
||||
let tmp_event_location = []
|
||||
tbl_event_location.iterate(function(location_value, key, iteration) {
|
||||
tmp_event_location.push(location_value);
|
||||
});
|
||||
launcher.location = tmp_event_location;
|
||||
|
||||
// Look for *event location files*
|
||||
let tmp_event_location_file = []
|
||||
tbl_event_file.iterate(function(file_value, key, iteration) {
|
||||
if (file_value.for_type == 'location' && launcher.location[0].id == file_value.for_id) {
|
||||
tmp_event_location_file.push(file_value);
|
||||
}
|
||||
});
|
||||
launcher.location_file = tmp_event_location_file;
|
||||
|
||||
|
||||
// Look for *sessions*
|
||||
let tmp_event_session = []
|
||||
tbl_event_session.iterate(function(session_value, session_key, session_iteration) {
|
||||
//console.log('session id: '+session_value.id);
|
||||
|
||||
|
||||
// Look for *session files*
|
||||
session_value.file = [];
|
||||
tbl_event_file.iterate(function(session_file_value, session_file_key, session_file_iteration) {
|
||||
if (session_file_value.for_type == 'session' && session_value.id == session_file_value.for_id) {
|
||||
//console.log('session id: '+session_value.id+' -> file id: '+session_file_value.id);
|
||||
session_value.file.push(session_file_value)
|
||||
//tmp_event_session_file.push(session_file_value);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// Look for *presentations per session*
|
||||
session_value.presentation = [];
|
||||
tbl_event_presentation.iterate(function(presentation_value, presentation_key, presentation_iteration) {
|
||||
if (session_value.id == presentation_value.event_session_id) {
|
||||
//console.log('session id: '+session_value.id+' -> presentation id: '+presentation_value.id);
|
||||
|
||||
|
||||
// Look for *presentation files*
|
||||
presentation_value.file = [];
|
||||
tbl_event_file.iterate(function(presentation_file_value, presentation_file_key, presentation_file_iteration) {
|
||||
if (presentation_file_value.for_type == 'presentation' && presentation_value.id == presentation_file_value.for_id) {
|
||||
presentation_value.file.push(presentation_file_value);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// Look for *presenters per presentation*
|
||||
presentation_value.presenter = [];
|
||||
tbl_event_presenter.iterate(function(presenter_value, presenter_key, presenter_iteration) {
|
||||
if (presentation_value.id == presenter_value.event_presentation_id) {
|
||||
//console.log('presentation id: '+presentation_value.id+' -> presenter id: '+presenter_value.id);
|
||||
|
||||
// Look for *presenter files*
|
||||
presenter_value.file = [];
|
||||
tbl_event_file.iterate(function(presenter_file_value, presenter_file_key, presenter_file_iteration) {
|
||||
if (presenter_file_value.for_type == 'presenter' && presenter_value.id == presenter_file_value.for_id) {
|
||||
presenter_value.file.push(presenter_file_value);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
//NOTE for some reason this is adding duplicate presenters to a session
|
||||
//NOTE is this iterating twice or something???
|
||||
/*
|
||||
tbl_event_file.iterate(function(presenter_file_value, key, iteration) {
|
||||
|
||||
});
|
||||
*/
|
||||
presentation_value.presenter.push(presenter_value);
|
||||
}
|
||||
});
|
||||
|
||||
//NOTE add in presenters and then presenter's files
|
||||
|
||||
|
||||
session_value.presentation.push(presentation_value);
|
||||
}//);
|
||||
|
||||
});
|
||||
//});
|
||||
|
||||
tmp_event_session.push(session_value);
|
||||
|
||||
}).then(function() {
|
||||
console.log('idb_to_launcher: Iterate tbl_event_session complete')
|
||||
});
|
||||
launcher.session = tmp_event_session;
|
||||
|
||||
/*
|
||||
console.log('v2 idb to launcher object: ***');
|
||||
console.log(launcher);
|
||||
console.log('v2 idb to launcher object: ^^^');
|
||||
*/
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
exports.check_file_cache = async function () {
|
||||
console.log('Checking the local file cache against the remote server.');
|
||||
tbl_event_file.iterate(function(file_value, key, iteration) {
|
||||
if (file_value.event_location_id == event_location_id) {
|
||||
console.log('f: ('+file_value.event_file_id+') '+file_value.event_file_filename+' ***')
|
||||
|
||||
file_id = file_value.event_file_id; // NOTE: the .id is the hosted_file.id!
|
||||
let filename = file_value.hash_sha256+'.file';
|
||||
|
||||
save_path = path.join(host_file_cache_path, filename);
|
||||
|
||||
if (fs.existsSync(save_path)) {
|
||||
console.log('Local file already exists: '+save_path);
|
||||
} else {
|
||||
console.log('File not found locally. Downloading file: '+save_path);
|
||||
let api_endpoint = '/event/file/'+file_id+'/download';
|
||||
ipcRenderer.send('download_file', api_base_url, api_endpoint, api_temporary_token, save_path); // Must download file using main node.js thread.
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
function tbl_check(value, key, iteration) {
|
||||
console.log(value);
|
||||
}
|
||||
|
||||
function tbl_check_success(result) {
|
||||
console.log(result);
|
||||
}
|
||||
function tbl_check_error(result) {
|
||||
console.log(result);
|
||||
}
|
||||
234
app/js/module_app_ui 2020-01-21.js.bak
Normal file
234
app/js/module_app_ui 2020-01-21.js.bak
Normal file
@@ -0,0 +1,234 @@
|
||||
const os = require('os');
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
|
||||
const { ipcRenderer } = require('electron');
|
||||
|
||||
|
||||
exports.launcher_render = async function (launcher) {
|
||||
console.log('Rendering launcher...');
|
||||
document.getElementById('location_title').innerHTML = '<h1>Launcher '+launcher.location.name+'@'+launcher.event.name+'</h1>';
|
||||
|
||||
document.getElementById('event_files_menu').innerHTML = '<h2>Event Files</h2>';
|
||||
document.getElementById('event_files_menu').innerHTML += '<ul class="">';
|
||||
for (var i in launcher.event_files) {
|
||||
document.getElementById('event_files_menu').innerHTML += '<li id="menu_event_file_id_'+launcher.event_files[i].id+'" class="btn btn-info btn_no_case open_local_file" data-hash_sha256="'+launcher.event_files[i].hash_sha256+'.file" data-filename="'+launcher.event_files[i].event_file_filename+'">'+launcher.event_files[i].event_file_filename+'</li>';
|
||||
}
|
||||
document.getElementById('event_files_menu').innerHTML += '</ul>';
|
||||
|
||||
document.getElementById('location_files_menu').innerHTML = '<h2>Location Files</h2>';
|
||||
document.getElementById('location_files_menu').innerHTML += '<ul class="" role="">';
|
||||
for (var i in launcher.location_files) {
|
||||
document.getElementById('location_files_menu').innerHTML += '<li id="menu_event_file_id_'+launcher.location_files[i].id+'" class="btn btn-info open_local_file" data-hash_sha256="'+launcher.location_files[i].hash_sha256+'.file" data-filename="'+launcher.location_files[i].event_file_filename+'">'+launcher.location_files[i].event_file_filename+'</li>';
|
||||
}
|
||||
document.getElementById('location_files_menu').innerHTML += '</ul>';
|
||||
|
||||
document.getElementById('sessions_menu').innerHTML = '<h2>Sessions</h2>';
|
||||
document.getElementById('sessions_menu').innerHTML += '<ul class="" role="">';
|
||||
//let location_detail = '';
|
||||
if (document.getElementById('location_detail').innerHTML.length) {
|
||||
console.log('detail_session_id_xx already exists');
|
||||
} else {
|
||||
console.log('location_detail already populated');
|
||||
document.getElementById('location_detail').innerHTML = ''; // This needs to be reviewed.
|
||||
}
|
||||
for (var i in launcher.sessions) {
|
||||
// List sessions in menu
|
||||
document.getElementById('sessions_menu').innerHTML += '<li id="menu_session_id_'+launcher.sessions[i].id+'" class="btn btn-info btn_view_session" data-session_id="'+launcher.sessions[i].id+'">'+launcher.sessions[i].name+'</li>';
|
||||
|
||||
// Create containers for each session
|
||||
let session_detail = '';
|
||||
|
||||
if (typeof(document.getElementById('detail_session_id_'+launcher.sessions[i].id)) != 'undefined' && document.getElementById('detail_session_id_'+launcher.sessions[i].id) != null) {
|
||||
//console.log('detail_session_id_xx already exists');
|
||||
} else {
|
||||
//console.log('Adding detail_session_id_xx');
|
||||
session_detail += '<div id="detail_session_id_'+launcher.sessions[i].id+'" class="container d-none session_detail" data-session_id="'+launcher.sessions[i].id+'">';
|
||||
}
|
||||
|
||||
|
||||
|
||||
var session_startdatetime = new Date(launcher.sessions[i].start_datetime);
|
||||
|
||||
session_detail += '<h2 class="session_title">'+launcher.sessions[i].name+'<span class="badge badge-pill badge-info float-right">'+dateFns.format(session_startdatetime, 'ddd h:mm A')+'</span>'+'</h2>';
|
||||
|
||||
|
||||
//session_detail += '<div class="">'; // for card-group
|
||||
|
||||
session_detail += '<div class="card">';
|
||||
session_detail += '<div class="card-header">Session Files:</div>';
|
||||
session_detail += '<div class="card-body">';
|
||||
|
||||
session_detail += '<ul>';
|
||||
for (var j in launcher.sessions[i].files) {
|
||||
//console.log(launcher.sessions[i].files[j].event_file_filename);
|
||||
session_detail += '<li class="btn btn-info open_local_file" data-hash_sha256="'+launcher.sessions[i].files[j].hash_sha256+'.file" data-filename="'+launcher.sessions[i].files[j].event_file_filename+'">'+launcher.sessions[i].files[j].event_file_filename+'</li>';
|
||||
}
|
||||
session_detail += '</ul>';
|
||||
|
||||
session_detail += '</div>'; // for card-body
|
||||
session_detail += '</div> <!-- for session files card -->'; // for session files card
|
||||
|
||||
|
||||
//session_detail += '<div class="session_presentations">';
|
||||
|
||||
for (var j in launcher.sessions[i].presentations) {
|
||||
//session_detail += '<li>'+launcher.sessions[i].presentations[j].name;
|
||||
|
||||
var session_presentation_startdatetime = new Date(launcher.sessions[i].presentations[j].start_datetime);
|
||||
|
||||
session_detail += '<div class="card">';
|
||||
session_detail += '<div class="card-header">'+launcher.sessions[i].presentations[j].name+'<span class="badge badge-pill badge-info float-right">'+dateFns.format(session_startdatetime, 'h:mm a')+'</span>'+':</div>';
|
||||
session_detail += '<div class="card-body">';
|
||||
|
||||
session_detail += '<ul class="list-group">';
|
||||
for (var k in launcher.sessions[i].presentations[j].files) {
|
||||
//console.log(launcher.sessions[i].presentations[j].files[k].event_file_filename);
|
||||
session_detail += '<li class="list-group-item data-hash_sha256="'+launcher.sessions[i].presentations[j].files[k].hash_sha256+'.file" data-filename="'+launcher.sessions[i].presentations[j].files[k].event_file_filename+'">';
|
||||
|
||||
session_detail += '<button class="btn btn-info open_local_file" data-hash_sha256="'+launcher.sessions[i].presentations[j].files[k].hash_sha256+'.file" data-filename="'+launcher.sessions[i].presentations[j].files[k].event_file_filename+'">'+launcher.sessions[i].presentations[j].files[k].event_file_filename+'</button>';
|
||||
|
||||
var event_file_size = launcher.sessions[i].presentations[j].files[k].size;
|
||||
var event_file_created_on = new Date(launcher.sessions[i].presentations[j].files[k].created_on);
|
||||
|
||||
session_detail += '<span class="badge badge-pill badge-light float-right">'+format_bytes(event_file_size, 2)+'; '+dateFns.format(event_file_created_on, 'MMM M h:mm A')+'; '+launcher.sessions[i].presentations[j].files[k].internal_os+'</span>';
|
||||
|
||||
session_detail += '</li>';
|
||||
|
||||
}
|
||||
session_detail += '</ul>';
|
||||
|
||||
|
||||
session_detail += '<ul>';
|
||||
for (var k in launcher.sessions[i].presentations[j].presenters) {
|
||||
//console.log(launcher.sessions[i].presentations[j].presenters[k].given_name);
|
||||
session_detail += '<li>'+launcher.sessions[i].presentations[j].presenters[k].given_name+' '+launcher.sessions[i].presentations[j].presenters[k].family_name;
|
||||
|
||||
session_detail += '<ul class="list-group">';
|
||||
for (var l in launcher.sessions[i].presentations[j].presenters[k].files) {
|
||||
//console.log(launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_filename);
|
||||
//session_detail += '<li class="list-group-item" data-hash_sha256="'+launcher.sessions[i].presentations[j].presenters[k].files[l].hash_sha256+'.file" data-filename="'+launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_filename+'">'+launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_filename;
|
||||
session_detail += '<li class="list-group-item" data-hash_sha256="'+launcher.sessions[i].presentations[j].presenters[k].files[l].hash_sha256+'.file" data-filename="'+launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_filename+'">';
|
||||
session_detail += '<button class="btn btn-info open_local_file" data-hash_sha256="'+launcher.sessions[i].presentations[j].presenters[k].files[l].hash_sha256+'.file" data-filename="'+launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_filename+'">'+launcher.sessions[i].presentations[j].presenters[k].files[l].event_file_filename+'</button>';
|
||||
|
||||
var event_file_size = launcher.sessions[i].presentations[j].presenters[k].files[l].size;
|
||||
var event_file_created_on = new Date(launcher.sessions[i].presentations[j].presenters[k].files[l].created_on);
|
||||
|
||||
session_detail += '<span class="badge badge-pill badge-light float-right">'+format_bytes(event_file_size, 2)+'; '+dateFns.format(event_file_created_on, 'MMM M h:mm A')+'; '+launcher.sessions[i].presentations[j].presenters[k].files[l].internal_os+'</span>';
|
||||
|
||||
|
||||
session_detail += '</li>';
|
||||
}
|
||||
session_detail += '</ul>';
|
||||
|
||||
session_detail +='</li>';
|
||||
}
|
||||
session_detail += '</ul>';
|
||||
|
||||
|
||||
session_detail += '</ul>';
|
||||
session_detail += '</div>'; // for card-body
|
||||
session_detail += '</div> <!-- for card -->'; // for card
|
||||
|
||||
}
|
||||
//session_detail += '</div> <!-- for session_presentations -->'; // for session_presentations
|
||||
|
||||
//session_detail += '</div>'; // for card-group
|
||||
session_detail += '</div> <!-- End session detail for '+launcher.sessions[i].id+' -->';
|
||||
|
||||
|
||||
//document.getElementById('location_detail').innerHTML += session_detail;
|
||||
|
||||
if (typeof(document.getElementById('detail_session_id_'+launcher.sessions[i].id)) != 'undefined' && document.getElementById('detail_session_id_'+launcher.sessions[i].id) != null) {
|
||||
document.getElementById('detail_session_id_'+launcher.sessions[i].id).innerHTML = session_detail;
|
||||
} else {
|
||||
document.getElementById('location_detail').innerHTML += session_detail;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
document.getElementById('sessions_menu').innerHTML += '</ul>';
|
||||
|
||||
index_location_detail('btn_view_session');
|
||||
|
||||
index_open_file_buttons('open_local_file');
|
||||
|
||||
|
||||
//const btn_session_{{ event_presentation.id }}_name = document.querySelector('button#presentation_{{ event_presentation.id }}_name');
|
||||
//btn_presentation_{{ event_presentation.id }}_name.onclick = display_hide_poster_for_type_id.bind(this, true, 'presentation', {{ event_presentation.id }});
|
||||
console.log('Rendering launcher finished.');
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/* Updated 2019-12-19 */
|
||||
function index_location_detail(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')) } );
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/* Updated 2019-12-19 */
|
||||
function view_session(session_id) {
|
||||
var class_elements = document.getElementsByClassName('session_detail');
|
||||
console.log('*** 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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* Updated 2019-12-20 */
|
||||
function index_open_file_buttons(class_name) {
|
||||
var class_elements = document.getElementsByClassName(class_name);
|
||||
|
||||
for (var i = 0; i < class_elements.length; i++) {
|
||||
//class_elements[i].addEventListener( 'click', function() {open_local_file( this.getAttribute('data-filename')) } );
|
||||
|
||||
//let directory = 'file_cache/';
|
||||
|
||||
//directory_and_filename = path.join(directory, class_elements[i].getAttribute('data-filename'));
|
||||
|
||||
let file_path = path.join(host_file_cache_path, class_elements[i].getAttribute('data-hash_sha256'));
|
||||
let filename = class_elements[i].getAttribute('data-filename');
|
||||
|
||||
class_elements[i].addEventListener( 'click', function() { ipcRenderer.send('open_local_file', file_path, filename) } );
|
||||
//ipcRenderer.send('open_local_file', this.getAttribute('data-filename')); // in render thread
|
||||
}
|
||||
|
||||
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];
|
||||
}
|
||||
303
app/js/module_app_ui.js
Normal file
303
app/js/module_app_ui.js
Normal file
@@ -0,0 +1,303 @@
|
||||
const os = require('os');
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
|
||||
const { ipcRenderer } = require('electron');
|
||||
|
||||
|
||||
exports.render_launcher = async function (launcher_tmp) {
|
||||
console.log('Rendering launcher_tmp...');
|
||||
|
||||
console.log('In module_app_ui.js v2 idb to launcher object: ***');
|
||||
console.log(launcher_tmp);
|
||||
console.log('In module_app_ui.js v2 idb to launcher object: ^^^');
|
||||
|
||||
for (var i in launcher_tmp.event) {
|
||||
if (launcher_tmp.event[i].id == event_id) {
|
||||
console.log('*** Event id ('+event_id+') found in launcher object.');
|
||||
for (var j in launcher_tmp.location) {
|
||||
if (launcher_tmp.location[j].id == event_location_id) {
|
||||
console.log('*** Location id ('+event_location_id+') found in launcher object.');
|
||||
document.getElementById('location_title').innerHTML = '<h1>Launcher '+launcher_tmp.location[j].name+'@'+launcher_tmp.event[i].name+'</h1>';
|
||||
} else {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
}
|
||||
}
|
||||
|
||||
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_id_'+launcher_tmp.event_file[i].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>';
|
||||
|
||||
|
||||
document.getElementById('location_files_menu').innerHTML = '<h2>Location Files</h2>';
|
||||
document.getElementById('location_files_menu').innerHTML += '<ul class="list-group list-group-flush" role="">';
|
||||
for (var i in launcher_tmp.location_file) {
|
||||
document.getElementById('location_files_menu').innerHTML += '<li id="menu_event_file_id_'+launcher_tmp.location_file[i].id+'" class="list-group-item btn btn-secondary d-flex justify-content-between align-items-center open_local_file" data-hash_sha256="'+launcher_tmp.location_file[i].hash_sha256+'.file" data-filename="'+launcher_tmp.location_file[i].event_file_filename+'">'+launcher_tmp.location_file[i].event_file_filename+'</li>';
|
||||
}
|
||||
document.getElementById('location_files_menu').innerHTML += '</ul>';
|
||||
|
||||
document.getElementById('sessions_menu').innerHTML = '<h2>Sessions</h2>';
|
||||
document.getElementById('sessions_menu').innerHTML += '<ul class="list-group list-group-flush" role="">';
|
||||
//let location_detail = '';
|
||||
if (document.getElementById('location_detail').innerHTML.length) {
|
||||
console.log('detail_session_id_xx already exists');
|
||||
} else {
|
||||
console.log('location_detail already populated');
|
||||
document.getElementById('location_detail').innerHTML = ''; // This needs to be reviewed.
|
||||
}
|
||||
for (var i in launcher_tmp.session) {
|
||||
// List sessions in menu
|
||||
document.getElementById('sessions_menu').innerHTML += '<li id="menu_session_id_'+launcher_tmp.session[i].id+'" class="list-group-item btn btn-info d-flex justify-content-between align-items-center btn_view_session" data-session_id="'+launcher_tmp.session[i].id+'">'+launcher_tmp.session[i].name+'</li>';
|
||||
|
||||
// Create containers for each session
|
||||
let session_detail = '';
|
||||
|
||||
if (typeof(document.getElementById('detail_session_id_'+launcher_tmp.session[i].id)) != 'undefined' && document.getElementById('detail_session_id_'+launcher_tmp.session[i].id) != null) {
|
||||
//console.log('detail_session_id_xx already exists');
|
||||
} else {
|
||||
//console.log('Adding detail_session_id_xx');
|
||||
session_detail += '<div id="detail_session_id_'+launcher_tmp.session[i].id+'" class="container d-none session_detail" data-session_id="'+launcher_tmp.session[i].id+'">';
|
||||
}
|
||||
|
||||
|
||||
|
||||
var session_startdatetime = new Date(launcher_tmp.session[i].start_datetime);
|
||||
|
||||
session_detail += '<h2 class="session_title d-flex justify-content-between align-items-center">'+launcher_tmp.session[i].name+'<span class="badge badge-pill badge-info">'+dateFns.format(session_startdatetime, 'ddd h:mm A')+'</span>'+'</h2>';
|
||||
|
||||
|
||||
// *** Session files card section start
|
||||
let session_files_card = '';
|
||||
if (typeof launcher_tmp.session[i].file !== 'undefined') {
|
||||
session_files_card += '<div class="card">';
|
||||
session_files_card += '<div class="card-header">Session Files:</div>';
|
||||
session_files_card += '<div class="card-body">';
|
||||
|
||||
let files_list = '';
|
||||
files_list += '<ul class="list-group list-group-flush">';
|
||||
for (var j in launcher_tmp.session[i].file) {
|
||||
let file = launcher_tmp.session[i].file[j];
|
||||
//console.log(file.event_file_filename);
|
||||
|
||||
files_list += '<li class="list-group-item btn btn-primary d-flex justify-content-between align-items-center open_local_file" data-hash_sha256="'+file.hash_sha256+'.file" data-filename="'+file.event_file_filename+'">';
|
||||
files_list += file.event_file_filename;
|
||||
files_list += '<span class="badge badge-pill badge-light">'+format_bytes(file.size, 2)+'; '+dateFns.format(file.created_on, 'MMM M h:mm A')+'; '+file.internal_os+'</span>';
|
||||
files_list += '</li>';
|
||||
}
|
||||
files_list += '</ul>';
|
||||
session_files_card += files_list;
|
||||
|
||||
session_files_card += '</div>'; // for card-body
|
||||
session_files_card += '</div> <!-- for session files card -->'; // for session files card
|
||||
} else {
|
||||
//session_files_card = 'no session files found';
|
||||
}
|
||||
// *** Session files card section end
|
||||
|
||||
session_detail += session_files_card;
|
||||
|
||||
// *** Session presentations card section start
|
||||
let session_presentations_card = '';
|
||||
if (typeof launcher_tmp.session[i].presentation !== 'undefined') {
|
||||
|
||||
session_presentations_card += '<div class="card">';
|
||||
session_presentations_card += '<div class="card-header">Presentations:</div>';
|
||||
session_presentations_card += '<div class="card-body">';
|
||||
|
||||
let presentations_list = '';
|
||||
presentations_list += '<ul class="list-group list-group-flush">';
|
||||
|
||||
let presentation = '';
|
||||
for (var j in launcher_tmp.session[i].presentation) {
|
||||
presentation = launcher_tmp.session[i].presentation[j];
|
||||
|
||||
//var session_presentation_startdatetime = new Date(launcher_tmp.session[i].presentation[j].start_datetime);
|
||||
|
||||
presentations_list += '<li class="list-group-item">';
|
||||
presentations_list += '<div class="list-group-item-heading d-flex justify-content-between align-items-center">';
|
||||
presentations_list += '<strong class="">'+presentation.name+'</strong>';
|
||||
presentations_list += '<span class="badge badge-pill badge-info">'+dateFns.format(presentation.start_datetime, 'h:mm a')+'</span>';
|
||||
presentations_list += '</div>';
|
||||
|
||||
presentations_list += '<div class="list-group-item-text">'; // Start presentation file list and presenters with files lists
|
||||
|
||||
if (typeof presentation.file !== 'undefined') {
|
||||
let files_list = '';
|
||||
files_list += '<ul class="list-group list-group-flush">';
|
||||
for (var k in presentation.file) {
|
||||
let file = presentation.file[k];
|
||||
//console.log(file.event_file_filename);
|
||||
|
||||
files_list += '<li class="list-group-item btn btn-primary d-flex justify-content-between align-items-center open_local_file" data-hash_sha256="'+file.hash_sha256+'.file" data-filename="'+file.event_file_filename+'">';
|
||||
files_list += file.event_file_filename;
|
||||
files_list += '<span class="badge badge-pill badge-light float-right">'+format_bytes(file.size, 2)+'; '+dateFns.format(file.created_on, 'MMM M h:mm A')+'; '+file.internal_os+'</span>';
|
||||
files_list += '</li>';
|
||||
}
|
||||
files_list += '</ul>';
|
||||
presentations_list += files_list;
|
||||
} else {
|
||||
files_list = '<div>None here!</div>';
|
||||
presentations_list += files_list;
|
||||
}
|
||||
|
||||
let presenters_list = '';
|
||||
for (var k in presentation.presenter) {
|
||||
let presenter = presentation.presenter[k];
|
||||
//console.log(presenter.given_name);
|
||||
|
||||
presenters_list += '<li class="list-group-item">';
|
||||
presenters_list += '<strong class="list-group-item-heading">'+presenter.given_name+' '+presenter.family_name+'</strong>';
|
||||
|
||||
if (typeof presenter.file !== 'undefined') {
|
||||
let files_list = '';
|
||||
files_list += '<ul class="list-group list-group-flush list-group-item-text">';
|
||||
for (var l in presenter.file) {
|
||||
let file = presenter.file[l];
|
||||
|
||||
/*
|
||||
files_list += '<li class="list-group-item list-group-item-action open_local_file" data-hash_sha256="'+launcher_tmp.session[i].presentation[j].presenter[k].file[l].hash_sha256+'.file" data-filename="'+launcher_tmp.session[i].presentation[j].presenter[k].file[l].event_file_filename+'">';
|
||||
files_list += '<button class="btn btn-info open_local_file" data-hash_sha256="'+launcher_tmp.session[i].presentation[j].presenter[k].file[l].hash_sha256+'.file" data-filename="'+launcher_tmp.session[i].presentation[j].presenter[k].file[l].event_file_filename+'">'+launcher_tmp.session[i].presentation[j].presenter[k].file[l].event_file_filename+'</button>';
|
||||
|
||||
var event_file_size = launcher_tmp.session[i].presentation[j].presenter[k].file[l].size;
|
||||
var event_file_created_on = new Date(launcher_tmp.session[i].presentation[j].presenter[k].file[l].created_on);
|
||||
|
||||
session_detail += '<span class="badge badge-pill badge-light float-right">'+format_bytes(event_file_size, 2)+'; '+dateFns.format(event_file_created_on, 'MMM M h:mm A')+'; '+launcher_tmp.session[i].presentation[j].presenter[k].file[l].internal_os+'</span>';
|
||||
|
||||
|
||||
session_detail += '</li>';
|
||||
*/
|
||||
files_list += '<li class="list-group-item btn btn-primary d-flex justify-content-between align-items-center open_local_file" data-hash_sha256="'+file.hash_sha256+'.file" data-filename="'+file.event_file_filename+'">';
|
||||
files_list += file.event_file_filename;
|
||||
files_list += '<span class="badge badge-pill badge-light float-right">'+format_bytes(file.size, 2)+'; '+dateFns.format(file.created_on, 'MMM M h:mm A')+'; '+file.internal_os+'</span>';
|
||||
files_list += '</li>';
|
||||
}
|
||||
files_list += '</ul>';
|
||||
presenters_list += files_list;
|
||||
} else {
|
||||
files_list = '<div>None here!</div>';
|
||||
presenters_list += files_list;
|
||||
}
|
||||
presenters_list +='</li>'; // End presenter's list group item (one presenter and their files)
|
||||
}
|
||||
presentations_list += presenters_list;
|
||||
|
||||
presentations_list += '</li>'; // close presentation files and presenters with files
|
||||
|
||||
}
|
||||
|
||||
presentations_list += '</ul>'; // end of presentations with files list
|
||||
|
||||
session_presentations_card += presentations_list;
|
||||
session_presentations_card += '</div>'; // for presentations card-body
|
||||
session_presentations_card += '</div> <!-- for card -->'; // for presentations card
|
||||
|
||||
|
||||
session_detail += session_presentations_card;
|
||||
//session_detail += '</div> <!-- for session_presentations -->'; // for session_presentations
|
||||
|
||||
//session_detail += '</div>'; // for card-group
|
||||
|
||||
}
|
||||
session_detail += '</div> <!-- End session detail for '+launcher_tmp.session[i].id+' -->';
|
||||
// *** Session presentations card section start
|
||||
|
||||
//document.getElementById('location_detail').innerHTML += session_detail;
|
||||
|
||||
if (typeof(document.getElementById('detail_session_id_'+launcher_tmp.session[i].id)) != 'undefined' && document.getElementById('detail_session_id_'+launcher_tmp.session[i].id) != null) {
|
||||
document.getElementById('detail_session_id_'+launcher_tmp.session[i].id).innerHTML = session_detail;
|
||||
} else {
|
||||
document.getElementById('location_detail').innerHTML += session_detail;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
document.getElementById('sessions_menu').innerHTML += '</ul>';
|
||||
|
||||
index_location_detail('btn_view_session');
|
||||
|
||||
index_open_file_buttons('open_local_file');
|
||||
|
||||
|
||||
//const btn_session_{{ event_presentation.id }}_name = document.querySelector('button#presentation_{{ event_presentation.id }}_name');
|
||||
//btn_presentation_{{ event_presentation.id }}_name.onclick = display_hide_poster_for_type_id.bind(this, true, 'presentation', {{ event_presentation.id }});
|
||||
console.log('Rendering launcher finished.');
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/* Updated 2019-12-19 */
|
||||
function index_location_detail(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')) } );
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/* Updated 2019-12-19 */
|
||||
function view_session(session_id) {
|
||||
var class_elements = document.getElementsByClassName('session_detail');
|
||||
console.log('*** 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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* Updated 2019-12-20 */
|
||||
function index_open_file_buttons(class_name) {
|
||||
var class_elements = document.getElementsByClassName(class_name);
|
||||
|
||||
for (var i = 0; i < class_elements.length; i++) {
|
||||
//class_elements[i].addEventListener( 'click', function() {open_local_file( this.getAttribute('data-filename')) } );
|
||||
|
||||
//let directory = 'file_cache/';
|
||||
|
||||
//directory_and_filename = path.join(directory, class_elements[i].getAttribute('data-filename'));
|
||||
|
||||
let file_path = path.join(host_file_cache_path, class_elements[i].getAttribute('data-hash_sha256'));
|
||||
let filename = class_elements[i].getAttribute('data-filename');
|
||||
|
||||
class_elements[i].addEventListener( 'click', function() { ipcRenderer.send('open_local_file', file_path, filename) } );
|
||||
//ipcRenderer.send('open_local_file', this.getAttribute('data-filename')); // in render thread
|
||||
}
|
||||
|
||||
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];
|
||||
}
|
||||
Reference in New Issue
Block a user