From 7c99f77639e0f6c7211f2ac6939a9285afb05133 Mon Sep 17 00:00:00 2001 From: Andrew Miner Date: Sun, 22 Mar 2015 09:22:41 -0700 Subject: [PATCH] Fix more animation bugs --- src/coffee/controllers/base_controller.coffee | 10 +++++++--- .../controllers/browse_page_controller.coffee | 3 +-- src/coffee/controllers/inventory_controller.coffee | 13 ++++++++++--- .../controllers/inventory_table_controller.coffee | 2 +- src/coffee/controllers/mod_page_controller.coffee | 6 ++---- src/coffee/models/mod_pack.coffee | 12 +++++++++++- src/jade/templates/inventory.jade | 4 ++-- 7 files changed, 34 insertions(+), 16 deletions(-) diff --git a/src/coffee/controllers/base_controller.coffee b/src/coffee/controllers/base_controller.coffee index cfdeebca1..c03db462f 100644 --- a/src/coffee/controllers/base_controller.coffee +++ b/src/coffee/controllers/base_controller.coffee @@ -41,9 +41,11 @@ module.exports = class BaseController extends Backbone.View $el.addClass 'hideable' unless $el.hasClass 'hideable' + logger.verbose => "#{this} is hiding #{$el.selector}" if $el.hasClass('hiding') or $el.hasClass('hidden') _.defer => callback this else + $el.off Event.transitionEnd $el.one Event.transitionEnd, => $el.addClass 'hidden' $el.removeClass 'hiding' @@ -55,7 +57,8 @@ module.exports = class BaseController extends Backbone.View logger.verbose => "#{this} refreshing" remove: -> - @hide -> @$el.remove() + logger.verbose => "#{this} is removing its element from the DOM" + @hide => @$el.remove() routeLinkClick: (event)-> event.preventDefault() @@ -69,9 +72,10 @@ module.exports = class BaseController extends Backbone.View $el.addClass 'hideable' unless $el.hasClass 'hideable' + logger.verbose => "#{this} is showing #{$el.selector}" if $el.hasClass('hiding') or $el.hasClass('hidden') - $el.one Event.transitionEnd, => - callback this + $el.off Event.transitionEnd + $el.one Event.transitionEnd, => callback this $el.removeClass 'hiding' $el.removeClass 'hidden' else diff --git a/src/coffee/controllers/browse_page_controller.coffee b/src/coffee/controllers/browse_page_controller.coffee index 4dcad0620..15e238b2a 100644 --- a/src/coffee/controllers/browse_page_controller.coffee +++ b/src/coffee/controllers/browse_page_controller.coffee @@ -53,7 +53,6 @@ module.exports = class BrowsePageController extends PageController controllerIndex += 1 while @_controllers.length > controllerIndex - controller = @_controllers.pop() - controller.hide -> controller.$el.remove() + @_controllers.pop().remove() super diff --git a/src/coffee/controllers/inventory_controller.coffee b/src/coffee/controllers/inventory_controller.coffee index 6a3e1867d..4c3e5b938 100644 --- a/src/coffee/controllers/inventory_controller.coffee +++ b/src/coffee/controllers/inventory_controller.coffee @@ -103,9 +103,16 @@ module.exports = class InventoryController extends BaseController super refresh: -> - @$editPanel.css display:(if @editable then 'table-row' else 'none') - @$toolbar.css display:(if @editable then 'block' else 'none') - @$scrollbox.css bottom:(if @editable then @$toolbar.height() else '0') + if @editable + @show @$editPanel + @show @$toolbar, => + @$scrollbox.css bottom:@$toolbar.height() + else + if not @$editPanel? then throw new Error "no edit panel" + if not @$toolbar? then throw new Error "no toolbar" + @hide @$editPanel + @hide @$toolbar + @$scrollbox.css bottom:0 @$icon.attr 'src', @icon @$title.html @title diff --git a/src/coffee/controllers/inventory_table_controller.coffee b/src/coffee/controllers/inventory_table_controller.coffee index 16005cdf8..28efe9b40 100644 --- a/src/coffee/controllers/inventory_table_controller.coffee +++ b/src/coffee/controllers/inventory_table_controller.coffee @@ -35,7 +35,7 @@ module.exports = class InventoryTableController extends BaseController @_stackControllers = [] - @listenTo @modPack, 'change', => @refresh() + @listenTo @modPack, 'change', => @tryRefresh() # Event Methods ################################################################################ diff --git a/src/coffee/controllers/mod_page_controller.coffee b/src/coffee/controllers/mod_page_controller.coffee index 924923b45..f036d78a9 100644 --- a/src/coffee/controllers/mod_page_controller.coffee +++ b/src/coffee/controllers/mod_page_controller.coffee @@ -136,8 +136,7 @@ module.exports = class ModPageController extends PageController groupIndex++ while @_groupControllers.length > groupIndex + 1 - controller = @_groupControllers.pop() - controller.hide -> controller.$el.remove() + @_groupControllers.pop().remove() _refreshLink: ($link, url)-> if url? @@ -165,8 +164,7 @@ module.exports = class ModPageController extends PageController index += 1 while @_tutorialControllers.length > index - controller = @_tutorialControllers.pop() - controller.hide -> controller.$el.remove() + @_tutorialControllers.pop().remove() @show @$tutorialsSection else diff --git a/src/coffee/models/mod_pack.coffee b/src/coffee/models/mod_pack.coffee index 2cfdc2c4c..4c0d2120f 100644 --- a/src/coffee/models/mod_pack.coffee +++ b/src/coffee/models/mod_pack.coffee @@ -102,7 +102,7 @@ module.exports = class ModPack extends BaseModel mod.modPack = this @_mods.push mod - @listenTo mod, Event.change, => @trigger Event.change, this + @listenTo mod, Event.change, (modVersion)=> @_onModVersionLoaded modVersion @trigger Event.add + ':mod', mod, this @_mods.sort (a, b)-> a.compareTo b @@ -127,3 +127,13 @@ module.exports = class ModPack extends BaseModel toString: -> return "ModPack (#{@cid}) {modVersions:«#{@_mods.length} items»}" + + # Private Methods ############################################################################## + + _onModVersionLoaded: (modVersion)-> + stillLoading = false + @eachMod (mod)-> + mod.eachModVersion (modVersion)-> + stillLoading = stillLoading or modVersion.isLoading + + @trigger Event.change, this if not stillLoading diff --git a/src/jade/templates/inventory.jade b/src/jade/templates/inventory.jade index 9d5a132bd..60f822a7b 100644 --- a/src/jade/templates/inventory.jade +++ b/src/jade/templates/inventory.jade @@ -12,10 +12,10 @@ .panel .scrollbox table - tr.edit + tr.edit.hideable.hidden td.quantity td.icon td.name(width="*"): input(name="name") td.action: button(name="add") add - .toolbar + .toolbar.hideable.hidden button(name="clear") clear