layered_presentation / index.html
eaglelandsonce's picture
Update index.html
4d46e65 verified
raw
history blame
6.27 kB
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Interactive Layered Presentation</title>
<link rel="stylesheet" href="style.css">
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
</head>
<body>
<!-- Sidebar -->
<div class="sidebar">
<div class="prompt-icon" id="promptIcon">
<img src="prompt-icon.png" alt="Prompt Icon">
<span>Prompt</span>
</div>
<div class="video-icon" id="videoIcon">
<img src="video-icon.png" alt="Video Icon">
<span>Video</span>
</div>
<div class="website-icon" id="websiteIcon">
<img src="website-icon.png" alt="Website Icon">
<span>Website</span>
</div>
</div>
<!-- Main Container -->
<div class="container">
<div class="top-bar">
<div class="nav-buttons">
<button id="prev-btn">&#8592; Previous</button>
<button id="next-btn">Next &#8594;</button>
</div>
<h1 id="slide-title">Interactive Presentation</h1>
</div>
<div class="main">
<div class="content">
<img id="slide-image" src="images/01_mg.png" alt="Slide Image">
<div class="prompt-box" id="promptBox">
<textarea id="promptText"></textarea>
<button id="queryButton">Query</button>
</div>
<div class="response-box" id="responseBox">
<div id="responseContent"></div>
</div>
<div class="website-layer" id="websiteLayer" style="display: none;">
<iframe id="websiteFrame" src="" frameborder="0"></iframe>
</div>
</div>
</div>
<div class="video-overlay" id="videoOverlay" style="display: none;">
<iframe id="videoPlayer" src="" allowfullscreen></iframe>
<button class="close-button" id="closeVideo">&times;</button>
</div>
</div>
<script>
const slideTitle = document.getElementById('slide-title');
const slideImage = document.getElementById('slide-image');
const prevBtn = document.getElementById('prev-btn');
const nextBtn = document.getElementById('next-btn');
const promptBox = document.getElementById('promptBox');
const promptText = document.getElementById('promptText');
const responseBox = document.getElementById('responseBox');
const responseContent = document.getElementById('responseContent');
const promptIcon = document.getElementById('promptIcon');
const videoIcon = document.getElementById('videoIcon');
const videoOverlay = document.getElementById('videoOverlay');
const videoPlayer = document.getElementById('videoPlayer');
const closeVideo = document.getElementById('closeVideo');
const queryButton = document.getElementById('queryButton');
const websiteIcon = document.getElementById('websiteIcon');
const websiteLayer = document.getElementById('websiteLayer');
const websiteFrame = document.getElementById('websiteFrame');
let slides = [];
let currentIndex = 0;
let websiteVisible = false;
async function fetchSlides() {
try {
const response = await fetch('config.json');
const data = await response.json();
slides = data.slides;
loadSlide(currentIndex);
} catch (error) {
console.error('Error loading slides:', error);
}
}
function loadSlide(index) {
if (!slides.length) return;
const slide = slides[index];
slideTitle.textContent = slide.id.replace('_', ' ');
slideImage.src = slide.image;
promptBox.style.display = 'none';
responseBox.style.display = 'none';
responseContent.innerHTML = '';
videoPlayer.src = '';
if (websiteVisible) {
toggleWebsiteLayer();
}
}
function toggleWebsiteLayer() {
if (websiteVisible) {
websiteLayer.style.display = 'none';
websiteFrame.src = '';
} else {
const websiteURL = "https://chatgpt.com/g/g-mYPbdl190-finstart-devops";
websiteFrame.src = websiteURL;
websiteLayer.style.display = 'block';
}
websiteVisible = !websiteVisible;
}
prevBtn.addEventListener('click', () => {
currentIndex = (currentIndex - 1 + slides.length) % slides.length;
loadSlide(currentIndex);
});
nextBtn.addEventListener('click', () => {
currentIndex = (currentIndex + 1) % slides.length;
loadSlide(currentIndex);
});
promptIcon.addEventListener('click', () => {
const slideText = slides[currentIndex]?.text || "No prompt text available.";
promptBox.style.display = promptBox.style.display === 'block' ? 'none' : 'block';
promptText.value = slideText;
});
videoIcon.addEventListener('click', () => {
const videoURL = slides[currentIndex]?.video || '';
if (videoURL) {
videoPlayer.src = videoURL;
videoOverlay.style.display = 'flex';
}
});
closeVideo.addEventListener('click', () => {
videoOverlay.style.display = 'none';
videoPlayer.src = '';
});
websiteIcon.addEventListener('click', toggleWebsiteLayer);
queryButton.addEventListener('click', async () => {
const userPrompt = promptText.value.trim();
if (!userPrompt) return;
responseBox.style.display = "block";
responseContent.innerHTML = "Processing...";
setTimeout(() => {
responseContent.innerHTML = "Response received: " + userPrompt;
}, 2000);
});
fetchSlides();
</script>
</body>
</html>