From a796a42abdcb4345626d6ede0d021502207f271b Mon Sep 17 00:00:00 2001 From: Mounssif BOUHLAOUI Date: Wed, 13 Dec 2023 03:11:44 +0100 Subject: [PATCH] Changing API PATH/FIX error fetching/switch fetch to eaxious/change theme color --- admin/.env.example | 4 +- admin/package.json | 2 +- admin/public/index.html | 22 ++++---- admin/public/logoIcon.png | Bin 0 -> 54129 bytes admin/public/manifest.json | 6 +- admin/src/assets/css/MiniCalendar.css | 26 ++++----- admin/src/components/card/CardMenu.tsx | 2 +- admin/src/components/card/NftCard.tsx | 8 +-- admin/src/components/checkbox/index.tsx | 6 +- admin/src/components/navbar/RTL.tsx | 6 +- admin/src/components/navbar/index.tsx | 6 +- admin/src/components/progress/index.tsx | 4 +- admin/src/components/radio/index.tsx | 4 +- .../components/sidebar/components/Links.tsx | 4 +- .../sidebar/components/SidebarCard.tsx | 4 +- .../sidebar/componentsrtl/Links.tsx | 4 +- .../sidebar/componentsrtl/SidebarCard.tsx | 4 +- admin/src/components/switch/index.tsx | 6 +- admin/src/components/widget/Widget.tsx | 2 +- admin/src/layouts/auth/index.tsx | 5 +- admin/src/routes.tsx | 2 +- admin/src/views/admin/bike/index.tsx | 8 ++- .../admin/default/components/BikeTierPie.tsx | 6 +- .../admin/default/components/HistoryTable.tsx | 12 ++-- .../admin/default/components/PieChartCard.tsx | 2 +- .../admin/default/components/RevenueChart.tsx | 8 ++- .../admin/default/components/TaskCard.tsx | 2 +- .../admin/default/components/TopCustomers.tsx | 12 ++-- .../admin/default/components/TotalSpent.tsx | 2 +- .../default/components/WeeklyRevenue.tsx | 2 +- admin/src/views/admin/default/index.tsx | 10 +++- admin/src/views/admin/park/index.tsx | 8 ++- admin/src/views/admin/rental/index.tsx | 8 ++- .../admin/user/components/AdminTable.tsx | 26 +++++---- .../admin/user/components/DrawerEdit.tsx | 4 +- .../admin/user/components/ModelCreate.tsx | 52 +++++++++++------- admin/src/views/admin/user/index.tsx | 8 ++- admin/src/views/auth/SignIn.tsx | 12 ++-- api/.env.example | 2 +- 39 files changed, 182 insertions(+), 129 deletions(-) create mode 100644 admin/public/logoIcon.png diff --git a/admin/.env.example b/admin/.env.example index 7fa809d..0b03dc1 100644 --- a/admin/.env.example +++ b/admin/.env.example @@ -1,5 +1,5 @@ # DEV -REACT_APP_API_URL=http://localhost:3300/api +REACT_APP_API_URL=http://dev.bikehub.me/api/v1/ # PROD -# REACT_APP_API_URL=http://dev.bikehub.me/api +# REACT_APP_API_URL=http://dev.bikehub.me/api/v1 diff --git a/admin/package.json b/admin/package.json index e7d4345..0c0735d 100644 --- a/admin/package.json +++ b/admin/package.json @@ -37,7 +37,7 @@ "web-vitals": "^2.1.4" }, "scripts": { - "start": "react-scripts start", + "start": "PORT=3001 react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject", diff --git a/admin/public/index.html b/admin/public/index.html index bf82779..887bdd3 100644 --- a/admin/public/index.html +++ b/admin/public/index.html @@ -1,10 +1,10 @@ diff --git a/admin/public/logoIcon.png b/admin/public/logoIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..4929c50cc8ddab35694350683a84b009abac1a9f GIT binary patch literal 54129 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 G{Qm%IDoNu2 literal 0 HcmV?d00001 diff --git a/admin/public/manifest.json b/admin/public/manifest.json index 1f2f141..4259444 100644 --- a/admin/public/manifest.json +++ b/admin/public/manifest.json @@ -1,9 +1,9 @@ { - "short_name": "React App", - "name": "Create React App Sample", + "short_name": "BikeHub", + "name": "BikeHub", "icons": [ { - "src": "favicon.ico", + "src": "logoIcon.png", "sizes": "64x64 32x32 24x24 16x16", "type": "image/x-icon" } diff --git a/admin/src/assets/css/MiniCalendar.css b/admin/src/assets/css/MiniCalendar.css index 61355b7..461faa0 100644 --- a/admin/src/assets/css/MiniCalendar.css +++ b/admin/src/assets/css/MiniCalendar.css @@ -24,14 +24,14 @@ abbr[title] { text-decoration: unset !important; } .react-calendar__navigation__prev-button { - background-color: #4318ff !important; + background-color: #38b2ac !important; border-radius: 10px; min-width: 34px !important; height: 34px !important; color: white; } .react-calendar__navigation__next-button { - background-color: #4318ff !important; + background-color: #38b2ac !important; border-radius: 10px; min-width: 34px !important; width: 34px !important; @@ -73,7 +73,7 @@ abbr[title] { .react-calendar__tile--active, .react-calendar__tile--active:enabled:hover, .react-calendar__tile--active:enabled:focus { - background: #4318ff; + background: #38b2ac; border-radius: 10px; color: white; } @@ -81,13 +81,13 @@ abbr[title] { .react-calendar__tile--range:enabled:hover, .react-calendar__tile--range:enabled:focus { background: #f4f7fe; - color: #4318ff; + color: #38b2ac; border-radius: 0px; } .react-calendar__tile--rangeStart, .react-calendar__tile--rangeStart:enabled:hover, .react-calendar__tile--rangeStart:enabled:focus { - background: #4318ff; + background: #38b2ac; border-top-left-radius: 10px; border-bottom-left-radius: 10px; color: white; @@ -95,7 +95,7 @@ abbr[title] { .react-calendar__tile--rangeEnd, .react-calendar__tile--rangeEnd:enabled:hover, .react-calendar__tile--rangeEnd:enabled:focus { - background: #4318ff; + background: #38b2ac; border-top-right-radius: 10px; border-bottom-right-radius: 10px; color: white; @@ -107,10 +107,10 @@ body.dark .react-calendar { border-radius: 30px; } body.dark .react-calendar__navigation__prev-button { - background-color: #7551ff !important; + background-color: #86e7e2 !important; } body.dark .react-calendar__navigation__next-button { - background-color: #7551ff !important; + background-color: #86e7e2 !important; color: white; } body.dark .react-calendar__tile { @@ -134,24 +134,24 @@ body.dark .react-calendar__month-view__days__day--neighboringMonth { body.dark .react-calendar__tile--active, body.dark .react-calendar__tile--active:enabled:hover, body.dark .react-calendar__tile--active:enabled:focus { - background: #7551ff; + background: #86e7e2; color: white; } body.dark .react-calendar__tile--range, body.dark .react-calendar__tile--range:enabled:hover, body.dark .react-calendar__tile--range:enabled:focus { background: rgba(255, 255, 255, 0.1); - color: #7551ff; + color: #86e7e2; } body.dark .react-calendar__tile--rangeStart, body.dark .react-calendar__tile--rangeStart:enabled:hover, body.dark .react-calendar__tile--rangeStart:enabled:focus { - background: #7551ff; + background: #86e7e2; color: white; } body.dark .react-calendar__tile--rangeEnd, body.dark .react-calendar__tile--rangeEnd:enabled:hover, body.dark .react-calendar__tile--rangeEnd:enabled:focus { - background: #7551ff; + background: #86e7e2; color: white; -} \ No newline at end of file +} diff --git a/admin/src/components/card/CardMenu.tsx b/admin/src/components/card/CardMenu.tsx index d818d70..9522197 100644 --- a/admin/src/components/card/CardMenu.tsx +++ b/admin/src/components/card/CardMenu.tsx @@ -17,7 +17,7 @@ function CardMenu(props: { transparent?: boolean }) { className={`flex items-center text-xl hover:cursor-pointer ${ transparent ? "bg-none text-white hover:bg-none active:bg-none" - : "bg-lightPrimary p-2 text-brand-500 hover:bg-gray-100 dark:bg-navy-700 dark:text-white dark:hover:bg-white/20 dark:active:bg-white/10" + : "bg-lightPrimary p-2 text-teal-600 hover:bg-gray-100 dark:bg-navy-700 dark:text-white dark:hover:bg-white/20 dark:active:bg-white/10" } linear justify-center rounded-lg font-bold transition duration-200`} > diff --git a/admin/src/components/card/NftCard.tsx b/admin/src/components/card/NftCard.tsx index 4dc4f72..6493533 100644 --- a/admin/src/components/card/NftCard.tsx +++ b/admin/src/components/card/NftCard.tsx @@ -26,13 +26,13 @@ const NftCard = (props: { /> @@ -70,11 +70,11 @@ const NftCard = (props: {
-

