Skip to content
Snippets Groups Projects
LeaderBoard.js 2.12 KiB
import { Container, Table } from 'semantic-ui-react';
import React, { Component } from 'react';

import { connect } from 'react-redux';
import { getTrainees } from '../../actions/statistics';

class LeaderBoard extends Component {
  UNSAFE_componentWillMount() {
    this.props.getTrainees();
  }

  // Every event rendered
  renderTraineeBits() {
    return this.props.trainees
      .sort(
        (a, b) =>
          Number(b.homework_bits) +
          b.events_visited -
          (Number(a.homework_bits) + a.events_visited)
      )
      .map((trainee) =>
        trainee.role === 'Student' ? (
          <Table.Row key={trainee.nick}>
            <Table.Cell textAlign="center">{trainee.full_name}</Table.Cell>
            <Table.Cell textAlign="center">{trainee.events_visited}</Table.Cell>
            <Table.Cell textAlign="center">
              {Number(trainee.homework_bits)}
            </Table.Cell>
            <Table.Cell textAlign="center">
              {Number(trainee.homework_bits) + trainee.events_visited}
            </Table.Cell>
          </Table.Row>
        ) : null
      );
  }

  render() {
    return (
      <Container textAlign="center" style={{ overflowX: 'scroll' }}>
        <Table color="blue" unstackable celled selectable compact>
          <Table.Header>
            <Table.Row>
              <Table.HeaderCell textAlign="center">Képződők</Table.HeaderCell>
              <Table.HeaderCell textAlign="center">Jelenlét</Table.HeaderCell>
              <Table.HeaderCell textAlign="center">Bitek</Table.HeaderCell>
              <Table.HeaderCell textAlign="center">Szumma</Table.HeaderCell>
            </Table.Row>
          </Table.Header>
          <Table.Body>
            {this.props.trainees ? (
              this.renderTraineeBits()
            ) : (
              <Table.Row>
                <Table.Cell>Nincsenek képződők</Table.Cell>
              </Table.Row>
            )}
          </Table.Body>
        </Table>
      </Container>
    );
  }
}

const mapStateToProps = ({ trainees: { trainees }, user }) => ({
  trainees,
  user,
});

export default connect(mapStateToProps, { getTrainees })(LeaderBoard);