mirror of
https://github.com/UiO-Gaming/infoscreen3.git
synced 2026-11-05 13:56:52 +01:00
182 lines
6.1 KiB
Twig
182 lines
6.1 KiB
Twig
{% extends 'layout/edit.twig' %}
|
|
|
|
{% block header %}
|
|
{% if config.useLocalAssets %}
|
|
<script src="/assets/socket.io.min.js"></script>
|
|
{% else %}
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.6.0/socket.io.min.js"></script>
|
|
{% endif %}
|
|
<script>
|
|
let bundle = "{{ bundle }}";
|
|
let file = "{{ file }}";
|
|
let displayId = {{ displayId }};
|
|
</script>
|
|
{% endblock %}
|
|
|
|
{% block body %}
|
|
<div class="ui segment">
|
|
<video id="preview" style="width: 300px; border: 1px solid black; display: hidden;"></video>
|
|
|
|
<form class="ui form">
|
|
<div class="field">
|
|
<label>{{ t("admin.addVideo.name") }}</label>
|
|
<input type="text" id="name" placeholder="Video" required>
|
|
</div>
|
|
<div class="field">
|
|
<label>{{ t("admin.addVideo.url") }}</label>
|
|
<div class="ui action input">
|
|
<input type="text" id="url" placeholder="http://user:pass@localhost/path/video1.mp4" required onchange="setDisabled();">
|
|
<div onclick="loadVideo();" class="ui green button">Load Metadata</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="field">
|
|
<div id="loop" class="ui toggle checkbox">
|
|
<input type="checkbox"/>
|
|
<label>{{ t("admin.addVideo.loop") }}</label>
|
|
</div>
|
|
</div>
|
|
<div class="field">
|
|
<div id="mute" class="ui toggle checkbox">
|
|
<input type="checkbox"/>
|
|
<label>{{ t("admin.addVideo.mute") }}</label>
|
|
</div>
|
|
</div>
|
|
<div class="field">
|
|
<div id="displaytime" class="ui toggle checkbox">
|
|
<input type="checkbox"/>
|
|
<label>{{ t("admin.addLink.displayTime") }}</label>
|
|
</div>
|
|
</div>
|
|
<div id="save" class="ui disabled green button" onclick="save();">{{ t("actions.save") }}</div>
|
|
|
|
<div class="ui red basic buttons">
|
|
<div onclick="announce({{ displayId }})" class="ui disabled announce button">{{ t("actions.announce") }}</div>
|
|
<div class="ui floating dropdown icon disabled announce button" id="dropdownAnnounce">
|
|
<i class="dropdown icon"></i>
|
|
<div class="menu">
|
|
<div onclick="announce(null)" class="item"><i
|
|
class="exclamation icon"></i> {{ t("actions.announceAll") }}</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="ui basic button" onclick="window.close()">{{ t("actions.cancel") }}</div>
|
|
</form>
|
|
</div>
|
|
<script>
|
|
var socket = io("{{ config.serverUrl }}/admin-{{ displayId }}");
|
|
var videoDuration = 0;
|
|
|
|
$(function () {
|
|
$(".toggle").checkbox();
|
|
$("#dropdownAnnounce").dropdown();
|
|
});
|
|
|
|
function loadVideo() {
|
|
var video = document.getElementById("preview");
|
|
video.src = $('#url').val();
|
|
video.onloadedmetadata = function() {
|
|
videoDuration = video.duration;
|
|
setActive();
|
|
};
|
|
}
|
|
function setActive() {
|
|
$(".announce").removeClass("disabled");
|
|
$("#save").removeClass("disabled");
|
|
}
|
|
|
|
function setDisabled() {
|
|
$(".announce").addClass("disabled");
|
|
$("#save").addClass("disabled");
|
|
}
|
|
|
|
function announce(dispId) {
|
|
if (videoDuration == 0) {
|
|
alert("video duration not set!");
|
|
return;
|
|
}
|
|
|
|
var obj = {
|
|
json: {
|
|
type: "video",
|
|
duration: videoDuration,
|
|
url: $("#url").val(),
|
|
displayTime: $("#displaytime").checkbox('is checked'),
|
|
mute: $("#mute").checkbox('is checked'),
|
|
loop: $("#loop").checkbox('is checked'),
|
|
epochStart: -1,
|
|
epochEnd: -1
|
|
},
|
|
displayId: dispId,
|
|
transition: null,
|
|
|
|
|
|
};
|
|
socket.emit("admin.overrideVideo", obj);
|
|
}
|
|
|
|
function save() {
|
|
if (videoDuration == 0) {
|
|
alert("video duration not set!");
|
|
return;
|
|
}
|
|
|
|
var obj = {
|
|
filename: file,
|
|
bundleName: bundle,
|
|
duration: videoDuration,
|
|
name: $("#name").val(),
|
|
url: $("#url").val(),
|
|
displayTime: $("#displaytime").checkbox('is checked'),
|
|
mute: $("#mute").checkbox('is checked'),
|
|
loop: $("#loop").checkbox('is checked'),
|
|
epochStart: -1,
|
|
epochEnd: -1.
|
|
};
|
|
socket.emit("edit.saveVideo", obj);
|
|
}
|
|
|
|
socket.on("connect", function () {
|
|
socket.emit("admin.editVideo", {bundleName: bundle, fileName: file});
|
|
});
|
|
|
|
|
|
socket.on("callback.video", function (data) {
|
|
var json = data.json;
|
|
|
|
$("#name").val(json.name);
|
|
$("#url").val(json.url);
|
|
|
|
if (json.displayTime) {
|
|
$("#displaytime").checkbox('set checked', true);
|
|
} else {
|
|
$("#displaytime").checkbox('set unchecked', false);
|
|
}
|
|
// Videos should be muted by default (empty json)
|
|
if (json.mute || json.mute === undefined) {
|
|
$("#mute").checkbox('set checked', true);
|
|
} else {
|
|
$("#mute").checkbox('set unchecked', false);
|
|
}
|
|
if (json.loop) {
|
|
$("#loop").checkbox('set checked', true);
|
|
} else {
|
|
$("#loop").checkbox('set unchecked', false);
|
|
}
|
|
|
|
});
|
|
|
|
socket.on("callback.saveVideo", function (data) {
|
|
if (!data.err) {
|
|
window.close();
|
|
} else {
|
|
alert(data.err);
|
|
}
|
|
});
|
|
|
|
|
|
</script>
|
|
|
|
{% endblock %}
|
|
|