Sha256: 8f87975306ee24abe458d8b847b8286aea38b7d9a6d1a6c37ffaafb26bd0d1ce

Contents?: true

Size: 1.14 KB

Versions: 6

Compression:

Stored size: 1.14 KB

Contents

#  * Require ./../underscore/underscore.string
#  * Require ./../underscore/underscore.inflection
#= require ./base

class Ultimate.Backbone.Model extends Backbone.Model

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

  constructor: (attributes, options = {}) ->
    Ultimate.Backbone.debug ".Model.constructor()", @
    @expireTime = options.expireTime  if options.expireTime?
    @on 'sync', =>
      @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 @id and (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

  singular: ->
    modelName = @constructor.modelName or @modelName or @className or @constructor.name or 'Model'
    _.singularize(_.string.underscored(modelName))

Version data entries

6 entries across 6 versions & 1 rubygems

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