Skip to content
Snippets Groups Projects
SolutionDetailsForm.js 3.79 KiB
Newer Older
  • Learn to ignore specific revisions
  • import React, { Component } from 'react';
    import { Modal, Button, Header, Icon } from 'semantic-ui-react';
    import { connect } from 'react-redux';
    import { emptyMessage } from '../pages/Homework';
    
    class SolutionDetailsForm extends Component {
      constructor(props) {
        super(props);
        this.state = {
          showModal: false,
        };
      }
    
      render() {
        const taskSolutions = this.props.homeworks.solutions.filter(solution =>
          solution.task === this.props.taskid);
    
        const noSubmitStudents = [];
        const waitForCorrectionStudents = [];
        const noAcceptStudents = [];
        const acceptedStudents = [];
    
        for (let i = 0; i < this.props.homeworks.profiles.length; i += 1) {
          const profileSolutions = taskSolutions.filter(solution =>
            solution.created_by === this.props.homeworks.profiles[i].id);
    
          if (profileSolutions.length === 0) {
            noSubmitStudents.push(this.props.homeworks.profiles[i].nick);
          } else if (taskSolutions[taskSolutions.length - 1].corrected === false) {
            waitForCorrectionStudents.push(this.props.homeworks.profiles[i].nick);
          } else if (taskSolutions[taskSolutions.length - 1].accepted === false) {
            noAcceptStudents.push(this.props.homeworks.profiles[i].nick);
          } else {
            acceptedStudents.push(this.props.homeworks.profiles[i].nick);
          }
        }
    
        const emptyStudentText = 'Nincs ilyen képződő jelenleg.';
    
        return (
          <Modal
            open={this.state.showModal}
            trigger={
              <Button basic color='blue' onClick={() => { this.setState({ showModal: true }); }}>
                <Icon name='external' />
                {this.props.tasktitle}
              </Button>
            }
          >
            <Modal.Header>
              A megoldások beadásának állapota a(z) {this.props.tasktitle} nevű feladatnál:
            </Modal.Header>
            <Modal.Content>
              <Header as='h3'>Nem érkezett még megoldás:</Header>
              {noSubmitStudents.length === 0 ?
                  emptyMessage(emptyStudentText) :
                  noSubmitStudents.map(name => (
                    <Button color='blue' style={{ marginRight: '1.5em', marginTop: '1.5em' }}>{name}</Button>
                  ))
              }
              <Header as='h3'>Javításra vár (A névre kattintva kijavítható a megoldás):</Header>
              {waitForCorrectionStudents.length === 0 ?
                emptyMessage(emptyStudentText) :
                waitForCorrectionStudents.map(name => (
                  <Button inverted color='orange' style={{ marginRight: '1.5em', marginTop: '1.5em' }}>{name}</Button>
                ))
              }
              <Header as='h3'>A megoldás nem elfogadható:</Header>
              {noAcceptStudents.length === 0 ?
                emptyMessage(emptyStudentText) :
                noAcceptStudents.map(name => (
                  <Button color='red' style={{ marginRight: '1.5em', marginTop: '1.5em' }}>{name}</Button>
                ))
            }
              <Header as='h3'>Elfogadva:</Header>
              {acceptedStudents.length === 0 ?
                emptyMessage(emptyStudentText) :
                acceptedStudents.map(name => (
                  <Button color='green' style={{ marginRight: '1.5em', marginTop: '1.5em' }}>{name}</Button>
                ))
            }
            </Modal.Content>
            <Modal.Actions>
              <Button
                inverted
                color='red'
                onClick={() => {
                  this.setState({ showModal: false });
                }}
              >
                <Icon name='remove' /> Mégse
              </Button>
              <Button
                inverted
                color='green'
                onClick={() => {
                  }}
              >
                <Icon name='checkmark' /> Beadás
              </Button>
            </Modal.Actions>
          </Modal>
        );
      }
    }
    
    const mapStateToProps = ({ homeworks, user }) => ({ homeworks, user });
    
    export default connect(mapStateToProps, {
    })(SolutionDetailsForm);