prev
@@ -205,11 +210,6 @@
value: true,
reflectToAttribute: true
},
- limitPerFolder: {
- type: Boolean,
- value: false,
- reflectToAttribute: true
- },
showAlbums: {
type: Boolean,
computed: "shouldShowAlbums(order)"
@@ -259,17 +259,6 @@
this.appendItems(this.photos);
},
- onLimitPerFolderChanged: function(event) {
- if (!this.photos) {
- return;
- }
-
- this.limitPerFolder = event.detail.value;
-
- Polymer.dom(this.$.thumbnails).innerHTML = "";
-
- this.appendItems(this.photos);
- },
onBreakOnDayChanged: function(event) {
if (!this.photos) {
return;
@@ -308,11 +297,37 @@
this._loadPhotos();
},
+
+ isThumbInView: function(el) {
+ var rect = el.getBoundingClientRect(),
+ height = (window.innerHeight || document.documentElement.clientHeight),
+ width = (window.innerWidth || document.documentElement.clientWidth);
+
+ return ((rect.top <= height) && ((rect.top + rect.height) >= 0) &&
+ (rect.left <= width) && ((rect.left + rect.width) >= 0));
+ },
+
onScroll: function(event) {
if (this.disableScrolling) {
event.preventDefault();
window.scrollTo(this.topStickX, this.topStickY);
+ return;
}
+
+ this.triggerVisibilityChecks();
+ },
+
+
+ triggerVisibilityChecks: function() {
+ this.debounce("hide-or-show", function() {
+ var thumbs = this.querySelectorAll("photo-thumbnail"), visible;
+ thumbs.forEach(function(thumb) {
+ visible = this.isThumbInView(thumb);
+ if (thumb.visible != visible) {
+ thumb.visible = visible;
+ }
+ }.bind(this));
+ }, 250);
},
findPhoto: function(photo) {
@@ -422,17 +437,12 @@
return;
}
- var thisDay, lastPath = null;
- if (this.limitPerFolder) {
- console.log("Max per day: " + this.cols);
- }
-
+ var lastPath = null;
var albums = this.querySelectorAll(".album-line");
if (albums.length) {
lastPath = albums[albums.length - 1];
}
- thisDay = 0;
for (var i = 0; i < photos.length; i++) {
var photo = photos[i],
thumbnail = document.createElement("photo-thumbnail"),
@@ -443,6 +453,34 @@
thumbnail.addEventListener("load-album", this.loadAlbum.bind(this));
datetime = (photo.taken || photo.modified || photo.added).replace(/T.*$/, "");
+ var dateBlock = this.querySelector("#date-" + datetime), thumbnails;
+ if (!dateBlock) {
+ dateBlock = document.createElement("div");
+ dateBlock.id = "date-" + datetime;
+ dateBlock.classList.add("date-line");
+ dateBlock.classList.add("layout");
+ dateBlock.classList.add("vertical");
+ var header = document.createElement("div");
+ header.classList.add("header");
+ header.classList.add("layout");
+ header.classList.add("center");
+ header.classList.add("horizontal");
+ var div = document.createElement("div");
+ div.classList.add("date");
+ div.textContent = window.moment(datetime, "YYYY-MM-DD").calendar(null, { sameElse: "MMM DD, YYYY" });
+ Polymer.dom(dateBlock).appendChild(header);
+ Polymer.dom(header).appendChild(div);
+ thumbnails = document.createElement("div");
+ thumbnails.classList.add("thumbnails");
+ thumbnails.classList.add("layout");
+ thumbnails.classList.add("horizontal");
+ thumbnails.classList.add("wrap");
+ Polymer.dom(dateBlock).appendChild(thumbnails);
+ Polymer.dom(this.$.thumbnails).appendChild(dateBlock);
+ } else {
+ thumbnails = Polymer.dom(dateBlock).querySelector(".thumbnails");
+ }
+
if (this.order == "by-album") {
if (lastPath != photo.path) {
lastPath = photo.path;
@@ -459,52 +497,15 @@
albumBlock.appendChild(div);
}.bind(this));
- Polymer.dom(this.$.thumbnails).appendChild(albumBlock);
+ var header = dateBlock.querySelector(".header");
+ Polymer.dom(header).appendChild(albumBlock);
}
}
- if (this.breakOnDayChange) {
- var dateBlock = this.querySelector("#date-" + datetime);
- if (!dateBlock) {
- dateBlock = document.createElement("div");
- dateBlock.id = "date-" + datetime;
- dateBlock.classList.add("date-line");
- dateBlock.textContent = datetime;
- Polymer.dom(this.$.thumbnails).appendChild(dateBlock);
- thisDay = 0;
- } else {
- if (this.limitPerFolder) {
- var thumbs = [], el = dateBlock.nextElementSibling;
- while (el && el.tagName == "PHOTO-THUMBNAIL") {
- thumbs.push(el);
- el = el.nextElementSibling;
- }
- thisDay = thumbs.length;
- while (thisDay > this.cols) {
- Polymer.dom(thumbs[thisDay - 1].parentElement).removeChild(thumbs[thisDay - 1]);
- thisDay--;
- }
- }
- }
- }
-
-
- if (!this.limitPerFolder || thisDay < this.cols) {
- Polymer.dom(this.$.thumbnails).appendChild(thumbnail);
- thisDay++;
- }
-
- if (this.limitPerFolder && thisDay == this.cols) {
- while (i + 1 < photos.length) {
- photo = photos[i + 1];
- if (datetime != (photo.taken || photo.modified || photo.added).replace(/T.*$/, "")) {
- break;
- }
- i++;
- }
- thisDay = 0;
- }
+ Polymer.dom(thumbnails).appendChild(thumbnail);
}
+
+ this.triggerVisibilityChecks();
},
pathTapped: function(event) {
@@ -617,6 +618,7 @@
},
onResize: function(event) {
+ this.triggerVisibilityChecks();
this.debounce("resize", function() {
var width = Math.max(this.$.placeholder.offsetWidth || 0, 200);
diff --git a/server/app.js b/server/app.js
old mode 100644
new mode 100755
index 8528e01..a561501
--- a/server/app.js
+++ b/server/app.js
@@ -84,10 +84,14 @@ app.set("port", serverConfig.port);
const server = require("http").createServer(app);
db.then(function(photoDB) {
+ console.log("DB connected. Opening server.");
+ server.listen(serverConfig.port);
+ return photoDB;
+}).then(function(photoDB) {
+ console.log("Scanning.");
return scanner.scan(photoDB);
}).then(function() {
- console.log("Done scanning. Opening server.");
- server.listen(serverConfig.port);
+ console.log("Scanning completed.");
}).catch(function(error) {
console.error(error);
process.exit(-1);
diff --git a/server/routes/photos.js b/server/routes/photos.js
old mode 100644
new mode 100755
index d19aa45..23c17c3
--- a/server/routes/photos.js
+++ b/server/routes/photos.js
@@ -55,7 +55,7 @@ router.get("/*", function(req, res/*, next*/) {
}
}
- let query = "SELECT * FROM photos WHERE path LIKE :path " + index + " ORDER BY taken " + order + ",id " + order + " LIMIT " + (limit * 2 + 1);
+ let query = "SELECT * FROM photos WHERE path LIKE :path " + index + " ORDER BY taken " + order + ",id " + order;// + " LIMIT " + (limit * 2 + 1);
return photoDB.sequelize.query(query, {
replacements: {
cursor: cursor,