From 7a33181d1bb41860acd9f27c18b5c202786ea39f Mon Sep 17 00:00:00 2001 From: Andrew Miner Date: Thu, 12 Feb 2015 15:13:05 -0800 Subject: [PATCH] Fix inventory remove button to appear again $92 --- src/css/templates/stack.scss | 18 ++--- .../controllers/inventory_controller.coffee | 68 +++++++++++-------- .../controllers/stack_controller.coffee | 4 +- 3 files changed, 50 insertions(+), 40 deletions(-) diff --git a/src/css/templates/stack.scss b/src/css/templates/stack.scss index 2d162c55b..3b3f3d57f 100644 --- a/src/css/templates/stack.scss +++ b/src/css/templates/stack.scss @@ -48,17 +48,17 @@ All rights reserved. td.action { text-align: right; + } - button.remove { - opacity: 0; - position: relative; width: 1.8em; height: 1.8em; - background: url('/images/remove.png') no-repeat center; - border: 0; - outline: none; + button.remove { + opacity: 0; + position: relative; width: 1.8em; height: 1.8em; + background: url('/images/remove.png') no-repeat center; + border: 0; + outline: none; - &:hover { - background: url('/images/remove-hover.png') no-repeat center; - } + &:hover { + background: url('/images/remove-hover.png') no-repeat center; } } diff --git a/src/scripts/controllers/inventory_controller.coffee b/src/scripts/controllers/inventory_controller.coffee index 45fe19e4e..5ba3de30d 100644 --- a/src/scripts/controllers/inventory_controller.coffee +++ b/src/scripts/controllers/inventory_controller.coffee @@ -72,7 +72,7 @@ module.exports = class InventoryController extends BaseController onNameFieldChanged: -> item = @modPack.findItemByName @$nameField.val() - @_updateButtonState() + @_refreshButtonState() onNameFieldFocused: -> @$nameField.val '' @@ -99,7 +99,7 @@ module.exports = class InventoryController extends BaseController @$quantityField.removeClass 'error', Duration.normal @$quantityField.removeClass 'error-new', Duration.normal - @_updateButtonState() + @_refreshButtonState() onQuantityFieldFocused: -> @$quantityField.val '' @@ -129,24 +129,9 @@ module.exports = class InventoryController extends BaseController if _.isEmpty(@$quantityField.val()) then @$quantityField.val '1' - @$table.find('tr:not(:last-child)').remove() - $lastRow = @$table.find 'tr:last-child' - @_stackControllers = [] - @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() + @_refreshStacks() + @_refreshNameAutocomplete() + @_refreshButtonState() super @@ -166,10 +151,15 @@ module.exports = class InventoryController extends BaseController # Private Methods ############################################################################## - _removeStack: (stack)-> - @model.remove stack.slug, stack.quantity + _refreshButtonState: -> + 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() onSelected = => @onItemSelected() @@ -181,10 +171,30 @@ module.exports = class InventoryController extends BaseController close: onChanged select: onSelected - _updateButtonState: -> - if @model.isEmpty then @$clearButton.attr('disabled', 'disabled') else @$clearButton.removeAttr('disabled') + _refreshStacks: -> + @_stackControllers ?= [] + index = 0 - 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') + $lastRow = @$table.find 'tr:last-child' + @model.each (stack)=> + controller = @_stackControllers[index] + 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 diff --git a/src/scripts/controllers/stack_controller.coffee b/src/scripts/controllers/stack_controller.coffee index 5336cfa30..e03f08eed 100644 --- a/src/scripts/controllers/stack_controller.coffee +++ b/src/scripts/controllers/stack_controller.coffee @@ -49,9 +49,9 @@ module.exports = class StackController extends BaseController @$nameLink.html display.itemName @$nameLink.attr 'href', display.itemUrl @$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