Add initial version of the Browse page

This commit is contained in:
Andrew Miner
2015-03-01 10:35:37 -08:00
parent b79369980c
commit ef63d6f110
10 changed files with 177 additions and 4 deletions
+14
View File
@@ -0,0 +1,14 @@
/*
Crafting Guide - browse_page.scss
Copyright (C) 2015 by Redwood Labs
All rights reserved.
*/
.view__browse_page {
.view__mod {
margin: 0 1em 1em 0;
width: 37em;
}
}
+2
View File
@@ -5,6 +5,7 @@ Copyright (c) 2014-2015 by Redwood Labs
All rights reserved. All rights reserved.
*/ */
@import 'browse_page';
@import 'crafting_grid'; @import 'crafting_grid';
@import 'craft_page'; @import 'craft_page';
@import 'crafting_table'; @import 'crafting_table';
@@ -16,6 +17,7 @@ All rights reserved.
@import 'item'; @import 'item';
@import 'item_page'; @import 'item_page';
@import 'minimal_recipe'; @import 'minimal_recipe';
@import 'mod';
@import 'mod_pack'; @import 'mod_pack';
@import 'mod_page'; @import 'mod_page';
@import 'mod_selector'; @import 'mod_selector';
+58
View File
@@ -0,0 +1,58 @@
/*
Crafting Guide - mod.scss
Copyright (C) 2015 by Redwood Labs
All rights reserved.
*/
.view__mod {
position: relative; height: 18em;
background: $color-background-panel;
display: inline-block;
padding: 0.2em;
text-decoration: none;
vertical-align: top;
transition:
height $animate-normal,
opacity $animate-normal;
&:hover {
border: 0.2em solid $color-link;
padding: 0;
.name {
color: $color-link;
text-decoration: underline;
}
}
&.empty {
height: 0;
}
&.removing {
height: 0;
opacity: 0;
}
.description {
margin: 1em;
}
a {
color: $color-text;
text-decoration: none;
}
h3 {
font-size: $font-size-normal;
margin-top: 1em;
}
img {
float: left;
margin: 1em;
}
}
+1 -1
View File
@@ -5,7 +5,7 @@ Copyright (c) 2014-2015 by Redwood Labs
All rights reserved. All rights reserved.
*/ */
.view__mod { .view__mod_selector {
position: relative; width: 100%; position: relative; width: 100%;
display: table-row; display: table-row;
+2
View File
@@ -35,6 +35,7 @@ Event.request = 'request' # model
Event.route = 'route' Event.route = 'route'
Event.sort = 'sort' Event.sort = 'sort'
Event.sync = 'sync' # model, response Event.sync = 'sync' # model, response
Event.transitionEnd = 'webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend'
exports.Key = Key = {} exports.Key = Key = {}
Key.Return = 13 Key.Return = 13
@@ -60,6 +61,7 @@ Url.itemIcon = _.template "/data/<%= modSlug %>/<%= modVersion %>/images/<%=
Url.item = _.template "/browse/<%= modSlug %>/<%= itemSlug %>" Url.item = _.template "/browse/<%= modSlug %>/<%= itemSlug %>"
Url.mod = _.template "/browse/<%= modSlug %>" Url.mod = _.template "/browse/<%= modSlug %>"
Url.modData = _.template "/data/<%= modSlug %>/mod.cg" Url.modData = _.template "/data/<%= modSlug %>/mod.cg"
Url.modLogo = _.template "/data/<%= modSlug %>/logo.png"
Url.modVersion = _.template "/data/<%= modSlug %>/<%= modVersion %>/mod-version.cg" Url.modVersion = _.template "/data/<%= modSlug %>/<%= modVersion %>/mod-version.cg"
Url.modLogoImage = _.template "/data/<%= modSlug %>/logo.png" Url.modLogoImage = _.template "/data/<%= modSlug %>/logo.png"
@@ -6,11 +6,48 @@ All rights reserved.
### ###
BaseController = require './base_controller' BaseController = require './base_controller'
{Duration} = require '../constants'
{Event} = require '../constants'
ModController = require './mod_controller'
######################################################################################################################## ########################################################################################################################
module.exports = class BrowsePageController extends BaseController module.exports = class BrowsePageController extends BaseController
constructor: (options={})-> constructor: (options={})->
if not options.modPack? then throw new Error 'options.modPack is required'
options.templateName = 'browse_page' options.templateName = 'browse_page'
super options super options
@modPack = options.modPack
@modPack.on Event.change, => @tryRefresh()
# BaseController Overrides #####################################################################
onDidRender: ->
@$modContainer = @$('.mods')
super
refresh: ->
@_controllers ?= []
controllerIndex = 0
@modPack.eachMod (mod)=>
return unless mod.enabled
controller = @_controllers[controllerIndex]
if not controller?
controller = new ModController model:mod
controller.render()
@$modContainer.append controller.$el
else
controller.model = mod
controllerIndex += 1
while @_controllers.length > controllerIndex
controller = @_controllers.pop()
controller.$el.addClass 'removing'
controller.$el.one Event.transitionEnd -> controller.$el.remove()
super
@@ -0,0 +1,43 @@
###
Crafting Guide - mod_controller.coffee
Copyright (c) 2015 by Redwood Labs
All rights reserved.
###
BaseController = require './base_controller'
{Url} = require '../constants'
########################################################################################################################
module.exports = class ModController extends BaseController
constructor: (options={})->
options.templateName = 'mod'
super options
# BaseController Overrides #####################################################################
onDidRender: ->
@$link = @$('a')
@$logo = @$('.logo')
@$name = @$('.name p')
@$description = @$('.description p')
super
refresh: ->
if @model?
@$el.removeClass 'empty'
@$link.attr 'href', Url.mod modSlug:@model.slug
@$logo.attr 'src', Url.modLogo modSlug:@model.slug
@$name.html @model.name
@$description.html @model.description
else
@$el.addClass 'empty'
# Backbone.View Overrides ######################################################################
events: ->
return _.extend super,
'click a', 'routeLinkClick'
+6 -1
View File
@@ -5,4 +5,9 @@
//- All rights reserved. //- All rights reserved.
//- //-
h1 Browse .view__browse_page
.sidebar
.mainBody
h2: p Active Mods
.mods
+12
View File
@@ -0,0 +1,12 @@
//-
//- Crafting Guide - mod.jade
//-
//- Copyright (c) 2015 by Redwood Labs
//- All rights reserved.
//-
.view__mod
a
img.logo
h3.name: p
.description: p
+2 -2
View File
@@ -1,11 +1,11 @@
//- //-
//- Crafting Guide - mod.jade //- Crafting Guide - mod_selector.jade
//- //-
//- Copyright (c) 2014-2015 by Redwood Labs //- Copyright (c) 2014-2015 by Redwood Labs
//- All rights reserved. //- All rights reserved.
//- //-
.view__mod .view__mod_selector
.version .version
select select
option(value="none") None option(value="none") None