travis-web/assets/javascripts/lib/hax0rs.coffee
2012-06-22 03:18:07 +02:00

27 lines
744 B
CoffeeScript

window.onTrue = (object, path, callback) ->
if object.getPath(path)
callback()
else
observer = ->
object.removeObserver path, observer
callback()
object.addObserver path, observer
window.onceLoaded = ->
objects = Array.prototype.slice.apply(arguments)
callback = objects.pop()
# sadly Ember.Enumerable.compact does not remove undefined values
objects = (if object then object else null for object in objects).compact()
object = objects.shift()
if object
path = if Ember.isArray(object) then 'firstObject.isLoaded' else 'isLoaded'
onTrue object, path, ->
if objects.length == 0
callback(object)
else
onceLoaded.apply(objects + [callback])
else
callback object