Added Browser Countdown
added countdown clock as sanity check to indicate when browser will refresh next. if the counter ever reaches 0 then your browser has locked up. used open source tool from flipclockjs.compull/194/head
parent
ffd9cfc6c8
commit
a5fb18ce44
|
@ -1,7 +1,7 @@
|
|||
{% block header %}
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>{{ title }}</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1, minimum-scale=1">
|
||||
|
@ -9,7 +9,6 @@
|
|||
<meta name="author" content="">
|
||||
<link rel="icon" type="image/x-icon" href="favicon.ico" />
|
||||
<link rel="icon" type="image/png" href="favicon.png" />
|
||||
<link rel="apple-touch-icon" href="favicon.png" />
|
||||
{% if auto_refresh %}
|
||||
<meta http-equiv="refresh" content="{{ auto_refresh_seconds }}" />
|
||||
{% endif %}
|
||||
|
@ -18,6 +17,7 @@
|
|||
<link href="static/plugin/twitter-bootstrap/css/bootstrap-responsive.min.css" rel="stylesheet">
|
||||
<link href="static/plugin/bootstrap-multiselect/bootstrap-multiselect.min.css" rel="stylesheet">
|
||||
<link href="static/css/style.css" rel="stylesheet">
|
||||
<link rel="stylesheet" href="static/plugin/flipclock/flipclock.css">
|
||||
<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
|
||||
<!--[if lt IE 9]>
|
||||
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
|
||||
|
@ -26,6 +26,7 @@
|
|||
<script type="text/javascript" src="static/plugin/twitter-bootstrap/js/bootstrap.min.js"></script>
|
||||
<script type="text/javascript" src="static/plugin/bootstrap-multiselect/bootstrap-multiselect.min.js"></script>
|
||||
<script type="text/javascript" src="static/js/scripts.js"></script>
|
||||
<script src="static/plugin/flipclock/flipclock.min.js"></script>
|
||||
</head>
|
||||
{% endblock %}
|
||||
<body data-spy="scroll" data-target=".subnav" data-offset="50" class="{{ body_class }}">
|
||||
|
@ -66,6 +67,18 @@
|
|||
{{ html_content|raw }}
|
||||
</div>
|
||||
</div>
|
||||
<!-- clock-container -->
|
||||
<div id="clock-container">
|
||||
<h2>Time until browser refresh:</h2>
|
||||
<div class="clock"></div>
|
||||
<script type="text/javascript">
|
||||
var clock = $('.clock').FlipClock({{ auto_refresh_seconds }}, {
|
||||
countdown: true,
|
||||
clockFace: 'MinuteCounter'
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
<!-- /clock-container -->
|
||||
{% if add_footer %}
|
||||
{% block footer %}
|
||||
<footer class="footer">
|
||||
|
|
|
@ -0,0 +1,437 @@
|
|||
/* Get the bourbon mixin from http://bourbon.io */
|
||||
/* Reset */
|
||||
.flip-clock-wrapper * {
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
-ms-box-sizing: border-box;
|
||||
-o-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
-webkit-backface-visibility: hidden;
|
||||
-moz-backface-visibility: hidden;
|
||||
-ms-backface-visibility: hidden;
|
||||
-o-backface-visibility: hidden;
|
||||
backface-visibility: hidden;
|
||||
}
|
||||
|
||||
.flip-clock-wrapper a {
|
||||
cursor: pointer;
|
||||
text-decoration: none;
|
||||
color: #ccc; }
|
||||
|
||||
.flip-clock-wrapper a:hover {
|
||||
color: #fff; }
|
||||
|
||||
.flip-clock-wrapper ul {
|
||||
list-style: none; }
|
||||
|
||||
.flip-clock-wrapper.clearfix:before,
|
||||
.flip-clock-wrapper.clearfix:after {
|
||||
content: " ";
|
||||
display: table; }
|
||||
|
||||
.flip-clock-wrapper.clearfix:after {
|
||||
clear: both; }
|
||||
|
||||
.flip-clock-wrapper.clearfix {
|
||||
*zoom: 1; }
|
||||
|
||||
/* Main */
|
||||
.flip-clock-wrapper {
|
||||
font: normal 11px "Helvetica Neue", Helvetica, sans-serif;
|
||||
-webkit-user-select: none; }
|
||||
|
||||
.flip-clock-meridium {
|
||||
background: none !important;
|
||||
box-shadow: 0 0 0 !important;
|
||||
font-size: 36px !important; }
|
||||
|
||||
.flip-clock-meridium a { color: #313333; }
|
||||
|
||||
.flip-clock-wrapper {
|
||||
text-align: center;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
margin: 1em;
|
||||
}
|
||||
|
||||
.flip-clock-wrapper:before,
|
||||
.flip-clock-wrapper:after {
|
||||
content: " "; /* 1 */
|
||||
display: table; /* 2 */
|
||||
}
|
||||
.flip-clock-wrapper:after {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
/* Skeleton */
|
||||
.flip-clock-wrapper ul {
|
||||
position: relative;
|
||||
float: left;
|
||||
margin: 5px;
|
||||
width: 60px;
|
||||
height: 90px;
|
||||
font-size: 80px;
|
||||
font-weight: bold;
|
||||
line-height: 87px;
|
||||
border-radius: 6px;
|
||||
background: #000;
|
||||
}
|
||||
|
||||
.flip-clock-wrapper ul li {
|
||||
z-index: 1;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
line-height: 87px;
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
.flip-clock-wrapper ul li:first-child {
|
||||
z-index: 2; }
|
||||
|
||||
.flip-clock-wrapper ul li a {
|
||||
display: block;
|
||||
height: 100%;
|
||||
-webkit-perspective: 200px;
|
||||
-moz-perspective: 200px;
|
||||
perspective: 200px;
|
||||
margin: 0 !important;
|
||||
overflow: visible !important;
|
||||
cursor: default !important; }
|
||||
|
||||
.flip-clock-wrapper ul li a div {
|
||||
z-index: 1;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 50%;
|
||||
font-size: 80px;
|
||||
overflow: hidden;
|
||||
outline: 1px solid transparent; }
|
||||
|
||||
.flip-clock-wrapper ul li a div .shadow {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 2; }
|
||||
|
||||
.flip-clock-wrapper ul li a div.up {
|
||||
-webkit-transform-origin: 50% 100%;
|
||||
-moz-transform-origin: 50% 100%;
|
||||
-ms-transform-origin: 50% 100%;
|
||||
-o-transform-origin: 50% 100%;
|
||||
transform-origin: 50% 100%;
|
||||
top: 0; }
|
||||
|
||||
.flip-clock-wrapper ul li a div.up:after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 44px;
|
||||
left: 0;
|
||||
z-index: 5;
|
||||
width: 100%;
|
||||
height: 3px;
|
||||
background-color: #000;
|
||||
background-color: rgba(0, 0, 0, 0.4); }
|
||||
|
||||
.flip-clock-wrapper ul li a div.down {
|
||||
-webkit-transform-origin: 50% 0;
|
||||
-moz-transform-origin: 50% 0;
|
||||
-ms-transform-origin: 50% 0;
|
||||
-o-transform-origin: 50% 0;
|
||||
transform-origin: 50% 0;
|
||||
bottom: 0;
|
||||
border-bottom-left-radius: 6px;
|
||||
border-bottom-right-radius: 6px;
|
||||
}
|
||||
|
||||
.flip-clock-wrapper ul li a div div.inn {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
z-index: 1;
|
||||
width: 100%;
|
||||
height: 200%;
|
||||
color: #ccc;
|
||||
text-shadow: 0 1px 2px #000;
|
||||
text-align: center;
|
||||
background-color: #333;
|
||||
border-radius: 6px;
|
||||
font-size: 70px; }
|
||||
|
||||
.flip-clock-wrapper ul li a div.up div.inn {
|
||||
top: 0; }
|
||||
|
||||
.flip-clock-wrapper ul li a div.down div.inn {
|
||||
bottom: 0; }
|
||||
|
||||
/* PLAY */
|
||||
.flip-clock-wrapper ul.play li.flip-clock-before {
|
||||
z-index: 3; }
|
||||
|
||||
.flip-clock-wrapper .flip { box-shadow: 0 2px 5px rgba(0, 0, 0, 0.7); }
|
||||
|
||||
.flip-clock-wrapper ul.play li.flip-clock-active {
|
||||
-webkit-animation: asd 0.5s 0.5s linear both;
|
||||
-moz-animation: asd 0.5s 0.5s linear both;
|
||||
animation: asd 0.5s 0.5s linear both;
|
||||
z-index: 5; }
|
||||
|
||||
.flip-clock-divider {
|
||||
float: left;
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
width: 20px;
|
||||
height: 100px; }
|
||||
|
||||
.flip-clock-divider:first-child {
|
||||
width: 0; }
|
||||
|
||||
.flip-clock-dot {
|
||||
display: block;
|
||||
background: #323434;
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
position: absolute;
|
||||
border-radius: 50%;
|
||||
box-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
|
||||
left: 5px; }
|
||||
|
||||
.flip-clock-divider .flip-clock-label {
|
||||
position: absolute;
|
||||
top: -1.5em;
|
||||
right: -86px;
|
||||
color: black;
|
||||
text-shadow: none; }
|
||||
|
||||
.flip-clock-divider.minutes .flip-clock-label {
|
||||
right: -88px; }
|
||||
|
||||
.flip-clock-divider.seconds .flip-clock-label {
|
||||
right: -91px; }
|
||||
|
||||
.flip-clock-dot.top {
|
||||
top: 30px; }
|
||||
|
||||
.flip-clock-dot.bottom {
|
||||
bottom: 30px; }
|
||||
|
||||
@-webkit-keyframes asd {
|
||||
0% {
|
||||
z-index: 2; }
|
||||
|
||||
20% {
|
||||
z-index: 4; }
|
||||
|
||||
100% {
|
||||
z-index: 4; } }
|
||||
|
||||
@-moz-keyframes asd {
|
||||
0% {
|
||||
z-index: 2; }
|
||||
|
||||
20% {
|
||||
z-index: 4; }
|
||||
|
||||
100% {
|
||||
z-index: 4; } }
|
||||
|
||||
@-o-keyframes asd {
|
||||
0% {
|
||||
z-index: 2; }
|
||||
|
||||
20% {
|
||||
z-index: 4; }
|
||||
|
||||
100% {
|
||||
z-index: 4; } }
|
||||
|
||||
@keyframes asd {
|
||||
0% {
|
||||
z-index: 2; }
|
||||
|
||||
20% {
|
||||
z-index: 4; }
|
||||
|
||||
100% {
|
||||
z-index: 4; } }
|
||||
|
||||
.flip-clock-wrapper ul.play li.flip-clock-active .down {
|
||||
z-index: 2;
|
||||
-webkit-animation: turn 0.5s 0.5s linear both;
|
||||
-moz-animation: turn 0.5s 0.5s linear both;
|
||||
animation: turn 0.5s 0.5s linear both; }
|
||||
|
||||
@-webkit-keyframes turn {
|
||||
0% {
|
||||
-webkit-transform: rotateX(90deg); }
|
||||
|
||||
100% {
|
||||
-webkit-transform: rotateX(0deg); } }
|
||||
|
||||
@-moz-keyframes turn {
|
||||
0% {
|
||||
-moz-transform: rotateX(90deg); }
|
||||
|
||||
100% {
|
||||
-moz-transform: rotateX(0deg); } }
|
||||
|
||||
@-o-keyframes turn {
|
||||
0% {
|
||||
-o-transform: rotateX(90deg); }
|
||||
|
||||
100% {
|
||||
-o-transform: rotateX(0deg); } }
|
||||
|
||||
@keyframes turn {
|
||||
0% {
|
||||
transform: rotateX(90deg); }
|
||||
|
||||
100% {
|
||||
transform: rotateX(0deg); } }
|
||||
|
||||
.flip-clock-wrapper ul.play li.flip-clock-before .up {
|
||||
z-index: 2;
|
||||
-webkit-animation: turn2 0.5s linear both;
|
||||
-moz-animation: turn2 0.5s linear both;
|
||||
animation: turn2 0.5s linear both; }
|
||||
|
||||
@-webkit-keyframes turn2 {
|
||||
0% {
|
||||
-webkit-transform: rotateX(0deg); }
|
||||
|
||||
100% {
|
||||
-webkit-transform: rotateX(-90deg); } }
|
||||
|
||||
@-moz-keyframes turn2 {
|
||||
0% {
|
||||
-moz-transform: rotateX(0deg); }
|
||||
|
||||
100% {
|
||||
-moz-transform: rotateX(-90deg); } }
|
||||
|
||||
@-o-keyframes turn2 {
|
||||
0% {
|
||||
-o-transform: rotateX(0deg); }
|
||||
|
||||
100% {
|
||||
-o-transform: rotateX(-90deg); } }
|
||||
|
||||
@keyframes turn2 {
|
||||
0% {
|
||||
transform: rotateX(0deg); }
|
||||
|
||||
100% {
|
||||
transform: rotateX(-90deg); } }
|
||||
|
||||
.flip-clock-wrapper ul li.flip-clock-active {
|
||||
z-index: 3; }
|
||||
|
||||
/* SHADOW */
|
||||
.flip-clock-wrapper ul.play li.flip-clock-before .up .shadow {
|
||||
background: -moz-linear-gradient(top, rgba(0, 0, 0, 0.1) 0%, black 100%);
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(0, 0, 0, 0.1)), color-stop(100%, black));
|
||||
background: linear, top, rgba(0, 0, 0, 0.1) 0%, black 100%;
|
||||
background: -o-linear-gradient(top, rgba(0, 0, 0, 0.1) 0%, black 100%);
|
||||
background: -ms-linear-gradient(top, rgba(0, 0, 0, 0.1) 0%, black 100%);
|
||||
background: linear, to bottom, rgba(0, 0, 0, 0.1) 0%, black 100%;
|
||||
-webkit-animation: show 0.5s linear both;
|
||||
-moz-animation: show 0.5s linear both;
|
||||
animation: show 0.5s linear both; }
|
||||
|
||||
.flip-clock-wrapper ul.play li.flip-clock-active .up .shadow {
|
||||
background: -moz-linear-gradient(top, rgba(0, 0, 0, 0.1) 0%, black 100%);
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(0, 0, 0, 0.1)), color-stop(100%, black));
|
||||
background: linear, top, rgba(0, 0, 0, 0.1) 0%, black 100%;
|
||||
background: -o-linear-gradient(top, rgba(0, 0, 0, 0.1) 0%, black 100%);
|
||||
background: -ms-linear-gradient(top, rgba(0, 0, 0, 0.1) 0%, black 100%);
|
||||
background: linear, to bottom, rgba(0, 0, 0, 0.1) 0%, black 100%;
|
||||
-webkit-animation: hide 0.5s 0.3s linear both;
|
||||
-moz-animation: hide 0.5s 0.3s linear both;
|
||||
animation: hide 0.5s 0.3s linear both; }
|
||||
|
||||
/*DOWN*/
|
||||
.flip-clock-wrapper ul.play li.flip-clock-before .down .shadow {
|
||||
background: -moz-linear-gradient(top, black 0%, rgba(0, 0, 0, 0.1) 100%);
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, black), color-stop(100%, rgba(0, 0, 0, 0.1)));
|
||||
background: linear, top, black 0%, rgba(0, 0, 0, 0.1) 100%;
|
||||
background: -o-linear-gradient(top, black 0%, rgba(0, 0, 0, 0.1) 100%);
|
||||
background: -ms-linear-gradient(top, black 0%, rgba(0, 0, 0, 0.1) 100%);
|
||||
background: linear, to bottom, black 0%, rgba(0, 0, 0, 0.1) 100%;
|
||||
-webkit-animation: show 0.5s linear both;
|
||||
-moz-animation: show 0.5s linear both;
|
||||
animation: show 0.5s linear both; }
|
||||
|
||||
.flip-clock-wrapper ul.play li.flip-clock-active .down .shadow {
|
||||
background: -moz-linear-gradient(top, black 0%, rgba(0, 0, 0, 0.1) 100%);
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, black), color-stop(100%, rgba(0, 0, 0, 0.1)));
|
||||
background: linear, top, black 0%, rgba(0, 0, 0, 0.1) 100%;
|
||||
background: -o-linear-gradient(top, black 0%, rgba(0, 0, 0, 0.1) 100%);
|
||||
background: -ms-linear-gradient(top, black 0%, rgba(0, 0, 0, 0.1) 100%);
|
||||
background: linear, to bottom, black 0%, rgba(0, 0, 0, 0.1) 100%;
|
||||
-webkit-animation: hide 0.5s 0.3s linear both;
|
||||
-moz-animation: hide 0.5s 0.3s linear both;
|
||||
animation: hide 0.5s 0.2s linear both; }
|
||||
|
||||
@-webkit-keyframes show {
|
||||
0% {
|
||||
opacity: 0; }
|
||||
|
||||
100% {
|
||||
opacity: 1; } }
|
||||
|
||||
@-moz-keyframes show {
|
||||
0% {
|
||||
opacity: 0; }
|
||||
|
||||
100% {
|
||||
opacity: 1; } }
|
||||
|
||||
@-o-keyframes show {
|
||||
0% {
|
||||
opacity: 0; }
|
||||
|
||||
100% {
|
||||
opacity: 1; } }
|
||||
|
||||
@keyframes show {
|
||||
0% {
|
||||
opacity: 0; }
|
||||
|
||||
100% {
|
||||
opacity: 1; } }
|
||||
|
||||
@-webkit-keyframes hide {
|
||||
0% {
|
||||
opacity: 1; }
|
||||
|
||||
100% {
|
||||
opacity: 0; } }
|
||||
|
||||
@-moz-keyframes hide {
|
||||
0% {
|
||||
opacity: 1; }
|
||||
|
||||
100% {
|
||||
opacity: 0; } }
|
||||
|
||||
@-o-keyframes hide {
|
||||
0% {
|
||||
opacity: 1; }
|
||||
|
||||
100% {
|
||||
opacity: 0; } }
|
||||
|
||||
@keyframes hide {
|
||||
0% {
|
||||
opacity: 1; }
|
||||
|
||||
100% {
|
||||
opacity: 0; } }
|
||||
#clock-container {
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
}
|
||||
#clock-container h2 {
|
||||
color:#888; }
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,19 @@
|
|||
Copyright (c) 2013 Objective HTML, LLC
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
Loading…
Reference in New Issue