From af89180d0755aa16b1894c9968b574464b792699 Mon Sep 17 00:00:00 2001 From: karimaldeen Date: Tue, 17 Sep 2024 10:41:04 +0300 Subject: [PATCH] fix --- src/Components/CustomFields/SelectTag.tsx | 18 ++++++++---- src/Components/exercise/Header.tsx | 28 +++++++------------ src/Layout/Dashboard/Table/DataTable.tsx | 12 ++++++-- src/Layout/Dashboard/usePagination.ts | 4 --- src/Pages/Admin/Tags/field/SelectTag.tsx | 2 +- src/Pages/Admin/question/EditPage.tsx | 1 - .../Admin/question/Model/Field/Choices.tsx | 1 + src/Pages/Admin/question/Model/Malty/Form.tsx | 2 -- .../Malty/QuestionFIeld/QuestionFIeld.tsx | 1 - .../Model/Malty/Tags/MaltySelectTag.tsx | 10 +++++-- src/Pages/Admin/question/Page.tsx | 1 - src/Pages/Admin/question/formUtil.ts | 2 -- src/api/helper/useAxios.ts | 4 +-- src/api/helper/useDeleteMutation.ts | 22 ++++++++++++++- src/zustand/ObjectToEditState.ts | 2 +- src/zustand/TabState.ts | 12 ++++++++ 16 files changed, 77 insertions(+), 45 deletions(-) create mode 100644 src/zustand/TabState.ts diff --git a/src/Components/CustomFields/SelectTag.tsx b/src/Components/CustomFields/SelectTag.tsx index 182af50..96fc9db 100644 --- a/src/Components/CustomFields/SelectTag.tsx +++ b/src/Components/CustomFields/SelectTag.tsx @@ -12,7 +12,11 @@ const SelectTag: React.FC = () => { const [NewAdditionalData, setNewAdditionalData] = useState({}) const formik = useFormikContext(); const handleChange = (value: any,option:any) => { + console.log(option); + console.log(value); const newSelectedOption = option?.pop() + console.log(newSelectedOption); + const newObject = { id:newSelectedOption?.id, name:newSelectedOption?.name @@ -24,7 +28,8 @@ const SelectTag: React.FC = () => { }; const handleSearch = useDebounce((value: string) => { - + console.log(value,"value"); + setSearchValue(value); }); @@ -43,19 +48,23 @@ const SelectTag: React.FC = () => { }); const [t] = useTranslation(); + const initialData = formik?.values?.tags?.filter((item:any)=>{ + return item?.id + + }) ?? [] + + const options = data?.data ?? []; const additionalData = options.length < 1 && searchValue.length > 1 && !isLoading ? [{ id: searchValue, name: searchValue }] : []; - console.log(formik?.values?.tags,"formik?.values?.tags"); const value = formik?.values?.tags?.map((item: any) => item?.id ?? item) ?? []; - const AllOptions = [...options, ...additionalData,NewAdditionalData,...(formik?.values?.tags ?? {})]; - console.log(AllOptions,"AllOptions"); + const AllOptions = [...options, ...additionalData,NewAdditionalData, ...(initialData)]; const uniqueOptions = Array.from( new Map( @@ -65,7 +74,6 @@ const SelectTag: React.FC = () => { ).values() ); - console.log(uniqueOptions,"uniqueOptions"); return (
diff --git a/src/Components/exercise/Header.tsx b/src/Components/exercise/Header.tsx index 869dcdc..a595208 100644 --- a/src/Components/exercise/Header.tsx +++ b/src/Components/exercise/Header.tsx @@ -3,36 +3,34 @@ import React from "react"; import { useTranslation } from "react-i18next"; import { GoArrowSwitch } from "react-icons/go"; import { useObjectToEdit } from "../../zustand/ObjectToEditState"; -import { QUESTION_OBJECT_KEY } from "../../config/AppKey"; import { Popconfirm, Popover } from "antd"; import { CombinationKeyEnum } from "../../enums/CombinationKeyEnum"; import { PopconfirmProps } from "antd/lib"; const Header = () => { const [t] = useTranslation(); - const { values, setFieldValue, setValues } = useFormikContext(); + const { values, setValues } = useFormikContext(); const { isBseQuestion, setIsBseQuestion } = useObjectToEdit(); - const { setSavedQuestionData } = useObjectToEdit(); - console.log(values,"values"); - - const isEdited = ()=>{ if(isBseQuestion || values?.isBase === 1){ const content = !values?.content ; const content_image = !values?.content_image ; - const hint = !values?.hint ; - const Questions = values?.Questions?.length <= 1 && values?.Questions?.[0]?.answers?.length === 0 ; - if(content && content_image && hint && Questions) { + const Questions = values?.Questions?.length <= 1 && values?.Questions?.[0]?.answers?.length === 0 ; + const defaultQuestionHint = Object.keys(values?.Questions?.[0] ?? {})?.length <= 1 + + + + if(content && content_image && Questions && defaultQuestionHint) { return false } - }else{ + }else{ const content = !values?.content ; const content_image = !values?.content_image ; const hint = !values?.hint ; - const answers = !values?.answers ; + const answers = !(values?.answers?.length > 0) ; const tags = !(values?.tags?.length > 0) ; if(content && content_image && hint && answers && tags) { return false @@ -40,26 +38,20 @@ const Header = () => { } return true } - console.log(isEdited(),"isEdited"); const handleChange = () => { - setSavedQuestionData(null); - localStorage.removeItem(QUESTION_OBJECT_KEY); if (isBseQuestion) { setIsBseQuestion(false); setValues(null); - setFieldValue("isBase", 0); } else { setIsBseQuestion(true); setValues(null); - setFieldValue("isBase", 1); } }; const confirm: PopconfirmProps['onConfirm'] = (e) => { - console.log(e); setTimeout(() => { - handleChange() + handleChange() ; }, 500); }; diff --git a/src/Layout/Dashboard/Table/DataTable.tsx b/src/Layout/Dashboard/Table/DataTable.tsx index 8b51496..b8de0a3 100644 --- a/src/Layout/Dashboard/Table/DataTable.tsx +++ b/src/Layout/Dashboard/Table/DataTable.tsx @@ -1,6 +1,7 @@ -import React, { lazy, Suspense } from "react"; +import React, { lazy, Suspense, useEffect } from "react"; import { useAddKeyToData, Table, useTranslation, usePagination } from "."; import { DataTableProps } from "../../../types/Table"; +import { useDataTableState } from "../../../zustand/TabState"; const NotFoundLottie = React.lazy( () => import("../../../Components/Lottie/NotFound/NotFoundLottie"), ); @@ -17,12 +18,17 @@ const DataTable: React.FC = ({ const columns = useColumns(); const { pagination, handlePageChange } = usePagination(response?.data); const [t] = useTranslation(); - const getRowClassName = (record: any, index: number): string => { + const getRowClassName = (_record: any, index: number): string => { return index % 2 === 0 ? "even-row" : "odd-row"; }; const isRefetching = response?.isRefetching; const isLoading = response?.isLoading; - + const dataLength = data?.length ; + const {setDataTableLength} = useDataTableState() + useEffect(() => { + setDataTableLength(dataLength) + }, [dataLength]) + return ( { - const navigate = useNavigate(); - const location = useLocation(); const { Filter ,setFilter } = useFilterStateState(); const [pagination, setPagination] = useState({ @@ -29,7 +26,6 @@ const usePagination = (data: Data) => { }, [data]); const handlePageChange = (page: number) => { - // navigate(`?page=${page}`); setFilter({ ...Filter, page:page diff --git a/src/Pages/Admin/Tags/field/SelectTag.tsx b/src/Pages/Admin/Tags/field/SelectTag.tsx index 5a307cb..3b276ed 100644 --- a/src/Pages/Admin/Tags/field/SelectTag.tsx +++ b/src/Pages/Admin/Tags/field/SelectTag.tsx @@ -11,7 +11,7 @@ const SelectTag: React.FC = () => { const [fieldValue, setFieldValue] = useState(""); const formik = useFormikContext(); const handleChange = (value: string[]) => { - console.log(value); + console.log(value,"value"); formik.setFieldValue("tags", value); setSearchValue(""); diff --git a/src/Pages/Admin/question/EditPage.tsx b/src/Pages/Admin/question/EditPage.tsx index 739d11f..10ecad9 100644 --- a/src/Pages/Admin/question/EditPage.tsx +++ b/src/Pages/Admin/question/EditPage.tsx @@ -58,7 +58,6 @@ const EditPage: React.FC = () => { const handleSubmit = (values: any) => { const DataToSend = structuredClone(values); setTagsSearch(null); - console.log(DataToSend); if (isBseQuestion) { const UpdateBseQuestion = { diff --git a/src/Pages/Admin/question/Model/Field/Choices.tsx b/src/Pages/Admin/question/Model/Field/Choices.tsx index dfe7d95..c3759ab 100644 --- a/src/Pages/Admin/question/Model/Field/Choices.tsx +++ b/src/Pages/Admin/question/Model/Field/Choices.tsx @@ -40,6 +40,7 @@ const Choices = () => { {formik?.values?.answers?.map((item: Choice, index: number) => { return (
diff --git a/src/Pages/Admin/question/Model/Malty/Form.tsx b/src/Pages/Admin/question/Model/Malty/Form.tsx index 34088d7..34d569c 100644 --- a/src/Pages/Admin/question/Model/Malty/Form.tsx +++ b/src/Pages/Admin/question/Model/Malty/Form.tsx @@ -22,8 +22,6 @@ const Form = () => { setSavedQuestionData(formik.values); }, [formik?.values]); - // console.log(formik?.errors); - const handleAddChoice = ( parent_index: number, fromKeyCombination: boolean = false, diff --git a/src/Pages/Admin/question/Model/Malty/QuestionFIeld/QuestionFIeld.tsx b/src/Pages/Admin/question/Model/Malty/QuestionFIeld/QuestionFIeld.tsx index 813d106..4b239f8 100644 --- a/src/Pages/Admin/question/Model/Malty/QuestionFIeld/QuestionFIeld.tsx +++ b/src/Pages/Admin/question/Model/Malty/QuestionFIeld/QuestionFIeld.tsx @@ -32,7 +32,6 @@ const QuestionFIeld = ({ index, data }: { index: number; data: Choice }) => { const values = formik.values.Questions?.[index] ; - console.log(values,"values"); const handelCanDeleteAnswers = ()=>{ const content = values?.content ; diff --git a/src/Pages/Admin/question/Model/Malty/Tags/MaltySelectTag.tsx b/src/Pages/Admin/question/Model/Malty/Tags/MaltySelectTag.tsx index cb3687e..571050f 100644 --- a/src/Pages/Admin/question/Model/Malty/Tags/MaltySelectTag.tsx +++ b/src/Pages/Admin/question/Model/Malty/Tags/MaltySelectTag.tsx @@ -49,14 +49,20 @@ const MaltySelectTag = ({ parent_index }: { parent_index: number }) => { options.length < 1 && searchValue.length > 1 && !isLoading ? [{ id: searchValue, name: searchValue }] : []; - console.log(formik?.values?.Questions[parent_index]?.tags,"formik?.values?.Questions[parent_index]?.tags"); const value = formik?.values?.Questions[parent_index]?.tags?.map( (item: any) => item?.id ?? item, ) ?? []; - const AllOptions = [...options, ...additionalData,NewAdditionalData , ...(formik?.values?.Questions[parent_index]?.tags ?? [])]; + + const initialData = formik?.values?.Questions[parent_index]?.tags?.filter((item:any)=>{ + return item?.id + + }) ?? [] + + + const AllOptions = [...options, ...additionalData,NewAdditionalData , ...(initialData)]; const uniqueOptions = Array.from( new Map( diff --git a/src/Pages/Admin/question/Page.tsx b/src/Pages/Admin/question/Page.tsx index 31537df..c4685ec 100644 --- a/src/Pages/Admin/question/Page.tsx +++ b/src/Pages/Admin/question/Page.tsx @@ -51,7 +51,6 @@ const TableHeader = () => { {name:LessonName, path:`lesson/${lesson_id }`} ]); - return (
}> diff --git a/src/Pages/Admin/question/formUtil.ts b/src/Pages/Admin/question/formUtil.ts index 5fc1bf3..da9f3ee 100644 --- a/src/Pages/Admin/question/formUtil.ts +++ b/src/Pages/Admin/question/formUtil.ts @@ -1,6 +1,5 @@ import * as Yup from "yup"; import { Question } from "../../../types/Item"; -import { toast } from "react-toastify"; export const getInitialValues = (objectToEdit: Question): any => { const tags = objectToEdit?.tags?.map((item: any, index: number) => { @@ -60,7 +59,6 @@ export const getInitialValuesBase = (objectToEdit: Question): any => { } }) - console.log(newAnswers,"newAnswers"); return { ...item, diff --git a/src/api/helper/useAxios.ts b/src/api/helper/useAxios.ts index cf4856c..a269a92 100644 --- a/src/api/helper/useAxios.ts +++ b/src/api/helper/useAxios.ts @@ -31,9 +31,7 @@ function useAxios() { const build_Axios = buildAxios.build(); build_Axios.interceptors.response.use( - function (response: any) { - console.log(response?.data); - + function (response: any) { const responseMsg = response?.data?.message; const method = response.config.method; diff --git a/src/api/helper/useDeleteMutation.ts b/src/api/helper/useDeleteMutation.ts index d631b90..389b634 100644 --- a/src/api/helper/useDeleteMutation.ts +++ b/src/api/helper/useDeleteMutation.ts @@ -2,6 +2,8 @@ import { useMutation, UseMutationResult } from "react-query"; import useAxios from "./useAxios"; import { HEADER_KEY } from "../config"; import { AxiosResponse } from "../../types/Axios"; +import { useDataTableState } from "../../zustand/TabState"; +import { useFilterStateState } from "../../zustand/Filter"; type DataToSend = { id?: number | string | any; @@ -14,8 +16,12 @@ function useDeleteMutation( toast: boolean = true, ): UseMutationResult { const axios = useAxios(); + const {DataTableLength} = useDataTableState() + const { setFilter ,Filter } = useFilterStateState(); + const page = Filter?.page ; return useMutation( async (dataToSend) => { + const { data } = await axios.delete(url + `/` + dataToSend?.id, { headers: { [HEADER_KEY]: key, @@ -25,7 +31,21 @@ function useDeleteMutation( return data; }, - ); + { + onSuccess : (data) =>{ + if(DataTableLength === 1 && page > 1){ + setFilter( + { + ...Filter, + page: page - 1 + } + ) + } + } + } + + ) + } export default useDeleteMutation; diff --git a/src/zustand/ObjectToEditState.ts b/src/zustand/ObjectToEditState.ts index d973c95..b0c56c6 100644 --- a/src/zustand/ObjectToEditState.ts +++ b/src/zustand/ObjectToEditState.ts @@ -27,7 +27,7 @@ interface ModelState { } export const useObjectToEdit = create((set) => ({ - c: null, + objectToEdit: null, setObjectToEdit: (data) => set(() => ({ objectToEdit: data })), OldObjectToEdit: null, setOldObjectToEdit: (data) => set(() => ({ OldObjectToEdit: data })), diff --git a/src/zustand/TabState.ts b/src/zustand/TabState.ts new file mode 100644 index 0000000..acc7f1d --- /dev/null +++ b/src/zustand/TabState.ts @@ -0,0 +1,12 @@ +import { create } from "zustand"; + +interface DataTableState { + + DataTableLength: number; + setDataTableLength: (Key: number) => void; +} + +export const useDataTableState = create((set) => ({ + DataTableLength: 0, + setDataTableLength: (Key) => set((state) => ({ DataTableLength: Key })), +}));