components/TeacherGroups/TeacherGroups.jsx

/**
 * Контейнер с группами учителя
 * @module TeacherGroups
 * @author Ihor Bielchenko
 * @requires react
 * @requires react#Component
 * @requires react-redux#connect
 * @requires redux#bindActionCreators
 * @requires actions/StateUserAction.js
 * @requires components/Common/Table.jsx
 * @requires components/Common/Link.jsx
 */

import React, { Component } from 'react';
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
import * as StateUserAction from '../../actions/StateUserAction.js';
import Table from '../Common/Table.jsx';
import Link from '../Common/Link.jsx';

/**
 * Контейнер с группами учителя
 * @extends Component
 */
class TeacherGroups extends Component {

	/**
	 * Открыть группу
	 * @fires click
	 * @param {Number} id Идентификатор группы
	 * @param {Object} e
	 */
	open(id, e) {
		this.props.user.current_group = id;
		this.props.StateUserAction.update(this.props.user);
	}

	/**
	 * Render component
	 * @return {Object} jsx object
	 */
	render() {
		var groups = [],
			i;

		for(i = 0; i < this.props.user.groups.length; i++) {
			groups.push([
				this.props.user.groups[i].name,
				this.props.user.groups[i].id,
				5,
				this.props.user.groups[i].students.length,
				<Link href={'/teacher/group/'+ this.props.user.groups[i].id}
					onClick={this.open.bind(this, this.props.user.groups[i].id)}>
						{this.props.lang.view_title}
				</Link>
			]);
		}

		return <Table columns={[
						this.props.lang.name_title,
						this.props.lang.class_title,
						this.props.lang.count_created_tasks_title,
						this.props.lang.students_title,
						this.props.lang.details_title
					]}
					data={groups} />
	}
}

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

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

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