From 8daedc54a776d4aeff1a87b894de8ef56d948c19 Mon Sep 17 00:00:00 2001 From: rlacko <rlacko@sch.bme.hu> Date: Sat, 1 Feb 2020 01:06:54 +0100 Subject: [PATCH] #61 students can see their solutions --- src/actions/homework.js | 8 ++-- src/components/forms/AddSolutionForm.js | 56 +++++++++++++++++++------ src/components/forms/HiddenForm.js | 6 +-- src/components/pages/Homework.js | 25 ++++++----- 4 files changed, 64 insertions(+), 31 deletions(-) diff --git a/src/actions/homework.js b/src/actions/homework.js index 206b40f..729899e 100644 --- a/src/actions/homework.js +++ b/src/actions/homework.js @@ -31,10 +31,10 @@ export const getTasks = () => ( } ); -export const getSolutions = id => ( +export const getSolutions = taskId => ( async (dispatch) => { try { - const response = await axios.get('/api/v1/homework/solutions/', { params: { profileID: id } }); + const response = await axios.get('/api/v1/homework/solutions/', { task: taskId }); dispatch({ type: GET_SOLUTIONS, payload: response.data, @@ -183,11 +183,11 @@ export const addSolution = ({ } ); -export const getDocuments = (id, solution) => ( +export const getDocuments = (solutionID) => ( async (dispatch) => { try { const response = - await axios.get('/api/v1/documents', { params: { profileID: id, solutionID: solution } }); + await axios.get('/api/v1/documents', { params: { solution: solutionID } }); dispatch({ type: GET_DOCUMENTS, payload: response.data, diff --git a/src/components/forms/AddSolutionForm.js b/src/components/forms/AddSolutionForm.js index 3f4587b..090e432 100644 --- a/src/components/forms/AddSolutionForm.js +++ b/src/components/forms/AddSolutionForm.js @@ -1,5 +1,5 @@ import React, { Component } from 'react'; -import { Modal, Button, Form, Input, TextArea, Icon, Header } from 'semantic-ui-react'; +import { Modal, Button, Form, Input, TextArea, Icon, Header, Segment, Message } from 'semantic-ui-react'; import { connect } from 'react-redux'; import { addSolution, writeSolution, writeSolutionFile, addDocument, clearWrite } from '../../actions/homework'; import './Forms.css'; @@ -20,6 +20,7 @@ const allowedFileTypes = [ const maxFileSize = 50; class AddSolutionForm extends Component { + constructor(props) { super(props); this.state = { @@ -27,30 +28,34 @@ class AddSolutionForm extends Component { }; } - render() { const { name, description, file } = this.props.newSolution const task = this.props.taskid; + + const thisTaskSolution = this.props.homeworks.solutions + .filter(solution => solution.task === task) + const thisTaskDocument = this.props.homeworks.documents + .filter(document => document.solution === thisTaskSolution[0]?.id) + + const lastName = thisTaskDocument[0]?.name + const lastDesc = thisTaskDocument[0]?.description + const lastFile = thisTaskDocument[0]?.file + + console.log(lastName, lastDesc, lastFile) + + // const name = thisTaskDocument[0]?.name + // const description = thisTaskDocument[0]?.description + // const file = ''; + const corrected = false; const accepted = false; const sentences = this.props.taskdesc.split('\n'); const note = ''; const disabledText = 'A hatĂĄridĹ lejĂĄrt, tovĂĄbbi beadĂĄs nem lehetsĂŠges.'; - // const { - // studentFullName, studentId, taskTitle, taskSolutions, - // } = this.props; - // const taskSolutionsProfile = - // taskSolutions.filter(solution => solution.created_by === studentId); - // const relevantSolution = taskSolutionsProfile.slice(-1)[0]; - // const relevantDocuments = this.props.homeworks.documents.filter(document => - // document.solution === relevantSolution.id).filter(document => - // document.uploaded_by_name === studentFullName); - // const relevantDocument = relevantDocuments.slice(-1)[0]; - return ( <Modal open={this.state.showModal} @@ -79,6 +84,31 @@ class AddSolutionForm extends Component { {this.props.disabled ? customMessage(disabledText, undefined, undefined, this.props.disabled) : <Form> + {lastName ? + <Segment style={{paddingBottom: '1em'}}> + <div style={{ marginBottom: '1em', fontWeight: 'bold' }}>LegutĂłbbi megoldĂĄsod:</div> + <Segment attached='top'> + <h5 style={{paddingBottom: '0.4em'}}>CĂm:</h5> + {lastName} + </Segment> + <Segment attached> + <h5 style={{paddingBottom: '0.4em'}}>LeĂrĂĄs:</h5> + {lastDesc} + </Segment> + <Segment attached='bottom'> + <h5>Beadott fĂĄjl:</h5> + {lastFile ? + <a href={lastFile} rel='noreferrer noopener' target='_blank'>FĂĄjl letĂśltĂŠse</a> + : + <span>-</span> + } + </Segment> + </Segment> + + : + null + } + <Form.Field control={Input} label='MegoldĂĄs cĂme:' diff --git a/src/components/forms/HiddenForm.js b/src/components/forms/HiddenForm.js index eeca1f9..0aaeecc 100644 --- a/src/components/forms/HiddenForm.js +++ b/src/components/forms/HiddenForm.js @@ -5,11 +5,11 @@ class HiddenForm extends Component { render(){ return ( <div> - <p style={{ marginBottom: 0, fontWeight: this.props.fontWeight }}>{this.props.label}</p> + <div style={{ marginBottom: 0, fontWeight: this.props.fontWeight }}>{this.props.label}</div> <Segment style={{ marginTop: 0 }}> - <p> + <div> {this.props.value} - </p> + </div> </Segment> </div> ) diff --git a/src/components/pages/Homework.js b/src/components/pages/Homework.js index 6acd11e..01ec059 100644 --- a/src/components/pages/Homework.js +++ b/src/components/pages/Homework.js @@ -13,6 +13,7 @@ import moment from 'moment'; import { getTasks, getSolutions, + getDocuments, addTask, setSelectedTask, deleteTask, @@ -69,18 +70,18 @@ export const customMessage = (header, text, marginBottom, warning) => ( class Homework extends Component { componentDidMount() { - this.props.getTasks(); - this.props.getProfiles(); - this.props.getSolutions(this.props.user.id); + this.props.getTasks() + this.props.getProfiles() + this.props.getSolutions() + this.props.getDocuments() } // Returns a table style for the given task getTaskDisplayStyle(task) { - const taskSolutions = this.props.homeworks.solutions.filter(solution => - solution.task === task.id).filter(solution => - solution.created_by === this.props.user.id); + const taskSolution = this.props.homeworks.solutions + .filter(solution => solution.task === task.id) - if (taskSolutions.length === 0) { + if (taskSolution.length === 0) { if (moment().isBefore(task.deadline)) { return 'can_submit'; } @@ -88,11 +89,11 @@ class Homework extends Component { return 'no_submit'; } - if (taskSolutions[taskSolutions.length - 1].corrected === false) { + if (taskSolution[0].corrected === false) { return 'wait_correction'; } - if (taskSolutions[taskSolutions.length - 1].accepted === false) { + if (taskSolution[0].accepted === false) { return 'no_accept'; } @@ -103,8 +104,9 @@ class Homework extends Component { // given parameters separates the active/inactive tasks and normal/staff users renderTaskList(active, staff) { const { user, homeworks } = this.props; - const profileSolutions = homeworks.solutions.filter(solution => - solution.created_by === user.id); + const profileSolutions = homeworks.solutions + .filter(solution => solution.created_by === user.id); + // Normal user if (!staff) { @@ -372,6 +374,7 @@ export default connect( getTasks, setSelectedTask, getSolutions, + getDocuments, addTask, deleteTask, getProfiles, -- GitLab