mirror of
https://github.com/hwanny1128/HGZero.git
synced 2025-12-06 13: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 {
|
.meeting-grid {
|
||||||
display: grid;
|
display: grid;
|
||||||
gap: var(--space-md);
|
gap: var(--space-md);
|
||||||
@ -168,12 +169,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (min-width: 1440px) {
|
|
||||||
.meeting-grid {
|
|
||||||
grid-template-columns: repeat(4, 1fr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.meeting-card {
|
.meeting-card {
|
||||||
background: var(--white);
|
background: var(--white);
|
||||||
border-radius: var(--radius-lg);
|
border-radius: var(--radius-lg);
|
||||||
@ -689,8 +684,17 @@
|
|||||||
const statusInfo = getMeetingStatusInfo(meeting);
|
const statusInfo = getMeetingStatusInfo(meeting);
|
||||||
const isCreator = meeting.participants.some(p => p.id === currentUser.id && p.role === 'creator');
|
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 `
|
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">
|
<div class="meeting-card-header">
|
||||||
${createBadge(statusInfo.badgeText, statusInfo.badgeType)}
|
${createBadge(statusInfo.badgeText, statusInfo.badgeType)}
|
||||||
<h3 class="meeting-card-title">${meeting.title}${isCreator ? ' <span style="font-size: 16px;" title="생성자">👑</span>' : ''}</h3>
|
<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">📅 ${formatDate(meeting.date)} ${formatTime(meeting.time)} 👥 ${meeting.participants.length}명</div>
|
||||||
<div class="meeting-card-meta-item">📍 ${meeting.location}</div>
|
<div class="meeting-card-meta-item">📍 ${meeting.location}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="meeting-card-actions">
|
${actionButton ? `<div class="meeting-card-actions">${actionButton}</div>` : ''}
|
||||||
${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>
|
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
}).join('');
|
}).join('');
|
||||||
@ -716,12 +713,14 @@
|
|||||||
card.addEventListener('click', (e) => {
|
card.addEventListener('click', (e) => {
|
||||||
if (e.target.tagName !== 'BUTTON') {
|
if (e.target.tagName !== 'BUTTON') {
|
||||||
const meetingId = card.dataset.id;
|
const meetingId = card.dataset.id;
|
||||||
const meeting = SAMPLE_MEETINGS.find(m => m.id === meetingId);
|
const meetingStatus = card.dataset.status;
|
||||||
if (meeting.status === 'ongoing') {
|
|
||||||
|
// 상태에 따른 이동 처리
|
||||||
|
if (meetingStatus === 'ongoing') {
|
||||||
navigateTo('05-회의진행.html');
|
navigateTo('05-회의진행.html');
|
||||||
} else if (meeting.status === 'completed') {
|
} else if (meetingStatus === 'draft' || meetingStatus === 'complete' || meetingStatus === 'completed') {
|
||||||
navigateTo('10-회의록상세조회.html');
|
navigateTo('10-회의록상세조회.html');
|
||||||
} else {
|
} else if (meetingStatus === 'scheduled') {
|
||||||
navigateTo('03-회의예약.html');
|
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',
|
time: '14:00',
|
||||||
duration: 90,
|
duration: 90,
|
||||||
location: '본사 2층 대회의실',
|
location: '본사 2층 대회의실',
|
||||||
status: 'scheduled', // ongoing, scheduled, completed
|
status: 'draft', // ongoing, scheduled, completed, draft(작성중), complete(확정완료)
|
||||||
participants: [
|
participants: [
|
||||||
{ id: 'user-001', name: '김민준', avatar: '김', avatarColor: 'green' },
|
{ id: 'user-001', name: '김민준', avatar: '김', avatarColor: 'green' },
|
||||||
{ id: 'user-002', name: '박서연', avatar: '박', avatarColor: 'blue' },
|
{ id: 'user-002', name: '박서연', avatar: '박', avatarColor: 'blue' },
|
||||||
@ -39,7 +39,8 @@ const SAMPLE_MEETINGS = [
|
|||||||
{ id: 'user-004', name: '최유진', avatar: '최', avatarColor: 'pink' }
|
{ id: 'user-004', name: '최유진', avatar: '최', avatarColor: 'pink' }
|
||||||
],
|
],
|
||||||
sections: 3,
|
sections: 3,
|
||||||
todos: 5
|
todos: 5,
|
||||||
|
minutesId: 'minutes-001' // 회의록 ID 연결
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 'meeting-002',
|
id: 'meeting-002',
|
||||||
@ -1083,6 +1084,12 @@ function getMeetingStatusInfo(meeting) {
|
|||||||
if (meeting.status === 'ongoing') {
|
if (meeting.status === 'ongoing') {
|
||||||
return { badgeType: 'ongoing', badgeText: '진행중' };
|
return { badgeType: 'ongoing', badgeText: '진행중' };
|
||||||
}
|
}
|
||||||
|
if (meeting.status === 'draft') {
|
||||||
|
return { badgeType: 'draft', badgeText: '작성중' };
|
||||||
|
}
|
||||||
|
if (meeting.status === 'complete') {
|
||||||
|
return { badgeType: 'complete', badgeText: '확정완료' };
|
||||||
|
}
|
||||||
if (meeting.status === 'completed') {
|
if (meeting.status === 'completed') {
|
||||||
return { badgeType: 'complete', badgeText: '확정완료' };
|
return { badgeType: 'complete', badgeText: '확정완료' };
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user