Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
212c169
Merge pull request #1 from GDGoCINHA/develop
CSE-Shaco Nov 5, 2025
849eccf
fix(member-manager): 오거나이저 팀 설정 반영
CSE-Shaco Nov 5, 2025
44bbc40
Merge branch 'develop' of github.com:CSE-Shaco/24-2_GDGoC_Web into de…
CSE-Shaco Nov 5, 2025
958f649
Merge pull request #196 from CSE-Shaco/develop
CSE-Shaco Nov 5, 2025
23ad9fe
fix(core-attendance): csv 다운로드 버튼 추가
CSE-Shaco Nov 5, 2025
9c95d63
Merge pull request #197 from CSE-Shaco/develop
CSE-Shaco Nov 5, 2025
173ac92
feat(manito): 마니또 기능 추가
CSE-Shaco Nov 27, 2025
17939cd
Merge pull request #198 from CSE-Shaco/develop
CSE-Shaco Nov 27, 2025
f7ef596
fix(manito): request 직렬화 문제 해결
CSE-Shaco Nov 27, 2025
f78677a
Merge pull request #199 from CSE-Shaco/develop
CSE-Shaco Nov 27, 2025
2b3ea32
fix(manito): request 직렬화 문제 해결
CSE-Shaco Nov 27, 2025
714065f
Merge pull request #200 from CSE-Shaco/develop
CSE-Shaco Nov 27, 2025
45b403f
fix(manito): csv 업로드 문제 해결
CSE-Shaco Nov 27, 2025
638ee0b
Merge pull request #201 from CSE-Shaco/develop
CSE-Shaco Nov 27, 2025
6545afa
fix(manito): api 호출 오류 해결
CSE-Shaco Nov 29, 2025
fc456ff
Merge pull request #202 from CSE-Shaco/develop
CSE-Shaco Nov 29, 2025
3227254
fix(manito): 복호화 로직 추가
CSE-Shaco Nov 29, 2025
e18af30
fix(manito): 문자열 매핑 문제 해결
CSE-Shaco Nov 29, 2025
3c5af67
Merge pull request #203 from CSE-Shaco/develop
CSE-Shaco Nov 29, 2025
4ba0a3d
fix(manito): ui/ux 개선
CSE-Shaco Nov 29, 2025
10e55b6
Merge pull request #204 from CSE-Shaco/develop
CSE-Shaco Nov 29, 2025
b5de487
fix(manito): UI/UX 개선에 따른 변경사항 반영
CSE-Shaco Nov 29, 2025
e7d506f
Merge pull request #205 from CSE-Shaco/develop
CSE-Shaco Nov 29, 2025
3aa28a9
fix(manito): typo 수정
CSE-Shaco Nov 29, 2025
104c3ba
Merge pull request #206 from CSE-Shaco/develop
CSE-Shaco Nov 29, 2025
769211f
Chore: Add Google Maps API dependencies and update lockfiles
CSE-Shaco Dec 8, 2025
501de57
Feat(homecoming): Add Homecoming feature pages and assets
CSE-Shaco Dec 8, 2025
2f8dd6b
Merge pull request #207 from CSE-Shaco/develop
CSE-Shaco Dec 8, 2025
c5bf0f6
fix(homecoming): 구글맵 internal error 해결
CSE-Shaco Dec 8, 2025
3137ee1
Merge pull request #208 from CSE-Shaco/develop
CSE-Shaco Dec 8, 2025
d7fc2c2
fix(homecoming): 구글맵 internal error 해결
CSE-Shaco Dec 8, 2025
fd07779
Merge pull request #209 from CSE-Shaco/develop
CSE-Shaco Dec 8, 2025
66741c7
fix(homecoming): google map api 호출 문제 해결
CSE-Shaco Dec 8, 2025
d041cd4
Merge pull request #210 from CSE-Shaco/develop
CSE-Shaco Dec 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 77 additions & 1 deletion package-lock.json

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

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
"@heroui/system": "^2.4.7",
"@heroui/theme": "^2.4.6",
"@nextui-org/react": "^2.6.11",
"@react-google-maps/api": "^2.20.7",
"@splidejs/react-splide": "^0.7.12",
"@splidejs/splide": "^4.1.4",
"@splidejs/splide-extension-auto-scroll": "^0.5.3",
Expand Down
Binary file added public/images/homecoming/bg.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/homecoming/main_img.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions src/app/admin/member-manager/page.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,11 @@ import AdminTableBottomContent from '@/components/admin/AdminTableBottomContent'

