push rasad front on new repo
4
.dockerignore
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
node_modules;
|
||||||
|
npm - debug.log.git.gitignore;
|
||||||
|
README.md.env.nyc_output;
|
||||||
|
coverage.DS_Store;
|
||||||
13
.eslintignore
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
node_modules
|
||||||
|
build
|
||||||
|
dist
|
||||||
|
*.config.js
|
||||||
|
vite.config.js
|
||||||
|
serviceWorkerRegistration.js
|
||||||
|
service-worker.js
|
||||||
|
reportWebVitals.js
|
||||||
|
setupTests.js
|
||||||
|
public
|
||||||
|
.cursor
|
||||||
|
coverage
|
||||||
|
|
||||||
37
.eslintrc.json
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
"env": {
|
||||||
|
"browser": true,
|
||||||
|
"es2021": true,
|
||||||
|
"node": true
|
||||||
|
},
|
||||||
|
"extends": [
|
||||||
|
"eslint:recommended",
|
||||||
|
"plugin:react/recommended",
|
||||||
|
"plugin:react-hooks/recommended",
|
||||||
|
"plugin:prettier/recommended"
|
||||||
|
],
|
||||||
|
"parserOptions": {
|
||||||
|
"ecmaVersion": "latest",
|
||||||
|
"sourceType": "module",
|
||||||
|
"ecmaFeatures": {
|
||||||
|
"jsx": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"settings": {
|
||||||
|
"react": {
|
||||||
|
"version": "detect"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rules": {
|
||||||
|
"react/react-in-jsx-scope": "off",
|
||||||
|
"react-hooks/exhaustive-deps": "off",
|
||||||
|
"react/prop-types": "off",
|
||||||
|
"react-hooks/set-state-in-effect": "off",
|
||||||
|
"react-hooks/immutability": "off",
|
||||||
|
"no-unused-vars": "error",
|
||||||
|
"no-console": "off",
|
||||||
|
"eqeqeq": ["error", "always"],
|
||||||
|
"prefer-const": "warn",
|
||||||
|
"no-var": "error"
|
||||||
|
}
|
||||||
|
}
|
||||||
28
.gitignore
vendored
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
||||||
|
|
||||||
|
# dependencies
|
||||||
|
/node_modules
|
||||||
|
/.pnp
|
||||||
|
.pnp.js
|
||||||
|
|
||||||
|
# testing
|
||||||
|
/coverage
|
||||||
|
|
||||||
|
# production
|
||||||
|
/build
|
||||||
|
/dist
|
||||||
|
|
||||||
|
# Vite
|
||||||
|
.vite
|
||||||
|
|
||||||
|
# misc
|
||||||
|
.DS_Store
|
||||||
|
.env.local
|
||||||
|
.env.development.local
|
||||||
|
.env.test.local
|
||||||
|
.env.production.local
|
||||||
|
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
/logs.txt
|
||||||
3
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"workbench.editor.enablePreviewFromCodeNavigation": true
|
||||||
|
}
|
||||||
17
Dockerfile
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
FROM node:18-alpine
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY package*.json ./
|
||||||
|
RUN npm install --force
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
RUN npm run build
|
||||||
|
|
||||||
|
RUN ls -la
|
||||||
|
|
||||||
|
EXPOSE 3000
|
||||||
|
|
||||||
|
CMD ["npx", "vite", "preview", "--host", "0.0.0.0", "--port", "3000"]
|
||||||
|
|
||||||
9
docker-compose.yml
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
version: "3.8"
|
||||||
|
|
||||||
|
services:
|
||||||
|
rasaddam:
|
||||||
|
build: .
|
||||||
|
image: wixarm/rasadyar:latest
|
||||||
|
ports:
|
||||||
|
- "3000:3000"
|
||||||
|
restart: unless-stopped
|
||||||
37
index.html
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="fa" dir="rtl">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<link rel="icon" href="/favicon.ico" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
<meta http-equiv="Pragma" content="no-cache" />
|
||||||
|
<meta http-equiv="Expires" content="0" />
|
||||||
|
<meta
|
||||||
|
http-equiv="Cache-Control"
|
||||||
|
content="no-cache, no-store, must-revalidate"
|
||||||
|
/>
|
||||||
|
<meta name="enamad" content="551859" />
|
||||||
|
<meta name="theme-color" content="#000000" />
|
||||||
|
<meta name="description" content="سایت جامع معاملات مرغ گوشتی کشور" />
|
||||||
|
<link rel="apple-touch-icon" href="/logo192.png" />
|
||||||
|
<link rel="manifest" href="/manifest.json" />
|
||||||
|
<title>رصدیار، سامانه رصد و پایش کالای اساسی</title>
|
||||||
|
|
||||||
|
<!-- <script type="text/javascript">
|
||||||
|
window.RAYCHAT_TOKEN = "f9f4ad4f-9393-4c95-ae11-cfd6fe8d5f7f";
|
||||||
|
(function () {
|
||||||
|
d = document;
|
||||||
|
s = d.createElement("script");
|
||||||
|
s.src = "https://widget-react.raychat.io/install/widget.js";
|
||||||
|
s.async = 1;
|
||||||
|
d.getElementsByTagName("head")[0].appendChild(s);
|
||||||
|
})();
|
||||||
|
</script> -->
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||||
|
<div id="root"></div>
|
||||||
|
<script type="module" src="/src/index.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
4
liara.json
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"app": "rasadyaarapp",
|
||||||
|
"platform": "react"
|
||||||
|
}
|
||||||
11572
package-lock.json
generated
Normal file
105
package.json
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
{
|
||||||
|
"name": "my-app",
|
||||||
|
"version": "0.1.1",
|
||||||
|
"private": true,
|
||||||
|
"type": "module",
|
||||||
|
"dependencies": {
|
||||||
|
"@date-io/date-fns-jalali": "^2.15.0",
|
||||||
|
"@date-io/jalaali": "^2.15.0",
|
||||||
|
"@emotion/react": "^11.10.4",
|
||||||
|
"@emotion/styled": "^11.10.4",
|
||||||
|
"@mui/icons-material": "^5.10.3",
|
||||||
|
"@mui/lab": "^5.0.0-alpha.99",
|
||||||
|
"@mui/material": "^5.10.4",
|
||||||
|
"@mui/x-date-pickers": "^5.0.2",
|
||||||
|
"@reactour/tour": "^3.1.6",
|
||||||
|
"@reduxjs/toolkit": "^1.8.5",
|
||||||
|
"@testing-library/jest-dom": "^5.16.5",
|
||||||
|
"@testing-library/react": "^13.4.0",
|
||||||
|
"@testing-library/user-event": "^13.5.0",
|
||||||
|
"@vitejs/plugin-react": "^4.3.1",
|
||||||
|
"axios": "^0.27.2",
|
||||||
|
"camelize": "^1.0.0",
|
||||||
|
"chart.js": "^4.2.1",
|
||||||
|
"chartjs-plugin-annotation": "^3.1.0",
|
||||||
|
"chartjs-plugin-datalabels": "^2.2.0",
|
||||||
|
"date-fns": "^2.29.3",
|
||||||
|
"date-fns-jalali": "^2.29.2-0",
|
||||||
|
"echarts": "^5.6.0",
|
||||||
|
"echarts-for-react": "^3.0.2",
|
||||||
|
"eslint": "8.22.0",
|
||||||
|
"eslint-config-prettier": "^8.5.0",
|
||||||
|
"eslint-plugin-jest-dom": "^4.0.2",
|
||||||
|
"eslint-plugin-prettier": "^4.2.1",
|
||||||
|
"formik": "^2.2.9",
|
||||||
|
"framer-motion": "^7.3.5",
|
||||||
|
"html2canvas": "^1.4.1",
|
||||||
|
"lottie-react": "^2.3.1",
|
||||||
|
"material-react-table": "^2.1.0",
|
||||||
|
"moment": "^2.29.4",
|
||||||
|
"mui-datatables": "^4.2.2",
|
||||||
|
"num2persian": "^3.2.2",
|
||||||
|
"persian-date": "^1.1.0",
|
||||||
|
"prettier": "^2.7.1",
|
||||||
|
"react": "^18.2.0",
|
||||||
|
"react-chartjs-2": "^5.2.0",
|
||||||
|
"react-data-table-component": "^7.5.3",
|
||||||
|
"react-dom": "^18.2.0",
|
||||||
|
"react-error-boundary": "^3.1.4",
|
||||||
|
"react-icons": "^4.8.0",
|
||||||
|
"react-images-uploading": "^3.1.7",
|
||||||
|
"react-number-format": "^5.1.2",
|
||||||
|
"react-redux": "^8.0.2",
|
||||||
|
"react-router-dom": "^6.3.0",
|
||||||
|
"react-to-print": "^2.14.15",
|
||||||
|
"reactour": "^1.18.7",
|
||||||
|
"redux-persist": "^6.0.0",
|
||||||
|
"styled-components": "^4.0.0",
|
||||||
|
"stylis": "^4.1.2",
|
||||||
|
"stylis-plugin-rtl": "2.0.2",
|
||||||
|
"use-react-screenshot": "^3.0.0",
|
||||||
|
"vite": "^5.4.2",
|
||||||
|
"vite-plugin-pwa": "^0.20.1",
|
||||||
|
"vitest": "^2.0.5",
|
||||||
|
"web-vitals": "^2.1.4",
|
||||||
|
"workbox-background-sync": "^6.5.4",
|
||||||
|
"workbox-broadcast-update": "^6.5.4",
|
||||||
|
"workbox-cacheable-response": "^6.5.4",
|
||||||
|
"workbox-core": "^6.5.4",
|
||||||
|
"workbox-expiration": "^6.5.4",
|
||||||
|
"workbox-google-analytics": "^6.5.4",
|
||||||
|
"workbox-navigation-preload": "^6.5.4",
|
||||||
|
"workbox-precaching": "^6.5.4",
|
||||||
|
"workbox-range-requests": "^6.5.4",
|
||||||
|
"workbox-routing": "^6.5.4",
|
||||||
|
"workbox-strategies": "^6.5.4",
|
||||||
|
"workbox-streams": "^6.5.4",
|
||||||
|
"yup": "^0.32.11"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"dev": "vite",
|
||||||
|
"start": "vite",
|
||||||
|
"build": "vite build",
|
||||||
|
"preview": "vite preview",
|
||||||
|
"test": "vitest",
|
||||||
|
"lint": "eslint src --ext .js,.jsx",
|
||||||
|
"lint:fix": "eslint src --ext .js,.jsx --fix"
|
||||||
|
},
|
||||||
|
"browserslist": {
|
||||||
|
"production": [
|
||||||
|
">0.2%",
|
||||||
|
"not dead",
|
||||||
|
"not op_mini all"
|
||||||
|
],
|
||||||
|
"development": [
|
||||||
|
"last 1 chrome version",
|
||||||
|
"last 1 firefox version",
|
||||||
|
"last 1 safari version"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"eslint-plugin-react": "^7.37.5",
|
||||||
|
"eslint-plugin-react-hooks": "^7.0.0",
|
||||||
|
"eslint-plugin-testing-library": "^7.13.3"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
public/OIG e(1).png
Normal file
|
After Width: | Height: | Size: 185 KiB |
BIN
public/android-chrome-192x192.png
Normal file
|
After Width: | Height: | Size: 67 KiB |
BIN
public/android-chrome-512x512.png
Normal file
|
After Width: | Height: | Size: 335 KiB |
BIN
public/apple-touch-icon.png
Normal file
|
After Width: | Height: | Size: 65 KiB |
BIN
public/favicon-16x16.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
BIN
public/favicon-32x32.png
Normal file
|
After Width: | Height: | Size: 6.0 KiB |
BIN
public/favicon.ico
Normal file
|
After Width: | Height: | Size: 82 KiB |
BIN
public/logo192.png
Normal file
|
After Width: | Height: | Size: 65 KiB |
BIN
public/logo512.png
Normal file
|
After Width: | Height: | Size: 369 KiB |
20
public/manifest.json
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"short_name": "سامانه رصدیار",
|
||||||
|
"name": "سامانه رصدیار",
|
||||||
|
"icons": [
|
||||||
|
{
|
||||||
|
"src": "/android-chrome-192x192.png",
|
||||||
|
"sizes": "192x192",
|
||||||
|
"type": "image/png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "/android-chrome-512x512.png",
|
||||||
|
"sizes": "512x512",
|
||||||
|
"type": "image/png"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"start_url": ".",
|
||||||
|
"display": "standalone",
|
||||||
|
"theme_color": "#000000",
|
||||||
|
"background_color": "#ffffff"
|
||||||
|
}
|
||||||
3
public/robots.txt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# https://www.robotstxt.org/robotstxt.html
|
||||||
|
User-agent: *
|
||||||
|
Disallow:
|
||||||
44
src/App-oldd.js
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
import React from "react";
|
||||||
|
|
||||||
|
const App = () => {
|
||||||
|
const containerStyle = {
|
||||||
|
backgroundColor: "#f0f0f0",
|
||||||
|
fontFamily: "Arial, sans-serif",
|
||||||
|
textAlign: "center",
|
||||||
|
};
|
||||||
|
|
||||||
|
const headerStyle = {
|
||||||
|
backgroundColor: "#3498db",
|
||||||
|
color: "#fff",
|
||||||
|
padding: "20px",
|
||||||
|
};
|
||||||
|
|
||||||
|
const addressStyle = {
|
||||||
|
fontSize: "24px",
|
||||||
|
fontWeight: "bold",
|
||||||
|
color: "#3498db",
|
||||||
|
};
|
||||||
|
|
||||||
|
const textStyle = {
|
||||||
|
fontSize: "18px",
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div style={containerStyle}>
|
||||||
|
<div style={headerStyle}>
|
||||||
|
<h1>سامانه رصدیار به آدرس زیر انتقال یافت!</h1>
|
||||||
|
</div>
|
||||||
|
<div style={{ margin: "20px" }}>
|
||||||
|
<p style={textStyle}>آدرس جدید سامانه:</p>
|
||||||
|
<p style={addressStyle}>
|
||||||
|
<a href="https://sha.rasadyaar.ir/">sha.rasadyaar.ir</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div style={{ margin: "20px" }}>
|
||||||
|
<p style={textStyle}>برای انتقال بر روی لینک کلیک کنید.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default App;
|
||||||
158
src/App.css
Normal file
@@ -0,0 +1,158 @@
|
|||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.App {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
html::-webkit-scrollbar {
|
||||||
|
width: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
html::-webkit-scrollbar-thumb {
|
||||||
|
background: linear-gradient(to bottom, #eaefff, #2247bf);
|
||||||
|
border-radius: 0px 0px 4px 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
html::-webkit-scrollbar-track {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.App-logo {
|
||||||
|
height: 40vmin;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.svg-icon-color path {
|
||||||
|
stroke: #4285f4;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (prefers-reduced-motion: no-preference) {
|
||||||
|
.App-logo {
|
||||||
|
animation: App-logo-spin infinite 20s linear;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.App-header {
|
||||||
|
background-color: #282c34;
|
||||||
|
min-height: 100vh;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
font-size: calc(10px + 2vmin);
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.App-link {
|
||||||
|
color: #61dafb;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes App-logo-spin {
|
||||||
|
from {
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
transform: rotate(360deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.bluehover {
|
||||||
|
will-change: filter;
|
||||||
|
transition: filter 300ms;
|
||||||
|
}
|
||||||
|
.bluehover:hover {
|
||||||
|
filter: drop-shadow(0 0 0.5em #cc0a95aa);
|
||||||
|
}
|
||||||
|
|
||||||
|
.marquee {
|
||||||
|
width: 100%;
|
||||||
|
line-height: 30px;
|
||||||
|
color: white;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
box-sizing: border-box;
|
||||||
|
direction: rtl;
|
||||||
|
margin-top: -10px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.marquee p {
|
||||||
|
font-size: 15px;
|
||||||
|
margin: 0;
|
||||||
|
display: inline-block;
|
||||||
|
animation: marquee 60s linear infinite;
|
||||||
|
color: #f9f947;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes marquee {
|
||||||
|
0% {
|
||||||
|
transform: translate(-100%, 0);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: translate(100%, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* .MuiOutlinedInput-notchedOutline,
|
||||||
|
.MuiButtonBase-root {
|
||||||
|
border-radius: 15px !important;
|
||||||
|
} */
|
||||||
|
|
||||||
|
.MuiOutlinedInput-notchedOutline {
|
||||||
|
border-radius: 8px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* .MuiButtonBase-root {
|
||||||
|
border-radius: 5px !important;
|
||||||
|
} */
|
||||||
|
|
||||||
|
/* .muirtl-1ujnqem-MuiTabs-root {
|
||||||
|
border-style: solid;
|
||||||
|
padding: 2px;
|
||||||
|
border-radius: 15px 15px 0px 0px;
|
||||||
|
border-width: 1px 0px 0px 0px;
|
||||||
|
border-color: #a1f1c2;
|
||||||
|
filter: drop-shadow(0 0 0.75rem crimson);
|
||||||
|
} */
|
||||||
|
|
||||||
|
.insidetabs {
|
||||||
|
border-style: none !important;
|
||||||
|
padding: 0px !important;
|
||||||
|
color: pink !important;
|
||||||
|
font-size: 10px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-menu {
|
||||||
|
font-weight: 800 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.muirtl-rpxd6p-MuiButtonBase-root-MuiTab-root.Mui-selected {
|
||||||
|
background: #eaefff;
|
||||||
|
font-weight: 800;
|
||||||
|
}
|
||||||
|
|
||||||
|
.path-city {
|
||||||
|
stroke: #fff;
|
||||||
|
}
|
||||||
|
.path-city:hover {
|
||||||
|
fill: #db5f5f;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 600px) {
|
||||||
|
.MuiButtonBase-root-MuiTab-root {
|
||||||
|
font-size: 0.75rem !important;
|
||||||
|
}
|
||||||
|
.muirtl-1sbhvmq {
|
||||||
|
padding: 12px 16px !important;
|
||||||
|
}
|
||||||
|
.muirtl-162ovef {
|
||||||
|
padding: 4px 8px !important;
|
||||||
|
}
|
||||||
|
.MuiChip-root {
|
||||||
|
height: 24px !important;
|
||||||
|
}
|
||||||
|
.MuiChip-label {
|
||||||
|
padding: 0 6px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
497
src/App.js
Normal file
@@ -0,0 +1,497 @@
|
|||||||
|
import React, { Suspense, useEffect, useState } from "react";
|
||||||
|
import "./App.css";
|
||||||
|
import { Routes, Route, Navigate, useLocation } from "react-router-dom";
|
||||||
|
import { guestRouting } from "./routes/guestRouting";
|
||||||
|
import { getManagerRouting } from "./routes/managerRouting";
|
||||||
|
import { Box, ThemeProvider } from "@mui/material";
|
||||||
|
import createCache from "@emotion/cache";
|
||||||
|
import { prefixer } from "stylis";
|
||||||
|
import rtlPlugin from "stylis-plugin-rtl";
|
||||||
|
import { CacheProvider } from "@emotion/react";
|
||||||
|
import { theme } from "./data/theme";
|
||||||
|
import axios from "axios";
|
||||||
|
import { store } from "./lib/redux/store";
|
||||||
|
import { Loading } from "./components/loading/Loading";
|
||||||
|
import { useDispatch, useSelector } from "react-redux";
|
||||||
|
import { avicultureRouting } from "./routes/avicultureRouting";
|
||||||
|
import { Header } from "./layouts/header/Header";
|
||||||
|
import AdapterJalali from "@date-io/date-fns-jalali";
|
||||||
|
import { LocalizationProvider } from "@mui/x-date-pickers";
|
||||||
|
import { cityRouting } from "./routes/cityRouting";
|
||||||
|
import { slaughterRouting } from "./routes/slaughterRouting";
|
||||||
|
import { Modal } from "./components/modal/Modal";
|
||||||
|
import { provinceFinancialRouting } from "./routes/provinceFinancialRouting";
|
||||||
|
import { vetFarmRouting } from "./routes/vetFarmRouting";
|
||||||
|
import Drawer from "./components/drawer/Drawer";
|
||||||
|
import { generalRouting } from "./routes/generalRouting";
|
||||||
|
import { StrictModal } from "./components/strict-modal/StrictModal";
|
||||||
|
import { StrictMissingHallNumber } from "./features/aviculture/components/strict-missing-hall-number/StrictMissingHallNumber";
|
||||||
|
import { driverRouting } from "./routes/driverRouting";
|
||||||
|
import { SidebarContextProvider } from "./contexts/SidebarContext";
|
||||||
|
import { BackDrop } from "./components/backdrop/BackDrop";
|
||||||
|
import { AppContextProvider } from "./contexts/AppContext";
|
||||||
|
import { Notif } from "./components/notif/Notif";
|
||||||
|
import { inspectorRouting } from "./routes/inspectorRouting";
|
||||||
|
// import bg from "./assets/images/bg.jpg";
|
||||||
|
import { Fallback } from "./layouts/fallback/Fallback";
|
||||||
|
import { slaughterHouseVetRouting } from "./routes/slaughterHouseVet";
|
||||||
|
import { ErrorBoundary } from "react-error-boundary";
|
||||||
|
import { ErrorFallback } from "./components/error-fallback/ErrorFallback";
|
||||||
|
import { LOG_OUT } from "./lib/redux/slices/userSlice";
|
||||||
|
import { adminRouting } from "./routes/adminRouting";
|
||||||
|
import { SetupAxios } from "./lib/axios/axios";
|
||||||
|
import { vetSupervisorRouting } from "./routes/vetSupervisorRouting";
|
||||||
|
import { jahadRouting } from "./routes/jahadRouting";
|
||||||
|
import { commerceRouting } from "./routes/commerceRouting";
|
||||||
|
import { cityCommerceRouting } from "./routes/cityCommerceRouting";
|
||||||
|
import { cityVetRouting } from "./routes/cityVetRouting";
|
||||||
|
import { cityJihadRouting } from "./routes/cityJihadRouting";
|
||||||
|
import { observatoryRouting } from "./routes/observatoryRouting";
|
||||||
|
import { provinceSupervisorRouting } from "./routes/provinceSupervisorRouting";
|
||||||
|
import { senfRouting } from "./routes/senfRouting";
|
||||||
|
import versionNumber from "./version.txt";
|
||||||
|
import { guildRoomRouting } from "./routes/guildRoomRouting";
|
||||||
|
import { posCompanyRouting } from "./routes/posCompanyRouting";
|
||||||
|
import { liveStockSupportRouting } from "./routes/liveStockSupportRouting";
|
||||||
|
import { chainCompanyRouting } from "./routes/chainCompanyRouting";
|
||||||
|
// import ChatButton from "./components/chat-system/ChatSystem";
|
||||||
|
import { supporterRouting } from "./routes/supporterRouting";
|
||||||
|
import { dispenserRouting } from "./routes/dispenserRouting";
|
||||||
|
import { cityPoultryRouting } from "./routes/cityPoultryRouting";
|
||||||
|
import { SiteMap } from "./layouts/site-map/SiteMap";
|
||||||
|
import { getRoleFromUrl } from "./utils/getRoleFromUrl";
|
||||||
|
import { parentCompanyRouting } from "./routes/parentCompanyRouting";
|
||||||
|
import { coldHouseStewardRouting } from "./routes/coldHouseStewardRouting";
|
||||||
|
import { cityGuildRouting } from "./routes/cityGuildRouting";
|
||||||
|
import { liveStockProvinceJahadRouting } from "./routes/LiveStockProvinceJahadRouting";
|
||||||
|
import { unionRouting } from "./routes/unionRouting";
|
||||||
|
import { cooperativeRouting } from "./routes/cooperativeRouting";
|
||||||
|
import { rancherRouting } from "./routes/rancherRouting";
|
||||||
|
import { barSquareRouting } from "./routes/barSquareRouting";
|
||||||
|
import { stewardRouting } from "./routes/stewardRouting";
|
||||||
|
|
||||||
|
const AppRouter = () => {
|
||||||
|
const authToken = useSelector((state) => state.userSlice.authToken);
|
||||||
|
const role = useSelector((state) => state.userSlice.role);
|
||||||
|
|
||||||
|
let routes = [...guestRouting];
|
||||||
|
let defaultRoute = "/";
|
||||||
|
|
||||||
|
// const authToken = true;
|
||||||
|
// const role = "Poultry";
|
||||||
|
|
||||||
|
if (authToken) {
|
||||||
|
routes = [...generalRouting, ...barSquareRouting];
|
||||||
|
for (const singleRoleIndex in role) {
|
||||||
|
if (Object.hasOwnProperty.call(role, singleRoleIndex)) {
|
||||||
|
const element = role[singleRoleIndex];
|
||||||
|
switch (element) {
|
||||||
|
case "Admin":
|
||||||
|
routes = [...routes, ...adminRouting, ...inspectorRouting];
|
||||||
|
break;
|
||||||
|
case "Poultry":
|
||||||
|
routes = [...routes, ...avicultureRouting];
|
||||||
|
break;
|
||||||
|
case "CityOperator":
|
||||||
|
routes = [...routes, ...cityRouting];
|
||||||
|
break;
|
||||||
|
case "KillHouse":
|
||||||
|
routes = [...routes, ...slaughterRouting];
|
||||||
|
break;
|
||||||
|
case "ProvinceOperator":
|
||||||
|
routes = [...routes, ...getManagerRouting("provinceOperator")];
|
||||||
|
break;
|
||||||
|
case "ProvinceFinancial":
|
||||||
|
routes = [...routes, ...provinceFinancialRouting];
|
||||||
|
break;
|
||||||
|
case "ProvinceInspector":
|
||||||
|
routes = [...routes, ...inspectorRouting];
|
||||||
|
break;
|
||||||
|
case "KillHouseVet":
|
||||||
|
routes = [...routes, ...slaughterHouseVetRouting];
|
||||||
|
break;
|
||||||
|
case "VetFarm":
|
||||||
|
routes = [...routes, ...vetFarmRouting];
|
||||||
|
break;
|
||||||
|
case "Driver":
|
||||||
|
routes = [...routes, ...driverRouting];
|
||||||
|
break;
|
||||||
|
case "VetSupervisor":
|
||||||
|
routes = [...routes, ...vetSupervisorRouting];
|
||||||
|
break;
|
||||||
|
case "Jahad":
|
||||||
|
routes = [...routes, ...jahadRouting];
|
||||||
|
break;
|
||||||
|
case "Guilds":
|
||||||
|
routes = [...routes, ...senfRouting];
|
||||||
|
break;
|
||||||
|
case "Steward":
|
||||||
|
routes = [...routes, ...stewardRouting];
|
||||||
|
break;
|
||||||
|
case "Commerce":
|
||||||
|
routes = [...routes, ...commerceRouting];
|
||||||
|
break;
|
||||||
|
case "ProvinceSupervisor":
|
||||||
|
routes = [...routes, ...provinceSupervisorRouting];
|
||||||
|
break;
|
||||||
|
case "CityCommerce":
|
||||||
|
routes = [...routes, ...cityCommerceRouting];
|
||||||
|
break;
|
||||||
|
case "CityVet":
|
||||||
|
routes = [...routes, ...cityVetRouting];
|
||||||
|
break;
|
||||||
|
case "CityJahad":
|
||||||
|
routes = [...routes, ...cityJihadRouting];
|
||||||
|
break;
|
||||||
|
case "Observatory":
|
||||||
|
routes = [...routes, ...observatoryRouting];
|
||||||
|
break;
|
||||||
|
case "GuildRoom":
|
||||||
|
routes = [...routes, ...guildRoomRouting];
|
||||||
|
break;
|
||||||
|
case "PosCompany":
|
||||||
|
routes = [...routes, ...posCompanyRouting];
|
||||||
|
break;
|
||||||
|
case "LiveStockSupport":
|
||||||
|
routes = [...routes, ...liveStockSupportRouting];
|
||||||
|
break;
|
||||||
|
case "SuperAdmin":
|
||||||
|
routes = [...routes, ...getManagerRouting("SuperAdmin")];
|
||||||
|
break;
|
||||||
|
case "ChainCompany":
|
||||||
|
routes = [...routes, ...chainCompanyRouting];
|
||||||
|
break;
|
||||||
|
case "AdminX":
|
||||||
|
routes = [...routes, ...getManagerRouting("AdminX")];
|
||||||
|
break;
|
||||||
|
case "Supporter":
|
||||||
|
routes = [...routes, ...supporterRouting];
|
||||||
|
break;
|
||||||
|
case "Dispenser":
|
||||||
|
routes = [...routes, ...dispenserRouting];
|
||||||
|
break;
|
||||||
|
case "CityPoultry":
|
||||||
|
routes = [...routes, ...cityPoultryRouting];
|
||||||
|
break;
|
||||||
|
case "ParentCompany":
|
||||||
|
routes = [...routes, ...parentCompanyRouting];
|
||||||
|
break;
|
||||||
|
case "ColdHouseSteward":
|
||||||
|
routes = [...routes, ...coldHouseStewardRouting];
|
||||||
|
break;
|
||||||
|
case "cityGuildRouting":
|
||||||
|
routes = [...routes, ...cityGuildRouting];
|
||||||
|
break;
|
||||||
|
case "LiveStockProvinceJahad":
|
||||||
|
routes = [...routes, ...liveStockProvinceJahadRouting];
|
||||||
|
break;
|
||||||
|
case "Union":
|
||||||
|
routes = [...routes, ...unionRouting];
|
||||||
|
break;
|
||||||
|
case "Cooperative":
|
||||||
|
routes = [...routes, ...cooperativeRouting];
|
||||||
|
break;
|
||||||
|
case "Rancher":
|
||||||
|
routes = [...routes, ...rancherRouting];
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Routes>
|
||||||
|
{routes?.map((route) => {
|
||||||
|
const { exact, Page, props } = route;
|
||||||
|
return route.path.map((path) => (
|
||||||
|
<Route
|
||||||
|
exact={exact}
|
||||||
|
path={path}
|
||||||
|
key={path}
|
||||||
|
element={
|
||||||
|
<Suspense fallback={<Fallback />}>
|
||||||
|
<Box>
|
||||||
|
<Page {...props} />
|
||||||
|
</Box>
|
||||||
|
</Suspense>
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
));
|
||||||
|
})}
|
||||||
|
<Route
|
||||||
|
path="*"
|
||||||
|
element={<Navigate to={defaultRoute ? defaultRoute : "/"} replace />}
|
||||||
|
/>
|
||||||
|
</Routes>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const cacheRtl = createCache({
|
||||||
|
key: "muirtl",
|
||||||
|
stylisPlugins: [prefixer, rtlPlugin],
|
||||||
|
});
|
||||||
|
|
||||||
|
const App = () => {
|
||||||
|
const dispatch = useDispatch();
|
||||||
|
const authToken = useSelector((state) => state.userSlice.authToken);
|
||||||
|
const { pathname } = useLocation();
|
||||||
|
// useEffect(() => {
|
||||||
|
// (function () {
|
||||||
|
// var cache = window.caches;
|
||||||
|
// cache.keys().then(function (keys) {
|
||||||
|
// keys.forEach(function (key) {
|
||||||
|
// cache.delete(key);
|
||||||
|
// });
|
||||||
|
// });
|
||||||
|
// })();
|
||||||
|
// }, []);
|
||||||
|
|
||||||
|
// check for necessary infos
|
||||||
|
const { profile } = useSelector((state) => state.avicultureSlice);
|
||||||
|
const [neededInfoMissingHall, setNeededInfoMissingHall] = useState([]);
|
||||||
|
|
||||||
|
// const { selectedRoles } = useSelector((state) => state.fileSlice);
|
||||||
|
|
||||||
|
// useEffect(() => {
|
||||||
|
// if (authToken) {
|
||||||
|
// dispatch(avicultureGetProfile());
|
||||||
|
// if (!selectedRoles?.length) {
|
||||||
|
// dispatch(CHANGE_SELECTED_ROLES(role));
|
||||||
|
// }
|
||||||
|
// if (isFirstLogin) {
|
||||||
|
// switch (role[0]) {
|
||||||
|
// case "Admin":
|
||||||
|
// break;
|
||||||
|
// case "Poultry":
|
||||||
|
// navigate(ROUTE_AVICULTURE_REQUESTS);
|
||||||
|
// break;
|
||||||
|
// case "CityOperator":
|
||||||
|
// navigate(ROUTE_CITY_REQUESTS);
|
||||||
|
// break;
|
||||||
|
// case "KillHouse":
|
||||||
|
// navigate(ROUTE_SLAUGHTER_REQUESTS);
|
||||||
|
// break;
|
||||||
|
// case "ProvinceOperator":
|
||||||
|
// navigate(ROUTE_PROVINCE_REQUESTS);
|
||||||
|
// break;
|
||||||
|
// case "ProvinceFinancial":
|
||||||
|
// navigate(ROUTE_PROVINCE_FINANCIAL_REQUESTS);
|
||||||
|
// break;
|
||||||
|
// case "ProvinceInspector":
|
||||||
|
// break;
|
||||||
|
// case "KillHouseVet":
|
||||||
|
// navigate(ROUTE_SLAUGHTER_HOUSE_VET_REQUESTS);
|
||||||
|
// break;
|
||||||
|
// case "VetFarm":
|
||||||
|
// navigate(ROUTE_VETFARM_ROUTE_ALLOCATIONS);
|
||||||
|
// break;
|
||||||
|
// case "Driver":
|
||||||
|
// break;
|
||||||
|
// case "VetSupervisor":
|
||||||
|
// navigate(ROUTE_VETـSUPERVISOR_ALLOCATIONS);
|
||||||
|
// break;
|
||||||
|
// case "CityVet":
|
||||||
|
// navigate(ROUTE_CITYVET_ROUTE_ALLOCATIONS);
|
||||||
|
// break;
|
||||||
|
// case "Observatory":
|
||||||
|
// navigate(ROUTE_OBSERVATORY_STATICS);
|
||||||
|
// break;
|
||||||
|
// case "Jahad":
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// dispatch(IS_FIRST_LOGIN(false));
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }, [authToken]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
setOpen(false);
|
||||||
|
if (authToken && profile) {
|
||||||
|
for (const iterator of profile.aviculture) {
|
||||||
|
if (!iterator.numberOfHalls) {
|
||||||
|
setOpen(true);
|
||||||
|
setNeededInfoMissingHall([
|
||||||
|
{
|
||||||
|
title: "NUMBER_OF_HALLS",
|
||||||
|
data: {
|
||||||
|
...iterator,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, [authToken, profile]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!authToken || profile === null) {
|
||||||
|
setOpen(false);
|
||||||
|
}
|
||||||
|
}, [authToken, profile]);
|
||||||
|
|
||||||
|
// useEffect(() => {
|
||||||
|
// if (authToken) {
|
||||||
|
// dispatch(provinceGetPolicyAvicultureCommitService());
|
||||||
|
// }
|
||||||
|
// }, []);
|
||||||
|
|
||||||
|
//buildchange
|
||||||
|
// useEffect(() => {
|
||||||
|
// let name = "Arta-System";
|
||||||
|
// let version = "7";
|
||||||
|
|
||||||
|
// const last_version = localStorage.getItem(`${name}-Version`);
|
||||||
|
// if (last_version !== version) {
|
||||||
|
// localStorage.setItem(`${name}-Version`, version);
|
||||||
|
// dispatch(LOG_OUT());
|
||||||
|
// // window.location.reload(true);
|
||||||
|
// }
|
||||||
|
// }, []);
|
||||||
|
|
||||||
|
const [visibleSiteMap, setVisibleSiteMap] = useState(false);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
setVisibleSiteMap(authToken && getRoleFromUrl());
|
||||||
|
}, [window.location.href, window.location.pathname, pathname]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (
|
||||||
|
window.location.search.includes("refresh") &&
|
||||||
|
!window.location.search.includes("finalAmount")
|
||||||
|
) {
|
||||||
|
window.location.href = window.location.pathname;
|
||||||
|
}
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const hardRefresh = () => {
|
||||||
|
const currentUrl = window.location.href;
|
||||||
|
const newUrl = `${currentUrl}?refresh=${new Date().getTime()}`;
|
||||||
|
window.location.href = newUrl;
|
||||||
|
};
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const uniqueQueryParam = `?v=${new Date().getTime()}`;
|
||||||
|
fetch(`${versionNumber}${uniqueQueryParam}`)
|
||||||
|
.then((response) => response.text())
|
||||||
|
.then((numberText) => {
|
||||||
|
const numberFromTxt = numberText.toString();
|
||||||
|
const lastVersion = localStorage.getItem("AppVersion");
|
||||||
|
console.log("compare versions", numberFromTxt, lastVersion);
|
||||||
|
if (
|
||||||
|
!lastVersion ||
|
||||||
|
lastVersion.toString() !== numberFromTxt.toString()
|
||||||
|
) {
|
||||||
|
localStorage.setItem("AppVersion", numberFromTxt.toString());
|
||||||
|
|
||||||
|
if ("caches" in window) {
|
||||||
|
caches.keys().then((names) => {
|
||||||
|
names.forEach((name) => {
|
||||||
|
caches.delete(name);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
hardRefresh();
|
||||||
|
|
||||||
|
// dispatch(
|
||||||
|
// OPEN_MODAL({
|
||||||
|
// title: "ورژن جدید در دسترس است",
|
||||||
|
// content: (
|
||||||
|
// <>
|
||||||
|
// <Grid container gap={SPACING.SMALL} justifyContent="center">
|
||||||
|
// <Typography variant="body2">
|
||||||
|
// جهت بهره مندی از امکانات جدید لطفا مرورگر خود را با زدن
|
||||||
|
// کلیدهای CTRL و F5 مجددا بارگزاری کنید.
|
||||||
|
// </Typography>
|
||||||
|
// <Button
|
||||||
|
// variant="outlined"
|
||||||
|
// onClick={() => {
|
||||||
|
// dispatch(CLOSE_MODAL());
|
||||||
|
// }}
|
||||||
|
// >
|
||||||
|
// متوجه شدم
|
||||||
|
// </Button>
|
||||||
|
// </Grid>
|
||||||
|
// </>
|
||||||
|
// ),
|
||||||
|
// })
|
||||||
|
// );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
console.error("Error:", error);
|
||||||
|
});
|
||||||
|
}, [window.location.pathname]);
|
||||||
|
|
||||||
|
const [open, setOpen] = React.useState(false);
|
||||||
|
// const handleOpen = () => setOpen(true);
|
||||||
|
const handleClose = () => setOpen(false);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<CacheProvider value={cacheRtl}>
|
||||||
|
<ThemeProvider theme={theme}>
|
||||||
|
<LocalizationProvider dateAdapter={AdapterJalali}>
|
||||||
|
<ErrorBoundary
|
||||||
|
FallbackComponent={ErrorFallback}
|
||||||
|
onReset={() => {
|
||||||
|
dispatch(LOG_OUT());
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Suspense fallback={<Fallback />}>
|
||||||
|
<AppContextProvider>
|
||||||
|
<div
|
||||||
|
className="App"
|
||||||
|
style={
|
||||||
|
{
|
||||||
|
// background: !authToken ? `url("${bg}")` : null,
|
||||||
|
// height: !authToken ? "100vh" : "auto",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<SidebarContextProvider>
|
||||||
|
{authToken && <Header />}
|
||||||
|
{visibleSiteMap && <SiteMap />}
|
||||||
|
|
||||||
|
{/* {authToken && <ChatButton />} */}
|
||||||
|
<BackDrop />
|
||||||
|
<Notif />
|
||||||
|
</SidebarContextProvider>
|
||||||
|
<AppRouter />
|
||||||
|
</div>
|
||||||
|
{neededInfoMissingHall.map((item, i) => {
|
||||||
|
let modalTitle = "";
|
||||||
|
const modalContent = (
|
||||||
|
<StrictMissingHallNumber
|
||||||
|
avicultureKey={item.data?.key}
|
||||||
|
name={item.data?.unitName}
|
||||||
|
id={item.data?.breedingUniqueId}
|
||||||
|
handleClose={handleClose}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
if (item.title === "NUMBER_OF_HALLS") {
|
||||||
|
modalTitle = "ثبت تعداد سالن ها";
|
||||||
|
}
|
||||||
|
return (
|
||||||
|
<StrictModal
|
||||||
|
key={"modal" + i}
|
||||||
|
title={modalTitle}
|
||||||
|
content={modalContent}
|
||||||
|
open={open}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
<Drawer />
|
||||||
|
<Modal />
|
||||||
|
<Loading />
|
||||||
|
</AppContextProvider>
|
||||||
|
</Suspense>
|
||||||
|
</ErrorBoundary>
|
||||||
|
</LocalizationProvider>
|
||||||
|
</ThemeProvider>
|
||||||
|
</CacheProvider>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
SetupAxios(axios, store);
|
||||||
|
|
||||||
|
export default App;
|
||||||
9
src/App.test.js
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
import React from "react";
|
||||||
|
import { render, screen } from "@testing-library/react";
|
||||||
|
import App from "./App";
|
||||||
|
|
||||||
|
test("renders learn react link", () => {
|
||||||
|
render(<App />);
|
||||||
|
const linkElement = screen.getByText(/learn react/i);
|
||||||
|
expect(linkElement).toBeInTheDocument();
|
||||||
|
});
|
||||||
BIN
src/assets/fonts-old/eot/IRANSansWeb.eot
Normal file
BIN
src/assets/fonts-old/eot/IRANSansWeb_Black.eot
Normal file
BIN
src/assets/fonts-old/eot/IRANSansWeb_Bold.eot
Normal file
BIN
src/assets/fonts-old/eot/IRANSansWeb_Light.eot
Normal file
BIN
src/assets/fonts-old/eot/IRANSansWeb_Medium.eot
Normal file
BIN
src/assets/fonts-old/eot/IRANSansWeb_UltraLight.eot
Normal file
78
src/assets/fonts-old/fonts.css
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
@font-face {
|
||||||
|
font-family: IRANSans;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 900;
|
||||||
|
src: url("../fonts/eot/IRANSansWeb_Black.eot");
|
||||||
|
src: url("../fonts/eot/IRANSansWeb_Black.eot?#iefix")
|
||||||
|
format("embedded-opentype"),
|
||||||
|
/* IE6-8 */ url("../fonts/woff2/IRANSansWeb_Black.woff2") format("woff2"),
|
||||||
|
/* FF39+,Chrome36+, Opera24+*/ url("../fonts/woff/IRANSansWeb_Black.woff")
|
||||||
|
format("woff"),
|
||||||
|
/* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||||
|
url("../fonts/ttf/IRANSansWeb_Black.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: IRANSans;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: bold;
|
||||||
|
src: url("../fonts/eot/IRANSansWeb_Bold.eot");
|
||||||
|
src: url("../fonts/eot/IRANSansWeb_Bold.eot?#iefix")
|
||||||
|
format("embedded-opentype"),
|
||||||
|
/* IE6-8 */ url("../fonts/woff2/IRANSansWeb_Bold.woff2") format("woff2"),
|
||||||
|
/* FF39+,Chrome36+, Opera24+*/ url("../fonts/woff/IRANSansWeb_Bold.woff")
|
||||||
|
format("woff"),
|
||||||
|
/* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url("../fonts/ttf/IRANSansWeb_Bold.ttf")
|
||||||
|
format("truetype");
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: IRANSans;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 500;
|
||||||
|
src: url("../fonts/eot/IRANSansWeb_Medium.eot");
|
||||||
|
src: url("../fonts/eot/IRANSansWeb_Medium.eot?#iefix")
|
||||||
|
format("embedded-opentype"),
|
||||||
|
/* IE6-8 */ url("../fonts/woff2/IRANSansWeb_Medium.woff2") format("woff2"),
|
||||||
|
/* FF39+,Chrome36+, Opera24+*/ url("../fonts/woff/IRANSansWeb_Medium.woff")
|
||||||
|
format("woff"),
|
||||||
|
/* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||||
|
url("../fonts/ttf/IRANSansWeb_Medium.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: IRANSans;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 300;
|
||||||
|
src: url("../fonts/eot/IRANSansWeb_Light.eot");
|
||||||
|
src: url("../fonts/eot/IRANSansWeb_Light.eot?#iefix")
|
||||||
|
format("embedded-opentype"),
|
||||||
|
/* IE6-8 */ url("../fonts/woff2/IRANSansWeb_Light.woff2") format("woff2"),
|
||||||
|
/* FF39+,Chrome36+, Opera24+*/ url("../fonts/woff/IRANSansWeb_Light.woff")
|
||||||
|
format("woff"),
|
||||||
|
/* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||||
|
url("../fonts/ttf/IRANSansWeb_Light.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: IRANSans;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 200;
|
||||||
|
src: url("../fonts/eot/IRANSansWeb_UltraLight.eot");
|
||||||
|
src: url("../fonts/eot/IRANSansWeb_UltraLight.eot?#iefix")
|
||||||
|
format("embedded-opentype"),
|
||||||
|
/* IE6-8 */ url("../fonts/woff2/IRANSansWeb_UltraLight.woff2")
|
||||||
|
format("woff2"),
|
||||||
|
/* FF39+,Chrome36+, Opera24+*/
|
||||||
|
url("../fonts/woff/IRANSansWeb_UltraLight.woff") format("woff"),
|
||||||
|
/* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||||
|
url("../fonts/ttf/IRANSansWeb_UltraLight.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: IRANSans;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
src: url("../fonts/eot/IRANSansWeb.eot");
|
||||||
|
src: url("../fonts/eot/IRANSansWeb.eot?#iefix") format("embedded-opentype"),
|
||||||
|
/* IE6-8 */ url("../fonts/woff2/IRANSansWeb.woff2") format("woff2"),
|
||||||
|
/* FF39+,Chrome36+, Opera24+*/ url("../fonts/woff/IRANSansWeb.woff")
|
||||||
|
format("woff"),
|
||||||
|
/* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url("../fonts/ttf/IRANSansWeb.ttf")
|
||||||
|
format("truetype");
|
||||||
|
}
|
||||||
BIN
src/assets/fonts-old/ttf/IRANSansWeb.ttf
Normal file
BIN
src/assets/fonts-old/ttf/IRANSansWeb_Black.ttf
Normal file
BIN
src/assets/fonts-old/ttf/IRANSansWeb_Bold.ttf
Normal file
BIN
src/assets/fonts-old/ttf/IRANSansWeb_Light.ttf
Normal file
BIN
src/assets/fonts-old/ttf/IRANSansWeb_Medium.ttf
Normal file
BIN
src/assets/fonts-old/ttf/IRANSansWeb_UltraLight.ttf
Normal file
BIN
src/assets/fonts-old/woff/IRANSansWeb.woff
Normal file
BIN
src/assets/fonts-old/woff/IRANSansWeb_Black.woff
Normal file
BIN
src/assets/fonts-old/woff/IRANSansWeb_Bold.woff
Normal file
BIN
src/assets/fonts-old/woff/IRANSansWeb_Light.woff
Normal file
BIN
src/assets/fonts-old/woff/IRANSansWeb_Medium.woff
Normal file
BIN
src/assets/fonts-old/woff/IRANSansWeb_UltraLight.woff
Normal file
BIN
src/assets/fonts-old/woff2/IRANSansWeb.woff2
Normal file
BIN
src/assets/fonts-old/woff2/IRANSansWeb_Black.woff2
Normal file
BIN
src/assets/fonts-old/woff2/IRANSansWeb_Bold.woff2
Normal file
BIN
src/assets/fonts-old/woff2/IRANSansWeb_Light.woff2
Normal file
BIN
src/assets/fonts-old/woff2/IRANSansWeb_Medium.woff2
Normal file
BIN
src/assets/fonts-old/woff2/IRANSansWeb_UltraLight.woff2
Normal file
BIN
src/assets/fonts/eot/iranyekanwebblackfanum.eot
Normal file
BIN
src/assets/fonts/eot/iranyekanwebboldfanum.eot
Normal file
BIN
src/assets/fonts/eot/iranyekanwebextrablackfanum.eot
Normal file
BIN
src/assets/fonts/eot/iranyekanwebextraboldfanum.eot
Normal file
BIN
src/assets/fonts/eot/iranyekanweblightfanum.eot
Normal file
BIN
src/assets/fonts/eot/iranyekanwebmediumfanum.eot
Normal file
BIN
src/assets/fonts/eot/iranyekanwebregularfanum.eot
Normal file
BIN
src/assets/fonts/eot/iranyekanwebthinfanum.eot
Normal file
147
src/assets/fonts/fonts.css
Normal file
@@ -0,0 +1,147 @@
|
|||||||
|
/**
|
||||||
|
*
|
||||||
|
* Name: IRANYekan Font
|
||||||
|
* Version: 3.0
|
||||||
|
* Author: Moslem Ebrahimi (moslemebrahimi.com)
|
||||||
|
* Created on: Dec 20, 2018
|
||||||
|
* Updated on: Dec 20, 2018
|
||||||
|
* Website: http://fontiran.com
|
||||||
|
* Copyright: Commercial/Proprietary Software
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
فونت ایران یکان یک نرم افزار مالکیتی محسوب می شود. جهت آگاهی از قوانین استفاده از این فونت ها لطفا به وب سایت (فونت ایران دات کام) مراجعه نمایید
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
IRANYekan fonts are considered a proprietary software. To gain information about the laws regarding the use of these fonts, please visit www.fontiran.com
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
This set of fonts are used in this project under the license: (.....)
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
@font-face {
|
||||||
|
font-family: iranyekan;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: bold;
|
||||||
|
src: url("./eot/iranyekanwebboldfanum.eot");
|
||||||
|
src: url("./eot/iranyekanwebboldfanum.eot?#iefix") format("embedded-opentype"),
|
||||||
|
/* IE6-8 */ url("./woff/iranyekanwebboldfanum.woff") format("woff"),
|
||||||
|
/* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url("./ttf/iranyekanwebboldfanum.ttf")
|
||||||
|
format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: iranyekan;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 100;
|
||||||
|
src: url("./eot/iranyekanwebthinfanum.eot");
|
||||||
|
src: url("./eot/iranyekanwebthinfanum.eot?#iefix") format("embedded-opentype"),
|
||||||
|
/* IE6-8 */ url("./woff/iranyekanwebthinfanum.woff") format("woff"),
|
||||||
|
/* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url("./ttf/iranyekanwebthinfanum.ttf")
|
||||||
|
format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: iranyekan;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 300;
|
||||||
|
src: url("./eot/iranyekanweblightfanum.eot");
|
||||||
|
src: url("./eot/iranyekanweblightfanum.eot?#iefix")
|
||||||
|
format("embedded-opentype"),
|
||||||
|
/* IE6-8 */ url("./woff/iranyekanweblightfanum.woff") format("woff"),
|
||||||
|
/* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url("./ttf/iranyekanweblightfanum.ttf")
|
||||||
|
format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: iranyekan;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
src: url("./eot/iranyekanwebregularfanum.eot");
|
||||||
|
src: url("./eot/iranyekanwebregularfanum.eot?#iefix")
|
||||||
|
format("embedded-opentype"),
|
||||||
|
/* IE6-8 */ url("./woff/iranyekanwebregularfanum.woff") format("woff"),
|
||||||
|
/* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||||
|
url("./ttf/iranyekanwebregularfanum.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: iranyekan;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 500;
|
||||||
|
src: url("./eot/iranyekanwebmediumfanum.eot");
|
||||||
|
src: url("./eot/iranyekanwebmediumfanum.eot?#iefix")
|
||||||
|
format("embedded-opentype"),
|
||||||
|
/* IE6-8 */ url("./woff/iranyekanwebmediumfanum.woff") format("woff"),
|
||||||
|
/* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url("./ttf/iranyekanwebmediumfanum.ttf")
|
||||||
|
format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: iranyekan;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 800;
|
||||||
|
src: url("./eot/iranyekanwebextraboldfanum.eot");
|
||||||
|
src: url("./eot/iranyekanwebextraboldfanum.eot?#iefix")
|
||||||
|
format("embedded-opentype"),
|
||||||
|
/* IE6-8 */ url("./woff/iranyekanwebextraboldfanum.woff") format("woff"),
|
||||||
|
/* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||||
|
url("./ttf/iranyekanwebextraboldfanum.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: iranyekan;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 850;
|
||||||
|
src: url("./eot/iranyekanwebblackfanum.eot");
|
||||||
|
src: url("./eot/iranyekanwebblackfanum.eot?#iefix")
|
||||||
|
format("embedded-opentype"),
|
||||||
|
/* IE6-8 */ url("./woff/iranyekanwebblackfanum.woff") format("woff"),
|
||||||
|
/* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url("./ttf/iranyekanwebblackfanum.ttf")
|
||||||
|
format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: iranyekan;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 900;
|
||||||
|
src: url("./eot/iranyekanwebextrablackfanum.eot");
|
||||||
|
src: url("./eot/iranyekanwebextrablackfanum.eot?#iefix")
|
||||||
|
format("embedded-opentype"),
|
||||||
|
/* IE6-8 */ url("./woff/iranyekanwebextrablackfanum.woff") format("woff"),
|
||||||
|
/* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||||
|
url("./ttf/iranyekanwebextrablackfanum.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "nazanin";
|
||||||
|
src: local("nazanin"), url("./ttf/B-NAZANIN.TTF") format("truetype");
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "titr";
|
||||||
|
src: local("titr"), url("./ttf/Titr.ttf") format("truetype");
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* @font-face {
|
||||||
|
font-family: "vazir";
|
||||||
|
src: local("vazir"), url("./ttf/Vazir-Medium.ttf") format("truetype");
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "nima";
|
||||||
|
src: local("vazir"), url("./ttf/Nima.ttf") format("truetype");
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "sharif";
|
||||||
|
src: local("vazir"), url("./ttf/Sharif.ttf") format("truetype");
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "azar";
|
||||||
|
src: local("vazir"), url("./ttf/AzarMehr.ttf") format("truetype");
|
||||||
|
font-weight: bold;
|
||||||
|
} */
|
||||||
1475
src/assets/fonts/svg/iranyekanwebblackfanum.svg
Normal file
|
After Width: | Height: | Size: 199 KiB |
1578
src/assets/fonts/svg/iranyekanwebboldfanum.svg
Normal file
|
After Width: | Height: | Size: 221 KiB |
1489
src/assets/fonts/svg/iranyekanwebextrablackfanum.svg
Normal file
|
After Width: | Height: | Size: 201 KiB |
1478
src/assets/fonts/svg/iranyekanwebextraboldfanum.svg
Normal file
|
After Width: | Height: | Size: 198 KiB |
1628
src/assets/fonts/svg/iranyekanweblightfanum.svg
Normal file
|
After Width: | Height: | Size: 233 KiB |
1584
src/assets/fonts/svg/iranyekanwebmediumfanum.svg
Normal file
|
After Width: | Height: | Size: 222 KiB |
1560
src/assets/fonts/svg/iranyekanwebregularfanum.svg
Normal file
|
After Width: | Height: | Size: 219 KiB |
1651
src/assets/fonts/svg/iranyekanwebthinfanum.svg
Normal file
|
After Width: | Height: | Size: 241 KiB |
BIN
src/assets/fonts/ttf/AzarMehr.ttf
Normal file
BIN
src/assets/fonts/ttf/B-NAZANIN.TTF
Normal file
BIN
src/assets/fonts/ttf/Nima.ttf
Normal file
BIN
src/assets/fonts/ttf/Sharif.ttf
Normal file
BIN
src/assets/fonts/ttf/Titr.ttf
Normal file
BIN
src/assets/fonts/ttf/Vazir-Medium.ttf
Normal file
BIN
src/assets/fonts/ttf/iranyekanwebblackfanum.ttf
Normal file
BIN
src/assets/fonts/ttf/iranyekanwebboldfanum.ttf
Normal file
BIN
src/assets/fonts/ttf/iranyekanwebextrablackfanum.ttf
Normal file
BIN
src/assets/fonts/ttf/iranyekanwebextraboldfanum.ttf
Normal file
BIN
src/assets/fonts/ttf/iranyekanweblightfanum.ttf
Normal file
BIN
src/assets/fonts/ttf/iranyekanwebmediumfanum.ttf
Normal file
BIN
src/assets/fonts/ttf/iranyekanwebregularfanum.ttf
Normal file
BIN
src/assets/fonts/ttf/iranyekanwebthinfanum.ttf
Normal file
BIN
src/assets/fonts/woff/iranyekanwebblackfanum.woff
Normal file
BIN
src/assets/fonts/woff/iranyekanwebboldfanum.woff
Normal file
BIN
src/assets/fonts/woff/iranyekanwebextrablackfanum.woff
Normal file
BIN
src/assets/fonts/woff/iranyekanwebextraboldfanum.woff
Normal file
BIN
src/assets/fonts/woff/iranyekanweblightfanum.woff
Normal file
BIN
src/assets/fonts/woff/iranyekanwebmediumfanum.woff
Normal file
BIN
src/assets/fonts/woff/iranyekanwebregularfanum.woff
Normal file
BIN
src/assets/fonts/woff/iranyekanwebthinfanum.woff
Normal file
BIN
src/assets/images/ChickenLogo.png
Normal file
|
After Width: | Height: | Size: 413 KiB |
BIN
src/assets/images/ClosedTicketImage.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
src/assets/images/IranOutlined.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
src/assets/images/IranOutlined2.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
src/assets/images/Ticket1.png
Normal file
|
After Width: | Height: | Size: 5.2 KiB |
BIN
src/assets/images/arrow.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
src/assets/images/barSquare.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
src/assets/images/barSquareColor.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
src/assets/images/bg.jpg
Normal file
|
After Width: | Height: | Size: 57 KiB |