Feature/amiriis missions

This commit is contained in:
AmirHossein Mahmoodi
2025-06-25 07:41:03 +00:00
parent 9ae5b8934c
commit 12d6d08bef
734 changed files with 48930 additions and 46048 deletions

View File

@@ -1,10 +1,10 @@
export default function DataTableFilterDataStructure(filterData, isValueEmpty) {
return Object.values(filterData)
.filter((filter) => !isValueEmpty(filter.value))
.map(({ filterMode, id, datatype, value }) => ({
id: id.replace(/__/g, "."),
fn: filterMode,
datatype,
value,
}));
}
export default function DataTableFilterDataStructure(filterData, isValueEmpty) {
return Object.values(filterData)
.filter((filter) => !isValueEmpty(filter.value))
.map(({ filterMode, id, datatype, value }) => ({
id: id.replace(/__/g, "."),
fn: filterMode,
datatype,
value,
}));
}

View File

@@ -1,28 +1,28 @@
"use client";
import createCache from "@emotion/cache";
import { prefixer } from "stylis";
import stylisRTLPlugin from "stylis-plugin-rtl";
import { CacheProvider } from "@emotion/react";
const isBrowser = typeof document !== "undefined";
const createEmotionCache = () => {
let insertionPoint;
if (isBrowser) {
const emotionInsertionPoint = document.querySelector('meta[name="emotion-insertion-point"]');
insertionPoint = emotionInsertionPoint ?? undefined;
}
return createCache({
insertionPoint,
key: "mui-rtl",
stylisPlugins: [prefixer, stylisRTLPlugin],
});
};
const cacheProviderRtl = (props) => {
return <CacheProvider value={createEmotionCache()}>{props.children}</CacheProvider>;
};
export default cacheProviderRtl;
"use client";
import createCache from "@emotion/cache";
import { prefixer } from "stylis";
import stylisRTLPlugin from "stylis-plugin-rtl";
import { CacheProvider } from "@emotion/react";
const isBrowser = typeof document !== "undefined";
const createEmotionCache = () => {
let insertionPoint;
if (isBrowser) {
const emotionInsertionPoint = document.querySelector('meta[name="emotion-insertion-point"]');
insertionPoint = emotionInsertionPoint ?? undefined;
}
return createCache({
insertionPoint,
key: "mui-rtl",
stylisPlugins: [prefixer, stylisRTLPlugin],
});
};
const cacheProviderRtl = (props) => {
return <CacheProvider value={createEmotionCache()}>{props.children}</CacheProvider>;
};
export default cacheProviderRtl;

View File

@@ -1,65 +1,65 @@
"use client";
import { toast } from "react-toastify";
import {
errorAccessDeniedToast,
errorClientToast,
errorLogicToast,
errorServerToast,
errorTooManyToast,
errorUnauthorizedToast,
errorValidationToast,
} from "@/core/components/Toasts/error";
const isServerError = (status) => status >= 500 && status <= 599;
const isClientError = (status) => status >= 400 && status <= 499;
const errorServer = (response, notification, toastContainer) => {
if (notification) errorServerToast(toastContainer);
};
const errorClient = (response, notification, toastContainer, logout) => {
switch (response.status) {
case 401:
logout();
if (notification) errorUnauthorizedToast(toastContainer);
break;
case 403:
if (notification) errorAccessDeniedToast(response.data.message, toastContainer);
break;
case 422:
if ("type" in response.data) {
if (Array.isArray(response.data.message)) {
response.data.message.map((item) => {
if (notification) errorLogicToast(item, toastContainer);
});
} else {
if (notification) errorLogicToast(response.data.message, toastContainer);
}
break;
}
if (notification) {
const errorsMap = Object.keys(response.data.errors);
const errorsArray = response.data.errors;
errorsMap.map((item, index) => {
errorValidationToast(errorsArray[item][0], toastContainer);
});
}
break;
case 429:
if (notification) errorTooManyToast(toastContainer);
break;
default:
if (notification) errorClientToast(toastContainer);
break;
}
};
export const errorResponse = (response, notification, toastContainer, logout) => {
if (notification) toast.dismiss({ containerId: toastContainer });
if (isServerError(response.status)) {
errorServer(response, notification, toastContainer);
} else if (isClientError(response.status)) {
errorClient(response, notification, toastContainer, logout);
}
};
"use client";
import { toast } from "react-toastify";
import {
errorAccessDeniedToast,
errorClientToast,
errorLogicToast,
errorServerToast,
errorTooManyToast,
errorUnauthorizedToast,
errorValidationToast,
} from "@/core/components/Toasts/error";
const isServerError = (status) => status >= 500 && status <= 599;
const isClientError = (status) => status >= 400 && status <= 499;
const errorServer = (response, notification, toastContainer) => {
if (notification) errorServerToast(toastContainer);
};
const errorClient = (response, notification, toastContainer, logout) => {
switch (response.status) {
case 401:
logout();
if (notification) errorUnauthorizedToast(toastContainer);
break;
case 403:
if (notification) errorAccessDeniedToast(response.data.message, toastContainer);
break;
case 422:
if ("type" in response.data) {
if (Array.isArray(response.data.message)) {
response.data.message.map((item) => {
if (notification) errorLogicToast(item, toastContainer);
});
} else {
if (notification) errorLogicToast(response.data.message, toastContainer);
}
break;
}
if (notification) {
const errorsMap = Object.keys(response.data.errors);
const errorsArray = response.data.errors;
errorsMap.map((item, index) => {
errorValidationToast(errorsArray[item][0], toastContainer);
});
}
break;
case 429:
if (notification) errorTooManyToast(toastContainer);
break;
default:
if (notification) errorClientToast(toastContainer);
break;
}
};
export const errorResponse = (response, notification, toastContainer, logout) => {
if (notification) toast.dismiss({ containerId: toastContainer });
if (isServerError(response.status)) {
errorServer(response, notification, toastContainer);
} else if (isClientError(response.status)) {
errorClient(response, notification, toastContainer, logout);
}
};

View File

@@ -1,17 +1,17 @@
export function filterMenuItems(items, _permissions = []) {
return items.reduce((acc, item) => {
if (item.permissions) {
if (item.permissions.some((permission) => _permissions.includes(permission))) {
acc.push(item);
}
} else if (item.hasSubitems) {
const filteredSubItems = filterMenuItems(item.Subitems, _permissions);
if (filteredSubItems.length > 0) {
acc.push({ ...item, Subitems: filteredSubItems });
}
} else {
acc.push(item);
}
return acc;
}, []);
}
export function filterMenuItems(items, _permissions = []) {
return items.reduce((acc, item) => {
if (item.permissions) {
if (item.permissions.some((permission) => _permissions.includes(permission))) {
acc.push(item);
}
} else if (item.hasSubitems) {
const filteredSubItems = filterMenuItems(item.Subitems, _permissions);
if (filteredSubItems.length > 0) {
acc.push({ ...item, Subitems: filteredSubItems });
}
} else {
acc.push(item);
}
return acc;
}, []);
}

View File

@@ -1,9 +1,9 @@
export const flattenArrayOfObjects = (array, key) => {
return array.reduce((acc, obj) => {
acc.push(obj);
if (Array.isArray(obj[key])) {
acc.push(...flattenArrayOfObjects(obj[key], key));
}
return acc;
}, []);
};
export const flattenArrayOfObjects = (array, key) => {
return array.reduce((acc, obj) => {
acc.push(obj);
if (Array.isArray(obj[key])) {
acc.push(...flattenArrayOfObjects(obj[key], key));
}
return acc;
}, []);
};

