Spaces:
Runtime error
Runtime error
| class ImageHandler { | |
| constructor(n_datasets, n_images, databtn_id, imgbtn_id, imgtag_id) { | |
| this.n_datasets = n_datasets; | |
| this.n_images = n_images; | |
| this.databtn_id = databtn_id; | |
| this.imgbtn_id = imgbtn_id; | |
| this.imgtag_id = imgtag_id; | |
| } | |
| select_image(j) { | |
| for (let i = 0; i < this.n_images; i++) { | |
| let v = document.getElementById(this.imgtag_id + i.toString()); | |
| let b = document.getElementById(this.imgbtn_id + i.toString()); | |
| if (i == j) { | |
| b.className = "on"; | |
| v.style.display = "block"; | |
| } else { | |
| b.className = ""; | |
| v.style.display = "none"; | |
| } | |
| } | |
| }; | |
| select_dataset(j) { | |
| let dataset_name = document.getElementById(this.databtn_id + j.toString()).value; | |
| for (let i = 0; i < this.n_datasets; i++) { | |
| document.getElementById(this.databtn_id + i.toString()).className = (i == j ? "on" : ""); | |
| } | |
| for (let i = 0; i < this.n_images; i++) { | |
| let image_name = document.getElementById(this.imgbtn_id + i.toString()).value; | |
| let v = document.getElementById(this.imgtag_id + i.toString()); | |
| v.src = "images/" + dataset_name + "_" + image_name + ".png"; | |
| } | |
| }; | |
| register() { | |
| for (let i = 0; i < this.n_datasets; i++) { | |
| document.getElementById(this.databtn_id + i.toString()).addEventListener("click", function() { this.select_dataset(i); }.bind(this, i)); | |
| } | |
| for (let i = 0; i < this.n_images; i++) { | |
| document.getElementById(this.imgbtn_id + i.toString()).addEventListener("click", function() { this.select_image(i); }.bind(this, i)); | |
| } | |
| //this.select_image(0); | |
| } | |
| } | |
| class VideoHandler { | |
| constructor(n_datasets, n_videos, databtn_id, vidbtn_id, vidtag_id) { | |
| this.n_datasets = n_datasets; | |
| this.n_videos = n_videos; | |
| this.databtn_id = databtn_id; | |
| this.vidbtn_id = vidbtn_id; | |
| this.vidtag_id = vidtag_id; | |
| } | |
| get paused() { | |
| return document.getElementById(this.vidtag_id + "0").paused; | |
| } | |
| sync_video(e) { | |
| if (e === undefined) { | |
| return; | |
| } | |
| for (let i = 0; i < this.n_videos; i++) { | |
| let v = document.getElementById(this.vidtag_id + i.toString()); | |
| if (v != e.currentTarget) { | |
| v.currentTime = e.currentTarget.currentTime; | |
| } | |
| } | |
| }; | |
| play_video(e) { | |
| this.sync_video(e); | |
| for (let i = 0; i < this.n_videos; i++) { | |
| document.getElementById(this.vidtag_id + i.toString()).play(); | |
| } | |
| }; | |
| pause_video(e) { | |
| for (let i = 0; i < this.n_videos; i++) { | |
| document.getElementById(this.vidtag_id + i.toString()).pause(); | |
| } | |
| this.sync_video(e); | |
| }; | |
| select_video(j) { | |
| for (let i = 0; i < this.n_videos; i++) { | |
| let v = document.getElementById(this.vidtag_id + i.toString()); | |
| let b = document.getElementById(this.vidbtn_id + i.toString()); | |
| if (i == j) { | |
| b.className = "on"; | |
| v.style.display = "block"; | |
| v.addEventListener("play", this); | |
| v.addEventListener("pause", this); | |
| v.addEventListener("seeking", this); | |
| v.addEventListener("seeked", this); | |
| v.addEventListener("playing", this); | |
| } else { | |
| b.className = ""; | |
| v.style.display = "none"; | |
| v.removeEventListener("play", this); | |
| v.removeEventListener("pause", this); | |
| v.removeEventListener("seeking", this); | |
| v.removeEventListener("seeked", this); | |
| v.removeEventListener("playing", this); | |
| } | |
| } | |
| }; | |
| handleEvent(e) { | |
| switch (e.type) { | |
| case "play": this.play_video(e); break; | |
| case "pause": this.pause_video(e); break; | |
| case "seeking": this.sync_video(e); break; | |
| case "seeked": this.sync_video(e); break; | |
| case "playing": this.sync_video(e); break; | |
| } | |
| } | |
| select_dataset(j) { | |
| let autoplay = !this.paused; | |
| let dataset_name = document.getElementById(this.databtn_id + j.toString()).value; | |
| for (let i = 0; i < this.n_datasets; i++) { | |
| document.getElementById(this.databtn_id + i.toString()).className = (i == j ? "on" : ""); | |
| } | |
| for (let i = 0; i < this.n_videos; i++) { | |
| let video_name = document.getElementById(this.vidbtn_id + i.toString()).value; | |
| let v = document.getElementById(this.vidtag_id + i.toString()); | |
| if (v.src.includes('.mov')) { | |
| v.src = "videos/" + dataset_name + "_" + video_name + ".mov"; | |
| } | |
| else { | |
| v.src = "videos/" + dataset_name + "_" + video_name + ".mov"; | |
| } | |
| } | |
| if (autoplay) { | |
| this.play_video(); | |
| } | |
| }; | |
| register() { | |
| for (let i = 0; i < this.n_datasets; i++) { | |
| document.getElementById(this.databtn_id + i.toString()).addEventListener("click", function() { this.select_dataset(i); }.bind(this, i)); | |
| } | |
| for (let i = 0; i < this.n_videos; i++) { | |
| document.getElementById(this.vidbtn_id + i.toString()).addEventListener("click", function() { this.select_video(i); }.bind(this, i)); | |
| } | |
| for (let i = 0; i < this.n_videos; i++) { | |
| document.getElementById(this.vidtag_id + i.toString()).muted = true; | |
| } | |
| //this.select_video(0); | |
| } | |
| } | |