Make the mod version selector more clear

This change the single select box into a checkbox which toggles the
mod on/off.  If the mod is "on" and it has multiple versions, then
a selection list will be shown with the various possible versions.
If there is only a single available version, then the selector is
not shown.
This commit is contained in:
Andrew Miner
2016-04-26 21:40:52 -07:00
parent 6787063ac7
commit 1d1772e961
3 changed files with 73 additions and 12 deletions
+4 -1
View File
@@ -17,8 +17,11 @@
.title .title
.author .author
.description .description
.modpack
span.checkbox
span.label I have this mod in my modpack
.version .version
span in my mod pack span I'm using version:
select select
.warning. .warning.
<b>PLEASE NOTE:</b> By selecting "no", crafting plans, search, and other features will ignore items <b>PLEASE NOTE:</b> By selecting "no", crafting plans, search, and other features will ignore items
+38 -2
View File
@@ -49,8 +49,44 @@
line-height: $font-size-medium * 1.25; line-height: $font-size-medium * 1.25;
} }
.modpack {
margin-top : $size-margin-large;
cursor : pointer;
font-family : $font-family-control;
font-size : $font-size-medium;
display : flex;
.checkbox {
display : inline-block;
height : $font-size-medium;
margin-right : $size-margin-small;
position : relative;
width : $font-size-medium;
background : $color-white;
border : $size-border-small solid $color-black;
}
.label {
color: $color-gray-medium;
}
&.enabled {
.checkbox:before {
position: absolute; top: 0; left: 1.5px; // adjust for glyph position
content: "";
}
.label {
color: $color-black;
}
}
}
.version { .version {
margin-top: $size-margin-large; margin-top: $size-margin-medium;
font-family: $font-family-control; font-family: $font-family-control;
font-size: $font-size-medium; font-size: $font-size-medium;
@@ -91,4 +127,4 @@
@include layout-link-list; @include layout-link-list;
} }
} }
} }
@@ -29,6 +29,14 @@ module.exports = class ModPageController extends BaseController
# Event Methods ################################################################################ # Event Methods ################################################################################
onToggleEnabled: ->
if @model.activeVersion is Mod.Version.None
@model.activeVersion = Mod.Version.Latest
else
@model.activeVersion = Mod.Version.None
return false
onVersionChanged: -> onVersionChanged: ->
@model.activeVersion = @$versionSelector.val() @model.activeVersion = @$versionSelector.val()
return false return false
@@ -67,15 +75,18 @@ module.exports = class ModPageController extends BaseController
@$homePageLink = @$('.about .homePage') @$homePageLink = @$('.about .homePage')
@$itemGroups = @$(".itemGroups") @$itemGroups = @$(".itemGroups")
@$logo = @$('.about img') @$logo = @$('.about img')
@$modpackSection = @$('.modpack')
@$title = @$('.about .title') @$title = @$('.about .title')
@$tutorialsContainer = @$('section.tutorials .panel') @$tutorialsContainer = @$('section.tutorials .panel')
@$tutorialsSection = @$('section.tutorials') @$tutorialsSection = @$('section.tutorials')
@$versionSection = @$('.version')
@$versionSelector = @$('.version select') @$versionSelector = @$('.version select')
@$warning = @$('.warning') @$warning = @$('.warning')
super super
refresh: -> refresh: ->
@_refreshAboutBlock() @_refreshAboutBlock()
@_refreshEnabled()
@_refreshItemGroups() @_refreshItemGroups()
@_refreshTutorials() @_refreshTutorials()
@_refreshVersionSelector() @_refreshVersionSelector()
@@ -86,6 +97,7 @@ module.exports = class ModPageController extends BaseController
events: -> events: ->
return _.extend super, return _.extend super,
'change .version select': 'onVersionChanged' 'change .version select': 'onVersionChanged'
'click .modpack': 'onToggleEnabled'
# Private Methods ############################################################################## # Private Methods ##############################################################################
@@ -107,6 +119,19 @@ module.exports = class ModPageController extends BaseController
@$logo.attr 'src', '' @$logo.attr 'src', ''
@$title.text '' @$title.text ''
_refreshEnabled: ->
if @model.slug in c.requiredMods
@hide @$modpackSection
else
@show @$modpackSection
if @model.activeVersion is Mod.Version.None
@$modpackSection.removeClass 'enabled'
@show @$warning
else
@$modpackSection.addClass 'enabled'
@hide @$warning
_refreshItemGroups: -> _refreshItemGroups: ->
@_groupControllers ?= [] @_groupControllers ?= []
groupIndex = 0 groupIndex = 0
@@ -164,19 +189,16 @@ module.exports = class ModPageController extends BaseController
_refreshVersionSelector: -> _refreshVersionSelector: ->
modVersions = @model.modVersions modVersions = @model.modVersions
if (@model.activeVersion is Mod.Version.None) or modVersions.length < 2
@hide @$versionSection
else
@show @$versionSection
selectedModVersion = @effectiveModVersion selectedModVersion = @effectiveModVersion
@$versionSelector.empty() @$versionSelector.empty()
$option = $("<option value=\"none\">no</option>")
if not @model.enabled
@$warning.css display:''
selectedModVersion = null
$option.attr 'selected', true
else
@$warning.css display:'none'
@$versionSelector.append $option
for modVersion in @model.modVersions for modVersion in @model.modVersions
$option = $("<option value=\"#{modVersion.version}\">#{modVersion.version}</option>") $option = $("<option value=\"#{modVersion.version}\">#{modVersion.version}</option>")
if modVersion is selectedModVersion if modVersion is selectedModVersion