View File

@@ -1,12 +1,12 @@
export const flattenObjectOfObjects = (obj, res = {}) => {
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
if (typeof obj[key] === "object" && obj[key] !== null) {
flattenObjectOfObjects(obj[key], res);
} else {
res[key] = obj[key];
}
}
}
return res;
};
export const flattenObjectOfObjects = (obj, res = {}) => {
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
if (typeof obj[key] === "object" && obj[key] !== null) {
flattenObjectOfObjects(obj[key], res);
} else {
res[key] = obj[key];
}
}
}
return res;
};

View File

@@ -1,7 +1,7 @@
export const formatCounter = (counter) => {
const minutes = Math.floor(counter / 60)
.toString()
.padStart(2, "0");
const seconds = (counter % 60).toString().padStart(2, "0");
return `${minutes}:${seconds}`;
};
export const formatCounter = (counter) => {
const minutes = Math.floor(counter / 60)
.toString()
.padStart(2, "0");
const seconds = (counter % 60).toString().padStart(2, "0");
return `${minutes}:${seconds}`;
};

View File

@@ -1,10 +1,10 @@
import moment from "jalali-moment";
export const formatSecondsToHHMMSS = (seconds) => {
const duration = moment.duration(seconds, "seconds");
const hours = Math.floor(duration.asHours());
const minutes = duration.minutes();
const secs = duration.seconds();
return `${String(hours).padStart(2, "0")}:${String(minutes).padStart(2, "0")}:${String(secs).padStart(2, "0")}`;
};
import moment from "jalali-moment";
export const formatSecondsToHHMMSS = (seconds) => {
const duration = moment.duration(seconds, "seconds");
const hours = Math.floor(duration.asHours());
const minutes = duration.minutes();
const secs = duration.seconds();
return `${String(hours).padStart(2, "0")}:${String(minutes).padStart(2, "0")}:${String(secs).padStart(2, "0")}`;
};

View File

@@ -1,14 +1,14 @@
export const getValueByPath = (obj, path) => {
const keys = path.split(".");
let value = obj;
for (const key of keys) {
if (value === undefined) {
return undefined;
}
value = value[key];
}
return value;
};
export const getValueByPath = (obj, path) => {
const keys = path.split(".");
let value = obj;
for (const key of keys) {
if (value === undefined) {
return undefined;
}
value = value[key];
}
return value;
};

View File

@@ -1,82 +1,82 @@
const api = process.env.NEXT_PUBLIC_API_URL;
export const headerMenu = [
{
title: "تصادفات",
subMenu: [
[
{
title: "تصادفات روزانه",
href: api + "/v2/daily_accidents/create",
},
],
],
},
{
title: "گزارش های جامع",
subMenu: [
[
{
title: "گزارش محوری",
href: api + "/v2/axis_reports",
},
{
title: "هوش تجاری (BI)",
href: api + "/v2/axis_reports",
},
],
],
},
{
title: "زیرساخت و ناوگان",
subMenu: [
[
{
title: "پراکندگی بر روی نقشه راهدارخانه ها",
href: api + "/v2/map?type=rahdar",
},
{
title: "راهدارخانه ها",
href: "/infrastructure/toll-house",
},
],
[
{
title: "ممیزی ماشین آلات راهداری کشور",
href: api + "/cmms-audit",
},
],
],
},
{
title: "سامانه های راهداری",
subMenu: [
[
{
title: "تحقیق و توسعه",
href: api + "/RandD",
},
{
title: "سامانه مدیریت یکپارچه زیرساخت های راه (PMS,BMS,SMS)",
href: "http://roadams.rmto.ir",
},
{
title: "سامانه مدیریت ناوگان (FMS)",
href: "http://fms.141.ir",
},
{
title: "سامانه جامع مدیریت سوانح و حوادث جاده ای",
href: "https://items.rmto.ir",
},
{
title: "سامانه مدیریت نگهداری ماشین آلات (CMMS)",
href: "https://cmms.rmto.ir/Login.aspx?ReturnUrl=%2f",
},
{
title: "درگاه کاتالوگ داده",
href: "https://roadams.rmto.ir:8080",
},
],
],
},
];
const api = process.env.NEXT_PUBLIC_API_URL;
export const headerMenu = [
{
title: "تصادفات",
subMenu: [
[
{
title: "تصادفات روزانه",
href: api + "/v2/daily_accidents/create",
},
],
],
},
{
title: "گزارش های جامع",
subMenu: [
[
{
title: "گزارش محوری",
href: api + "/v2/axis_reports",
},
{
title: "هوش تجاری (BI)",
href: api + "/v2/axis_reports",
},
],
],
},
{
title: "زیرساخت و ناوگان",
subMenu: [
[
{
title: "پراکندگی بر روی نقشه راهدارخانه ها",
href: api + "/v2/map?type=rahdar",
},
{
title: "راهدارخانه ها",
href: "/infrastructure/toll-house",
},
],
[
{
title: "ممیزی ماشین آلات راهداری کشور",
href: api + "/cmms-audit",
},
],
],
},
{
title: "سامانه های راهداری",
subMenu: [
[
{
title: "تحقیق و توسعه",
href: api + "/RandD",
},
{
title: "سامانه مدیریت یکپارچه زیرساخت های راه (PMS,BMS,SMS)",
href: "http://roadams.rmto.ir",
},
{
title: "سامانه مدیریت ناوگان (FMS)",
href: "http://fms.141.ir",
},
{
title: "سامانه جامع مدیریت سوانح و حوادث جاده ای",
href: "https://items.rmto.ir",
},
{
title: "سامانه مدیریت نگهداری ماشین آلات (CMMS)",
href: "https://cmms.rmto.ir/Login.aspx?ReturnUrl=%2f",
},
{
title: "درگاه کاتالوگ داده",
href: "https://roadams.rmto.ir:8080",
},
],
],
},
];

View File

@@ -1,6 +1,6 @@
export default function isArrayEmpty(value) {
if (Array.isArray(value)) {
return value.length === 0 || value.every((v) => v === "");
}
return value === "" || value === null || value === undefined;
}
export default function isArrayEmpty(value) {
if (Array.isArray(value)) {
return value.length === 0 || value.every((v) => v === "");
}
return value === "" || value === null || value === undefined;
}

View File

@@ -0,0 +1,4 @@
export const machineType = [
{ id: "grader", name_fa: "گریدر" },
{ id: "loder", name_fa: "لودر" },
];

View File

