Add nascent version of the mod detail page

* Create a nascent version of the mod detail page
* Make the slug mandatory for Mod instead of name, and load the name
  from the data file
* Make the Feedback view universal on all pages
* Refactor the use of mod pack to have a single global object at the
  router level which is shared between pages. Further, make this one
  object load itself immediately and have it automatically load any
  activated mod version
* Refactor the use of Storage related to mod pack versions into the
  router as well.
* Add trace logging back in for events, but allow individual classes
  to suppress it (as opposed to actually supressing the events)
* Fix a bug in ModVersion.eachItem where it would suggest so-called
  items which are merely registered slugs without associated items
This commit is contained in:
Andrew Miner
2015-01-20 10:55:38 -08:00
parent d33723b3c2
commit 164c0d4892
25 changed files with 151 additions and 26 deletions
+31 -1
View File
@@ -5,10 +5,15 @@ Copyright (c) 2014-2015 by Redwood Labs
All rights reserved.
###
{DefaultMods} = require './constants'
{Duration} = require './constants'
{Event} = require './constants'
ItemPageController = require './controllers/item_page_controller'
Mod = require './models/mod'
ModPack = require './models/mod_pack'
ModPageController = require './controllers/mod_page_controller'
{Opacity} = require './constants'
Storage = require './models/storage'
UrlParams = require './url_params'
########################################################################################################################
@@ -21,6 +26,24 @@ module.exports = class CraftingGuideRouter extends Backbone.Router
@_lastReported = null
super options
@modPack = new ModPack
@storage = new Storage storage:window.localStorage
@_defaultOptions = modPack:@modPack, storage:@storage
# Public Methods ###############################################################################
loadDefaultModPack: ->
makeResponder = (m)-> return ->
m.activeModVersion.fetch() if m.activeModVersion?
for slug in DefaultMods
mod = new Mod slug:slug
mod.on Event.change + ':activeModVersion', makeResponder mod
@storage.register "mod:#{mod.slug}", mod, 'activeVersion'
mod.fetch()
@modPack.addMod mod
# Backbone.Router Overrides ####################################################################
navigate: ->
@@ -30,6 +53,7 @@ module.exports = class CraftingGuideRouter extends Backbone.Router
routes:
'': 'root'
'item(/:name)': 'item'
'mod/:slug': 'mod'
# Route Methods ################################################################################
@@ -38,10 +62,16 @@ module.exports = class CraftingGuideRouter extends Backbone.Router
@item params.recipeName, params.count
item: (name, quantity=1)->
@_pageControllers.item ?= new ItemPageController
@_pageControllers.item ?= new ItemPageController @_defaultOptions
@_pageControllers.item.model.params = name:name, quantity:quantity
@_setPage 'item'
mod: (slug)->
@_pageControllers.mod ?= new ModPageController @_defaultOptions
logger.debug "setting up mod page wiht mod: #{@modPack.getMod slug} for slug: #{slug}"
@_pageControllers.mod.model = @modPack.getMod slug
@_setPage 'mod'
# Private Methods ##############################################################################
_recordPageView: ->