2022-05-27 14:06:07 +00:00
|
|
|
|
import React from 'react';
|
2022-06-02 10:39:43 +00:00
|
|
|
|
import moment from 'moment';
|
2022-06-01 22:46:07 +00:00
|
|
|
|
import {Input, Select, Stack, Checkbox, Box, Text, Divider, Button} from '@chakra-ui/react'
|
|
|
|
|
import { Formik, Field, Form } from 'formik';
|
2022-05-27 14:06:07 +00:00
|
|
|
|
import DatePicker from "react-datepicker";
|
|
|
|
|
import "react-datepicker/dist/react-datepicker.css";
|
|
|
|
|
import TimePicker from 'react-time-picker';
|
|
|
|
|
|
|
|
|
|
const statusValues: any = ['draft', 'template', 'stop', 'start']
|
|
|
|
|
|
|
|
|
|
export default () => {
|
2022-06-02 10:39:43 +00:00
|
|
|
|
|
2022-06-02 19:18:35 +00:00
|
|
|
|
const Options = React.useMemo(() => () => (
|
|
|
|
|
statusValues.map((e:string,i:number)=> {
|
|
|
|
|
return <option key={i} value={e}>{e}</option>
|
|
|
|
|
})
|
|
|
|
|
), []);
|
|
|
|
|
|
2022-05-27 14:06:07 +00:00
|
|
|
|
return(
|
|
|
|
|
<Box
|
|
|
|
|
padding="20px"
|
|
|
|
|
>
|
2022-06-01 22:46:07 +00:00
|
|
|
|
<Formik
|
|
|
|
|
initialValues={{
|
|
|
|
|
name: "",
|
|
|
|
|
description: "",
|
|
|
|
|
config: "",
|
|
|
|
|
status: "draft",
|
|
|
|
|
save: true,
|
|
|
|
|
resquiz: true,
|
|
|
|
|
incomplete: true,
|
|
|
|
|
notification: true,
|
|
|
|
|
unique: true,
|
|
|
|
|
time: "",
|
|
|
|
|
pause: false,
|
|
|
|
|
date: null
|
|
|
|
|
}}
|
|
|
|
|
onSubmit={(values) => {
|
|
|
|
|
console.log(values)
|
|
|
|
|
}}
|
2022-05-27 14:06:07 +00:00
|
|
|
|
>
|
2022-06-01 22:46:07 +00:00
|
|
|
|
{({ values, setFieldValue }) => {
|
|
|
|
|
return (
|
|
|
|
|
<Form>
|
|
|
|
|
<label htmlFor="firstName">First Name</label>
|
|
|
|
|
|
|
|
|
|
<Stack
|
|
|
|
|
backgroundColor="lightgray"
|
|
|
|
|
padding="20px"
|
|
|
|
|
>
|
|
|
|
|
<Text>Название опроса (максимум 280 символов)</Text>
|
|
|
|
|
<Field as={Input} placeholder='name' name="name" />
|
|
|
|
|
<Text>Описание опроса</Text>
|
|
|
|
|
<Field as={Input} placeholder='description' name="description"/>
|
|
|
|
|
<Field as={Input} type="hidden" placeholder='config' name="config"/>
|
|
|
|
|
<Text>Статус опроса</Text>
|
|
|
|
|
<Field as={Select} name="status">
|
|
|
|
|
{
|
2022-06-02 19:18:35 +00:00
|
|
|
|
<Options/>
|
2022-06-01 22:46:07 +00:00
|
|
|
|
}
|
|
|
|
|
</Field>
|
|
|
|
|
</Stack>
|
|
|
|
|
<Stack padding="20px">
|
|
|
|
|
<Text>Сохранить устройство</Text>
|
|
|
|
|
<Field as={Checkbox} name="save" isChecked={values.save}/>
|
|
|
|
|
<Divider/>
|
|
|
|
|
<Text>Разрешить пользователям перепроходить опрос</Text>
|
|
|
|
|
<Field as={Checkbox} name="resquiz" isChecked={values.resquiz}/>
|
|
|
|
|
<Divider/>
|
|
|
|
|
<Text>Сохранять статистику неполных прохождений</Text>
|
|
|
|
|
<Field as={Checkbox} name="incomplete" isChecked={values.incomplete}/>
|
|
|
|
|
<Divider/>
|
|
|
|
|
<Text>Уведомлять по почте при каждом прохождении опроса</Text>
|
|
|
|
|
<Field as={Checkbox} name="notification" isChecked={values.notification}/>
|
|
|
|
|
<Divider/>
|
|
|
|
|
<Text>Сохранять статистику только для уникального прохождения опроса</Text>
|
|
|
|
|
<Field as={Checkbox} name="unique" isChecked={values.unique}/>
|
|
|
|
|
<Divider/>
|
|
|
|
|
</Stack>
|
|
|
|
|
<Stack
|
|
|
|
|
backgroundColor="lightgray"
|
|
|
|
|
padding="20px"
|
|
|
|
|
>
|
2022-06-02 19:18:35 +00:00
|
|
|
|
<Text>Время прохождения опроса</Text>
|
2022-06-01 22:46:07 +00:00
|
|
|
|
<Field
|
|
|
|
|
as={TimePicker}
|
|
|
|
|
name="time"
|
|
|
|
|
format="HH : mm"
|
|
|
|
|
disableClock={true}
|
|
|
|
|
amPmAriaLabel={"am"}
|
|
|
|
|
onChange={(e:any) => {
|
|
|
|
|
if (e !== null) {
|
|
|
|
|
setFieldValue("time", e)
|
2022-06-02 10:39:43 +00:00
|
|
|
|
} else {
|
|
|
|
|
//При стирании значения пользователем затирается и последнее значение
|
|
|
|
|
setFieldValue("time", "")
|
2022-06-01 22:46:07 +00:00
|
|
|
|
}
|
|
|
|
|
}}
|
|
|
|
|
value={values.time}
|
|
|
|
|
/>
|
|
|
|
|
<Text>Разрешить ставить на паузу</Text>
|
2022-06-02 10:39:43 +00:00
|
|
|
|
<Field as={Checkbox} name="pause" isDisabled={values.time.length === 0 ? true : false}/>
|
2022-06-01 22:46:07 +00:00
|
|
|
|
<Text>Дата проведения опроса</Text>
|
|
|
|
|
<Field
|
|
|
|
|
as={DatePicker}
|
|
|
|
|
name="date"
|
2022-06-02 10:39:43 +00:00
|
|
|
|
selected={values.date}
|
2022-06-01 22:46:07 +00:00
|
|
|
|
dateFormat="MM/dd/yyyy"
|
2022-06-02 10:39:43 +00:00
|
|
|
|
onChange={(e:any) => {
|
|
|
|
|
setFieldValue("date", e)
|
|
|
|
|
}}
|
|
|
|
|
minDate={new Date()}
|
2022-06-01 22:46:07 +00:00
|
|
|
|
/>
|
|
|
|
|
</Stack>
|
|
|
|
|
<Button type="submit">Сохранить</Button>
|
|
|
|
|
</Form>
|
|
|
|
|
)
|
|
|
|
|
}}
|
|
|
|
|
</Formik>
|
2022-05-27 14:06:07 +00:00
|
|
|
|
</Box>
|
|
|
|
|
)
|
|
|
|
|
}
|