12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- <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>
|