Naeltard d78842a1ad implemented libraries,
implemented api
implemented default_page js.
implemented basic start list
2015-01-19 14:16:42 +01:00

111 lines
2.6 KiB
CoffeeScript

###
countdown is a simple jquery plugin for countdowns
Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
and GPL-3.0 (http://opensource.org/licenses/GPL-3.0) licenses.
@source: http://github.com/rendro/countdown/
@autor: Robert Fleischmann
@version: 1.0.1
###
(($) ->
$.countdown = (el, options) ->
@el = el
@$el = $ el
@$el.data "countdown", @
@init = =>
@options = $.extend {}, $.countdown.defaultOptions, options
if @options.refresh
@interval = setInterval =>
@render()
, @options.refresh
@render()
@
getDateData = (endDate) =>
endDate = Date.parse if $.isPlainObject @options.date then @options.date else new Date @options.date
diff = (endDate - Date.parse(new Date)) / 1000
if diff <= 0
diff = 0
@stop() if @interval
@options.onEnd.apply @
dateData = {
years: 0
days: 0
hours: 0
min: 0
sec: 0
millisec: 0
}
if diff >= (365.25 * 86400)
dateData.years = Math.floor diff / (365.25 * 86400)
diff -= dateData.years * 365.25 * 86400
if diff >= 86400
dateData.days = Math.floor diff / 86400
diff -= dateData.days * 86400
if diff >= 3600
dateData.hours = Math.floor diff / 3600
diff -= dateData.hours * 3600
if diff >= 60
dateData.min = Math.floor diff / 60
diff -= dateData.min * 60
dateData.sec = diff
dateData
@leadingZeros = (num, length = 2) =>
num = String num
num = "0#{num}" while num.length < length
num
@update = (newDate) =>
@options.date = newDate
@
@render = =>
@options.render.apply @, [getDateData @options.date]
@
@stop = =>
clearInterval @interval if @interval
@interval = null
@
@start = (refresh = @options.refresh or $.countdown.defaultOptions.refresh) =>
clearInterval @interval if @interval
@render()
@options.refresh = refresh
@interval = setInterval =>
@render()
, @options.refresh
@
@init()
$.countdown.defaultOptions =
date: "June 7, 2087 15:03:25"
refresh: 1000
onEnd: $.noop
render: (date) ->
$(@el).html "#{date.years} years, #{date.days} days, #{@leadingZeros date.hours} hours, #{@leadingZeros date.min} min and #{@leadingZeros date.sec} sec"
$.fn.countdown = (options) ->
$.each @, (i, el) ->
$el = ($ el)
unless $el.data 'countdown'
$el.data 'countdown', new $.countdown el, options
undefined
)(jQuery)