Skip to content

Commit 72997a0

Browse files
committed
Task: показывать критерии оценивания на странице решений
1 parent b4dbb1d commit 72997a0

3 files changed

Lines changed: 33 additions & 75 deletions

File tree

hwproj.front/src/components/Tasks/CourseTaskExperimental.tsx

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import CloseIcon from "@mui/icons-material/Close";
2828
import Collapse from "@mui/material/Collapse";
2929
import ExpandLessIcon from "@mui/icons-material/ExpandLess";
3030
import ExpandMoreIcon from "@mui/icons-material/ExpandMore";
31+
import TaskCriteria from "./TaskCriteria";
3132

3233

3334
interface IEditTaskMetadataState {
@@ -547,24 +548,7 @@ const CourseTaskExperimental: FC<{
547548
<MarkdownPreview value={task.description!}/>
548549
</Typography>
549550

550-
{task.criteria && task.criteria.length > 0 && (
551-
<>
552-
<Divider style={{marginTop: 15, marginBottom: 10}}/>
553-
554-
<Typography variant="h6" gutterBottom style={{fontSize: 16}}>
555-
Критерии оценивания
556-
</Typography>
557-
558-
<Stack spacing={0.5}>
559-
{task.criteria.map(c => (
560-
<Stack key={c.id} direction="row" alignItems={"center"} justifyContent="space-between">
561-
<Typography variant="body2">{c.name}</Typography>
562-
<Chip style={{fontSize: 14}} size={"small"} color={"default"} label={c.maxPoints}/>
563-
</Stack>
564-
))}
565-
</Stack>
566-
</>
567-
)}
551+
<TaskCriteria task={task}/>
568552
</CardContent>
569553
);
570554
}

hwproj.front/src/components/Tasks/Task.tsx

Lines changed: 6 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,16 @@
11
import * as React from 'react';
22
import Typography from '@material-ui/core/Typography';
3-
import IconButton from '@material-ui/core/IconButton'
4-
import DeleteIcon from '@material-ui/icons/Delete'
53
import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
6-
import EditIcon from '@material-ui/icons/Edit'
7-
import {HomeworkTaskViewModel} from "../../api";
8-
import {Link as RouterLink} from 'react-router-dom'
9-
import ApiSingleton from "../../api/ApiSingleton";
10-
import {Accordion, AccordionDetails, AccordionSummary, Button, Grid, Tooltip} from '@material-ui/core';
11-
import {FC, useState} from "react";
4+
import {HomeworkTaskViewModel} from "@/api";
5+
import {Accordion, AccordionDetails, AccordionSummary, Grid, Tooltip} from '@material-ui/core';
6+
import {FC} from "react";
127
import {makeStyles} from '@material-ui/core/styles';
13-
import DeletionConfirmation from "../DeletionConfirmation";
148
import {Chip, Stack} from "@mui/material";
159
import Utils from "../../services/Utils";
1610
import {getTip} from "../Common/HomeworkTags";
1711
import StarIcon from '@mui/icons-material/Star';
1812
import {MarkdownPreview} from "../Common/MarkdownEditor";
13+
import TaskCriteria from "@/components/Tasks/TaskCriteria";
1914

2015
interface ITaskProp {
2116
task: HomeworkTaskViewModel,
@@ -46,21 +41,6 @@ const Task: FC<ITaskProp> = (props) => {
4641
const publicationDateIsSet = !props.task.publicationDateNotSet
4742
const deadlineDateIsSet = !props.task.deadlineDateNotSet
4843

49-
const [isOpenDialogDeleteTask, setIsOpenDialogDeleteTask] = useState<boolean>(false)
50-
51-
const openDialogDeleteTask = () => {
52-
setIsOpenDialogDeleteTask(true)
53-
}
54-
55-
const closeDialogDeleteTask = () => {
56-
setIsOpenDialogDeleteTask(false)
57-
}
58-
59-
const deleteTask = async () => {
60-
await ApiSingleton.tasksApi.tasksDeleteTask(props.task.id!)
61-
props.onDeleteClick()
62-
}
63-
6444
const {task} = props
6545

6646
const publicationDateString = Utils.renderReadableDate(publicationDate)
@@ -116,7 +96,7 @@ const Task: FC<ITaskProp> = (props) => {
11696
}
11797
{task.hasDeadline && deadlineDateIsSet &&
11898
<Grid item>
119-
<Tooltip
99+
<Tooltip
120100
arrow
121101
title={task.isDeadlineStrict ? "Нельзя публиковать решения после дедлайна" : "Дедлайн"}
122102
>
@@ -139,16 +119,6 @@ const Task: FC<ITaskProp> = (props) => {
139119
<Chip variant="outlined" label="без дедлайна"/>
140120
</Grid>
141121
}
142-
{props.forMentor && !props.isReadingMode &&
143-
<Grid item>
144-
<IconButton aria-label="Delete" onClick={openDialogDeleteTask}>
145-
<DeleteIcon fontSize="small"/>
146-
</IconButton>
147-
<RouterLink to={'/task/' + task.id!.toString() + '/edit'}>
148-
<EditIcon fontSize="small"/>
149-
</RouterLink>
150-
</Grid>
151-
}
152122
</Grid>
153123
</div>
154124
</AccordionSummary>
@@ -157,31 +127,10 @@ const Task: FC<ITaskProp> = (props) => {
157127
<Typography variant="body1">
158128
<MarkdownPreview value={task.description!}/>
159129
</Typography>
160-
{props.showForCourse && props.forStudent &&
161-
<div style={{marginTop: '15px'}}>
162-
<Button
163-
style={{width: '150px'}}
164-
size="small"
165-
variant="contained"
166-
color="primary"
167-
onClick={() => window.location.assign("/task/" + task.id!.toString())}
168-
>
169-
Решения
170-
</Button>
171-
</div>
172-
}
130+
<TaskCriteria task={task}/>
173131
</Grid>
174132
</AccordionDetails>
175133
</Accordion>
176-
<DeletionConfirmation
177-
onCancel={closeDialogDeleteTask}
178-
onSubmit={deleteTask}
179-
isOpen={isOpenDialogDeleteTask}
180-
dialogTitle={'Удаление задачи'}
181-
dialogContentText={`Вы точно хотите удалить задачу "${task.title}"?`}
182-
confirmationWord={''}
183-
confirmationText={''}
184-
/>
185134
</div>
186135
);
187136
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import {HomeworkTaskViewModel} from "@/api";
2+
import {Chip, Divider, Stack, Typography} from "@mui/material";
3+
import {FC} from "react";
4+
5+
const TaskCriteria: FC<{ task: HomeworkTaskViewModel }> = ({task}) => {
6+
return task.criteria && task.criteria.length > 0 ? (
7+
<>
8+
<Divider style={{marginTop: 15, marginBottom: 10}}/>
9+
10+
<Typography variant="h6" gutterBottom style={{fontSize: 16}}>
11+
Критерии оценивания
12+
</Typography>
13+
14+
<Stack spacing={0.5}>
15+
{task.criteria.map(c => (
16+
<Stack key={c.id} direction="row" alignItems={"center"} justifyContent="space-between">
17+
<Typography variant="body2">{c.name}</Typography>
18+
<Chip style={{fontSize: 14}} size={"small"} color={"default"} label={c.maxPoints}/>
19+
</Stack>
20+
))}
21+
</Stack>
22+
</>
23+
) : null
24+
}
25+
export default TaskCriteria;

0 commit comments

Comments
 (0)