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