fixes and role page

This commit is contained in:
Moaz Dawalibi 2024-09-16 12:23:13 +03:00
parent c5c484d5c3
commit a987ec7dad
24 changed files with 458 additions and 103 deletions

View File

@ -1,6 +1,7 @@
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;
@ -60,7 +61,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 && <IoSearch className="search__icon" />} {withIcon && <LuSearch className="search__icon" />}
{/* <p className="search__input_text">{placeholder}</p> */} {/* <p className="search__input_text">{placeholder}</p> */}
<input <input

View File

@ -16,13 +16,15 @@ 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);
@ -63,7 +65,7 @@ const FilterLayout = ({
</span> </span>
<span> <span>
<OrderBySelect /> {haveOrder && <OrderBySelect />}
</span> </span>
</div> </div>
</div> </div>

View File

@ -35,7 +35,6 @@ 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 />}>
@ -43,8 +42,8 @@ const TableHeader = () => {
pageTitle="reseller_details" pageTitle="reseller_details"
/> />
<div className="single_student_body"> <div className="single_student_body">
<div className="student_info"> <div className="student_info reseller_info">
<InfoCard <InfoCard
withButton={true} withButton={true}
data={ReSellerParamInfo} data={ReSellerParamInfo}
name={"moaz dawalibi"} name={"moaz dawalibi"}

View File

@ -0,0 +1,33 @@
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

@ -0,0 +1,36 @@
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

@ -0,0 +1,18 @@
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

@ -0,0 +1,15 @@
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

@ -0,0 +1,13 @@
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

@ -0,0 +1,52 @@
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

@ -0,0 +1,25 @@
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

@ -0,0 +1,17 @@
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

@ -0,0 +1,65 @@
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

@ -36,6 +36,7 @@ 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(
@ -153,6 +154,16 @@ export const menuItems: TMenuItem[] = [
abilities_value: ABILITIES_VALUES_ENUM.INDEX, abilities_value: ABILITIES_VALUES_ENUM.INDEX,
prevPath: 0, prevPath: 0,
}, },
{
header: "page_header.roles",
element: <Roles />,
icon: <FaSellcast />,
text: "sidebar.role",
path: `/${ABILITIES_ENUM?.ROLE}`,
abilities: ABILITIES_ENUM?.ROLE,
abilities_value: ABILITIES_VALUES_ENUM.INDEX,
prevPath: 0,
},
/// RESELLER ///// /// RESELLER /////

View File

@ -54,8 +54,8 @@
outline: none; outline: none;
border: none; border: none;
width: 120px; width: 120px;
border-radius: 10px; border-radius: 7px;
padding: 10px; padding: 7px;
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: 6px 10px; padding: 9px !important;
font-weight: bold; font-weight: bold;
background: var(--primary); background: var(--primary);
color: var(--white); color: var(--white);

View File

@ -1,10 +1,9 @@
.search-field { .search-field {
position: relative; position: relative;
z-index: 999; z-index: 999;
border-radius: 10px; border-radius: 8px;
// box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.001); width: 280px;
width: 220px; direction: ltr;
// direction: ltr;
color: #6a7287b2; color: #6a7287b2;
} }
.NavBar { .NavBar {
@ -12,9 +11,14 @@
color: var(--white) !important; color: var(--white) !important;
background-color: inherit; background-color: inherit;
border-radius: 8px; border-radius: 8px;
border: 2px solid var(--borderColor); border: 1px solid var(--borderColor);
svg{
font-size: 24px;
}
input { input {
color: #fff !important; color: #fff !important;
text-align: end;
font-size: 16px;
} }
} }
} }
@ -28,7 +32,6 @@
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,6 +1,8 @@
.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;
@ -30,16 +32,18 @@
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;
@ -47,8 +51,11 @@
} }
} }
.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);
} }
@ -88,4 +95,16 @@
.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,7 +17,11 @@
} }
.filter_header_top { .filter_header_top {
color: #202c4b; h4{
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;
max-height: 17vw; min-height: 30vh;
} }
.info_card { .info_card {
@ -131,6 +131,35 @@
.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,6 +48,7 @@
} }
/* pagination */ /* pagination */
.ant-spin-nested-loading ul { .ant-spin-nested-loading ul {
} }
/* Ant tabs tab active */ /* Ant tabs tab active */

