diff --git a/src/scripts/controllers/item_page_controller.coffee b/src/scripts/controllers/item_page_controller.coffee index 5650d94ed..4b272379e 100644 --- a/src/scripts/controllers/item_page_controller.coffee +++ b/src/scripts/controllers/item_page_controller.coffee @@ -22,17 +22,6 @@ module.exports = class ItemPageController extends BaseController options.templateName = 'item_page' super options - # Public Methods ############################################################################### - - setParams: (params)-> - return unless params.name? - - item = @model.modPack.findItemByName params.name - return unless item? and item.isCraftable - - quantity = if params.quantity? then parseInt(params.quantity) else 1 - @model.want.add item.slug, quantity - # BaseController Overrides ##################################################################### onDidRender: -> diff --git a/src/scripts/crafting_guide_router.coffee b/src/scripts/crafting_guide_router.coffee index 9242151e8..ac3ca806c 100644 --- a/src/scripts/crafting_guide_router.coffee +++ b/src/scripts/crafting_guide_router.coffee @@ -28,18 +28,12 @@ module.exports = class CraftingGuideRouter extends Backbone.Router # Route Methods ################################################################################ root: -> - params = new UrlParams - recipeName: {type:'string'} - count: {type:'integer'} - - if params.recipeName? - @navigate "/item/#{encodeURIComponent(params.recipeName)}" - + params = new UrlParams recipeName:{type:'string'}, count:{type:'integer'} @item params.recipeName, params.count item: (name, quantity=1)-> @_pageControllers.item ?= new ItemPageController - @_pageControllers.item.setParams name:name, quantity:quantity + @_pageControllers.item.model.params = name:name, quantity:quantity @_setPage 'item' # Private Methods ############################################################################## diff --git a/src/scripts/models/crafting_plan.coffee b/src/scripts/models/crafting_plan.coffee index 02c30a5d7..28bc5d511 100644 --- a/src/scripts/models/crafting_plan.coffee +++ b/src/scripts/models/crafting_plan.coffee @@ -24,6 +24,7 @@ module.exports = class CraftingPlan extends BaseModel @have.on 'change', => @craft() @want.on 'change', => @craft() + @modPack.on 'change', => @craft() @clear() diff --git a/src/scripts/models/item_page.coffee b/src/scripts/models/item_page.coffee index e28e3024c..72b984177 100644 --- a/src/scripts/models/item_page.coffee +++ b/src/scripts/models/item_page.coffee @@ -16,6 +16,22 @@ module.exports = class ItemPage extends BaseModel constructor: (attributes={}, options={})-> attributes.modPack ?= new ModPack + attributes.params ?= null attributes.plan ?= new CraftingPlan modPack:attributes.modPack attributes.table ?= new CraftingTable plan:attributes.plan super attributes, options + + @modPack.on 'change', => @_consumeParams() + + # Private Methods ############################################################################## + + _consumeParams: -> + return unless @params?.name? + + item = @modPack.findItemByName @params.name, includeDisabled:true + return unless item? and item.isCraftable + + quantity = if @params.quantity? then parseInt(@params.quantity) else 1 + @plan.want.add item.slug, quantity + + @params = null diff --git a/src/scripts/models/mod_pack.coffee b/src/scripts/models/mod_pack.coffee index 467a68b15..3b9dc637a 100644 --- a/src/scripts/models/mod_pack.coffee +++ b/src/scripts/models/mod_pack.coffee @@ -19,6 +19,7 @@ module.exports = class ModPack extends BaseModel attributes.modVersions ?= [] super attributes, options + @loading = w(true) @_parser = new ModVersionParser # Public Methods ############################################################################### @@ -98,8 +99,11 @@ module.exports = class ModPack extends BaseModel return false + isLoading: -> + return @loading.inspect().state isnt 'pending' + loadModVersion: (url)-> - w.promise (resolve, reject)=> + promise = w.promise (resolve, reject)=> @trigger Event.load.started, this, url $.ajax url: url @@ -109,6 +113,8 @@ module.exports = class ModPack extends BaseModel error: (xhr, status, error)=> reject @onModVersionLoadFailed(url, error, status, xhr) + @loading = w.join @loading, promise + loadModVersionData: (data)-> modVersion = @_parser.parse data @modVersions.push modVersion @@ -118,8 +124,10 @@ module.exports = class ModPack extends BaseModel return modVersion loadAllModVersions: (urlList)-> - promises = (@loadModVersion(url) for url in urlList) - return w.settle promises + for url in urlList + @loadModVersion url + + return @loading # Event Methods ################################################################################