Обновлен компонент LessonList: изменена логика генерации уроков при открытии формы создания, добавлены обработчики для редактирования уроков. Обновлены компоненты Item и LessonItems для поддержки новых функций редактирования. Упрощена логика запуска генерации уроков.

This commit is contained in:
Primakov Alexandr Alexandrovich 2025-03-23 15:00:08 +03:00
parent e178ce5cd6
commit 3357c9ddd0
3 changed files with 37 additions and 8 deletions

View File

@ -30,6 +30,7 @@ type ItemProps = {
isTeacher: boolean isTeacher: boolean
courseId: string courseId: string
setlessonToDelete(): void setlessonToDelete(): void
setEditLesson?: () => void
students: unknown[] students: unknown[]
} }
@ -40,6 +41,7 @@ export const Item: React.FC<ItemProps> = ({
isTeacher, isTeacher,
courseId, courseId,
setlessonToDelete, setlessonToDelete,
setEditLesson,
students, students,
}) => { }) => {
const [edit, setEdit] = useState(false) const [edit, setEdit] = useState(false)
@ -128,7 +130,11 @@ export const Item: React.FC<ItemProps> = ({
<MenuList> <MenuList>
<MenuItem <MenuItem
onClick={() => { onClick={() => {
setEdit(true) if (setEditLesson) {
setEditLesson();
} else {
setEdit(true);
}
}} }}
> >
{t('journal.pl.edit')} {t('journal.pl.edit')}

View File

@ -15,6 +15,7 @@ type LessonItemProps = {
isTeacher: boolean isTeacher: boolean
courseId: string courseId: string
setlessonToDelete(lesson: Lesson): void setlessonToDelete(lesson: Lesson): void
setEditLesson?(lesson: Lesson): void
} }
export const LessonItems: React.FC<LessonItemProps> = ({ export const LessonItems: React.FC<LessonItemProps> = ({
@ -23,6 +24,7 @@ export const LessonItems: React.FC<LessonItemProps> = ({
isTeacher, isTeacher,
courseId, courseId,
setlessonToDelete, setlessonToDelete,
setEditLesson,
}) => ( }) => (
<> <>
{date && ( {date && (
@ -37,6 +39,7 @@ export const LessonItems: React.FC<LessonItemProps> = ({
key={lesson.id} key={lesson.id}
{...lesson} {...lesson}
setlessonToDelete={() => setlessonToDelete(lesson)} setlessonToDelete={() => setlessonToDelete(lesson)}
setEditLesson={setEditLesson ? () => setEditLesson(lesson) : undefined}
courseId={courseId} courseId={courseId}
isTeacher={isTeacher} isTeacher={isTeacher}
/> />

View File

@ -102,12 +102,6 @@ const LessonList = () => {
return lessonsData.sort((a, b) => (a.date < b.date ? 1 : -1)) return lessonsData.sort((a, b) => (a.date < b.date ? 1 : -1))
}, [groupByDate, isSuccess, sorted]) }, [groupByDate, isSuccess, sorted])
useEffect(() => {
if (isTeacher(user) && !isSuccessGenerateLessons) {
generateLessonsMutation(courseId)
}
}, [isSuccessGenerateLessons, user, courseId, generateLessonsMutation])
useEffect(() => { useEffect(() => {
if (isSuccessGenerateLessons) { if (isSuccessGenerateLessons) {
console.log(generateLessons) console.log(generateLessons)
@ -205,6 +199,31 @@ const LessonList = () => {
setShowForm(false) setShowForm(false)
setEditLesson(null) setEditLesson(null)
setSuggestedLessonToCreate(null) setSuggestedLessonToCreate(null)
// Сбрасываем флаги генерации, чтобы при повторном открытии формы
// генерация запускалась снова
if (generateLessons) {
// Сбрасываем данные генерации (если в API есть такая возможность)
// или при повторном открытии формы будем перезапрашивать данные
}
}
// Обработчик открытия формы создания новой лекции
const handleOpenForm = () => {
setShowForm(true)
// Запускаем генерацию лекций только при открытии формы создания новой лекции
// и если генерация ещё не была запущена
if (isTeacher(user) && !editLesson && !generateLessons && !isLoadingGenerateLessons) {
generateLessonsMutation(courseId)
}
}
// Обработчик редактирования существующей лекции
const handleEditLesson = (lesson) => {
setEditLesson(lesson)
setShowForm(true)
// Не запускаем генерацию при редактировании
} }
if (isLoading) { if (isLoading) {
@ -284,7 +303,7 @@ const LessonList = () => {
<Button <Button
leftIcon={<AddIcon />} leftIcon={<AddIcon />}
colorScheme="green" colorScheme="green"
onClick={() => setShowForm(true)} onClick={handleOpenForm}
> >
{t('journal.pl.common.create')} {t('journal.pl.common.create')}
</Button> </Button>
@ -326,6 +345,7 @@ const LessonList = () => {
isTeacher={isTeacher(user)} isTeacher={isTeacher(user)}
lessons={lessons} lessons={lessons}
setlessonToDelete={setlessonToDelete} setlessonToDelete={setlessonToDelete}
setEditLesson={handleEditLesson}
key={date} key={date}
/> />
))} ))}