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.js83
1 files changed, 52 insertions, 31 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 8fd9ae22..0d5d7bb1 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
@@ -40,35 +40,39 @@ exports.FeedReader = Montage.create(Component, {
40 this._fetchFeed(); 40 this._fetchFeed();
41 } 41 }
42 }, 42 },
43 43
44 // time in ms between slides 44 // time in ms between slides
45 interval: {value: 3, distinct: true}, 45 interval: {value: 3, distinct: true},
46 46
47 maxEntries: {value: 10, distinct: true}, 47 maxEntries: {value: 10, distinct: true},
48 48
49 entries: {value: null}, 49 entries: {value: null},
50 50
51 _feedDisplayMode: {value: null}, 51 _feedDisplayMode: {value: null},
52 feedDisplayMode: { 52 feedDisplayMode: {
53 get: function() { 53 get: function() {
54 return this._feedDisplayMode; 54 return this._feedDisplayMode;
55 }, 55 },
56 set: function(value) { 56 set: function(value) {
57 this._feedDisplayMode = value; 57
58 this.removeEntryAnimation();
59 this._feedDisplayMode = value;
60
61 this.addEntryAnimation();
58 } 62 }
59 }, 63 },
60 64
61 65
62 feedEntryTimer: {enumerable: false, value: null}, 66 feedEntryTimer: {enumerable: false, value: null},
63 67
64 68
65 activeFeedEntry: {value: null}, 69 activeFeedEntry: {value: null},
66 _activeIndex: {value: null}, 70 _activeIndex: {value: null},
67 activeIndex: { 71 activeIndex: {
68 get: function() { 72 get: function() {
69 return this._activeIndex || 0; 73 return this._activeIndex || 0;
70 }, 74 },
71 set: function(index) { 75 set: function(index) {
72 if(this.entries) { 76 if(this.entries) {
73 var max = this.entries.length-1; 77 var max = this.entries.length-1;
74 if(index > max) { 78 if(index > max) {
@@ -77,17 +81,17 @@ exports.FeedReader = Montage.create(Component, {
77 if(index < 0) { 81 if(index < 0) {
78 index = 0; 82 index = 0;
79 } 83 }
80 this._activeIndex = index; 84 this._activeIndex = index;
81 this.activeFeedEntry = this.entries[this._activeIndex]; 85 this.activeFeedEntry = this.entries[this._activeIndex];
82 } else { 86 } else {
83 this._activeIndex = 0; 87 this._activeIndex = 0;
84 } 88 }
85 } 89 }
86 }, 90 },
87 91
88 _fetchFeed: { 92 _fetchFeed: {
89 value: function() { 93 value: function() {
90 94
91 var url = this.feedURL; 95 var url = this.feedURL;
92 var feed = new google.feeds.Feed(url); 96 var feed = new google.feeds.Feed(url);
93 feed.setNumEntries(10); 97 feed.setNumEntries(10);
@@ -96,38 +100,44 @@ exports.FeedReader = Montage.create(Component, {
96 self.entries = []; 100 self.entries = [];
97 101
98 feed.load(function(result) { 102 feed.load(function(result) {
99 //self.removeEntryAnimation(); 103 self.removeEntryAnimation();
100 if(result.error) { 104 if(result.error) {
101 self.entries = []; 105 self.entries = [];
102 } else { 106 } else {
103 //console.log('entries: ', result.feed.entries); 107 //console.log('entries: ', result.feed.entries);
108 self.addEntryAnimation();
104 self.entries = result.feed.entries; 109 self.entries = result.feed.entries;
105 this._activeIndex = 0; 110 this._activeIndex = 0;
106 } 111 }
107 112
108 113
109 }); 114 });
110 } 115 }
111 }, 116 },
112 117
113 addEntryAnimation: { 118 addEntryAnimation: {
114 value: function() { 119 value: function() {
115 var self = this; 120 var self = this;
116 if("animation" == this.feedDisplayMode) { 121 if("animation" == this.feedDisplayMode) {
117 this.element.addEventListener('animationend', this); 122 this.element.addEventListener('webkitAnimationStart', this);
123 this.element.addEventListener('webkitAnimationIteration', this);
124 this.element.addEventListener('webkitAnimationEnd', this);
118 } else { 125 } else {
119 // timer 126 // timer
120 this.feedEntryTimer = setInterval(function() { 127 this.feedEntryTimer = setInterval(function() {
121 self.activeIndex = self.activeIndex + 1; 128 self.activeIndex = self.activeIndex + 1;
122 }, (this.interval * 1000)); 129 }, (this.interval * 1000));
123 } 130 }
124 } 131 }
125 }, 132 },
126 133
127 removeEntryAnimation: { 134 removeEntryAnimation: {
128 value: function() { 135 value: function() {
129 if("animation" == this.feedDisplayMode) { 136 if("animation" == this.feedDisplayMode) {
130 this.element.removeEventListener('animationend', this); 137 this.element.removeEventListener('webkitAnimationStart', this);
138 this.element.removeEventListener('webkitAnimationIteration', this);
139 this.element.removeEventListener('webkitAnimationEnd', this);
140
131 } else { 141 } else {
132 if(this.feedEntryTimer) { 142 if(this.feedEntryTimer) {
133 window.clearInterval(this.feedEntryTimer); 143 window.clearInterval(this.feedEntryTimer);
@@ -135,23 +145,34 @@ exports.FeedReader = Montage.create(Component, {
135 } 145 }
136 } 146 }
137 }, 147 },
138 148
139 handleAnimationend: { 149 handleWebkitAnimationStart: {
140 value: function() { 150 value: function() {
141 console.log('animation end'); 151 console.log('animation start');
142 this.activeIndex = this.activeIndex + 1;
143 } 152 }
144 }, 153 },
145 154
155 handleWebkitAnimationIteration: {
156 value: function() {
157 console.log('animation iteration');
158 this.activeIndex = this.activeIndex + 1;
159 }
160 },
161
162 handleWebkitAnimationEnd: {
163 value: function() {
164 console.log('animation end');
165 }
166 },
167
146 prepareForDraw: { 168 prepareForDraw: {
147 value: function() { 169 value: function() {
148 this.addEntryAnimation();
149 } 170 }
150 }, 171 },
151 172
152 draw: { 173 draw: {
153 value: function() { 174 value: function() {
154 175
155 } 176 }
156 } 177 }
157 178