mirror of
https://github.com/hwanny1128/HGZero.git
synced 2025-12-06 13:46:24 +00:00
회의진행 화면내 녹음재개 기능 추가
This commit is contained in:
parent
ca78f9bc5a
commit
1e67bb5ad9
6
.gitignore
vendored
6
.gitignore
vendored
@ -43,6 +43,8 @@ examples/
|
|||||||
.claude/settings.local.json
|
.claude/settings.local.json
|
||||||
|
|
||||||
# Backup files
|
# Backup files
|
||||||
design/*/*backup.md
|
design/*/*/*backup.*
|
||||||
design/*backup.md
|
design/*/*backup.*
|
||||||
|
design/*backup.m*
|
||||||
backup/
|
backup/
|
||||||
|
.vscode/settings.json
|
||||||
|
|||||||
@ -94,6 +94,11 @@
|
|||||||
50% { opacity: 0.3; }
|
50% { opacity: 0.3; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.recording-indicator.paused .recording-dot,
|
||||||
|
.recording-indicator.paused .waveform-bar {
|
||||||
|
animation-play-state: paused;
|
||||||
|
}
|
||||||
|
|
||||||
.recording-time {
|
.recording-time {
|
||||||
font-size: var(--font-small);
|
font-size: var(--font-small);
|
||||||
font-weight: var(--font-weight-medium);
|
font-weight: var(--font-weight-medium);
|
||||||
@ -593,6 +598,11 @@
|
|||||||
height: 32px;
|
height: 32px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.rec-icon {
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
.end-meeting-btn {
|
.end-meeting-btn {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
font-size: var(--font-body);
|
font-size: var(--font-body);
|
||||||
@ -609,7 +619,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="recording-status-bar">
|
<div class="recording-status-bar">
|
||||||
<div class="recording-indicator">
|
<div class="recording-indicator" id="recordingIndicator">
|
||||||
<span class="recording-dot"></span>
|
<span class="recording-dot"></span>
|
||||||
<span class="recording-time" id="recordingTime">00:15:51</span>
|
<span class="recording-time" id="recordingTime">00:15:51</span>
|
||||||
<div class="waveform">
|
<div class="waveform">
|
||||||
@ -990,11 +1000,12 @@
|
|||||||
|
|
||||||
<!-- 하단 고정 버튼 영역 -->
|
<!-- 하단 고정 버튼 영역 -->
|
||||||
<div class="bottom-action-bar">
|
<div class="bottom-action-bar">
|
||||||
<button class="btn btn-ghost pause-btn" onclick="pauseRecording()" id="pauseBtn">
|
<button class="btn btn-ghost pause-btn" onclick="toggleRecording()" id="pauseBtn">
|
||||||
<svg class="pause-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
<svg class="pause-icon" id="pauseIcon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
||||||
<rect x="6" y="4" width="4" height="16" rx="1"></rect>
|
<rect x="6" y="4" width="4" height="16" rx="1"></rect>
|
||||||
<rect x="14" y="4" width="4" height="16" rx="1"></rect>
|
<rect x="14" y="4" width="4" height="16" rx="1"></rect>
|
||||||
</svg>
|
</svg>
|
||||||
|
<img class="rec-icon" id="recIcon" src="img/rec.png" alt="녹음 재개" style="display: none;">
|
||||||
</button>
|
</button>
|
||||||
<button class="btn btn-error end-meeting-btn" onclick="endMeeting()">
|
<button class="btn btn-error end-meeting-btn" onclick="endMeeting()">
|
||||||
회의 종료
|
회의 종료
|
||||||
@ -1179,9 +1190,42 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// 녹음 일시정지
|
// 녹음 상태 관리
|
||||||
function pauseRecording() {
|
let isRecording = true;
|
||||||
alert('녹음이 일시정지되었습니다');
|
let timerInterval = null;
|
||||||
|
|
||||||
|
// 녹음 일시정지/재개 토글
|
||||||
|
function toggleRecording() {
|
||||||
|
const pauseIcon = document.getElementById('pauseIcon');
|
||||||
|
const recIcon = document.getElementById('recIcon');
|
||||||
|
const recordingIndicator = document.getElementById('recordingIndicator');
|
||||||
|
|
||||||
|
if (isRecording) {
|
||||||
|
// 일시정지
|
||||||
|
isRecording = false;
|
||||||
|
pauseIcon.style.display = 'none';
|
||||||
|
recIcon.style.display = 'block';
|
||||||
|
recordingIndicator.classList.add('paused');
|
||||||
|
|
||||||
|
// 타이머 정지
|
||||||
|
if (timerInterval) {
|
||||||
|
clearInterval(timerInterval);
|
||||||
|
timerInterval = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
alert('녹음이 일시정지되었습니다');
|
||||||
|
} else {
|
||||||
|
// 재개
|
||||||
|
isRecording = true;
|
||||||
|
pauseIcon.style.display = 'block';
|
||||||
|
recIcon.style.display = 'none';
|
||||||
|
recordingIndicator.classList.remove('paused');
|
||||||
|
|
||||||
|
// 타이머 재시작
|
||||||
|
startTimer();
|
||||||
|
|
||||||
|
alert('녹음이 재개되었습니다');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 회의 종료
|
// 회의 종료
|
||||||
@ -1195,14 +1239,22 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 타이머 업데이트
|
// 타이머 시작 함수
|
||||||
function updateTimer() {
|
function startTimer() {
|
||||||
const timerElement = document.getElementById('recordingTime');
|
const timerElement = document.getElementById('recordingTime');
|
||||||
let seconds = 51;
|
|
||||||
let minutes = 15;
|
|
||||||
let hours = 0;
|
|
||||||
|
|
||||||
setInterval(() => {
|
// 이미 타이머가 실행 중이면 중복 실행 방지
|
||||||
|
if (timerInterval) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
timerInterval = setInterval(() => {
|
||||||
|
// 현재 시간을 파싱
|
||||||
|
const currentTime = timerElement.textContent.split(':');
|
||||||
|
let hours = parseInt(currentTime[0]);
|
||||||
|
let minutes = parseInt(currentTime[1]);
|
||||||
|
let seconds = parseInt(currentTime[2]);
|
||||||
|
|
||||||
seconds++;
|
seconds++;
|
||||||
if (seconds === 60) {
|
if (seconds === 60) {
|
||||||
seconds = 0;
|
seconds = 0;
|
||||||
@ -1222,6 +1274,11 @@
|
|||||||
}, 1000);
|
}, 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 타이머 초기화 함수
|
||||||
|
function updateTimer() {
|
||||||
|
startTimer();
|
||||||
|
}
|
||||||
|
|
||||||
// 관련 회의록 열기
|
// 관련 회의록 열기
|
||||||
function openRelatedDoc(docId) {
|
function openRelatedDoc(docId) {
|
||||||
// 새 탭으로 회의록 상세조회 화면 열기
|
// 새 탭으로 회의록 상세조회 화면 열기
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user