3
This commit is contained in:
parent
2911c02f8a
commit
3ddc00e28e
@ -36,6 +36,9 @@ body {
|
|||||||
position: relative;
|
position: relative;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
transition: background-color 0.3s ease;
|
transition: background-color 0.3s ease;
|
||||||
|
background-size: cover;
|
||||||
|
background-position: center;
|
||||||
|
background-repeat: no-repeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
.video-panel .panel-label {
|
.video-panel .panel-label {
|
||||||
|
|||||||
@ -15,7 +15,12 @@ document.addEventListener('DOMContentLoaded', function () {
|
|||||||
const modalSaveBtn = document.getElementById('modal-save-btn');
|
const modalSaveBtn = document.getElementById('modal-save-btn');
|
||||||
const sceneNameInput = document.getElementById('scene-name-input');
|
const sceneNameInput = document.getElementById('scene-name-input');
|
||||||
const sceneTypeSelect = document.getElementById('scene-type-select');
|
const sceneTypeSelect = document.getElementById('scene-type-select');
|
||||||
|
|
||||||
|
// Source settings elements
|
||||||
|
const colorSettings = document.getElementById('source-color-group');
|
||||||
|
const imageSettings = document.getElementById('source-image-group');
|
||||||
const sceneColorInput = document.getElementById('scene-color-input');
|
const sceneColorInput = document.getElementById('scene-color-input');
|
||||||
|
const sceneImageUrlInput = document.getElementById('scene-image-url-input');
|
||||||
|
|
||||||
// Data Store
|
// Data Store
|
||||||
let scenes = [];
|
let scenes = [];
|
||||||
@ -73,11 +78,18 @@ document.addEventListener('DOMContentLoaded', function () {
|
|||||||
|
|
||||||
activePreviewSceneId = scene.id;
|
activePreviewSceneId = scene.id;
|
||||||
|
|
||||||
|
// Clear previous styles
|
||||||
|
previewPanel.style.backgroundColor = '#000';
|
||||||
|
previewPanel.style.backgroundImage = 'none';
|
||||||
previewContent.textContent = scene.name;
|
previewContent.textContent = scene.name;
|
||||||
|
|
||||||
switch (scene.type) {
|
switch (scene.type) {
|
||||||
case 'color':
|
case 'color':
|
||||||
previewPanel.style.backgroundColor = scene.value;
|
previewPanel.style.backgroundColor = scene.value;
|
||||||
break;
|
break;
|
||||||
|
case 'image':
|
||||||
|
previewPanel.style.backgroundImage = `url('${scene.value}')`;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
previewPanel.style.backgroundColor = '#000';
|
previewPanel.style.backgroundColor = '#000';
|
||||||
break;
|
break;
|
||||||
@ -89,6 +101,7 @@ document.addEventListener('DOMContentLoaded', function () {
|
|||||||
activePreviewSceneId = null;
|
activePreviewSceneId = null;
|
||||||
previewContent.textContent = 'Select a Scene';
|
previewContent.textContent = 'Select a Scene';
|
||||||
previewPanel.style.backgroundColor = '#000';
|
previewPanel.style.backgroundColor = '#000';
|
||||||
|
previewPanel.style.backgroundImage = 'none';
|
||||||
renderSceneList();
|
renderSceneList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -127,6 +140,7 @@ document.addEventListener('DOMContentLoaded', function () {
|
|||||||
|
|
||||||
programContent.textContent = previewScene.name;
|
programContent.textContent = previewScene.name;
|
||||||
programPanel.style.backgroundColor = previewPanel.style.backgroundColor;
|
programPanel.style.backgroundColor = previewPanel.style.backgroundColor;
|
||||||
|
programPanel.style.backgroundImage = previewPanel.style.backgroundImage;
|
||||||
|
|
||||||
clearPreview();
|
clearPreview();
|
||||||
});
|
});
|
||||||
@ -139,6 +153,12 @@ document.addEventListener('DOMContentLoaded', function () {
|
|||||||
modalCloseBtn.addEventListener('click', hideModal);
|
modalCloseBtn.addEventListener('click', hideModal);
|
||||||
modalCancelBtn.addEventListener('click', hideModal);
|
modalCancelBtn.addEventListener('click', hideModal);
|
||||||
|
|
||||||
|
sceneTypeSelect.addEventListener('change', (e) => {
|
||||||
|
const type = e.target.value;
|
||||||
|
colorSettings.style.display = type === 'color' ? 'block' : 'none';
|
||||||
|
imageSettings.style.display = type === 'image' ? 'block' : 'none';
|
||||||
|
});
|
||||||
|
|
||||||
modalSaveBtn.addEventListener('click', () => {
|
modalSaveBtn.addEventListener('click', () => {
|
||||||
const name = sceneNameInput.value.trim();
|
const name = sceneNameInput.value.trim();
|
||||||
if (!name) {
|
if (!name) {
|
||||||
@ -146,7 +166,17 @@ document.addEventListener('DOMContentLoaded', function () {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const type = sceneTypeSelect.value;
|
const type = sceneTypeSelect.value;
|
||||||
const value = sceneColorInput.value; // For now, only color
|
let value;
|
||||||
|
|
||||||
|
if (type === 'color') {
|
||||||
|
value = sceneColorInput.value;
|
||||||
|
} else if (type === 'image') {
|
||||||
|
value = sceneImageUrlInput.value.trim();
|
||||||
|
if (!value) {
|
||||||
|
alert('Please enter an image URL.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const newScene = addScene(name, type, value);
|
const newScene = addScene(name, type, value);
|
||||||
updatePreview(newScene.id);
|
updatePreview(newScene.id);
|
||||||
@ -154,6 +184,10 @@ document.addEventListener('DOMContentLoaded', function () {
|
|||||||
// Reset form and hide modal
|
// Reset form and hide modal
|
||||||
sceneNameInput.value = '';
|
sceneNameInput.value = '';
|
||||||
sceneColorInput.value = '#1e90ff';
|
sceneColorInput.value = '#1e90ff';
|
||||||
|
sceneImageUrlInput.value = '';
|
||||||
|
sceneTypeSelect.value = 'color';
|
||||||
|
colorSettings.style.display = 'block';
|
||||||
|
imageSettings.style.display = 'none';
|
||||||
hideModal();
|
hideModal();
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -161,8 +195,8 @@ document.addEventListener('DOMContentLoaded', function () {
|
|||||||
function initialize() {
|
function initialize() {
|
||||||
// Add some default scenes
|
// Add some default scenes
|
||||||
addScene('Main Camera', 'color', '#003366');
|
addScene('Main Camera', 'color', '#003366');
|
||||||
|
addScene('Starting Soon Screen', 'image', 'https://images.pexels.com/photos/1762851/pexels-photo-1762851.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1');
|
||||||
addScene('Screen Share', 'color', '#006633');
|
addScene('Screen Share', 'color', '#006633');
|
||||||
addScene('Starting Soon', 'color', '#333333');
|
|
||||||
|
|
||||||
// Set initial program scene for display
|
// Set initial program scene for display
|
||||||
const firstScene = scenes[0];
|
const firstScene = scenes[0];
|
||||||
@ -170,6 +204,7 @@ document.addEventListener('DOMContentLoaded', function () {
|
|||||||
activeProgramSceneId = firstScene.id;
|
activeProgramSceneId = firstScene.id;
|
||||||
programContent.textContent = firstScene.name;
|
programContent.textContent = firstScene.name;
|
||||||
programPanel.style.backgroundColor = firstScene.value;
|
programPanel.style.backgroundColor = firstScene.value;
|
||||||
|
programPanel.style.backgroundImage = 'none';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Select the second scene for preview initially
|
// Select the second scene for preview initially
|
||||||
|
|||||||
10
index.php
10
index.php
@ -94,14 +94,20 @@
|
|||||||
<label for="scene-type-select" class="form-label">Source Type</label>
|
<label for="scene-type-select" class="form-label">Source Type</label>
|
||||||
<select class="form-select" id="scene-type-select">
|
<select class="form-select" id="scene-type-select">
|
||||||
<option value="color">Solid Color</option>
|
<option value="color">Solid Color</option>
|
||||||
<option value="image" disabled>Image (soon)</option>
|
<option value="image">Image</option>
|
||||||
<option value="video" disabled>Video (soon)</option>
|
<option value="video" disabled>Video (soon)</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div id="source-color-group" class="mb-3">
|
|
||||||
|
<div id="source-color-group" class="mb-3 source-settings">
|
||||||
<label for="scene-color-input" class="form-label">Background Color</label>
|
<label for="scene-color-input" class="form-label">Background Color</label>
|
||||||
<input type="color" class="form-control form-control-color" id="scene-color-input" value="#1e90ff">
|
<input type="color" class="form-control form-control-color" id="scene-color-input" value="#1e90ff">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div id="source-image-group" class="mb-3 source-settings" style="display: none;">
|
||||||
|
<label for="scene-image-url-input" class="form-label">Image URL</label>
|
||||||
|
<input type="url" class="form-control" id="scene-image-url-input" placeholder="https://example.com/image.jpg">
|
||||||
|
</div>
|
||||||
<!-- Other source type options will go here -->
|
<!-- Other source type options will go here -->
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user