Merge branch 'feature/machinary_office_design' into 'develop'

Feature/machinary office design

See merge request witel3/loan-facilities-expert!27
This commit is contained in:
yasaman aliakbari
2023-07-16 06:49:40 +00:00
8 changed files with 342 additions and 2 deletions

View File

@@ -48,6 +48,7 @@
"Dashboard": {
"dashboard_page": "داشبورد",
"passenger_office_page": "اداره مسافر",
"machinary_office_page": "ماشین آلات",
"change_password": "تغییر رمز عبور",
"edit_profile": "ویرایش پروفایل"
},
@@ -100,6 +101,16 @@
"vehicle_type": "نوع ماشین",
"state_name": "وضعیت درخواست"
},
"MachinaryOffice": {
"name": "نام",
"id": "کد ملی",
"phone_number": "موبایل",
"created_at": "تاریخ درخواست",
"updated_at": "تاریخ بروزرسانی",
"navgan_id": "کد ناوگان",
"vehicle_type": "نوع ماشین",
"state_name": "وضعیت درخواست"
},
"ConfirmDialog": {
"confirm": "تایید",
"context": "آیا از تایید این آیتم اطمینان دارید",

View File

@@ -0,0 +1,39 @@
import {
Dialog,
DialogTitle,
DialogContent,
DialogContentText,
DialogActions,
Button,
} from "@mui/material";
import { useTranslations } from "next-intl";
const ConfirmForm = ({
open,
handleClose,
handleDelete,
rowId,
deleteData,
}) => {
const t = useTranslations();
const handleDeleteExpert = () => {
handleDelete();
};
return (
<Dialog open={open} onClose={handleClose}>
<DialogTitle>{t("delete-dialog.confirm")}</DialogTitle>
<DialogContent>
<DialogContentText>{t("delete-dialog.context")}</DialogContentText>
</DialogContent>
<DialogActions>
<Button onClick={handleDeleteExpert} color="primary">
{t("delete-dialog.button-delete")}
</Button>
<Button onClick={handleClose} color="secondary" autoFocus>
{t("delete-dialog.button-cancel")}
</Button>
</DialogActions>
</Dialog>
);
};
export default ConfirmForm;

View File

@@ -0,0 +1,33 @@
import {
Dialog,
DialogTitle,
DialogContent,
DialogContentText,
DialogActions,
Button,
} from "@mui/material";
import { useTranslations } from "next-intl";
const RejectForm = ({ open, handleClose, handleDelete, rowId, deleteData }) => {
const t = useTranslations();
const handleDeleteExpert = () => {
handleDelete();
};
return (
<Dialog open={open} onClose={handleClose}>
<DialogTitle>{t("delete-dialog.confirm")}</DialogTitle>
<DialogContent>
<DialogContentText>{t("delete-dialog.context")}</DialogContentText>
</DialogContent>
<DialogActions>
<Button onClick={handleDeleteExpert} color="primary">
{t("delete-dialog.button-delete")}
</Button>
<Button onClick={handleClose} color="secondary" autoFocus>
{t("delete-dialog.button-cancel")}
</Button>
</DialogActions>
</Dialog>
);
};
export default RejectForm;

View File

@@ -0,0 +1,46 @@
import ThumbUpAltIcon from "@mui/icons-material/ThumbUpAlt";
import ThumbDownIcon from "@mui/icons-material/ThumbDown";
import { Box, IconButton } from "@mui/material";
import { useContext } from "react";
import { DataTableContext } from "@/lib/app/contexts/DataTableContext";
import ConfirmForm from "./Form/ConfirmForm";
import RejectForm from "./Form/RejectForm";
// import DeleteForm from "./Form/DeleteForm";
const TableRowActions = ({ row }) => {
// const {
// openDeleteDialog,
// handleOpenDeleteDialog,
// handleCloseDeleteDialog,
// handleDeleteDialog,
// rowId,
// deleteData,
// } = useContext(DataTableContext);
return (
<Box sx={{ display: "flex", flexWrap: "nowrap", gap: "8px" }}>
<IconButton color="primary" onClick={() => handleOpenDeleteDialog(row)}>
<ThumbUpAltIcon />
</IconButton>
{/* <ConfirmForm
rowId={rowId}
open={openDeleteDialog}
handleClose={handleCloseDeleteDialog}
handleDelete={handleDeleteDialog}
deleteData={deleteData}
/> */}
<IconButton color="primary" onClick={() => handleOpenDeleteDialog(row)}>
<ThumbDownIcon />
</IconButton>
{/* <RejectForm
rowId={rowId}
open={openDeleteDialog}
handleClose={handleCloseDeleteDialog}
handleDelete={handleDeleteDialog}
deleteData={deleteData}
/> */}
</Box>
);
};
export default TableRowActions;

View File

@@ -0,0 +1,13 @@
import { Stack, Tooltip } from "@mui/material";
import { useTranslations } from "next-intl";
function TableToolbar() {
const t = useTranslations();
return (
<Stack direction={"row"} spacing={2}>
<Tooltip title={t("add")} arrow placement="right"></Tooltip>
</Stack>
);
}
export default TableToolbar;

View File

@@ -0,0 +1,177 @@
import DataTableStructure from "@/core/components/DatatableStructure";
import DashboardLayouts from "@/layouts/dashboardLayouts";
import { Box, Typography } from "@mui/material";
import { useMemo } from "react";
// import TableToolbar from "./TableTollbar";
import { GET_PASSENGER_OFFICE } from "@/core/data/apiRoutes";
import { useTranslations } from "next-intl";
import TableRowActions from "./TableRowActions";
function DashboardMachinaryOfficeComponent() {
const t = useTranslations();
const columns = useMemo(
() => [
{
accessorFn: (row) => row.name,
id: "name",
header: t("MachinaryOffice.name"),
enableColumnFilter: true,
datatype: "text",
filterFn: "contains",
columnFilterModeOptions: ["contains", "equals", "notEquals"],
Cell: ({ renderedCellValue }) => (
<Typography variant="body2">{renderedCellValue}</Typography>
),
},
{
accessorFn: (row) => row.id,
id: "id",
header: t("MachinaryOffice.id"),
enableColumnFilter: true,
datatype: "numeric",
filterFn: "equals",
columnFilterModeOptions: [
"equals",
"notEquals",
"contains",
"lessThan",
"greaterThan",
"between",
],
Cell: ({ renderedCellValue }) => (
<Typography variant="body2">{renderedCellValue}</Typography>
),
},
{
accessorFn: (row) => row.phone_number,
id: "phone_number",
header: t("MachinaryOffice.phone_number"),
enableColumnFilter: true,
datatype: "numeric",
filterFn: "equals",
columnFilterModeOptions: [
"equals",
"notEquals",
"contains",
"lessThan",
"greaterThan",
"between",
],
Cell: ({ renderedCellValue }) => (
<Typography variant="body2">{renderedCellValue}</Typography>
),
},
{
accessorFn: (row) => row.created_at,
id: "created_at",
header: t("MachinaryOffice.created_at"),
enableColumnFilter: true,
datatype: "numeric",
filterFn: "equals",
columnFilterModeOptions: [
"equals",
"notEquals",
"contains",
"lessThan",
"greaterThan",
"between",
],
Cell: ({ renderedCellValue }) => (
<Typography variant="body2">{renderedCellValue}</Typography>
),
},
{
accessorFn: (row) => row.updated_at,
id: "updated_at",
header: t("MachinaryOffice.updated_at"),
enableColumnFilter: true,
datatype: "numeric",
filterFn: "equals",
columnFilterModeOptions: [
"equals",
"notEquals",
"contains",
"lessThan",
"greaterThan",
"between",
],
Cell: ({ renderedCellValue }) => (
<Typography variant="body2">{renderedCellValue}</Typography>
),
},
{
accessorFn: (row) => row.navgan_id,
id: "navgan_id",
header: t("MachinaryOffice.navgan_id"),
enableColumnFilter: true,
datatype: "numeric",
filterFn: "equals",
columnFilterModeOptions: [
"equals",
"notEquals",
"contains",
"lessThan",
"greaterThan",
"between",
],
Cell: ({ renderedCellValue }) => (
<Typography variant="body2">{renderedCellValue}</Typography>
),
},
{
accessorFn: (row) => row.vehicle_type,
id: "vehicle_type",
header: t("MachinaryOffice.vehicle_type"),
enableColumnFilter: true,
datatype: "text",
filterFn: "contains",
columnFilterModeOptions: ["contains", "equals", "notEquals"],
Cell: ({ renderedCellValue }) => (
<Typography variant="body2">{renderedCellValue}</Typography>
),
},
{
accessorFn: (row) => row.state_name,
id: "state_id",
header: t("MachinaryOffice.state_name"),
enableColumnFilter: true,
datatype: "numeric",
filterFn: "equals",
filterSelectOptions: [
{ text: "Active", value: "0" },
{ text: "Deactive", value: "1" },
],
filterVariant: "select",
Cell: ({ renderedCellValue }) => (
<Typography variant="body2">{renderedCellValue}</Typography>
),
},
],
[]
);
return (
<DashboardLayouts>
<Box sx={{ px: 3 }}>
<DataTableStructure
tableUrl={GET_PASSENGER_OFFICE}
columns={columns}
selectableRow={false}
enableCustomToolbar={true}
// CustomToolbar={<TableToolbar />}
enableLastUpdate={true}
enablePinning={true}
enableDensityToggle={true}
enableColumnFilters={true}
enableHiding={true}
enableFullScreenToggle={false}
enableGlobalFilter={false}
enableColumnResizing={false} // if you want true this you shold change renderRowActions props ** see https://www.material-react-table.com/docs/guides/row-actions
enableRowActions={true}
renderRowActions={({ row }) => <TableRowActions row={row} />}
/>
</Box>
</DashboardLayouts>
);
}
export default DashboardMachinaryOfficeComponent;

View File

@@ -41,12 +41,10 @@ const LoginComponent = () => {
password: values.password,
})
.then(function (response) {
console.log(response);
setToken(response.data.token);
})
.catch(function (error) {
// Notifications(directionApp, error.response, t);
console.log(error);
props.setSubmitting(false);
});
};

View File

@@ -0,0 +1,23 @@
import DashboardMachinaryOfficeComponent from "@/components/dashboard/machinary-office";
import TitlePage from "@/core/components/TitlePage";
import WithAuthMiddleware from "@/middlewares/WithAuth";
import { parse } from "next-useragent";
export default function PassengerOffice() {
return (
<WithAuthMiddleware>
<TitlePage text="Dashboard.machinary_office_page" />
<DashboardMachinaryOfficeComponent />
</WithAuthMiddleware>
);
}
export async function getServerSideProps({ req, locale }) {
const { isBot } = parse(req.headers["user-agent"]);
return {
props: {
messages: (await import(`&/locales/${locale}/app.json`)).default,
isBot,
},
};
}