blob: dedb3eba98169137b9ff32e51f471e8f8f89cf80 [file] [log] [blame]
<!--
@license
Copyright (c) 2016 The Polymer Project Authors. All rights reserved.
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
Code distributed by Google as part of the polymer project is also
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
-->
<link rel="import" href="../../../polymer/polymer.html">
<link rel="import" href="../../../paper-spinner/paper-spinner.html">
<link rel="import" href="../../../paper-input/paper-input.html">
<link rel="import" href="../../app-route.html">
<dom-module id="flickr-search-page">
<template>
<style>
paper-spinner {
display: block;
}
img {
max-width: 200px;
max-height: 200px;
}
</style>
<app-route pattern="/" route="{{route}}" query-params="{{queryParams}}"
active="{{active}}">
</app-route>
<paper-input autofocus label="Search the public domain on Flickr"
value="{{queryParams.search}}">
</paper-input>
<iron-ajax auto url="https://www.flickr.com/services/rest/"
handle-as="json"
debounce-duration="300"
params="{{params}}"
last-response="{{response}}"
last-error="{{error}}"
loading="{{loading}}">
</iron-ajax>
<paper-spinner active="{{loading}}"></paper-spinner>
<template is="dom-repeat" items="{{response.photos.photo}}" as="photo">
<a href="{{_computeLink(photo)}}">
<img src="{{_computeSrc(photo)}}">
</a>
</template>
<template is="dom-if" if="{{error}}">
<span>{{error.statusCode}}</span> Error:
<pre>{{error.response}}</pre>
</template>
</template>
<script>
Polymer({
is: 'flickr-search-page',
properties: {
apiKey: {
type: String,
},
params: {
type: Object,
computed: '_computeParams(apiKey, queryParams.search)'
},
},
observers: [
'_clearOldSearchResults(queryParams.search)',
'_setDefaultSearch(active)'
],
_clearOldSearchResults: function() {
this.response = null;
},
_computeParams: function(apiKey, search) {
return {
method: 'flickr.photos.search',
api_key: apiKey,
text: search,
license: '7,8',
format: 'json',
nojsoncallback: 1
};
},
_computeSrc: function(photo) {
if (!photo || !photo.farm) {
return '';
}
return 'https://farm' + photo.farm + '.staticflickr.com/' +
photo.server + '/' + photo.id + '_' + photo.secret + '.jpg';
},
_computeLink: function(photo) {
return window.location.pathname + '#/image/' + photo.farm + '/' +
photo.server + '/' + photo.id + '/' + photo.secret;
},
_setDefaultSearch: function(active) {
if (active && !this.queryParams.search) {
this.set('queryParams.search', 'spaceship')
}
}
})
</script>
</dom-module>