Folder searching now hooked in

Signed-off-by: James Ketrenos <james_git@ketrenos.com>
This commit is contained in:
James Ketr 2018-09-09 20:44:44 -07:00
parent 9a5ea06eee
commit 0cf0ae2ce1
2 changed files with 66 additions and 25 deletions

View File

@ -23,7 +23,7 @@
"paper-header-panel": "PolymerElements/paper-header-panel#^1.1.6", "paper-header-panel": "PolymerElements/paper-header-panel#^1.1.6",
"paper-toolbar": "PolymerElements/paper-toolbar#^1.1.4", "paper-toolbar": "PolymerElements/paper-toolbar#^1.1.4",
"paper-drawer-panel": "PolymerElements/paper-drawer-panel#^1.0.9", "paper-drawer-panel": "PolymerElements/paper-drawer-panel#^1.0.9",
"paper-icon-button": "PolymerElements/paper-icon-button#^1.1.2", "paper-icon-button": "PolymerElements/paper-icon-button#^2.2.0",
"iron-icons": "PolymerElements/iron-icons#^1.1.3", "iron-icons": "PolymerElements/iron-icons#^1.1.3",
"iron-flex-layout": "PolymerElements/iron-flex-layout#^1.3.1", "iron-flex-layout": "PolymerElements/iron-flex-layout#^1.3.1",
"paper-dropdown-menu": "PolymerElements/paper-dropdown-menu#^1.2.1", "paper-dropdown-menu": "PolymerElements/paper-dropdown-menu#^1.2.1",
@ -58,6 +58,7 @@
"paper-spinner": "^1.0.0", "paper-spinner": "^1.0.0",
"iron-resizable-behavior": "^1.0.4", "iron-resizable-behavior": "^1.0.4",
"paper-checkbox": "^1.2.0", "paper-checkbox": "^1.2.0",
"webcomponentsjs": "^v1.1.0" "webcomponentsjs": "^v1.1.0",
"paper-icon-button": "^1.1.2"
} }
} }

View File

