aboutsummaryrefslogtreecommitdiff
path: root/node_modules/montage/ui/feed-reader/feed-reader.reel
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/montage/ui/feed-reader/feed-reader.reel')
-rw-r--r--node_modules/montage/ui/feed-reader/feed-reader.reel/feed-reader.html30
-rw-r--r--node_modules/montage/ui/feed-reader/feed-reader.reel/feed-reader.js116
2 files changed, 120 insertions, 26 deletions
diff --git a/node_modules/montage/ui/feed-reader/feed-reader.reel/feed-reader.html b/node_modules/montage/ui/feed-reader/feed-reader.reel/feed-reader.html
index a3523001..56523984 100644
--- a/node_modules/montage/ui/feed-reader/feed-reader.reel/feed-reader.html
+++ b/node_modules/montage/ui/feed-reader/feed-reader.reel/feed-reader.html
@@ -23,17 +23,7 @@
23 } 23 }
24 } 24 }
25 }, 25 },
26 26
27 "repetition": {
28 "module": "montage/ui/repetition.reel",
29 "name": "Repetition",
30 "properties": {
31 "element": {"#": "entries"},
32 "contentController": {"@": "entriesController"},
33 "isSelectionEnabled": true,
34 "orientation": "vertical"
35 }
36 },
37 "feedEntry": { 27 "feedEntry": {
38 "module": "montage/ui/feed-reader/feed-entry.reel", 28 "module": "montage/ui/feed-reader/feed-entry.reel",
39 "name": "FeedEntry", 29 "name": "FeedEntry",
@@ -42,11 +32,11 @@
42 }, 32 },
43 "bindings": { 33 "bindings": {
44 "entry": { 34 "entry": {
45 "boundObject": {"@": "repetition"}, 35 "boundObject": {"@": "owner"},
46 "boundObjectPropertyPath": "objectAtCurrentIteration", 36 "boundObjectPropertyPath": "activeFeedEntry",
47 "oneway": true 37 "oneway": true
48 } 38 }
49 } 39 }
50 }, 40 },
51 41
52 "owner": { 42 "owner": {
@@ -54,17 +44,23 @@
54 "name": "FeedReader", 44 "name": "FeedReader",
55 "properties": { 45 "properties": {
56 "element": {"#": "feed-reader"} 46 "element": {"#": "feed-reader"}
57 } 47 }
58 } 48 }
59 49
60} 50}
61 </script> 51 </script>
62 52
63 <style> 53 <style>
64 .feed-reader { 54 div.feed-reader {
65 padding: 10px; 55 /*padding: 2px;*/
56 height: 120px;
57 width: 380px;
66 } 58 }
67 59
60 .feed-entry {
61 }
62
63
68 </style> 64 </style>
69 65
70 66
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 }