aboutsummaryrefslogtreecommitdiff
path: root/catapult/third_party/polymer/components/app-route/demo/data-loading-demo/flickr-search-page.html
diff options
context:
space:
mode:
Diffstat (limited to 'catapult/third_party/polymer/components/app-route/demo/data-loading-demo/flickr-search-page.html')
-rw-r--r--catapult/third_party/polymer/components/app-route/demo/data-loading-demo/flickr-search-page.html107
1 files changed, 107 insertions, 0 deletions
diff --git a/catapult/third_party/polymer/components/app-route/demo/data-loading-demo/flickr-search-page.html b/catapult/third_party/polymer/components/app-route/demo/data-loading-demo/flickr-search-page.html
new file mode 100644
index 00000000..dedb3eba
--- /dev/null
+++ b/catapult/third_party/polymer/components/app-route/demo/data-loading-demo/flickr-search-page.html
@@ -0,0 +1,107 @@
+<!--
+@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>