Commit c7cc1b62 authored by morant's avatar morant

Revert "Revert "Fix review comments, and organize code a bit.""

This reverts commit e9cb08d2.
parent e9cb08d2
This diff is collapsed.
This diff is collapsed.
[
{
"title":"Start Dancing",
"thumbnails":[
{
"type":"tip",
"title":"First, select a sprite",
"thumbnailUrl":"/images/microworlds/hiphop/dancer-sprite.png"
},
{
"type":"tip",
"title":"Then, try this script",
"thumbnailUrl":"/images/microworlds/hiphop/switch-wait.gif"
},
{
"type":"tip",
"title":"Start it!",
"thumbnailUrl":"/images/microworlds/hiphop/green-flag.gif"
}
]
},
{
"title":"Repeat the Dance",
"thumbnails":[
{
"type":"tip",
"title":"Add another \"wait\"",
"thumbnailUrl":"/images/microworlds/hiphop/add-wait.gif"
},
{
"type":"tip",
"title":"Drag this block over",
"thumbnailUrl":"/images/microworlds/hiphop/add-repeat.gif"
},
{
"type":"tip",
"title":"Start it",
"thumbnailUrl":"/images/microworlds/hiphop/green-flag.gif"
}
]
}
]
\ No newline at end of file
...@@ -7,16 +7,24 @@ var Thumbnail = require('../thumbnail/thumbnail.jsx'); ...@@ -7,16 +7,24 @@ var Thumbnail = require('../thumbnail/thumbnail.jsx');
require('slick-carousel/slick/slick.scss'); require('slick-carousel/slick/slick.scss');
require('slick-carousel/slick/slick-theme.scss'); require('slick-carousel/slick/slick-theme.scss');
require('./tipsslider.scss'); require('./nestedcarousel.scss');
var TipsSlider = React.createClass({
type: 'TipsSlider', {/*
NestedCarousel is used to show a carousel, where each slide is composed of a few
thumbnails (for example, to show step-by-syep tips, where each stage has a few steps).
It creates the thumbnails without links.
Each slide has a title, and then a list of thumbnails, that will be shown together.
*/}
var NestedCarousel = React.createClass({
type: 'NestedCarousel',
propTypes: { propTypes: {
items: React.PropTypes.array items: React.PropTypes.array
}, },
getDefaultProps: function () { getDefaultProps: function () {
return { return {
items: require('./tipsslider.json'), items: require('./nestedcarousel.json')
}; };
}, },
render: function () { render: function () {
...@@ -33,32 +41,35 @@ var TipsSlider = React.createClass({ ...@@ -33,32 +41,35 @@ var TipsSlider = React.createClass({
var arrows = this.props.items.length > settings.slidesToShow; var arrows = this.props.items.length > settings.slidesToShow;
var classes = classNames( var classes = classNames(
'tipsslider', 'nestedcarousel',
'carousel',
this.props.className this.props.className
); );
var stages = []; var stages = [];
for (var i=0; i < this.props.items.length; i++) { for (var i=0; i < this.props.items.length; i++) {
var items = this.props.items[i].tips; var items = this.props.items[i].thumbnails;
var thumbnails = []; var thumbnails = [];
for (var j=0; j < items.length; j++) { for (var j=0; j < items.length; j++) {
var item = items[j]; var item = items[j];
thumbnails.push(<Thumbnail key={item.id} thumbnails.push(
<Thumbnail key={'inner_' + i + '_' + j}
title={item.title} title={item.title}
src={item.thumbnailUrl} />) src={item.thumbnailUrl}
linkTitle = {false} />);
} }
stages.push( stages.push(
<div className="testing" key={"stage_" + i}> <div key={'outer_' + i}>
<h3>{this.props.items[i].title}</h3> <h3>{this.props.items[i].title}</h3>
{thumbnails} {thumbnails}
</div>) </div>);
} }
return ( return (
<Slider className={classes} arrows={arrows} {... settings}> <Slider className={classes} arrows={arrows} {... settings}>
{stages} {stages}
</Slider> </Slider>
); );
} }
}); });
module.exports = TipsSlider; module.exports = NestedCarousel;
@import "../../colors";
@import "../carousel/carousel.scss";
.nestedcarousel {
.slick-slide {
padding-left: 60px;
}
}
...@@ -15,7 +15,8 @@ var Thumbnail = React.createClass({ ...@@ -15,7 +15,8 @@ var Thumbnail = React.createClass({
src: '', src: '',
type: 'project', type: 'project',
showLoves: false, showLoves: false,
showRemixes: false showRemixes: false,
linkTitle: true
}; };
}, },
render: function () { render: function () {
...@@ -54,13 +55,20 @@ var Thumbnail = React.createClass({ ...@@ -54,13 +55,20 @@ var Thumbnail = React.createClass({
</div> </div>
); );
} }
var titleElement;
if (this.props.linkTitle) {
titleElement = <a href={this.props.href}>{this.props.title}</a>;
} else {
titleElement = this.props.title;
}
return ( return (
<div className={classes} > <div className={classes} >
<a className="thumbnail-image" href={this.props.href}> <a className="thumbnail-image" href={this.props.href}>
<img src={this.props.src} /> <img src={this.props.src} />
</a> </a>
<div className="thumbnail-title"> <div className="thumbnail-title">
<a href={this.props.href}>{this.props.title}</a> {titleElement}
</div> </div>
{extra} {extra}
</div> </div>
......
[
{
"id": 1,
"type": "project",
"title": "Project1",
"thumbnailUrl": "/images/microworlds/hiphop/add-repeat.gif",
"creator": "",
"href": "/images/microworlds/hiphop/add-repeat.gif"
},
{
"id": 2,
"type": "project",
"title": "Project2",
"thumbnailUrl": "/images/microworlds/hiphop/add-wait.gif",
"creator": "",
"href": "/images/microworlds/hiphop/add-wait.gif"
},
{
"id": 3,
"type": "project",
"title": "Project",
"thumbnailUrl": "",
"creator": "",
"href": "#"
},
{
"id": 4,
"type": "project",
"title": "Project",
"thumbnailUrl": "",
"creator": "",
"href": "#"
},
{
"id": 5,
"type": "project",
"title": "Project",
"thumbnailUrl": "",
"creator": "",
"href": "#"
},
{
"id": 6,
"type": "project",
"title": "Project",
"thumbnailUrl": "",
"creator": "",
"href": "#"
}
]
@import "../../colors";
.tipsslider {
$icon-size: 40px;
$button-offset: $icon-size + 5px;
$box-content-offset: 20px;
//padding: 12px $button-offset;
.box-content & {
padding: 12px $button-offset - 20px;
}
.slick-next,
.slick-prev {
margin-top: -$icon-size/2;
width: $icon-size;
height: $icon-size;
&:before {
display: block;
background-repeat: no-repeat;
background-position: center center;
background-size: 70%;
width: $icon-size;
height: $icon-size;
font-size: $icon-size;
content: "";
}
&.slick-disabled:before {
opacity: 1;
}
}
.slick-prev {
left: 0;
&:before {
background-image: url("/svgs/carousel/prev_ui-dark-gray.svg");
}
&:hover:before {
background-image: url("/svgs/carousel/prev_ui-blue.svg");
background-size: 90%;
}
.box-content & {
left: -$box-content-offset;
}
}
.slick-next {
right: 0;
&:before {
background-image: url("/svgs/carousel/next_ui-dark-gray.svg");
}
&:hover:before {
background-image: url("/svgs/carousel/next_ui-blue.svg");
background-size: 90%;
}
.box-content & {
right: -$box-content-offset;
}
}
.slick-slide {
padding-right: 30px;
}
}
...@@ -27,21 +27,18 @@ ...@@ -27,21 +27,18 @@
"tips":[ "tips":[
{ {
"title":"Start Dancing", "title":"Start Dancing",
"tips":[ "thumbnails":[
{ {
"id":1,
"type":"tip", "type":"tip",
"title":"First, select a sprite", "title":"First, select a sprite",
"thumbnailUrl":"/images/microworlds/hiphop/dancer-sprite.png" "thumbnailUrl":"/images/microworlds/hiphop/dancer-sprite.png"
}, },
{ {
"id":2,
"type":"tip", "type":"tip",
"title":"Then, try this script", "title":"Then, try this script",
"thumbnailUrl":"/images/microworlds/hiphop/switch-wait.gif" "thumbnailUrl":"/images/microworlds/hiphop/switch-wait.gif"
}, },
{ {
"id":3,
"type":"tip", "type":"tip",
"title":"Start it!", "title":"Start it!",
"thumbnailUrl":"/images/microworlds/hiphop/green-flag.gif" "thumbnailUrl":"/images/microworlds/hiphop/green-flag.gif"
...@@ -50,21 +47,18 @@ ...@@ -50,21 +47,18 @@
}, },
{ {
"title":"Repeat the Dance", "title":"Repeat the Dance",
"tips":[ "thumbnails":[
{ {
"id":4,
"type":"tip", "type":"tip",
"title":"Add another \"wait\"", "title":"Add another \"wait\"",
"thumbnailUrl":"/images/microworlds/hiphop/add-wait.gif" "thumbnailUrl":"/images/microworlds/hiphop/add-wait.gif"
}, },
{ {
"id":5,
"type":"tip", "type":"tip",
"title":"Drag this block over", "title":"Drag this block over",
"thumbnailUrl":"/images/microworlds/hiphop/add-repeat.gif" "thumbnailUrl":"/images/microworlds/hiphop/add-repeat.gif"
}, },
{ {
"id":6,
"type":"tip", "type":"tip",
"title":"Start it", "title":"Start it",
"thumbnailUrl":"/images/microworlds/hiphop/green-flag.gif" "thumbnailUrl":"/images/microworlds/hiphop/green-flag.gif"
...@@ -73,15 +67,13 @@ ...@@ -73,15 +67,13 @@
}, },
{ {
"title":"Play Music", "title":"Play Music",
"tips":[ "thumbnails":[
{ {
"id":7,
"type":"tip", "type":"tip",
"title":"Add music that repeats", "title":"Add music that repeats",
"thumbnailUrl":"/images/microworlds/hiphop/add-play-sound.gif" "thumbnailUrl":"/images/microworlds/hiphop/add-play-sound.gif"
}, },
{ {
"id":8,
"type":"tip", "type":"tip",
"title":"Start it", "title":"Start it",
"thumbnailUrl":"/images/microworlds/hiphop/green-flag.gif" "thumbnailUrl":"/images/microworlds/hiphop/green-flag.gif"
...@@ -90,21 +82,18 @@ ...@@ -90,21 +82,18 @@
}, },
{ {
"title":"Shadow Dance", "title":"Shadow Dance",
"tips":[ "thumbnails":[
{ {
"id":7,
"type":"tip", "type":"tip",
"title":"Add this block", "title":"Add this block",
"thumbnailUrl":"/images/microworlds/hiphop/shadow-dance.gif" "thumbnailUrl":"/images/microworlds/hiphop/shadow-dance.gif"
}, },
{ {
"id":8,
"type":"tip", "type":"tip",
"title":"Start it", "title":"Start it",
"thumbnailUrl":"/images/microworlds/hiphop/green-flag.gif" "thumbnailUrl":"/images/microworlds/hiphop/green-flag.gif"
}, },
{ {
"id":9,
"type":"tip", "type":"tip",
"title":"Click the stop sign to reset", "title":"Click the stop sign to reset",
"thumbnailUrl":"/images/microworlds/hiphop/stop.gif" "thumbnailUrl":"/images/microworlds/hiphop/stop.gif"
...@@ -113,21 +102,18 @@ ...@@ -113,21 +102,18 @@
}, },
{ {
"title":"More things to try", "title":"More things to try",
"tips":[ "thumbnails":[
{ {
"id":10,
"type":"tip", "type":"tip",
"title":"Try different dance moves", "title":"Try different dance moves",
"thumbnailUrl":"/images/microworlds/hiphop/change-dance-moves.gif" "thumbnailUrl":"/images/microworlds/hiphop/change-dance-moves.gif"
}, },
{ {
"id":11,
"type":"tip", "type":"tip",
"title":"Add more moves", "title":"Add more moves",
"thumbnailUrl":"/images/microworlds/hiphop/long-dance-script.png" "thumbnailUrl":"/images/microworlds/hiphop/long-dance-script.png"
}, },
{ {
"id":12,
"type":"tip", "type":"tip",
"title":"Change the timing", "title":"Change the timing",
"thumbnailUrl":"/images/microworlds/hiphop/change-dance-timing.png" "thumbnailUrl":"/images/microworlds/hiphop/change-dance-timing.png"
......
var render = require('../../lib/render.jsx'); var render = require('../../lib/render.jsx');
var Microworld = require('../../components/microworld/microworld.jsx'); var Microworld = require('../../components/microworld/microworld.jsx');
render(<Microworld microworldData={require("./microworld_art.json")} />, document.getElementById('view')); var microworldData = require('./microworld_art.json');
render(<Microworld microworldData={microworldData} />, document.getElementById('view'));
...@@ -16,15 +16,13 @@ ...@@ -16,15 +16,13 @@
"tips":[ "tips":[
{ {
"title":"Click on blocks to see what they do", "title":"Click on blocks to see what they do",
"tips":[ "thumbnails":[
{ {
"id":0,
"type":"tip", "type":"tip",
"title":" Try clicking this block ", "title":" Try clicking this block ",
"thumbnailUrl":"/images/microworlds/fashion/click-block-color.gif" "thumbnailUrl":"/images/microworlds/fashion/click-block-color.gif"
}, },
{ {
"id":1,
"type":"tip", "type":"tip",
"title":" Or this block", "title":" Or this block",
"thumbnailUrl":"/images/microworlds/fashion/click-block-costume.gif" "thumbnailUrl":"/images/microworlds/fashion/click-block-costume.gif"
...@@ -33,21 +31,18 @@ ...@@ -33,21 +31,18 @@
}, },
{ {
"title":"Try changing colors", "title":"Try changing colors",
"tips":[ "thumbnails":[
{ {
"id":2,
"type":"tip", "type":"tip",
"title":" First, select a clothing item ", "title":" First, select a clothing item ",
"thumbnailUrl":"/images/microworlds/fashion/shirts-sprite.png" "thumbnailUrl":"/images/microworlds/fashion/shirts-sprite.png"
}, },
{ {
"id":3,
"type":"tip", "type":"tip",
"title":" Then, try this script", "title":" Then, try this script",
"thumbnailUrl":"/images/microworlds/fashion/when-clicked-color.gif" "thumbnailUrl":"/images/microworlds/fashion/when-clicked-color.gif"
}, },
{ {
"id":4,
"type":"tip", "type":"tip",
"title":" Test it out!", "title":" Test it out!",
"thumbnailUrl":"/images/microworlds/fashion/click-shirt.gif" "thumbnailUrl":"/images/microworlds/fashion/click-shirt.gif"
...@@ -56,21 +51,18 @@ ...@@ -56,21 +51,18 @@
}, },
{ {
"title":"Try changing costumes", "title":"Try changing costumes",
"tips":[ "thumbnails":[
{ {
"id":5,
"type":"tip", "type":"tip",
"title":"Select a piece of clothing ", "title":"Select a piece of clothing ",
"thumbnailUrl":"/images/microworlds/fashion/hats-sprite.png" "thumbnailUrl":"/images/microworlds/fashion/hats-sprite.png"
}, },
{ {
"id":6,
"type":"tip", "type":"tip",
"title":"Then, switch costumes", "title":"Then, switch costumes",
"thumbnailUrl":"/images/microworlds/fashion/when-clicked-costume.gif" "thumbnailUrl":"/images/microworlds/fashion/when-clicked-costume.gif"
}, },
{ {
"id":7,
"type":"tip", "type":"tip",
"title":" Now, click it!", "title":" Now, click it!",
"thumbnailUrl":"/images/microworlds/fashion/click-hat.gif" "thumbnailUrl":"/images/microworlds/fashion/click-hat.gif"
...@@ -79,21 +71,18 @@ ...@@ -79,21 +71,18 @@
}, },
{ {
"title":"Say hello", "title":"Say hello",
"tips":[ "thumbnails":[
{ {
"id":8,
"type":"tip", "type":"tip",
"title":"Select the person", "title":"Select the person",
"thumbnailUrl":"/images/microworlds/fashion/person-sprite.png" "thumbnailUrl":"/images/microworlds/fashion/person-sprite.png"
}, },
{ {
"id":9,
"type":"tip", "type":"tip",
"title":"Type in a phrase", "title":"Type in a phrase",
"thumbnailUrl":"/images/microworlds/fashion/say-something.gif" "thumbnailUrl":"/images/microworlds/fashion/say-something.gif"
}, },
{ {
"id":10,
"type":"tip", "type":"tip",
"title":"Then, try this script", "title":"Then, try this script",
"thumbnailUrl":"/images/microworlds/fashion/when-clicked-say.gif" "thumbnailUrl":"/images/microworlds/fashion/when-clicked-say.gif"
...@@ -102,15 +91,13 @@ ...@@ -102,15 +91,13 @@
}, },
{ {
"title":"Move the sprites", "title":"Move the sprites",
"tips":[ "thumbnails":[
{ {
"id":11,
"type":"tip", "type":"tip",
"title":"Select an accessory", "title":"Select an accessory",
"thumbnailUrl":"/images/microworlds/fashion/accessories-sprite.png" "thumbnailUrl":"/images/microworlds/fashion/accessories-sprite.png"
}, },
{ {
"id":12,
"type":"tip", "type":"tip",
"title":"Tell it where to go", "title":"Tell it where to go",
"thumbnailUrl":"/images/microworlds/fashion/when-clicked-goto.gif" "thumbnailUrl":"/images/microworlds/fashion/when-clicked-goto.gif"
...@@ -119,21 +106,18 @@ ...@@ -119,21 +106,18 @@
}, },
{ {
"title":"Other things to try", "title":"Other things to try",
"tips":[ "thumbnails":[
{ {
"id":13,
"type":"tip", "type":"tip",
"title":"Add a sound ", "title":"Add a sound ",
"thumbnailUrl":"/images/microworlds/fashion/play-drum.png" "thumbnailUrl":"/images/microworlds/fashion/play-drum.png"
}, },
{ {
"id":14,
"type":"tip", "type":"tip",
"title":" Explore other costumes ", "title":" Explore other costumes ",
"thumbnailUrl":"/images/microworlds/fashion/next-costume.png" "thumbnailUrl":"/images/microworlds/fashion/next-costume.png"
}, },
{ {
"id":15,
"type":"tip", "type":"tip",
"title":"Make longer scripts ", "title":"Make longer scripts ",
"thumbnailUrl":"/images/microworlds/fashion/block-stack.png" "thumbnailUrl":"/images/microworlds/fashion/block-stack.png"
......
var render = require('../../lib/render.jsx'); var render = require('../../lib/render.jsx');
var Microworld = require('../../components/microworld/microworld.jsx'); var Microworld = require('../../components/microworld/microworld.jsx');
render(<Microworld microworldData={require("./microworld_fashion.json")} />, document.getElementById('view')); var microworldData = require('./microworld_fashion.json');
render(<Microworld microworldData={microworldData} />, document.getElementById('view'));
...@@ -16,21 +16,18 @@ ...@@ -16,21 +16,18 @@
"tips":[ "tips":[
{ {
"title":"Start Dancing", "title":"Start Dancing",
"tips":[ "thumbnails":[
{ {
"id":1,
"type":"tip", "type":"tip",
"title":"First, select a sprite", "title":"First, select a sprite",
"thumbnailUrl":"/images/microworlds/hiphop/dancer-sprite.png" "thumbnailUrl":"/images/microworlds/hiphop/dancer-sprite.png"
}, },
{ {
"id":2,
"type":"tip", "type":"tip",
"title":"Then, try this script", "title":"Then, try this script",
"thumbnailUrl":"/images/microworlds/hiphop/switch-wait.gif" "thumbnailUrl":"/images/microworlds/hiphop/switch-wait.gif"
}, },
{ {
"id":3,
"type":"tip", "type":"tip",
"title":"Start it!", "title":"Start it!",
"thumbnailUrl":"/images/microworlds/hiphop/green-flag.gif" "thumbnailUrl":"/images/microworlds/hiphop/green-flag.gif"
...@@ -39,21 +36,18 @@ ...@@ -39,21 +36,18 @@
}, },
{ {
"title":"Repeat the Dance", "title":"Repeat the Dance",
"tips":[ "thumbnails":[
{ {
"id":4,
"type":"tip", "type":"tip",
"title":"Add another \"wait\"", "title":"Add another \"wait\"",
"thumbnailUrl":"/images/microworlds/hiphop/add-wait.gif" "thumbnailUrl":"/images/microworlds/hiphop/add-wait.gif"
}, },
{ {
"id":5,
"type":"tip", "type":"tip",
"title":"Drag this block over", "title":"Drag this block over",
"thumbnailUrl":"/images/microworlds/hiphop/add-repeat.gif" "thumbnailUrl":"/images/microworlds/hiphop/add-repeat.gif"
}, },
{ {
"id":6,
"type":"tip", "type":"tip",
"title":"Start it", "title":"Start it",
"thumbnailUrl":"/images/microworlds/hiphop/green-flag.gif" "thumbnailUrl":"/images/microworlds/hiphop/green-flag.gif"
...@@ -62,15 +56,13 @@ ...@@ -62,15 +56,13 @@
}, },
{ {
"title":"Play Music", "title":"Play Music",
"tips":[ "thumbnails":[
{ {
"id":7,
"type":"tip", "type":"tip",
"title":"Add music that repeats", "title":"Add music that repeats",
"thumbnailUrl":"/images/microworlds/hiphop/add-play-sound.gif" "thumbnailUrl":"/images/microworlds/hiphop/add-play-sound.gif"
}, },
{ {
"id":8,
"type":"tip", "type":"tip",
"title":"Start it", "title":"Start it",
"thumbnailUrl":"/images/microworlds/hiphop/green-flag.gif" "thumbnailUrl":"/images/microworlds/hiphop/green-flag.gif"
...@@ -79,21 +71,18 @@ ...@@ -79,21 +71,18 @@
}, },
{ {
"title":"Shadow Dance", "title":"Shadow Dance",
"tips":[ "thumbnails":[
{ {
"id":7,
"type":"tip", "type":"tip",
"title":"Add this block", "title":"Add this block",
"thumbnailUrl":"/images/microworlds/hiphop/shadow-dance.gif" "thumbnailUrl":"/images/microworlds/hiphop/shadow-dance.gif"
}, },
{ {
"id":8,
"type":"tip", "type":"tip",
"title":"Start it", "title":"Start it",
"thumbnailUrl":"/images/microworlds/hiphop/green-flag.gif" "thumbnailUrl":"/images/microworlds/hiphop/green-flag.gif"
}, },
{ {
"id":9,
"type":"tip", "type":"tip",
"title":"Click the stop sign to reset", "title":"Click the stop sign to reset",
"thumbnailUrl":"/images/microworlds/hiphop/stop.gif" "thumbnailUrl":"/images/microworlds/hiphop/stop.gif"
...@@ -102,21 +91,18 @@ ...@@ -102,21 +91,18 @@
}, },
{ {
"title":"More things to try", "title":"More things to try",
"tips":[ "thumbnails":[
{ {
"id":10,
"type":"tip", "type":"tip",
"title":"Try different dance moves", "title":"Try different dance moves",
"thumbnailUrl":"/images/microworlds/hiphop/change-dance-moves.gif" "thumbnailUrl":"/images/microworlds/hiphop/change-dance-moves.gif"
}, },
{ {
"id":11,
"type":"tip", "type":"tip",
"title":"Add more moves", "title":"Add more moves",
"thumbnailUrl":"/images/microworlds/hiphop/long-dance-script.png" "thumbnailUrl":"/images/microworlds/hiphop/long-dance-script.png"
}, },
{ {
"id":12,
"type":"tip", "type":"tip",
"title":"Change the timing", "title":"Change the timing",
"thumbnailUrl":"/images/microworlds/hiphop/change-dance-timing.png" "thumbnailUrl":"/images/microworlds/hiphop/change-dance-timing.png"
......
var render = require('../../lib/render.jsx'); var render = require('../../lib/render.jsx');
var Microworld = require('../../components/microworld/microworld.jsx'); var Microworld = require('../../components/microworld/microworld.jsx');
render(<Microworld microworldData={require("./microworld_hiphop.json")} />, document.getElementById('view')); var microworldData = require('./microworld_hiphop.json');
render(<Microworld microworldData={microworldData} />, document.getElementById('view'));
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment