방선주 방선주 2023-02-24
230224 방선주 사용자 페이지 페이징 작업
@2775f6042ea3050b047e7ac45d4d75aa8c916d0e
 
client/views/component/Pagination.jsx (added)
+++ client/views/component/Pagination.jsx
@@ -0,0 +1,26 @@
+import React from "react";
+import styled from "styled-components";
+
+export default function Pagination({ total, limit, page, setPage }) {
+    const numPages = Math.ceil(total / limit);
+
+    return (
+        <>
+            <Paging>
+                <button onClick={() => setPage(page - 1)} disabled={page === 1}>&lt;</button>
+                {Array(numPages).fill().map((_, i) => (
+                    <button key={i + 1} onClick={() => setPage(i + 1)} aria-current={page === i + 1 ? "page" : null}> {i + 1} </button>
+                ))}
+                <button onClick={() => setPage(page + 1)} disabled={page === numPages}>&gt;</button>
+            </Paging>
+        </>
+    );
+}
+
+const Paging = styled.div`
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  gap: 4px;
+  margin: 16px;
+`;(No newline at end of file)
client/views/component/Table.jsx
--- client/views/component/Table.jsx
+++ client/views/component/Table.jsx
@@ -2,7 +2,7 @@
 import Button from "./Button.jsx";
 // import styled from "styled-components";
 
