44 lines
1.1 KiB
CoffeeScript
44 lines
1.1 KiB
CoffeeScript
# -------------------------------------------------------------------
|
|
# plugins / tasks.coffee
|
|
|
|
|
|
Tasks = ($el, options={}) ->
|
|
@$el = $el
|
|
@options = $.extend({}, Tasks.DEFAULTS, options)
|
|
|
|
self = @
|
|
$el.on 'click', '.task input[type=checkbox]', ->
|
|
self.completeTask($(@))
|
|
.on 'click', '.task a', ->
|
|
$(@).parents('.task').find('input[type=checkbox]').click()
|
|
false
|
|
@
|
|
|
|
Tasks.prototype.completeTask = ($trigger) ->
|
|
$task = $trigger.parents('.task')
|
|
if $task.toggleClass('completed').hasClass('completed')
|
|
@options.onComplete.call(@)
|
|
else
|
|
@options.onCancel.call(@)
|
|
|
|
Tasks.prototype.clearCompletedTasks = () ->
|
|
$('.completed', @$el).hide 200, () ->
|
|
$(@).remove()
|
|
@options.onClear.call(@)
|
|
|
|
Tasks.DEFAULTS =
|
|
onComplete: () ->
|
|
onCancel: () ->
|
|
onClear: () ->
|
|
|
|
$.fn.pixelTasks = (options) ->
|
|
$(@).each ->
|
|
$this = $(@)
|
|
pt = $.data(@, 'pixelTasks')
|
|
if not pt
|
|
$.data(@, 'pixelTasks', new Tasks($this, options))
|
|
else if options is 'clearCompletedTasks'
|
|
pt.clearCompletedTasks()
|
|
|
|
$.fn.pixelTasks.Constructor = Tasks
|