Skip to content

Commit e99996f

Browse files
committed
Merge branch 'main' into develop
2 parents bc6034e + 75004f5 commit e99996f

File tree

6 files changed

+161
-7
lines changed

6 files changed

+161
-7
lines changed

package.json

+3
Original file line numberDiff line numberDiff line change
@@ -55,5 +55,8 @@
5555
"http-proxy-middleware": "^2.0.6",
5656
"kakao.maps.d.ts": "^0.1.39",
5757
"tailwindcss": "^3.3.3"
58+
},
59+
60+
"proxy": "http://172.16.20.209:8080/"
5861
}
5962
}

src/App.js

+3-4
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ import CropListComponent from './components/Dictionary/CropListComponent';
1414
import MapComponent from './components/Map/MapComponent';
1515
import ForcastPage from './pages/Forcast/ForcastPage';
1616
import DetailComponent from './components/Dictionary/DetailComponent';
17-
import Test from './test.js'
18-
import Test2 from './test2.js'
17+
import MonthPage from './pages/test';
18+
import HistoryPage from './pages/HistoryPage/HistoryPage';
1919

2020
function App() {
2121

@@ -81,8 +81,7 @@ function App() {
8181
<Route path = "/declaration" Component = {DeclarationPage} />
8282
<Route path = "/location" Component = {LocationSettingComponent} />
8383
<Route path = "/detail" Component = {DetailComponent} />
84-
<Route path = "/test" Component= {Test}></Route>
85-
<Route path = "/test2" Component= {Test2}></Route>
84+
<Route path = "/history" Component = {HistoryPage} />
8685
</Routes>
8786
</div>
8887
);

src/components/MyPage/AccountComponent.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React, { useState } from "react";
2-
2+
import {Link} from 'react-router-dom'
33

44
const AccountComponent = () => {
55
return(
@@ -15,7 +15,7 @@ const AccountComponent = () => {
1515
{/**왼쪽에 이미지 + 글 */}
1616
<div className = "w-24 h-full flex items-center justify-between">
1717
<img src = "https://img.icons8.com/?size=512&id=44020&format=png" className = "h-8 w-8"/>
18-
<div className = "font-semibold text-gray-500">신고내역</div>
18+
<Link to='/history' className = "font-semibold text-gray-500">신고내역</Link>
1919
</div>
2020
{/**오른쪽 꺽쇠 svg */}
2121
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5">

src/config/config.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
const config = {
2-
baseURL: 'http://ec2-54-180-99-185.ap-northeast-2.compute.amazonaws.com:8080',
2+
//aseURL: 'http://ec2-54-180-99-185.ap-northeast-2.compute.amazonaws.com:8080',
3+
aseURL : '172.16.20.209:8080'
34
};
45

56
export default config;

src/config/history.json

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
[
2+
{
3+
"crop" : "tomato",
4+
"disease" : "disease1",
5+
"symptoms" : "ㅋㅌㅊㅋㅌㅊㅋㅌㅊ",
6+
"address" : "서울 광진구 군자동 98"
7+
},
8+
{
9+
"crop" : "cucumber",
10+
"disease" : "disease4",
11+
"symptoms" : "병해",
12+
"address":
13+
"서울 광진구 군자동 98"
14+
}
15+
]

src/pages/HistoryPage/HistoryPage.js

+136
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
import React, { useEffect, useState } from 'react';
2+
import HistoryData from '../../config/history.json';
3+
import MoveBackComponent from '../../components/common/MoveBackComponent';
4+
5+
const ConfirmationModal = ({ isOpen, onClose, onConfirm }) => {
6+
if (!isOpen) return null;
7+
8+
return (
9+
<div className="modal">
10+
<div className="h-32 bg-white rounded-2xl flex flex-col p-4 justify-between">
11+
<div>신고 내역을 삭제하시겠습니까?</div>
12+
<div className = "flex justify-around px-2">
13+
<button onClick={onConfirm} className="w-20 rounded-xl border border-black"></button>
14+
<button onClick={onClose} className="w-20 rounded-xl border border-black">아니요</button>
15+
</div>
16+
</div>
17+
</div>
18+
);
19+
};
20+
21+
const Pagination = ({ reportsPerPage, totalReports, paginate }) => {
22+
const pageNumbers = [];
23+
for (let i = 1; i <= Math.ceil(totalReports / reportsPerPage); i++) {
24+
pageNumbers.push(i);
25+
}
26+
27+
return (
28+
<nav>
29+
<ul className='pagination'>
30+
{pageNumbers.map(number => (
31+
<li key={number} className='page-item'>
32+
</li>
33+
))}
34+
</ul>
35+
</nav>
36+
);
37+
};
38+
39+
const HistoryPage = () => {
40+
const [reports, setReports] = useState([]);
41+
const [editIndex, setEditIndex] = useState(null);
42+
const [isModalOpen, setIsModalOpen] = useState(false);
43+
const [deletingIndex, setDeletingIndex] = useState(null);
44+
const [currentPage, setCurrentPage] = useState(1);
45+
const [reportsPerPage] = useState(5);
46+
47+
useEffect(() => {
48+
setReports(HistoryData);
49+
}, []);
50+
51+
const openDeleteModal = (index) => {
52+
setIsModalOpen(true);
53+
setDeletingIndex(index);
54+
};
55+
56+
const closeDeleteModal = () => {
57+
setIsModalOpen(false);
58+
setDeletingIndex(null);
59+
};
60+
61+
const confirmDelete = () => {
62+
const updatedReports = reports.filter((_, idx) => idx !== deletingIndex);
63+
setReports(updatedReports);
64+
localStorage.setItem('reports', JSON.stringify(updatedReports));
65+
closeDeleteModal();
66+
};
67+
68+
const handleSymptomsChange = (e, index) => {
69+
const updatedReports = [...reports];
70+
updatedReports[index].symptoms = e.target.value;
71+
setReports(updatedReports);
72+
};
73+
74+
const saveEditedReport = () => {
75+
localStorage.setItem('reports', JSON.stringify(reports));
76+
setEditIndex(null);
77+
};
78+
79+
const paginate = pageNumber => setCurrentPage(pageNumber);
80+
81+
82+
83+
return (
84+
<>
85+
<MoveBackComponent/>
86+
<div className="p-4">
87+
<h1 className="w-full h-12 flex justify-center items-start font-semibold text-2xl">신고 내역 조회</h1>
88+
{reports.slice((currentPage - 1) * reportsPerPage, currentPage * reportsPerPage).map((report, index) => (
89+
<div key={index} className={`bg-white w-full h-44 rounded-xl mt-2 p-3 drop-shadow-md ... ${editIndex === index ? 'editing' : ''}`}>
90+
<div className="report-item-content">
91+
{/* Display details here */}
92+
<div>작물: {report.crop}</div>
93+
<div>병해: {report.disease}</div>
94+
{editIndex === index ? (
95+
<textarea
96+
className="edit-input"
97+
value={report.symptoms}
98+
onChange={(e) => handleSymptomsChange(e, index)}
99+
/>
100+
) : (
101+
<div>증상: {report.symptoms}</div>
102+
)}
103+
<div>주소: {report.address}</div>
104+
<div>날짜: {report.date}</div>
105+
</div>
106+
<div className="report-item-controls">
107+
{editIndex === index ? (
108+
<button onClick={() => saveEditedReport(index)} className="save-button">저장</button>
109+
) : (
110+
<></>
111+
)}
112+
<button onClick={() => openDeleteModal(index)} className="w-full flex justify-end">
113+
<div class="bg-gray-200 w-20 h-8 rounded-lg flex justify-center items-center">
114+
<div class="font-semibold text-gray-500">삭제하기</div>
115+
</div>
116+
</button>
117+
</div>
118+
</div>
119+
))}
120+
<Pagination
121+
reportsPerPage={reportsPerPage}
122+
totalReports={reports.length}
123+
paginate={paginate}
124+
/>
125+
<ConfirmationModal
126+
isOpen={isModalOpen}
127+
onClose={closeDeleteModal}
128+
onConfirm={() => confirmDelete(deletingIndex)}
129+
/>
130+
</div>
131+
</>
132+
);
133+
};
134+
135+
export default HistoryPage;
136+

0 commit comments

Comments
 (0)