diff --git a/frontend/slideshow.html b/frontend/slideshow.html
index 8a5ae98..be3026a 100755
--- a/frontend/slideshow.html
+++ b/frontend/slideshow.html
@@ -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 + " :(";
});
});
diff --git a/server/routes/photos.js b/server/routes/photos.js
index a012f87..687892e 100755
--- a/server/routes/photos.js
+++ b/server/routes/photos.js
@@ -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;