Files
website/src/coffee/controllers/browse_page_controller.coffee
T

62 lines
1.8 KiB
CoffeeScript

###
Crafting Guide - browse_page_controller.coffee
Copyright (c) 2015 by Redwood Labs
All rights reserved.
###
AdsenseController = require './adsense_controller'
ModController = require './mod_controller'
PageController = require './page_controller'
{Duration} = require '../constants'
{Event} = require '../constants'
########################################################################################################################
module.exports = class BrowsePageController extends PageController
constructor: (options={})->
if not options.modPack? then throw new Error 'options.modPack is required'
options.templateName = 'browse_page'
super options
@modPack = options.modPack
@modPack.on Event.change, => @tryRefresh()
# PageController Overrides #####################################################################
getTitle: ->
return 'Browse'
# BaseController Overrides #####################################################################
onDidRender: ->
@adsenseController = @addChild AdsenseController, '.view__adsense'
@$modContainer = @$('.mods')
super
refresh: ->
@adsenseController.fillAdPositions()
@_controllers ?= []
controllerIndex = 0
@modPack.eachMod (mod)=>
return unless mod.enabled
controller = @_controllers[controllerIndex]
if not controller?
controller = new ModController model:mod
@_controllers.push controller
controller.render()
@$modContainer.append controller.$el
else
controller.model = mod
controllerIndex += 1
while @_controllers.length > controllerIndex
@_controllers.pop().remove()
super