View File

@ -12,4 +12,5 @@ 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": "يجب أن يحتوي على إجابة صحيحة"
}, },
"header": { "header": {
"register_students": "تسجيل الطلاب", "register_students": "تسجيل الطلاب",
@ -121,20 +121,21 @@
"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": "الرقم التعريفي",
@ -181,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": "رقم الهاتف",
@ -189,27 +190,28 @@
"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": "لتأكيد الحذف، يرجى إعادة الإدخال",
@ -257,17 +259,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": "",
@ -339,9 +341,11 @@
"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": "الحضور",
@ -456,14 +460,15 @@
"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": {
@ -720,7 +725,6 @@
"admin": "المسؤول", "admin": "المسؤول",
"branchAdmin": "مسؤول الفروع" "branchAdmin": "مسؤول الفروع"
}, },
"array": { "array": {
"Period": { "Period": {
"Today": "اليوم", "Today": "اليوم",
@ -761,7 +765,6 @@
"waiting": "قيد الانتظار", "waiting": "قيد الانتظار",
"done": "انتهى" "done": "انتهى"
}, },
"sidebar": { "sidebar": {
"dashboard": "لوحة القيادة", "dashboard": "لوحة القيادة",
"course": "الصفوف", "course": "الصفوف",
@ -774,7 +777,7 @@
"subject_details": "تفاصيل المادة", "subject_details": "تفاصيل المادة",
"logout": "تسجيل الخروج", "logout": "تسجيل الخروج",
"branch": "الفروع", "branch": "الفروع",
"role": "الادوار", "role": "الأدوار",
"admin": "المسؤولون", "admin": "المسؤولون",
"subject": "المواد", "subject": "المواد",
"tags": "كلمات مفتاحية", "tags": "كلمات مفتاحية",
@ -793,10 +796,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": "حدث خطأ ما",
@ -811,7 +814,7 @@
"teacher": "المعلمون", "teacher": "المعلمون",
"payment": "الدفعات", "payment": "الدفعات",
"branch": "الفروع", "branch": "الفروع",
"role": "الادوار", "role": "الأدوار",
"admin": "المسؤولون", "admin": "المسؤولون",
"note": "ملاحظات", "note": "ملاحظات",
"status": "حالة", "status": "حالة",
@ -824,18 +827,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": "لوحة القيادة",
@ -843,7 +846,7 @@
"teacher": " المعلمون", "teacher": " المعلمون",
"payment": " الدفعات", "payment": " الدفعات",
"branch": " الفروع", "branch": " الفروع",
"role": " الادوار", "role": " الأدوار",
"student": " قائمة الطلاب ", "student": " قائمة الطلاب ",
"admin": " المسؤولون", "admin": " المسؤولون",
"student_details": "تفاصيل الطالب", "student_details": "تفاصيل الطالب",
@ -873,18 +876,18 @@
"add_reseller": " البائعين / إضافة بائع ", "add_reseller": " البائعين / إضافة بائع ",
"param": "معامل", "param": "معامل",
"student_package": "حزمة الطالب", "student_package": "حزمة الطالب",
"QuestionBank":"بنك الأسئلة", "QuestionBank": "بنك الأسئلة",
"reseller_details":"تفاصيل البائع", "reseller_details": "تفاصيل البائع",
"notifications":"الإشعارات", "notifications": "الإشعارات",
"profile":"الملف الشخصي", "profile": "الملف الشخصي",
"user":"مستخدم" "user": "مستخدم"
}, },
"table": { "table": {
"student": "قائمة الطلاب", "student": "قائمة الطلاب",
"reseller": "البائعين", "reseller": "البائعين",
"grade": "قائمة الصفوف", "grade": "قائمة الصفوف",
"subjects": "مواد الصف", "subjects": "مواد الصف",
"QuestionBank":"بنك الأسئلة" "QuestionBank": "بنك الأسئلة"
}, },
"alphabet": { "alphabet": {
"A": "A", "A": "A",
@ -915,4 +918,4 @@
"Z": "Z" "Z": "Z"
}, },
"upcoming": "" "upcoming": ""
} }

View File

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