/**
* Контейнер с группами учителя
* @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);