From cfdb800df040f5273bc65abf8394bae00f348dfd Mon Sep 17 00:00:00 2001 From: swve Date: Sat, 7 Oct 2023 16:46:53 +0200 Subject: [PATCH] feat: add activity title edition --- .../Pages/CourseEdit/Draggables/Activity.tsx | 51 +++++++++++++++---- .../Pages/CourseEdit/Draggables/Chapter.tsx | 2 +- 2 files changed, 43 insertions(+), 10 deletions(-) diff --git a/front/components/Pages/CourseEdit/Draggables/Activity.tsx b/front/components/Pages/CourseEdit/Draggables/Activity.tsx index 18a0cb4b..9d92bc21 100644 --- a/front/components/Pages/CourseEdit/Draggables/Activity.tsx +++ b/front/components/Pages/CourseEdit/Draggables/Activity.tsx @@ -1,16 +1,23 @@ +import React from "react"; import Link from "next/link"; import { Draggable } from "react-beautiful-dnd"; -import { EyeOpenIcon, Pencil2Icon, TrashIcon } from '@radix-ui/react-icons' import { getAPIUrl, getUriWithOrg } from "@services/config/config"; -import { FileText, Video, Sparkles, XSquare, X, Pencil, MoreVertical, Eye } from "lucide-react"; +import { FileText, Video, Sparkles, X, Pencil, MoreVertical, Eye, Save, File } from "lucide-react"; import { mutate } from "swr"; import { revalidateTags } from "@services/utils/ts/requests"; import { useRouter } from "next/navigation"; import ConfirmationModal from "@components/StyledElements/ConfirmationModal/ConfirmationModal"; -import { deleteActivity } from "@services/courses/activities"; +import { deleteActivity, updateActivity } from "@services/courses/activities"; + +interface ModifiedActivityInterface { + activityId: string; + activityName: string; +} function Activity(props: any) { const router = useRouter(); + const [modifiedActivity, setModifiedActivity] = React.useState(undefined); + const [selectedActivity, setSelectedActivity] = React.useState(undefined); async function removeActivity() { await deleteActivity(props.activity.id); @@ -19,6 +26,22 @@ function Activity(props: any) { router.refresh(); } + async function updateActivityName(activityId: string) { + if ((modifiedActivity?.activityId === activityId) && selectedActivity !== undefined) { + setSelectedActivity(undefined); + let modifiedActivityCopy = { + name: modifiedActivity.activityName, + description: '', + type: props.activity.type, + content: props.activity.content, + } + + await updateActivity(modifiedActivityCopy, activityId) + await mutate(`${getAPIUrl()}chapters/meta/course_${props.courseid}`) + await revalidateTags(['courses'], props.orgslug) + router.refresh(); + } + } return ( @@ -26,17 +49,27 @@ function Activity(props: any) {
- {props.activity.type === "video" && <>
} - {props.activity.type === "documentpdf" && <>
Document
} + {props.activity.type === "video" && <> +
} + {props.activity.type === "documentpdf" && <>
Document
} {props.activity.type === "dynamic" && <>
Dynamic
}
-
-

{props.activity.name}

+
+ + {selectedActivity === props.activity.id ? + (
+ setModifiedActivity({ activityId: props.activity.id, activityName: e.target.value })} /> + +
) : (

{props.activity.name}

)} + setSelectedActivity(props.activity.id)} + size={12} className="text-neutral-400 hover:cursor-pointer" />
- {props.activity.type === "dynamic" && <> + {props.activity.type === "dynamic" && <> - +
diff --git a/front/components/Pages/CourseEdit/Draggables/Chapter.tsx b/front/components/Pages/CourseEdit/Draggables/Chapter.tsx index d0bafbd9..ba6e7f2f 100644 --- a/front/components/Pages/CourseEdit/Draggables/Chapter.tsx +++ b/front/components/Pages/CourseEdit/Draggables/Chapter.tsx @@ -56,7 +56,7 @@ function Chapter(props: any) { {selectedChapter === props.info.list.chapter.id ? (
- setModifiedChapter({ chapterId: props.info.list.chapter.id, chapterName: e.target.value })} /> + setModifiedChapter({ chapterId: props.info.list.chapter.id, chapterName: e.target.value })} />