Template:Kyoto/small countdown
From 2014.igem.org
(Difference between revisions)
(Created page with "<html> <a id="kyoto_alert" target="_blank" href="https://2013.igem.org/Team:Kyoto/TimeLimit">count down</a> <style type="text/css"> #kyoto_alert { position: fixed; top: 30px; ...") |
|||
(20 intermediate revisions not shown) | |||
Line 1: | Line 1: | ||
+ | <!-- http://github.com/iGEMKyoto/wiki_freeze_alert --> | ||
+ | <div id="kyoto-alert"> | ||
+ | <div id="kyoto-alert-display">count down</div> | ||
+ | <div id="kyoto-alert-popup">{{{popup|}}}</div> | ||
+ | </div> | ||
<html> | <html> | ||
- | |||
<style type="text/css"> | <style type="text/css"> | ||
- | # | + | #kyoto-alert { |
position: fixed; | position: fixed; | ||
top: 30px; | top: 30px; | ||
right: 10px; | right: 10px; | ||
- | |||
- | |||
height: 30px; | height: 30px; | ||
+ | width: 300px; | ||
+ | padding: 30px 10px; | ||
+ | display: none; | ||
+ | z-index: 300; | ||
+ | |||
+ | /* text */ | ||
line-height: 30px; | line-height: 30px; | ||
font-size: 30px; | font-size: 30px; | ||
- | + | font-family: sans-serif; | |
+ | text-align: center; | ||
text-decoration: none; | text-decoration: none; | ||
- | + | ||
- | display: none; | + | /* color */ |
+ | background-color: #aaa; | ||
+ | border: 4px solid #888; | ||
+ | color: #eee; | ||
+ | |||
+ | /* box sizing */ | ||
+ | box-sizing: content-box; | ||
+ | -webkit-box-sizing: content-box; | ||
+ | -moz-box-sizing: content-box; | ||
+ | |||
+ | /* border radius */ | ||
+ | border-radius: 20px; | ||
+ | -webkit-border-radius: 20px; | ||
+ | -moz-border-radius: 20px; | ||
+ | |||
+ | /* select cancel */ | ||
+ | user-select: none; | ||
+ | -webkit-user-select: none; | ||
+ | -moz-user-select: none; | ||
+ | -khtml-user-select: none; | ||
+ | } | ||
+ | #kyoto-alert:hover { | ||
+ | cursor: move; | ||
+ | } | ||
+ | #kyoto-alert-display { | ||
+ | width: 100%; | ||
+ | height: 100%; | ||
+ | } | ||
+ | #kyoto-alert-popup { | ||
+ | position: relative; | ||
+ | top: 35px; | ||
+ | color: #000; | ||
+ | |||
+ | /* text-shadow */ | ||
+ | -webkit-text-shadow: 0px 0px 6px #fff; | ||
+ | -moz-text-shadow: 0px 0px 6px #fff; | ||
+ | text-shadow: 0px 0px 6px #fff; | ||
+ | |||
+ | display: none; | ||
+ | } | ||
+ | #kyoto-alert:hover #kyoto-alert-popup { | ||
+ | display: block; | ||
} | } | ||
</style> | </style> | ||
+ | |||
+ | <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/jquery-ui.min.js"></script> | ||
+ | |||
<script type="text/javascript"> | <script type="text/javascript"> | ||
+ | //<![CDATA[ | ||
+ | $(function(){ | ||
+ | |||
+ | /* October 17 wiki FREEZE at 12:00PM EDT */ | ||
+ | var year = </html>{{{year|2014}}}<html>; | ||
+ | var month = </html>{{{month|10}}}<html>; | ||
+ | var day = </html>{{{day|18}}}<html>; | ||
+ | var freeze = Date.UTC(year, month-1, day, 4, 00, 0); | ||
+ | |||
+ | function get_current_utc() { | ||
+ | var date = new Date(); | ||
+ | return Date.UTC( | ||
+ | date.getUTCFullYear(), | ||
+ | date.getUTCMonth(), | ||
+ | date.getUTCDate(), | ||
+ | date.getUTCHours(), | ||
+ | date.getUTCMinutes(), | ||
+ | date.getUTCSeconds() | ||
+ | ); | ||
+ | } | ||
+ | |||
+ | /* | ||
+ | * return array of the quoteient and remainder | ||
+ | */ | ||
+ | function qr(dividend, divisor) { | ||
+ | return [Math.floor(dividend/divisor), | ||
+ | dividend%divisor]; | ||
+ | } | ||
+ | |||
+ | function repeat_str(str, n) { | ||
+ | var retval = ''; | ||
+ | for (var i = 0; i < n; i++) { | ||
+ | retval += str; | ||
+ | } | ||
+ | return retval; | ||
+ | } | ||
+ | |||
+ | /* | ||
+ | * transfer Integer to String | ||
+ | */ | ||
+ | function itos(number, figures) { | ||
+ | return [repeat_str('0', figures-1),number] | ||
+ | .join('').slice(-figures); | ||
+ | } | ||
+ | |||
var timer = setInterval(function() { | var timer = setInterval(function() { | ||
- | + | var $countdown = $("#kyoto-alert"); | |
- | + | var $display = $("#kyoto-alert-display"); | |
- | + | var current_utc = get_current_utc(); | |
- | + | var interval = (freeze - current_utc)/1000; | |
- | + | if (interval < 0) { | |
- | + | $countdown.hide(); | |
- | + | } else if (interval < 4 * 24 * 3600) { | |
- | + | if (interval < 1 * 3600) | |
- | + | $display.css("color", "#f00"); | |
- | + | else if (interval < 24 * 3600) | |
- | + | $display.css("color", "#ff0"); | |
- | + | ||
- | + | var time = []; | |
- | + | var second_qr = qr(interval, 60); | |
- | + | time.push(itos(second_qr[1], 2) + 's'); | |
- | + | var minute_qr = qr(second_qr[0], 60); | |
- | + | time.push(itos(minute_qr[1], 2) + 'm'); | |
- | + | time.push(itos(minute_qr[0], 2) + 'h'); | |
- | + | $display.text(time.reverse().join(' : ')); | |
- | + | $countdown.show(); | |
- | + | } else { | |
- | time = Math.floor( | + | var time = []; |
- | + | interval = Math.floor(interval / 60); | |
- | + | var minute_qr = qr(interval, 60); | |
- | + | time.push(itos(minute_qr[1], 2) + 'm'); | |
- | + | var hour_qr = qr(minute_qr[0], 24); | |
- | + | time.push(itos(hour_qr[1], 2) + 'h'); | |
- | + | time.push(itos(hour_qr[0], 3) + 'd'); | |
- | + | $display.text(time.reverse().join(' : ')); | |
- | + | $countdown.show(); | |
+ | } | ||
}, 200); | }, 200); | ||
+ | |||
+ | $("#kyoto-alert").draggable(); | ||
+ | |||
+ | }); | ||
+ | //]]> | ||
</script> | </script> | ||
</html> | </html> |
Latest revision as of 06:12, 10 October 2014
count down