@@ -1,30 +1,30 @@
function validateNationalCode(code) {
const invalidCodes = [
"1111111111",
"2222222222",
"3333333333",
"4444444444",
"5555555555",
"6666666666",
"7777777777",
"8888888888",
"9999999999",
];
if (invalidCodes.includes(code)) return false;
const L = code.length;
if (L < 8 || parseInt(code, 10) === 0) return false;
code = code.padStart(10, "0");
if (parseInt(code.substr(3, 6), 10) === 0) return false;
const c = parseInt(code.charAt(9), 10);
let s = 0;
for (let i = 0; i < 9; i++) {
s += parseInt(code.charAt(i), 10) * (10 - i);
}
s = s % 11;
return (s < 2 && c === s) || (s >= 2 && c === 11 - s);
}
export default validateNationalCode;
function validateNationalCode(code) {
const invalidCodes = [
"1111111111",
"2222222222",
"3333333333",
"4444444444",
"5555555555",
"6666666666",
"7777777777",
"8888888888",
"9999999999",
];
if (invalidCodes.includes(code)) return false;
const L = code.length;
if (L < 8 || parseInt(code, 10) === 0) return false;
code = code.padStart(10, "0");
if (parseInt(code.substr(3, 6), 10) === 0) return false;
const c = parseInt(code.charAt(9), 10);
let s = 0;
for (let i = 0; i < 9; i++) {
s += parseInt(code.charAt(i), 10) * (10 - i);
}
s = s % 11;
return (s < 2 && c === s) || (s >= 2 && c === 11 - s);
}
export default validateNationalCode;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,178 +1,193 @@
const api = process.env.NEXT_PUBLIC_API_URL;
export const GET_USER_ROUTE = api + "/api/v3/profile/info";
export const LOGOUT_USER_ROUTE = api + "/api/v3/logout";
export const UPDATE_USER_ROUTE = api + "/api/v3/profile/edit";
export const CHANGE_USER_PASSWORD = api + "/api/v3/profile/change_password";
export const GET_LOGIN_ROUTE = api + "/login_dev";
export const GET_PERMISSIONS_ROUTE = api + "/webapi/user/get-permission";
export const GET_SIDEBAR_BADGE_ROUTE = api + "/api/v3/notifications";
export const REFER_ADMIN_PROVINCE = "/v3/api/fake-submit";
export const REFER_ADMIN_CITY = "/v3/api/fake-submit";
export const GET_CITY_LISTS = api + "/public/contents/provinces";
export const GET_PROVINCE_LISTS = api + "/public/contents/provinces";
export const GET_PREV_STATE_OPINION = "/v3/api/fake-prev-state-opinion";
export const SUBMIT_ROAD_SAFETY_FORM = "/v3/api/fake-submit";
export const CREATE_AZMAYESH = api + "/api/v3/azmayeshes/store";
export const UPDATE_AZMAYESH = api + "/api/v3/azmayeshes/update";
export const GET_AZMAYESH_TYPE_LIST = api + "/api/v3/azmayesh_types/list";
export const GET_AZMAYESH_TYPE_LIST_TABLE = api + "/api/v3/azmayesh_types";
export const GET_AZMAYESH_LIST = api + "/api/v3/azmayeshes";
export const DELETE_AZMAYESH = api + "/api/v3/azmayeshes/delete";
export const GET_AZMAYESH_SAMPLE_FIELDS = api + "/api/v3/azmayesh_types/fields";
export const ADD_SAMPLE_TO_AZMAYESH = api + "/api/v3/azmayesh_samples/store";
export const UPDATE_SAMPLE_OF_AZMAYESH = api + "/api/v3/azmayesh_samples/update";
export const GET_SAMPLE_LIST = api + "/api/v3/azmayesh_samples";
export const DELETE_SAMPLE_LIST = api + "/api/v3/azmayesh_samples/delete";
export const DELETE_AZMAYESH_TYPE_LIST = api + "/api/v3/azmayesh_types/delete";
export const ADD_AZMAYESH_TYPE = api + "/api/v3/azmayesh_types/store";
export const UPDATE_AZMAYESH_TYPE = api + "/api/v3/azmayesh_types/update";
//road patrol
export const GET_ROAD_PATROL_OPERATOR_LIST = api + "/api/v3/road_patrols/operator_index";
export const EXPORT_ROAD_PATROL_OPERATOR_LIST = api + "/api/v3/road_patrols/operator_report";
export const GET_ROAD_PATROL_SUPERVISOR_LIST = api + "/api/v3/road_patrols/supervisor_index";
export const EXPORT_ROAD_PATROL_SUPERVISOR_LIST = api + "/api/v3/road_patrols/supervisor_report";
export const EXPORT_PROVINCE_ROAD_PATROL_REPORTS = api + "/api/v3/road_patrol_reports/province_activity_excel";
export const EXPORT_COUNTRY_ROAD_PATROL_REPORTS = api + "/api/v3/road_patrol_reports/country_activity_excel";
export const DELETE_ROAD_PATROL_SUPERVISOR = api + "/api/v3/road_patrols/delete";
export const GET_CMMS_MACHINE_ROAD_PATROL = api + "/api/v3/road_patrols/machines";
export const GET_ROAD_PATROL_OPERATOR_REPORT = api + "/v2/road_patrols/operator/report";
export const GET_ROAD_PATROL_SUPERVISOR_REPORT = api + "/v2/road_patrols/operator/report";
export const GET_RAHDARAN_ROAD_POTROL = api + "/api/v3/road_patrols/rahdaran";
export const CREATE_PATROL = api + "/api/v3/road_patrols/store";
export const GET_FMS_DATA = api + "/api/v3/fms_vehicle/get_activity";
export const GET_OTP_TOKEN = api + "/api/v3/otp/get_token";
export const GET_PROVINCE_ACTIVITY_REPORT = api + "/api/v3/road_patrol_reports/country_activity";
export const GET_CITY_ACTIVITY_REPORT = api + "/api/v3/road_patrol_reports/province_activity";
// road items
export const GET_ROAD_ITEMS_SUPERVISOR_LIST = api + "/api/v3/road_items/supervisor_index";
export const EXPORT_ROAD_ITEMS_SUPERVISOR_LIST = api + "/api/v3/road_items/supervisor_report";
export const GET_ROAD_ITEMS_OPERATOR_LIST = api + "/api/v3/road_items/operator_index";
export const EXPORT_ROAD_ITEMS_OPERATOR_LIST = api + "/api/v3/road_items/operator_report";
export const EXPORT_PROVINCE_ROAD_ITEM_REPORTS_PER_ITEM =
api + "/api/v3/road_item_reports/province_activity_excel_per_item";
export const EXPORT_COUNTRY_ROAD_ITEM_REPORTS_PER_ITEM =
api + "/api/v3/road_item_reports/country_activity_excel_per_item";
export const EXPORT_PROVINCE_ROAD_ITEM_REPORTS_PER_SUB_ITEM =
api + "/api/v3/road_item_reports/province_activity_excel_per_sub_item";
export const EXPORT_COUNTRY_ROAD_ITEM_REPORTS_PER_SUB_ITEM =
api + "/api/v3/road_item_reports/country_activity_excel_per_sub_item";
export const GET_ROAD_ITEMS_ITEM = api + "/api/v3/items";
export const GET_ROAD_ITEMS_SUB_ITEM = api + "/api/v3/sub_items";
export const GET_EDARAT_LISTS = api + "/public/contents/edarate_shahri_by_province";
export const CREATE_ROAD_ITEMS = api + "/api/v3/road_items/store";
export const UPDATE_ROAD_ITEMS = api + "/api/v3/road_items/update";
export const VERIFY_BY_SUPERVISOR = api + "/api/v3/road_items/verify_by_supervisor";
export const REJECT_BY_SUPERVISOR = api + "/api/v3/road_items/verify_by_supervisor";
export const DELETE_BY_SUPERVISOR = api + "/api/v3/road_items/delete";
export const RESTORE_BY_SUPERVISOR = api + "/api/v3/road_items/restore";
export const GET_CAR_LIST_SEARCH = api + "/api/v3/cmms_machines/search";
export const GET_RAHDARANS_LIST_SEARCH = api + "/api/v3/rahdaran/search";
export const GET_OBSERVED_GASHT_LIST = api + "/api/v3/observed_items/filter";
export const GET_ROAD_ITEMS_REPORT_MAP = api + "/api/v3/road_item_reports/activities_on_map";
export const GET_ROAD_ITEM = api + "/api/v3/road_item_reports/show_on_map";
export const GET_PROVINCE_ACTIVITY_PER_ITEM = api + "/api/v3/road_item_reports/country_activity_per_item";
export const GET_CITY_ACTIVITY_PER_ITEM = api + "/api/v3/road_item_reports/province_activity_per_item";
export const GET_PROVINCE_ACTIVITY_PER_SUB_ITEM = api + "/api/v3/road_item_reports/country_activity_per_sub_item";
export const GET_CITY_ACTIVITY_PER_SUB_ITEM = api + "/api/v3/road_item_reports/province_activity_per_sub_item";
export const GET_IMAGES_ROAD_ITEM = api + "/api/v3/road_items/files";
export const GET_CMMS_MACHINE_ROAD_ITEM = api + "/api/v3/road_items/machines";
export const GET_RAHDARAN_ROAD_ITEM = api + "/api/v3/road_items/rahdaran";
// damage items
export const GET_RECEIPT_DAMAGE_ITEMS_LIST = api + "/api/v3/damages";
export const CREATE_RECEIPT_DAMAGE_ITEMS = api + "/api/v3/damages";
export const UPDATE_RECEIPT_DAMAGE_ITEMS = api + "/api/v3/damages";
export const ATIVITY_RECEIPT_DAMAGE_ITEMS = api + "/api/v3/damages/activate";
// damage receipt
export const GET_TECHNICAL_DAMAGE_OPERATOR_LIST = api + "/api/v3/receipts";
export const CREATE_DAMAGE = api + "/api/v3/receipts";
export const GET_DAMAGE_ITEM_LIST = api + "/api/v3/damages/list";
export const DELETE_DAMAGE_ITEM = api + "/api/v3/receipts";
export const CREATE_FACTOR_DAMAGE = api + "/api/v3/receipts/submit_invoice";
export const CONFIRM_PAYMENT_INFO = api + "/api/v3/receipts/confirm_payment_info";
export const CHECK_PAYMENT_STATUS = api + "/api/v3/receipts/check_payment_status";
export const SEND_SMS_AGAIN = api + "/api/v3/receipts/send_sms_again";
export const EXPORT_DAMAGES_OPERATOR_LIST = api + "/api/v3/receipts/excel_report";
export const GET_DAMAGE_ITEM_DETAILS = api + "/api/v3/receipts";
export const UPDATE_DAMAGE_ITEM = api + "/api/v3/receipts";
export const GET_INSURANCE = api + "/api/v3/receipts/generate_insurance_letter";
export const GET_INSURANCE_PAGE = api + "/v2/receipt/send-to-insurance";
export const GET_POLICERAH = api + "/api/v3/receipts/generate_police_document";
export const GET_POLICERAH_PAGE = api + "/v2/receipt/document-release";
// recept report
export const GET_COUNTRY_RECEIPT_REPORT = api + "/api/v3/receipt_reports/country_report";
export const GET_PROVINCE_RECEIPT_REPORT = api + "/api/v3/receipt_reports/province_report";
export const EXPORT_COUNTRY_RECEIPT_REPORT = api + "/api/v3/receipt_reports/country_excel_report";
export const EXPORT_PROVINCE_RECEIPT_REPORT = api + "/api/v3/receipt_reports/province_excel_report";
// activity code log
export const ACTIVITY_LOG = api + "/api/v3/profile/add_activity";
// fast react
export const GET_FAST_REACT_SUPERVISOR = api + "/api/v3/road_observations/supervisor/index";
export const GET_FAST_REACT_COMPLAINTS = api + "/api/v3/road_observations/complaints_index";
export const VERIFY_BY_FAST_REACT_SUPERVISOR = api + "/api/v3/road_observations/supervisor/verify";
export const REJECT_BY_FAST_REACT_SUPERVISOR = api + "/api/v3/road_observations/supervisor/verify";
export const REGISTER_COMPLAINTS_LIST = api + "/api/v3/road_observations/operator/register";
export const GET_FAST_REACT_OPERATOR = api + "/api/v3/road_observations/operator/cartable";
export const GET_FAST_REACT_REFER_LIST = api + "/api/v3/road_observations/refer_list";
export const REFER_FAST_REACT = api + "/api/v3/road_observations/refer";
export const RESTORE_FAST_REACT = api + "/api/v3/road_observations/supervisor/restore";
export const GET_FAST_REACT_ITEM_DETAIL = api + "/api/v3/road_observations";
export const UPDATE_FAST_REACT = api + "/api/v3/road_observations/operator/modify_registration";
export const EXPORT_FAST_REACT_SUPERVISOR_LIST = api + "/api/v3/road_observations/supervisor/report";
export const EXPORT_FAST_REACT_OPERATOR_LIST = api + "/api/v3/road_observations/operator/report";
export const EXPORT_FAST_REACT_COMPLAINT_LIST = api + "/api/v3/road_observations/complaints_report";
// road safety
export const GET_SAFETY_AND_PRIVACY_OPERATOR = api + "/api/v3/safety_and_privacy/operator";
export const DELETE_SAFETY_AND_PRIVACY = api + "/api/v3/safety_and_privacy/operator";
export const FIRST_STEP_STORE = api + "/api/v3/safety_and_privacy/operator/first_step_store";
export const SECOND_STEP_STORE = api + "/api/v3/safety_and_privacy/operator/second_step_store";
export const THIRD_STEP_STORE = api + "/api/v3/safety_and_privacy/operator/third_step_store";
export const UPDATE_SAFETY_AND_PRIVACY = api + "/api/v3/safety_and_privacy/operator";
export const FINISH_ROAD_SAFETY_BY_SUPERVISOR = api + "/api/v3/safety_and_privacy/operator/finish";
export const EXPORT_OPERATOR_ROAD_SAFETY = api + "/api/v3/safety_and_privacy/operator/excel_report";
export const GET_SAFETY_AND_PRIVACY_SUPERVISOR = api + "/api/v3/safety_and_privacy/supervisor";
export const EXPORT_SUPERVISOR_ROAD_SAFETY = api + "/api/v3/safety_and_privacy/supervisor/excel_report";
export const CONFIRM_ROAD_SAFETY_BY_SUPERVISOR = api + "/api/v3/safety_and_privacy/supervisor/confirm";
export const REJECT_ROAD_SAFETY_BY_SUPERVISOR = api + "/api/v3/safety_and_privacy/supervisor/reject";
export const DESERIALIZE_JUDICIARY_DOCUMENT = api + "/api/v3/safety_and_privacy/deserialize";
export const GET_SAFETY_AND_PRIVACY_ITEM = api + "/api/v3/safety_and_privacy/sub_items";
export const GET_ROAD_SAFETY_PROVINCE_ACTIVITY_REPORT =
api + "/api/v3/safety_and_privacy_report/operator/country_activity";
export const GET_ROAD_SAFETY_CITY_ACTIVITY_REPORT =
api + "/api/v3/safety_and_privacy_report/operator/province_activity";
export const GET_ROAD_SAFETY_REPORT_MAP = api + "/api/v3/safety_and_privacy/map";
export const GET_ROAD_SAFETY_DETAILS = api + "/api/v3/safety_and_privacy/operator";
export const EXPORT_COUNTRY_ROAD_SAFETY_REPORT =
api + "/api/v3/safety_and_privacy_report/operator/country_excel_activity";
export const EXPORT_PROVINCE_ROAD_SAFETY_REPORT =
api + "/api/v3/safety_and_privacy_report/operator/province_excel_activity";
// permission table
export const GET_PERMISSION_TABLE_LIST = api + "/api/v3/permissions";
export const DELETE_PERMISSION = api + "/api/v3/permissions";
export const UPDATE_PERMISSION = api + "/api/v3/permissions";
export const CREATE_PERMISSION = api + "/api/v3/permissions";
// user activities
export const GET_USER_ACTIVITIES_LIST = api + "/api/v3/log_list";
export const CREATE_USER_ACTIVITY = api + "/api/v3/log_list";
export const UPDATE_USER_ACTIVITY = api + "/api/v3/log_list";
export const DELETE_USER_ACTIVITIES = api + "/api/v3/log_list";
// toll-house
export const GET_TOLL_HOUSE_LIST = api + "/api/v3/road_maintenance_station";
export const CREATE_TOLL_HOUSE = api + "/api/v3/road_maintenance_station";
export const GET_TOLL_HOUSE_DETAILS = api + "/api/v3/road_maintenance_station";
export const DELETE_TOLL_HOUSE_ITEM = api + "/api/v3/road_maintenance_station";
export const UPDATE_TOLL_HOUSE_ITEM = api + "/api/v3/road_maintenance_station";
export const GET_TOLL_HOUSE_IMAGES = api + "/api/v3/road_maintenance_station/images";
const api = process.env.NEXT_PUBLIC_API_URL;
export const GET_USER_ROUTE = api + "/api/v3/profile/info";
export const LOGOUT_USER_ROUTE = api + "/api/v3/logout";
export const UPDATE_USER_ROUTE = api + "/api/v3/profile/edit";
export const CHANGE_USER_PASSWORD = api + "/api/v3/profile/change_password";
export const GET_LOGIN_ROUTE = api + "/login_dev";
export const GET_PERMISSIONS_ROUTE = api + "/webapi/user/get-permission";
export const GET_SIDEBAR_BADGE_ROUTE = api + "/api/v3/notifications";
export const REFER_ADMIN_PROVINCE = "/v3/api/fake-submit";
export const REFER_ADMIN_CITY = "/v3/api/fake-submit";
export const GET_CITY_LISTS = api + "/public/contents/provinces";
export const GET_PROVINCE_LISTS = api + "/public/contents/provinces";
export const GET_PREV_STATE_OPINION = "/v3/api/fake-prev-state-opinion";
export const SUBMIT_ROAD_SAFETY_FORM = "/v3/api/fake-submit";
export const CREATE_AZMAYESH = api + "/api/v3/azmayeshes/store";
export const UPDATE_AZMAYESH = api + "/api/v3/azmayeshes/update";
export const GET_AZMAYESH_TYPE_LIST = api + "/api/v3/azmayesh_types/list";
export const GET_AZMAYESH_TYPE_LIST_TABLE = api + "/api/v3/azmayesh_types";
export const GET_AZMAYESH_LIST = api + "/api/v3/azmayeshes";
export const DELETE_AZMAYESH = api + "/api/v3/azmayeshes/delete";
export const GET_AZMAYESH_SAMPLE_FIELDS = api + "/api/v3/azmayesh_types/fields";
export const ADD_SAMPLE_TO_AZMAYESH = api + "/api/v3/azmayesh_samples/store";
export const UPDATE_SAMPLE_OF_AZMAYESH = api + "/api/v3/azmayesh_samples/update";
export const GET_SAMPLE_LIST = api + "/api/v3/azmayesh_samples";
export const DELETE_SAMPLE_LIST = api + "/api/v3/azmayesh_samples/delete";
export const DELETE_AZMAYESH_TYPE_LIST = api + "/api/v3/azmayesh_types/delete";
export const ADD_AZMAYESH_TYPE = api + "/api/v3/azmayesh_types/store";
export const UPDATE_AZMAYESH_TYPE = api + "/api/v3/azmayesh_types/update";
//road patrol
export const GET_ROAD_PATROL_OPERATOR_LIST = api + "/api/v3/road_patrols/operator_index";
export const EXPORT_ROAD_PATROL_OPERATOR_LIST = api + "/api/v3/road_patrols/operator_report";
export const GET_ROAD_PATROL_SUPERVISOR_LIST = api + "/api/v3/road_patrols/supervisor_index";
export const EXPORT_ROAD_PATROL_SUPERVISOR_LIST = api + "/api/v3/road_patrols/supervisor_report";
export const EXPORT_PROVINCE_ROAD_PATROL_REPORTS = api + "/api/v3/road_patrol_reports/province_activity_excel";
export const EXPORT_COUNTRY_ROAD_PATROL_REPORTS = api + "/api/v3/road_patrol_reports/country_activity_excel";
export const DELETE_ROAD_PATROL_SUPERVISOR = api + "/api/v3/road_patrols/delete";
export const GET_CMMS_MACHINE_ROAD_PATROL = api + "/api/v3/road_patrols/machines";
export const GET_ROAD_PATROL_OPERATOR_REPORT = api + "/v2/road_patrols/operator/report";
export const GET_ROAD_PATROL_SUPERVISOR_REPORT = api + "/v2/road_patrols/operator/report";
export const GET_RAHDARAN_ROAD_POTROL = api + "/api/v3/road_patrols/rahdaran";
export const CREATE_PATROL = api + "/api/v3/road_patrols/store";
export const GET_FMS_DATA = api + "/api/v3/fms_vehicle/get_activity";
export const GET_OTP_TOKEN = api + "/api/v3/otp/get_token";
export const GET_PROVINCE_ACTIVITY_REPORT = api + "/api/v3/road_patrol_reports/country_activity";
export const GET_CITY_ACTIVITY_REPORT = api + "/api/v3/road_patrol_reports/province_activity";
// road items
export const GET_ROAD_ITEMS_SUPERVISOR_LIST = api + "/api/v3/road_items/supervisor_index";
export const EXPORT_ROAD_ITEMS_SUPERVISOR_LIST = api + "/api/v3/road_items/supervisor_report";
export const GET_ROAD_ITEMS_OPERATOR_LIST = api + "/api/v3/road_items/operator_index";
export const EXPORT_ROAD_ITEMS_OPERATOR_LIST = api + "/api/v3/road_items/operator_report";
export const EXPORT_PROVINCE_ROAD_ITEM_REPORTS_PER_ITEM =
api + "/api/v3/road_item_reports/province_activity_excel_per_item";
export const EXPORT_COUNTRY_ROAD_ITEM_REPORTS_PER_ITEM =
api + "/api/v3/road_item_reports/country_activity_excel_per_item";
export const EXPORT_PROVINCE_ROAD_ITEM_REPORTS_PER_SUB_ITEM =
api + "/api/v3/road_item_reports/province_activity_excel_per_sub_item";
export const EXPORT_COUNTRY_ROAD_ITEM_REPORTS_PER_SUB_ITEM =
api + "/api/v3/road_item_reports/country_activity_excel_per_sub_item";
export const GET_ROAD_ITEMS_ITEM = api + "/api/v3/items";
export const GET_ROAD_ITEMS_SUB_ITEM = api + "/api/v3/sub_items";
export const GET_EDARAT_LISTS = api + "/public/contents/edarate_shahri_by_province";
export const CREATE_ROAD_ITEMS = api + "/api/v3/road_items/store";
export const UPDATE_ROAD_ITEMS = api + "/api/v3/road_items/update";
export const VERIFY_BY_SUPERVISOR = api + "/api/v3/road_items/verify_by_supervisor";
export const REJECT_BY_SUPERVISOR = api + "/api/v3/road_items/verify_by_supervisor";
export const DELETE_BY_SUPERVISOR = api + "/api/v3/road_items/delete";
export const RESTORE_BY_SUPERVISOR = api + "/api/v3/road_items/restore";
export const GET_CAR_LIST_SEARCH = api + "/api/v3/cmms_machines/search";
export const GET_RAHDARANS_LIST_SEARCH = api + "/api/v3/rahdaran/search";
export const GET_OBSERVED_GASHT_LIST = api + "/api/v3/observed_items/filter";
export const GET_ROAD_ITEMS_REPORT_MAP = api + "/api/v3/road_item_reports/activities_on_map";
export const GET_ROAD_ITEM = api + "/api/v3/road_item_reports/show_on_map";
export const GET_PROVINCE_ACTIVITY_PER_ITEM = api + "/api/v3/road_item_reports/country_activity_per_item";
export const GET_CITY_ACTIVITY_PER_ITEM = api + "/api/v3/road_item_reports/province_activity_per_item";
export const GET_PROVINCE_ACTIVITY_PER_SUB_ITEM = api + "/api/v3/road_item_reports/country_activity_per_sub_item";
export const GET_CITY_ACTIVITY_PER_SUB_ITEM = api + "/api/v3/road_item_reports/province_activity_per_sub_item";
export const GET_IMAGES_ROAD_ITEM = api + "/api/v3/road_items/files";
export const GET_CMMS_MACHINE_ROAD_ITEM = api + "/api/v3/road_items/machines";
export const GET_RAHDARAN_ROAD_ITEM = api + "/api/v3/road_items/rahdaran";
// damage items
export const GET_RECEIPT_DAMAGE_ITEMS_LIST = api + "/api/v3/damages";
export const CREATE_RECEIPT_DAMAGE_ITEMS = api + "/api/v3/damages";
export const UPDATE_RECEIPT_DAMAGE_ITEMS = api + "/api/v3/damages";
export const ATIVITY_RECEIPT_DAMAGE_ITEMS = api + "/api/v3/damages/activate";
// damage receipt
export const GET_TECHNICAL_DAMAGE_OPERATOR_LIST = api + "/api/v3/receipts";
export const CREATE_DAMAGE = api + "/api/v3/receipts";
export const GET_DAMAGE_ITEM_LIST = api + "/api/v3/damages/list";
export const DELETE_DAMAGE_ITEM = api + "/api/v3/receipts";
export const CREATE_FACTOR_DAMAGE = api + "/api/v3/receipts/submit_invoice";
export const CONFIRM_PAYMENT_INFO = api + "/api/v3/receipts/confirm_payment_info";
export const CHECK_PAYMENT_STATUS = api + "/api/v3/receipts/check_payment_status";
export const SEND_SMS_AGAIN = api + "/api/v3/receipts/send_sms_again";
export const EXPORT_DAMAGES_OPERATOR_LIST = api + "/api/v3/receipts/excel_report";
export const GET_DAMAGE_ITEM_DETAILS = api + "/api/v3/receipts";
export const UPDATE_DAMAGE_ITEM = api + "/api/v3/receipts";
export const GET_INSURANCE = api + "/api/v3/receipts/generate_insurance_letter";
export const GET_INSURANCE_PAGE = api + "/v2/receipt/send-to-insurance";
export const GET_POLICERAH = api + "/api/v3/receipts/generate_police_document";
export const GET_POLICERAH_PAGE = api + "/v2/receipt/document-release";
// recept report
export const GET_COUNTRY_RECEIPT_REPORT = api + "/api/v3/receipt_reports/country_report";
export const GET_PROVINCE_RECEIPT_REPORT = api + "/api/v3/receipt_reports/province_report";
export const EXPORT_COUNTRY_RECEIPT_REPORT = api + "/api/v3/receipt_reports/country_excel_report";
export const EXPORT_PROVINCE_RECEIPT_REPORT = api + "/api/v3/receipt_reports/province_excel_report";
// activity code log
export const ACTIVITY_LOG = api + "/api/v3/profile/add_activity";
// fast react
export const GET_FAST_REACT_SUPERVISOR = api + "/api/v3/road_observations/supervisor/index";
export const GET_FAST_REACT_COMPLAINTS = api + "/api/v3/road_observations/complaints_index";
export const VERIFY_BY_FAST_REACT_SUPERVISOR = api + "/api/v3/road_observations/supervisor/verify";
export const REJECT_BY_FAST_REACT_SUPERVISOR = api + "/api/v3/road_observations/supervisor/verify";
export const REGISTER_COMPLAINTS_LIST = api + "/api/v3/road_observations/operator/register";
export const GET_FAST_REACT_OPERATOR = api + "/api/v3/road_observations/operator/cartable";
export const GET_FAST_REACT_REFER_LIST = api + "/api/v3/road_observations/refer_list";
export const REFER_FAST_REACT = api + "/api/v3/road_observations/refer";
export const RESTORE_FAST_REACT = api + "/api/v3/road_observations/supervisor/restore";
export const GET_FAST_REACT_ITEM_DETAIL = api + "/api/v3/road_observations";
export const UPDATE_FAST_REACT = api + "/api/v3/road_observations/operator/modify_registration";
export const EXPORT_FAST_REACT_SUPERVISOR_LIST = api + "/api/v3/road_observations/supervisor/report";
export const EXPORT_FAST_REACT_OPERATOR_LIST = api + "/api/v3/road_observations/operator/report";
export const EXPORT_FAST_REACT_COMPLAINT_LIST = api + "/api/v3/road_observations/complaints_report";
// road safety
export const GET_SAFETY_AND_PRIVACY_OPERATOR = api + "/api/v3/safety_and_privacy/operator";
export const DELETE_SAFETY_AND_PRIVACY = api + "/api/v3/safety_and_privacy/operator";
export const FIRST_STEP_STORE = api + "/api/v3/safety_and_privacy/operator/first_step_store";
export const SECOND_STEP_STORE = api + "/api/v3/safety_and_privacy/operator/second_step_store";
export const THIRD_STEP_STORE = api + "/api/v3/safety_and_privacy/operator/third_step_store";
export const UPDATE_SAFETY_AND_PRIVACY = api + "/api/v3/safety_and_privacy/operator";
export const FINISH_ROAD_SAFETY_BY_SUPERVISOR = api + "/api/v3/safety_and_privacy/operator/finish";
export const EXPORT_OPERATOR_ROAD_SAFETY = api + "/api/v3/safety_and_privacy/operator/excel_report";
export const GET_SAFETY_AND_PRIVACY_SUPERVISOR = api + "/api/v3/safety_and_privacy/supervisor";
export const EXPORT_SUPERVISOR_ROAD_SAFETY = api + "/api/v3/safety_and_privacy/supervisor/excel_report";
export const CONFIRM_ROAD_SAFETY_BY_SUPERVISOR = api + "/api/v3/safety_and_privacy/supervisor/confirm";
export const REJECT_ROAD_SAFETY_BY_SUPERVISOR = api + "/api/v3/safety_and_privacy/supervisor/reject";
export const DESERIALIZE_JUDICIARY_DOCUMENT = api + "/api/v3/safety_and_privacy/deserialize";
export const GET_SAFETY_AND_PRIVACY_ITEM = api + "/api/v3/safety_and_privacy/sub_items";
export const GET_ROAD_SAFETY_PROVINCE_ACTIVITY_REPORT =
api + "/api/v3/safety_and_privacy_report/operator/country_activity";
export const GET_ROAD_SAFETY_CITY_ACTIVITY_REPORT =
api + "/api/v3/safety_and_privacy_report/operator/province_activity";
export const GET_ROAD_SAFETY_REPORT_MAP = api + "/api/v3/safety_and_privacy/map";
export const GET_ROAD_SAFETY_DETAILS = api + "/api/v3/safety_and_privacy/operator";
export const EXPORT_COUNTRY_ROAD_SAFETY_REPORT =
api + "/api/v3/safety_and_privacy_report/operator/country_excel_activity";
export const EXPORT_PROVINCE_ROAD_SAFETY_REPORT =
api + "/api/v3/safety_and_privacy_report/operator/province_excel_activity";
// permission table
export const GET_PERMISSION_TABLE_LIST = api + "/api/v3/permissions";
export const DELETE_PERMISSION = api + "/api/v3/permissions";
export const UPDATE_PERMISSION = api + "/api/v3/permissions";
export const CREATE_PERMISSION = api + "/api/v3/permissions";
// user activities
export const GET_USER_ACTIVITIES_LIST = api + "/api/v3/log_list";
export const CREATE_USER_ACTIVITY = api + "/api/v3/log_list";
export const UPDATE_USER_ACTIVITY = api + "/api/v3/log_list";
export const DELETE_USER_ACTIVITIES = api + "/api/v3/log_list";
// toll-house
export const GET_TOLL_HOUSE_LIST = api + "/api/v3/road_maintenance_station";
export const CREATE_TOLL_HOUSE = api + "/api/v3/road_maintenance_station";
export const GET_TOLL_HOUSE_DETAILS = api + "/api/v3/road_maintenance_station";
export const DELETE_TOLL_HOUSE_ITEM = api + "/api/v3/road_maintenance_station";
export const UPDATE_TOLL_HOUSE_ITEM = api + "/api/v3/road_maintenance_station";
export const GET_TOLL_HOUSE_IMAGES = api + "/api/v3/road_maintenance_station/images";
// road missions
export const GET_ROAD_MISSIONS_OPERATOR_LIST = api + "/api/v3/missions/request_portal";
export const GET_ROAD_MISSIONS_TRANSPORTATION_LIST = api + "/api/v3/missions/transportation_unit";
export const GET_ROAD_MISSIONS_CONTROL_LIST = api + "/api/v3/missions/control_unit";
export const REQUEST_MISSION = api + "/api/v3/missions/request_portal";
export const UPDATE_REQUEST_MISSION = api + "/api/v3/missions/request_portal";
export const DELETE_REQUEST_MISSION = api + "/api/v3/missions/request_portal";
export const GET_RAHDARAN_BY_ID = api + "/api/v3/missions/details/rahdaran";
export const ALLOCATE_REQUEST_MISSION = api + "/api/v3/missions/transportation_unit/allocate";
export const DEALLOCATE_REQUEST_MISSION = api + "/api/v3/missions/transportation_unit/deallocate";
export const START_MISSION = api + "/api/v3/missions/control_unit/start";
export const FINISH_MISSION = api + "/api/v3/missions/control_unit/finish";
export const GET_MACHINES_TABLE_LIST = api + "/api/v3/cmms_machines";

