This commit is contained in:
karimaldeen 2024-09-16 20:22:07 +03:00
parent 05d0a12527
commit de71606e88
10 changed files with 62 additions and 27 deletions

View File

@ -49,11 +49,14 @@ const SelectTag: React.FC = () => {
options.length < 1 && searchValue.length > 1 && !isLoading options.length < 1 && searchValue.length > 1 && !isLoading
? [{ id: searchValue, name: searchValue }] ? [{ id: searchValue, name: searchValue }]
: []; : [];
console.log(formik?.values?.tags,"formik?.values?.tags");
const value = const value =
formik?.values?.tags?.map((item: any) => item?.id ?? item) ?? []; formik?.values?.tags?.map((item: any) => item?.id ?? item) ?? [];
const AllOptions = [...options, ...additionalData,NewAdditionalData]; const AllOptions = [...options, ...additionalData,NewAdditionalData,...(formik?.values?.tags ?? {})];
console.log(AllOptions,"AllOptions");
const uniqueOptions = Array.from( const uniqueOptions = Array.from(
new Map( new Map(
AllOptions AllOptions
@ -61,7 +64,9 @@ const SelectTag: React.FC = () => {
.map(item => [item.id, item]) // Create [id, item] pairs to ensure uniqueness .map(item => [item.id, item]) // Create [id, item] pairs to ensure uniqueness
).values() ).values()
); );
console.log(uniqueOptions,"uniqueOptions");
return ( return (
<div className="SelectTag"> <div className="SelectTag">
<label htmlFor="">{t("models.tag")}</label> <label htmlFor="">{t("models.tag")}</label>

View File

@ -20,15 +20,28 @@ const Header = () => {
if(isBseQuestion || values?.isBase === 1){ 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) {
return false
}
}else{ }else{
const content = !!values?.content ; const content = !values?.content ;
const content_image = !!values?.content_image ; const content_image = !values?.content_image ;
const hint = !values?.hint ; const hint = !values?.hint ;
const answers = !values?.answers ; const answers = !values?.answers ;
const tags = !(values?.tags?.length > 0) ;
if(content && content_image && hint && answers && tags) {
return false
}
} }
return true
} }
console.log(isEdited(),"isEdited");
const handleChange = () => { const handleChange = () => {
setSavedQuestionData(null); setSavedQuestionData(null);
localStorage.removeItem(QUESTION_OBJECT_KEY); localStorage.removeItem(QUESTION_OBJECT_KEY);
@ -77,7 +90,9 @@ const Header = () => {
</div> </div>
</article> </article>
<div> <div>
<Popconfirm {
isEdited() ?
<Popconfirm
title={t("header.this_will_un_do_all_your_changes")} title={t("header.this_will_un_do_all_your_changes")}
okText={t("practical.yes")} okText={t("practical.yes")}
cancelText={t("practical.no")} cancelText={t("practical.no")}
@ -92,6 +107,23 @@ const Header = () => {
: t("header.exercise")} : t("header.exercise")}
</Popconfirm> </Popconfirm>
:
<>
<GoArrowSwitch onClick={()=>confirm()} className="m-2" />
{isBseQuestion || values?.isBase === 1
? t("header.malty_exercise")
: t("header.exercise")}
</>
}
</div> </div>
</header> </header>
); );

View File

@ -33,7 +33,7 @@ const FormikFormModel: React.FC<FormikFormProps> = ({
> >
{(formik) => { {(formik) => {
useEffect(() => { useEffect(() => {
if (isOpen === "") { if (isOpen === "" || isOpen === "isSuccess") {
formik.setErrors({}); formik.setErrors({});
formik.resetForm(); formik.resetForm();
} }

View File

@ -14,7 +14,6 @@ const DataTable: React.FC<DataTableProps> = ({
...props ...props
}) => { }) => {
const data: any[] = response?.data?.data || []; const data: any[] = response?.data?.data || [];
const dataSource = useAddKeyToData(data);
const columns = useColumns(); const columns = useColumns();
const { pagination, handlePageChange } = usePagination(response?.data); const { pagination, handlePageChange } = usePagination(response?.data);
const [t] = useTranslation(); const [t] = useTranslation();
@ -28,7 +27,8 @@ const DataTable: React.FC<DataTableProps> = ({
<Table <Table
style={{ minHeight: "300px" }} style={{ minHeight: "300px" }}
columns={columns} columns={columns}
dataSource={dataSource} dataSource={data}
rowKey={"id"}
rowClassName={(record, index) => getRowClassName(record, index)} rowClassName={(record, index) => getRowClassName(record, index)}
className="DataTable" className="DataTable"
loading={{ loading={{

View File

@ -1,13 +1,10 @@
import { TableColumnsType } from "antd"; import { TableColumnsType } from "antd";
import { FaPlus } from "react-icons/fa";
import useModalHandler from "../../../utils/useModalHandler"; import useModalHandler from "../../../utils/useModalHandler";
import { ModalEnum } from "../../../enums/Model"; import { ModalEnum } from "../../../enums/Model";
import { useObjectToEdit } from "../../../zustand/ObjectToEditState"; import { useObjectToEdit } from "../../../zustand/ObjectToEditState";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { ABILITIES_ENUM } from "../../../enums/abilities";
import { useNavigate } from "react-router-dom"; import { useNavigate } from "react-router-dom";
import { import {
canAddGrade,
canDeleteGrade, canDeleteGrade,
canEditGrade, canEditGrade,
canShowGrade, canShowGrade,
@ -15,7 +12,6 @@ import {
import ActionButtons from "../../../Components/Table/ActionButtons"; import ActionButtons from "../../../Components/Table/ActionButtons";
import ColumnsImage from "../../../Components/Columns/ColumnsImage"; import ColumnsImage from "../../../Components/Columns/ColumnsImage";
import { Grade } from "../../../types/Grade"; import { Grade } from "../../../types/Grade";
import { useFilterState } from "../../../Components/Utils/Filter/FilterState";
import { useFilterStateState } from "../../../zustand/Filter"; import { useFilterStateState } from "../../../zustand/Filter";
export const useColumns = () => { export const useColumns = () => {
@ -26,7 +22,7 @@ export const useColumns = () => {
const { setFilter } = useFilterStateState(); const { setFilter } = useFilterStateState();
const handelShow = (record: Grade) => { const handelShow = (record: Grade) => {
setFilter({}) setFilter({})
navigate(`${record?.id}`); navigate(`${record?.id}`);

View File

@ -59,7 +59,7 @@ const EditPage: React.FC = () => {
const DataToSend = structuredClone(values); const DataToSend = structuredClone(values);
setTagsSearch(null); setTagsSearch(null);
console.log(DataToSend); console.log(DataToSend);
if (isBseQuestion) { if (isBseQuestion) {
const UpdateBseQuestion = { const UpdateBseQuestion = {
id: DataToSend?.id, id: DataToSend?.id,
@ -110,7 +110,6 @@ const EditPage: React.FC = () => {
new: newAnswers, new: newAnswers,
}; };
console.log(answers); console.log(answers);
mutate({ mutate({
...updatedObject, ...updatedObject,
answers, answers,
@ -119,7 +118,10 @@ const EditPage: React.FC = () => {
} else { } else {
console.log(values?.id); console.log(values?.id);
const tags = processTags(DataToSend); const tags = processTags(item);
console.log(item,"DataToSend");
console.log(tags,"tags");
mutateAdd({ mutateAdd({
...item, ...item,
subject_id: subject_id, subject_id: subject_id,

View File

@ -49,13 +49,14 @@ const MaltySelectTag = ({ parent_index }: { parent_index: number }) => {
options.length < 1 && searchValue.length > 1 && !isLoading options.length < 1 && searchValue.length > 1 && !isLoading
? [{ id: searchValue, name: searchValue }] ? [{ id: searchValue, name: searchValue }]
: []; : [];
console.log(formik?.values?.Questions[parent_index]?.tags,"formik?.values?.Questions[parent_index]?.tags");
const value = const value =
formik?.values?.Questions[parent_index]?.tags?.map( formik?.values?.Questions[parent_index]?.tags?.map(
(item: any) => item?.id ?? item, (item: any) => item?.id ?? item,
) ?? []; ) ?? [];
const AllOptions = [...options, ...additionalData,NewAdditionalData]; const AllOptions = [...options, ...additionalData,NewAdditionalData , ...(formik?.values?.Questions[parent_index]?.tags ?? [])];
const uniqueOptions = Array.from( const uniqueOptions = Array.from(
new Map( new Map(

View File

@ -123,6 +123,7 @@ export const getValidationSchemaBase = () => {
export function processTags(DataToSend: any) { export function processTags(DataToSend: any) {
console.log(DataToSend?.tags); console.log(DataToSend?.tags);
console.log(DataToSend);
const oldTags = DataToSend?.tags const oldTags = DataToSend?.tags
?.map((item: any, index: number) => { ?.map((item: any, index: number) => {

View File

@ -32,6 +32,8 @@ function useAxios() {
build_Axios.interceptors.response.use( build_Axios.interceptors.response.use(
function (response: any) { function (response: any) {
console.log(response?.data);
const responseMsg = response?.data?.message; const responseMsg = response?.data?.message;
const method = response.config.method; const method = response.config.method;
@ -53,7 +55,7 @@ function useAxios() {
console.log(error?.response); console.log(error?.response);
const status = error?.request?.status; const status = error?.request?.status;
const errorMsg = error?.response?.data?.message; const errorMsg = error?.response?.data?.error;
const errorField = error?.response?.data; const errorField = error?.response?.data;
const method = error.config.method; const method = error.config.method;

View File

@ -1,7 +1,5 @@
import { useQuery } from "react-query"; import { useQuery } from "react-query";
import useAxios from "./useAxios"; import useAxios from "./useAxios";
import { useLocation } from "react-router-dom";
import { PaginationParams } from "../utils/PaginationParams";
import { filterParams } from "../utils/filterParams"; import { filterParams } from "../utils/filterParams";
import { useFilterStateState } from "../../zustand/Filter"; import { useFilterStateState } from "../../zustand/Filter";
function useGetQuery( function useGetQuery(
@ -13,11 +11,9 @@ function useGetQuery(
const axios = useAxios(); const axios = useAxios();
const { show, pagination, ...remainingParams } = params; const { show, pagination, ...remainingParams } = params;
const location = useLocation(); const { Filter } = useFilterStateState();
const { Filter ,setFilter } = useFilterStateState();
const page = Filter?.page ; const page = Filter?.page ;
const per_page = Filter?.per_page ; const per_page = Filter?.per_page ;
// const { per_page } = PaginationParams(location);
const paramToSend = pagination const paramToSend = pagination