Files
Iris/mopidy_iris/static/index.html

157 lines
6.0 KiB
HTML
Raw Permalink Normal View History

<html><head><title>Iris</title><base id="base_href" href="/iris/"/><meta name="apple-mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-title" content="Iris"/><meta name="apple-mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-status-bar-style" content="#121212"/><meta name="mobile-web-app-capable" content="yes"/><meta name="theme-color" content="#222222"/><meta http-equiv="content-type" content="text/html; charset=utf-8"/><meta content="width=device-width,initial-scale=1" name="viewport"/><meta name="viewport" content="width=device-width"/><style>html {
background-color: #121212;
}
@keyframes loader {
0% { left: 0; right: 100%; }
50% { left: 0; right: 0; }
100% { left: 100%; right: 0; }
}
#app-loading {
position: fixed;
top: 50vh;
left: 0;
right: 0;
transform: translateY(-50%);
text-align: center;
padding: 30px 0;
}
#app-loading-logo {
filter: brightness(0) invert(1);
margin: 0 auto;
display: block;
width: 60vw;
max-width: 100px;
opacity: 0.25;
}
#app-loading-loader.loading {
position: relative;
margin: 30px auto 0;
width: 80vw;
max-width: 200px;
height: 3px;
border-radius: 3px;
overflow: hidden;
background-color: #1A1A1A;
}
#app-loading-loader.loading::before {
position: absolute;
display: block;
content: '';
height: 100%;
animation-name: loader;
background: #444444;
animation-duration: 1.8s;
animation-timing-function: ease-in-out;
animation-iteration-count: infinite;
}
#app-loading-message {
color: white;
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 20px;
padding: 10px;
opacity: 0.3;
}</style></head><script>var links = [
{ rel: 'manifest', href: 'manifest.json', crossorigin: 'use-credentials' },
{ rel: 'apple-touch-startup-image', href: 'assets/app-icon_512.png' },
{ rel: 'apple-touch-icon', href: 'assets/app-icon_192.png', sizes: '192x192' },
{ rel: 'apple-touch-icon', href: 'assets/app-icon_512.png', sizes: '512x512' },
{ rel: 'apple-touch-icon', href: 'assets/app-icon_57.png', sizes: '57x57' },
{ rel: 'apple-touch-icon', href: 'assets/app-icon_60.png', sizes: '60x60' },
{ rel: 'apple-touch-icon', href: 'assets/app-icon_72.png', sizes: '72x72' },
{ rel: 'apple-touch-icon', href: 'assets/app-icon_76.png', sizes: '76x76' },
{ rel: 'apple-touch-icon', href: 'assets/app-icon_114.png', sizes: '114x114' },
{ rel: 'apple-touch-icon', href: 'assets/app-icon_120.png', sizes: '120x120' },
{ rel: 'apple-touch-icon', href: 'assets/app-icon_144.png', sizes: '144x144' },
{ rel: 'apple-touch-icon', href: 'assets/app-icon_152.png', sizes: '152x152' },
{ rel: 'apple-touch-icon', href: 'assets/app-icon_180.png', sizes: '180x180' },
{ rel: 'shortcut icon', href: 'assets/favicon.png', class: 'favicon', type: 'image/ico' },
{ rel: 'shortcut icon', href: 'assets/favicon.png', class: 'favicon', type: 'image/x-icon' },
{ rel: 'shortcut-icon', href: 'assets/favicon.png', class: 'favicon' },
{ rel: 'mask-icon', href: 'assets/app-icon.svg', color: '#08d58f' },
];
for (const link of links) {
const linkObject = document.createElement('link');
linkObject.rel = link.rel;
linkObject.href = link.href;
if (link.type) linkObject.type = link.type;
if (link.sizes) linkObject.sizes = link.sizes;
if (link.color) linkObject.color = link.color;
if (link.crossorigin) linkObject.crossorigin = link.crossorigin;
document.head.appendChild(linkObject);
}</script><body><div id="app"><div id="app-loading"><img src="assets/app-icon.svg" id="app-loading-logo"/><div id="app-loading-loader" class="loading"></div><div id="app-loading-message"><div id="app-loading-message-base"></div><div id="app-loading-message-js"></div><div id="app-loading-message-css"></div></div></div></div></body><script>if ('serviceWorker' in navigator){
navigator.serviceWorker.register('/iris/service-worker.js')
.then(function(registration){
console.log('Service worker registered');
}).catch(function(error){
console.error('Service worker registration failed:', error);
});
}</script><script>var setMessage = function(type = '', content = '') {
var element = document.getElementById(`app-loading-message-${type}`);
if (element) {
element.innerHTML += content;
}
}
var setLoading = function(loading) {
var element = document.getElementById('app-loading-loader');
if (element) {
element.className = loading ? 'loading' : '';
}
}
var build = "1782758301";
var version = "3.70.0-";
// Construct the script tag
var js = document.createElement("script");
js.type = "application/javascript";
// Construct our css tag
var css = document.createElement("link");
css.rel = "stylesheet";
// Check for test mode. This is toggled under Settings > Debug > Test mode or can
// be manually triggered with the URL var "?test_mode=1"
var test_mode = 0 || window.location.href.indexOf('test_mode=1') > -1;
if (test_mode) {
window.test_mode = true;
localStorage.setItem('test_mode', true);
} else if (window.location.href.indexOf('test_mode=0') > -1) {
window.test_mode = false;
localStorage.removeItem('test_mode');
} else {
window.test_mode = localStorage.getItem('test_mode');
}
if (window.test_mode) {
setMessage('base', 'Test mode detected<br />');
}
if (window.test_mode){ // Test mode, use un-minified code
css.href = 'app.css?v='+build;
js.src = 'app.js?v='+build;
} else { // Production-grade, minified app
css.href = 'app.min.css?v='+build;
js.src = 'app.min.js?v='+build;
}
setMessage('js', 'Loading core... ');
setMessage('css', 'Loading interface... ');
js.onload = function(){
setMessage('js', 'done');
}
js.onerror = function(){
setLoading(false);
setMessage('js', 'failed');
}
css.onload = function(){
setMessage('css', 'done');
}
css.onerror = function(){
setLoading(false);
setMessage('css', 'failed');
}
// And finally inject our CSS/JS tags
document.body.appendChild(css);
document.body.appendChild(js);</script></html>