Working Memories

Signed-off-by: James Ketrenos <james_git@ketrenos.com>
This commit is contained in:
James Ketr 2018-09-12 15:00:38 -07:00
parent 015999ca49
commit 22cd1ed047
2 changed files with 39 additions and 20 deletions

View File

@ -8,7 +8,6 @@
<link rel="import" href="../../bower_components/app-layout/app-header/app-header.html">
<link rel="import" href="../../bower_components/app-layout/app-toolbar/app-toolbar.html">
<link rel="import" href="../../bower_components/app-layout/app-drawer/app-drawer.html">
<link rel="import" href="../../bower_components/app-route/app-location.html">
<link rel="import" href="../../bower_components/iron-icon/iron-icon.html">
<link rel="import" href="../../bower_components/iron-icons/iron-icons.html">
@ -18,13 +17,7 @@
<link rel="import" href="../../bower_components/iron-flex-layout/iron-flex-layout-classes.html">
<link rel="import" href="../../bower_components/paper-button/paper-button.html">
<link rel="import" href="../../bower_components/paper-checkbox/paper-checkbox.html">
<link rel="import" href="../../bower_components/paper-dialog/paper-dialog.html">
<link rel="import" href="../../bower_components/paper-dialog-scrollable/paper-dialog-scrollable.html">
<link rel="import" href="../../bower_components/paper-icon-button/paper-icon-button.html">
<link rel="import" href="../../bower_components/paper-input/paper-input.html">
<link rel="import" href="../../bower_components/paper-radio-group/paper-radio-group.html">
<link rel="import" href="../../bower_components/paper-radio-button/paper-radio-button.html">
<link rel="import" href="../../bower_components/paper-spinner/paper-spinner.html">
<link rel="import" href="../../bower_components/paper-tabs/paper-tab.html">
<link rel="import" href="../../bower_components/paper-tabs/paper-tabs.html">
@ -220,6 +213,14 @@
border: 3px solid blue;
};
}
calendar-element {
font-size: 0.8em;
}
#memories {
padding: 0.5em;
}
</style>
<app-location route="{{route}}"></app-location>
@ -233,8 +234,9 @@
</paper-tabs>
<iron-pages id="pages" attr-for-selected="id" selected="[[mode]]">
<div id="time"><div>... time slider ...</div></div>
<div id="memories" class="flex layout vertical">
<div><calendar-element date="{{date}}"></calendar-element></div>
<div id="memories" class="flex layout vertical center">
<calendar-element date="{{date}}"></calendar-element>
<div>[[date]]</div>
</div>
<div id="albums" class="flex layout vertical">
<template is="dom-repeat" items="[[breadcrumb(path)]]">
@ -321,12 +323,17 @@
mode: {
type: String,
value: "time"
},
date: {
type: String,
value: new Date().toISOString().replace(/T.*/, "")
}
},
observers: [
"widthChanged(calcWidth)",
"modeChanged(mode)"
"modeChanged(mode)",
"dateChanged(date)"
],
shouldShowAlbums: function(order) {
@ -340,6 +347,17 @@
}
},
dateChanged: function(date) {
this.pendingPhotos = [];
this.visibleThumbs = [];
this.thumbnails = [];
this.cursor = null;
Polymer.dom(this.$.thumbnails).innerHTML = "";
this.next = false;
this.limit = undefined;
this._loadPhotos();
},
modeChanged: function(mode) {
console.log("Mode changed to " + mode);
this.path = "";
@ -803,13 +821,17 @@
path = "/" + mode;
if (mode == "time") {
path = "";
} else {
path = "/memories/" + (this.date || "");
}
}
console.log("Requesting " + this.limit + " photos.");
window.fetch("api/v1/photos" + path + query, function(path, error, xhr) {
this.loading = false;
if ((mode != this.mode) || ((mode == "albums") && (path != (this.path || "")))) {
if ((mode != this.mode) ||
((mode == "albums") && (path != (this.path || ""))) ||
((mode == "memories") && (path != ("/memories/" + (this.date || ""))))) {
console.log("Skipping results for old query. Triggering re-fetch of photos for new path or mode.");
this._loadPhotos();
return;

View File

@ -1,10 +1,5 @@
"use strict";
/*
Memories:
echo "select id,taken from photos where strftime('%m%d',taken)=strftime('%m%d',CURRENT_TIMESTAMP) order by taken desc;" | sqlite3 photos.db
*/
const express = require("express"),
fs = require("fs"),
url = require("url"),
@ -29,7 +24,7 @@ const router = express.Router();
*/
router.get("/memories", function(req, res/*, next*/) {
router.get("/memories/*", function(req, res/*, next*/) {
let limit = parseInt(req.query.limit) || 50,
id, cursor, index;
@ -52,13 +47,15 @@ router.get("/memories", function(req, res/*, next*/) {
}
}
let query = "SELECT * FROM photos WHERE strftime('%m%d',taken)=strftime('%m%d',CURRENT_TIMESTAMP) " + index + " ORDER BY taken DESC,id DESC LIMIT " + (limit * 2 + 1);
let date = new Date(decodeURI(req.url).replace(/\?.*$/, ""));
let query = "SELECT * FROM photos WHERE strftime('%m%d',taken)=strftime('%m%d',:date) " + index + " ORDER BY taken DESC,id DESC LIMIT " + (limit * 2 + 1);
// console.log("Memories query", query);
console.log("Memories query", date.replace(/T.*/, "");
return photoDB.sequelize.query(query, {
replacements: {
cursor: cursor
cursor: cursor,
date: date
},
type: photoDB.Sequelize.QueryTypes.SELECT
}).then(function(photos) {