From bd59108fdcb7fc061bec5b000527b11407bec265 Mon Sep 17 00:00:00 2001 From: karimaldeen Date: Thu, 12 Sep 2024 16:53:31 +0300 Subject: [PATCH 1/4] dix bug --- src/Pages/Admin/question/AddPage.tsx | 9 +++-- src/Pages/Admin/question/EditPage.tsx | 34 ++++++++++++------- .../Model/Malty/ChoiceField/CheckboxField.tsx | 3 +- src/Pages/Admin/question/Model/ModelForm.tsx | 3 -- src/Pages/Admin/question/Model/formUtil.ts | 18 ++++------ 5 files changed, 35 insertions(+), 32 deletions(-) diff --git a/src/Pages/Admin/question/AddPage.tsx b/src/Pages/Admin/question/AddPage.tsx index 295391e..3adcb0f 100644 --- a/src/Pages/Admin/question/AddPage.tsx +++ b/src/Pages/Admin/question/AddPage.tsx @@ -46,7 +46,8 @@ console.log(objectToEdit,"objectToEdit"); const DataToSend = structuredClone(values); setTagsSearch(null); - + console.log(1); + const canAnswersBeShuffled = DataToSend?.canAnswersBeShuffled ? 1 : 0; if (isBseQuestion || DataToSend?.isBase === 1) { @@ -95,9 +96,10 @@ console.log(objectToEdit,"objectToEdit"); console.log(newBseQuestionId, "newBseQuestionId"); }); } else { + console.log(1); + const tags = processTags(DataToSend); const answers = values?.answers?.map((item: any, index: number) => { - console.log(item,"item"); return { order: index, @@ -108,7 +110,8 @@ console.log(objectToEdit,"objectToEdit"); if(answers?.length > 0){ const isValidAnswers = answers?.some((answer:any) => answer?.isCorrect === 1) - + console.log(!isValidAnswers); + if(!isValidAnswers){ toast.error(t("validation.at_least_one_answer_should_be_correct")); return; diff --git a/src/Pages/Admin/question/EditPage.tsx b/src/Pages/Admin/question/EditPage.tsx index 593c98b..782be67 100644 --- a/src/Pages/Admin/question/EditPage.tsx +++ b/src/Pages/Admin/question/EditPage.tsx @@ -105,10 +105,10 @@ const EditPage: React.FC = () => { const isValidAnswers = updatedObject?.answers?.some((answer:any) => answer?.isCorrect === 1) - if(!isValidAnswers){ - toast.error(t("validation.at_least_one_answer_should_be_correct")); - return; - } + // if(!isValidAnswers){ + // toast.error(t("validation.at_least_one_answer_should_be_correct")); + // return; + // } } updatedObject?.answers?.forEach((item: any) => { if (item?.id) { @@ -156,14 +156,15 @@ const EditPage: React.FC = () => { const newAnswers = [] as any; if(updatedObject?.answers?.length > 0){ - const isValidAnswers = updatedObject?.answers?.some((answer:any) => answer?.isCorrect === 1 || answer?.isCorrect === true) - const isValidAnswers2 = updatedObject?.answers?.filter((answer: any) => answer?.isCorrect === 1 || answer?.isCorrect === true ).length > 1; - console.log(isValidAnswers2); - - if(!isValidAnswers || isValidAnswers2){ - toast.error(t("validation.at_least_one_answer_should_be_correct")); - return; - } + // const isValidAnswers = updatedObject?.answers?.some((answer:any) => answer?.isCorrect === 1 || answer?.isCorrect === true) + // const isValidAnswers2 = updatedObject?.answers?.filter((answer: any) => answer?.isCorrect === 1 || answer?.isCorrect === true ).length > 1; + // console.log(isValidAnswers2); + // console.log(isValidAnswers,"isValidAnswers"); + + // if(!isValidAnswers || isValidAnswers2){ + // toast.error(t("validation.at_least_one_answer_should_be_correct")); + // return; + // } } updatedObject?.answers?.forEach((item: any) => { if (item?.id) { @@ -177,8 +178,15 @@ const EditPage: React.FC = () => { old: oldAnswers, new: newAnswers, }; + console.log(tags,"tags"); + if(tags?.new?.length < 1 && tags?.old?.length < 1){ + mutate({ ...updatedObject, answers, tags:"" }); - mutate({ ...updatedObject, answers, tags }); + }else{ + + mutate({ ...updatedObject, answers, tags }); + } + } }; diff --git a/src/Pages/Admin/question/Model/Malty/ChoiceField/CheckboxField.tsx b/src/Pages/Admin/question/Model/Malty/ChoiceField/CheckboxField.tsx index 640fe06..2b13751 100644 --- a/src/Pages/Admin/question/Model/Malty/ChoiceField/CheckboxField.tsx +++ b/src/Pages/Admin/question/Model/Malty/ChoiceField/CheckboxField.tsx @@ -42,7 +42,8 @@ const CheckboxField = ({ disabled={isDisabled} checked={ formik.values?.Questions?.[parent_index]?.answers?.[name] - ?.isCorrect === 1 + ?.isCorrect === 1 || formik.values?.Questions?.[parent_index]?.answers?.[name] + ?.isCorrect === true } className={className} > diff --git a/src/Pages/Admin/question/Model/ModelForm.tsx b/src/Pages/Admin/question/Model/ModelForm.tsx index a147784..0aeb273 100644 --- a/src/Pages/Admin/question/Model/ModelForm.tsx +++ b/src/Pages/Admin/question/Model/ModelForm.tsx @@ -43,11 +43,8 @@ const Form = () => { handleAddChoice(true) }); -console.log(Success); - useEffect(() => { - console.log(Success); if(Success){ formik?.setValues({}) diff --git a/src/Pages/Admin/question/Model/formUtil.ts b/src/Pages/Admin/question/Model/formUtil.ts index 0fb15d9..e019104 100644 --- a/src/Pages/Admin/question/Model/formUtil.ts +++ b/src/Pages/Admin/question/Model/formUtil.ts @@ -34,13 +34,7 @@ export const getValidationSchema = () => { content_image: Yup.string().nullable(), isCorrect: Yup.boolean(), }), - ).test( - 'at-least-one-correct', - 'At least one answer must be correct', - (answers:any) => { - return answers.some((answer:any) => answer.isCorrect === true); - } - ), + ) }); }; @@ -100,7 +94,7 @@ export const getValidationSchemaBase = () => { (answers:any) => { console.log(answers,"answers"); - return answers.some((answer:any) => answer.isCorrect === true); + return answers.some((answer:any) => answer.isCorrect === true || answer.isCorrect === 1); } ), }), @@ -113,8 +107,8 @@ export function processTags(DataToSend: any) { const oldTags = DataToSend?.tags ?.map((item: any, index: number) => { - if (typeof item === "number") { - return item; + if (typeof item === "number" || typeof item?.id === "number") { + return item?.id ?? item ; } }) .filter((item: any) => item !== undefined); @@ -123,10 +117,10 @@ export function processTags(DataToSend: any) { ?.map((item: any, index: number) => { console.log(item); - if (typeof item === "string" && item !== "") { + if (typeof item === "string" && item !== "" || typeof item?.id === "string" && item?.id !== "" ) { console.log(item); - return { name: item }; + return { name: item?.id ?? item }; } }) .filter((item: any) => item !== undefined); From 9f433d3f9be509ffe83e0b6984b47b90fdd1e539 Mon Sep 17 00:00:00 2001 From: karimaldeen Date: Thu, 12 Sep 2024 16:54:48 +0300 Subject: [PATCH 2/4] formate --- src/App.tsx | 9 +- src/Components/CustomFields/PdfUploader.tsx | 2 +- src/Components/CustomFields/SelectTag.tsx | 18 ++- src/Components/DataTable/SearchField.tsx | 22 ++- src/Components/Filter/OrderBySelect.tsx | 16 ++- src/Components/Filter/PaginationColumn.tsx | 2 - .../FilterField/components/useFilter.tsx | 38 ++--- src/Components/FilterField/enums/Filter.ts | 4 +- src/Components/Utils/Filter/FilterState.ts | 10 +- src/Components/Utils/Filter/useFilter.tsx | 133 ++++++++++-------- .../ValidationField/View/Default.tsx | 2 +- .../ValidationField/View/SelectField.tsx | 2 +- .../utils/translatedOptions.ts | 4 +- src/Components/exercise/Header.tsx | 28 ++-- src/Hooks/useKeyCombination.tsx | 21 +-- src/Layout/Dashboard/DeleteModels.tsx | 25 ++-- src/Layout/Dashboard/FilterLayout.tsx | 7 +- src/Layout/Dashboard/FormikFormModel.tsx | 1 - src/Layout/Dashboard/PageHeader.tsx | 2 +- src/Layout/Dashboard/Table/DataTable.tsx | 2 +- src/Layout/Ui/SideBar.tsx | 7 +- src/Pages/Admin/Grade/Model/FilterForm.tsx | 4 +- src/Pages/Admin/Grade/Page.tsx | 7 +- src/Pages/Admin/Grade/Table.tsx | 4 +- src/Pages/Admin/Grade/useTableColumns.tsx | 2 +- src/Pages/Admin/Param/Model/ModelForm.tsx | 9 +- src/Pages/Admin/Param/Model/formUtil.ts | 2 +- src/Pages/Admin/Param/Page.tsx | 4 +- src/Pages/Admin/Param/Table.tsx | 36 +++-- src/Pages/Admin/Param/useTableColumns.tsx | 9 +- src/Pages/Admin/Reseller/Add/Page.tsx | 40 +++--- src/Pages/Admin/Reseller/Edit/Page.tsx | 10 +- .../Admin/Reseller/Form/AttachmentForm.tsx | 25 ++-- src/Pages/Admin/Reseller/Form/FilterForm.tsx | 6 +- .../Form/ImageBoxField/ImageBoxField.tsx | 2 +- .../Reseller/Form/PersonalDetailsForm.tsx | 87 +++++++++--- .../Admin/Reseller/Form/TitleDetailsForm.tsx | 33 +++-- src/Pages/Admin/Reseller/Form/formUtils.ts | 10 +- src/Pages/Admin/Reseller/Page.tsx | 1 - src/Pages/Admin/Reseller/Table.tsx | 2 +- src/Pages/Admin/Reseller/useTableColumns.tsx | 5 +- src/Pages/Admin/Student/Model/FilterForm.tsx | 12 +- src/Pages/Admin/Student/Table.tsx | 4 +- src/Pages/Admin/Unit/DrapableTable.tsx | 2 +- src/Pages/Admin/Unit/Model/ModelForm.tsx | 1 - src/Pages/Admin/Unit/Page.tsx | 8 +- src/Pages/Admin/Unit/Table.tsx | 6 +- src/Pages/Admin/User/Model/FilterForm.tsx | 20 ++- src/Pages/Admin/User/Model/ModelForm.tsx | 64 +++++++-- src/Pages/Admin/User/Model/formUtil.ts | 5 +- src/Pages/Admin/User/Page.tsx | 4 +- src/Pages/Admin/User/Table.tsx | 2 +- src/Pages/Admin/lesson/Page.tsx | 8 +- src/Pages/Admin/lesson/Table.tsx | 4 +- src/Pages/Admin/question/AddPage.tsx | 82 +++++------ src/Pages/Admin/question/EditPage.tsx | 52 +++---- src/Pages/Admin/question/FilterForm.tsx | 14 +- .../Admin/question/Model/AcceptModal.tsx | 2 +- .../question/Model/Field/CheckboxField.tsx | 5 +- .../question/Model/Field/ChoiceFields.tsx | 1 - .../Admin/question/Model/Field/Choices.tsx | 2 +- .../Model/Malty/ChoiceField/CheckboxField.tsx | 3 +- .../Model/Malty/ChoiceField/ChoiceFields.tsx | 1 - .../Model/Malty/ChoiceField/Choices.tsx | 6 +- src/Pages/Admin/question/Model/Malty/Form.tsx | 46 +++--- .../Model/Malty/Tags/MaltySelectTag.tsx | 27 ++-- src/Pages/Admin/question/Model/ModelForm.tsx | 38 +++-- src/Pages/Admin/question/Model/formUtil.ts | 51 +++---- src/Pages/Admin/question/Page.tsx | 16 +-- src/Pages/Admin/subject/Table/Page.tsx | 2 +- src/Pages/Admin/subject/Table/TablePage.tsx | 6 +- src/Pages/Home/Dummy.tsx | 13 +- .../StudentPackage/Model/FilterForm.tsx | 6 +- .../StudentPackage/Model/ModelForm.tsx | 35 +++-- .../ReSeller/StudentPackage/Model/formUtil.ts | 3 +- src/Pages/ReSeller/StudentPackage/Page.tsx | 4 +- src/Pages/ReSeller/StudentPackage/Table.tsx | 2 +- .../StudentPackage/useTableColumns.tsx | 14 +- src/Routes.tsx | 18 ++- src/Styles/App/classNames.scss | 20 ++- src/Styles/Auth/Auth.scss | 2 - src/Styles/DataTable/FillterNav.scss | 2 - src/Styles/Layout/FilterLayout.scss | 13 +- src/Styles/Layout/SideBar.scss | 2 +- src/Styles/Pages/exercise.scss | 14 +- src/Styles/Pages/index.scss | 2 +- src/Styles/Pages/reSeller.scss | 87 ++++++------ src/api/config.ts | 2 +- src/api/helper/useDeleteMutation.ts | 2 +- src/api/helper/useGetQuery.ts | 6 +- src/api/helper/useUpdateMutation.ts | 1 - src/config/statusType.ts | 8 +- src/config/userTypeOptions.ts | 8 +- src/enums/CombinationKeyEnum.ts | 10 +- src/enums/Model.ts | 2 - src/enums/UserType.ts | 9 +- src/enums/abilities.ts | 2 +- src/translate/ar.json | 62 ++++---- src/translate/en.json | 4 +- src/types/App.ts | 4 +- src/types/Item.ts | 9 +- src/types/ReSeller.ts | 14 +- src/utils/RoleByType.ts | 42 +++--- src/utils/formatDate.ts | 20 +-- src/utils/hasAbilityFn.ts | 3 - src/utils/removeStringKeys.ts | 7 +- src/utils/useFormatDataToSelect.tsx | 1 - 107 files changed, 828 insertions(+), 772 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 3a2b434..2935dfa 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -11,7 +11,6 @@ import { RoleByType } from "./utils/RoleByType"; const Page404 = lazy(() => import("./Layout/Ui/NotFoundPage")); const Auth = lazy(() => import("./Pages/Auth/Page")); const App = () => { - return ( { {renderRoutesRecursively(menuItems)} {CrudRoute.map((route) => { - const useAbility = hasAbility(route.abilities, route.abilities_value); - if(!RoleByType(route)){ - return false ; - } + const useAbility = hasAbility(route.abilities, route.abilities_value); + if (!RoleByType(route)) { + return false; + } if (!useAbility) { return false; } diff --git a/src/Components/CustomFields/PdfUploader.tsx b/src/Components/CustomFields/PdfUploader.tsx index e76460c..b0e2c98 100644 --- a/src/Components/CustomFields/PdfUploader.tsx +++ b/src/Components/CustomFields/PdfUploader.tsx @@ -16,7 +16,7 @@ const PdfUploader = ({ }: any) => { const { formik, t, isError } = useFormField(name, props); let FormikName = formik.values[name]; - const imageUrl = formik.values[name] ? FormikName : ""; + const imageUrl = formik.values[name] ? FormikName : ""; const [Imageurl, setImageurl] = useState(null); const FilehandleChange = (value: any) => { diff --git a/src/Components/CustomFields/SelectTag.tsx b/src/Components/CustomFields/SelectTag.tsx index 5d3a902..eb4685b 100644 --- a/src/Components/CustomFields/SelectTag.tsx +++ b/src/Components/CustomFields/SelectTag.tsx @@ -7,7 +7,7 @@ import { useFormikContext } from "formik"; const SelectTag: React.FC = () => { const [searchValue, setSearchValue] = useState(""); - + const [fieldValue, setFieldValue] = useState(""); const formik = useFormikContext(); const handleChange = (value: string[]) => { @@ -38,18 +38,16 @@ const SelectTag: React.FC = () => { const [t] = useTranslation(); const options = data?.data ?? []; - const additionalData = - options.length < 1 && searchValue.length > 1 && !isLoading - ? [{ id: searchValue, name: searchValue }] - : []; + const additionalData = + options.length < 1 && searchValue.length > 1 && !isLoading + ? [{ id: searchValue, name: searchValue }] + : []; + const value = + formik?.values?.tags?.map((item: any) => item?.id ?? item) ?? []; + const AllOptions = [...options, ...additionalData]; -const value = formik?.values?.tags?.map((item: any) => item?.id ?? item) ?? []; - - - const AllOptions = [...options, ...additionalData] - return (
diff --git a/src/Components/DataTable/SearchField.tsx b/src/Components/DataTable/SearchField.tsx index 51fb041..20d89e3 100644 --- a/src/Components/DataTable/SearchField.tsx +++ b/src/Components/DataTable/SearchField.tsx @@ -15,22 +15,17 @@ const SearchField: React.FC = ({ placeholder, searchBy }) => { const [searchQuery, setSearchQuery] = useState(""); const inputRef = useRef(null); - - - const {setFilter} = useFilterStateState() + const { setFilter } = useFilterStateState(); const handleInputChange = (value: string) => { setSearchQuery(value); - }; - const handleInputChangeWithDebounce = useDebounce( - (value: string) => { - setFilter({ - name:value - }) - } - ) + const handleInputChangeWithDebounce = useDebounce((value: string) => { + setFilter({ + name: value, + }); + }); const handleToggleDropdown = () => { setIsOpen(!isOpen); @@ -60,7 +55,10 @@ const SearchField: React.FC = ({ placeholder, searchBy }) => { className="search__input" placeholder={t(placeholder)} value={searchQuery} - onChange={(e) => {handleInputChange(e.target.value) ; handleInputChangeWithDebounce(e.target.value)}} + onChange={(e) => { + handleInputChange(e.target.value); + handleInputChangeWithDebounce(e.target.value); + }} />
diff --git a/src/Components/Filter/OrderBySelect.tsx b/src/Components/Filter/OrderBySelect.tsx index 1689b38..d2dc85e 100644 --- a/src/Components/Filter/OrderBySelect.tsx +++ b/src/Components/Filter/OrderBySelect.tsx @@ -6,11 +6,11 @@ import { useFilterStateState } from "../../zustand/Filter"; const OrderBySelect = () => { const { t } = useTranslation(); - const {setFilter} = useFilterStateState() + const { setFilter } = useFilterStateState(); const handleChange = (value: string) => { setFilter({ - sort_by:value - }) + sort_by: value, + }); }; return ( @@ -29,8 +29,14 @@ const OrderBySelect = () => { options={[ { value: "ascending", label: t("select.array.order.ascending") }, { value: "descending", label: t("select.array.order.descending") }, - { value: "recently_viewed", label: t("select.array.order.recently_viewed") }, - { value: "recently_arrived", label: t("select.array.order.recently_arrived") }, + { + value: "recently_viewed", + label: t("select.array.order.recently_viewed"), + }, + { + value: "recently_arrived", + label: t("select.array.order.recently_arrived"), + }, ]} /> diff --git a/src/Components/Filter/PaginationColumn.tsx b/src/Components/Filter/PaginationColumn.tsx index 2006728..34b39ac 100644 --- a/src/Components/Filter/PaginationColumn.tsx +++ b/src/Components/Filter/PaginationColumn.tsx @@ -4,7 +4,6 @@ import { Divider, Select } from "antd"; import usePagination from "../../Layout/Dashboard/usePagination"; import { useNavigate } from "react-router-dom"; - const PaginationColumn = () => { const { t } = useTranslation(); const navigate = useNavigate(); @@ -13,7 +12,6 @@ const PaginationColumn = () => { navigate(`?per_page=${value}`); }; - return (