blob: edc19f96c753334e0f1e6a880e495efdc68cea9c [file] [log] [blame]
/*
*
* 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;