From 49afdec0a03abc68161e879096925ecb25e16853 Mon Sep 17 00:00:00 2001 From: AmirHossein Mahmoodi Date: Wed, 20 Dec 2023 10:07:49 +0330 Subject: [PATCH] use webapp builder --- package.json | 2 +- public/config.json.example | 1 + .../first/LoanDescription/TimeLineDetails.jsx | 80 +++++++--------- src/core/components/svgs/SvgMaintenance.jsx | 91 +++++++++++++++++++ src/core/utils/globalServerProps.js | 12 +++ src/pages/_app.jsx | 14 ++- src/pages/dashboard/index.jsx | 7 +- .../navgan/add-request-loan/index.jsx | 7 +- .../dashboard/navgan/followUp-loan/index.jsx | 7 +- src/pages/index.jsx | 6 +- src/pages/login.jsx | 6 +- 11 files changed, 156 insertions(+), 77 deletions(-) create mode 100644 src/core/components/svgs/SvgMaintenance.jsx create mode 100644 src/core/utils/globalServerProps.js diff --git a/package.json b/package.json index b517190..f5cf4ed 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "@mui/icons-material": "^5.11.16", "@mui/lab": "^5.0.0-alpha.152", "@mui/material": "^5.12.0", - "@witel/webapp-builder": "^1.2.1", + "@witel/webapp-builder": "^1.2.3", "axios": "^1.4.0", "colord": "^2.9.3", "eslint": "8.36.0", diff --git a/public/config.json.example b/public/config.json.example index 59e8e23..abeeda5 100644 --- a/public/config.json.example +++ b/public/config.json.example @@ -1,4 +1,5 @@ { + "middlewares": {}, "time_lines": { "navgan_first_page": [ { diff --git a/src/components/first/LoanDescription/TimeLineDetails.jsx b/src/components/first/LoanDescription/TimeLineDetails.jsx index f4470e9..feae261 100644 --- a/src/components/first/LoanDescription/TimeLineDetails.jsx +++ b/src/components/first/LoanDescription/TimeLineDetails.jsx @@ -1,64 +1,48 @@ -import {useTranslations} from "next-intl"; import {useEffect, useState} from "react"; -import {useRequest} from "@witel/webapp-builder"; import TimelineManager from "@/core/components/timelines/timelineManager"; import moment from "jalali-moment"; import {Timeline} from "@mui/lab"; -import {LinearProgress} from "@mui/material"; +import {useConfig} from "@witel/webapp-builder"; const TimeLineDetails = () => { - const t = useTranslations(); - const request = useRequest({notification: false, auth: false}) + const {config} = useConfig() const [timeLineList, setTimeLineList] = useState([]) - const [loading, setLoading] = useState(true) useEffect(() => { - setLoading(true) - request(process.env.NEXT_PUBLIC_CONFIG_APP_URL, 'get').then(res => { - let tempArr = [] - for (const timeLine of res.data.time_lines.navgan_first_page) { - let temp = {} - temp['label'] = timeLine.label - temp['date'] = moment(timeLine.date.from, 'jYYYY/jMM/jDD').locale('fa').format('jD jMMMM') - const fromDate = moment(timeLine.date.from, 'jYYYY/jMM/jDD') - const toDate = moment(timeLine.date.to, 'jYYYY/jMM/jDD') - const today = moment() - if (today.isBetween(fromDate, toDate, null, '[]')) { - temp['status'] = 'in progress' - } else if (today.isAfter(toDate, null)) { - temp['status'] = 'done' - } else if (today.isBefore(fromDate, null)) { - temp['status'] = 'open' - } - tempArr.push(temp) + let tempArr = [] + for (const timeLine of config.time_lines.navgan_first_page) { + let temp = {} + temp['label'] = timeLine.label + temp['date'] = moment(timeLine.date.from, 'jYYYY/jMM/jDD').locale('fa').format('jD jMMMM') + const fromDate = moment(timeLine.date.from, 'jYYYY/jMM/jDD') + const toDate = moment(timeLine.date.to, 'jYYYY/jMM/jDD') + const today = moment() + if (today.isBetween(fromDate, toDate, null, '[]')) { + temp['status'] = 'in progress' + } else if (today.isAfter(toDate, null)) { + temp['status'] = 'done' + } else if (today.isBefore(fromDate, null)) { + temp['status'] = 'open' } - setTimeLineList(tempArr) - setLoading(false) - }).catch(() => { - setLoading(false) - }) + tempArr.push(temp) + } + setTimeLineList(tempArr) }, []); return ( - <> - {loading ? ( - - ) : ( - - {timeLineList.map((timeLine, index) => ( - - )) - } - - )} - + + {timeLineList.map((timeLine, index) => ( + + )) + } + ) } export default TimeLineDetails \ No newline at end of file diff --git a/src/core/components/svgs/SvgMaintenance.jsx b/src/core/components/svgs/SvgMaintenance.jsx new file mode 100644 index 0000000..47fcc0f --- /dev/null +++ b/src/core/components/svgs/SvgMaintenance.jsx @@ -0,0 +1,91 @@ +import {useTheme} from "@mui/material"; + +const SvgMaintenance = ({width, height}) => { + const theme = useTheme() + const fillColor = theme.palette.primary.main + + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ) + +} + +export default SvgMaintenance \ No newline at end of file diff --git a/src/core/utils/globalServerProps.js b/src/core/utils/globalServerProps.js new file mode 100644 index 0000000..ef8e1b8 --- /dev/null +++ b/src/core/utils/globalServerProps.js @@ -0,0 +1,12 @@ +import {parse} from "next-useragent"; + +export const globalServerProps = async ({req, locale}) => { + const {isBot} = parse(req.headers["user-agent"]); + + return { + config: (await import(`&/config.json`)).default, + messages: (await import(`&/locales/${locale}/app.json`)).default, + isBot, + locale, + } +} \ No newline at end of file diff --git a/src/pages/_app.jsx b/src/pages/_app.jsx index a3be1c7..848a35c 100644 --- a/src/pages/_app.jsx +++ b/src/pages/_app.jsx @@ -2,10 +2,12 @@ import "&/global.scss"; import "moment/locale/fa"; import { AppLayout, + ConfigProvider, LanguageProvider, LoadingProvider, MuiLayout, NetworkProvider, + PageMiddleware, ToastProvider, UserProvider } from "@witel/webapp-builder"; @@ -18,8 +20,8 @@ import GlobalHead from "@/core/components/GlobalHead"; import Layout from "@/layouts"; const App = ({Component, pageProps}) => { - return ( - <> + return (<> + data}> @@ -31,7 +33,9 @@ const App = ({Component, pageProps}) => { - + + + @@ -41,8 +45,8 @@ const App = ({Component, pageProps}) => { - - ); + + ); }; export default App; diff --git a/src/pages/dashboard/index.jsx b/src/pages/dashboard/index.jsx index 265c8ac..b946dbd 100644 --- a/src/pages/dashboard/index.jsx +++ b/src/pages/dashboard/index.jsx @@ -1,5 +1,5 @@ import FirstComponent from "@/components/dashboard/first"; -import {parse} from "next-useragent"; +import {globalServerProps} from "@/core/utils/globalServerProps"; export default function Dashboard() { return ( @@ -8,13 +8,10 @@ export default function Dashboard() { } export async function getServerSideProps({req, locale}) { - const {isBot} = parse(req.headers["user-agent"]); return { props: { - messages: (await import(`&/locales/${locale}/app.json`)).default, + ...await globalServerProps({req, locale}), title: "Dashboard.dashboard_page", - isBot, - locale, layout: {name: 'DashboardLayout'} }, }; diff --git a/src/pages/dashboard/navgan/add-request-loan/index.jsx b/src/pages/dashboard/navgan/add-request-loan/index.jsx index 1f04bf3..7706783 100644 --- a/src/pages/dashboard/navgan/add-request-loan/index.jsx +++ b/src/pages/dashboard/navgan/add-request-loan/index.jsx @@ -1,5 +1,5 @@ -import {parse} from "next-useragent"; import LoanRequestComponent from "@/components/dashboard/navgan/add-request-loan"; +import {globalServerProps} from "@/core/utils/globalServerProps"; export default function AddLoanRequest() { return ( @@ -8,13 +8,10 @@ export default function AddLoanRequest() { } export async function getServerSideProps({req, locale}) { - const {isBot} = parse(req.headers["user-agent"]); return { props: { - messages: (await import(`&/locales/${locale}/app.json`)).default, + ...await globalServerProps({req, locale}), title: "LoanRequest.loan_request_page", - isBot, - locale, layout: {name: 'DashboardLayout', permissions: ["can_request_navgan_loan"]} }, }; diff --git a/src/pages/dashboard/navgan/followUp-loan/index.jsx b/src/pages/dashboard/navgan/followUp-loan/index.jsx index 1476d5a..68f4f73 100644 --- a/src/pages/dashboard/navgan/followUp-loan/index.jsx +++ b/src/pages/dashboard/navgan/followUp-loan/index.jsx @@ -1,5 +1,5 @@ -import {parse} from "next-useragent"; import LoanFollowUpComponent from "@/components/dashboard/navgan/followUp-loan"; +import {globalServerProps} from "@/core/utils/globalServerProps"; export default function FollowUpLoan() { return ( @@ -8,13 +8,10 @@ export default function FollowUpLoan() { } export async function getServerSideProps({req, locale}) { - const {isBot} = parse(req.headers["user-agent"]); return { props: { - messages: (await import(`&/locales/${locale}/app.json`)).default, + ...await globalServerProps({req, locale}), title: "LoanRequest.loan_request_page", - isBot, - locale, layout: {name: 'DashboardLayout'} }, }; diff --git a/src/pages/index.jsx b/src/pages/index.jsx index 2e146c6..6e47ba2 100644 --- a/src/pages/index.jsx +++ b/src/pages/index.jsx @@ -1,5 +1,5 @@ import FirstComponent from "@/components/first"; -import {parse} from "next-useragent"; +import {globalServerProps} from "@/core/utils/globalServerProps"; export default function Home() { return ( @@ -10,12 +10,10 @@ export default function Home() { } export async function getServerSideProps({req, locale}) { - const {isBot} = parse(req.headers["user-agent"]); return { props: { - messages: (await import(`&/locales/${locale}/app.json`)).default, + ...await globalServerProps({req, locale}), title: "first_page", - isBot, }, }; } diff --git a/src/pages/login.jsx b/src/pages/login.jsx index 39502a9..6f7b288 100644 --- a/src/pages/login.jsx +++ b/src/pages/login.jsx @@ -1,6 +1,6 @@ import LoginComponent from "@/components/login"; -import {parse} from "next-useragent"; import {WithoutAuthMiddleware} from "@witel/webapp-builder"; +import {globalServerProps} from "@/core/utils/globalServerProps"; export default function Login() { return ( @@ -11,12 +11,10 @@ export default function Login() { } export async function getServerSideProps({req, locale}) { - const {isBot} = parse(req.headers["user-agent"]); return { props: { - messages: (await import(`&/locales/${locale}/app.json`)).default, + ...await globalServerProps({req, locale}), title: "Titles.title_login_page", - isBot, }, }; }