Added folder slideshow filter

Signed-off-by: James Ketrenos <james_gitlab@ketrenos.com>
This commit is contained in:
James Ketrenos 2020-03-14 17:28:27 -07:00
parent 45300cacf5
commit fa06d76a01
2 changed files with 58 additions and 7 deletions

View File

@ -108,6 +108,9 @@ function makeFaceBoxes() {
el.parentElement.removeChild(el);
});
console.log("Not showing face boxes");
return;
const el = document.getElementById("photo"),
photo = photos[photoIndex];
@ -151,7 +154,7 @@ function makeFaceBoxes() {
function loadPhoto(index) {
const photo = photos[index],
xml = new XMLHttpRequest(),
url = base + photo.path /* + "thumbs/scaled/"*/ + photo.filename,
url = base + photo.path + "thumbs/scaled/" + photo.filename,
taken = new Date(photo.taken);
document.getElementById("loading").textContent = "0%";
@ -302,13 +305,22 @@ document.addEventListener("DOMContentLoaded", function() {
info = document.getElementById("info");
/* Trim off everything up to and including the ? (if its there) */
var parts = window.location.href.match(/^.*\?(.*)$/);
var parts = window.location.href.match(/^.*\?(.*)$/),
mode = "holiday",
filter = "";
if (parts) {
holiday = parts[1];
parts = parts[1].split("=");
if (parts.length == 1) {
filter = parts[0];
} else {
mode = parts[0];
filter = parts[1];
}
} else {
holiday = "memorial day";
filter = "memorial day";
}
window.fetch("api/v1/photos/holiday/" + holiday.replace(/ +/g, "%20"))
window.fetch("api/v1/photos/" + mode + "/" + filter.replace(/ +/g, "%20"))
.then(res => res.json()).then(function(data) {
if (data.items.length) {
info.textContent = photos.length + " photos found. Shuffling.";
@ -316,11 +328,11 @@ document.addEventListener("DOMContentLoaded", function() {
photoIndex = -1;
nextPhoto();
} else {
info.textContent = "No photos found for " + data.holiday + ".";
info.textContent = "No photos found for " + filter + ".";
}
}).catch(function(error) {
console.error(error);
info.textContent = "Unable to fetch holiday :(";
info.textContent = "Unable to fetch " + mode + "=" + filter + " :(";
});
});
</script>

View File

@ -675,6 +675,43 @@ router.get("/holiday/:holiday", function(req, res/*, next*/) {
});
router.get("/folder/:folder", function(req, res/*, next*/) {
const folder = req.params.folder;
console.log("Searching for photos under folder: " + folder);
let query = "SELECT photos.*,albums.path AS path FROM photos " +
"INNER JOIN albums ON (photos.albumId=albums.id AND albums.path LIKE :folder) " +
"WHERE (photos.duplicate=0 AND photos.deleted=0 AND photos.scanned NOT NULL) " +
"ORDER BY strftime('%Y-%m-%d', taken) DESC,id DESC";
return photoDB.sequelize.query(query, {
replacements: {
folder: folder + '%'
},
type: photoDB.Sequelize.QueryTypes.SELECT
}).then(function(photos) {
console.log("Found " + photos.length + " photos.");
photos.forEach(function(photo) {
for (var key in photo) {
if (photo[key] instanceof Date) {
photo[key] = moment(photo[key]);
}
}
});
return res.status(200).json({
folder: folder,
items: photos
});
}).catch(function(error) {
console.error("Query failed: " + query);
return Promise.reject(error);
});
});
/* Each photos has:
* locations
@ -986,6 +1023,8 @@ console.log("Trying path as: " + path);
});
router.get("/*", function(req, res/*, next*/) {
console.log("Generic loader");
let limit = parseInt(req.query.limit) || 50,
id, cursor, index;