Sha256: 5342504fe7c821b464b30029c12d96c5909df071f080f868399c1b46a05cc80a

Contents?: true

Size: 923 Bytes

Versions: 6

Compression:

Stored size: 923 Bytes

Contents

#= require ./base

class Ultimate.Backbone.Collection extends Backbone.Collection

  readyDeferred: null
  loaded: false
  loadedTimeStamp: null
  expireTime: Infinity

  constructor: (models, options = {}) ->
    Ultimate.Backbone.debug ".Collection.constructor()", @
    @expireTime = options.expireTime  if options.expireTime?
    super

  reset: (models, options) ->
    @loadedTimeStamp = new Date()
    @loaded = true
    super

  ready: (callback, fetchOptions) ->
    lifeTime = if @loadedTimeStamp then (new Date() - @loadedTimeStamp) else 0
    if expired = lifeTime > @expireTime
      @readyDeferred = null
    if not @loaded or expired
      @readyDeferred ||= @fetch(fetchOptions)
      @readyDeferred.done =>
        callback.apply @
    else
      callback.apply @

  abort: ->
    if @readyDeferred?
      if @readyDeferred.state() is 'pending'
        @readyDeferred.abort()
        @readyDeferred = null

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
ultimate-base-0.5.0.0 app/assets/javascripts/ultimate/backbone/collection.js.coffee
ultimate-base-0.4.1.0 app/assets/javascripts/ultimate/backbone/collection.js.coffee
ultimate-base-0.4.0.1 app/assets/javascripts/ultimate/backbone/collection.js.coffee
ultimate-base-0.4.0.0 app/assets/javascripts/ultimate/backbone/collection.js.coffee
ultimate-base-0.3.5.0 app/assets/javascripts/ultimate/backbone/collection.js.coffee
ultimate-base-0.3.4.0 app/assets/javascripts/ultimate/backbone/collection.js.coffee