mirror of
https://github.com/hwanny1128/HGZero.git
synced 2025-12-06 06:46:24 +00:00
대시보드 최근 회의 UI/UX 개선
주요 변경사항: 1. 최근 회의 그리드 레이아웃 3열로 제한 (가로 폭 완전히 채우도록 개선) 2. 최근 회의에 작성중/확정완료 상태 회의 표시 추가 3. 버튼 표시 규칙 개선: - 진행중: 참여하기 버튼 - 예정: 버튼 없음 (카드 클릭으로 수정 화면 이동) - 작성중/확정완료: 버튼 없음 (카드 클릭으로 상세조회 이동) 4. 샘플 데이터에 작성중 회의 추가 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
840037a690
commit
ccbee2a47f
@ -150,6 +150,7 @@
|
||||
}
|
||||
|
||||
/* 회의 카드 */
|
||||
/* 최근 회의는 최대 3개만 표시하므로 3열로 제한 */
|
||||
.meeting-grid {
|
||||
display: grid;
|
||||
gap: var(--space-md);
|
||||
@ -168,12 +169,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1440px) {
|
||||
.meeting-grid {
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
}
|
||||
}
|
||||
|
||||
.meeting-card {
|
||||
background: var(--white);
|
||||
border-radius: var(--radius-lg);
|
||||
@ -689,8 +684,17 @@
|
||||
const statusInfo = getMeetingStatusInfo(meeting);
|
||||
const isCreator = meeting.participants.some(p => p.id === currentUser.id && p.role === 'creator');
|
||||
|
||||
// 버튼 표시 규칙
|
||||
// - ongoing: 참여하기 버튼 표시
|
||||
// - scheduled: 버튼 없음 (카드 클릭으로 수정 화면 이동)
|
||||
// - draft/complete: 버튼 없음 (카드 클릭으로 상세조회 이동)
|
||||
let actionButton = '';
|
||||
if (meeting.status === 'ongoing') {
|
||||
actionButton = `<button class="btn btn-primary btn-sm" onclick="navigateTo('05-회의진행.html'); event.stopPropagation();">참여하기</button>`;
|
||||
}
|
||||
|
||||
return `
|
||||
<div class="meeting-card ${meeting.status === 'ongoing' ? 'ongoing' : ''}" data-id="${meeting.id}">
|
||||
<div class="meeting-card ${meeting.status === 'ongoing' ? 'ongoing' : ''}" data-id="${meeting.id}" data-status="${meeting.status}">
|
||||
<div class="meeting-card-header">
|
||||
${createBadge(statusInfo.badgeText, statusInfo.badgeType)}
|
||||
<h3 class="meeting-card-title">${meeting.title}${isCreator ? ' <span style="font-size: 16px;" title="생성자">👑</span>' : ''}</h3>
|
||||
@ -699,14 +703,7 @@
|
||||
<div class="meeting-card-meta-item">📅 ${formatDate(meeting.date)} ${formatTime(meeting.time)} 👥 ${meeting.participants.length}명</div>
|
||||
<div class="meeting-card-meta-item">📍 ${meeting.location}</div>
|
||||
</div>
|
||||
<div class="meeting-card-actions">
|
||||
${meeting.status === 'ongoing'
|
||||
? `<button class="btn btn-primary btn-sm" onclick="navigateTo('05-회의진행.html'); event.stopPropagation();">참여하기</button>`
|
||||
: meeting.status === 'scheduled' && isCreator
|
||||
? `<button class="btn btn-secondary btn-sm" onclick="navigateTo('03-회의예약.html'); event.stopPropagation();">수정</button>`
|
||||
: `<button class="btn btn-ghost btn-sm" onclick="navigateTo('10-회의록상세조회.html'); event.stopPropagation();">보기</button>`
|
||||
}
|
||||
</div>
|
||||
${actionButton ? `<div class="meeting-card-actions">${actionButton}</div>` : ''}
|
||||
</div>
|
||||
`;
|
||||
}).join('');
|
||||
@ -716,12 +713,14 @@
|
||||
card.addEventListener('click', (e) => {
|
||||
if (e.target.tagName !== 'BUTTON') {
|
||||
const meetingId = card.dataset.id;
|
||||
const meeting = SAMPLE_MEETINGS.find(m => m.id === meetingId);
|
||||
if (meeting.status === 'ongoing') {
|
||||
const meetingStatus = card.dataset.status;
|
||||
|
||||
// 상태에 따른 이동 처리
|
||||
if (meetingStatus === 'ongoing') {
|
||||
navigateTo('05-회의진행.html');
|
||||
} else if (meeting.status === 'completed') {
|
||||
} else if (meetingStatus === 'draft' || meetingStatus === 'complete' || meetingStatus === 'completed') {
|
||||
navigateTo('10-회의록상세조회.html');
|
||||
} else {
|
||||
} else if (meetingStatus === 'scheduled') {
|
||||
navigateTo('03-회의예약.html');
|
||||
}
|
||||
}
|
||||
|
||||
11
design/uiux/prototype/common.js
vendored
11
design/uiux/prototype/common.js
vendored
@ -31,7 +31,7 @@ const SAMPLE_MEETINGS = [
|
||||
time: '14:00',
|
||||
duration: 90,
|
||||
location: '본사 2층 대회의실',
|
||||
status: 'scheduled', // ongoing, scheduled, completed
|
||||
status: 'draft', // ongoing, scheduled, completed, draft(작성중), complete(확정완료)
|
||||
participants: [
|
||||
{ id: 'user-001', name: '김민준', avatar: '김', avatarColor: 'green' },
|
||||
{ id: 'user-002', name: '박서연', avatar: '박', avatarColor: 'blue' },
|
||||
@ -39,7 +39,8 @@ const SAMPLE_MEETINGS = [
|
||||
{ id: 'user-004', name: '최유진', avatar: '최', avatarColor: 'pink' }
|
||||
],
|
||||
sections: 3,
|
||||
todos: 5
|
||||
todos: 5,
|
||||
minutesId: 'minutes-001' // 회의록 ID 연결
|
||||
},
|
||||
{
|
||||
id: 'meeting-002',
|
||||
@ -1083,6 +1084,12 @@ function getMeetingStatusInfo(meeting) {
|
||||
if (meeting.status === 'ongoing') {
|
||||
return { badgeType: 'ongoing', badgeText: '진행중' };
|
||||
}
|
||||
if (meeting.status === 'draft') {
|
||||
return { badgeType: 'draft', badgeText: '작성중' };
|
||||
}
|
||||
if (meeting.status === 'complete') {
|
||||
return { badgeType: 'complete', badgeText: '확정완료' };
|
||||
}
|
||||
if (meeting.status === 'completed') {
|
||||
return { badgeType: 'complete', badgeText: '확정완료' };
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user