+

Current Bid: {price} ETH

-
diff --git a/admin/src/components/checkbox/index.tsx b/admin/src/components/checkbox/index.tsx index ce91d1f..089cb57 100644 --- a/admin/src/components/checkbox/index.tsx +++ b/admin/src/components/checkbox/index.tsx @@ -21,7 +21,7 @@ const Checkbox = (props: { return (
diff --git a/admin/src/views/admin/default/components/PieChartCard.tsx b/admin/src/views/admin/default/components/PieChartCard.tsx index 08bbc0b..05d3e05 100644 --- a/admin/src/views/admin/default/components/PieChartCard.tsx +++ b/admin/src/views/admin/default/components/PieChartCard.tsx @@ -19,7 +19,7 @@ const PieChartCard = () => {
-
+

Your Files

diff --git a/admin/src/views/admin/default/components/RevenueChart.tsx b/admin/src/views/admin/default/components/RevenueChart.tsx index 007ce5b..e633cfc 100644 --- a/admin/src/views/admin/default/components/RevenueChart.tsx +++ b/admin/src/views/admin/default/components/RevenueChart.tsx @@ -23,12 +23,14 @@ const RevenueChart = () => { const fetchData = async () => { try { const response = await axios.get( - `${process.env.REACT_APP_API_URL}/v1/rentals`, + `${process.env.REACT_APP_API_URL}rentals`, { withCredentials: true, } ); - + console.log("-response------------") + console.log(response) + console.log("-------------") const rentals: Rental[] = response.data; // Filter rentals from the last 30 days @@ -72,7 +74,7 @@ const RevenueChart = () => {

Revenue Chart

-
diff --git a/admin/src/views/admin/default/components/TaskCard.tsx b/admin/src/views/admin/default/components/TaskCard.tsx index d59a066..2f9b098 100644 --- a/admin/src/views/admin/default/components/TaskCard.tsx +++ b/admin/src/views/admin/default/components/TaskCard.tsx @@ -10,7 +10,7 @@ const TaskCard = () => {
- +

Tasks diff --git a/admin/src/views/admin/default/components/TopCustomers.tsx b/admin/src/views/admin/default/components/TopCustomers.tsx index bad5baa..28f2ed7 100644 --- a/admin/src/views/admin/default/components/TopCustomers.tsx +++ b/admin/src/views/admin/default/components/TopCustomers.tsx @@ -25,14 +25,18 @@ const TopCustomers = () => { const fetchData = async () => { try { const [rentalsResponse, usersResponse] = await Promise.all([ - axios.get(`${process.env.REACT_APP_API_URL}/v1/rentals`, { + axios.get(`${process.env.REACT_APP_API_URL}rentals`, { withCredentials: true, }), - axios.get(`${process.env.REACT_APP_API_URL}/v1/users`, { + axios.get(`${process.env.REACT_APP_API_URL}users`, { withCredentials: true, }), ]); - + console.log("-response------------") + console.log(usersResponse) + console.log("-response------------") + console.log(rentalsResponse) + console.log("-------------") const rentals: Rental[] = rentalsResponse.data; const users: User[] = usersResponse.data; @@ -74,7 +78,7 @@ const TopCustomers = () => {

Top Customers

-
diff --git a/admin/src/views/admin/default/components/TotalSpent.tsx b/admin/src/views/admin/default/components/TotalSpent.tsx index 9a8f415..1b57411 100644 --- a/admin/src/views/admin/default/components/TotalSpent.tsx +++ b/admin/src/views/admin/default/components/TotalSpent.tsx @@ -18,7 +18,7 @@ const TotalSpent = () => { This month -
diff --git a/admin/src/views/admin/default/components/WeeklyRevenue.tsx b/admin/src/views/admin/default/components/WeeklyRevenue.tsx index cf8acbf..96a5f2b 100644 --- a/admin/src/views/admin/default/components/WeeklyRevenue.tsx +++ b/admin/src/views/admin/default/components/WeeklyRevenue.tsx @@ -13,7 +13,7 @@ const WeeklyRevenue = () => {

Weekly Revenue

-
diff --git a/admin/src/views/admin/default/index.tsx b/admin/src/views/admin/default/index.tsx index 95a5edd..a7b98c8 100644 --- a/admin/src/views/admin/default/index.tsx +++ b/admin/src/views/admin/default/index.tsx @@ -25,16 +25,22 @@ const Dashboard = () => { useEffect(() => { const fetchData = async () => { try { - const urls = ["/v1/users", "/v1/parks", "/v1/bikes", "/v1/rentals"]; + const urls = ["users", "parks", "bikes", "rentals"]; const allRequests = urls.map((url) => fetch(process.env.REACT_APP_API_URL + url, { credentials: "include" }) ); + const responses = await Promise.all(allRequests); + console.log("-response------------") + console.log(responses) + console.log("-------------") const data = await Promise.all( responses.map((response) => response.json()) ); - + console.log("-response------------") + console.log(data) + console.log("-------------") setStats({ users: data[0], parks: data[1], diff --git a/admin/src/views/admin/park/index.tsx b/admin/src/views/admin/park/index.tsx index db8a55d..42b0f32 100644 --- a/admin/src/views/admin/park/index.tsx +++ b/admin/src/views/admin/park/index.tsx @@ -26,10 +26,16 @@ const Tables = () => { useEffect(() => { const fetchData = async () => { const response = await fetch( - `${process.env.REACT_APP_API_URL}/v1/parks`, + `${process.env.REACT_APP_API_URL}parks`, { credentials: "include" } ); + console.log("-response------------") + console.log(response) + console.log("-------------") const data = await response.json(); + console.log("-response------------") + console.log(data) + console.log("-------------") setTableData(data); }; diff --git a/admin/src/views/admin/rental/index.tsx b/admin/src/views/admin/rental/index.tsx index e4df9be..f0078f7 100644 --- a/admin/src/views/admin/rental/index.tsx +++ b/admin/src/views/admin/rental/index.tsx @@ -30,10 +30,16 @@ const Tables = () => { useEffect(() => { const fetchData = async () => { const response = await fetch( - `${process.env.REACT_APP_API_URL}/v1/rentals`, + `${process.env.REACT_APP_API_URL}rentals`, { credentials: "include" } ); + console.log("-response------------") + console.log(response) + console.log("-------------") const data = await response.json(); + console.log("-response------------") + console.log(data) + console.log("-------------") setTableData(data); }; diff --git a/admin/src/views/admin/user/components/AdminTable.tsx b/admin/src/views/admin/user/components/AdminTable.tsx index fb06c1b..8c71a0f 100644 --- a/admin/src/views/admin/user/components/AdminTable.tsx +++ b/admin/src/views/admin/user/components/AdminTable.tsx @@ -34,18 +34,18 @@ const AdminTable: React.FC = ({ Cell: header.id === "created_at" ? (cellInfo: { value: string }) => { - const date = new Date(cellInfo.value); - return ( -

- {date.toLocaleDateString()} -

- ); - } - : (cellInfo: { value: string }) => ( + const date = new Date(cellInfo.value); + return (

- {cellInfo.value} + {date.toLocaleDateString()}

- ), + ); + } + : (cellInfo: { value: string }) => ( +

+ {cellInfo.value} +

+ ), })), [tableHeader] ); @@ -85,12 +85,15 @@ const AdminTable: React.FC = ({ if (confirmDelete) { try { const response = await fetch( - `${process.env.REACT_APP_API_URL}/v1/${moduleName}s/${moduleName}/${row.id}`, + `${process.env.REACT_APP_API_URL}${moduleName}s/${moduleName}/${row.id}`, { method: "DELETE", credentials: "include", } ); + console.log("-response------------") + console.log(response) + console.log("-------------") if (!response.ok) { throw new Error("Network response was not ok"); } @@ -168,7 +171,6 @@ const AdminTable: React.FC = ({ -
+ {/*
Not registered yet? Create an account -
+
*/}
); diff --git a/api/.env.example b/api/.env.example index 5e817c9..71a7c42 100644 --- a/api/.env.example +++ b/api/.env.example @@ -8,7 +8,7 @@ DATABASE_URL_PROD=postgresql://bikehub:Bike-Hub@142.93.105.168:5432/bikehub?sche # JWT JWT_SIGNATURE=secret123456789 # CORS -CORS_ALLOW_URL=http://localhost:3000,http://34.175.134.108:*,http://142.93.105.168:*,https://localhost:3000,https://34.175.134.108:*,https://142.93.105.168:*,http://dev.bikehub.me,http://bikehub.me,https://dev.bikehub.me,https://bikehub.me +CORS_ALLOW_URL=http://localhost:3001,https://localhost:3001,,http://localhost:3000,http://34.175.134.108:*,http://142.93.105.168:*,https://localhost:3000,https://34.175.134.108:*,https://142.93.105.168:*,http://dev.bikehub.me,http://bikehub.me,https://dev.bikehub.me,https://bikehub.me # API API_PORT=3300 # BASE URL