mirror of
https://github.com/Aider-AI/aider.git
synced 2025-06-03 19:24:59 +00:00
feat: make transcript timestamps clickable to seek player
This commit is contained in:
parent
41219a7d85
commit
feda315c2b
2 changed files with 38 additions and 2 deletions
|
@ -87,6 +87,18 @@
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Timestamp link styling */
|
||||||
|
.timestamp-link {
|
||||||
|
color: #0366d6;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.timestamp-link:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
.asciinema-player-theme-aider {
|
.asciinema-player-theme-aider {
|
||||||
/* Foreground (default text) color */
|
/* Foreground (default text) color */
|
||||||
--term-color-foreground: #444444; /* colour238 */
|
--term-color-foreground: #444444; /* colour238 */
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
// Parse the transcript section to create markers
|
let player; // Store player reference to make it accessible to click handlers
|
||||||
|
|
||||||
|
// Parse the transcript section to create markers and convert timestamps to links
|
||||||
function parseTranscript() {
|
function parseTranscript() {
|
||||||
const markers = [];
|
const markers = [];
|
||||||
// Find the Transcript heading
|
// Find the Transcript heading
|
||||||
|
@ -20,8 +22,30 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||||
const minutes = parseInt(match[1], 10);
|
const minutes = parseInt(match[1], 10);
|
||||||
const seconds = parseInt(match[2], 10);
|
const seconds = parseInt(match[2], 10);
|
||||||
const timeInSeconds = minutes * 60 + seconds;
|
const timeInSeconds = minutes * 60 + seconds;
|
||||||
|
const formattedTime = `${minutes}:${seconds.toString().padStart(2, '0')}`;
|
||||||
const message = match[3].trim();
|
const message = match[3].trim();
|
||||||
|
|
||||||
|
// Create link for the timestamp
|
||||||
|
const timeLink = document.createElement('a');
|
||||||
|
timeLink.href = '#';
|
||||||
|
timeLink.textContent = formattedTime;
|
||||||
|
timeLink.className = 'timestamp-link';
|
||||||
|
timeLink.dataset.time = timeInSeconds;
|
||||||
|
|
||||||
|
// Add click event to seek the player
|
||||||
|
timeLink.addEventListener('click', function(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
if (player && typeof player.seek === 'function') {
|
||||||
|
player.seek(timeInSeconds);
|
||||||
|
player.play();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Replace text with the link + message
|
||||||
|
item.textContent = '';
|
||||||
|
item.appendChild(timeLink);
|
||||||
|
item.appendChild(document.createTextNode(' ' + message));
|
||||||
|
|
||||||
markers.push([timeInSeconds, message]);
|
markers.push([timeInSeconds, message]);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -39,7 +63,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||||
const markers = parseTranscript();
|
const markers = parseTranscript();
|
||||||
|
|
||||||
// Create player with a single call
|
// Create player with a single call
|
||||||
const player = AsciinemaPlayer.create(
|
player = AsciinemaPlayer.create(
|
||||||
url,
|
url,
|
||||||
document.getElementById('demo'),
|
document.getElementById('demo'),
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue