работа с десктопами 37, 39 настройка передачи результатов выбора в селект

This commit is contained in:
Tamara 2023-06-07 17:20:45 +03:00
parent 3d478b042a
commit 12e250d9a4
4 changed files with 264 additions and 242 deletions

@ -4,15 +4,17 @@ import { Box, Typography, useTheme } from "@mui/material";
interface Props { interface Props {
image: string; image: string;
text: string; text: string;
border?: string;
} }
export default function CardWithImage({ image, text }: Props) { export default function CardWithImage({ image, text, border }: Props) {
const theme = useTheme(); const theme = useTheme();
return ( return (
<Box sx={{ <Box sx={{
flexGrow: 1, flexGrow: 1,
borderRadius: "12px", borderRadius: "12px",
border: {border},
backgroundColor: "white", backgroundColor: "white",
boxShadow: `0px 100px 309px rgba(210, 208, 225, 0.24), boxShadow: `0px 100px 309px rgba(210, 208, 225, 0.24),
0px 41.7776px 129.093px rgba(210, 208, 225, 0.172525), 0px 41.7776px 129.093px rgba(210, 208, 225, 0.172525),

@ -1,4 +1,4 @@
import { Box, FormControl, Link, MenuItem, Select, Typography, useTheme } from "@mui/material"; import {Box, Button, FormControl, Link, MenuItem, Select, Typography, useTheme} from "@mui/material";
import { useState } from "react"; import { useState } from "react";
import CustomCheckbox from "@ui_kit/CustomCheckbox"; import CustomCheckbox from "@ui_kit/CustomCheckbox";
import AlignLeftIcon from "../../assets/icons/AlignLeftIcon"; import AlignLeftIcon from "../../assets/icons/AlignLeftIcon";
@ -14,6 +14,8 @@ import SelectableButton from "@ui_kit/SelectableButton";
import SelectableIconButton from "./SelectableIconButton"; import SelectableIconButton from "./SelectableIconButton";
import UploadBox from "@ui_kit/UploadBox"; import UploadBox from "@ui_kit/UploadBox";
import CustomTextField from "@ui_kit/CustomTextField"; import CustomTextField from "@ui_kit/CustomTextField";
import {quizStore} from "@root/quizes";
import {useParams} from "react-router-dom";
const designTypes = [ const designTypes = [
@ -27,12 +29,16 @@ type BackgroundType = "image" | "video";
type AlignType = "left" | "right"; type AlignType = "left" | "right";
export default function StartPageSettings() { export default function StartPageSettings() {
const {listQuizes, updateQuizesList, removeQuiz, createBlank} = quizStore();
const params = Number(useParams().quizId);
const theme = useTheme(); const theme = useTheme();
const [designType, setDesignType] = useState<DesignType | "">(designTypes[0][0]); const designType = listQuizes[params].startpage
// const [designType, setDesignType] = useState<DesignType | "">(designTypes[0][0]);
const [backgroundType, setBackgroundType] = useState<BackgroundType>("image"); const [backgroundType, setBackgroundType] = useState<BackgroundType>("image");
const [alignType, setAlignType] = useState<AlignType>("left"); const [alignType, setAlignType] = useState<AlignType>("left");
return ( return (
<>
<Box sx={{ <Box sx={{
backgroundColor: "white", backgroundColor: "white",
borderRadius: "12px", borderRadius: "12px",
@ -68,7 +74,9 @@ export default function StartPageSettings() {
variant="outlined" variant="outlined"
value={designType} value={designType}
displayEmpty displayEmpty
onChange={e => setDesignType(e.target.value as DesignType)} onChange={(e, i) => console.log(e.target, e.target.value, i)}
// onChange={e => setDesignType(e.target.value as DesignType)}
// onChange={updateQuizesList(params, {startpage: "standard"})}
sx={{ sx={{
height: "48px", height: "48px",
borderRadius: "8px", borderRadius: "8px",
@ -114,6 +122,7 @@ export default function StartPageSettings() {
<MenuItem <MenuItem
key={type[0]} key={type[0]}
value={type[0]} value={type[0]}
sx={{ sx={{
display: "flex", display: "flex",
alignItems: "center", alignItems: "center",
@ -272,6 +281,12 @@ export default function StartPageSettings() {
</Typography> </Typography>
</Box> </Box>
</Box> </Box>
<Box>
<Button variant="outlined">Отключить стартовую страницу</Button>
<Button variant="contained">Настроить вопросы</Button>
</Box>
</>
); );
} }

@ -26,24 +26,27 @@ export default function Steptwo ({handleNext}:HandleNext) {
}}> }}>
<Button variant='text' <Button variant='text'
onClick={() => { onClick={() => {
updateQuizesList(params, {startpage: "standard"})
handleNext() handleNext()
}} }}
> >
<CardWithImage image={cardImage1} text="Standart" /> <CardWithImage image={cardImage1} text="Standard" border={listQuizes[params].startpage === "standard" ? "1px solid #7E2AEA" : "none"} />
</Button> </Button>
<Button variant='text' <Button variant='text'
onClick={() => { onClick={() => {
updateQuizesList(params, {startpage: "expanded"})
handleNext() handleNext()
}} }}
> >
<CardWithImage image={cardImage2} text="Expanded" /> <CardWithImage image={cardImage2} text="Expanded" border={listQuizes[params].startpage === "expanded" ? "1px solid #7E2AEA" : "none"}/>
</Button> </Button>
<Button variant='text' <Button variant='text'
onClick={() => { onClick={() => {
updateQuizesList(params, {startpage: "centered"})
handleNext() handleNext()
}} }}
> >
<CardWithImage image={cardImage3} text="Centered" /> <CardWithImage image={cardImage3} text="Centered" border={listQuizes[params].startpage === "centered" ? "1px solid #7E2AEA" : "none"}/>
</Button> </Button>
</Box> </Box>
</Box> </Box>

@ -35,41 +35,15 @@ interface Quizes {
average_time: number, average_time: number,
super: true, super: true,
group_id: number, group_id: number,
step: number step: number,
startpage: string,
config1?: any
} }
export const quizStore = create<QuizStore>()( export const quizStore = create<QuizStore>()(
persist( persist(
(set, get) => ({ (set, get) => ({
listQuizes: { listQuizes: {
// 1: {
// "id": 0,
// "qid": "string",
// "deleted": false,
// "archived": true,
// "fingerprinting": true,
// "repeatable": true,
// "note_prevented": true,
// "mail_notifications": true,
// "unique_answers": true,
// "name": "string",
// "description": "string",
// "config": "string",
// "status": "string",
// "limit": 0,
// "due_to": 0,
// "time_of_passing": 0,
// "pausable": true,
// "version": 0,
// "version_comment": "string",
// "created_at": "string",
// "updated_at": "string",
// "question_cnt": 0,
// "passed_count": 0,
// "average_time": 0,
// "super": true,
// "group_id": 0
// }
}, },
updateQuizesList: (id: number, values: any) => { updateQuizesList: (id: number, values: any) => {
const state = get()["listQuizes"] || {}; const state = get()["listQuizes"] || {};
@ -120,7 +94,35 @@ export const quizStore = create<QuizStore>()(
"average_time": 0, "average_time": 0,
"super": true, "super": true,
"group_id": 0, "group_id": 0,
"step": 1 "step": 1,
"startpage": "",
"config1": {
"type": "", // quiz или form
"favicon": [
{"attrs": "320*650apple","link":"hub.pena.digital/fav/squiz1.jpg"}
],
"logo": "hub.pena.digital/img/logo",
"startpage": {
"description": "",// приветственный текст опроса
"button": "Начать", // текст на кнопке начала опроса
"position": "ltr", // ltr или rtl. отображение элементов поверх фона
"background": {
"type": "image", //image или video
"desctop": "hub.pena.digital/img/back/full.png",
"mobile": "hub.pena.digital/img/back/mobile.png",
"video":"hub.pena.digital/vid/back/vi1.mp4",
"cycle": true //зацикливать видео или нет
},
},
"info": {
"phonenumber": "+79885895677",
"clickable": true,
"orgname": "ООО \"Пена\"",
"site": "hub.pena.digital",
"law": "юридическая информация"
},
"meta": "что-то"
}
}; };
set({listQuizes: newListQuizes}); set({listQuizes: newListQuizes});
return id; return id;