diff --git a/src/components/Card/PlanLessonCard.tsx b/src/components/Card/PlanLessonCard.tsx new file mode 100644 index 00000000..798bda3a --- /dev/null +++ b/src/components/Card/PlanLessonCard.tsx @@ -0,0 +1,287 @@ +import { CheckIcon, CloseIcon } from '@chakra-ui/icons'; +import { + Box, + Card, + CardBody, + Checkbox, + Flex, + NumberDecrementStepper, + NumberIncrementStepper, + NumberInput, + NumberInputField, + NumberInputStepper, + Select, + SpaceProps, + Text, +} from '@chakra-ui/react'; +import { useEffect, useState } from 'react'; +import { + LearningOutcome, + PlanLessonNode, + QuestionTypeMap, +} from '../../types/polyglotElements'; + +type FlowCardProps = { + planNode: PlanLessonNode; + py?: SpaceProps['py']; + px?: SpaceProps['px']; + id: number; + isSelected: boolean; + setSelectedNode: (id: number) => void; + updateNodeAt: (id: number, updatedNode: PlanLessonNode) => void; +}; + +type SpecificData = { + solutions_number: number; + distractors_number: number; + easily_discardable_distractors_number: number; +}; + +const PlanLessonCard = ({ + planNode, + px, + py, + id, + setSelectedNode, + isSelected, + updateNodeAt, +}: FlowCardProps) => { + const [specificData, setSpecificData] = useState({ + solutions_number: 1, + distractors_number: 1, + easily_discardable_distractors_number: 1, + }); + + const planNodeSuggestedType = planNode.type; + + useEffect(() => { + updateNodeAt(id, { + type: planNode.type, + topic: planNode.topic, + details: planNode.details, + learning_outcome: planNode.learning_outcome, + duration: planNode.duration, + data: specificData, + }); + }, [specificData]); + + return ( + + + + + + + Topic: {planNode.topic} + + + Type: {planNode.type} + + + Details: {planNode.details} + + + + {/* + + Duration: {planNode.duration} min + */} + + + setSelectedNode(id)} + icon={isSelected ? : } + colorScheme="green" + size="lg" + /> + + + + + ); +}; + +export default PlanLessonCard; diff --git a/src/components/LateralMenu/LateralMenu.tsx b/src/components/LateralMenu/LateralMenu.tsx index 021ff69b..3bd5120d 100644 --- a/src/components/LateralMenu/LateralMenu.tsx +++ b/src/components/LateralMenu/LateralMenu.tsx @@ -143,7 +143,7 @@ const LateralMenu = ({ isOpen }: LateralMenuProps) => { {type.label} - + {nodes .filter((node) => node.group === type.group) .map((nodes) => ( diff --git a/src/components/Modals/AIToolModal.tsx b/src/components/Modals/AIToolModal.tsx index 292be289..15e8da8e 100644 --- a/src/components/Modals/AIToolModal.tsx +++ b/src/components/Modals/AIToolModal.tsx @@ -21,7 +21,6 @@ import { useToast, } from '@chakra-ui/react'; import { AxiosResponse } from 'axios'; -import { empty } from 'fp-ts/lib/ReadonlyRecord'; import { useState } from 'react'; import { useFormContext } from 'react-hook-form'; import { API } from '../../data/api'; @@ -30,7 +29,7 @@ import { AIMaterialGenerated, EducationLevel, LearningOutcome, - QuestionType, + QuestionTypeMap, Topic, } from '../../types/polyglotElements/AIGenerativeTypes/AIGenerativeTypes'; @@ -75,7 +74,10 @@ const AIToolModal = ({ ]); const [topicIndex, setTopicIndex] = useState(0); - let exerciseType: QuestionType | string; + let exerciseTypeKey = QuestionTypeMap.find( + (elem) => elem.nodeType == exType + )?.key; + if (!exerciseTypeKey) exerciseTypeKey = 'ReadMaterial'; const [ca_n, setCA_N] = useState(1); const [da_n, setDA_N] = useState(1); const [eda_n, setEDA_N] = useState(1); @@ -85,25 +87,6 @@ const AIToolModal = ({ const toast = useToast(); const { setValue } = useFormContext(); const word = exType == 'TrueFalseNode' ? 'Statements' : 'Answers'; - switch (exType) { - case 'closeEndedQuestionNode': - exerciseType = QuestionType.ShortAnswerQuestion; - break; - case 'OpenQuestionNode': - exerciseType = QuestionType.OpenQuestion; - break; - case 'TrueFalseNode': - exerciseType = QuestionType.TrueOrFalse; - break; - case 'multipleChoiceQuestionNode': - exerciseType = QuestionType.MultipleChoice; - break; - case 'ReadMaterialNode': - exerciseType = 'ReadMaterial'; - break; - default: - throw 'error in type'; - } return (