This commit is contained in:
Andrew Miner
2017-06-15 22:39:17 -07:00
parent 3bc7c4cf89
commit 8b43c53a9e
16 changed files with 267 additions and 325 deletions
@@ -5,39 +5,37 @@
# All rights reserved.
#
BaseController = require '../../../base_controller'
BaseController = require "../../../base_controller"
ItemDisplay = require "../../../../models/site/item_display"
########################################################################################################################
module.exports = class ItemTileController extends BaseController
constructor: (options={})->
if not options.imageLoader? then throw new Error 'options.imageLoader is required'
if not options.model? then throw new Error 'options.model is required'
if not options.modPack? then throw new Error 'options.modPack is required'
options.templateName = 'common/item_group/item_tile'
if not options.imageLoader? then throw new Error "options.imageLoader is required"
if not options.model? then throw new Error "options.model is required"
options.templateName = "common/item_group/item_tile"
super options
@_imageLoader = options.imageLoader
@_modPack = options.modPack
@_display = new ItemDisplay @model
# BaseController Overrides #####################################################################
onDidRender: ->
@$icon = @$('img')
@$name = @$('.itemName')
@$nameLink = @$('a')
@$icon = @$("img")
@$name = @$(".itemName")
@$nameLink = @$("a")
super
refresh: ->
display = @_modPack.findItemDisplay @model.slug
@_imageLoader.load display.iconUrl, @$icon
@$name.html display.itemName
@$nameLink.attr 'href', display.itemUrl
@_imageLoader.load @_display.iconUrl, @$icon
@$name.html @_display.name
@$nameLink.attr "href", @_display.url
# Backbone.View Overrides ######################################################################
events: ->
return _.extend super,
'click a': 'routeLinkClick'
"click a": "routeLinkClick"
@@ -2,8 +2,5 @@
.toggle
span.checkbox
span.label I have this mod in my modpack
.version
span Version:
select
.warning.
<b>PLEASE NOTE:</b> Crafting plans, search, and other features will ignore items and recipes from this mod.
@@ -5,97 +5,59 @@
# All rights reserved.
#
BaseController = require '../../base_controller'
{Mod} = require('crafting-guide-common').deprecated.game
BaseController = require "../../base_controller"
{Mod} = require("crafting-guide-common").models
########################################################################################################################
module.exports = class ModVersionSelectorController extends BaseController
constructor: (options={})->
if not options.model? then throw new Error 'options.model is required'
options.templateName = 'common/mod_version_selector'
if options.model?.constructor isnt Mod then throw new Error "options.model must be a Mod"
options.templateName = "common/mod_version_selector"
super options
# Event Methods ################################################################################
onToggleEnabled: ->
if @model.activeVersion is Mod.Version.None
tracker.trackEvent c.tracking.category.modPack, 'toggle-on', @model.slug
@model.activeVersion = Mod.Version.Latest
if not @model.isEnabled
tracker.trackEvent c.tracking.category.modPack, "toggle-on", @model.id
@model.isEnabled = true
else
tracker.trackEvent c.tracking.category.modPack, 'toggle-off', @model.slug
@model.activeVersion = Mod.Version.None
tracker.trackEvent c.tracking.category.modPack, "toggle-off", @model.id
@model.isEnabled = false
return false
onVersionChanged: ->
@model.activeVersion = @$versionSelector.val()
tracker.trackEvent c.tracking.category.modPack, 'select-version', "#{@model.slug}@#{@model.activeVersion}"
return false
# Property Methods #############################################################################
Object.defineProperties @prototype,
effectiveModVersion:
get: ->
modVersion = @model.activeModVersion
modVersion ?= @model.getModVersion Mod.Version.Latest
modVersion.fetch() if modVersion?
return modVersion
# BaseController Overrides #####################################################################
onDidRender: ->
@$toggleSection = @$('.toggle')
@$versionSection = @$('.version')
@$versionSelector = @$('.version select')
@$warning = @$('.warning')
@$toggleSection = @$(".toggle")
@$warning = @$(".warning")
super
refresh: ->
console.log "refreshing"
@_refreshEnabled()
@_refreshVersionSelector()
super
# Backbone.View Overrides ######################################################################
events: ->
return _.extend super,
'change .version select': 'onVersionChanged'
'click .toggle': 'onToggleEnabled'
"click .toggle": "onToggleEnabled"
# Private Methods ##############################################################################
_refreshEnabled: ->
if @model.slug in c.requiredMods
if @model.id in c.requiredMods
@hide @$toggleSection
else
@show @$toggleSection
if @model.activeVersion is Mod.Version.None
@$toggleSection.removeClass 'enabled'
if not @model.isEnabled
@$toggleSection.removeClass "enabled"
@show @$warning
else
@$toggleSection.addClass 'enabled'
@$toggleSection.addClass "enabled"
@hide @$warning
_refreshVersionSelector: ->
modVersions = @model.modVersions
if (@model.activeVersion is Mod.Version.None) or modVersions.length < 2
@hide @$versionSection
else
@show @$versionSection
selectedModVersion = @effectiveModVersion
@$versionSelector.empty()
for modVersion in @model.modVersions
$option = $("<option value=\"#{modVersion.version}\">#{modVersion.version}</option>")
if modVersion is selectedModVersion
$option.attr 'selected', 'true'
@$versionSelector.append $option
@$versionSelector.css display:''