Compare commits

..

No commits in common. "c47b78df76df16ad11992631b6c0ade175379549" and "251359e935443c2b2a3c4f20724e07be0e5f9575" have entirely different histories.

28 changed files with 119 additions and 475 deletions

View File

@ -1,7 +1,6 @@
import React, { useState, useEffect, useRef } from "react"; import React, { useState, useEffect, useRef } from "react";
// import { IoSearch } from "react-icons/io5"; import { IoSearch } from "react-icons/io5";
import { useNavigate } from "react-router-dom"; import { useNavigate } from "react-router-dom";
import { LuSearch } from "react-icons/lu";
interface Option { interface Option {
label: string; label: string;
@ -61,7 +60,7 @@ const SearchFieldWithSelect: React.FC<Props> = ({
return ( return (
<div ref={node} className={`search-field ${isOpen ? "open" : ""}`}> <div ref={node} className={`search-field ${isOpen ? "open" : ""}`}>
<div className="search-header" onClick={toggleDropdown}> <div className="search-header" onClick={toggleDropdown}>
{withIcon && <LuSearch className="search__icon" />} {withIcon && <IoSearch className="search__icon" />}
{/* <p className="search__input_text">{placeholder}</p> */} {/* <p className="search__input_text">{placeholder}</p> */}
<input <input

View File

@ -1,5 +1,6 @@
import React, { useState } from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { Select } from "antd"; import { Divider, Select } from "antd";
import { TbReorder } from "react-icons/tb"; import { TbReorder } from "react-icons/tb";
import { useFilterStateState } from "../../zustand/Filter"; import { useFilterStateState } from "../../zustand/Filter";

View File

@ -23,7 +23,9 @@ const NavBarRightSide = () => {
// const translateArray = translateOptions(search_array, t); // const translateArray = translateOptions(search_array, t);
const { handel_open_model } = useModalHandler(); const { handel_open_model } = useModalHandler();
const handleEdit = () => {
handel_open_model(ModalEnum.CHANGE_PASSWORD);
};
return ( return (
<article> <article>
<span className="header_icons"> <span className="header_icons">
@ -38,7 +40,6 @@ const NavBarRightSide = () => {
icon={<CiCirclePlus size={25} />} icon={<CiCirclePlus size={25} />}
/> />
<TooltipComp <TooltipComp
onClick={()=>(Navigate('/notifications'))}
className="NotificationsIcon" className="NotificationsIcon"
note="notification" note="notification"
color="#E0E0E0" color="#E0E0E0"

View File

@ -10,13 +10,11 @@ const TooltipComp = ({
color, color,
icon, icon,
className = "", className = "",
onClick,
}: { }: {
note: string; note: string;
color: string; color: string;
icon: any; icon: any;
className?: string; className?: string;
onClick?:() => void
}) => { }) => {
const [t] = useTranslation(); const [t] = useTranslation();
const { handel_open_model } = useModalHandler(); const { handel_open_model } = useModalHandler();
@ -25,12 +23,11 @@ const TooltipComp = ({
handel_open_model(ModalEnum.CHANGE_PASSWORD); handel_open_model(ModalEnum.CHANGE_PASSWORD);
}; };
return ( return (
<div className={className} onClick={onClick}> <div className={className}>
<Tooltip <Tooltip
placement="top" placement="top"
title={<div onClick={handleEdit}>{t(`header.${note}`)}</div>} title={<div onClick={handleEdit}>{t(`header.${note}`)}</div>}
color={color} color={color}
> >
<div className={`gear `}>{icon}</div> <div className={`gear `}>{icon}</div>
</Tooltip> </Tooltip>

View File

@ -16,15 +16,13 @@ const FilterLayout = ({
sub_children, sub_children,
search_by = "name", search_by = "name",
width = "500px", width = "500px",
haveFilter = true, haveFilter=true
haveOrder = true
}: { }: {
filterTitle: string; filterTitle: string;
sub_children: any; sub_children: any;
search_by?:string; search_by?:string
width?:string; width?:string
haveFilter?:boolean; haveFilter?:boolean
haveOrder?:boolean
}) => { }) => {
const { t } = useTranslation(); const { t } = useTranslation();
const translateArray = translateOptions(search_array, t); const translateArray = translateOptions(search_array, t);
@ -65,7 +63,7 @@ const FilterLayout = ({
</span> </span>
<span> <span>
{haveOrder && <OrderBySelect />} <OrderBySelect />
</span> </span>
</div> </div>
</div> </div>

View File

@ -1,6 +1,7 @@
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { FaStore } from "react-icons/fa"; import { FaStore } from "react-icons/fa";
import ValidationField from "../../../../Components/ValidationField/ValidationField"; import ValidationField from "../../../../Components/ValidationField/ValidationField";
import { CiEdit } from "react-icons/ci";
import HeaderForm from "./HeaderForm"; import HeaderForm from "./HeaderForm";
const PasswordDetailsForm = () => { const PasswordDetailsForm = () => {

View File

@ -35,6 +35,7 @@ const TableHeader = () => {
} }
const deleteMutation = useDeleteReseller(); const deleteMutation = useDeleteReseller();
return ( return (
<div className="TableWithHeader single_student"> <div className="TableWithHeader single_student">
<Suspense fallback={<Spin />}> <Suspense fallback={<Spin />}>
@ -42,8 +43,8 @@ const TableHeader = () => {
pageTitle="reseller_details" pageTitle="reseller_details"
/> />
<div className="single_student_body"> <div className="single_student_body">
<div className="student_info reseller_info"> <div className="student_info">
<InfoCard <InfoCard
withButton={true} withButton={true}
data={ReSellerParamInfo} data={ReSellerParamInfo}
name={"moaz dawalibi"} name={"moaz dawalibi"}

View File

@ -1,33 +0,0 @@
import React from "react";
import { getInitialValues, getValidationSchema } from "./formUtil";
import { ModalEnum } from "../../../../enums/Model";
import LayoutModel from "../../../../Layout/Dashboard/LayoutModel";
import { QueryStatusEnum } from "../../../../enums/QueryStatus";
import ModelForm from "./ModelForm";
import { useAddRole } from "../../../../api/role";
const AddModel: React.FC = () => {
const { mutate, status } = useAddRole();
const handleSubmit = (values: any) => {
mutate({
...values,
});
};
return (
<>
<LayoutModel
status={status as QueryStatusEnum}
ModelEnum={ModalEnum.ROLE_ADD}
modelTitle="role"
handleSubmit={handleSubmit}
getInitialValues={getInitialValues({})}
getValidationSchema={getValidationSchema}
>
<ModelForm />
</LayoutModel>
</>
);
};
export default AddModel;

View File

@ -1,36 +0,0 @@
import React from "react";
import { getInitialValues, getValidationSchema } from "./formUtil";
import { ModalEnum } from "../../../../enums/Model";
import LayoutModel from "../../../../Layout/Dashboard/LayoutModel";
import ModelForm from "./ModelForm";
import { QueryStatusEnum } from "../../../../enums/QueryStatus";
import { useObjectToEdit } from "../../../../zustand/ObjectToEditState";
import { useUpdateRole } from "../../../../api/role";
const EditModel: React.FC = () => {
const { mutate, status } = useUpdateRole();
const { objectToEdit } = useObjectToEdit((state) => state);
const handleSubmit = (values: any) => {
mutate({
...values,
});
};
return (
<>
<LayoutModel
status={status as QueryStatusEnum}
ModelEnum={ModalEnum.ROLE_EDIT}
modelTitle="role_details"
handleSubmit={handleSubmit}
getInitialValues={getInitialValues(objectToEdit)}
getValidationSchema={getValidationSchema}
isAddModal={false}
>
<ModelForm />
</LayoutModel>
</>
);
};
export default EditModel;

View File

@ -1,18 +0,0 @@
import React from "react";
import ValidationField from "../../../../Components/ValidationField/ValidationField";
import { Col, Row } from "reactstrap";
const FilterForm = () => {
return (
<div>
<Row>
<Col>
<ValidationField placeholder="name" label="name" name="name" />
<ValidationField placeholder="created_at" label="created_at" name="created_at" />
</Col>
</Row>
</div>
);
};
export default FilterForm;

View File

@ -1,15 +0,0 @@
import { Col, Row } from "reactstrap";
import ValidationField from "../../../../Components/ValidationField/ValidationField";
const Form = () => {
return (
<Row className="w-100">
<Col>
<ValidationField placeholder="name" label="name" name="name" />
<ValidationField placeholder="created_at" label="created_at" name="created_at" />
</Col>
</Row>
);
};
export default Form;

View File

@ -1,13 +0,0 @@
import * as Yup from "yup";
export const getInitialValues = (objectToEdit: any): any => {
return {
id: objectToEdit?.id ?? null,
name: objectToEdit?.name ?? null,
};
};
export const getValidationSchema = () => {
return Yup.object().shape({
name: Yup.string().required("validation.required"),
});
};

View File

@ -1,52 +0,0 @@
import { ModalEnum } from "../../../enums/Model";
import { useTranslation } from "react-i18next";
import { lazy, Suspense } from "react";
import { Spin } from "antd";
import { canAddRole, canAddTags } from "../../../utils/hasAbilityFn";
import useSetPageTitle from "../../../Hooks/useSetPageTitle";
import PageHeader from "../../../Layout/Dashboard/PageHeader";
import FilterLayout from "../../../Layout/Dashboard/FilterLayout";
import FilterForm from "./Model/FilterForm";
import { useDeleteRole } from "../../../api/role";
const Table = lazy(() => import("./Table"));
const AddModalForm = lazy(() => import("./Model/AddModel"));
const EditModalForm = lazy(() => import("./Model/EditModel"));
const DeleteModalForm = lazy(
() => import("../../../Layout/Dashboard/DeleteModels"),
);
const TableHeader = () => {
const [t] = useTranslation();
useSetPageTitle([
{name:`${t(`page_header.home`)}`, path:"/"},
{name:`${t(`page_header.role`)}`, path:"role"}
]);
const deleteMutation = useDeleteRole();
return (
<div className="TableWithHeader">
<Suspense fallback={<Spin />}>
<PageHeader
pageTitle="role"
ModelAbility={ModalEnum?.ROLE_ADD}
canAdd={canAddRole}
/>
<FilterLayout
sub_children={<FilterForm />}
filterTitle="sidebar.role"
haveFilter={false}
/>
<Table />
<DeleteModalForm
deleteMutation={deleteMutation}
ModelEnum={ModalEnum?.ROLE_DELETE}
/>
<AddModalForm />
<EditModalForm />
</Suspense>
</div>
);
};
export default TableHeader;

View File

@ -1,25 +0,0 @@
import React from "react";
import { useGetAllTag } from "../../../api/tags";
import DataTable from "../../../Layout/Dashboard/Table/DataTable";
import { useColumns } from "./useTableColumns";
import { useFilterState } from "../../../Components/Utils/Filter/FilterState";
import { useFilterStateState } from "../../../zustand/Filter";
import { useGetAllRole } from "../../../api/role";
const App: React.FC = () => {
const { filterState } = useFilterState();
const { Filter } = useFilterStateState();
const name = Filter?.name ;
const sort_by = Filter?.sort_by ;
const response = useGetAllRole({
pagination: true,
name,
sort_by,
...filterState,
});
return <DataTable response={response} useColumns={useColumns} />;
};
export default App;

View File

@ -1,17 +0,0 @@
import { useColumns } from "./useTableColumns";
import Table from "./Table";
import { FaPlus } from "react-icons/fa";
import AddModalForm from "./Model/AddModel";
import EditModalForm from "./Model/EditModel";
// import DeleteModalForm from "../../";
export {
Table,
useColumns,
AddModalForm,
EditModalForm,
// DeleteModalForm,
FaPlus,
};

View File

@ -1,65 +0,0 @@
import { TableColumnsType } from "antd";
import { ModalEnum } from "../../../enums/Model";
import { useObjectToEdit } from "../../../zustand/ObjectToEditState";
import { useModalState } from "../../../zustand/Modal";
import { useTranslation } from "react-i18next";
import { canDeleteRole,canEditRole } from "../../../utils/hasAbilityFn";
import ActionButtons from "../../../Components/Table/ActionButtons";
import { Role } from "../../../types/App";
export const useColumns = () => {
const [t] = useTranslation();
const { setIsOpen } = useModalState((state) => state);
const { setObjectToEdit } = useObjectToEdit((state) => state);
const handelDelete = (record: any) => {
setObjectToEdit(record);
setIsOpen(ModalEnum?.ROLE_DELETE);
};
const handleEdit = (record: any) => {
setObjectToEdit(record);
setIsOpen(ModalEnum?.ROLE_EDIT);
};
const columns: TableColumnsType<Role> = [
{
title: t("columns.id"),
dataIndex: "id",
key: "id",
align: "center",
},
{
title: t("columns.name"),
dataIndex: "name",
key: "name",
align: "center",
},
{
title: t("columns.created_at"),
dataIndex: "created_at",
key: "created_at",
align: "center",
},
{
title: t("columns.procedure"),
key: "actions",
align: "center",
width: "25vw",
render: (_text, record, index) => {
return (
<ActionButtons
canDelete={canEditRole}
canEdit={canDeleteRole}
index={index}
onDelete={() => handelDelete(record)}
onEdit={() => handleEdit(record)}
/>
);
},
},
];
return columns;
};

View File

@ -1,7 +1,5 @@
import { TCrudRoute, TMenuItem } from "./types/App"; import { TCrudRoute, TMenuItem } from "./types/App";
import { FaCashRegister, FaHome, FaMoneyBill, FaPaperclip, FaSellcast, FaTag, FaUser,FaUserShield } from "react-icons/fa"; import { FaCashRegister, FaHome, FaMoneyBill, FaPaperclip, FaSellcast, FaTag, FaUser } from "react-icons/fa";
import { CiSquareQuestion } from "react-icons/ci";
import { GrGroup } from "react-icons/gr";
import React from "react"; import React from "react";
const Dummy = React.lazy(() => import("./Pages/Home/Dummy")); const Dummy = React.lazy(() => import("./Pages/Home/Dummy"));
@ -38,7 +36,6 @@ const Param = React.lazy(() => import("./Pages/Admin/Param/Page"));
const QuestionBank = React.lazy(() => import("./Pages/Admin/QuestionBank/Page")); const QuestionBank = React.lazy(() => import("./Pages/Admin/QuestionBank/Page"));
const Notifications = React.lazy(() => import("./Pages/Admin/Notifications/Page")); const Notifications = React.lazy(() => import("./Pages/Admin/Notifications/Page"));
const Profile = React.lazy(() => import("./Pages/Admin/Profile/Page")); const Profile = React.lazy(() => import("./Pages/Admin/Profile/Page"));
const Roles = React.lazy(() => import("./Pages/Admin/Roles/Page"));
/// RESELLER /// /// RESELLER ///
const Student_Package = React.lazy( const Student_Package = React.lazy(
@ -98,7 +95,7 @@ export const menuItems: TMenuItem[] = [
{ {
header: "page_header.student", header: "page_header.student",
element: <Student />, element: <Student />,
icon: <GrGroup />, icon: <MdGrade />,
text: "sidebar.student", text: "sidebar.student",
path: `/${ABILITIES_ENUM?.STUDENT}`, path: `/${ABILITIES_ENUM?.STUDENT}`,
abilities: ABILITIES_ENUM?.STUDENT, abilities: ABILITIES_ENUM?.STUDENT,
@ -139,7 +136,7 @@ export const menuItems: TMenuItem[] = [
{ {
header: "page_header.questionBank", header: "page_header.questionBank",
element: <QuestionBank />, element: <QuestionBank />,
icon: <CiSquareQuestion />, icon: <FaSellcast />,
text: "sidebar.questionBank", text: "sidebar.questionBank",
path: `/${ABILITIES_ENUM?.QUESTION}`, path: `/${ABILITIES_ENUM?.QUESTION}`,
abilities: ABILITIES_ENUM?.QUESTION, abilities: ABILITIES_ENUM?.QUESTION,
@ -147,12 +144,12 @@ export const menuItems: TMenuItem[] = [
prevPath: 0, prevPath: 0,
}, },
{ {
header: "page_header.roles", header: "page_header.notifications",
element: <Roles />, element: <Notifications />,
icon: <FaUserShield />, icon: <FaSellcast />,
text: "sidebar.role", text: "sidebar.notifications",
path: `/${ABILITIES_ENUM?.ROLE}`, path: `/${ABILITIES_ENUM?.NOTIFICATIONS}`,
abilities: ABILITIES_ENUM?.ROLE, abilities: ABILITIES_ENUM?.NOTIFICATIONS,
abilities_value: ABILITIES_VALUES_ENUM.INDEX, abilities_value: ABILITIES_VALUES_ENUM.INDEX,
prevPath: 0, prevPath: 0,
}, },
@ -265,15 +262,7 @@ export const CrudRoute: TCrudRoute[] = [
abilities: ABILITIES_ENUM?.PROFILE, abilities: ABILITIES_ENUM?.PROFILE,
abilities_value: ABILITIES_VALUES_ENUM.INDEX, abilities_value: ABILITIES_VALUES_ENUM.INDEX,
prevPath: 0, prevPath: 0,
}, }
{
header: "page_header.notifications",
element: <Notifications />,
path: `/${ABILITIES_ENUM?.NOTIFICATIONS}`,
abilities: ABILITIES_ENUM?.NOTIFICATIONS,
abilities_value: ABILITIES_VALUES_ENUM.INDEX,
prevPath: 0,
},
]; ];
export const AppRoutes: Record<string, string> = Object.fromEntries( export const AppRoutes: Record<string, string> = Object.fromEntries(

View File

@ -54,8 +54,8 @@
outline: none; outline: none;
border: none; border: none;
width: 120px; width: 120px;
border-radius: 7px; border-radius: 10px;
padding: 7px; padding: 10px;
font-weight: bold; font-weight: bold;
background: var(--primary); background: var(--primary);
color: var(--white); color: var(--white);

View File

@ -49,7 +49,7 @@
border: none; border: none;
min-width: 120px; min-width: 120px;
border-radius: 6px; border-radius: 6px;
padding: 9px !important; padding: 6px 10px;
font-weight: bold; font-weight: bold;
background: var(--primary); background: var(--primary);
color: var(--white); color: var(--white);

View File

@ -1,9 +1,10 @@
.search-field { .search-field {
position: relative; position: relative;
z-index: 999; z-index: 999;
border-radius: 8px; border-radius: 10px;
width: 280px; // box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.001);
direction: ltr; width: 220px;
// direction: ltr;
color: #6a7287b2; color: #6a7287b2;
} }
.NavBar { .NavBar {
@ -11,14 +12,9 @@
color: var(--white) !important; color: var(--white) !important;
background-color: inherit; background-color: inherit;
border-radius: 8px; border-radius: 8px;
border: 1px solid var(--borderColor); border: 2px solid var(--borderColor);
svg{
font-size: 24px;
}
input { input {
color: #fff !important; color: #fff !important;
text-align: end;
font-size: 16px;
} }
} }
} }
@ -32,6 +28,7 @@
background-color: var(--bg); background-color: var(--bg);
font-weight: bold; font-weight: bold;
border-radius: 10px; border-radius: 10px;
// width: 18vw;
height: 40px; height: 40px;
transition: 0.5s ease-in-out; transition: 0.5s ease-in-out;
} }

View File

@ -1,7 +1,7 @@
.DataTable { .DataTable {
width: 100%; width: 100%;
border-radius: 0 0 10px 10px; border-radius: 0 0 10px 10px;
box-shadow: 2px 2px 8px 3px rgba(0, 0, 0, 0.1); // box-shadow: 2px 2px 8px 3px rgba(0, 0, 0, 0.1);
} }
.ant-table-cell { .ant-table-cell {

View File

@ -1,8 +1,6 @@
.filter_header { .filter_header {
padding: 20px 20px; padding: 20px 20px;
border-radius: 10px 10px 0 0; border-radius: 10px 10px 0 0;
box-shadow: 2px 2px 7px 2px rgba(0, 0, 0, 0.1);
> div { > div {
display: flex; display: flex;
align-items: center; align-items: center;
@ -32,18 +30,16 @@
span { span {
display: flex; display: flex;
align-items: center; align-items: center;
color: #6A7287; color: #6a7287;
.pagination_select, .pagination_select,
.order_by_select, .order_by_select,
.filter_modal_select { .filter_modal_select {
border: 1px solid var(--opacity); border: 1px solid var(--opacity);
border-radius: 10px; border-radius: 10px;
// padding-bottom: 46.5px;
.addition_select_icon { .addition_select_icon {
font-size: 25px; font-size: 25px;
} }
div{
color: #6A7287;
}
} }
p { p {
padding-inline: 10px; padding-inline: 10px;
@ -51,11 +47,8 @@
} }
} }
.search-field { .search-field {
// box-shadow: 2px 2px 7px 2px rgba(0, 0, 0, 0.1);
border: 1px solid rgba(0, 0, 0, 0.1); border: 1px solid rgba(0, 0, 0, 0.1);
.search__input{
width: 90%;
text-align: end ;
}
.search__icon { .search__icon {
color: var(--primary); color: var(--primary);
} }
@ -95,16 +88,4 @@
.model_sub_children{ .model_sub_children{
padding-bottom: 30px; padding-bottom: 30px;
}
.ant-select-selection-search{
color: #6A7287 !important;
display: none !important;
}
:where(.css-dev-only-do-not-override-oad6qy).ant-select-single.ant-select-lg .ant-select-selector .ant-select-selection-search{
input{
}
}
:where(.css-dev-only-do-not-override-oad6qy).ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-search-input{
} }

View File

@ -17,11 +17,7 @@
} }
.filter_header_top { .filter_header_top {
h4{ color: #202c4b;
color: var(--secondary);
font-weight:600;
font-size: 18px;
}
} }

View File

@ -120,7 +120,7 @@
.address_card { .address_card {
width: 50%; width: 50%;
margin-block: 0 !important; margin-block: 0 !important;
min-height: 30vh; max-height: 17vw;
} }
.info_card { .info_card {
@ -131,35 +131,6 @@
.student_table { .student_table {
width: 100%; width: 100%;
} }
.reseller_info{
display: flex; flex-wrap: wrap;
.address_card,
.attachments_card,
.info_card{
width: 45%;
div{
span{
font-size: 1.6vw !important;
}
h4{
font-size: 1.8vw;
}
h2{
font-size: 1.6vw !important;
}
h6{
font-size: 1.6vw !important;
}
p{
font-size: 1.6vw !important;
}
}
}
.address_card,
.attachments_card{
max-height: 40vh !important;
}
}
} }
} }
} }

View File

@ -1,6 +1,6 @@
.Table, .Table,
.TableWithTabs { .TableWithTabs {
@include Shadow; @include Shadow;
background: var(--bg); background: var(--bg);
border-radius: 10px; border-radius: 10px;
display: flex; display: flex;
@ -48,7 +48,6 @@
} }
/* pagination */ /* pagination */
.ant-spin-nested-loading ul { .ant-spin-nested-loading ul {
} }
/* Ant tabs tab active */ /* Ant tabs tab active */

View File

@ -12,5 +12,4 @@ export enum ParamsEnum {
QUESTION_ID = "question_id", QUESTION_ID = "question_id",
CHILDREN_QUESTION_ID = "children_question_id", CHILDREN_QUESTION_ID = "children_question_id",
RE_SELLER_ID = "re_seller_id", RE_SELLER_ID = "re_seller_id",
ROLE_ID = "role_id",
} }

View File

@ -47,8 +47,8 @@
"max_mark_must_be_greater_than_min_mark_to_pass": "يجب ان تكون اكبر من علامة النجاح", "max_mark_must_be_greater_than_min_mark_to_pass": "يجب ان تكون اكبر من علامة النجاح",
"Sorry, the question must have at least one option": "عذرًا، يجب أن يحتوي السؤال على خيار واحد على الأقل", "Sorry, the question must have at least one option": "عذرًا، يجب أن يحتوي السؤال على خيار واحد على الأقل",
"at_least_one_answer_should_be_correct": "يجب أن تكون إجابة واحدة صحيحة", "at_least_one_answer_should_be_correct": "يجب أن تكون إجابة واحدة صحيحة",
"it_should_have_more_than_one_answers": "يجب أن يحتوي على أكثر من إجابة", "it_should_have_more_than_one_answers":"يجب أن يحتوي على أكثر من إجابة",
"it_should_have_more_than_one_correct_answers": "يجب أن يحتوي على إجابة صحيحة", "it_should_have_more_than_one_correct_answers":"يجب أن يحتوي على إجابة صحيحة",
"File_size_exceeds_2_MB_limit.":"حجم الملف يتجاوز الحد الأقصى البالغ 2 ميجابايت" "File_size_exceeds_2_MB_limit.":"حجم الملف يتجاوز الحد الأقصى البالغ 2 ميجابايت"
}, },
"header": { "header": {
@ -122,21 +122,20 @@
"sort_by": "ترتيب حسب", "sort_by": "ترتيب حسب",
"filter": "تصفية", "filter": "تصفية",
"per_page": "صف لكل صفحة", "per_page": "صف لكل صفحة",
"entries": "إدخالات", "entries": "ادخالات",
"personal_information": "المعلومات الشخصية", "personal_information": "المعلومات الشخصية",
"address": "العنوان", "address": "العنوان",
"attachment": "المرفق", "attachment": "المرفق",
"subject_of_class": "مواد الصف", "subject_of_class": "مواد الصف",
"this_will_un_do_all_your_changes": "سوف يؤدي هذا إلى إلغاء جميع تغييراتك", "this_will_un_do_all_your_changes":"سوف يؤدي هذا إلى إلغاء جميع تغييراتك",
"edit_question": "تعديل سؤال", "edit_question":"تعديل سؤال",
"notifications": "الإشعارات", "notifications":"الإشعارات",
"delete_all": " حذف الكل", "delete_all":" حذف الكل",
"delete": "حذف", "delete":"حذف",
"attachments": "المرفقات", "attachments":"المرفقات",
"password": "كلمة المرور", "password":"كلمة المرور",
"edit": "تعديل", "edit":"تعديل",
"change": "تغيير", "change":"تغيير"
"role_list": "قائمة الأدوار"
}, },
"columns": { "columns": {
"id": "الرقم التعريفي", "id": "الرقم التعريفي",
@ -183,7 +182,7 @@
"min_mark_to_pass": "علامة النجاح", "min_mark_to_pass": "علامة النجاح",
"isBase": "سؤال رئيسي", "isBase": "سؤال رئيسي",
"question_options_count": "عدد الخيارات", "question_options_count": "عدد الخيارات",
"procedure": "إجراء", "procedure": "اجراء",
"icon": "الايقونة", "icon": "الايقونة",
"canAnswersBeShuffled": "يمكن خلط الإجابات", "canAnswersBeShuffled": "يمكن خلط الإجابات",
"phone_number": "رقم الهاتف", "phone_number": "رقم الهاتف",
@ -191,28 +190,27 @@
"expiration_date": "تاريخ الالغاء", "expiration_date": "تاريخ الالغاء",
"activation_date": "تاريخ التنشيط", "activation_date": "تاريخ التنشيط",
"first_name": "الاسم الأول", "first_name": "الاسم الأول",
"quiz_date": "تاريخ الاختبار", "quiz_date":"تاريخ الاختبار",
"quiz_address": "عنوان الاختبار", "quiz_address":"عنوان الاختبار",
"subject": "المادة", "subject":"المادة",
"quiz_status": "حالة الاختبار", "quiz_status":"حالة الاختبار",
"creator_name": "اسم المنشئ", "creator_name":"اسم المنشئ",
"created_by": "أنشئ بواسطة", "created_by":"أنشئ بواسطة",
"question_type": "نوع تمرين", "question_type": "نوع تمرين",
"base_question": " تمرين متعدد ", "base_question": " تمرين متعدد ",
"normal_question": " تمرين عادي", "normal_question": " تمرين عادي",
"hint": "شرح ", "hint":"شرح ",
"tags": "كلمات مفتاحية", "tags":"كلمات مفتاحية",
"course": " الصفوف", "course":" الصفوف",
"student_full_name": "اسم الطالب الثلاثي", "student_full_name":"اسم الطالب الثلاثي",
"amount_paid": "المبلغ المدفوع", "amount_paid":"المبلغ المدفوع",
"sale_date": "تاريخ البيع", "sale_date":"تاريخ البيع",
"grade": "الصف", "grade":"الصف",
"package": "حزمة", "package":"حزمة",
"ID": "ID", "ID":"ID",
"residual": "المتبقي", "residual":"المتبقي",
"date_of_receipt": "تاريخ الاستلام", "date_of_receipt":"تاريخ الاستلام",
"amount": "مبلغ", "amount":"مبلغ"
"created_at": "تم إنشاؤه في"
}, },
"practical": { "practical": {
"to_confirm_deletion_please_re_enter": "لتأكيد الحذف، يرجى إعادة الإدخال", "to_confirm_deletion_please_re_enter": "لتأكيد الحذف، يرجى إعادة الإدخال",
@ -260,17 +258,17 @@
"next": "التالي", "next": "التالي",
"prev": "السابق", "prev": "السابق",
"Abbreviations": "الاختصارات", "Abbreviations": "الاختصارات",
"address": "العنوان", "address":"العنوان",
"quiz": "الاختبارات", "quiz":"الاختبارات",
"hightes_quiz": "اعلى اختبار", "hightes_quiz":"اعلى اختبار",
"sales": "المبيعات", "sales":"المبيعات",
"collections": "التحصيلات", "collections":"التحصيلات",
"collecting_an_amount": "تحصيل مبلغ", "collecting_an_amount":"تحصيل مبلغ",
"governorate": "المحافظة", "governorate":"المحافظة",
"id_photo": "صورة الهوية", "id_photo":"صورة الهوية",
"sorry_something_went_wrong": "عفوا ، حدث خطأ ما", "sorry_something_went_wrong":"عفوا ، حدث خطأ ما",
"error_404_Page_not_found._Sorry,_the_page_you_are_looking_for_does_not_exist": "خطأ 404 لم يتم العثور على الصفحة. عذرا الصفحة التي تبحث عنها غير موجودة ", "error_404_Page_not_found._Sorry,_the_page_you_are_looking_for_does_not_exist":"خطأ 404 لم يتم العثور على الصفحة. عذرا الصفحة التي تبحث عنها غير موجودة ",
"return_to_the_dashboard": "العودة إلى لوحة القيادة" "return_to_the_dashboard":"العودة إلى لوحة القيادة"
}, },
"Table": { "Table": {
"header": "", "header": "",
@ -342,11 +340,9 @@
"reseller_details": "تفاصيل اعادة البيع", "reseller_details": "تفاصيل اعادة البيع",
"reseller": "البائعين", "reseller": "البائعين",
"student_package": "حزمة الطالب", "student_package": "حزمة الطالب",
"collection": "تحصيل", "collection":"تحصيل",
"profile": "الملف الشخصي", "profile":"الملف الشخصي"
"role_details": "تفاصيل الأدوار", },
"created_at": "تم إنشاؤه في"
},
"education_class_actions": { "education_class_actions": {
"Student_Records": "سجلات الطلاب", "Student_Records": "سجلات الطلاب",
"Attendance": "الحضور", "Attendance": "الحضور",
@ -461,15 +457,14 @@
"city": "المحافظة", "city": "المحافظة",
"personal_image": "صورة شخصية", "personal_image": "صورة شخصية",
"id_image": "صورة الهوية", "id_image": "صورة الهوية",
"grade": "الصفوف", "grade":"الصفوف",
"subject": "المادة", "subject":"المادة",
"unit": "الوحدة", "unit":"الوحدة",
"lesson": "الدرس", "lesson":"الدرس",
"date_of_receipt": "تاريخ الاستلام", "date_of_receipt":"تاريخ الاستلام",
"amount_value": "قيمة المبلغ", "amount_value":"قيمة المبلغ",
"email_address": "عنوان البريد الإلكتروني", "email_address":"عنوان البريد الإلكتروني",
"current_password": "كلمة المرور الحالية", "current_password":"كلمة المرور الحالية"
"created_at": "تم إنشاؤه في"
}, },
"select": { "select": {
"enums": { "enums": {
@ -726,6 +721,7 @@
"admin": "المسؤول", "admin": "المسؤول",
"branchAdmin": "مسؤول الفروع" "branchAdmin": "مسؤول الفروع"
}, },
"array": { "array": {
"Period": { "Period": {
"Today": "اليوم", "Today": "اليوم",
@ -766,6 +762,7 @@
"waiting": "قيد الانتظار", "waiting": "قيد الانتظار",
"done": "انتهى" "done": "انتهى"
}, },
"sidebar": { "sidebar": {
"dashboard": "لوحة القيادة", "dashboard": "لوحة القيادة",
"course": "الصفوف", "course": "الصفوف",
@ -778,7 +775,7 @@
"subject_details": "تفاصيل المادة", "subject_details": "تفاصيل المادة",
"logout": "تسجيل الخروج", "logout": "تسجيل الخروج",
"branch": "الفروع", "branch": "الفروع",
"role": "الأدوار", "role": "الادوار",
"admin": "المسؤولون", "admin": "المسؤولون",
"subject": "المواد", "subject": "المواد",
"tags": "كلمات مفتاحية", "tags": "كلمات مفتاحية",
@ -797,10 +794,10 @@
"reseller": "البائعين", "reseller": "البائعين",
"param": "معامل", "param": "معامل",
"student_package": "حزمة الطالب", "student_package": "حزمة الطالب",
"quiz": "الاختبارات", "quiz":"الاختبارات",
"questionBank": "بنك الأسئلة", "questionBank":"بنك الأسئلة",
"notifications": "الإشعارات", "notifications":"الإشعارات",
"profile": "الملف الشخصي" "profile":"الملف الشخصي"
}, },
"message": { "message": {
"some_thing_went_wrong": "حدث خطأ ما", "some_thing_went_wrong": "حدث خطأ ما",
@ -815,7 +812,7 @@
"teacher": "المعلمون", "teacher": "المعلمون",
"payment": "الدفعات", "payment": "الدفعات",
"branch": "الفروع", "branch": "الفروع",
"role": "الأدوار", "role": "الادوار",
"admin": "المسؤولون", "admin": "المسؤولون",
"note": "ملاحظات", "note": "ملاحظات",
"status": "حالة", "status": "حالة",
@ -828,18 +825,18 @@
"user": "مستخدم", "user": "مستخدم",
"param": "معامل", "param": "معامل",
"student_package": "حزمة الطالب", "student_package": "حزمة الطالب",
"users": "المستخدمون", "users":"المستخدمون",
"students": "الطلاب", "students":"الطلاب",
"students_details": "تفاصيل الطلاب", "students_details":"تفاصيل الطلاب",
"add_reseller": "إضافة بائع", "add_reseller": "إضافة بائع",
"grade": "الصفوف", "grade": "الصفوف",
"report": "تقرير", "report": "تقرير",
"tags": "كلمات مفتاحية", "tags": "كلمات مفتاحية",
"reseller": "البائعين", "reseller":"البائعين",
"QuestionBank": "بنك الأسئلة", "QuestionBank":"بنك الأسئلة",
"reseller_details": "تفاصيل البائع", "reseller_details":"تفاصيل البائع",
"notifications": "الإشعارات", "notifications":"الإشعارات",
"profile": "الملف الشخصي" "profile":"الملف الشخصي"
}, },
"page_header": { "page_header": {
"home": "لوحة القيادة", "home": "لوحة القيادة",
@ -847,7 +844,7 @@
"teacher": " المعلمون", "teacher": " المعلمون",
"payment": " الدفعات", "payment": " الدفعات",
"branch": " الفروع", "branch": " الفروع",
"role": " الأدوار", "role": " الادوار",
"student": " قائمة الطلاب ", "student": " قائمة الطلاب ",
"admin": " المسؤولون", "admin": " المسؤولون",
"student_details": "تفاصيل الطالب", "student_details": "تفاصيل الطالب",
@ -877,18 +874,17 @@
"add_reseller": " البائعين / إضافة بائع ", "add_reseller": " البائعين / إضافة بائع ",
"param": "معامل", "param": "معامل",
"student_package": "حزمة الطالب", "student_package": "حزمة الطالب",
"QuestionBank": "بنك الأسئلة", "QuestionBank":"بنك الأسئلة",
"reseller_details": "تفاصيل البائع", "reseller_details":"تفاصيل البائع",
"notifications": "الإشعارات", "notifications":"الإشعارات",
"profile": "الملف الشخصي", "profile":"الملف الشخصي"
"user": "مستخدم"
}, },
"table": { "table": {
"student": "قائمة الطلاب", "student": "قائمة الطلاب",
"reseller": "البائعين", "reseller": "البائعين",
"grade": "قائمة الصفوف", "grade": "قائمة الصفوف",
"subjects": "مواد الصف", "subjects": "مواد الصف",
"QuestionBank": "بنك الأسئلة" "QuestionBank":"بنك الأسئلة"
}, },
"alphabet": { "alphabet": {
"A": "A", "A": "A",
@ -919,4 +915,4 @@
"Z": "Z" "Z": "Z"
}, },
"upcoming": "" "upcoming": ""
} }

View File

@ -1,8 +0,0 @@
export type FilterLayout = {
filterTitle: string;
sub_children: any;
search_by?:string
width?:string
haveFilter?:boolean
};