aboutsummaryrefslogtreecommitdiff
path: root/frontend/src/components/pages/home.js
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/src/components/pages/home.js')
-rw-r--r--frontend/src/components/pages/home.js198
1 files changed, 198 insertions, 0 deletions
diff --git a/frontend/src/components/pages/home.js b/frontend/src/components/pages/home.js
new file mode 100644
index 0000000..c1477ab
--- /dev/null
+++ b/frontend/src/components/pages/home.js
@@ -0,0 +1,198 @@
1import React, { useEffect, useRef, useState } from 'react';
2import { useLocation, Link } from "react-router-dom";
3
4import "./home.css"
5import News from '../news';
6import Record from '../record';
7
8export default function Homepage(prop) {
9 const {token, setToken} = prop
10 const [home, setHome] = React.useState(null);
11 const location = useLocation();
12
13 useEffect(() => {
14 async function fetchMapImg() {
15 try {
16 const response = await fetch("https://lp.ardapektezol.com/api/v1/games", {
17 headers: {
18 'Authorization': token
19 }
20 });
21
22 const data = await response.json();
23
24 const recommendedMapImg = document.querySelector("#recommendedMapImg");
25
26 recommendedMapImg.src = `${data.data[0].image}`
27
28 const column1 = document.querySelector("#column1");
29 const column2 = document.querySelector("#column2");
30
31 column2.style.height = column1.clientHeight + "px";
32 } catch (error) {
33 console.log(error)
34 }
35 }
36
37 fetchMapImg()
38
39 const panels = document.querySelectorAll(".homepage-panel");
40 panels.forEach(e => {
41 // this is cuz react is silly
42 if (e.innerHTML.includes('<div class="homepage-panel-title-div">')) {
43 return
44 }
45 const title = e.getAttribute("title");
46
47 const titleDiv = document.createElement("div");
48 const titleSpan = document.createElement("span");
49
50 titleDiv.classList.add("homepage-panel-title-div")
51
52 titleSpan.innerText = title
53
54 titleDiv.appendChild(titleSpan)
55 e.insertBefore(titleDiv, e.firstChild)
56 });
57 })
58
59 const newsList = [
60 {
61 "title": "Portal Saved on Container Ride",
62 "short_description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vehicula facilisis quam, non ultrices nisl aliquam at. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas."
63 },
64 {
65 "title": "Portal Saved on Container Ride",
66 "short_description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vehicula facilisis quam, non ultrices nisl aliquam at. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas."
67 },
68 {
69 "title": "Portal Saved on Container Ride",
70 "short_description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vehicula facilisis quam, non ultrices nisl aliquam at. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas."
71 },
72 {
73 "title": "Portal Saved on Container Ride",
74 "short_description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vehicula facilisis quam, non ultrices nisl aliquam at. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas."
75 },
76 {
77 "title": "Portal Saved on Container Ride",
78 "short_description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vehicula facilisis quam, non ultrices nisl aliquam at. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas."
79 },
80 {
81 "title": "Portal Saved on Container Ride",
82 "short_description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vehicula facilisis quam, non ultrices nisl aliquam at. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas."
83 },
84 {
85 "title": "Portal Saved on Container Ride",
86 "short_description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vehicula facilisis quam, non ultrices nisl aliquam at. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas."
87 },
88 {
89 "title": "Portal Saved on Container Ride",
90 "short_description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vehicula facilisis quam, non ultrices nisl aliquam at. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas."
91 },
92 {
93 "title": "Portal Saved on Container Ride",
94 "short_description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vehicula facilisis quam, non ultrices nisl aliquam at. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas."
95 },
96 {
97 "title": "Portal Saved on Container Ride",
98 "short_description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vehicula facilisis quam, non ultrices nisl aliquam at. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas."
99 },
100 {
101 "title": "Portal Saved on Container Ride",
102 "short_description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vehicula facilisis quam, non ultrices nisl aliquam at. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas."
103 },
104 {
105 "title": "Portal Saved on Container Ride",
106 "short_description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vehicula facilisis quam, non ultrices nisl aliquam at. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas."
107 },
108 {
109 "title": "Portal Saved on Container Ride",
110 "short_description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vehicula facilisis quam, non ultrices nisl aliquam at. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas."
111 },
112 {
113 "title": "Portal Saved on Container Ride",
114 "short_description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vehicula facilisis quam, non ultrices nisl aliquam at. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas."
115 },
116 ]
117
118 return (
119 <main>
120 <section style={{marginTop: "40px", userSelect: "none"}}>
121 <span style={{fontSize: "40px"}}>Welcome back,</span><br/>
122 <span><b style={{ fontSize: "96px", transform: "translateY(-20px)", display: "block"}}>Krzyhau</b></span>
123 </section>
124
125 <div style={{display: "grid", gridTemplateColumns: "calc(50%) calc(50%)"}}>
126 <div id='column1' style={{ display: "flex", alignItems: "self-start", flexWrap: "wrap", alignContent: "start" }}>
127 {/* Column 1 */}
128 <section title="Your Profile" className='homepage-panel'>
129 <div style={{ display: "grid", gridTemplateColumns: "repeat(3, 1fr)", gap: "12px"}}>
130 <div className='stats-div'>
131 <span>Overall rank</span><br/>
132 <span><b>#69</b></span>
133 </div>
134 <div className='stats-div'>
135 <span>Singleplayer</span><br/>
136 <span style={{fontSize: "22px"}}><b>#10</b>&nbsp;(60/62)</span>
137 </div>
138 <div className='stats-div'>
139 <span>Overall rank</span><br/>
140 <span style={{fontSize: "22px"}}><b>#69</b>&nbsp;(13/37)</span>
141 </div>
142 </div>
143 </section>
144 <section title="What's Next?" className='homepage-panel'>
145 <div style={{display: "flex"}}>
146 <img className='recommended-map-img' id="recommendedMapImg"></img>
147 <div style={{marginLeft: "12px", display: "block", width: "100%"}}>
148 <span style={{fontFamily: "BarlowSemiCondensed-SemiBold", fontSize: "32px", width: "100%", display: "block"}}>Container Ride</span>
149 <span style={{fontSize: "20px"}}>Your Record: 4 portals</span>
150 <span style={{fontFamily: "BarlowSemiCondensed-SemiBold", fontSize: "36px", width: "100%", display: "block"}}>World Record: 2 portals</span>
151 <div className='difficulty-bar-home'>
152 <div className='difficulty-point' style={{backgroundColor: "#51C355"}}></div>
153 <div className='difficulty-point'></div>
154 <div className='difficulty-point'></div>
155 <div className='difficulty-point'></div>
156 <div className='difficulty-point'></div>
157 </div>
158 </div>
159 </div>
160 </section>
161 <section title="Newest Records" className='homepage-panel' style={{height: "250px"}}>
162 <div className='record-title'>
163 <div>
164 <span>Place</span>
165 <span style={{textAlign: "left"}}>Runner</span>
166 <span>Portals</span>
167 <span>Time</span>
168 <span>Date</span>
169 </div>
170 </div>
171 <div style={{overflowY: "scroll", height: "calc(100% - 90px)", paddingRight: "10px"}}>
172 <Record name={"Krzyhau"} portals={"2"} date={new Date("2024-05-21T08:45:00")} place={"2"} time={"20.20"}></Record>
173 <Record name={"Krzyhau"} portals={"2"} date={new Date("2024-05-21T08:45:00")} place={"2"} time={"20.20"}></Record>
174 <Record name={"Krzyhau"} portals={"2"} date={new Date("2024-05-21T08:45:00")} place={"2"} time={"20.20"}></Record>
175 <Record name={"Krzyhau"} portals={"2"} date={new Date("2024-05-21T08:45:00")} place={"2"} time={"20.20"}></Record>
176 <Record name={"Krzyhau"} portals={"2"} date={new Date("2024-05-21T08:45:00")} place={"2"} time={"20.20"}></Record>
177 <Record name={"Krzyhau"} portals={"2"} date={new Date("2024-05-21T08:45:00")} place={"2"} time={"20.20"}></Record>
178 <Record name={"Krzyhau"} portals={"2"} date={new Date("2024-05-21T08:45:00")} place={"2"} time={"20.20"}></Record>
179 </div>
180 </section>
181 </div>
182 {/* Column 2 */}
183 <div id='column2' style={{display: "flex", alignItems: "stretch", height: "87px"}}>
184 <section title="News" className='homepage-panel'>
185 <div id='newsContent' style={{ display: "block", width: "100%", overflowY: "scroll", height: "calc(100% - 50px)"}}>
186 {newsList.map((newsList, index) => (
187 <News newsInfo={newsList} key={index}></News>
188 ))}
189 </div>
190 </section>
191 </div>
192 </div>
193
194
195
196 </main>
197 )
198} \ No newline at end of file