Все типы вопросов открывают кроп

This commit is contained in:
Nastya 2024-11-13 17:45:11 +03:00
parent 9c78e245c3
commit 518c4b340d
15 changed files with 69 additions and 108 deletions

@ -90,8 +90,6 @@ export const CustomSelect: FC<CustomSelectProps> = ({
const menuItems = useMemo(() => { const menuItems = useMemo(() => {
if (type === "typeUsers" && users && users.length !== 0) { if (type === "typeUsers" && users && users.length !== 0) {
console.log(type)
console.log(users)
return users.map((user) => ( return users.map((user) => (
<MenuItem <MenuItem
key={user.ID} key={user.ID}

@ -77,8 +77,6 @@ export const AmoCRMModal: FC<IntegrationsModalProps> = ({
company: [], company: [],
buyer: [], buyer: [],
}); });
console.log(questionEntity)
console.log(tags)
useEffect(() => { useEffect(() => {
if (isModalOpen && quizID !== undefined && !isRemoveAccount) { if (isModalOpen && quizID !== undefined && !isRemoveAccount) {

@ -27,7 +27,6 @@ export const AmoLogin: FC<IntegrationStep1Props> = ({ handleNextStep }) => {
const isMobile = useMediaQuery(theme.breakpoints.down(600)); const isMobile = useMediaQuery(theme.breakpoints.down(600));
const onAmoClick = async () => { const onAmoClick = async () => {
console.log("Amo click");
const [url, error] = await connectAmo(); const [url, error] = await connectAmo();
if (url && !error) { if (url && !error) {
window.open(url, "_blank"); window.open(url, "_blank");

@ -24,7 +24,6 @@ export const AmoModalTitle: FC<AmoModalTitleProps> = ({
const theme = useTheme(); const theme = useTheme();
const isMobile = useMediaQuery(theme.breakpoints.down(600)); const isMobile = useMediaQuery(theme.breakpoints.down(600));
console.log(isSettingsBlock)
const handleClick = useCallback(async () => { const handleClick = useCallback(async () => {
if (isSettingsBlock) { if (isSettingsBlock) {
startRemoveAccount(); startRemoveAccount();

@ -5,7 +5,7 @@ import {
uploadQuestionImage, uploadQuestionImage,
} from "@root/questions/actions"; } from "@root/questions/actions";
import { useCurrentQuiz } from "@root/quizes/hooks"; import { useCurrentQuiz } from "@root/quizes/hooks";
import { useEffect, useState } from "react"; import { useEffect, useMemo, useState } from "react";
import { EnterIcon } from "../../../assets/icons/questionsPage/enterIcon"; import { EnterIcon } from "../../../assets/icons/questionsPage/enterIcon";
import type { QuizQuestionVarImg } from "../../../model/questionTypes/varimg"; import type { QuizQuestionVarImg } from "../../../model/questionTypes/varimg";
import { useDisclosure } from "../../../utils/useDisclosure"; import { useDisclosure } from "../../../utils/useDisclosure";
@ -35,6 +35,9 @@ export default function OptionsAndPicture({
const [selectedVariantId, setSelectedVariantId] = useState<string | null>( const [selectedVariantId, setSelectedVariantId] = useState<string | null>(
null, null,
); );
const variant = useMemo(() => question.content.variants.find(
(variant) => variant.id === selectedVariantId,
),[selectedVariantId])
const theme = useTheme(); const theme = useTheme();
const isMobile = useMediaQuery(theme.breakpoints.down(790)); const isMobile = useMediaQuery(theme.breakpoints.down(790));
const quizQid = useCurrentQuiz()?.qid; const quizQid = useCurrentQuiz()?.qid;
@ -101,7 +104,7 @@ export default function OptionsAndPicture({
largeCheck={question.content.largeCheck} largeCheck={question.content.largeCheck}
variant={variant} variant={variant}
isMobile={isMobile} isMobile={isMobile}
openCropModal={() => {}} openCropModal={() => {setOpenCropModal(true)}}
openImageUploadModal={openImageUploadModal} openImageUploadModal={openImageUploadModal}
pictureUploding={pictureUploding} pictureUploding={pictureUploding}
setSelectedVariantId={setSelectedVariantId} setSelectedVariantId={setSelectedVariantId}
@ -114,13 +117,8 @@ export default function OptionsAndPicture({
handleImageChange={handleImageUpload} handleImageChange={handleImageUpload}
/> />
<CropModalInit <CropModalInit
originalImageUrl={imge} originalImageUrl={variant?.originalImageUrl}
editedUrlImagesList={{ editedUrlImagesList={variant?.editedUrlImagesList}
"desktop": imge,
"tablet": imge,
"mobile": imge,
"small": imge,
}}
questionId={question.backendId.toString()} questionId={question.backendId.toString()}
questionType={question.type} questionType={question.type}
quizId={quizQid} quizId={quizQid}

@ -43,8 +43,6 @@ export default function OptionsPicture({
const isMobile = useMediaQuery(theme.breakpoints.down(790)); const isMobile = useMediaQuery(theme.breakpoints.down(790));
const [isImageUploadOpen, openImageUploadModal, closeImageUploadModal] = useDisclosure(); const [isImageUploadOpen, openImageUploadModal, closeImageUploadModal] = useDisclosure();
console.log(variant)
const handleImageUpload = async (file: File) => { const handleImageUpload = async (file: File) => {
if (!selectedVariantId) return; if (!selectedVariantId) return;

@ -4,6 +4,7 @@ import { updateQuestion, uploadQuestionImage } from "@root/questions/actions";
import { useCurrentQuiz } from "@root/quizes/hooks"; import { useCurrentQuiz } from "@root/quizes/hooks";
import { useState } from "react"; import { useState } from "react";
import { DropZone } from "../../../pages/startPage/dropZone"; import { DropZone } from "../../../pages/startPage/dropZone";
import { CropModalInit } from "@/ui_kit/Modal/CropModal";
type UploadImageProps = { type UploadImageProps = {
question: AnyTypedQuizQuestion; question: AnyTypedQuizQuestion;
@ -18,10 +19,13 @@ export default function UploadImage({
cropAspectRatio, cropAspectRatio,
}: UploadImageProps) { }: UploadImageProps) {
const [pictureUploding, setPictureUploading] = useState<boolean>(false); const [pictureUploding, setPictureUploading] = useState<boolean>(false);
const [openCropModal, setOpenCropModal] = useState(false);
const theme = useTheme(); const theme = useTheme();
const quiz = useCurrentQuiz(); const quiz = useCurrentQuiz();
if (!quiz) return null; if (!quiz) return null;
console.log(question)
return ( return (
<Box sx={{ padding: "20px" }}> <Box sx={{ padding: "20px" }}>
@ -42,9 +46,13 @@ export default function UploadImage({
text={"5 MB максимум"} text={"5 MB максимум"}
sx={{ maxWidth: "300px", width: "100%" }} sx={{ maxWidth: "300px", width: "100%" }}
cropAspectRatio={cropAspectRatio} cropAspectRatio={cropAspectRatio}
imageUrl={question.content.back} imageUrl={question.content.originalBack}
originalImageUrl={question.content.originalBack} originalImageUrl={question.content.originalBack}
onImageUploadClick={async (file) => { onImageUploadClick={async (file) => {
alert("d")
if (question.content.originalBack) {
setOpenCropModal(true)
} else {
setPictureUploading(true); setPictureUploading(true);
await uploadQuestionImage( await uploadQuestionImage(
@ -57,29 +65,30 @@ export default function UploadImage({
}, },
); );
setOpenCropModal(true)
setPictureUploading(false); setPictureUploading(false);
}
}} }}
onDeleteClick={() => { onDeleteClick={() => {
updateQuestion(question.id, (question) => { updateQuestion(question.id, (question) => {
question.content.back = null; question.content.back = null;
}); });
}} }}
onImageSaveClick={async (file) => { onImageSavedClick={() => {
setPictureUploading(true); setOpenCropModal(true)
await uploadQuestionImage(
question.id,
quiz.qid,
file,
(question, url) => {
question.content.back = url;
},
);
setPictureUploading(false);
}} }}
/> />
)} )}
<CropModalInit
originalImageUrl={question.content.originalBack}
editedUrlImagesList={question.content?.editedUrlImagesList}
questionId={question.backendId.toString()}
questionType={question.type}
quizId={quiz.id}
open={openCropModal}
selfClose={() => setOpenCropModal(false)}
setPictureUploading={setPictureUploading}
/>
</Box> </Box>
); );
} }

@ -72,16 +72,6 @@ export default function AvailablePrivilege() {
); );
const currentDate = moment(); const currentDate = moment();
console.log(quizUnlimDays);
console.log(moment());
console.log(
moment(
moment(userPrivileges?.quizUnlimTime?.created_at).add(
quizUnlimTime,
"days",
),
),
);
return ( return (
<Box <Box

@ -15,6 +15,8 @@ import { UploadImageModal } from "../../pages/Questions/UploadImage/UploadImageM
import { useDisclosure } from "../../utils/useDisclosure"; import { useDisclosure } from "../../utils/useDisclosure";
import imge from "@/assets/card-1.png" import imge from "@/assets/card-1.png"
import { CropModalInit } from "@/ui_kit/Modal/CropModal"; import { CropModalInit } from "@/ui_kit/Modal/CropModal";
import DeleteIcon from "@mui/icons-material/Delete";
const allowedFileTypes = ["image/png", "image/jpeg", "image/gif"]; const allowedFileTypes = ["image/png", "image/jpeg", "image/gif"];
@ -25,7 +27,7 @@ interface Props {
imageUrl: string | null; imageUrl: string | null;
originalImageUrl: string | null; originalImageUrl: string | null;
onImageUploadClick: (image: Blob) => void; onImageUploadClick: (image: Blob) => void;
onImageSaveClick: (image: Blob) => void; onImageSavedClick?: () => void;
onDeleteClick: () => void; onDeleteClick: () => void;
cropAspectRatio?: { cropAspectRatio?: {
width: number; width: number;
@ -41,19 +43,15 @@ export const DropZone = ({
imageUrl, imageUrl,
originalImageUrl, originalImageUrl,
onImageUploadClick, onImageUploadClick,
onImageSaveClick, onImageSavedClick,
onDeleteClick, onDeleteClick,
cropAspectRatio, cropAspectRatio,
}: Props) => { }: Props) => {
const theme = useTheme(); const theme = useTheme();
const quiz = useCurrentQuiz(); const quiz = useCurrentQuiz();
const [pictureUploding, setPictureUploading] = useState<boolean>(false);
const [openCropModal, setOpenCropModal] = useState(false);
const [isDropReady, setIsDropReady] = useState<boolean>(false); const [isDropReady, setIsDropReady] = useState<boolean>(false);
const [isImageUploadOpen, openImageUploadModal, closeImageUploadModal] = const [isImageUploadOpen, openImageUploadModal, closeImageUploadModal] = useDisclosure();
useDisclosure();
if (!quiz) return null; if (!quiz) return null;
@ -98,23 +96,8 @@ export const DropZone = ({
onClose={closeImageUploadModal} onClose={closeImageUploadModal}
handleImageChange={handleImageUpload} handleImageChange={handleImageUpload}
/> />
<CropModalInit
originalImageUrl={imge}
editedUrlImagesList={{
"desktop": imge,
"tablet": imge,
"mobile": imge,
"small": imge,
}}
questionId={'2'}
questionType={"images"}
quizId={quiz.id}
open={openCropModal}
selfClose={() => setOpenCropModal(false)}
setPictureUploading={setPictureUploading}
/>
<ButtonBase <ButtonBase
onClick={ openImageUploadModal onClick={ () => onImageSavedClick ? onImageSavedClick() : openImageUploadModal()
} }
sx={{ sx={{
width: "100%", width: "100%",
@ -153,7 +136,25 @@ export const DropZone = ({
</Typography> </Typography>
</> </>
)} )}
</ButtonBase> </ButtonBase>
{imageUrl && (
<IconButton
onClick={onDeleteClick}
sx={{
position: "absolute",
right: 0,
top: 0,
color: theme.palette.orange.main,
borderRadius: "8px",
borderBottomRightRadius: 0,
borderTopLeftRadius: 0,
...deleteIconSx,
}}
>
<DeleteIcon />
</IconButton>
)}
</Box> </Box>
); );
}; };

@ -82,10 +82,6 @@ export const createUntypedQuestion = (
}, },
); );
console.log(
33,
useQuestionsStore.getState().questions.map((q) => q.type),
);
}; };
const removeQuestion = (questionId: string) => const removeQuestion = (questionId: string) =>

@ -110,7 +110,6 @@ export const ExportResults = async (
return; return;
} }
console.log(typeof data);
const blob = new Blob([data as BlobPart], { const blob = new Blob([data as BlobPart], {
type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8", type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8",
@ -118,7 +117,6 @@ export const ExportResults = async (
const link = document.createElement("a"); const link = document.createElement("a");
link.href = window.URL.createObjectURL(data as Blob); link.href = window.URL.createObjectURL(data as Blob);
console.log(link);
link.download = `report_${new Date().getTime()}.xlsx`; link.download = `report_${new Date().getTime()}.xlsx`;
link.click(); link.click();
}; };

@ -65,6 +65,8 @@ export const MediaSelectionAndDisplay: FC<Iprops> = ({
}); });
} }
console.log(resultData)
return ( return (
<Box <Box
sx={{ sx={{
@ -129,16 +131,14 @@ export const MediaSelectionAndDisplay: FC<Iprops> = ({
handleImageChange={handleImageUpload} handleImageChange={handleImageUpload}
/> />
<CropModalInit <CropModalInit
originalImageUrl={imge} originalImageUrl={resultData.content.originalBack}
editedUrlImagesList={{ editedUrlImagesList={resultData.content?.editedUrlImagesList}
"desktop": imge, questionId={resultData.id}
"tablet": imge, questionType={resultData.type}
"mobile": imge,
"small": imge,
}}
questionId={"12"}
questionType={"images"}
quizId={quizQid} quizId={quizQid}
open={openCropModal}
selfClose={() => setOpenCropModal(false)}
setPictureUploading={setPictureUploading}
/> />
</Box> </Box>
@ -152,23 +152,20 @@ export const MediaSelectionAndDisplay: FC<Iprops> = ({
mb: "30px", mb: "30px",
}} }}
> >
{/* <AddOrEditImageButton <AddOrEditImageButton
imageSrc={resultData.content.back} imageSrc={resultData.content.back}
uploading={pictureUploding} uploading={pictureUploding}
onImageClick={() => { onImageClick={() => {
if (resultData.content.back) { if (resultData.content.back) {
return openCropModal( setOpenCropModal(true)
resultData.content.back, } else {
resultData.content.originalBack, openImageUploadModal();
);
} }
openImageUploadModal();
}} }}
onPlusClick={() => { onPlusClick={() => {
openImageUploadModal(); openImageUploadModal();
}} }}
/> */} />
</Box> </Box>
)} )}
{!resultData.content.useImage && ( {!resultData.content.useImage && (

@ -160,9 +160,6 @@ export const CropGeneral: FC<Props> = ({
} }
} }
console.log("crop")
console.log(crop)
return ( return (
<> <>
<Box <Box
@ -180,9 +177,6 @@ export const CropGeneral: FC<Props> = ({
<ReactCrop <ReactCrop
crop={crop} crop={crop}
onChange={(_, percentCrop) => editedImagesChange((old) => { onChange={(_, percentCrop) => editedImagesChange((old) => {
console.log("БИБЛИОТЕКА КРОПАЕТ!!!!!!!!!")
console.log("БИБЛИОТЕКА КРОПАЕТ!!!!!!!!")
console.log("БИБЛИОТЕКА КРОПАЕТ!!!!!!")
return ({ return ({
newRules: { newRules: {
...old.newRules, ...old.newRules,
@ -206,7 +200,6 @@ export const CropGeneral: FC<Props> = ({
onLoad={(e) => { onLoad={(e) => {
setImageWidth(e.currentTarget.naturalWidth); setImageWidth(e.currentTarget.naturalWidth);
setImageHeight(e.currentTarget.naturalHeight); setImageHeight(e.currentTarget.naturalHeight);
console.log("перелоад картинки")
calcCrop() calcCrop()
}} }}

@ -46,7 +46,7 @@ export default function WorkSpace({
modalModels[currentStepName] modalModels[currentStepName]
), [currentStepName]); ), [currentStepName]);
console.log(" промежуточный рендер которому должно быть похуй") // console.log(" промежуточный рендер которому должно быть похуй")
return ( return (
<> <>

@ -40,12 +40,9 @@ export const CropModalInit: FC<CropOnOpenType> = ({
const [acceptedOriginalImageUrl, setOriginalImageUrl] = useState(""); const [acceptedOriginalImageUrl, setOriginalImageUrl] = useState("");
const [editedImages, setEditedImages] = useState<Record<keyof WorkSpaceTypes, EditedImage> | null>(null); const [editedImages, setEditedImages] = useState<Record<keyof WorkSpaceTypes, EditedImage> | null>(null);
const [readyDelete, setReadyDelete] = useState(false); const [readyDelete, setReadyDelete] = useState(false);
console.log("editedImages index")
console.log(editedImages)
useEffect(() => { useEffect(() => {
if (open) { if (open) {
console.log("дали ли на ссылочку? ", Boolean(originalImageUrl))
//Если нам не дали с чем работать, то и работать не нужно //Если нам не дали с чем работать, то и работать не нужно
if (Boolean(imageBlob) || Boolean(originalImageUrl)) { if (Boolean(imageBlob) || Boolean(originalImageUrl)) {
(async () => { (async () => {
@ -58,7 +55,6 @@ export const CropModalInit: FC<CropOnOpenType> = ({
}; };
if (newImageBlob) { if (newImageBlob) {
console.log("попытки пытки 0")
const isGif = await isImageBlobAGifFile(newImageBlob); const isGif = await isImageBlobAGifFile(newImageBlob);
if (isGif) { if (isGif) {
saveImagesAndRules(newImageBlob); saveImagesAndRules(newImageBlob);
@ -67,7 +63,6 @@ export const CropModalInit: FC<CropOnOpenType> = ({
//Для работы нам нужны урлы. Оригинальной и редактированных картинок //Для работы нам нужны урлы. Оригинальной и редактированных картинок
let newOriginalImageUrl = originalImageUrl || URL.createObjectURL(newImageBlob) let newOriginalImageUrl = originalImageUrl || URL.createObjectURL(newImageBlob)
if (questionId) { if (questionId) {
console.log("попытки пытки 1")
if (questionType) { if (questionType) {
const workSpaceTypesCONST = workSpaceTypesList[questionType]; const workSpaceTypesCONST = workSpaceTypesList[questionType];
@ -108,7 +103,6 @@ export const CropModalInit: FC<CropOnOpenType> = ({
} }
setOriginalImageUrl(newOriginalImageUrl); setOriginalImageUrl(newOriginalImageUrl);
setEditedImages(newEditedImagesList); setEditedImages(newEditedImagesList);
console.log("попытки пытки ")
} else { } else {
throw new Error("Не передан тип вопроса") throw new Error("Не передан тип вопроса")
} }
@ -161,13 +155,6 @@ export const CropModalInit: FC<CropOnOpenType> = ({
// }); // });
}; };
console.log("acceptedOriginalImageUrl")
console.log("workSpaceTypesList")
console.log("editedImages")
console.log(acceptedOriginalImageUrl)
console.log(workSpaceTypesList)
console.log(editedImages)
if (acceptedOriginalImageUrl.length === 0) return <></> if (acceptedOriginalImageUrl.length === 0) return <></>
if (workSpaceTypesList[questionType] === undefined) return <></> if (workSpaceTypesList[questionType] === undefined) return <></>
if (editedImages === null) return <></> if (editedImages === null) return <></>