diff --git a/frontend/src/components/mapMenu/EmployeeMap/EmployeeMap.tsx b/frontend/src/components/mapMenu/EmployeeMap/EmployeeMap.tsx index ea718d4..641b498 100644 --- a/frontend/src/components/mapMenu/EmployeeMap/EmployeeMap.tsx +++ b/frontend/src/components/mapMenu/EmployeeMap/EmployeeMap.tsx @@ -89,11 +89,13 @@ const EmployeeMap: React.FC = observer(({user, logOut}) => {
{levelStore.availableLevels.map((level, index) => { - return + return ( + + ) })}
diff --git a/frontend/src/components/mapMenu/UIMapMenu/Level/ModalLevelBody.tsx b/frontend/src/components/mapMenu/UIMapMenu/Level/ModalLevelBody.tsx index bb74212..84cc3c7 100644 --- a/frontend/src/components/mapMenu/UIMapMenu/Level/ModalLevelBody.tsx +++ b/frontend/src/components/mapMenu/UIMapMenu/Level/ModalLevelBody.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, {useState} from 'react'; import "./modalLevelBody.scss" @@ -9,35 +9,28 @@ import HeaderModal from "../../../../UIComponents/modalWindow/HeaderModal.tsx"; import MenuItem from "./MenuItem.tsx"; -import {ITaskType, ITheoryUnitType} from "../../../../types/TaskType.ts"; +import {ITaskType, ITheoryUnitType, IQuestionType} from "../../../../types/TaskType.ts"; import {IMenuItemType} from "../../../../types/MenuItemType.ts"; import {ILevelType} from "../../../../types/LevelType.ts"; -import levelStore from "../../../../store/levelStore.ts"; -import {observer} from "mobx-react-lite"; - interface IModalLevelProps { level: ILevelType } -const ModalLevelBody: React.FC = observer(({level}) => { +const ModalLevelBody: React.FC = ({level}) => { const bodyHeader = renderBodyHeader() + const [levelIndex, setLevelIndex] = useState(0) const menuItems: IMenuItemType[] = [ { type: "theory", - length: level.theoryUnits ? level.theoryUnits.length : 0, - item: level?.theoryUnits + length: level.theory_units ? level.theory_units.length : 0, + item: level?.theory_units }, { - length: level.taskUnits ? level?.taskUnits.length : 0, + length: level.task_units ? level?.task_units.length : 0, type: "tests", - item: level?.taskUnits - }, - { - type: "task", - length: level.taskUnits ? level?.taskUnits.length : 0, - item: level?.taskUnits + item: level?.task_units } ] @@ -65,77 +58,79 @@ const ModalLevelBody: React.FC = observer(({level}) => { for (let j = 0; j < menuItems[i].length; j++) { index++ taskBlocks.push() + } } return taskBlocks } - function renderChosenTask(unit: ITheoryUnitType & ITaskType, type: string) { - switch (type) { - case ("theory"): - return ( + const renderTheory = (unit: ITheoryUnitType | null) => { + return ( + unit + ? (
{unit.title}
{unit.content}
) - case ("test"): - return ( -
-
- {unit.questions.map((question) => { - return ( -
-
{question.question}
- - {question.answer_options.map((answer) => { - return ( -
- - -
- ) - } - )} -
- ) - })} - e.preventDefault()} - text="Отправить ответ"/> - -
- ) - case ("task"): - return ( -
- {unit.title} - {unit.content} -
- ) - default: - return (
Блок пуст
) - } + : null + + ) + } + + const renderTest = (unit: ITaskType | null) => { + console.log(unit) + return ( +
+
+ {unit + ? unit.questions.map((question) => { + return ( +
+
{question.question}
+ + {question.answer_options.map((answer) => { + return ( +
+ + +
+ ) + } + )} +
+ ) + }) + : null + } + e.preventDefault()} + text="Отправить ответ" + /> + +
+ ) } function renderTasks(menuItems?: IMenuItemType[], theoryUnits?: ITheoryUnitType[], taskUnits?: ITaskType[]) { - if (menuItems && levelStore.chosenTaskIndex <= menuItems[0].length) - return renderChosenTask(theoryUnits[levelStore.chosenTaskIndex - 1], "theory") - if (menuItems && levelStore.chosenTaskIndex <= menuItems[0].length + menuItems[1].length) - return renderChosenTask(taskUnits[levelStore.chosenTaskIndex - menuItems[0].length - 1], "test") + if (menuItems && levelIndex <= menuItems[0].length) { + return renderTheory(theoryUnits ? theoryUnits[levelIndex] : null) + } + if (menuItems && levelIndex <= menuItems[0].length + menuItems[1].length) { + return renderTest(taskUnits ? taskUnits[levelIndex - menuItems[0].length] : null) + } } return (
- {menuItems ?
{renderMenuUnitsBlocks(menuItems)}
: "" } - - {renderTasks(menuItems, level.theoryUnits, level.taskUnits)} + {renderTasks(menuItems, level.theory_units, level.task_units)}
); -}); +}; export default ModalLevelBody; diff --git a/frontend/src/components/mapMenu/UIMapMenu/UserProfile/UserInfo.tsx b/frontend/src/components/mapMenu/UIMapMenu/UserProfile/UserInfo.tsx index d915473..c1658f1 100644 --- a/frontend/src/components/mapMenu/UIMapMenu/UserProfile/UserInfo.tsx +++ b/frontend/src/components/mapMenu/UIMapMenu/UserProfile/UserInfo.tsx @@ -1,4 +1,4 @@ -import React, {useEffect, useState} from 'react'; +import React from 'react'; import CustomInput from "../../../../UIComponents/customInput/CustomInput.tsx"; import {IEmployeeType} from "../../../../types/EmployeeType.ts"; diff --git a/frontend/src/store/levelStore.ts b/frontend/src/store/levelStore.ts index da940f7..2b811ce 100644 --- a/frontend/src/store/levelStore.ts +++ b/frontend/src/store/levelStore.ts @@ -8,7 +8,7 @@ import moduleMenuStore from "./moduleMenuStore.ts"; import {ILevelType} from "../types/LevelType.ts"; class levelStore { - chosenTaskIndex: number = 1 + chosenTaskIndex: number = 0 availableLevels: ILevelType[] = [] choosedLevel: ILevelType | null = null diff --git a/frontend/src/types/LevelType.ts b/frontend/src/types/LevelType.ts index 09318df..6765e72 100644 --- a/frontend/src/types/LevelType.ts +++ b/frontend/src/types/LevelType.ts @@ -4,6 +4,6 @@ export type ILevelType = { id: string, title: string, body?: string, - theoryUnits?: ITheoryUnitType[] - taskUnits?: ITaskType[] + theory_units?: ITheoryUnitType[] + task_units?: ITaskType[] } diff --git a/frontend/src/types/TaskType.ts b/frontend/src/types/TaskType.ts index 320c52e..88ece7a 100644 --- a/frontend/src/types/TaskType.ts +++ b/frontend/src/types/TaskType.ts @@ -19,15 +19,13 @@ export interface IAnswerType { } -export interface IUnitType extends ITheoryUnitType, ITaskType{ - -} export interface IQuestionType { - id: string - possibleAnswers: IAnswerType[] - question: string - taskId: string - type: string + id: string, + possibleAnswers: IAnswerType[], + question: string, + taskId: string, + type: string, + answer_options: IAnswerType[] }