From 0e89dab98981f277f7517bf0ef6c4f240023cec7 Mon Sep 17 00:00:00 2001 From: Andrew Miner Date: Thu, 19 Feb 2015 14:13:18 -0800 Subject: [PATCH] Bug: Show all on item detail when mod disabled When the mod to which an item belongs is disabled, the item detail page should continue to show all the relevant sections: including those which rely on recipes which ordinarily would be hidden because the mod is disabled. --- src/scripts/models/item_page.coffee | 4 ++-- src/scripts/models/mod.coffee | 22 ++++++++++++++-------- src/scripts/models/mod_pack.coffee | 6 +++++- 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/scripts/models/item_page.coffee b/src/scripts/models/item_page.coffee index 7d685f2ec..2e249d134 100644 --- a/src/scripts/models/item_page.coffee +++ b/src/scripts/models/item_page.coffee @@ -27,7 +27,7 @@ module.exports = class ItemPage extends BaseModel @modPack.eachMod (mod)=> mod.eachRecipe (recipe)=> if recipe.requires @item.slug - outputItem = @modPack.findItem recipe.itemSlug + outputItem = @modPack.findItem recipe.itemSlug, includeDisabled:true result[outputItem.slug] = outputItem result = _.values result @@ -47,4 +47,4 @@ module.exports = class ItemPage extends BaseModel return result findRecipes: -> - return @modPack.findRecipes @item?.slug + return @modPack.findRecipes @item?.slug, [], alwaysFromOwningMod:true diff --git a/src/scripts/models/mod.coffee b/src/scripts/models/mod.coffee index f270e7b95..fa0edea5b 100644 --- a/src/scripts/models/mod.coffee +++ b/src/scripts/models/mod.coffee @@ -58,16 +58,16 @@ module.exports = class Mod extends BaseModel # ModVersion Proxy Methods ##################################################################### eachItem: (callback)-> - return unless @_activeModVersion? - @_activeModVersion.eachItem callback + effectiveModVersion = @_activeModVersion or @getModVersion Mod.Version.Latest + effectiveModVersion.eachItem callback eachName: (callback)-> - return unless @_activeModVersion? - @_activeModVersion.eachName callback + effectiveModVersion = @_activeModVersion or @getModVersion Mod.Version.Latest + effectiveModVersion.eachName callback eachRecipe: (callback)-> - return unless @_activeModVersion? - @_activeModVersion.eachRecipe callback + effectiveModVersion = @_activeModVersion or @getModVersion Mod.Version.Latest + effectiveModVersion.eachRecipe callback findItem: (slug, options={})-> options.includeDisabled ?= false @@ -96,8 +96,14 @@ module.exports = class Mod extends BaseModel @_activeModVersion.findName itemSlug findRecipes: (itemSlug, result=[], options={})-> - return result unless @_activeModVersion? - @_activeModVersion.findRecipes itemSlug, result, options + options.alwaysFromOwningMod ?= false + + if @_activeModVersion? + return @_activeModVersion.findRecipes itemSlug, result, options + else if options.alwaysFromOwningMod and itemSlug.mod is @slug + return @getModVersion(Mod.Version.Latest).findRecipes itemSlug, result, options + + return null # Property Methods ############################################################################# diff --git a/src/scripts/models/mod_pack.coffee b/src/scripts/models/mod_pack.coffee index 159d30c3f..9bcbb191a 100644 --- a/src/scripts/models/mod_pack.coffee +++ b/src/scripts/models/mod_pack.coffee @@ -82,10 +82,14 @@ module.exports = class ModPack extends BaseModel return null findRecipes: (itemSlug, result=[], options={})-> + options.alwaysFromOwningMod ?= false return null unless itemSlug? for mod in @_mods - continue unless mod.enabled + if not mod.enabled + owningMod = itemSlug.isQualified and (itemSlug.mod is mod.slug) + continue unless owningMod and options.alwaysFromOwningMod + mod.findRecipes itemSlug, result, options result.sort (a, b)-> Recipe.compareFor a, b, itemSlug