Recipe component can show multiblock recipes

This commit is contained in:
Andrew Miner
2017-07-16 13:07:49 -04:00
parent 3ca0dcceed
commit 0e6d75ec9b
15 changed files with 199 additions and 197 deletions
+1 -3
View File
@@ -7,9 +7,7 @@
.view__step
h3
.main_content
.view__inventory
.view__recipe
.view__recipe
.buttons
a.button.tool: .bezel: p <span class="full">show plan for </span>tools
.button.complete: .bezel: p complete<span class="full"> step</span>
+1 -18
View File
@@ -25,24 +25,7 @@
margin-bottom: 1em;
}
.main_content {
display: flex;
.view__inventory {
flex: 50%;
margin-left: $size-margin-large;
.buttons {
display: none;
}
}
.view__recipe {
flex: 50%;
}
}
.buttons {
& > .buttons {
margin-top: $size-margin-large;
opacity: 0;
@@ -5,11 +5,12 @@
# All rights reserved.
#
BaseController = require '../../base_controller'
BaseController = require "../../base_controller"
{Inventory} = require("crafting-guide-common").models
{CraftingPlanStep} = require("crafting-guide-common").crafting
InventoryController = require '../../common/inventory/inventory_controller'
RecipeController = require '../../common/recipe/recipe_controller'
InventoryController = require "../../common/inventory/inventory_controller"
RecipeController = require "../../common/recipe/recipe_controller"
RecipeDisplay = require "../../../models/site/recipe_display"
########################################################################################################################
@@ -19,9 +20,9 @@ module.exports = class StepController extends BaseController
constructor: (options={})->
if options.model?.constructor isnt CraftingPlanStep
throw new Error "options.model must be a CraftingPlanStep"
if not options.modPack? then throw new Error 'options.modPack is required'
if not options.imageLoader? then throw new Error 'options.imageLoader is required'
options.templateName = 'craft_page/step'
if not options.modPack? then throw new Error "options.modPack is required"
if not options.imageLoader? then throw new Error "options.imageLoader is required"
options.templateName = "craft_page/step"
super options
@_imageLoader = options.imageLoader
@@ -36,57 +37,45 @@ module.exports = class StepController extends BaseController
# Public Methods ###############################################################################
markComplete: (targetInventory)->
@$el.addClass 'complete'
@$completeButton.addClass 'disabled'
@$el.addClass "complete"
@$completeButton.addClass "disabled"
@model.completeInto targetInventory
# Event Methods ################################################################################
onCompleteButtonClicked: (event)->
return false if @$completeButton.hasClass 'disabled'
tracker.trackEvent c.tracking.category.craft, 'mark-complete', null, @model.count
return false if @$completeButton.hasClass "disabled"
tracker.trackEvent c.tracking.category.craft, "mark-complete", null, @model.count
@onComplete this
onShowToolPlan: (event)->
return false if @$toolButton.hasClass 'disabled'
tracker.trackEvent c.tracking.category.navigate, 'show-tool-plan', @$toolButton.attr 'target'
return false if @$toolButton.hasClass "disabled"
tracker.trackEvent c.tracking.category.navigate, "show-tool-plan", @$toolButton.attr "target"
return true
# BaseController Overrides #####################################################################
onDidRender: ->
@inventoryController = @addChild InventoryController, '.view__inventory',
editable: false
imageLoader: @_imageLoader
model: @model.inputInventory
modPack: @_modPack
router: @_router
options = imageLoader:@_imageLoader, modPack:@_modPack, router:@_router
@recipeController = @addChild RecipeController, ".view__recipe", options
@recipeController = @addChild RecipeController, '.view__recipe',
imageLoader: @_imageLoader
model: @model.recipe
modPack: @_modPack
router: @_router
@$completeButton = @$('.button.complete')
@$header = @$('h3')
@$toolButton = @$('.button.tool')
@$toolButtonLabel = @$('.button.tool p')
@$completeButton = @$(".button.complete")
@$header = @$("h3")
@$toolButton = @$(".button.tool")
@$toolButtonLabel = @$(".button.tool p")
super
onWillChangeModel: (oldModel, newModel)->
if not newModel? then throw new Error 'model cannot be null'
if not newModel? then throw new Error "model cannot be null"
if @rendered
@$el.removeClass 'complete'
@$completeButton.removeClass 'disabled'
@$el.removeClass "complete"
@$completeButton.removeClass "disabled"
return super
refresh: ->
@$header.html "#{@model.number}. #{@model.recipe.output.item.displayName}"
@inventoryController.model = @model.inputInventory
@recipeController.model = @model.recipe
@recipeController.multiplier = @model.count
@recipeController.model = new RecipeDisplay recipe:@model.recipe, multiplier:@model.count
@_refreshCompleteButton()
@_refreshToolButton()
@@ -97,8 +86,8 @@ module.exports = class StepController extends BaseController
events: ->
return _.extend super,
'click .button.complete': 'onCompleteButtonClicked'
'click .button.tool': 'onShowToolPlan'
"click .button.complete": "onCompleteButtonClicked"
"click .button.tool": "onShowToolPlan"
# Private Methods ##############################################################################
@@ -108,16 +97,16 @@ module.exports = class StepController extends BaseController
inventory.add item
inventoryText = inventory.toUrlString()
@$toolButton.attr 'href', "/craft/#{inventoryText}"
@$toolButton.attr 'target', inventoryText
@$toolButton.attr "href", "/craft/#{inventoryText}"
@$toolButton.attr "target", inventoryText
if @canAddTools this
@$toolButton.removeClass 'disabled'
@$toolButton.removeClass "disabled"
else
@$toolButton.addClass 'disabled'
@$toolButton.addClass "disabled"
_refreshCompleteButton: ->
if @canComplete this
@$completeButton.removeClass 'disabled'
@$completeButton.removeClass "disabled"
else
@$completeButton.addClass 'disabled'
@$completeButton.addClass "disabled"