aboutsummaryrefslogtreecommitdiff
path: root/node_modules/montage/ui/google/picasa-carousel.reel/picasa-carousel.js
blob: 25d363b0770453399a233607427bb35c956cd63b (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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
/* <copyright>
 This file contains proprietary software owned by Motorola Mobility, Inc.<br/>
 No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/>
 (c) Copyright 2011 Motorola Mobility, Inc.  All Rights Reserved.
 </copyright> */
/**

    @requires montage/core/core
    @requires montage/ui/component
*/
var Montage = require("montage").Montage,
    Component = require("ui/component").Component;
/**
 @class module:"montage/ui/google/map.reel".Map
 @extends module:montage/ui/component.Component
 */
var PicasaCarousel = exports.PicasaCarousel = Montage.create(Component, /** @lends module:"montage/ui/toggle-switch.reel".ToggleSwitch# */ {
	    photoListController: {
	        enumerable: false,
	        value: null
	    },

	    queryParameter: {
	        enumerable: false,
	        value: null
	    },

	    resultCount: {
	        enumerable: false,
	        value: 20
	    },

	    prepareForDraw: {
	        enumerable: false,
	        value: function() {
	            // this.searchForm.identifier = "searchForm";
	            // this.searchForm.addEventListener("submit", this, false);
	        }
	    },

	    _isSearching: {
	        value: false,
	        enumerable: false
	    },

	    isSearching: {
	        enumerable: false,
	        get: function() {
	            return this._isSearching;
	        },
	        set: function(value) {
	            if (value === this._isSearching) {
	                return;
	            }

	            this._isSearching = value;
	            this.needsDraw = true;
	        }
	    },

	    handleSearchFormSubmit: {
	        value: function(evt) {
	            evt.preventDefault();
	            this.performSearch();
	        }
	    },

	    performSearch: {
	        value: function() {
	            if (this.isSearching) {
	                console.log("already searching!")
	                return;
	            }

	            this.isSearching = true;
	            this.searchResults = null;

	            var base = "http://picasaweb.google.com/data/feed/base/all?visibility=public&alt=json&max-results=" + this.resultCount + "&kind=photo&prettyprint=true&imgmax=720u&q="
	//            var base = "http://picasaweb.google.com/data/feed/base/featured?visibility=public&alt=json&max-results=" + this.resultCount + "&kind=photo&prettyprint=true"
	            var url = base + this.queryParameter;

	            var req = new XMLHttpRequest();
	            req.identifier = "searchRequest";
	            req.open("GET", url);
	            req.addEventListener("load", this, false);
	            req.addEventListener("error", this, false);
	            req.send();

	        }
	    },

	    handleSearchRequestLoad: {
	        value: function(evt) {
	            var response = JSON.parse(evt.target.responseText);
	            this.searchResults = response.feed.entry;
	            this.isSearching = false;
	        }
	    },

	    handleSearchRequestError: {
	        value: function(evt) {
	            console.error("handleSearchRequestError", evt);
	            this.isSearching = false;
	        }
	    },

	    searchResults: {
	        enumerable: false,
	        value: null
	    },

	    draw: {
	        value: function() {

	            if (this.isSearching) {
	                this.element.classList.add("searching");
	            } else {
	                this.element.classList.remove("searching");
	            }

	        }
	    }

});