fork of https://github.com/rust-rocksdb/rust-rocksdb for nextgraph
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.5 KiB
88 lines
2.5 KiB
<div class="slideshowBlock pluginWrapper" id="slideshow"></div>
|
|
<script>
|
|
var slideshowData = [
|
|
{% for image in site.data.slideshow %}
|
|
{
|
|
id : "{{ image.id }}",
|
|
imagesrc : "{{ image.src }}",
|
|
tooltip : "{{ image.tooltip }}",
|
|
href : "{{ image.link }}",
|
|
},
|
|
{% endfor %}
|
|
];
|
|
</script>
|
|
<script src="http://fb.me/react-with-addons-0.13.1.min.js"></script>
|
|
<script type="text/javascript">
|
|
var Slideshow = React.createClass({displayName: "Slideshow",
|
|
getInitialState: function() {
|
|
return {
|
|
currentSlide: 0,
|
|
};
|
|
},
|
|
getDefaultProps: function() {
|
|
return {
|
|
data: slideshowData,
|
|
};
|
|
},
|
|
handleSelect: function(id) {
|
|
var index = this.props.data.map(function (el, elIndex) {
|
|
return (
|
|
elIndex
|
|
);
|
|
});
|
|
var currentIndex = index.indexOf(id);
|
|
this.setState({
|
|
currentSlide: currentIndex,
|
|
});
|
|
},
|
|
render: function() {
|
|
return (
|
|
React.createElement("div", {className: "slideshow"},
|
|
React.createElement("div", {className: "slides"},
|
|
this.props.data.map(this.renderSlide)
|
|
),
|
|
React.createElement("div", {className: "pagination"},
|
|
this.props.data.map(this.renderPager)
|
|
)
|
|
)
|
|
);
|
|
},
|
|
renderSlide: function(child, index) {
|
|
var classes = React.addons.classSet({
|
|
'slide': true,
|
|
'slideActive': this.state.currentSlide === index,
|
|
});
|
|
if (child.href) {
|
|
return (
|
|
React.createElement("div", {key: index, className: classes},
|
|
React.createElement("a", {href: child.href, alt: child.tooltip, title: child.tooltip},
|
|
React.createElement("img", {src: child.imagesrc, alt: child.tooltip, title: child.tooltip})
|
|
)
|
|
)
|
|
);
|
|
}
|
|
return (
|
|
React.createElement("div", {key: index, className: classes},
|
|
React.createElement("img", {src: child.imagesrc, alt: child.tooltip})
|
|
)
|
|
);
|
|
},
|
|
renderPager: function(child, index) {
|
|
var classes = React.addons.classSet({
|
|
'pager': true,
|
|
'pagerActive': this.state.currentSlide === index,
|
|
});
|
|
return (
|
|
React.createElement("span", {key: index, className: classes, onClick: this.handleSelect.bind(this, index)})
|
|
);
|
|
},
|
|
});
|
|
|
|
function render(slideshowData) {
|
|
React.render(
|
|
React.createElement(Slideshow, {data: slideshowData}),
|
|
document.getElementById('slideshow')
|
|
);
|
|
}
|
|
render(slideshowData);
|
|
</script> |