codecombat/app/collections/CocoCollection.coffee

39 lines
1 KiB
CoffeeScript
Raw Normal View History

CocoModel = require 'models/CocoModel'
2014-01-03 13:32:13 -05:00
module.exports = class CocoCollection extends Backbone.Collection
loaded: false
model: null
2014-01-03 13:32:13 -05:00
initialize: (models, options) ->
options ?= {}
@model ?= options.model
if not @model
console.error @constructor.name, 'does not have a model defined. This will not do!'
super(models, options)
@setProjection options.project
if options.url then @url = options.url
2014-01-03 13:32:13 -05:00
@once 'sync', =>
@loaded = true
model.loaded = true for model in @models
if window.application?.testing
@fakeRequests = []
@on 'request', -> @fakeRequests.push jasmine.Ajax.requests.mostRecent()
getURL: ->
return if _.isString @url then @url else @url()
fetch: (options) ->
options ?= {}
if @project
options.data ?= {}
options.data.project = @project.join(',')
@jqxhr = super(options)
@loading = true
@jqxhr
setProjection: (@project) ->
stringify: -> return JSON.stringify(@toJSON())
wait: (event) -> new Promise((resolve) => @once(event, resolve))