76 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| /*jshint browser:true */
 | |
| /*globals React, App */
 | |
| 
 | |
| (function () {
 | |
|     'use strict';
 | |
| 
 | |
|     /**
 | |
|      * Modal for managing channels
 | |
|      *
 | |
|      * @prop {channels: Array}      List of channels
 | |
|      * @prop {switch: func}         Called to switch a param on given channel
 | |
|      * @prop {open: func}           Called to open the window
 | |
|      * @prop {close: func}          Called to close the window
 | |
|      */
 | |
|     App.components.modal('Channel', {
 | |
|         displayName: 'Board',
 | |
|         mixins: [React.addons.PureRenderMixin],
 | |
|         
 | |
|         propTypes: {
 | |
|             channels: React.PropTypes.array,
 | |
|             
 | |
|             switch: React.PropTypes.func,
 | |
|             open: React.PropTypes.func,
 | |
|             close: React.PropTypes.func
 | |
|         },
 | |
| 
 | |
|         getDefaultProps: function () {
 | |
|             return {
 | |
|                 channels: [],
 | |
|                 
 | |
|                 switch: function () {},
 | |
|                 open: function () {},
 | |
|                 close: function () {}
 | |
|             };
 | |
|         },
 | |
| 
 | |
|         /**
 | |
|          * Creates a function to switch a param on given channel
 | |
|          *
 | |
|          * @param {channel: object} Channel object
 | |
|          */
 | |
|         switch: function (channel) {
 | |
|             return function (param) {
 | |
|                 this.props.switch(param, channel.id);
 | |
|             }.bind(this);
 | |
|         },
 | |
|         
 | |
|         /**
 | |
|          * Render modal
 | |
|          */
 | |
|         render: function () {
 | |
|             var title = 'Instruments', channels;
 | |
|             
 | |
|             console.log('rendering!');
 | |
|             
 | |
|             channels = this.props.channels.map(function (channel) {
 | |
|                 channel.key = 'channel-' + channel.id;
 | |
|                 channel.switch = this.switch(channel);
 | |
|                 
 | |
|                 return App.components.Channel.Channel(channel);
 | |
|             }, this);
 | |
|             
 | |
|             return React.DOM.form({
 | |
|                 className: 'vex-dialog-form channels'
 | |
|             }, [
 | |
|                 React.DOM.h4({
 | |
|                     key: 'title',
 | |
|                     className: 'main-title'
 | |
|                 }, title),
 | |
|                 React.DOM.ul({
 | |
|                     key: 'channels'
 | |
|                 }, channels)
 | |
|             ]);
 | |
|         }
 | |
|     });
 | |
| }()); |