Skip to content

Commit 57d0aee

Browse files
committed
TaskExperimental: отображать ошибки редактирования в дереве
1 parent 778bf9b commit 57d0aee

2 files changed

Lines changed: 11 additions & 6 deletions

File tree

hwproj.front/src/components/Courses/CourseExperimental.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import CourseHomeworkExperimental from "components/Homeworks/CourseHomeworkExper
2626
import CourseTaskExperimental from "../Tasks/CourseTaskExperimental";
2727
import {DotLottieReact} from "@lottiefiles/dotlottie-react";
2828
import EditIcon from "@mui/icons-material/Edit";
29+
import ErrorIcon from '@mui/icons-material/Error';
2930

3031
interface ICourseExperimentalProps {
3132
homeworks: HomeworkViewModel[]
@@ -121,7 +122,7 @@ export const CourseExperimental: FC<ICourseExperimentalProps> = (props) => {
121122
const showWarningsForEntity = (entity: HomeworkViewModel | HomeworkTaskViewModel) =>
122123
isMentor && (entity.publicationDateNotSet || entity.hasDeadline && entity.deadlineDateNotSet)
123124

124-
const renderTaskStatus = (task: HomeworkTaskViewModel & { isModified?: boolean }) => {
125+
const renderTaskStatus = (task: HomeworkTaskViewModel & { isModified?: boolean, hasErrors?: boolean }) => {
125126
if (taskSolutionsMap.has(task.id!)) {
126127
const solutions = taskSolutionsMap.get(task.id!)
127128
const {
@@ -139,6 +140,7 @@ export const CourseExperimental: FC<ICourseExperimentalProps> = (props) => {
139140
</Tooltip>
140141
)
141142
}
143+
if (task.hasErrors) return <ErrorIcon fontSize="small" color={"error"}/>
142144
if (task.isModified) return <EditIcon fontSize="small" color={"primary"}/>
143145
return showWarningsForEntity(task) ? (
144146
<Typography color={task.isDeferred ? "textSecondary" : "textPrimary"}>

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

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ interface IEditTaskMetadataState {
2121
}
2222

2323
const CourseTaskEditor: FC<{
24-
speculativeTask: HomeworkTaskViewModel & { isModified?: boolean },
24+
speculativeTask: HomeworkTaskViewModel & { isModified?: boolean, hasErrors?: boolean },
2525
speculativeHomework: HomeworkViewModel,
2626
onUpdate: (update: { task: HomeworkTaskViewModel, isDeleted?: boolean, isSaved?: boolean }) => void,
2727
toEditHomework: () => void,
@@ -78,7 +78,7 @@ const CourseTaskEditor: FC<{
7878
const [title, setTitle] = useState<string>(task.title!)
7979
const [maxRating, setMaxRating] = useState<number>(task.maxRating!)
8080
const [description, setDescription] = useState<string>(task.description!)
81-
const [hasErrors, setHasErrors] = useState<boolean>(false)
81+
const [hasErrors, setHasErrors] = useState<boolean>(props.speculativeTask.hasErrors || false)
8282
const [showDeleteConfirmation, setShowDeleteConfirmation] = useState<boolean>(false)
8383

8484
const [handleSubmitLoading, setHandleSubmitLoading] = useState(false);
@@ -87,15 +87,16 @@ const CourseTaskEditor: FC<{
8787
const publicationDate = metadata?.publicationDate || homework.publicationDate
8888

8989
useEffect(() => {
90-
const update: HomeworkTaskViewModel = {
90+
const update = {
9191
...props.speculativeTask,
9292
...metadata!,
9393
title: title!,
9494
description: description,
9595
maxRating: maxRating,
96+
hasErrors: hasErrors
9697
}
9798
props.onUpdate({task: update})
98-
}, [title, description, maxRating, metadata])
99+
}, [title, description, maxRating, metadata, hasErrors])
99100

100101
const handleSubmit = async (e: any) => {
101102
e.preventDefault()
@@ -126,7 +127,7 @@ const CourseTaskEditor: FC<{
126127
props.onUpdate({task, isDeleted: true})
127128
}
128129

129-
const isDisabled = hasErrors || !isLoaded || !title || !maxRating
130+
const isDisabled = hasErrors || !isLoaded
130131

131132
const homeworkPublicationDateIsSet = !homework.publicationDateNotSet
132133

@@ -145,6 +146,7 @@ const CourseTaskEditor: FC<{
145146
value={title}
146147
onChange={(e) => {
147148
e.persist()
149+
setHasErrors(!e.target.value)
148150
setTitle(e.target.value)
149151
}}
150152
/>
@@ -162,6 +164,7 @@ const CourseTaskEditor: FC<{
162164
value={maxRating}
163165
onChange={(e) => {
164166
e.persist()
167+
setHasErrors(+e.target.value <= 0)
165168
setMaxRating(+e.target.value)
166169
}}
167170
/>

0 commit comments

Comments
 (0)