Initial effort to convert craft page to new models
This commit is contained in:
@@ -5,39 +5,47 @@
|
||||
# All rights reserved.
|
||||
#
|
||||
|
||||
BaseController = require '../../base_controller'
|
||||
SlotController = require '../slot/slot_controller'
|
||||
BaseController = require "../../base_controller"
|
||||
{Recipe} = require("crafting-guide-common").models
|
||||
SlotController = require "../slot/slot_controller"
|
||||
|
||||
########################################################################################################################
|
||||
|
||||
module.exports = class CraftingGridController extends BaseController
|
||||
|
||||
constructor: (options={})->
|
||||
if not options.imageLoader? then throw new Error 'options.imageLoader is required'
|
||||
if not options.modPack? then throw new Error 'options.modPack is required'
|
||||
if not options.router? then throw new Error 'options.router is required'
|
||||
# options.model should be a recipe
|
||||
options.templateName = 'common/crafting_grid'
|
||||
if not options.imageLoader? then throw new Error "options.imageLoader is required"
|
||||
if not options.modPack? then throw new Error "options.modPack is required"
|
||||
if not options.router? then throw new Error "options.router is required"
|
||||
options.templateName = "common/crafting_grid"
|
||||
super options
|
||||
|
||||
@_imageLoader = options.imageLoader
|
||||
@_modPack = options.modPack
|
||||
@_router = options.router
|
||||
|
||||
@_modPack.on c.event.change, => @tryRefresh()
|
||||
|
||||
# BaseController Methods #######################################################################
|
||||
|
||||
onWillChangeModel: (oldModel, newModel)->
|
||||
if newModel? and (newModel.constructor isnt Recipe) then throw new Error "options.model must be a Recipe"
|
||||
super
|
||||
|
||||
onDidRender: ->
|
||||
@_slotControllers = []
|
||||
for el in @$('.view__slot')
|
||||
for el in @$(".view__slot")
|
||||
controller = new SlotController el:el, imageLoader:@_imageLoader, modPack:@_modPack, router:@_router
|
||||
controller.render()
|
||||
@_slotControllers.push controller
|
||||
super
|
||||
|
||||
refresh: ->
|
||||
for controller, index in @_slotControllers
|
||||
controller.model = @model?.getStackAtSlot(index)
|
||||
index = 0
|
||||
for y in [0..2]
|
||||
for x in [0..2]
|
||||
controller = @_slotControllers[index++]
|
||||
if @model?
|
||||
controller.model = @model.getInputAt x, y
|
||||
else
|
||||
controller.model = null
|
||||
|
||||
super
|
||||
|
||||
@@ -47,8 +47,6 @@ module.exports = class InventoryController extends BaseController
|
||||
|
||||
@_stackControllers = []
|
||||
|
||||
@listenTo @_modPack, c.event.change, => @tryRefresh()
|
||||
|
||||
# Event Methods ################################################################################
|
||||
|
||||
onClearButtonClicked: ->
|
||||
@@ -61,31 +59,33 @@ module.exports = class InventoryController extends BaseController
|
||||
@trigger c.event.change, this
|
||||
|
||||
onFirstButtonClicked: (stackController)->
|
||||
tracker.trackEvent @_trackingContext, 'remove-from', "#{stackController?.model?.itemSlug}"
|
||||
@trigger c.event.button.first, this, stackController?.model?.itemSlug
|
||||
itemId = stackController.model?.item.id
|
||||
tracker.trackEvent @_trackingContext, 'remove-from', itemId
|
||||
@trigger c.event.button.first, this, itemId
|
||||
|
||||
onItemSelectorButtonClicked: ->
|
||||
return unless @model?
|
||||
|
||||
tracker.trackEvent @_trackingContext, 'launch-add-to'
|
||||
@_selector.launch()
|
||||
.then (itemSlug)=>
|
||||
if not itemSlug?
|
||||
.then (item)=>
|
||||
if not item?
|
||||
tracker.trackEvent @_trackingContext, 'cancel-add-to'
|
||||
return
|
||||
|
||||
tracker.trackEvent @_trackingContext, 'complete-add-to', "#{itemSlug}"
|
||||
@model.add itemSlug, 1
|
||||
@trigger c.event.add, this, itemSlug
|
||||
tracker.trackEvent @_trackingContext, 'complete-add-to', "#{item.id}"
|
||||
@model.add item, 1
|
||||
@trigger c.event.add, this, item.id
|
||||
@trigger c.event.change, this
|
||||
|
||||
onSecondButtonClicked: (stackController)->
|
||||
itemId = stackController.model?.item.id
|
||||
@trigger c.event.button.second, this, stackController?.model?.itemSlug
|
||||
|
||||
# BaseController Overrides #####################################################################
|
||||
|
||||
onDidRender: ->
|
||||
@_selector = @addChild ItemSelectorController, null, isAcceptable: @_isAcceptable, modPack: @_modPack
|
||||
@_selector = @addChild ItemSelectorController, null, isAcceptable:@_isAcceptable, modPack:@_modPack
|
||||
|
||||
@$clearButton = @$('.button.clear')
|
||||
@$emptyPlaceholder = @$('.empty_placeholder')
|
||||
@@ -131,7 +131,7 @@ module.exports = class InventoryController extends BaseController
|
||||
index = 0
|
||||
|
||||
if @model?
|
||||
@model.each (stack)=>
|
||||
for itemId, stack of @model.stacks
|
||||
controller = @_stackControllers[index]
|
||||
if not controller?
|
||||
controller = new StackController
|
||||
@@ -153,6 +153,7 @@ module.exports = class InventoryController extends BaseController
|
||||
@$itemContainer.append controller.$el
|
||||
else
|
||||
controller.model = stack
|
||||
|
||||
index += 1
|
||||
|
||||
while @_stackControllers.length > index
|
||||
|
||||
@@ -5,58 +5,63 @@
|
||||
# All rights reserved.
|
||||
#
|
||||
|
||||
BaseController = require '../../../base_controller'
|
||||
BaseController = require "../../../base_controller"
|
||||
ItemDisplay = require "../../../../models/site/item_display"
|
||||
|
||||
########################################################################################################################
|
||||
|
||||
module.exports = class ElementController extends BaseController
|
||||
|
||||
constructor: (options={})->
|
||||
if not options.model? then throw new Error 'options.model is required'
|
||||
options.onClicked ?= (controller)-> # do nothing
|
||||
options.onSelected ?= (controller)-> # do nothing
|
||||
options.templateName = 'common/item_selector/element'
|
||||
if not options.model? then throw new Error "options.model is required"
|
||||
options.templateName = "common/item_selector/element"
|
||||
options.useAnimations = false
|
||||
super options
|
||||
|
||||
@onClicked = options.onClicked
|
||||
@onSelected = options.onSelected
|
||||
@onClicked = options.onClicked or (controller)-> # do nothing
|
||||
@onSelected = options.onSelected or (controller)-> # do nothing
|
||||
|
||||
# Property Methods #############################################################################
|
||||
|
||||
isSelected: ->
|
||||
return @_selected
|
||||
|
||||
setSelected: (newSelected)->
|
||||
oldSelected = @_selected
|
||||
return if newSelected is oldSelected
|
||||
|
||||
@_selected = newSelected
|
||||
@tryRefresh()
|
||||
|
||||
@trigger c.event.change + ':selected', this, oldSelected, newSelected
|
||||
@trigger c.event.change, this
|
||||
|
||||
Object.defineProperties @prototype,
|
||||
selected: {get:@prototype.isSelected, set:@prototype.setSelected}
|
||||
|
||||
display:
|
||||
get: -> return @_display ?= new ItemDisplay @model
|
||||
set: -> throw new Error "display cannot be assigned"
|
||||
|
||||
isSelected:
|
||||
get: -> return @_selected
|
||||
set: (newSelected)->
|
||||
oldSelected = @_selected
|
||||
return if newSelected is oldSelected
|
||||
|
||||
@_selected = newSelected
|
||||
@tryRefresh()
|
||||
|
||||
@trigger c.event.change + ":selected", this, oldSelected, newSelected
|
||||
@trigger c.event.change, this
|
||||
|
||||
# BaseController Overrides #####################################################################
|
||||
|
||||
onDidModelChange: ->
|
||||
@_display = null
|
||||
super
|
||||
|
||||
onDidRender: ->
|
||||
@$icon = @$('img')
|
||||
@$name = @$('.name')
|
||||
@$modName = @$('.modName')
|
||||
@$icon = @$("img")
|
||||
@$name = @$(".name")
|
||||
@$modName = @$(".modName")
|
||||
super
|
||||
|
||||
refresh: ->
|
||||
@$icon.attr 'src', @model.iconUrl
|
||||
@$name.html @model.itemName
|
||||
@$modName.html @model.modName
|
||||
@$icon.attr "src", @display.iconUrl
|
||||
@$name.html @model.displayName
|
||||
@$modName.html @model.mod.displayName
|
||||
|
||||
if @_selected
|
||||
@$el.addClass 'selected'
|
||||
@$el.addClass "selected"
|
||||
else
|
||||
@$el.removeClass 'selected'
|
||||
@$el.removeClass "selected"
|
||||
|
||||
super
|
||||
|
||||
@@ -64,15 +69,15 @@ module.exports = class ElementController extends BaseController
|
||||
|
||||
events: ->
|
||||
return _.extend super,
|
||||
'click': '_onClick'
|
||||
'mouseenter': '_onMouseEnter'
|
||||
"click": "_onClick"
|
||||
"mouseenter": "_onMouseEnter"
|
||||
|
||||
# Private Methods ##############################################################################
|
||||
|
||||
_onClick: (event)->
|
||||
event.preventDefault()
|
||||
@onClicked this
|
||||
return false
|
||||
|
||||
_onMouseEnter: (event)->
|
||||
event.preventDefault()
|
||||
@onSelected this
|
||||
return false
|
||||
|
||||
@@ -5,21 +5,22 @@
|
||||
# All rights reserved.
|
||||
#
|
||||
|
||||
BaseController = require '../../base_controller'
|
||||
ItemSelector = require '../../../models/site/item_selector'
|
||||
ElementController = require './element/element_controller'
|
||||
BaseController = require "../../base_controller"
|
||||
ItemDisplay = require "../../../models/site/item_display"
|
||||
ItemSelector = require "../../../models/site/item_selector"
|
||||
ElementController = require "./element/element_controller"
|
||||
w = require "when"
|
||||
|
||||
########################################################################################################################
|
||||
|
||||
module.exports = class ItemSelectorController extends BaseController
|
||||
|
||||
constructor: (options)->
|
||||
if not options.modPack? then throw new Error 'options.modPack is required'
|
||||
constructor: (options={})->
|
||||
if not options.modPack? then throw new Error "options.modPack is required"
|
||||
options.isAcceptable ?= null
|
||||
options.model ?= new ItemSelector {}, modPack:options.modPack, isAcceptable:options.isAcceptable
|
||||
options.model ?= new ItemSelector options.modPack, isAcceptable:options.isAcceptable
|
||||
options.onChoseItem ?= (item)-> # do nothing
|
||||
options.templateName = 'common/item_selector'
|
||||
options.templateName = "common/item_selector"
|
||||
super options
|
||||
|
||||
@_modPack = options.modPack
|
||||
@@ -29,25 +30,25 @@ module.exports = class ItemSelectorController extends BaseController
|
||||
|
||||
# Public Methods ###############################################################################
|
||||
|
||||
launch: (hint='')->
|
||||
launch: (hint="")->
|
||||
@model.hint = hint
|
||||
if @rendered then @refresh()
|
||||
|
||||
@_disableWindowScrolling()
|
||||
|
||||
@$page.addClass 'blur'
|
||||
@$page.addClass "blur"
|
||||
@$screen.append @$popup
|
||||
@$screen.css 'display', ''
|
||||
@$screen.css "display", ""
|
||||
|
||||
@$popup.off c.event.click
|
||||
@$popup.on c.event.click, (event)=> @onPopupClicked(event)
|
||||
|
||||
@$hintField.off 'keyup input'
|
||||
@$hintField.on 'keyup', (event)=> @onHintKeyPress(event)
|
||||
@$hintField.on 'input', (event)=> @onHintChanged(event)
|
||||
@$hintField.off "keyup input"
|
||||
@$hintField.on "keyup", (event)=> @onHintKeyPress(event)
|
||||
@$hintField.on "input", (event)=> @onHintChanged(event)
|
||||
@$hintField.focus()
|
||||
|
||||
@$closeButton.one 'click', (event)=> @_close()
|
||||
@$closeButton.one "click", (event)=> @_close()
|
||||
|
||||
@$screen.one c.event.click, (event)=> @onScreenClicked(event)
|
||||
|
||||
@@ -85,17 +86,17 @@ module.exports = class ItemSelectorController extends BaseController
|
||||
return false
|
||||
|
||||
onResultClicked: (controller)->
|
||||
@_session.resolve controller.model.slug
|
||||
@_session.resolve controller.model
|
||||
@_session = null
|
||||
@_close()
|
||||
return false
|
||||
|
||||
onResultSelected: (controller)->
|
||||
for c in @_elementControllers
|
||||
c.selected = false
|
||||
c.isSelected = false
|
||||
|
||||
if controller?
|
||||
controller.selected = true
|
||||
controller.isSelected = true
|
||||
|
||||
return false
|
||||
|
||||
@@ -106,14 +107,14 @@ module.exports = class ItemSelectorController extends BaseController
|
||||
# BaseController Overrides #####################################################################
|
||||
|
||||
onDidRender: ->
|
||||
@$page = $('.page') # find the shared, global page
|
||||
@$screen = $('.view__screen') # find the shared, global screen
|
||||
@$page = $(".page") # find the shared, global page
|
||||
@$screen = $(".view__screen") # find the shared, global screen
|
||||
|
||||
@$closeButton = @$('img.close')
|
||||
@$popup = @$('.view__item_selector_popup')
|
||||
@$hintField = @$('.view__item_selector_popup input')
|
||||
@$searchInput = @$('.search input')
|
||||
@$resultsContainer = @$('.results')
|
||||
@$closeButton = @$("img.close")
|
||||
@$popup = @$(".view__item_selector_popup")
|
||||
@$hintField = @$(".view__item_selector_popup input")
|
||||
@$searchInput = @$(".search input")
|
||||
@$resultsContainer = @$(".results")
|
||||
|
||||
@$popup.detach()
|
||||
super
|
||||
@@ -127,16 +128,16 @@ module.exports = class ItemSelectorController extends BaseController
|
||||
|
||||
_chooseSelected: ->
|
||||
for controller in @_elementControllers
|
||||
if controller.selected
|
||||
if controller.isSelected
|
||||
@onResultClicked controller
|
||||
return
|
||||
|
||||
_close: ->
|
||||
@_enableWindowScrolling()
|
||||
@$page.removeClass 'blur'
|
||||
@$screen.css 'display', 'none'
|
||||
@$page.removeClass "blur"
|
||||
@$screen.css "display", "none"
|
||||
@$popup.detach()
|
||||
@model.hint = ''
|
||||
@model.hint = ""
|
||||
|
||||
if @_session
|
||||
@_session.resolve null
|
||||
@@ -144,28 +145,27 @@ module.exports = class ItemSelectorController extends BaseController
|
||||
|
||||
_disableWindowScrolling: ->
|
||||
@_windowScrollPosition = $(window).scrollTop()
|
||||
$('body').addClass('scrollDisabled').css('margin-top', -@_windowScrollPosition)
|
||||
$("body").addClass("scrollDisabled").css("margin-top", -@_windowScrollPosition)
|
||||
|
||||
_enableWindowScrolling: ->
|
||||
$('body').removeClass('scrollDisabled').css('margin-top', 0)
|
||||
$("body").removeClass("scrollDisabled").css("margin-top", 0)
|
||||
$(window).scrollTop @_windowScrollPosition
|
||||
|
||||
_refreshResults: ->
|
||||
index = 0
|
||||
|
||||
for itemSlug in @model.results
|
||||
displayModel = @_modPack.findItemDisplay itemSlug
|
||||
for item in @model.results
|
||||
controller = @_elementControllers[index]
|
||||
if not controller?
|
||||
controller = new ElementController
|
||||
model: displayModel
|
||||
model: item
|
||||
onClicked: (c)=> @onResultClicked(c)
|
||||
onSelected: (c)=> @onResultSelected(c)
|
||||
controller.render show:false
|
||||
@_elementControllers[index] = controller
|
||||
@$resultsContainer.append controller.$el
|
||||
else
|
||||
controller.model = displayModel
|
||||
controller.model = item
|
||||
|
||||
controller.show()
|
||||
index += 1
|
||||
@@ -180,14 +180,17 @@ module.exports = class ItemSelectorController extends BaseController
|
||||
controller = @_elementControllers[i]
|
||||
nextController = @_elementControllers[i + 1]
|
||||
|
||||
if controller.selected
|
||||
controller.selected = false
|
||||
nextController.selected = true
|
||||
if controller.isSelected
|
||||
controller.isSelected = false
|
||||
nextController.isSelected = true
|
||||
@_showElement nextController.$el
|
||||
return
|
||||
|
||||
[..., controller] = @_elementControllers
|
||||
controller.isSelected = false
|
||||
|
||||
controller = @_elementControllers[0]
|
||||
controller.selected = true
|
||||
controller.isSelected = true
|
||||
@_showElement controller.$el
|
||||
|
||||
_selectPrevious: ->
|
||||
@@ -197,14 +200,17 @@ module.exports = class ItemSelectorController extends BaseController
|
||||
previousController = @_elementControllers[i - 1]
|
||||
controller = @_elementControllers[i]
|
||||
|
||||
if controller.selected
|
||||
previousController.selected = true
|
||||
controller.selected = false
|
||||
if controller.isSelected
|
||||
previousController.isSelected = true
|
||||
controller.isSelected = false
|
||||
@_showElement previousController.$el
|
||||
return
|
||||
|
||||
controller = @_elementControllers[@_elementControllers.length - 1]
|
||||
controller.selected = true
|
||||
controller = @_elementControllers[0]
|
||||
controller.isSelected = false
|
||||
|
||||
[..., controller] = @_elementControllers
|
||||
controller.isSelected = true
|
||||
@_showElement controller.$el
|
||||
|
||||
_showElement: ($el)->
|
||||
|
||||
@@ -5,20 +5,21 @@
|
||||
# All rights reserved.
|
||||
#
|
||||
|
||||
BaseController = require '../../base_controller'
|
||||
CraftingGridController = require '../crafting_grid/crafting_grid_controller'
|
||||
SlotController = require '../slot/slot_controller'
|
||||
{StringBuilder} = require('crafting-guide-common').util
|
||||
BaseController = require "../../base_controller"
|
||||
CraftingGridController = require "../crafting_grid/crafting_grid_controller"
|
||||
ItemDisplay = require "../../../models/site/item_display"
|
||||
SlotController = require "../slot/slot_controller"
|
||||
{StringBuilder} = require("crafting-guide-common").util
|
||||
|
||||
########################################################################################################################
|
||||
|
||||
module.exports = class RecipeController extends BaseController
|
||||
|
||||
constructor: (options={})->
|
||||
if not options.imageLoader? then throw new Error 'options.imageLoader is required'
|
||||
if not options.modPack? then throw new Error 'options.modPack is required'
|
||||
if not options.router? then throw new Error 'options.router is required'
|
||||
options.templateName = 'common/recipe'
|
||||
if not options.imageLoader? then throw new Error "options.imageLoader is required"
|
||||
if not options.modPack? then throw new Error "options.modPack is required"
|
||||
if not options.router? then throw new Error "options.router is required"
|
||||
options.templateName = "common/recipe"
|
||||
super options
|
||||
|
||||
@_imageLoader = options.imageLoader
|
||||
@@ -29,26 +30,26 @@ module.exports = class RecipeController extends BaseController
|
||||
# BaseController Overrides #####################################################################
|
||||
|
||||
onDidRender: ->
|
||||
@_gridController = @addChild CraftingGridController, '.view__crafting_grid',
|
||||
@_gridController = @addChild CraftingGridController, ".view__crafting_grid",
|
||||
modPack: @_modPack
|
||||
imageLoader: @_imageLoader
|
||||
router: @_router
|
||||
|
||||
@_outputSlotController = @addChild SlotController, '.output .view__slot',
|
||||
@_outputSlotController = @addChild SlotController, ".output .view__slot",
|
||||
imageLoader: @_imageLoader
|
||||
modPack: @_modPack
|
||||
router: @_router
|
||||
|
||||
@$multiplier = @$('.multiplier')
|
||||
@$outputImg = @$('.output img')
|
||||
@$outputLink = @$('.output a')
|
||||
@$outputQuantity = @$('.quantity')
|
||||
@$toolContainer = @$('.tool')
|
||||
@$multiplier = @$(".multiplier")
|
||||
@$outputImg = @$(".output img")
|
||||
@$outputLink = @$(".output a")
|
||||
@$outputQuantity = @$(".quantity")
|
||||
@$toolContainer = @$(".tool")
|
||||
super
|
||||
|
||||
refresh: ->
|
||||
@_gridController.model = @model
|
||||
@_outputSlotController.model = @model?.output?[0]
|
||||
@_outputSlotController.model = @model?.output
|
||||
|
||||
@_refreshMultiplier()
|
||||
@_refreshTools()
|
||||
@@ -69,14 +70,14 @@ module.exports = class RecipeController extends BaseController
|
||||
@_multiplier = newMultiplier
|
||||
@_refreshMultiplier()
|
||||
|
||||
@trigger Event.change + ':multiplier', this, oldMultiplier, newMultiplier
|
||||
@trigger Event.change + ":multiplier", this, oldMultiplier, newMultiplier
|
||||
@trigger Event.change, this
|
||||
|
||||
# Backbone.View Methods ########################################################################
|
||||
|
||||
events: ->
|
||||
return _.extend super,
|
||||
'click a': 'routeLinkClick'
|
||||
"click a": "routeLinkClick"
|
||||
|
||||
# Private Methods ##############################################################################
|
||||
|
||||
@@ -84,14 +85,15 @@ module.exports = class RecipeController extends BaseController
|
||||
if @multiplier > 1
|
||||
@$multiplier.html "x#{@multiplier}"
|
||||
else
|
||||
@$multiplier.html ''
|
||||
@$multiplier.html ""
|
||||
|
||||
_refreshTools: ->
|
||||
@$toolContainer.empty()
|
||||
return unless @model?
|
||||
|
||||
builder = new StringBuilder
|
||||
builder.loop @model.tools, delimiter:', ', onEach:(b, stack)=>
|
||||
display = @_modPack.findItemDisplay stack.itemSlug
|
||||
b.push "<a href=\"#{display.itemUrl}\">#{display.itemName}</a>"
|
||||
@$toolContainer.html builder.toString()
|
||||
toolLinks = []
|
||||
for itemId, item of @model.tools
|
||||
display = new ItemDisplay item
|
||||
toolLinks.push "<a href=\"#{display.url}\">#{display.name}</a>"
|
||||
|
||||
@$toolContainer.html toolLinks.join ", "
|
||||
|
||||
@@ -5,18 +5,19 @@
|
||||
# All rights reserved.
|
||||
#
|
||||
|
||||
BaseController = require '../../base_controller'
|
||||
BaseController = require "../../base_controller"
|
||||
ItemDisplay = require "../../../models/site/item_display"
|
||||
{Stack} = require("crafting-guide-common").models
|
||||
|
||||
########################################################################################################################
|
||||
|
||||
module.exports = class SlotController extends BaseController
|
||||
|
||||
constructor: (options={})->
|
||||
if not options.imageLoader? then throw new Error 'options.imageLoader is required'
|
||||
if not options.modPack? then throw new Error 'options.modPack is required'
|
||||
if not options.router? then throw new Error 'options.router is required'
|
||||
# options.model should be a Stack
|
||||
options.templateName = 'common/slot'
|
||||
if not options.imageLoader? then throw new Error "options.imageLoader is required"
|
||||
if not options.modPack? then throw new Error "options.modPack is required"
|
||||
if not options.router? then throw new Error "options.router is required"
|
||||
options.templateName = "common/slot"
|
||||
options.useAnimations = false
|
||||
super options
|
||||
|
||||
@@ -27,27 +28,31 @@ module.exports = class SlotController extends BaseController
|
||||
# BaseController Overrides #####################################################################
|
||||
|
||||
onDidRender: ->
|
||||
@$link = @$('a')
|
||||
@$image = @$('img')
|
||||
@$quantity = @$('.quantity')
|
||||
@$link = @$("a")
|
||||
@$image = @$("img")
|
||||
@$quantity = @$(".quantity")
|
||||
super
|
||||
|
||||
onWillChangeModel: (oldModel, newModel)->
|
||||
if newModel? and (newModel.constructor isnt Stack) then throw new Error "newModel must be a Stack"
|
||||
super
|
||||
|
||||
refresh: ->
|
||||
if @model?
|
||||
display = @_modPack.findItemDisplay @model.itemSlug
|
||||
@$link.attr 'href', display.itemUrl
|
||||
display = new ItemDisplay @model.item
|
||||
@$link.attr "href", display.url
|
||||
|
||||
@_imageLoader.load display.iconUrl, @$image
|
||||
|
||||
if @model.quantity > 1
|
||||
@$quantity.html @model.quantity
|
||||
else
|
||||
@$quantity.html ''
|
||||
@$quantity.html ""
|
||||
else
|
||||
@$link.removeAttr 'href'
|
||||
@$quantity.html ''
|
||||
@$link.removeAttr "href"
|
||||
@$quantity.html ""
|
||||
|
||||
@$image.attr 'src', '/images/empty.png'
|
||||
@$image.attr "src", "/images/empty.png"
|
||||
|
||||
super
|
||||
|
||||
@@ -55,4 +60,4 @@ module.exports = class SlotController extends BaseController
|
||||
|
||||
events: ->
|
||||
return _.extend super,
|
||||
'click a': 'routeLinkClick'
|
||||
"click a": "routeLinkClick"
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#
|
||||
|
||||
BaseController = require '../../base_controller'
|
||||
ItemDisplay = require "../../../models/site/item_display"
|
||||
|
||||
########################################################################################################################
|
||||
|
||||
@@ -38,8 +39,6 @@ module.exports = class StackController extends BaseController
|
||||
@_shouldEnableButton = options.shouldEnableButton ?= (model, button)-> true
|
||||
@_trackingContext = options.trackingContext ?= null
|
||||
|
||||
@_modPack.on c.event.change, => @tryRefresh()
|
||||
|
||||
# Event Methods ################################################################################
|
||||
|
||||
onFirstButtonClicked: (event)->
|
||||
@@ -71,7 +70,7 @@ module.exports = class StackController extends BaseController
|
||||
@trigger c.event.change + ':quantity', this, oldQuantity, newQuantity
|
||||
@trigger c.event.change, this
|
||||
|
||||
tracker.trackEvent @_trackingContext, 'update-quantity', @model.itemSlug, @model.quantity
|
||||
tracker.trackEvent @_trackingContext, 'update-quantity', @model.item.id, @model.quantity
|
||||
|
||||
onQuantityFieldChanged: ->
|
||||
return unless @_editable
|
||||
@@ -119,10 +118,10 @@ module.exports = class StackController extends BaseController
|
||||
refresh: ->
|
||||
if not @model? then throw new Error "must have a model to render"
|
||||
|
||||
display = @_modPack.findItemDisplay @model.itemSlug
|
||||
display = new ItemDisplay @model.item
|
||||
|
||||
@_imageLoader.load display.iconUrl, @$image
|
||||
@$nameLink.html display.itemName
|
||||
@$nameLink.html display.name
|
||||
@$nameLink.attr 'href', display.itemUrl
|
||||
|
||||
quantityText = if @model.quantity > 10000 then "#{@model.quantity / 1000}k" else "#{@model.quantity}"
|
||||
|
||||
Reference in New Issue
Block a user