View File

@@ -1,10 +1,10 @@
"use client";
import { toast } from "react-toastify";
import { successToast } from "@/core/components/Toasts/success";
export const successRequest = (notification, toastContainer) => {
if (notification) {
toast.dismiss({ containerId: toastContainer });
successToast(toastContainer);
}
};
"use client";
import { toast } from "react-toastify";
import { successToast } from "@/core/components/Toasts/success";
export const successRequest = (notification, toastContainer) => {
if (notification) {
toast.dismiss({ containerId: toastContainer });
successToast(toastContainer);
}
};

View File

@@ -1,36 +1,36 @@
"use client";
import { createTheme } from "@mui/material";
import { grey } from "@mui/material/colors";
const theme = createTheme({
direction: "rtl",
typography: {
fontFamily: `IRANSansFaNum, sans-serif`,
fontSize: 12,
},
palette: {
primary: {
main: "#2070af",
contrastText: "#fff",
},
primary2: {
main: "#015688",
contrastText: "#fff",
},
secondary: {
main: grey[700],
},
},
components: {
MuiBackdrop: {
styleOverrides: {
root: {
backdropFilter: "blur(2px)",
backgroundColor: "rgba(0, 0, 0, 0.5)",
},
},
},
},
});
export default theme;
"use client";
import { createTheme } from "@mui/material";
import { grey } from "@mui/material/colors";
const theme = createTheme({
direction: "rtl",
typography: {
fontFamily: `IRANSansFaNum, sans-serif`,
fontSize: 12,
},
palette: {
primary: {
main: "#2070af",
contrastText: "#fff",
},
primary2: {
main: "#015688",
contrastText: "#fff",
},
secondary: {
main: grey[700],
},
},
components: {
MuiBackdrop: {
styleOverrides: {
root: {
backdropFilter: "blur(2px)",
backgroundColor: "rgba(0, 0, 0, 0.5)",
},
},
},
},
});
export default theme;

