Fix sort order problem for mods

This commit is contained in:
Andrew Miner
2015-03-20 19:51:55 -07:00
parent 14cee92883
commit b18e2e8c08
3 changed files with 31 additions and 35 deletions
@@ -6,9 +6,8 @@ All rights reserved.
### ###
BaseController = require './base_controller' BaseController = require './base_controller'
{Duration} = require '../constants'
Mod = require '../models/mod'
ModSelectorController = require './mod_selector_controller' ModSelectorController = require './mod_selector_controller'
{Duration} = require '../constants'
######################################################################################################################## ########################################################################################################################
@@ -19,8 +18,7 @@ module.exports = class ModPackController extends BaseController
options.templateName = 'mod_pack' options.templateName = 'mod_pack'
super options super options
@_controllers = [] @storage = options.storage
@storage = options.storage
# Event Methods ################################################################################ # Event Methods ################################################################################
@@ -31,42 +29,17 @@ module.exports = class ModPackController extends BaseController
# BaseController Overrides ##################################################################### # BaseController Overrides #####################################################################
onDidRender: -> onDidRender: ->
@$mods = @$('.mods') @$mods = @$('.mods')
@$toolbar = @$('.toolbar') @$toolbar = @$('.toolbar')
super super
refresh: -> refresh: ->
if not @model?
@_controllers = []
@$('table tr').remove()
return
index = 0
mods = @model.getMods()
while index < Math.min @_controllers.length, mods.length
controller = @_controllers[index]
controller.model = mods[index]
index++
while @_controllers.length < mods.length
controller = new ModSelectorController model:mods[index], storage:@storage
controller.render()
@_controllers.push controller
controller.$el.hide duration:0
@$mods.append controller.$el
controller.$el.slideDown duration:Duration.normal
index++
while @_controllers.length > mods.length
controller = @_controllers.pop()
controller.$el.slideUp duration:Duration.normal, complete:-> controller.$el.remove()
if global.feedbackController? if global.feedbackController?
@$toolbar.show duration:0 @$toolbar.show duration:0
else else
@$toolbar.hide duration:0 @$toolbar.hide duration:0
@_refreshMods()
super super
# Backbone.View Overrides ###################################################################### # Backbone.View Overrides ######################################################################
@@ -74,3 +47,26 @@ module.exports = class ModPackController extends BaseController
events: -> events: ->
return _.extend super, return _.extend super,
'click button[name="suggestMod"]': 'onSuggestModClicked' 'click button[name="suggestMod"]': 'onSuggestModClicked'
# Private Methods ##############################################################################
_refreshMods: ->
@_modControllers ?= []
index = 0
if @model?
@model.eachMod (mod)=>
controller = @_modControllers[index]
if not controller?
controller = new ModSelectorController model:mod, storage:@storage
controller.render()
@$mods.append controller.$el
@_modControllers.push controller
else
controller.model = mod
index += 1
while @_modControllers.length > index
controller = @_modControllers.pop()
controller.$el.fadeOut duration:Duration.normal, complete:-> @remove()
+2 -3
View File
@@ -52,9 +52,8 @@ module.exports = class Mod extends BaseModel
if thisRequired isnt thatRequired if thisRequired isnt thatRequired
return -1 if thisRequired return -1 if thisRequired
return +1 if thatRequired return +1 if thatRequired
else else if this.slug isnt that.slug
if this.name isnt that.name return if this.slug < that.slug then -1 else +1
return if this.name < that.name then -1 else +1
return 0 return 0
+2 -1
View File
@@ -106,6 +106,7 @@ module.exports = class ModPack extends BaseModel
@trigger Event.add + ':mod', mod, this @trigger Event.add + ':mod', mod, this
@_mods.sort (a, b)-> a.compareTo b @_mods.sort (a, b)-> a.compareTo b
logger.debug "mods: #{(m.slug for m in @_mods)}"
@trigger Event.sort + ':mod', this @trigger Event.sort + ':mod', this
@trigger Event.change, this @trigger Event.change, this
@@ -120,7 +121,7 @@ module.exports = class ModPack extends BaseModel
return mod if mod.slug is slug return mod if mod.slug is slug
return null return null
getMods: -> getAllMods: ->
return @_mods[..] return @_mods[..]
# Object Overrides ############################################################################# # Object Overrides #############################################################################