@ -19,6 +19,7 @@
<link rel="import" href="../../bower_components/paper-checkbox/paper-checkbox.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/paper-dialog.html">
<link rel="import" href="../../bower_components/paper-dialog-scrollable/paper-dialog-scrollable.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-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-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-radio-button/paper-radio-button.html">
@ -90,6 +91,22 @@
color: white; color: white;
} }
#yearSlider {
margin-top: 0.5em;
position: fixed;
display: block;
opacity: 0;
right: 5px;
bottom: 0px;
padding: 0.5em;
width: 120px;
background-color: rgb(16, 0, 16);
color: white;
text-align: center;
transition: opacity 0.5s ease-in-out;
-webkit-transition: opacity 0.5s ease-in-out;
}
#pager { #pager {
margin-top: 0.5em; margin-top: 0.5em;
position: fixed; position: fixed;
@ -176,8 +193,8 @@
<app-location route="{{route}}"></app-location> <app-location route="{{route}}"></app-location>
<app-drawer-layout id="albumLayout"> <app-drawer-layout id="albumLayout" force-narrow=true>
<app-drawer persistent id="albumList" slot="drawer"> <app-drawer id="searchBox" slot="drawer">
<div id="albums" class="layout vertical"> <div id="albums" class="layout vertical">
<template is="dom-repeat" items="[[breadcrumb(path)]]"> <template is="dom-repeat" items="[[breadcrumb(path)]]">
<div on-tap="loadPath">[[item.name]] /</div> <div on-tap="loadPath">[[item.name]] /</div>
@ -189,7 +206,8 @@
</app-drawer> </app-drawer>
<app-header-layout> <app-header-layout>
<app-header reveals slot="header"> <app-header reveals slot="header">
<div id="header" class="layout horizontal center justified"> <div id="header" class="layout horizontal center">
<paper-icon-button icon="search" on-tap="searchBoxToggle"></paper-icon-button>
<div id="breadcrumb" class="horizontal layout center"> <div id="breadcrumb" class="horizontal layout center">
<template is="dom-repeat" items="[[breadcrumb(path)]]"> <template is="dom-repeat" items="[[breadcrumb(path)]]">
<div on-tap="loadPath">[[item.name]] /</div> <div on-tap="loadPath">[[item.name]] /</div>
@ -205,6 +223,11 @@
</div> </div>
</app-drawer-layout> </app-drawer-layout>
<div id="pager">pager</div> <div id="pager">pager</div>
<div id="yearSlider">
<template is="dom-repeat" items="[[years]]">
<div>item</div>
</template>
</div>
<paper-toast id="toast"></paper-toast> <paper-toast id="toast"></paper-toast>
<photo-lightbox tabindex="0" id="lightbox" on-close="lightBoxClose" on-next="lightBoxNext" on-previous="lightBoxPrevious"></photo-lightbox> <photo-lightbox tabindex="0" id="lightbox" on-close="lightBoxClose" on-next="lightBoxNext" on-previous="lightBoxPrevious"></photo-lightbox>
</template> </template>
@ -215,6 +238,10 @@
Polymer({ Polymer({
is: "ketr-photos", is: "ketr-photos",
properties: { properties: {
years: {
type: Array,
value: []
},
order: { order: {
type: String, type: String,
value: "by-date" value: "by-date"
@ -271,22 +298,19 @@
}, },
observers: [ observers: [
"widthChanged(calcWidth)", "widthChanged(calcWidth)"
"orderChanged(order)"
], ],
orderChanged: function(order) { searchBoxToggle: function(event) {
console.log("Order: " + order); if (this.$.searchBox.opened) {
if (order == "by-album") { this.$.searchBox.close();
this.$.albumLayout.forceNarrow = false;
this.$.albumList.open();
this.$.albumList.persistent = true;
} else if (order == "by-date") {
this.$.albumList.close();
this.$.albumLayout.forceNarrow = true; this.$.albumLayout.forceNarrow = true;
this.$.albumList.resetLayout(); this.$.searchBox.resetLayout();
} else {
this.$.searchBox.open();
this.$.albumLayout.forceNarrow = false;
this.$.searchBox.persistent = true;
} }
Polymer.dom(this.$.thumbnails).innerHTML = "";
}, },
listeners: { listeners: {
@ -295,25 +319,29 @@
}, },
loadPath: function(event) { loadPath: function(event) {
this.path = event.model.item.path; this._pathLoad(event.model.item.path);
Polymer.dom(this.$.thumbnails).innerHTML = "";
this.next = false;
this._loadAlbums();
this._loadPhotos();
}, },
loadAlbum: function(event) { loadAlbum: function(event) {
this._pathLoad(event.detail);
},
_pathLoad: function(path) {
this.path = path;
event.preventDefault(); event.preventDefault();
event.stopPropagation(); event.stopPropagation();
event.stopImmediatePropagation(); event.stopImmediatePropagation();
this.path = event.detail; this.pendingPhotos = [];
this.visibleThumbs = [];
this.thumbnails = [];
this.cursor = null;
Polymer.dom(this.$.thumbnails).innerHTML = ""; Polymer.dom(this.$.thumbnails).innerHTML = "";
this.next = false; this.next = false;
this.limit = undefined;
this._loadAlbums(); this._loadAlbums();
this._loadPhotos(); this._loadPhotos();
}, },
onScroll: function(event) { onScroll: function(event) {
if (this.disableScrolling) { if (this.disableScrolling) {
event.preventDefault(); event.preventDefault();
@ -571,6 +599,18 @@
return; return;
} }
var i = 0;
photos.forEach(function(photo) {
var datetime = new Date((photo.taken || photo.modified || photo.added) + " GMT"),
year = datetime.getFullYear();
for (; i < this.years.length; i++) {
if (this.years[i] == year) {
return;
}
}
this.push("years", year);
}.bind(this));
this.pendingPhotos = this.pendingPhotos.concat(photos); this.pendingPhotos = this.pendingPhotos.concat(photos);
this.async(this.processItems.bind(this)); this.async(this.processItems.bind(this));