View File

@@ -1,120 +1,150 @@
import { alpha, darken } from "@mui/material";
export const parseCSSVarId = (id) => id.replace(/[^a-zA-Z0-9]/g, "_");
export const parseFromValuesOrFunc = (fn, arg) => (fn instanceof Function ? fn(arg) : fn);
export const getCommonToolbarStyles = ({ table }) => ({
alignItems: "flex-start",
backgroundColor: table.options.mrtTheme.baseBackgroundColor,
display: "grid",
flexWrap: "wrap-reverse",
minHeight: "3.5rem",
overflow: "hidden",
position: "relative",
transition: "all 150ms ease-in-out",
zIndex: 1,
});
export const getCommonTooltipProps = (placement) => ({
disableInteractive: true,
enterDelay: 500,
enterNextDelay: 500,
placement,
});
export const flipIconStyles = (theme) =>
theme.direction === "rtl" ? { style: { transform: "scaleX(-1)" } } : undefined;
export const getCommonPinnedCellStyles = ({ column, table, theme }) => {
const { baseBackgroundColor } = table.options.mrtTheme;
const isPinned = column?.getIsPinned();
return {
'&[data-pinned="true"]': {
"&:before": {
backgroundColor: alpha(darken(baseBackgroundColor, theme.palette.mode === "dark" ? 0.05 : 0.01), 0.97),
boxShadow: column
? isPinned === "left" && column.getIsLastColumn(isPinned)
? `-4px 0 4px -4px ${alpha(theme.palette.grey[700], 0.5)} inset`
: isPinned === "right" && column.getIsFirstColumn(isPinned)
? `4px 0 4px -4px ${alpha(theme.palette.grey[700], 0.5)} inset`
: undefined
: undefined,
...commonCellBeforeAfterStyles,
},
},
};
};
export const getCommonMRTCellStyles = ({ column, header, table, tableCellProps, theme }) => {
const {
getState,
options: { enableColumnVirtualization, layoutMode },
} = table;
const { draggingColumn } = getState();
const { columnDef } = column;
const { columnDefType } = columnDef;
const isColumnPinned = columnDef.columnDefType !== "group" && column.getIsPinned();
const widthStyles = {
minWidth: `max(calc(var(--${header ? "header" : "col"}-${parseCSSVarId(
header?.id ?? column.id
)}-size) * 1px), ${columnDef.minSize ?? 30}px)`,
width: `calc(var(--${header ? "header" : "col"}-${parseCSSVarId(header?.id ?? column.id)}-size) * 1px)`,
};
if (layoutMode === "grid") {
widthStyles.flex = `${
[0, false].includes(columnDef.grow)
? 0
: `var(--${header ? "header" : "col"}-${parseCSSVarId(header?.id ?? column.id)}-size)`
} 0 auto`;
} else if (layoutMode === "grid-no-grow") {
widthStyles.flex = `${+(columnDef.grow || 0)} 0 auto`;
}
const pinnedStyles = isColumnPinned
? {
...getCommonPinnedCellStyles({ column, table, theme }),
left: isColumnPinned === "left" ? `${column.getStart("left")}px` : undefined,
opacity: 0.97,
position: "sticky",
right: isColumnPinned === "right" ? `${column.getAfter("right")}px` : undefined,
}
: {};
return {
backgroundColor: "inherit",
backgroundImage: "inherit",
display: layoutMode?.startsWith("grid") ? "flex" : undefined,
justifyContent:
columnDefType === "group" ? "center" : layoutMode?.startsWith("grid") ? tableCellProps.align : undefined,
opacity:
table.getState().draggingColumn?.id === column.id || table.getState().hoveredColumn?.id === column.id
? 0.5
: 1,
position: "relative",
transition: enableColumnVirtualization ? "none" : `padding 150ms ease-in-out`,
zIndex:
column.getIsResizing() || draggingColumn?.id === column.id
? 2
: columnDefType !== "group" && isColumnPinned
? 1
: 0,
...pinnedStyles,
...widthStyles,
...parseFromValuesOrFunc(tableCellProps?.sx, theme),
};
};
export const commonCellBeforeAfterStyles = {
content: '""',
height: "100%",
left: 0,
position: "absolute",
top: 0,
width: "100%",
zIndex: -1,
};
import { alpha, darken } from "@mui/material";
export const parseCSSVarId = (id) => id.replace(/[^a-zA-Z0-9]/g, "_");
export const parseFromValuesOrFunc = (fn, arg) => (fn instanceof Function ? fn(arg) : fn);
export const getCommonToolbarStyles = ({ table }) => ({
alignItems: "flex-start",
backgroundColor: table.options.mrtTheme.baseBackgroundColor,
display: "grid",
flexWrap: "wrap-reverse",
minHeight: "3.5rem",
overflow: "hidden",
position: "relative",
transition: "all 150ms ease-in-out",
zIndex: 1,
});
export const getCommonTooltipProps = (placement) => ({
disableInteractive: true,
enterDelay: 500,
enterNextDelay: 500,
placement,
});
export const flipIconStyles = (theme) =>
theme.direction === "rtl" ? { style: { transform: "scaleX(-1)" } } : undefined;
export const getCommonPinnedCellStyles = ({ column, table, theme }) => {
const { baseBackgroundColor } = table.options.mrtTheme;
const isPinned = column?.getIsPinned();
return {
'&[data-pinned="true"]': {
"&:before": {
backgroundColor: alpha(darken(baseBackgroundColor, theme.palette.mode === "dark" ? 0.05 : 0.01), 0.97),
boxShadow: column
? isPinned === "left" && column.getIsLastColumn(isPinned)
? `-4px 0 4px -4px ${alpha(theme.palette.grey[700], 0.5)} inset`
: isPinned === "right" && column.getIsFirstColumn(isPinned)
? `4px 0 4px -4px ${alpha(theme.palette.grey[700], 0.5)} inset`
: undefined
: undefined,
...commonCellBeforeAfterStyles,
},
},
};
};
export const getCommonMRTCellStyles = ({ column, header, table, tableCellProps, theme }) => {
const {
getState,
options: { enableColumnVirtualization, layoutMode },
} = table;
const { draggingColumn } = getState();
const { columnDef } = column;
const { columnDefType } = columnDef;
const isColumnPinned = columnDef.columnDefType !== "group" && column.getIsPinned();
const widthStyles = {
minWidth: `max(calc(var(--${header ? "header" : "col"}-${parseCSSVarId(
header?.id ?? column.id
)}-size) * 1px), ${columnDef.minSize ?? 30}px)`,
width: `calc(var(--${header ? "header" : "col"}-${parseCSSVarId(header?.id ?? column.id)}-size) * 1px)`,
};
if (layoutMode === "grid") {
widthStyles.flex = `${
[0, false].includes(columnDef.grow)
? 0
: `var(--${header ? "header" : "col"}-${parseCSSVarId(header?.id ?? column.id)}-size)`
} 0 auto`;
} else if (layoutMode === "grid-no-grow") {
widthStyles.flex = `${+(columnDef.grow || 0)} 0 auto`;
}
const pinnedStyles = isColumnPinned
? {
...getCommonPinnedCellStyles({ column, table, theme }),
left: isColumnPinned === "left" ? `${column.getStart("left")}px` : undefined,
opacity: 0.97,
position: "sticky",
right: isColumnPinned === "right" ? `${column.getAfter("right")}px` : undefined,
}
: {};
return {
backgroundColor: "inherit",
backgroundImage: "inherit",
display: layoutMode?.startsWith("grid") ? "flex" : undefined,
justifyContent:
columnDefType === "group" ? "center" : layoutMode?.startsWith("grid") ? tableCellProps.align : undefined,
opacity:
table.getState().draggingColumn?.id === column.id || table.getState().hoveredColumn?.id === column.id
? 0.5
: 1,
position: "relative",
transition: enableColumnVirtualization ? "none" : `padding 150ms ease-in-out`,
zIndex:
column.getIsResizing() || draggingColumn?.id === column.id
? 2
: columnDefType !== "group" && isColumnPinned
? 1
: 0,
...pinnedStyles,
...widthStyles,
...parseFromValuesOrFunc(tableCellProps?.sx, theme),
};
};
export const commonCellBeforeAfterStyles = {
content: '""',
height: "100%",
left: 0,
position: "absolute",
top: 0,
width: "100%",
zIndex: -1,
};
function closePolygonIfNeeded(coords) {
if (
coords.length > 0 &&
(coords[0][0] !== coords[coords.length - 1][0] || coords[0][1] !== coords[coords.length - 1][1])
) {
coords.push(coords[0]);
}
return coords;
}
export const getClosedPolygonCoordinates = (polygon) => {
const latLngs = polygon.getLatLngs();
// گرفتن حلقه اصلی (فرض بر این است که فقط یک ring وجود دارد)
const ring = Array.isArray(latLngs[0]) ? latLngs[0] : latLngs;
// تبدیل به آرایه ساده [lat, lng]
const coordinates = ring.map((point) => [point.lat, point.lng]);
// بررسی بسته بودن حلقه
const first = coordinates[0];
const last = coordinates[coordinates.length - 1];
if (first[0] !== last[0] || first[1] !== last[1]) {
coordinates.push(first); // بستن حلقه
}
return coordinates;
};