diff --git a/static/js/filebrowser.js b/static/js/filebrowser.js index c8602a0..56afcab 100644 --- a/static/js/filebrowser.js +++ b/static/js/filebrowser.js @@ -3,10 +3,12 @@ once; rows/preview are re-queried per page). */ (function () { "use strict"; - var rows = [], img = null, texts = [], cap = null, cur = 0, frozen = false, container = null; + var rows = [], img = null, texts = [], cap = null, cur = 0, frozen = false, container = null, player = null, pv = null; function hideTexts() { texts.forEach(function (t) { t.hidden = true; }); } function showText(k) { texts.forEach(function (t) { t.hidden = (t.getAttribute("data-text") !== k); }); } + function hidePlayer() { if (player) { player.hidden = true; if (pv && !pv.paused) pv.pause(); } } + function showPlayer() { if (player) player.hidden = false; } function setFrozen(v) { frozen = v; if (container) container.classList.toggle("is-frozen", v); } function showImg(src) { if (!img) return; @@ -30,9 +32,11 @@ var src = a.getAttribute("data-img"); var tkey = a.getAttribute("data-text"); - if (src) { showImg(src); hideTexts(); } - else if (tkey) { if (img) img.hidden = true; showText(tkey); } - else { if (img) img.hidden = true; hideTexts(); } + var vid = a.getAttribute("data-video"); + if (src) { showImg(src); hideTexts(); hidePlayer(); } + else if (vid) { if (img) img.hidden = true; hideTexts(); showPlayer(); } + else if (tkey) { if (img) img.hidden = true; hidePlayer(); showText(tkey); } + else { if (img) img.hidden = true; hideTexts(); hidePlayer(); } if (cap) { var n = a.querySelector(".tui__name"); @@ -47,6 +51,8 @@ rows = list ? Array.prototype.slice.call(list.querySelectorAll("a[data-name]")) : []; img = document.querySelector(".tui__preview img"); texts = Array.prototype.slice.call(document.querySelectorAll(".tui__preview .tui__text")); + player = document.querySelector(".tui__preview .player"); + pv = player ? player.querySelector("video") : null; cap = document.querySelector(".tui__status"); cur = 0; frozen = false; if (!rows.length) return;