aboutsummaryrefslogtreecommitdiff
path: root/node_modules/montage/ui/feed-reader/feed-reader.reel/feed-reader.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/montage/ui/feed-reader/feed-reader.reel/feed-reader.js')
-rw-r--r--node_modules/montage/ui/feed-reader/feed-reader.reel/feed-reader.js116
1 files changed, 107 insertions, 9 deletions
diff --git a/node_modules/montage/ui/feed-reader/feed-reader.reel/feed-reader.js b/node_modules/montage/ui/feed-reader/feed-reader.reel/feed-reader.js
index 838a957d..cc652417 100644
--- a/node_modules/montage/ui/feed-reader/feed-reader.reel/feed-reader.js
+++ b/node_modules/montage/ui/feed-reader/feed-reader.reel/feed-reader.js
@@ -41,42 +41,140 @@ exports.FeedReader = Montage.create(Component, {
41 } 41 }
42 }, 42 },
43 43
44 // time in ms between slides
45 interval: {value: 3, distinct: true},
46
47 maxEntries: {value: 10, distinct: true},
48
44 entries: {value: null}, 49 entries: {value: null},
45 50
51 _feedDisplayMode: {value: null},
52 feedDisplayMode: {
53 get: function() {
54 return this._feedDisplayMode;
55 },
56 set: function(value) {
46 57
47 _startLoading: { 58 this.removeEntryAnimation();
48 value: function() { 59 this._feedDisplayMode = value;
49 //Notifier.show('Loading ... please wait', null, {top: this.element.style.top, left: this.element.style.left + 20}); 60
61 this.addEntryAnimation();
50 } 62 }
51 }, 63 },
52 64
53 _stopLoading: { 65
54 value: function() { 66 feedEntryTimer: {enumerable: false, value: null},
55 //Notifier.hide(); 67
68
69 activeFeedEntry: {value: null},
70 _activeIndex: {value: null},
71 activeIndex: {
72 get: function() {
73 return this._activeIndex || 0;
74 },
75 set: function(index) {
76 if(this.entries) {
77 var max = this.entries.length-1;
78 if(index > max) {
79 index = 0;
80 }
81 if(index < 0) {
82 index = 0;
83 }
84 this._activeIndex = index;
85 this.activeFeedEntry = this.entries[this._activeIndex];
86 } else {
87 this._activeIndex = 0;
88 }
56 } 89 }
57 }, 90 },
58 91
59 _fetchFeed: { 92 _fetchFeed: {
60 value: function() { 93 value: function() {
94
61 var url = this.feedURL; 95 var url = this.feedURL;
62 var feed = new google.feeds.Feed(url); 96 var feed = new google.feeds.Feed(url);
63 feed.setNumEntries(10); 97 feed.setNumEntries(10);
64 98
65 var self = this; 99 var self = this;
66
67 this._startLoading();
68 self.entries = []; 100 self.entries = [];
69 101
70 feed.load(function(result) { 102 feed.load(function(result) {
71 self._stopLoading(); 103 self.removeEntryAnimation();
72 if(result.error) { 104 if(result.error) {
73 self.entries = []; 105 self.entries = [];
74 } else { 106 } else {
75 //console.log('entries: ', result.feed.entries); 107 //console.log('entries: ', result.feed.entries);
108 self.addEntryAnimation();
76 self.entries = result.feed.entries; 109 self.entries = result.feed.entries;
110 self.activeIndex = 0;
111
77 } 112 }
113
114
78 }); 115 });
79 } 116 }
117 },
118
119 addEntryAnimation: {
120 value: function() {
121 var self = this;
122 if("animation" == this.feedDisplayMode) {
123 this.element.addEventListener('webkitAnimationStart', this);
124 this.element.addEventListener('webkitAnimationIteration', this);
125 this.element.addEventListener('webkitAnimationEnd', this);
126 } else {
127 // timer
128 this.feedEntryTimer = setInterval(function() {
129 self.activeIndex = self.activeIndex + 1;
130 }, (this.interval * 1000));
131 }
132 }
133 },
134
135 removeEntryAnimation: {
136 value: function() {
137 if("animation" == this.feedDisplayMode) {
138 this.element.removeEventListener('webkitAnimationStart', this);
139 this.element.removeEventListener('webkitAnimationIteration', this);
140 this.element.removeEventListener('webkitAnimationEnd', this);
141
142 } else {
143 if(this.feedEntryTimer) {
144 window.clearInterval(this.feedEntryTimer);
145 }
146 }
147 }
148 },
149
150 handleWebkitAnimationStart: {
151 value: function() {
152 console.log('animation start');
153 }
154 },
155
156 handleWebkitAnimationIteration: {
157 value: function() {
158 console.log('animation iteration');
159 this.activeIndex = this.activeIndex + 1;
160 }
161 },
162
163 handleWebkitAnimationEnd: {
164 value: function() {
165 console.log('animation end');
166 }
167 },
168
169 prepareForDraw: {
170 value: function() {
171 }
172 },
173
174 draw: {
175 value: function() {
176
177 }
80 } 178 }
81 179
82}); 180});