components/GroupMainBar/GroupNumber/GroupNumber.jsx

/**
 * Номер группы
 * @module GroupNumber
 * @author Ihor Bielchenko
 * @requires react
 * @requires react#Component
 * @requires react-redux
 */

import React, { Component } from 'react';
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
import * as StateConfigAction from '../../../actions/StateConfigAction.js';

/**
 * Номер группы
 * @extends Component
 */
class GroupNumber extends Component {

	/**
	 * Открыть окно редактирования группы
	 * @fires change
	 * @param {Object} e
	 */
	editGroup(e) {
		this.props.config.edit_group = 1;
		this.props.StateConfigAction.update(this.props.config);
	}

	/**
	 * Render component
	 * @return {Object} jsx object
	 */
	render() {
		var group,
			i;

		for(i = 0; i < this.props.user.groups.length; i++) {
			if(this.props.user.groups[i].id === this.props.user.current_group) {
				group = this.props.user.groups[i];
			}
		}

		return <div className="left">
					<div className="round"
						onClick={this.editGroup.bind(this)}>
						<span className="text">{group['name']}</span>
					</div>
				</div>
	}
}

/**
 * Init redux states
 *
 * @param {Object} state
 * @return {Object}
 */
function mapStateToProps(state) {
	return {
		user: state.user,
		config: state.config
	}
}

/**
 * Init redux actions
 * @param {Function} dispatch
 * @return {Object}
 */
function mapDispatchToProps(dispatch) {
	return {
		StateConfigAction: bindActionCreators(StateConfigAction, dispatch),
	}
}

export default connect(mapStateToProps, mapDispatchToProps)(GroupNumber);