summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/catapult/third_party/polymer2/bower_components/app-route/demo/data-loading-demo/flickr-search-page.html
blob: 04276abb2c9a2969b1cea0f03e6dfda45c7a7ce1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
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)'},

        route: {type: Object}
      },

      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>