82 lines
1.8 KiB
JavaScript
82 lines
1.8 KiB
JavaScript
let lastImage = null;
|
|
|
|
$(document).ready(function() {
|
|
poll();
|
|
setInterval(poll, UPDATE_EVERY_SECONDS * 1000);
|
|
});
|
|
|
|
function poll() {
|
|
// Polls last photos from gallery service
|
|
$.ajax({
|
|
url: `${BASEURL}/api/gallery_item/read.php`,
|
|
headers: {
|
|
"Authentication": TOKEN
|
|
},
|
|
crossDomain: true
|
|
}).then(function(data){
|
|
let image = data.records[0];
|
|
if (!lastImage || lastImage.id != image.id) {
|
|
lastImage = image;
|
|
preloadImage(urlFromImageObj(lastImage), function(event) {
|
|
const imgDiv = $("#feed #image");
|
|
let preloadedUrl = event.target.src;
|
|
imgDiv.animate(
|
|
{
|
|
opacity: 0.0
|
|
},
|
|
500,
|
|
"swing",
|
|
function() {
|
|
showImage(preloadedUrl);
|
|
imgDiv.animate(
|
|
{
|
|
opacity: 1.0
|
|
},
|
|
500,
|
|
"swing");
|
|
}
|
|
);
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
function urlFromImageObj(image) {
|
|
return LOW_RES_PROJECTOR ?
|
|
`${BASEURL}${image.imageThumbUrl}` :
|
|
`${BASEURL}${image.imageUrl}`;
|
|
}
|
|
|
|
/**
|
|
* Preloads the image and executes callback
|
|
* @param {string} url
|
|
* @param {function} callback
|
|
*/
|
|
function preloadImage(url, callback) {
|
|
var img=new Image();
|
|
img.src=url;
|
|
img.onload = callback;
|
|
}
|
|
|
|
/**
|
|
* Replaces image and user name in div.
|
|
* No animation is performed here.
|
|
* @param {image} image json object as returned by the gallery service
|
|
*/
|
|
function showImage(imageUrl) {
|
|
$("#feed #image").css("background-image", `url(${imageUrl})`);
|
|
if (urlFromImageObj(lastImage) != imageUrl) {
|
|
// Connection hiccup? Hide user badge
|
|
$('#userbadge').hide()
|
|
return;
|
|
}
|
|
|
|
// Show user badge
|
|
$('#userbadge').show()
|
|
$('#userbadge .name').text(`${lastImage.author.name} ${lastImage.author.surname}`);
|
|
if (lastImage.author.picture)
|
|
$('#userbadge .avatar').attr('src', `${BASEURL}/user-pictures/${lastImage.author.picture}`)
|
|
else
|
|
$('#userbadge .avatar').attr('src', 'user-placeholder.png');
|
|
}
|