Skip to content

Commit

Permalink
Merge branch 'main' into feature/9
Browse files Browse the repository at this point in the history
  • Loading branch information
202212025 authored Jun 29, 2024
2 parents 4fb9bd0 + 0ca95df commit 13c119e
Show file tree
Hide file tree
Showing 16 changed files with 795 additions and 38 deletions.
5 changes: 4 additions & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ import LoginPage from "./pages/LoginPage";
import ReviewWriting from "./pages/ReviewWriting";
import ReviewList from "./pages/ReviewList";
import KakaoRedirectHandler from "./pages/KakaoRedirectHandler";
import MyPage from "./pages/MyPage";
import PostReview from "./pages/PostReview";
import ReadReview from "./pages/ReadReview";

const App: React.FC = () => {
useEffect(() => {
Expand All @@ -36,6 +39,9 @@ const App: React.FC = () => {
<Route path="/reviewList" element={<ReviewList />} />
<Route path="/reviewWriting" element={<ReviewWriting />} />
<Route path="/themeList" element={<ThemeList />} />
<Route path="/mypage" element={<MyPage />} />
<Route path="/postReview" element={<PostReview />} />
<Route path="/readReview" element={<ReadReview />} />
</Routes>
</Router>
);
Expand Down
26 changes: 26 additions & 0 deletions src/api/ThemeListApi.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import axios from "axios";

// [get] ์œ ์ €์˜ ์ „์ฒด ๋‹ค์ด์–ด๋ฆฌ ์กฐํšŒ
export const getThemeList = async (
page: number,
title: string,
region: string
) => {
try {
const response = await axios({
method: "GET",
url: "https://api.labyrinth30-edu.link/themes",
params: {
page: page,
title: title,
region: region,
},
});
// ์‘๋‹ต ๊ฒฐ๊ณผ : id / title / difficulty / genre / store { id / name / reservationSite }
// console.log(response.data);

return response.data;
} catch (error) {
console.log(error);
}
};
27 changes: 27 additions & 0 deletions src/components/Review.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { Review } from "../styles/ReviewStyled";

const ReviewTheme = () => {
return (
<Review>
<div className="titleBox">
<p>์ œ๋ชฉ</p>
</div>
<div className="addressBox">
<p>๋งค์žฅ</p>
</div>
<div className="contentBox">
<p>๋ฆฌ๋ทฐ</p>
</div>
<div className="cardFooter">
<div className="hashtagBox">
<p>#ํƒˆ์ถœ ์„ฑ๊ณต</p>
<p>#4๋ช…</p>
<p>#ํžŒํŠธ 3๋ฒˆ</p>
<p>#๋‚จ์€ ์‹œ๊ฐ„ 10๋ถ„</p>
</div>
</div>
</Review>
);
};

export default ReviewTheme;
28 changes: 20 additions & 8 deletions src/components/RoomTheme2.tsx
Original file line number Diff line number Diff line change
@@ -1,23 +1,35 @@
import React from "react";
import { Theme } from "../styles/RoomTheme2Styled";
import { ThemeProps } from "../props/ThemeProps";

const RoomTheme2 = () => {
const RoomTheme2: React.FC<ThemeProps> = ({
title,
difficulty,
genre,
store,
}) => {
return (
<Theme data-aos="fade-up" data-aos-duration="1000">
<div className="titleBox">
<p>๋ฐฉํƒˆ์ถœ ํ…Œ๋งˆ ์ด๋ฆ„</p>
<p>{title}</p>
</div>
<div className="addressBox">
<p>๋งค์žฅ ์ •๋ณด</p>
<p>{store.name}</p>
</div>
<div className="cardFooter">
<div className="hashtagBox">
<p>#๋‚œ์ด๋„</p>
<p>#์žฅ๋ฅด</p>
</div>
<div className="linkBtn">
<p>์˜ˆ์•ฝ</p>
<p>#{difficulty}</p>
<p>#{genre}</p>
</div>
<a
href={store.reservationSite}
target="_blank"
rel="noopener noreferrer"
>
<div className="linkBtn">
<p>์˜ˆ์•ฝ</p>
</div>
</a>
</div>
</Theme>
);
Expand Down
49 changes: 49 additions & 0 deletions src/pages/MyPage.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import React, { useEffect, useState, KeyboardEvent, ChangeEvent } from "react";
import Review from "../components/Review";
import { Container, StartBtn } from "../styles/MyPageStyled";
import Pagination from "../components/BasicPagination";

const MyPage = () => {
const [take, setTake] = useState<number>(1); // ์ด ํŽ˜์ด์ง€ ์ˆ˜
const [page, setPage] = useState<number>(1); // ํ˜„์žฌ ํŽ˜์ด์ง€

const handleChangePage = (
event: React.ChangeEvent<unknown>,
value: number
) => {
setPage(value); // ํŽ˜์ด์ง€ ๋ณ€๊ฒฝ ์‹œ ํ˜„์žฌ ํŽ˜์ด์ง€ ์ƒํƒœ ์—…๋ฐ์ดํŠธ
};

return (
<Container>
<div className="headerBox">
<div className="textBox">
<div className="subTitle">๋‹น์‹ ์„ ์œ„ํ•œ ๋ฐฉ,</div>
<div className="title">username๋‹˜์˜ ๋ฐฉํƒˆ์ถœ ์ผ์ง€</div>
</div>

<StartBtn isVisible={true}>
<div className="startBtn">
<p className="start">๋ฆฌ๋ทฐ ์ž‘์„ฑ</p>
</div>
</StartBtn>
</div>

<div className="reviewBox">
<Review />
<Review />
<Review />
<Review />
</div>

<div className="paginationBox">
<Pagination
count={take}
page={page}
onChange={handleChangePage}
/>
</div>
</Container>
);
};
export default MyPage;
93 changes: 93 additions & 0 deletions src/pages/PostReview.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
import React, { useEffect, useState, KeyboardEvent, ChangeEvent } from "react";
import { Container, StartBtn } from "../styles/PostReviewStyled";

const PostReview = () => {
const onInputHandler = (
e: ChangeEvent<HTMLTextAreaElement | HTMLInputElement>
) => {
// const value = e.target.value.trim(); // ์ž…๋ ฅ๊ฐ’ ์•ž๋’ค ๊ณต๋ฐฑ ์ œ๊ฑฐ
// if (e.target.name === "title") {
// setTitle(value);
// } else if (e.target.name === "content") {
// setContent(value);
// setInputCount(value.length);
// } else if (e.target.name === "tags") {
// const tagArray = value
// .split("#")
// .map((tag) => tag.trim())
// .filter((tag) => tag !== "");
// setTags(tagArray);
// }
};

return (
<Container>
<div className="postBox">
<div className="btnBox">
<StartBtn isVisible={true}>
<div className="startBtn">
<p className="start">์ €์žฅ</p>
</div>
</StartBtn>
</div>

<div className="posting">
<p className="postTitle">ํ…Œ๋งˆ ์ด๋ฆ„</p>
<input
name="themeName"
placeholder="๋ฐฉํƒˆ์ถœ ์ง€์ ๊ณผ ํ…Œ๋งˆ ์ด๋ฆ„"
onChange={onInputHandler}
className="postThemeTitle"
></input>
</div>
<div className="posting">
<p className="postTitle">์„ฑ๊ณต ์—ฌ๋ถ€</p>
<select>
<option value="success">์„ฑ๊ณต</option>
<option value="fail">์‹คํŒจ</option>
</select>
</div>
<div className="posting">
<p className="postTitle">์ธ์› ์ˆ˜</p>
<input
type="number"
name="themeName"
placeholder="ํ”Œ๋ ˆ์ด ์ธ์›"
onChange={onInputHandler}
className="postTagsBox"
></input>
</div>
<div className="posting">
<p className="postTitle">ํžŒํŠธ ์‚ฌ์šฉ</p>
<input
type="number"
name="themeName"
placeholder="ํžŒํŠธ ์‚ฌ์šฉ ๊ฐœ์ˆ˜"
onChange={onInputHandler}
className="postTagsBox"
></input>
</div>
<div className="posting">
<p className="postTitle">๋‚จ์€ ์‹œ๊ฐ„</p>
<input
name="themeName"
placeholder="๋‚จ์€ ์‹œ๊ฐ„ (ํƒˆ์ถœ ์„ฑ๊ณต์‹œ)"
onChange={onInputHandler}
className="postTagsBox"
></input>
</div>
<div className="posting">
<p className="postTitle">ํ•œ ์ค„ ๋ฆฌ๋ทฐ</p>
<textarea
name="content"
placeholder="๋‚ด์šฉ์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”"
onChange={onInputHandler}
maxLength={2000}
className="postContent"
></textarea>
</div>
</div>
</Container>
);
};
export default PostReview;
68 changes: 68 additions & 0 deletions src/pages/ReadReview.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
import React, { useEffect, useState, KeyboardEvent, ChangeEvent } from "react";
import { Container, StartBtn } from "../styles/ReadReviewStyled";

const PostReview = () => {
const onInputHandler = (
e: ChangeEvent<HTMLTextAreaElement | HTMLInputElement>
) => {
// const value = e.target.value.trim(); // ์ž…๋ ฅ๊ฐ’ ์•ž๋’ค ๊ณต๋ฐฑ ์ œ๊ฑฐ
// if (e.target.name === "title") {
// setTitle(value);
// } else if (e.target.name === "content") {
// setContent(value);
// setInputCount(value.length);
// } else if (e.target.name === "tags") {
// const tagArray = value
// .split("#")
// .map((tag) => tag.trim())
// .filter((tag) => tag !== "");
// setTags(tagArray);
// }
};

return (
<Container>
<div className="postBox">
<div className="btnBox">
<StartBtn isVisible={true}>
<div className="startBtn">
<p className="start">์ˆ˜์ •</p>
</div>
</StartBtn>

<StartBtn isVisible={true}>
<div className="startBtn">
<p className="start">์‚ญ์ œ</p>
</div>
</StartBtn>
</div>

<div className="posting">
<p className="postTitle">ํ…Œ๋งˆ ์ด๋ฆ„</p>
<p className="read">ํ…Œ๋งˆ ์ด๋ฆ„</p>
</div>
<div className="posting">
<p className="postTitle">์„ฑ๊ณต ์—ฌ๋ถ€</p>
<p className="read">์„ฑ๊ณต</p>
</div>
<div className="posting">
<p className="postTitle">์ธ์› ์ˆ˜</p>
<p className="read">0 ๋ช…</p>
</div>
<div className="posting">
<p className="postTitle">ํžŒํŠธ ์‚ฌ์šฉ</p>
<p className="read">4 ๊ฐœ</p>
</div>
<div className="posting">
<p className="postTitle">๋‚จ์€ ์‹œ๊ฐ„</p>
<p className="read">1 ๋ถ„</p>
</div>
<div className="posting">
<p className="postTitle">ํ•œ ์ค„ ๋ฆฌ๋ทฐ</p>
<p className="read">์žฌ๋ฏธ์žˆ์–ด์š”.</p>
</div>
</div>
</Container>
);
};
export default PostReview;
Loading

0 comments on commit 13c119e

Please sign in to comment.