Files
OSIT-AE-App-Native-Electron/app/index 2020-01-08.html.bak
2020-01-24 19:51:14 -05:00

243 lines
9.5 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>One Sky IT: macOS App</title>
<link rel="shortcut icon" type="image/png" href="img/favicon.ico">
<!-- Cascading Style Sheets (CSS) start -->
<!--
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
-->
<link href="https://stackpath.bootstrapcdn.com/bootswatch/4.4.1/materia/bootstrap.min.css" rel="stylesheet" integrity="sha384-1tymk6x9Y5K+OF0tlmG2fDRcn67QGzBkiM3IgtJ3VrtGrIi5ryhHjKjeeS60f1FA" crossorigin="anonymous">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.10.2/css/all.css">
<!--<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>-->
<!--
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/esm/popper.min.js" integrity="sha256-g491Yv8nsEVSfQ6aonhVVFXoX5vF2uJQIU0hVNRg4JQ=" crossorigin="anonymous"></script>
-->
<!--
Using node.js may require this: npm install jquery, add script below.
https://stackoverflow.com/questions/22658015/bootstrap-throws-uncaught-error-bootstraps-javascript-requires-jquery
-->
<!--
<script>
window.jQuery = window.$ = require('jquery');
</script>
-->
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/date-fns/1.30.1/date_fns.min.js" integrity="sha256-wCBClaCr6pJ7sGU5kfb3gQMOOcIZNzaWpWcj/lD9Vfk=" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
<!-- One Sky IT default custom Cascading Style Sheets (CSS) -->
<!-- One Sky IT site custom Cascading Style Sheets (CSS) -->
<link rel="stylesheet" href="css/starter-template.css">
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="css/launcher.css">
<style>
</style>
<!-- Cascading Style Sheets (CSS) end -->
</head>
<body>
<!--<main id="main_content" role="main" class="container">-->
<div id="main_content" class="container">
<div class="row">
<div id="location_title" class="location_title border-bottom">Launcher</div>
</div>
<div class="row">
<div id="location_menu" class="location_menu col-2 border-right">
<div id="event_files_menu" class="event_files_menu">
*event files
</div>
<div id="location_files_menu" class="location_files_menu">
*location files
</div>
<div id="sessions_menu" class="sessions_menu">
*sessions<br>
**session<br>
***session files<br>
***presentations<br>
****presentation<br>
*****presentation files<br>
*****presenters<br>
******presenter<br>
*******presenter files<br>
</div>
</div>
<div id="location_detail" class="location_detail col">
</div>
</div> <!-- end row div -->
</div>
<!--</main>--> <!-- /.container -->
<!-- JavaScript (JS) start -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.15.3/axios.min.js" crossorigin></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/date-fns/1.30.1/date_fns.min.js"></script>
<script src="https://webrtc.github.io/adapter/adapter-latest.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.0/socket.io.js" crossorigin></script>
<script src="https://cdn.jsdelivr.net/npm/idb-keyval@3/dist/idb-keyval-iife.min.js"></script>
<!-- One Sky IT default custom JavaScript (JS) -->
<!-- One Sky IT site custom JavaScript (JS) -->
<script>const app = require('./js/app');</script>
<script>const api = require('./js/module_api');</script>
<script>const idb = require('./js/app_idb');</script>
<!--<script src="js/api.js"></script>-->
<!--<script src="js/script.js"></script>-->
<!--<script src="js/testing.js"></script>-->
<script>
let config = app.load_config();
let event_id = config.event_id;
let event_location_id = config.event_location_id;
const secret_key = config.api_secret_key; //'YWAAk39H2qH0edK6lPH0yg';
let api_temporary_token = null;
let api_base_url = null; //'http://api.localhost:5001'; // 'http://api.localhost:5001' 'https://api.oneskyit.com';
if (config.use_local_api) {
api_base_url = config.api_local_base_url; // 'http://api.localhost:5001'
} else {
api_base_url = config.api_remote_base_url; // 'https://api.oneskyit.com';
}
// Development variables:
//let event_id = 14;
//let event_location_id = 13;
let event_session_id = 827;
let event_presentation_id = 2002;
let event_presenter_id = 2539;
let event_file_id = 28;
axios.defaults.baseURL = api_base_url;
axios.defaults.headers.post['Access-Control-Allow-Origin'] = '*';
api_temporary_token = api.api_token_request_async(axios, secret_key).then( function(result) {
console.log('Setting temporary API token to axios Authorization header: '+result);
axios.defaults.headers.common['Authorization'] = `Token ${result}`;
return result;
});
/*
api_token_request_async().then( function(result) {
// Do something with result.
//get_all_events();
//get_event(event_id);
//get_event_sessions(event_id);
//get_event_files(event_id);
});
*/
let idb_name = config.local_idb_name;
if (window.indexedDB) {
var db_event = new idbKeyval.Store(idb_name, 'event');
console.log('IndexedDB is supported');
var db_event_location = new idbKeyval.Store(idb_name, 'event_location');
var db_event_session = new idbKeyval.Store(idb_name, 'event_session');
var db_event_presentation = new idbKeyval.Store(idb_name, 'event_presentation');
var db_event_presenter = new idbKeyval.Store(idb_name, 'event_presenter');
var db_event_file = new idbKeyval.Store(idb_name, 'event_file');
var db_hosted_file = new idbKeyval.Store(idb_name, 'hosted_file');
} else {
console.log('IndexedDB is NOT supported');
}
const main_loop_interval = config.main_loop_interval; //2000; // 2 seconds
// The datetime is when it should be checked again, not when it was last checked.
// It may be good to split the object check period into event, location, session, presentation, presenter
let launcher_object_check_datetime = Date.now(); // default to current datetime in ms
const launcher_object_check_period = config.local_idb_check_period; //30000; // 60 seconds
// The datetime is when it should be checked again, not when it was last checked.
// It may be good to split the file check period into event, location, session, presentation, presenter
let launcher_files_check_datetime = Date.now(); // default to current datetime in ms
const launcher_files_check_period = config.local_file_cache_check_period; //30000; // 30 seconds
const file_cache_path = config.local_file_cache_path; //'file_cache/';
let launcher = new Object(); // This will create the something like location > sessions and location files > presenters and session files > presenter files
launcher.event_id = event_id;
launcher.event_location_id = event_location_id;
//let launcher_cache_check_results = false;
let launcher_render_results = false;
setInterval(async function() {
if (typeof axios.defaults.headers.common['Authorization'] !== 'undefined' && axios.defaults.headers.common['Authorization'] != null) {
current_datetime = Date.now();
//let launcher_cache_check_results = false;
if (launcher_object_check_datetime < current_datetime) {
launcher_cache_check_results = idb.launcher_cache_check(launcher, api_base_url, api_temporary_token, file_cache_path);
launcher_cache_check_results.then(function (response) {
console.log(launcher);
launcher_object_check_datetime = Date.now() + launcher_object_check_period;
launcher_render_results = idb.launcher_render(launcher);
//var location_temp = launcher_object_result;
//idbKeyval.set('test2', location_temp, custom_store);
});
}
} else {
console.log('Waiting '+main_loop_interval+'ms to see if Authorization header is set.');
}
}, main_loop_interval);
</script>
<script>
//const custom_store = new idbKeyval.Store('custom_db', 'custom_store_name');
//idbKeyval.set('foo', 'bar', custom_store);
</script>
<!-- <script src="js/launcher.js"></script>-->
<!-- JavaScript (JS) end -->
</body>
</html>