Click = seek only (no auto-play); Enter = play/pause from position
User feedback: 'naj ne začne takoj predvajati. naj začne ko pritisnem Enter, in pozicija naj ostane črta ker bomo tja dali tracker' Changes: - Click on waveform: just seek + render playhead (was: seek + auto-play) - Click on segment row: just seek + render playhead (was: seek + auto-play) - Playhead: brighter, with triangle marker on top (tracker placeholder) - Enter key: play/pause toggle from current position - Space key: also play/pause (back-compat) - Hint texts updated to reflect new workflow Workflow now: 1. Click on waveform/segment → playhead jumps there (no sound) 2. Read transcript, look at waveform around the position 3. Press Enter → plays from there 4. Press Enter again → pauses 5. Click somewhere else → playhead moves there (paused) 6. Press Enter → plays from new position Allows precise positioning before commit to playback.
This commit is contained in:
parent
1d6af29a23
commit
4376f7529f
@ -1062,7 +1062,7 @@
|
|||||||
<button class="small ghost zoom-btn" data-zoom="5" style="padding:3px 10px;">5x</button>
|
<button class="small ghost zoom-btn" data-zoom="5" style="padding:3px 10px;">5x</button>
|
||||||
<button class="small ghost zoom-btn" data-zoom="10" style="padding:3px 10px;">10x</button>
|
<button class="small ghost zoom-btn" data-zoom="10" style="padding:3px 10px;">10x</button>
|
||||||
<button class="small ghost zoom-btn" data-zoom="20" style="padding:3px 10px;">20x</button>
|
<button class="small ghost zoom-btn" data-zoom="20" style="padding:3px 10px;">20x</button>
|
||||||
<span style="margin-left:14px; font-size:11px; color:var(--muted);">Klik na valove = skoči + predvaja · Space = play/pause</span>
|
<span style="margin-left:14px; font-size:11px; color:var(--muted);">Klik = skoči (bel črtnik) · Enter = play/pause od pozicije</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Scrollable wrapper -->
|
<!-- Scrollable wrapper -->
|
||||||
@ -1085,8 +1085,11 @@
|
|||||||
<div style="width:4px; height:32px; background:#fff; border-radius:2px;"></div>
|
<div style="width:4px; height:32px; background:#fff; border-radius:2px;"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Playhead -->
|
<!-- Playhead (bel črtnik — "tracker") -->
|
||||||
<div id="trim-playhead" style="position:absolute; top:-4px; bottom:-4px; left:0%; width:3px; background:#fff; z-index:2; pointer-events:none; opacity:0.9; box-shadow:0 0 6px #fff;"></div>
|
<div id="trim-playhead" style="position:absolute; top:-6px; bottom:-6px; left:0%; width:2px; background:#fff; z-index:2; pointer-events:none; opacity:1; box-shadow:0 0 8px rgba(255,255,255,0.8);">
|
||||||
|
<!-- Trikotnik na vrhu -->
|
||||||
|
<div style="position:absolute; top:-2px; left:50%; transform:translateX(-50%); width:0; height:0; border-left:6px solid transparent; border-right:6px solid transparent; border-top:8px solid #fff;"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- Time labels -->
|
<!-- Time labels -->
|
||||||
<div style="position:absolute; bottom:4px; left:8px; font-size:11px; color:#fff; pointer-events:none; z-index:4; text-shadow:0 0 4px #000;">0:00</div>
|
<div style="position:absolute; bottom:4px; left:8px; font-size:11px; color:#fff; pointer-events:none; z-index:4; text-shadow:0 0 4px #000;">0:00</div>
|
||||||
@ -1096,7 +1099,7 @@
|
|||||||
|
|
||||||
<!-- Hint -->
|
<!-- Hint -->
|
||||||
<div style="font-size:11px; color:var(--muted); margin-top:6px; text-align:center;">
|
<div style="font-size:11px; color:var(--muted); margin-top:6px; text-align:center;">
|
||||||
← Povleci levi/desni rdeč ročaj · Klik na valove ali napise = skoči video
|
← Povleci rdeče ročaje · Klik na valove = skoči (bel črtnik) · Enter = play/pause od pozicije
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -1226,13 +1229,16 @@
|
|||||||
document.addEventListener("mouseup", onPointerUp);
|
document.addEventListener("mouseup", onPointerUp);
|
||||||
document.addEventListener("touchend", onPointerUp);
|
document.addEventListener("touchend", onPointerUp);
|
||||||
|
|
||||||
// Click anywhere on trim bar = seek + predvajaj OD TJE (ne od trim start)
|
// Click anywhere on trim bar = SAMO seek (NE predvajaj)
|
||||||
|
// Playhead skoči tja, počaka na Enter za predvajanje
|
||||||
trimBar.addEventListener("click", (e) => {
|
trimBar.addEventListener("click", (e) => {
|
||||||
if (e.target === handleL || e.target === handleR || handleL.contains(e.target) || handleR.contains(e.target)) return;
|
if (e.target === handleL || e.target === handleR || handleL.contains(e.target) || handleR.contains(e.target)) return;
|
||||||
const t = timeFromPx(e.clientX);
|
const t = timeFromPx(e.clientX);
|
||||||
if (video) {
|
if (video) {
|
||||||
|
// Ustavi predvajanje če teče (da ne moti)
|
||||||
|
if (!video.paused) video.pause();
|
||||||
video.currentTime = t;
|
video.currentTime = t;
|
||||||
video.play().catch(() => {});
|
renderPlayhead(); // takoj posodobi vizualno pozicijo
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -1272,23 +1278,26 @@
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// Space tipka = play/pause od trenutne pozicije (brez resetiranja na trim start)
|
// ENTER tipka = play/pause od trenutne pozicije (kjer je playhead)
|
||||||
const spaceHandler = (e) => {
|
// Space tudi (back-compat)
|
||||||
if (e.code === "Space" && e.target.tagName !== "INPUT" && e.target.tagName !== "TEXTAREA") {
|
const playPauseHandler = (e) => {
|
||||||
e.preventDefault();
|
const isPlayKey = e.code === "Enter" || e.code === "Space";
|
||||||
if (video) {
|
if (!isPlayKey) return;
|
||||||
if (video.paused) {
|
// Ne moti če uporabnik tipka v inputu/textarea
|
||||||
video.play().catch(() => {});
|
if (e.target.tagName === "INPUT" || e.target.tagName === "TEXTAREA") return;
|
||||||
} else {
|
e.preventDefault();
|
||||||
video.pause();
|
if (video) {
|
||||||
}
|
if (video.paused) {
|
||||||
|
video.play().catch(() => {});
|
||||||
|
} else {
|
||||||
|
video.pause();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
document.addEventListener("keydown", spaceHandler);
|
document.addEventListener("keydown", playPauseHandler);
|
||||||
// Cleanup ob zaprtju modala
|
// Cleanup ob zaprtju modala
|
||||||
overlay._cleanup = () => {
|
overlay._cleanup = () => {
|
||||||
document.removeEventListener("keydown", spaceHandler);
|
document.removeEventListener("keydown", playPauseHandler);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Update playhead during playback + re-render če videoDuration manjkalo
|
// Update playhead during playback + re-render če videoDuration manjkalo
|
||||||
@ -1320,8 +1329,10 @@
|
|||||||
// Klik na napis → skoči video na tisti timestamp
|
// Klik na napis → skoči video na tisti timestamp
|
||||||
window.seekToSegment = function(t) {
|
window.seekToSegment = function(t) {
|
||||||
if (!video) return;
|
if (!video) return;
|
||||||
|
// Pause če teče, samo skoči (Enter za play)
|
||||||
|
if (!video.paused) video.pause();
|
||||||
video.currentTime = t;
|
video.currentTime = t;
|
||||||
video.play().catch(() => {});
|
renderPlayhead();
|
||||||
};
|
};
|
||||||
|
|
||||||
// Live highlight aktivnega segmenta med predvajanjem
|
// Live highlight aktivnega segmenta med predvajanjem
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user