/** 백엔드 enum과 일치하는 값(전송용) */
const ROLE_OPTIONS = ['GUEST', 'MEMBER', 'CORE', 'LEAD', 'ORGANIZER', 'ADMIN'];
const TEAM_ENUM_VALUES = ['BD', 'HR', 'TECH', 'PR_DESIGN'];
const TEAM_ENUM_VALUES = ['BD', 'HR', 'TECH', 'PR_DESIGN', 'HQ'];

/** 화면 표시용 라벨 */
const TEAM_LABEL = {
BD: 'BD', HR: 'HR', TECH: 'TECH', PR_DESIGN: 'PR/DESIGN',
BD: 'BD', HR: 'HR', TECH: 'TECH', PR_DESIGN: 'PR/DESIGN', HQ: 'HQ',
};

const roleColor = (r) => ({
Expand Down
56 changes: 56 additions & 0 deletions src/app/core-attendance/page.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,32 @@ const setQS = (entries) => {
window.history.replaceState({}, '', u.toString());
};

// ===== CSV 저장 공통 헬퍼 =====
const saveResponseAsFile = (res, fallbackName) => {
// Excel 한글 깨짐 방지용 BOM
const BOM = new Uint8Array([0xEF, 0xBB, 0xBF]);
const blob = new Blob([BOM, res.data], { type: 'text/csv;charset=utf-8' });

// 서버가 파일명 내려주면 우선 사용
let filename = fallbackName;
const cd = res.headers && (res.headers['content-disposition'] || res.headers['Content-Disposition']);
if (cd) {
const m = /filename\*=UTF-8''([^;]+)|filename="?([^"]+)"?/i.exec(cd);
const decoded = m && decodeURIComponent((m[1] || m[2] || '').trim());
if (decoded) filename = decoded;
}

const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = filename;
document.body.appendChild(a);
a.click();
a.remove();
URL.revokeObjectURL(url);
};


export default function AttendancePage() {
const {apiClient} = useAuthenticatedApi();

Expand Down Expand Up @@ -49,6 +75,17 @@ export default function AttendancePage() {
})).data.data,

summary: async (d) => (await apiClient.get(`/core-attendance/meetings/${d}/summary`)).data.data,

downloadSummaryCsvForDateAndSave: async (d) => {
const res = await apiClient.get(`/core-attendance/meetings/${d}/summary.csv`, { responseType: 'blob' });
saveResponseAsFile(res, `attendance-${d}.csv`);
},

downloadSummaryCsvAllAndSave: async () => {
const res = await apiClient.get('/core-attendance/meetings/summary.csv', { responseType: 'blob' });
saveResponseAsFile(res, 'attendance-summary.csv');
},

};

/** URL 동기화 */
Expand Down Expand Up @@ -366,6 +403,25 @@ export default function AttendancePage() {
<Card className="bg-default-100 dark:bg-default-50">
<CardBody className="gap-3 text-white">
<b>요약</b>
<Button
size="sm"
variant="flat"
color="primary"
onPress={() => api.downloadSummaryCsvForDateAndSave(date)}
isDisabled={!date}
>
날짜 CSV
</Button>

<Button
size="sm"
variant="flat"
color="secondary"
onPress={() => api.downloadSummaryCsvAllAndSave()}
>
전체 CSV
</Button>

{summary ? (<div className="text-sm">
<div className="mb-2">전체 {summary.present} / {summary.total}</div>
<Divider/>
Expand Down
15 changes: 15 additions & 0 deletions src/app/homecoming/layout.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { Suspense } from "react";
import Loader from '@/components/ui/common/Loader.jsx';

export const metadata = {
title: "Homecoming",
description: "GDGoC INHA 제1회 홈커밍 데이 행사 안내 및 참여 페이지",
};

export default function HomecomingLayout({ children }) {
return (
<Suspense fallback={ <Loader /> }>
{children}
</Suspense>
);
}
Loading