Fix inventory remove button to appear again $92

This commit is contained in:
Andrew Miner
2015-02-12 15:13:05 -08:00
parent 151c18126a
commit 7a33181d1b
3 changed files with 50 additions and 40 deletions
+9 -9
View File
@@ -48,17 +48,17 @@ All rights reserved.
td.action { td.action {
text-align: right; text-align: right;
}
button.remove { button.remove {
opacity: 0; opacity: 0;
position: relative; width: 1.8em; height: 1.8em; position: relative; width: 1.8em; height: 1.8em;
background: url('/images/remove.png') no-repeat center; background: url('/images/remove.png') no-repeat center;
border: 0; border: 0;
outline: none; outline: none;
&:hover { &:hover {
background: url('/images/remove-hover.png') no-repeat center; background: url('/images/remove-hover.png') no-repeat center;
}
} }
} }
@@ -72,7 +72,7 @@ module.exports = class InventoryController extends BaseController
onNameFieldChanged: -> onNameFieldChanged: ->
item = @modPack.findItemByName @$nameField.val() item = @modPack.findItemByName @$nameField.val()
@_updateButtonState() @_refreshButtonState()
onNameFieldFocused: -> onNameFieldFocused: ->
@$nameField.val '' @$nameField.val ''
@@ -99,7 +99,7 @@ module.exports = class InventoryController extends BaseController
@$quantityField.removeClass 'error', Duration.normal @$quantityField.removeClass 'error', Duration.normal
@$quantityField.removeClass 'error-new', Duration.normal @$quantityField.removeClass 'error-new', Duration.normal
@_updateButtonState() @_refreshButtonState()
onQuantityFieldFocused: -> onQuantityFieldFocused: ->
@$quantityField.val '' @$quantityField.val ''
@@ -129,24 +129,9 @@ module.exports = class InventoryController extends BaseController
if _.isEmpty(@$quantityField.val()) then @$quantityField.val '1' if _.isEmpty(@$quantityField.val()) then @$quantityField.val '1'
@$table.find('tr:not(:last-child)').remove() @_refreshStacks()
$lastRow = @$table.find 'tr:last-child' @_refreshNameAutocomplete()
@_stackControllers = [] @_refreshButtonState()
@model.each (stack)=>
options =
editable: @editable
imageLoader: @imageLoader
model: stack
modPack: @modPack
onRemove: if not @editable then null else (stack)=> @_removeStack(stack)
controller = new StackController options
controller.render()
controller.$el.insertBefore $lastRow
@_stackControllers.push controller
@_updateNameAutocomplete()
@_updateButtonState()
super super
@@ -166,10 +151,15 @@ module.exports = class InventoryController extends BaseController
# Private Methods ############################################################################## # Private Methods ##############################################################################
_removeStack: (stack)-> _refreshButtonState: ->
@model.remove stack.slug, stack.quantity if @model.isEmpty then @$clearButton.attr('disabled', 'disabled') else @$clearButton.removeAttr('disabled')
_updateNameAutocomplete: -> itemValid = @modPack.findItemByName(@$nameField.val())?
quantityValid = @$quantityField.val().match(InventoryController.ONLY_DIGITS)
disable = not (itemValid and quantityValid)
if disable then @$addButton.attr('disabled', 'disabled') else @$addButton.removeAttr('disabled')
_refreshNameAutocomplete: ->
onChanged = => @onNameFieldChanged() onChanged = => @onNameFieldChanged()
onSelected = => @onItemSelected() onSelected = => @onItemSelected()
@@ -181,10 +171,30 @@ module.exports = class InventoryController extends BaseController
close: onChanged close: onChanged
select: onSelected select: onSelected
_updateButtonState: -> _refreshStacks: ->
if @model.isEmpty then @$clearButton.attr('disabled', 'disabled') else @$clearButton.removeAttr('disabled') @_stackControllers ?= []
index = 0
itemValid = @modPack.findItemByName(@$nameField.val())? $lastRow = @$table.find 'tr:last-child'
quantityValid = @$quantityField.val().match(InventoryController.ONLY_DIGITS) @model.each (stack)=>
disable = not (itemValid and quantityValid) controller = @_stackControllers[index]
if disable then @$addButton.attr('disabled', 'disabled') else @$addButton.removeAttr('disabled') if not controller?
controller = new StackController
editable: @editable
imageLoader: @imageLoader
model: stack
modPack: @modPack
onRemove: if not @editable then null else (stack)=> @_removeStack(stack)
controller.render()
controller.$el.insertBefore $lastRow
@_stackControllers.push controller
else
controller.model = stack
index += 1
while @_stackControllers.length > index
controller = @_stackControllers.pop()
controller.$el.fadeOut duration:Duration.fast, complete:-> @remove()
_removeStack: (stack)->
@model.remove stack.slug, stack.quantity
@@ -49,9 +49,9 @@ module.exports = class StackController extends BaseController
@$nameLink.html display.itemName @$nameLink.html display.itemName
@$nameLink.attr 'href', display.itemUrl @$nameLink.attr 'href', display.itemUrl
@$quantityField.html @model.quantity @$quantityField.html @model.quantity
@$removeButton.css display:(if @editable then 'inherit' else 'none') # @$removeButton.css opacity:(if @editable then 1 else 0)
@$action.css display:(if @ediable then 'table-cell' else 'none') @$action.css display:(if @editable then 'table-cell' else 'none')
super super