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'
{Duration} = require '../constants'
Mod = require '../models/mod'
ModSelectorController = require './mod_selector_controller'
{Duration} = require '../constants'
########################################################################################################################
@@ -19,8 +18,7 @@ module.exports = class ModPackController extends BaseController
options.templateName = 'mod_pack'
super options
@_controllers = []
@storage = options.storage
@storage = options.storage
# Event Methods ################################################################################
@@ -31,42 +29,17 @@ module.exports = class ModPackController extends BaseController
# BaseController Overrides #####################################################################
onDidRender: ->
@$mods = @$('.mods')
@$mods = @$('.mods')
@$toolbar = @$('.toolbar')
super
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?
@$toolbar.show duration:0
else
@$toolbar.hide duration:0
@_refreshMods()
super
# Backbone.View Overrides ######################################################################
@@ -74,3 +47,26 @@ module.exports = class ModPackController extends BaseController
events: ->
return _.extend super,
'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
return -1 if thisRequired
return +1 if thatRequired
else
if this.name isnt that.name
return if this.name < that.name then -1 else +1
else if this.slug isnt that.slug
return if this.slug < that.slug then -1 else +1
return 0
+2 -1
View File
@@ -106,6 +106,7 @@ module.exports = class ModPack extends BaseModel
@trigger Event.add + ':mod', mod, this
@_mods.sort (a, b)-> a.compareTo b
logger.debug "mods: #{(m.slug for m in @_mods)}"
@trigger Event.sort + ':mod', this
@trigger Event.change, this
@@ -120,7 +121,7 @@ module.exports = class ModPack extends BaseModel
return mod if mod.slug is slug
return null
getMods: ->
getAllMods: ->
return @_mods[..]
# Object Overrides #############################################################################