| |
| /* |
| * |
| * Copyright 2016 RIFT.IO Inc |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| */ |
| var React = require('react'); |
| var Slider = require('react-slick'); |
| //import SkyquakeCarousel from './skyquakeCarousel.jsx'; |
| //This componenet should not be coupled with launchpad |
| |
| import button from 'widgets/button/rw.button.js' |
| var LaunchpadFleetStore = require('../launchpadFleetStore.js'); |
| var LaunchpadFleetActions = require('../launchpadFleetActions.js'); |
| |
| require('./carousel.css'); |
| var SimpleSlider = React.createClass({ |
| propTypes: { |
| component_list: React.PropTypes.array.isRequired, |
| slideno: React.PropTypes.number, |
| externalChangeSlide: React.PropTypes.bool |
| }, |
| handleClick: function() { |
| this.setState({}); |
| }, |
| getDefaultProps: function() { |
| this.externalChangeSlide = false; |
| return { |
| externalChangeSlide: false |
| } |
| }, |
| getInitialState: function() { |
| return { |
| } |
| |
| }, |
| changeSlide: function(data) { |
| if (data.slideChange > 0) { |
| var setSlide = -1; |
| for (var i = 0; i < this.props.component_list.length; i++) { |
| var component = this.props.component_list[i].component; |
| if (Object.prototype.toString.call(component) === "[object Array]") { |
| for (var j = 0; j < component.length; j++) { |
| var subcomponent = component[j]; |
| if (subcomponent.props.mp === data.dropdownSlide[0]) { |
| setSlide = i; |
| } |
| } |
| } else { |
| if (component.props.mp === data.dropdownSlide[0]) { |
| setSlide = i; |
| } |
| } |
| } |
| if (setSlide < 0) { |
| return; |
| } |
| this.externalChangeSlide = true; |
| this.setState({slideno: parseFloat(setSlide)}); |
| } |
| }, |
| componentDidMount: function() { |
| // LaunchpadFleetStore.listen(this.changeSlide); |
| }, |
| componentWillUnmount: function() { |
| }, |
| shouldComponentUpdate: function(nextProps) { |
| |
| return true; |
| // This prevents things in the carousel from updating which makes no sense because we're displaying metrics that need to update |
| // if (nextProps.slideno != this.props.slideno) { |
| // return true; |
| // } |
| // return false; |
| }, |
| componentDidUpdate: function(prevProps, prevState) { |
| if (this.externalChangeSlide > 0) { |
| this.externalChangeSlide = false; |
| // LaunchpadFleetActions.slideNoStateChangeSuccess(); |
| } |
| }, |
| handleResize: function(e) { |
| |
| }, |
| render: function () { |
| // var settings = { |
| // dots: true, |
| // infinite: false, |
| // speed: 500, |
| // slidesToShow: 1, |
| // slidesToScroll: 1, |
| // centerMode: true, |
| // initialSlide: this.props.slideno || 2 |
| // }; |
| var settings = { |
| dots: true, |
| infinite: false, |
| speed: 500, |
| slidesToShow: 1, |
| slidesToScroll: 1, |
| centerMode: true, |
| changeSlide: this.externalChangeSlide, |
| initialSlide: this.state.slideno || 0 |
| } |
| if (this.externalChangeSlide) { |
| settings.initialSlide = this.state.slideno; |
| } |
| setTimeout(function() { |
| window.dispatchEvent(new Event('resize')); |
| }, 0) |
| var list = []; |
| if (this.props.component_list !== undefined) { |
| for (var i = 0; i < this.props.component_list.length; i++) { |
| let title = this.props.component_list[i].title; |
| let displayTitle = title ? 'inherit' : 'none'; |
| list.push(<div key={i} className={"component"}><h2 style={{flex: '0 1 auto', justifyContent: 'center', alignSelf: 'center', display: displayTitle, padding: '0.5rem'}}>{title}</h2><div className="componentWrapper">{this.props.component_list[i].component}</div></div>); |
| } |
| } |
| return ( |
| <div className={list.length > 1 ? '' : 'hideButtons'}> |
| <Slider {...settings}> |
| {list} |
| </Slider> |
| </div> |
| ); |
| } |
| }); |
| module.exports = SimpleSlider; |