Обновлен компонент LessonList: изменена логика генерации уроков при открытии формы создания, добавлены обработчики для редактирования уроков. Обновлены компоненты Item и LessonItems для поддержки новых функций редактирования. Упрощена логика запуска генерации уроков.
This commit is contained in:
parent
e178ce5cd6
commit
3357c9ddd0
@ -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')}
|
||||||
|
@ -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}
|
||||||
/>
|
/>
|
||||||
|
@ -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}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user