|  | @ -0,0 +1,123 @@ | 
														
													
														
															
																|  |  |  |  |  | <!DOCTYPE HTML> | 
														
													
														
															
																|  |  |  |  |  | <html> | 
														
													
														
															
																|  |  |  |  |  | <head> | 
														
													
														
															
																|  |  |  |  |  | <meta charset="utf-8"> | 
														
													
														
															
																|  |  |  |  |  | <title>React Components in templates</title> | 
														
													
														
															
																|  |  |  |  |  | </head> | 
														
													
														
															
																|  |  |  |  |  | <body> | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | <div id='root'></div> | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | <!-- | 
														
													
														
															
																|  |  |  |  |  | For ease of use, we are including the React, ReactDOM and Babel CDN | 
														
													
														
															
																|  |  |  |  |  | builds to make getting started as fast as possible. | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | In production, you'll want to instead look at using something | 
														
													
														
															
																|  |  |  |  |  | like Gulp, Grunt or WebPack (my personal recommendation) | 
														
													
														
															
																|  |  |  |  |  | to compile JSX into JavaScript. Also, check out: | 
														
													
														
															
																|  |  |  |  |  | http://facebook.github.io/react/docs/tooling-integration.html | 
														
													
														
															
																|  |  |  |  |  | --> | 
														
													
														
															
																|  |  |  |  |  | <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.3.2/react.js"></script> | 
														
													
														
															
																|  |  |  |  |  | <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.3.2/react-dom.js"></script> | 
														
													
														
															
																|  |  |  |  |  | <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.23/browser.min.js"></script> | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | <script src="../../../dist/vis.js"></script> | 
														
													
														
															
																|  |  |  |  |  | <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | <!-- | 
														
													
														
															
																|  |  |  |  |  | This is where you link to your React code. Can be .js or .jsx | 
														
													
														
															
																|  |  |  |  |  | extension, doesn't really matter. | 
														
													
														
															
																|  |  |  |  |  | --> | 
														
													
														
															
																|  |  |  |  |  | <script type="text/babel"> | 
														
													
														
															
																|  |  |  |  |  | var timeline; | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | // create groups | 
														
													
														
															
																|  |  |  |  |  | var numberOfGroups = 25; | 
														
													
														
															
																|  |  |  |  |  | var groups = new vis.DataSet() | 
														
													
														
															
																|  |  |  |  |  | for (var i = 0; i < numberOfGroups; i++) { | 
														
													
														
															
																|  |  |  |  |  | groups.add({ | 
														
													
														
															
																|  |  |  |  |  | id: i, | 
														
													
														
															
																|  |  |  |  |  | content: 'Truck ' + i | 
														
													
														
															
																|  |  |  |  |  | }) | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | // create items | 
														
													
														
															
																|  |  |  |  |  | var numberOfItems = 1000; | 
														
													
														
															
																|  |  |  |  |  | var items = new vis.DataSet(); | 
														
													
														
															
																|  |  |  |  |  | var itemsPerGroup = Math.round(numberOfItems/numberOfGroups); | 
														
													
														
															
																|  |  |  |  |  | for (var truck = 0; truck < numberOfGroups; truck++) { | 
														
													
														
															
																|  |  |  |  |  | var date = new Date(); | 
														
													
														
															
																|  |  |  |  |  | for (var order = 0; order < itemsPerGroup; order++) { | 
														
													
														
															
																|  |  |  |  |  | date.setHours(date.getHours() +  4 * (Math.random() < 0.2)); | 
														
													
														
															
																|  |  |  |  |  | var start = new Date(date); | 
														
													
														
															
																|  |  |  |  |  | date.setHours(date.getHours() + 2 + Math.floor(Math.random()*4)); | 
														
													
														
															
																|  |  |  |  |  | var end = new Date(date); | 
														
													
														
															
																|  |  |  |  |  | items.add({ | 
														
													
														
															
																|  |  |  |  |  | id: order + itemsPerGroup * truck, | 
														
													
														
															
																|  |  |  |  |  | group: truck, | 
														
													
														
															
																|  |  |  |  |  | start: start, | 
														
													
														
															
																|  |  |  |  |  | end: end, | 
														
													
														
															
																|  |  |  |  |  | content: 'Order ' + order | 
														
													
														
															
																|  |  |  |  |  | }); | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | var GroupTemplate = React.createClass({ | 
														
													
														
															
																|  |  |  |  |  | render: function() { | 
														
													
														
															
																|  |  |  |  |  | var { group } = this.props; | 
														
													
														
															
																|  |  |  |  |  | return <div> | 
														
													
														
															
																|  |  |  |  |  | <label>{group.content}</label> | 
														
													
														
															
																|  |  |  |  |  | </div> | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  | }) | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | var ItemTemplate = React.createClass({ | 
														
													
														
															
																|  |  |  |  |  | render: function() { | 
														
													
														
															
																|  |  |  |  |  | var { item } = this.props; | 
														
													
														
															
																|  |  |  |  |  | return <div> | 
														
													
														
															
																|  |  |  |  |  | <label>{item.content}</label> | 
														
													
														
															
																|  |  |  |  |  | </div> | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  | }) | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | // specify options | 
														
													
														
															
																|  |  |  |  |  | var options = { | 
														
													
														
															
																|  |  |  |  |  | orientation: 'top', | 
														
													
														
															
																|  |  |  |  |  | maxHeight: 400, | 
														
													
														
															
																|  |  |  |  |  | start: new Date(), | 
														
													
														
															
																|  |  |  |  |  | end: new Date(1000*60*60*24 + (new Date()).valueOf()), | 
														
													
														
															
																|  |  |  |  |  | editable: true, | 
														
													
														
															
																|  |  |  |  |  | template: function (item, element) { | 
														
													
														
															
																|  |  |  |  |  | ReactDOM.unmountComponentAtNode(element); | 
														
													
														
															
																|  |  |  |  |  | return ReactDOM.render(<ItemTemplate item={item} />, element); | 
														
													
														
															
																|  |  |  |  |  | }, | 
														
													
														
															
																|  |  |  |  |  | groupTemplate: function (group, element) { | 
														
													
														
															
																|  |  |  |  |  | ReactDOM.unmountComponentAtNode(element); | 
														
													
														
															
																|  |  |  |  |  | return ReactDOM.render(<GroupTemplate group={group} />, element); | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | var VisTimeline = React.createClass({ | 
														
													
														
															
																|  |  |  |  |  | componentDidMount: function() { | 
														
													
														
															
																|  |  |  |  |  | return initTimeline(); | 
														
													
														
															
																|  |  |  |  |  | }, | 
														
													
														
															
																|  |  |  |  |  | render: function() { | 
														
													
														
															
																|  |  |  |  |  | return <div> | 
														
													
														
															
																|  |  |  |  |  | <h1>Vis timline with React</h1> | 
														
													
														
															
																|  |  |  |  |  | <h2>Using react components for items and group templates</h2> | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | <div id="mytimeline"></div> | 
														
													
														
															
																|  |  |  |  |  | </div> | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  | }); | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | function initTimeline() { | 
														
													
														
															
																|  |  |  |  |  | var container = document.getElementById('mytimeline'); | 
														
													
														
															
																|  |  |  |  |  | timeline = new vis.Timeline(container, items, groups, options); | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | ReactDOM.render(<VisTimeline />, document.getElementById('root')); | 
														
													
														
															
																|  |  |  |  |  | </script> | 
														
													
														
															
																|  |  |  |  |  | </body> | 
														
													
														
															
																|  |  |  |  |  | </html> |