-export default function Table({ head, contents, contentKey, onClick, className, page}) {
+export default function Table({ head, contents, contentKey, onClick, className, view, offset, limit}) {
   const [modalOpen, setModalOpen] = React.useState(false);
   const openModal = () => {
     setModalOpen(true);
@@ -15,7 +15,7 @@
   
 
   const buttonPrint = () => {
-    if(page == 'mySenior'){
+    if(view == 'mySenior'){
       return(
       <td>
         <Button
@@ -25,7 +25,7 @@
         />
       </td>)
     }
-    else if(page == 'allSenior'){
+    else if(view == 'allSenior'){
       return(
         <>
           <td>
@@ -57,7 +57,7 @@
         </tr>
       </thead>
       <tbody>
-        {contents.map((i, index) => {
+        {contents.slice(offset, offset + limit).map((i, index) => {
           return (
             <tr key={index}>
             {/* //   <td>{i.rn}</td>
client/views/pages/user_management/UserAuthoriySelect_agency.jsx
--- client/views/pages/user_management/UserAuthoriySelect_agency.jsx
+++ client/views/pages/user_management/UserAuthoriySelect_agency.jsx
@@ -4,15 +4,24 @@
 import SubTitle from "../../component/SubTitle.jsx";
 import Modal from "../../component/Modal.jsx";
 import { useNavigate } from "react-router";
+import Pagination from "../../component/Pagination.jsx";
 
 export default function UserAuthoriySelect_agency() {
   // 화면 진입 시 탭 별 노출될ㄹ 리스트 초기화 
   const [subjectList, setSubjectList] = React.useState([]);
   const [subjectMyList, setSubjectMyList] = React.useState([]);
+  
+
+  //페이징 작업
+  const limit = 10; // 페이지당 보여줄 공지 개수
+  const [page, setPage] = React.useState(1); //page index
+  const offset = (page - 1) * limit; //게시물 위치 계산
+  const [myUserTotal, setMyUserTotal] = React.useState(0); //최대길이 넣을 변수
+  const [userTotal, setUserTotal] = React.useState(0); //최대길이 넣을 변수
 
   // ------ 등록 버튼 클릭 시 노출되는 모달 데이터 ------//
+
   // 사용자 등록 시 초기값 세팅
-  
   const [userName, setUserName] = React.useState("");
   const [gender, setGender] = React.useState("");
   const [brith, setBrith] = React.useState("");
@@ -39,9 +48,7 @@
   }
   // 변경되는 데이터 Handler
   const handleUserName = (e) => {
-
     setUserName(e.target.value);
-
   };
   const handleGender = (e) => {
     setGender(e.target.value);
@@ -80,6 +87,8 @@
       alert("등록 되었습니다.");
       dataReset();
       closeModal3();
+      getSelectSubjectList();
+      getSelectMySubjectList();
     } else {
       return;
     }
@@ -93,14 +102,14 @@
         'Content-Type': 'application/json; charset=UTF-8'
       },
       body: JSON.stringify({
-        userName: userName,
-        gender: gender,
-        brith: brith,
-        userTel: telNum,
-        homeAddress: homeAddress,
-        agancyId: 'agency1',
-        govId: 'government1',
-        userCode: '4'
+        user_name: userName,
+        user_gender: gender,
+        user_birth: brith,
+        user_phonenumber: telNum,
+        user_address: homeAddress,
+        agency_id: 'agency1',
+        government_id: 'government1',
+        user_code: '4'
       }),
     }).then((response) => response.json()).then((data) => {
       console.log("대상자 정보 등록");
@@ -117,12 +126,12 @@
         'Content-Type': 'application/json; charset=UTF-8'
       },
       body: JSON.stringify({
-        userTel: telNum,
-        medicineM: medicineM,
-        medicineL: medicineL,
-        medicineD: medicineD,
-        medication: medication,
-        note: note,
+        user_phonenumber: telNum,
+        breakfast_medication_check: medicineM,
+        lunch_medication_check: medicineL,
+        dinner_medication_check: medicineD,
+        medication_pill: medication,
+        senior_note: note,
       }),
     }).then((response) => response.json()).then((data) => {
       console.log("약 정보 등록");
@@ -130,7 +139,7 @@
       console.log('InsertUserPillData() /user/insertSeniorMadication.json error : ', error);
     });
   };
-
+ //select 
   const getSelectSubjectList = () => {
     fetch("/user/selectUserList.json", {
       method: "POST",
@@ -138,13 +147,13 @@
         'Content-Type': 'application/json; charset=UTF-8'
       },
       body: JSON.stringify({
-        userCode: '4',
+        user_code: '4',
       }),
     }).then((response) => response.json()).then((data) => {
       const rowData = data;
       console.log(data);
       setSubjectList(rowData)
-
+      setUserTotal(rowData.length)
     }).catch((error) => {
       console.log('getSelectSubjectList() /user/selectUserList.json error : ', error);
     });
@@ -157,13 +166,14 @@
         'Content-Type': 'application/json; charset=UTF-8'
       },
       body: JSON.stringify({
-        agancyId: 'agency1',
-        userCode: '4',
+        agency_id: 'agency1',
+        user_code: '4',
       }),
     }).then((response) => response.json()).then((data) => {
       const rowData = data;
       console.log(data);
       setSubjectMyList(rowData)
+      setMyUserTotal(rowData.length)
     }).catch((error) => {
       console.log('getSubjectMySelect() /user/selectMyUserList.json error : ', error);
     });
@@ -379,7 +389,9 @@
           head={thead1}
           contents={subjectMyList}
           contentKey={key1}
-          page={"mySenior"}
+          view={"mySenior"}
+          offset={offset}
+          limit={limit}
         />
       ),
     },
@@ -392,7 +404,9 @@
           head={thead2}
           contents={subjectList}
           contentKey={key2}
-          page={"allSenior"}
+          view={"allSenior"}
+          offset={offset}
+          limit={limit}
         />
       ),
     },
@@ -400,6 +414,7 @@
 
   const [index, setIndex] = React.useState(1);
 
+  
   React.useEffect(() => {
     getSelectSubjectList();
     getSelectMySubjectList();
@@ -629,6 +644,9 @@
                 <li>{item.description}</li>
               ))}
           </ul>
+          <div>
+            <Pagination total={data.id == 1 ? myUserTotal:userTotal} limit={limit} page={page} setPage={setPage} />
+          </div>
         </div>
       </div>
     </main>
Add a comment
List