mirror of
https://github.com/coulisse/spiderweb.git
synced 2024-09-21 07:27:09 +00:00
CSP, charts layout, removed clock.js and load_css.js
This commit is contained in:
parent
2cf36891fb
commit
d1761dbb99
@ -1,5 +1,5 @@
|
||||
### Change log
|
||||
Date: 15/01/2023
|
||||
Date: 16/01/2023
|
||||
Release: v2.4.1
|
||||
- changed dimensions of spots in world dx spost charts
|
||||
- managed empty data in data providers for charts
|
||||
@ -10,6 +10,7 @@ Release: v2.4.1
|
||||
- fixed issue #28
|
||||
- cut comments too long
|
||||
- charts layout changed
|
||||
- reduced javascripts
|
||||
|
||||
___
|
||||
Date: 01/01/2023
|
||||
|
@ -20,7 +20,7 @@ db_insert () {
|
||||
spotteritu=$(shuf -i 1-90 -n 1)
|
||||
spottercq=$(shuf -i 1-40 -n 1)
|
||||
#for epoc use https://www.epochconverter.com/
|
||||
timestamp=$(shuf -i 1673727215-1673730825 -n 1)
|
||||
timestamp=$(shuf -i 1673759569-1673763169 -n 1)
|
||||
|
||||
cs_letter_1=$(chr $(shuf -i 65-90 -n1))
|
||||
cs_letter_2=$(chr $(shuf -i 65-90 -n1))
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
@media screen and (max-width: 768px) {
|
||||
.text-responsive {
|
||||
font-size: 11px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.badge-responsive {
|
||||
@ -53,6 +53,7 @@
|
||||
box-shadow: 0 2px 10px rgba(0, 0, 0, .5), 0 2px 3px rgba(0, 0, 0, .5);
|
||||
}
|
||||
|
||||
|
||||
.ipcs {
|
||||
background-image: url("/static/images/background.webp");
|
||||
background-size: cover;
|
||||
|
2
static/css/rel/style.min.css
vendored
2
static/css/rel/style.min.css
vendored
@ -1 +1 @@
|
||||
@import url("https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.1/font/bootstrap-icons.css");@font-face{font-display:swap;font-family:bootstrap-icons}.badge-responsive{width:70px}@media screen and (max-width:768px){.text-responsive{font-size:11px}.badge-responsive{width:40px}#collapseFilters.collapsing{position:absolute!important;z-index:20}#collapseFilters.collapse.show{display:block;position:absolute;z-index:20}.navbar-collapse{max-height:none!important}}.img-flag{background-color:#fff;background-size:cover!important;border:1px solid #ddd;border-radius:2px;-webkit-box-shadow:0 2px 10px rgba(0,0,0,.5),0 2px 3px rgba(0,0,0,.5);-moz-box-shadow:0 2px 10px rgba(0,0,0,.5),0 2px 3px rgba(0,0,0,.5);-o-box-shadow:0 2px 10px rgba(0,0,0,.5),0 2px 3px rgba(0,0,0,.5);box-shadow:0 2px 10px rgba(0,0,0,.5),0 2px 3px rgba(0,0,0,.5);height:19px!important;max-height:auto;max-width:auto;padding:3px;width:32px!important}.ipcs{background-image:url(/static/images/background.webp);background-repeat:no-repeat;background-size:cover}.copyleft{display:inline-block;transform:rotate(180deg)}span.search-callsign{background:url(/static/images/search-callsign.svg) no-repeat 0 0;background-size:contain;cursor:pointer;display:inline-block;height:16px;width:20px}#input-group-callsign{margin-bottom:.5rem;margin-right:1rem}#collapseFilters{background-color:#dde2e6;margin-top:10px}#spotsTable{margin-top:10px}#band{margin-top:5px}#dashboard{gap:10px;padding:10px}#telnet-thead{position:sticky;top:0}#chart-band_activity{height:400px;width:100%}.spider_chart{height:480px;width:600px}
|
||||
@import url("https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.1/font/bootstrap-icons.css");@font-face{font-display:swap;font-family:bootstrap-icons}.badge-responsive{width:70px}@media screen and (max-width:768px){.text-responsive{font-size:12px}.badge-responsive{width:40px}#collapseFilters.collapsing{position:absolute!important;z-index:20}#collapseFilters.collapse.show{display:block;position:absolute;z-index:20}.navbar-collapse{max-height:none!important}}.img-flag{background-color:#fff;background-size:cover!important;border:1px solid #ddd;border-radius:2px;-webkit-box-shadow:0 2px 10px rgba(0,0,0,.5),0 2px 3px rgba(0,0,0,.5);-moz-box-shadow:0 2px 10px rgba(0,0,0,.5),0 2px 3px rgba(0,0,0,.5);-o-box-shadow:0 2px 10px rgba(0,0,0,.5),0 2px 3px rgba(0,0,0,.5);box-shadow:0 2px 10px rgba(0,0,0,.5),0 2px 3px rgba(0,0,0,.5);height:19px!important;max-height:auto;max-width:auto;padding:3px;width:32px!important}.ipcs{background-image:url(/static/images/background.webp);background-repeat:no-repeat;background-size:cover}.copyleft{display:inline-block;transform:rotate(180deg)}span.search-callsign{background:url(/static/images/search-callsign.svg) no-repeat 0 0;background-size:contain;cursor:pointer;display:inline-block;height:16px;width:20px}#input-group-callsign{margin-bottom:.5rem;margin-right:1rem}#collapseFilters{background-color:#dde2e6;margin-top:10px}#spotsTable{margin-top:10px}#band{margin-top:5px}#dashboard{gap:10px;padding:10px}#telnet-thead{position:sticky;top:0}#chart-band_activity{height:400px;width:100%}.spider_chart{height:480px;width:600px}
|
@ -1,85 +1,87 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
|
||||
|
||||
<head>
|
||||
|
||||
<title>DX Cluster from IU1BOW: OFFLINE</title>
|
||||
<!-- page generated by staticjinja -->
|
||||
|
||||
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta name="description" content="Web Ham Radio DX Cluster and spot search">
|
||||
<meta name="keywords" content="ham radio, dx cluster, dx spots, cluster sposts,web dx cluster,dx cluster search, DX spots">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="theme-color" content="#2196f3">
|
||||
<link rel="icon" href="/static/images/icons/favicon.ico" size="any">
|
||||
<link rel="icon" href="/static/images/icons/spider_ico_master.svg" type="image/svg+xml">
|
||||
<link rel="apple-touch-icon" href="/static/images/icons/icon-apple.png">
|
||||
<link rel="manifest" href="/static/manifest.webmanifest">
|
||||
<link rel="stylesheet" href="/static/css/rel/style.min.css">
|
||||
|
||||
<!--
|
||||
<link rel="preload" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css" as="style" integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous" onload="this.rel='stylesheet' ">
|
||||
<noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css"></noscript>
|
||||
|
||||
<link rel="preload" href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/6.6.6/css/flag-icons.min.css" as="style" integrity="sha512-uvXdJud8WaOlQFjlz9B15Yy2Au/bMAvz79F7Xa6OakCl2jvQPdHD0hb3dEqZRdSwG4/sknePXlE7GiarwA/9Wg==" crossorigin="anonymous" onload="this.rel='stylesheet'" >
|
||||
<noscript><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/6.6.6/css/flag-icons.min.css"></noscript>
|
||||
-->
|
||||
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/6.6.6/css/flag-icons.min.css" integrity="sha512-uvXdJud8WaOlQFjlz9B15Yy2Au/bMAvz79F7Xa6OakCl2jvQPdHD0hb3dEqZRdSwG4/sknePXlE7GiarwA/9Wg==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
||||
|
||||
|
||||
|
||||
<script src="static/js/rel/load_css.min.js"></script>
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta name="description" content="Web Ham Radio DX Cluster and spot search">
|
||||
<meta name="keywords"
|
||||
content="ham radio, dx cluster, dx spots, cluster sposts,web dx cluster,dx cluster search, DX spots">
|
||||
<meta name="author" content="Corrado Gerbaldo">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="theme-color" content="#2196f3">
|
||||
<link rel="icon" href="/static/images/icons/favicon.ico">
|
||||
<link rel="icon" href="/static/images/icons/spider_ico_master.svg" type="image/svg+xml">
|
||||
<link rel="apple-touch-icon" href="/static/images/icons/icon-apple.png">
|
||||
<link rel="manifest" href="/static/manifest.webmanifest">
|
||||
<link rel="stylesheet" href="/static/css/rel/style.min.css">
|
||||
|
||||
<!-- nav bar -->
|
||||
<nav class="navbar px-2 navbar-expand-lg navbar-dark bg-dark">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="/">
|
||||
<img src="/static/images/icons/icon-72x72.png" width="30" height="30" class="d-inline-block align-top" alt="">
|
||||
|
||||
</a>
|
||||
<button class="navbar-toggler" type="button" aria-controls="navbarToggler01" aria-expanded="false" aria-label="Toggle navigation" data-bs-toggle="collapse" data-bs-target="#navbarToggler01" >
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarToggler01">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0" >
|
||||
|
||||
</ul>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css"
|
||||
integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">
|
||||
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/6.6.6/css/flag-icons.min.css"
|
||||
integrity="sha512-uvXdJud8WaOlQFjlz9B15Yy2Au/bMAvz79F7Xa6OakCl2jvQPdHD0hb3dEqZRdSwG4/sknePXlE7GiarwA/9Wg=="
|
||||
crossorigin="anonymous" referrerpolicy="no-referrer" />
|
||||
<!--
|
||||
<div id="MyClockDisplay" onload="showTime()" class="text-white-50 d-none d-lg-block"></div>
|
||||
-->
|
||||
<div id="MyClockDisplay" class="text-white-50 d-none d-lg-block"></div>
|
||||
<div class="text-white-50 d-none d-lg-block" > (UTC) </div>
|
||||
|
||||
<link rel="preload" href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/6.6.6/css/flag-icons.min.css"
|
||||
as="style"
|
||||
/>
|
||||
-->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header>
|
||||
|
||||
|
||||
<!-- nav bar -->
|
||||
<nav class="navbar px-2 navbar-expand-lg navbar-dark bg-dark">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="/">
|
||||
<img src="/static/images/icons/icon-72x72.png" width="30" height="30"
|
||||
class="d-inline-block align-top" alt="">
|
||||
|
||||
</a>
|
||||
<button class="navbar-toggler" type="button" aria-controls="navbarToggler01" aria-expanded="false"
|
||||
aria-label="Toggle navigation" data-bs-toggle="collapse" data-bs-target="#navbarToggler01">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarToggler01">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
</ul>
|
||||
<div id="MyClockDisplay" class="text-white-50 d-none d-lg-block"></div>
|
||||
<div class="text-white-50 d-none d-lg-block"> (UTC) </div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
|
||||
|
||||
</header>
|
||||
<div class="container-fluid mt-1 ml-0 mr-0 px-0">
|
||||
<div class="ipcs bg-light p-4 rounded-lg m-2">
|
||||
|
||||
</header>
|
||||
<div class="container-fluid mt-1 ml-0 mr-0 px-0">
|
||||
<div class="ipcs bg-light p-4 rounded-lg m-2">
|
||||
|
||||
<h1 class="display-4 text-white">WEB DX Cluster</h1>
|
||||
<p class="lead text-light">Spots list</p>
|
||||
|
||||
<p class="text-light">Telnet access: <a href="telnet://" class="text-white"></a></p>
|
||||
<p class="text-light">For connect your cluster, write to <a href="mailto:?Subject=Connect%20my%20DxCluster%20node" target="_top" class="text-white"></a></p>
|
||||
</div>
|
||||
|
||||
<p class="text-light">Telnet access: <a href="telnet://" class="text-white"></a></p>
|
||||
<p class="text-light">For connect your cluster, write to <a
|
||||
href="mailto:?Subject=Connect%20my%20DxCluster%20node" target="_top" class="text-white"></a></p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- <div class="container">
|
||||
<div class="row">
|
||||
<div class="col align-self-center"> -->
|
||||
@ -95,53 +97,56 @@
|
||||
</div> -->
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer class="page-footer font-small blue">
|
||||
<div class="footer-copyright text-center py-3">
|
||||
<span class="copyleft">©</span> Copyleft:
|
||||
<span id="copyDate"></span>
|
||||
<a href="https://github.com/coulisse/spiderweb/" target="blank" rel="noopener">IU1BOW Spiderweb</a>
|
||||
<span id="version">v2.4.1</span>
|
||||
</div>
|
||||
<footer class="page-footer font-small blue">
|
||||
<div class="footer-copyright text-center py-3">
|
||||
<span class="copyleft">©</span> Copyleft:
|
||||
<span id="copyDate"></span>
|
||||
<a href="https://github.com/coulisse/spiderweb/" target="blank" rel="noopener">IU1BOW Spiderweb</a>
|
||||
<span id="version">v2.4.1</span>
|
||||
</div>
|
||||
</footer>
|
||||
<script async src="static/js/rel/clock.min.js"></script>
|
||||
<script async src="static/js/rel/copy_date.min.js"></script>
|
||||
<script async src="static/js/rel/load-sw.min.js"></script>
|
||||
<!--- <script nonce="sedfGFG32xs"> -->
|
||||
<script nonce="">
|
||||
|
||||
</footer>
|
||||
<script async src="static/js/rel/load-sw.min.js"></script>
|
||||
<!--- <script nonce="sedfGFG32xs"> -->
|
||||
<script nonce="">
|
||||
|
||||
|
||||
</script>
|
||||
<script defer src="static/js/rel/common.min.js"></script>
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-A3rJD856KowSb7dwlZdYEkO39Gagi7vIsF0jrRAoQmDKKtQBHUuLZ9AsSv4jD4Xa" crossorigin="anonymous"></script>
|
||||
|
||||
<script async src="static/js/rel/callsign_search.min.js"></script>
|
||||
|
||||
|
||||
|
||||
<!-- cookie consent management -->
|
||||
|
||||
|
||||
</script>
|
||||
<script defer src="static/js/rel/common.min.js"></script>
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/js/bootstrap.bundle.min.js"
|
||||
integrity="sha384-A3rJD856KowSb7dwlZdYEkO39Gagi7vIsF0jrRAoQmDKKtQBHUuLZ9AsSv4jD4Xa"
|
||||
crossorigin="anonymous"></script>
|
||||
|
||||
<script async src="static/js/rel/callsign_search.min.js"></script>
|
||||
|
||||
|
||||
|
||||
<!-- cookie consent management -->
|
||||
|
||||
|
||||
|
||||
<!-- Modal for cookie consent-->
|
||||
<div class="modal fade" id="cookie_consent_modal" tabindex="-1" aria-labelledby="cookie-consent-container" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="exampleModalLabel">We use cookies</h5>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p>We use only technical cookies.</p>
|
||||
<p>Clicking "I agree", you agree to the storing of cookies on your device. To learn more about how we use cookies, please see our cookies policy.</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-primary" id="cookie_consent_btn">I agree</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script defer src="static/js/rel/cookie_consent.min.js"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
<!-- Modal for cookie consent-->
|
||||
<div class="modal fade" id="cookie_consent_modal" tabindex="-1" aria-labelledby="cookie-consent-container"
|
||||
aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="exampleModalLabel">We use cookies</h5>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p>We use only technical cookies.</p>
|
||||
<p>Clicking "I agree", you agree to the storing of cookies on your device. To learn more
|
||||
about how we use cookies, please see our cookies policy.</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-primary" id="cookie_consent_btn">I agree</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script defer src="static/js/rel/cookie_consent.min.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
@ -1,12 +0,0 @@
|
||||
function showTime(){
|
||||
let date=new Date();
|
||||
let utc = new Date(date.getTime() + date.getTimezoneOffset() * 60000);
|
||||
let time = utc.toTimeString().split(' ')[0];
|
||||
time = time.split(':')[0]+':'+time.split(':')[1];
|
||||
document.getElementById("MyClockDisplay").innerText = time;
|
||||
document.getElementById("MyClockDisplay").textContent = time;
|
||||
setTimeout(showTime, 1000);
|
||||
}
|
||||
|
||||
showTime();
|
||||
|
@ -140,6 +140,18 @@ function setText(id, newvalue) {
|
||||
s.innerHTML = newvalue;
|
||||
}
|
||||
|
||||
function showTime(){
|
||||
let date=new Date();
|
||||
let utc = new Date(date.getTime() + date.getTimezoneOffset() * 60000);
|
||||
let time = utc.toTimeString().split(' ')[0];
|
||||
time = time.split(':')[0]+':'+time.split(':')[1];
|
||||
document.getElementById("MyClockDisplay").innerText = time;
|
||||
document.getElementById("MyClockDisplay").textContent = time;
|
||||
setTimeout(showTime, 1000);
|
||||
}
|
||||
|
||||
|
||||
document.getElementById('copyDate').innerHTML='2020-'.concat(new Date().getFullYear());
|
||||
/*
|
||||
function doRefresh(){
|
||||
|
||||
|
@ -1 +0,0 @@
|
||||
document.getElementById('copyDate').innerHTML='2020-'.concat(new Date().getFullYear());
|
@ -1,88 +0,0 @@
|
||||
/*! loadCSS. [c]2020 Filament Group, Inc. MIT License */
|
||||
(function(w){
|
||||
'use strict';
|
||||
/* exported loadCSS */
|
||||
var loadCSS = function( href, before, media, attributes ){
|
||||
// Arguments explained:
|
||||
// `href` [REQUIRED] is the URL for your CSS file.
|
||||
// `before` [OPTIONAL] is the element the script should use as a reference for injecting our stylesheet <link> before
|
||||
// By default, loadCSS attempts to inject the link after the last stylesheet or script in the DOM. However, you might desire a more specific location in your document.
|
||||
// `media` [OPTIONAL] is the media type or query of the stylesheet. By default it will be 'all'
|
||||
// `attributes` [OPTIONAL] is the Object of attribute name/attribute value pairs to set on the stylesheet's DOM Element.
|
||||
var doc = w.document;
|
||||
var ss = doc.createElement( 'link' );
|
||||
var ref;
|
||||
if( before ){
|
||||
ref = before;
|
||||
}
|
||||
else {
|
||||
var refs = ( doc.body || doc.getElementsByTagName( 'head' )[ 0 ] ).childNodes;
|
||||
ref = refs[ refs.length - 1];
|
||||
}
|
||||
|
||||
var sheets = doc.styleSheets;
|
||||
// Set any of the provided attributes to the stylesheet DOM Element.
|
||||
if( attributes ){
|
||||
for( var attributeName in attributes ){
|
||||
if( attributes.hasOwnProperty( attributeName ) ){
|
||||
ss.setAttribute( attributeName, attributes[attributeName] );
|
||||
}
|
||||
}
|
||||
}
|
||||
ss.rel = 'stylesheet';
|
||||
ss.href = href;
|
||||
// temporarily set media to something inapplicable to ensure it'll fetch without blocking render
|
||||
ss.media = 'only x';
|
||||
|
||||
// wait until body is defined before injecting link. This ensures a non-blocking load in IE11.
|
||||
function ready( cb ){
|
||||
if( doc.body ){
|
||||
return cb();
|
||||
}
|
||||
setTimeout(function(){
|
||||
ready( cb );
|
||||
});
|
||||
}
|
||||
// Inject link
|
||||
// Note: the ternary preserves the existing behavior of "before" argument, but we could choose to change the argument to "after" in a later release and standardize on ref.nextSibling for all refs
|
||||
// Note: `insertBefore` is used instead of `appendChild`, for safety re: http://www.paulirish.com/2011/surefire-dom-element-insertion/
|
||||
ready( function(){
|
||||
ref.parentNode.insertBefore( ss, ( before ? ref : ref.nextSibling ) );
|
||||
});
|
||||
// A method (exposed on return object for external use) that mimics onload by polling document.styleSheets until it includes the new sheet.
|
||||
var onloadcssdefined = function( cb ){
|
||||
var resolvedHref = ss.href;
|
||||
var i = sheets.length;
|
||||
while( i-- ){
|
||||
if( sheets[ i ].href === resolvedHref ){
|
||||
return cb();
|
||||
}
|
||||
}
|
||||
setTimeout(function() {
|
||||
onloadcssdefined( cb );
|
||||
});
|
||||
};
|
||||
|
||||
function loadCB(){
|
||||
if( ss.addEventListener ){
|
||||
ss.removeEventListener( 'load', loadCB );
|
||||
}
|
||||
ss.media = media || 'all';
|
||||
}
|
||||
|
||||
// once loaded, set link's media back to `all` so that the stylesheet applies once it loads
|
||||
if( ss.addEventListener ){
|
||||
ss.addEventListener( 'load', loadCB);
|
||||
}
|
||||
ss.onloadcssdefined = onloadcssdefined;
|
||||
onloadcssdefined( loadCB );
|
||||
return ss;
|
||||
};
|
||||
// commonjs
|
||||
if( typeof exports !== 'undefined' ){
|
||||
exports.loadCSS = loadCSS;
|
||||
}
|
||||
else {
|
||||
w.loadCSS = loadCSS;
|
||||
}
|
||||
}( typeof global !== 'undefined' ? global : this ));
|
@ -36,6 +36,7 @@ class table_builder {
|
||||
*/
|
||||
#buildRow(line, isnew, dt_current, callsign = '') {
|
||||
const row = document.createElement('tr');
|
||||
/*
|
||||
row.id = line.rowid;
|
||||
|
||||
if (callsign.length > 0) {
|
||||
@ -47,6 +48,15 @@ class table_builder {
|
||||
} else if (isnew) {
|
||||
row.className = 'table-info';
|
||||
}
|
||||
*/
|
||||
|
||||
if (callsign.length > 0) {
|
||||
/*
|
||||
do not check new lines
|
||||
*/
|
||||
} else if (isnew) {
|
||||
row.className = 'table-info';
|
||||
}
|
||||
|
||||
//Column: DE search on QRZ
|
||||
const i_qrzde = document.createElement('i');
|
||||
|
1
static/js/rel/clock.min.js
vendored
1
static/js/rel/clock.min.js
vendored
@ -1 +0,0 @@
|
||||
function showTime(){var e=new Date;let t=new Date(e.getTime()+6e4*e.getTimezoneOffset()).toTimeString().split(" ")[0];t=t.split(":")[0]+":"+t.split(":")[1],document.getElementById("MyClockDisplay").innerText=t,document.getElementById("MyClockDisplay").textContent=t,setTimeout(showTime,1e3)}showTime();
|
2
static/js/rel/common.min.js
vendored
2
static/js/rel/common.min.js
vendored
@ -1 +1 @@
|
||||
function setCookie(e,t,n){var r=new Date,n=(r.setTime(r.getTime()+24*n*60*60*1e3),"expires="+r.toUTCString());document.cookie=e+"="+t+";"+n+";path=/;Samesite=Strict;Secure=True"}function getCookie(e){var n=e+"=",r=decodeURIComponent(document.cookie).split(";");for(let t=0;t<r.length;t++){let e=r[t];for(;" "==e.charAt(0);)e=e.substring(1);if(0==e.indexOf(n))return e.substring(n.length,e.length)}return""}function get_last_refresh(e){var t=new Date(0),e=(t.setUTCSeconds(e.last_refresh),(e,t=2)=>(""+new Array(t).fill(0)+e).slice(-t)),n=e(t.getHours()),e=e(t.getMinutes()),r=get_months_names()[t.getMonth()];return"Data refresh: "+t.getDate()+" of "+r+" "+t.getFullYear()+" at "+n+":"+e}function get_months_names(){var t=[];for(let e=1;e<13;e++){var n=new Date;n.setMonth(e-1),t.push(n.toLocaleString("en-US",{month:"short"}))}return t}function format_u_k_m(e){let t,n=1;e<0&&(n=-1);e=Math.abs(e);return 0==e?t=e:0<e&&e<1e3?t=e*n:1e3<=e&&e<1e6?t=e/1e3*n+"K":1e6<=e&&(t=e/1e6*n+"M"),t}function selectElement(e,t){document.getElementById(e).value=t}function addEventHandler(e,t,n){e.addEventListener?e.addEventListener(t,n,!1):e.attachEvent&&e.attachEvent("on"+t,n)}function setText(e,t){document.getElementById(e).innerHTML=t}
|
||||
function setCookie(e,t,n){var o=new Date,n=(o.setTime(o.getTime()+24*n*60*60*1e3),"expires="+o.toUTCString());document.cookie=e+"="+t+";"+n+";path=/;Samesite=Strict;Secure=True"}function getCookie(e){var n=e+"=",o=decodeURIComponent(document.cookie).split(";");for(let t=0;t<o.length;t++){let e=o[t];for(;" "==e.charAt(0);)e=e.substring(1);if(0==e.indexOf(n))return e.substring(n.length,e.length)}return""}function get_last_refresh(e){var t=new Date(0),e=(t.setUTCSeconds(e.last_refresh),(e,t=2)=>(""+new Array(t).fill(0)+e).slice(-t)),n=e(t.getHours()),e=e(t.getMinutes()),o=get_months_names()[t.getMonth()];return"Data refresh: "+t.getDate()+" of "+o+" "+t.getFullYear()+" at "+n+":"+e}function get_months_names(){var t=[];for(let e=1;e<13;e++){var n=new Date;n.setMonth(e-1),t.push(n.toLocaleString("en-US",{month:"short"}))}return t}function format_u_k_m(e){let t,n=1;e<0&&(n=-1);e=Math.abs(e);return 0==e?t=e:0<e&&e<1e3?t=e*n:1e3<=e&&e<1e6?t=e/1e3*n+"K":1e6<=e&&(t=e/1e6*n+"M"),t}function selectElement(e,t){document.getElementById(e).value=t}function addEventHandler(e,t,n){e.addEventListener?e.addEventListener(t,n,!1):e.attachEvent&&e.attachEvent("on"+t,n)}function setText(e,t){document.getElementById(e).innerHTML=t}function showTime(){var e=new Date;let t=new Date(e.getTime()+6e4*e.getTimezoneOffset()).toTimeString().split(" ")[0];t=t.split(":")[0]+":"+t.split(":")[1],document.getElementById("MyClockDisplay").innerText=t,document.getElementById("MyClockDisplay").textContent=t,setTimeout(showTime,1e3)}document.getElementById("copyDate").innerHTML="2020-".concat((new Date).getFullYear());
|
||||
|
1
static/js/rel/copy_date.min.js
vendored
1
static/js/rel/copy_date.min.js
vendored
@ -1 +0,0 @@
|
||||
document.getElementById("copyDate").innerHTML="2020-".concat((new Date).getFullYear());
|
1
static/js/rel/load_css.min.js
vendored
1
static/js/rel/load_css.min.js
vendored
@ -1 +0,0 @@
|
||||
!function(c){"use strict";function e(e,t,n,o){var i,r,d=c.document,a=d.createElement("link"),f=(r=t||(i=(d.body||d.getElementsByTagName("head")[0]).childNodes)[i.length-1],d.styleSheets);if(o)for(var l in o)o.hasOwnProperty(l)&&a.setAttribute(l,o[l]);function s(e){for(var t=a.href,n=f.length;n--;)if(f[n].href===t)return e();setTimeout(function(){s(e)})}function u(){a.addEventListener&&a.removeEventListener("load",u),a.media=n||"all"}return a.rel="stylesheet",a.href=e,a.media="only x",function e(t){if(d.body)return t();setTimeout(function(){e(t)})}(function(){r.parentNode.insertBefore(a,t?r:r.nextSibling)}),a.addEventListener&&a.addEventListener("load",u),a.onloadcssdefined=s,s(u),a}"undefined"!=typeof exports?exports.loadCSS=e:c.loadCSS=e}("undefined"!=typeof global?global:this);
|
2
static/js/rel/table.min.js
vendored
2
static/js/rel/table.min.js
vendored
File diff suppressed because one or more lines are too long
@ -1,154 +1,152 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
{% block title %}
|
||||
{% endblock title %}
|
||||
{% block head %}
|
||||
<meta charset="utf-8">
|
||||
<meta name="description" content="Web Ham Radio DX Cluster and spot search">
|
||||
<meta name="keywords" content="ham radio, dx cluster, dx spots, cluster sposts,web dx cluster,dx cluster search, DX spots">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="theme-color" content="#2196f3">
|
||||
<link rel="icon" href="/static/images/icons/favicon.ico" size="any">
|
||||
<link rel="icon" href="/static/images/icons/spider_ico_master.svg" type="image/svg+xml">
|
||||
<link rel="apple-touch-icon" href="/static/images/icons/icon-apple.png">
|
||||
<link rel="manifest" href="/static/manifest.webmanifest">
|
||||
<link rel="stylesheet" href="/static/css/rel/style.min.css">
|
||||
|
||||
<!--
|
||||
<link rel="preload" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css" as="style" integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous" onload="this.rel='stylesheet' ">
|
||||
<noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css"></noscript>
|
||||
|
||||
<link rel="preload" href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/6.6.6/css/flag-icons.min.css" as="style" integrity="sha512-uvXdJud8WaOlQFjlz9B15Yy2Au/bMAvz79F7Xa6OakCl2jvQPdHD0hb3dEqZRdSwG4/sknePXlE7GiarwA/9Wg==" crossorigin="anonymous" onload="this.rel='stylesheet'" >
|
||||
<noscript><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/6.6.6/css/flag-icons.min.css"></noscript>
|
||||
-->
|
||||
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/6.6.6/css/flag-icons.min.css" integrity="sha512-uvXdJud8WaOlQFjlz9B15Yy2Au/bMAvz79F7Xa6OakCl2jvQPdHD0hb3dEqZRdSwG4/sknePXlE7GiarwA/9Wg==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
||||
|
||||
<head>
|
||||
{% block title %}
|
||||
{% endblock title %}
|
||||
{% block head %}
|
||||
<meta charset="utf-8">
|
||||
<meta name="description" content="Web Ham Radio DX Cluster and spot search">
|
||||
<meta name="keywords"
|
||||
content="ham radio, dx cluster, dx spots, cluster sposts,web dx cluster,dx cluster search, DX spots">
|
||||
<meta name="author" content="Corrado Gerbaldo">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="theme-color" content="#2196f3">
|
||||
<link rel="icon" href="/static/images/icons/favicon.ico">
|
||||
<link rel="icon" href="/static/images/icons/spider_ico_master.svg" type="image/svg+xml">
|
||||
<link rel="apple-touch-icon" href="/static/images/icons/icon-apple.png">
|
||||
<link rel="manifest" href="/static/manifest.webmanifest">
|
||||
<link rel="stylesheet" href="/static/css/rel/style.min.css">
|
||||
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css"
|
||||
integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">
|
||||
|
||||
<script src="static/js/rel/load_css.min.js"></script>
|
||||
{% endblock head %}
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
{% block menu %}
|
||||
<!-- nav bar -->
|
||||
<nav class="navbar px-2 navbar-expand-lg navbar-dark bg-dark">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="/">
|
||||
<img src="/static/images/icons/icon-72x72.png" width="30" height="30" class="d-inline-block align-top" alt="">
|
||||
{{ mycallsign }}
|
||||
</a>
|
||||
<button class="navbar-toggler" type="button" aria-controls="navbarToggler01" aria-expanded="false" aria-label="Toggle navigation" data-bs-toggle="collapse" data-bs-target="#navbarToggler01" >
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarToggler01">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0" >
|
||||
{% for dict_item in menu_list %}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link {% if request.path == dict_item["link"] %} active {% endif %}" href="{{dict_item["link"]}}"
|
||||
{% if dict_item["external"] %}
|
||||
target="blank" rel="noopener"
|
||||
{% endif %}
|
||||
>{{dict_item["label"]}}<span class="sr-only"></span></a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/6.6.6/css/flag-icons.min.css"
|
||||
integrity="sha512-uvXdJud8WaOlQFjlz9B15Yy2Au/bMAvz79F7Xa6OakCl2jvQPdHD0hb3dEqZRdSwG4/sknePXlE7GiarwA/9Wg=="
|
||||
crossorigin="anonymous" referrerpolicy="no-referrer" />
|
||||
<!--
|
||||
<div id="MyClockDisplay" onload="showTime()" class="text-white-50 d-none d-lg-block"></div>
|
||||
-->
|
||||
<div id="MyClockDisplay" class="text-white-50 d-none d-lg-block"></div>
|
||||
<div class="text-white-50 d-none d-lg-block" > (UTC) </div>
|
||||
{% block callsign %}
|
||||
<!--
|
||||
<form method="POST" class="d-flex" id="form-callsign" enctype="application/x-www-form-urlencoded" >
|
||||
-->
|
||||
<form method="GET" class="d-flex" id="form-callsign" enctype="multipart/form-data">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/>
|
||||
<div class="input-group" id='input-group-callsign'>
|
||||
<input type="text" class="form-control" placeholder="callsign" aria-label="callsign" aria-describedby="button-addon2" id="callsignInput" >
|
||||
<div class="input-group-append">
|
||||
<!--
|
||||
<button class="btn btn-secondary" type="submit" onclick="myCallsignSearch()" formaction='javascript:myCallsignSearch();'>
|
||||
-->
|
||||
<link rel="preload" href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/6.6.6/css/flag-icons.min.css"
|
||||
as="style"
|
||||
/>
|
||||
-->
|
||||
|
||||
<button id = "btn-callsign-search" class="btn btn-secondary" type="submit" >
|
||||
|
||||
<span class="bi-search" role="button" aria-label="search-callsign"></span>
|
||||
</button>
|
||||
</div>
|
||||
{% endblock head %}
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header>
|
||||
{% block menu %}
|
||||
<!-- nav bar -->
|
||||
<nav class="navbar px-2 navbar-expand-lg navbar-dark bg-dark">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="/">
|
||||
<img src="/static/images/icons/icon-72x72.png" width="30" height="30"
|
||||
class="d-inline-block align-top" alt="">
|
||||
{{ mycallsign }}
|
||||
</a>
|
||||
<button class="navbar-toggler" type="button" aria-controls="navbarToggler01" aria-expanded="false"
|
||||
aria-label="Toggle navigation" data-bs-toggle="collapse" data-bs-target="#navbarToggler01">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarToggler01">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
{% for dict_item in menu_list %}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link {% if request.path == dict_item["link"] %} active {% endif %}" href="{{dict_item["link"]}}"
|
||||
{% if dict_item["external"] %}
|
||||
target="blank" rel="noopener"
|
||||
{% endif %}
|
||||
>{{dict_item["label"]}}<span class="sr-only"></span></a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<div id="MyClockDisplay" class="text-white-50 d-none d-lg-block"></div>
|
||||
<div class="text-white-50 d-none d-lg-block"> (UTC) </div>
|
||||
{% block callsign %}
|
||||
<form method="POST" class="d-flex" id="form-callsign" enctype="multipart/form-data">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
||||
<div class="input-group" id='input-group-callsign'>
|
||||
<input type="text" class="form-control" placeholder="callsign" aria-label="callsign"
|
||||
aria-describedby="button-addon2" id="callsignInput">
|
||||
<div class="input-group-append">
|
||||
<button id="btn-callsign-search" class="btn btn-secondary" type="submit">
|
||||
<span class="bi-search" role="button" aria-label="search-callsign"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{% endblock callsign %}
|
||||
</div>
|
||||
</form>
|
||||
{% endblock callsign %}
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
{% endblock menu %}
|
||||
</header>
|
||||
<div class="container-fluid mt-1 ml-0 mr-0 px-0">
|
||||
<div class="ipcs bg-light p-4 rounded-lg m-2">
|
||||
{% block titles %}
|
||||
{% endblock %}
|
||||
<p class="text-light">Telnet access: <a href="telnet://{{ telnet }}" class="text-white">{{ telnet }}</a></p>
|
||||
<p class="text-light">For connect your cluster, write to <a href="mailto:{{ mail }}?Subject=Connect%20my%20DxCluster%20node" target="_top" class="text-white">{{ mail }}</a></p>
|
||||
</div>
|
||||
{% block filters %}
|
||||
{% endblock filters %}
|
||||
{% block contents %}
|
||||
{% endblock contents %}
|
||||
</div>
|
||||
</nav>
|
||||
{% endblock menu %}
|
||||
</header>
|
||||
<div class="container-fluid mt-1 ml-0 mr-0 px-0">
|
||||
<div class="ipcs bg-light p-4 rounded-lg m-2">
|
||||
{% block titles %}
|
||||
{% endblock %}
|
||||
<p class="text-light">Telnet access: <a href="telnet://{{ telnet }}" class="text-white">{{ telnet }}</a></p>
|
||||
<p class="text-light">For connect your cluster, write to <a
|
||||
href="mailto:{{ mail }}?Subject=Connect%20my%20DxCluster%20node" target="_top" class="text-white">{{
|
||||
mail }}</a></p>
|
||||
</div>
|
||||
<footer class="page-footer font-small blue">
|
||||
<div class="footer-copyright text-center py-3">
|
||||
<span class="copyleft">©</span> Copyleft:
|
||||
<span id="copyDate"></span>
|
||||
<a href="https://github.com/coulisse/spiderweb/" target="blank" rel="noopener">IU1BOW Spiderweb</a>
|
||||
<span id="version">v2.4.1</span>
|
||||
</div>
|
||||
</footer>
|
||||
<script async src="static/js/rel/clock.min.js"></script>
|
||||
<script async src="static/js/rel/copy_date.min.js"></script>
|
||||
<script async src="static/js/rel/load-sw.min.js"></script>
|
||||
<!--- <script nonce="sedfGFG32xs"> -->
|
||||
<script nonce="{{ inline_script_nonce }}">
|
||||
{% block app_data %}
|
||||
var my_callsign='{{callsign}}';
|
||||
{% endblock app_data %}
|
||||
</script>
|
||||
<script defer src="static/js/rel/common.min.js"></script>
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-A3rJD856KowSb7dwlZdYEkO39Gagi7vIsF0jrRAoQmDKKtQBHUuLZ9AsSv4jD4Xa" crossorigin="anonymous"></script>
|
||||
{% block app_scripts %}
|
||||
<script async src="static/js/rel/callsign_search.min.js"></script>
|
||||
{% endblock app_scripts %}
|
||||
{% block inline_scripts %}
|
||||
{% endblock inline_scripts %}
|
||||
<!-- cookie consent management -->
|
||||
{% if cookies_check() %}
|
||||
{# then user has already consented so no requirement for consent banner #}
|
||||
{% else %}
|
||||
{# show a cookie consent banner #}
|
||||
{% block filters %}
|
||||
{% endblock filters %}
|
||||
{% block contents %}
|
||||
{% endblock contents %}
|
||||
</div>
|
||||
<footer class="page-footer font-small blue">
|
||||
<div class="footer-copyright text-center py-3">
|
||||
<span class="copyleft">©</span> Copyleft:
|
||||
<span id="copyDate"></span>
|
||||
<a href="https://github.com/coulisse/spiderweb/" target="blank" rel="noopener">IU1BOW Spiderweb</a>
|
||||
<span id="version">v2.4.1</span>
|
||||
</div>
|
||||
</footer>
|
||||
<script async src="static/js/rel/load-sw.min.js"></script>
|
||||
<!--- <script nonce="sedfGFG32xs"> -->
|
||||
<script nonce="{{ inline_script_nonce }}">
|
||||
{% block app_data %}
|
||||
var my_callsign = '{{mycallsign}}';
|
||||
{% endblock app_data %}
|
||||
</script>
|
||||
<script defer src="static/js/rel/common.min.js"></script>
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/js/bootstrap.bundle.min.js"
|
||||
integrity="sha384-A3rJD856KowSb7dwlZdYEkO39Gagi7vIsF0jrRAoQmDKKtQBHUuLZ9AsSv4jD4Xa"
|
||||
crossorigin="anonymous"></script>
|
||||
{% block app_scripts %}
|
||||
<script async src="static/js/rel/callsign_search.min.js"></script>
|
||||
{% endblock app_scripts %}
|
||||
{% block inline_scripts %}
|
||||
{% endblock inline_scripts %}
|
||||
<!-- cookie consent management -->
|
||||
{% if cookies_check() %}
|
||||
{# then user has already consented so no requirement for consent banner #}
|
||||
{% else %}
|
||||
{# show a cookie consent banner #}
|
||||
|
||||
<!-- Modal for cookie consent-->
|
||||
<div class="modal fade" id="cookie_consent_modal" tabindex="-1" aria-labelledby="cookie-consent-container" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="exampleModalLabel">We use cookies</h5>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p>We use only technical cookies.</p>
|
||||
<p>Clicking "I agree", you agree to the storing of cookies on your device. To learn more about how we use cookies, please see our cookies policy.</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-primary" id="cookie_consent_btn">I agree</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script defer src="static/js/rel/cookie_consent.min.js"></script>
|
||||
{% endif %}
|
||||
</body>
|
||||
</html>
|
||||
<!-- Modal for cookie consent-->
|
||||
<div class="modal fade" id="cookie_consent_modal" tabindex="-1" aria-labelledby="cookie-consent-container"
|
||||
aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="exampleModalLabel">We use cookies</h5>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p>We use only technical cookies.</p>
|
||||
<p>Clicking "I agree", you agree to the storing of cookies on your device. To learn more
|
||||
about how we use cookies, please see our cookies policy.</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-primary" id="cookie_consent_btn">I agree</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script defer src="static/js/rel/cookie_consent.min.js"></script>
|
||||
{% endif %}
|
||||
</body>
|
||||
|
||||
</html>
|
@ -492,6 +492,7 @@ def add_security_headers(resp):
|
||||
return resp
|
||||
|
||||
#script-src 'self' cdnjs.cloudflare.com cdn.jsdelivr.net 'nonce-sedfGFG32xs';\
|
||||
#script-src 'self' cdnjs.cloudflare.com cdn.jsdelivr.net 'nonce-"+inline_script_nonce+"';\
|
||||
|
||||
if __name__ == "__main__":
|
||||
app.run(host="0.0.0.0")
|
||||
|
Loading…
Reference in New Issue
Block a user