| <!-- |
| @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> |