Fix sort order problem for mods
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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 #############################################################################
|
||||
|
||||
Reference in New Issue
Block a user