|
@@ -1,9 +1,9 @@
|
|
|
import React from 'react';
|
|
import React from 'react';
|
|
|
import {NavLink} from "react-router-dom";
|
|
import {NavLink} from "react-router-dom";
|
|
|
-import {Descriptions, Divider, Form, Input, Button, Checkbox, Collapse, Upload} from "antd";
|
|
|
|
|
|
|
+import {Descriptions, Divider, Form, Input, Button, Checkbox, Collapse, Upload, Select} from "antd";
|
|
|
import {fetcher} from "../../utils/common";
|
|
import {fetcher} from "../../utils/common";
|
|
|
import { error, success } from "../../utils/message";
|
|
import { error, success } from "../../utils/message";
|
|
|
-import {SETS_DETAIL, QUESTIONS_LIST} from "../../utils/constants";
|
|
|
|
|
|
|
+import {SETS_DETAIL, QUESTIONS_LIST, QUESTIONS_DETAIL} from "../../utils/constants";
|
|
|
import {getTokenObject} from "../../utils/utils";
|
|
import {getTokenObject} from "../../utils/utils";
|
|
|
import {FaEdit, FaFileUpload} from "react-icons/fa";
|
|
import {FaEdit, FaFileUpload} from "react-icons/fa";
|
|
|
|
|
|
|
@@ -31,7 +31,13 @@ const QuestionItemDescription = (props) => (
|
|
|
<Collapse>
|
|
<Collapse>
|
|
|
{
|
|
{
|
|
|
props.questions.map( (i,k) => (
|
|
props.questions.map( (i,k) => (
|
|
|
- <Panel header={i.question} key={k}>
|
|
|
|
|
|
|
+ <Panel header={
|
|
|
|
|
+ <div className="d-flex justify-content-between">
|
|
|
|
|
+ <div>{i.question}</div>
|
|
|
|
|
+ <div className="pointer" onClick={ () => props.setEditQuestion(i) }>ویرایش</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ } key={k}
|
|
|
|
|
+ >
|
|
|
<div className="d-flex justify-content-between">
|
|
<div className="d-flex justify-content-between">
|
|
|
<p> گزینه 1) {i.ans1}</p>
|
|
<p> گزینه 1) {i.ans1}</p>
|
|
|
<p> گزینه 2) {i.ans2}</p>
|
|
<p> گزینه 2) {i.ans2}</p>
|
|
@@ -121,10 +127,22 @@ const QuestionCreateForm = (props) => {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const [form] = Form.useForm();
|
|
const [form] = Form.useForm();
|
|
|
|
|
+ const [isEdditing, setIsEdditing] = React.useState(false)
|
|
|
|
|
+
|
|
|
|
|
+ React.useEffect( () => {
|
|
|
|
|
+ if(props.editQuestion !== null){
|
|
|
|
|
+ setIsEdditing(true)
|
|
|
|
|
+ form.setFieldsValue(props.editQuestion)
|
|
|
|
|
+ }
|
|
|
|
|
+ },[props.editQuestion])
|
|
|
|
|
|
|
|
const onFinish = (values) =>{
|
|
const onFinish = (values) =>{
|
|
|
values["test_set"] = props.setId
|
|
values["test_set"] = props.setId
|
|
|
- addQuestion(values)
|
|
|
|
|
|
|
+ if (isEdditing){
|
|
|
|
|
+ editQuestion(values)
|
|
|
|
|
+ }else{
|
|
|
|
|
+ addQuestion(values)
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const addQuestion = (payload) => {
|
|
const addQuestion = (payload) => {
|
|
@@ -137,6 +155,16 @@ const QuestionCreateForm = (props) => {
|
|
|
}).catch( e => error(String(e)) )
|
|
}).catch( e => error(String(e)) )
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ const editQuestion = (payload) => {
|
|
|
|
|
+ fetcher(QUESTIONS_DETAIL(props.editQuestion.id),{
|
|
|
|
|
+ method: "PUT",
|
|
|
|
|
+ body: JSON.stringify(payload)
|
|
|
|
|
+ }).then( response => {
|
|
|
|
|
+ success("ویرایش شد");
|
|
|
|
|
+ setTimeout( () => window.location.reload(), 1000);
|
|
|
|
|
+ }).catch( e => error(String(e)) )
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
return (
|
|
return (
|
|
|
<Form
|
|
<Form
|
|
|
{...formLayout}
|
|
{...formLayout}
|
|
@@ -152,7 +180,7 @@ const QuestionCreateForm = (props) => {
|
|
|
<Form.Item name="ans1" label="گزینه۱" rules={[{ required: true }]}>
|
|
<Form.Item name="ans1" label="گزینه۱" rules={[{ required: true }]}>
|
|
|
<Input />
|
|
<Input />
|
|
|
</Form.Item>
|
|
</Form.Item>
|
|
|
- <Form.Item name="ans2" label="گزین۲" rules={[{ required: true }]}>
|
|
|
|
|
|
|
+ <Form.Item name="ans2" label="گزینه۲" rules={[{ required: true }]}>
|
|
|
<Input />
|
|
<Input />
|
|
|
</Form.Item>
|
|
</Form.Item>
|
|
|
<Form.Item name="ans3" label="گزینه۳" rules={[{ required: true }]}>
|
|
<Form.Item name="ans3" label="گزینه۳" rules={[{ required: true }]}>
|
|
@@ -161,8 +189,24 @@ const QuestionCreateForm = (props) => {
|
|
|
<Form.Item name="ans4" label="گزینه۴" rules={[{ required: true }]}>
|
|
<Form.Item name="ans4" label="گزینه۴" rules={[{ required: true }]}>
|
|
|
<Input />
|
|
<Input />
|
|
|
</Form.Item>
|
|
</Form.Item>
|
|
|
|
|
+ <Form.Item name="answer_index" label="پاسخ صحیح" rules={[{ required: true }]}>
|
|
|
|
|
+ <Select>
|
|
|
|
|
+ <Select.Option className="text-right" value="1">گزینه۱</Select.Option>
|
|
|
|
|
+ <Select.Option className="text-right" value="2">گزینه۲</Select.Option>
|
|
|
|
|
+ <Select.Option className="text-right" value="3">گزینه۳</Select.Option>
|
|
|
|
|
+ <Select.Option className="text-right" value="4">گزینه۴</Select.Option>
|
|
|
|
|
+ </Select>
|
|
|
|
|
+ </Form.Item>
|
|
|
<Form.Item >
|
|
<Form.Item >
|
|
|
<Button type="primary" htmlType="submit">ثبت</Button>
|
|
<Button type="primary" htmlType="submit">ثبت</Button>
|
|
|
|
|
+ {
|
|
|
|
|
+ isEdditing && (
|
|
|
|
|
+ <Button
|
|
|
|
|
+ className="mr-2"
|
|
|
|
|
+ onClick={ () => {setIsEdditing(false); form.resetFields(); props.setEditQuestion(null)}}
|
|
|
|
|
+ >انصراف</Button>
|
|
|
|
|
+ )
|
|
|
|
|
+ }
|
|
|
</Form.Item>
|
|
</Form.Item>
|
|
|
</Form>
|
|
</Form>
|
|
|
)
|
|
)
|
|
@@ -174,6 +218,7 @@ export default function SetDetails(props) {
|
|
|
const [setItem, setSetItem] = React.useState({});
|
|
const [setItem, setSetItem] = React.useState({});
|
|
|
|
|
|
|
|
const [isEditing, setIsEditing] = React.useState(false);
|
|
const [isEditing, setIsEditing] = React.useState(false);
|
|
|
|
|
+ const [editQuestion, setEditQuestion] = React.useState(null)
|
|
|
|
|
|
|
|
React.useEffect( () => {
|
|
React.useEffect( () => {
|
|
|
fetchSets()
|
|
fetchSets()
|
|
@@ -186,7 +231,7 @@ export default function SetDetails(props) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return (
|
|
return (
|
|
|
- <div className="p-5">
|
|
|
|
|
|
|
+ <div className="p-5 mb-5">
|
|
|
<div className="p-3">
|
|
<div className="p-3">
|
|
|
<SetItemDescription item={setItem} setIsEditing={setIsEditing} />
|
|
<SetItemDescription item={setItem} setIsEditing={setIsEditing} />
|
|
|
</div>
|
|
</div>
|
|
@@ -197,12 +242,13 @@ export default function SetDetails(props) {
|
|
|
<div className="my-2">
|
|
<div className="my-2">
|
|
|
<h5 className="mb-3">لیست سوالات</h5>
|
|
<h5 className="mb-3">لیست سوالات</h5>
|
|
|
{ setItem?.questions_info?.length && (
|
|
{ setItem?.questions_info?.length && (
|
|
|
- <QuestionItemDescription questions={setItem.questions_info} />
|
|
|
|
|
|
|
+ <QuestionItemDescription setEditQuestion={setEditQuestion} questions={setItem.questions_info} />
|
|
|
)}
|
|
)}
|
|
|
</div>
|
|
</div>
|
|
|
<Divider />
|
|
<Divider />
|
|
|
<h5>اضافه کردن سوال جدید</h5>
|
|
<h5>اضافه کردن سوال جدید</h5>
|
|
|
- <QuestionCreateForm setId={props.match.params.setId} />
|
|
|
|
|
|
|
+ <QuestionCreateForm setId={props.match.params.setId} editQuestion={editQuestion} setEditQuestion={setEditQuestion} />
|
|
|
|
|
+ <div className="py-5"></div>
|
|
|
</div>
|
|
</div>
|
|
|
)
|
|
)
|
|
|
}
|
|
}
|