Commit e1fadd02c733fb5af9fac8d66dbf1717a4732add
1 parent
5215e1c4
Exists in
master
and in
8 other branches
Update service
Showing
2 changed files
with
108 additions
and
84 deletions
Show diff stats
src/app/components/article-service/article.service.js
... | ... | @@ -32,7 +32,8 @@ |
32 | 32 | var url = service.apiArticles + articleId; |
33 | 33 | var paramsExtended = angular.extend({}, params); |
34 | 34 | |
35 | - UtilService.get(url, {params: paramsExtended}).then(function(data){ | |
35 | + UtilService.get(url, {params: paramsExtended}) | |
36 | + .then(function(data){ | |
36 | 37 | cbSuccess(data); |
37 | 38 | }).catch(function(error){ |
38 | 39 | cbError(error); |
... | ... | @@ -47,43 +48,38 @@ |
47 | 48 | throw { name: 'NotImplementedYet', message: 'The service "getArticleBySlug" is not implemented yet.'}; |
48 | 49 | } |
49 | 50 | |
50 | - function getCategories (articleId, cbSuccess, cbError) { | |
51 | + function getCategories (articleId, params, cbSuccess, cbError) { | |
51 | 52 | // Ex.: /api/v1/articles/103358?fields= |
52 | 53 | |
53 | 54 | var url = service.apiArticles + articleId; |
54 | - | |
55 | - UtilService.get(url, {params: { | |
55 | + var paramsExtended = angular.extend({ | |
56 | 56 | 'fields[]': ['id', 'categories'] |
57 | - }}).then(function(data){ | |
57 | + }, params); | |
58 | + | |
59 | + UtilService.get(url, {params: paramsExtended}) | |
60 | + .then(function(data){ | |
58 | 61 | cbSuccess(data); |
59 | 62 | }).catch(function(error){ |
60 | 63 | cbError(error); |
61 | 64 | }); |
62 | 65 | } |
63 | 66 | |
64 | - function getCategoryBySlug () { | |
67 | + function getCategoryBySlug (/*slug, params, cbSuccess, cbError*/) { | |
65 | 68 | throw { name: 'NotImplementedYet', message: 'The service "getArticleBySlug" is not implemented yet.'}; |
66 | 69 | } |
67 | 70 | |
68 | - function getTopics (cbSuccess, cbError) { | |
71 | + function getTopics (params, cbSuccess, cbError) { | |
69 | 72 | // Ex.: /api/v1/articles/103358/children?fields= |
70 | - | |
71 | - var url = service.apiArticles + API.articleId.home + '/children'; | |
72 | - | |
73 | - UtilService.get(url, {params: { | |
74 | - 'fields[]': ['id', 'title', 'slug', 'abstract', 'categories', 'setting', 'children_count', 'hits'] | |
75 | - }}).then(function(data){ | |
76 | - cbSuccess(data); | |
77 | - }).catch(function(error){ | |
78 | - cbError(error); | |
79 | - }); | |
73 | + getTopicById(API.articleId.home); | |
80 | 74 | } |
81 | 75 | |
82 | - function getTopicById (topicId, cbSuccess, cbError) { | |
83 | - // Ex.: /api/v1/articles/103358/children/121521?fields= | |
76 | + function getTopicById (topicId, params, cbSuccess, cbError) { | |
77 | + // Ex.: /api/v1/articles/103358/children?fields= | |
84 | 78 | |
85 | - // var url = service.apiArticles + API.articleId.home + '/children/' + topicId; // dont need to chain | |
86 | - var url = service.apiArticles + topicId; | |
79 | + var url = service.apiArticles + topicId + '/children'; | |
80 | + var paramsExtended = angular.extend({ | |
81 | + 'fields[]': ['id', 'categories'] | |
82 | + }, params); | |
87 | 83 | |
88 | 84 | UtilService.get(url, {params: { |
89 | 85 | 'fields[]': ['id', 'title', 'body', 'slug', 'abstract', 'categories', 'setting', 'children_count', 'hits'] |
... | ... | @@ -111,11 +107,23 @@ |
111 | 107 | }); |
112 | 108 | } |
113 | 109 | |
110 | + /** | |
111 | + * Ex.: /api/v1/articles/[article_id]/children?[params]content_type=ProposalsDiscussionPlugin::Proposal | |
112 | + * Ex.: /api/v1/articles/103644/children?limit=20&fields=id,name,slug,abstract,created_by&content_type=ProposalsDiscussionPlugin::Proposal | |
113 | + * | |
114 | + * @param {Integer} topicId topic where has those proposals | |
115 | + * @param {Object} params params for pagination ant others | |
116 | + * @param {Function} cbSuccess callback for success | |
117 | + * @param {Function} cbError callback for error | |
118 | + * @return {Array} [description] | |
119 | + */ | |
114 | 120 | function getProposalsByTopicId (topicId, params, cbSuccess, cbError) { |
115 | - var url = service.apiArticles + topicId; | |
121 | + var url = service.apiArticles + topicId + '/children'; | |
116 | 122 | |
117 | 123 | var paramsExtended = angular.extend({ |
118 | 124 | 'fields[]': ['id', 'title', 'abstract', 'children', 'children_count'], |
125 | + 'limit':'20', | |
126 | + 'page':'1', | |
119 | 127 | 'content_type':'ProposalsDiscussionPlugin::Proposals' |
120 | 128 | }, params); |
121 | 129 | |
... | ... | @@ -126,11 +134,10 @@ |
126 | 134 | }); |
127 | 135 | } |
128 | 136 | |
129 | - function getRandomProposal (cbSuccess, cbError) {} | |
130 | - | |
131 | 137 | function getEvents (community_id, params, cbSuccess, cbError) { |
138 | + // Ex.: /api/v1/communities/19195/articles?categories_ids[]=' + cat_id + '&content_type=Event'; | |
132 | 139 | // Ex.: /api/v1/communities/' + community_id + '/articles?categories_ids[]=' + cat_id + '&content_type=Event'; |
133 | - | |
140 | + | |
134 | 141 | var url = service.apiCommunities + community_id + '/articles'; |
135 | 142 | var paramsExtended = angular.extend({ |
136 | 143 | 'fields[]': ['id', 'slug', 'title', 'abstract', 'body', 'categories', 'created_at', 'start_date', 'end_date', 'hits'], | ... | ... |
src/app/components/dialoga-service/dialoga.service.js
... | ... | @@ -9,24 +9,23 @@ |
9 | 9 | function DialogaService($rootScope, $sce, API, ArticleService, UtilService, Slug, $log) { |
10 | 10 | $log.debug('DialogaService'); |
11 | 11 | |
12 | - var service = { | |
13 | - getHome: getHome, | |
14 | - getAbout: getAbout, | |
15 | - getThemes: getThemes, | |
16 | - getPrograms: getPrograms, | |
17 | - getProgramBySlug: getProgramBySlug, | |
18 | - getProgramsRandom: getProgramsRandom, | |
19 | - getProposals: getProposals, | |
20 | - getProposalsByTopicId: getProposalsByTopicId, | |
21 | - getEvents: getEvents, | |
22 | - getQuestions: getQuestions, | |
23 | - searchProgram: searchProgram, | |
24 | - searchProposal: searchProposal, | |
25 | - }; | |
12 | + var extendedService = angular.extend({}, ArticleService); | |
13 | + | |
14 | + extendedService.serviceDialoga = $rootScope.basePath + '/api/v1/dialoga_plugin/'; | |
15 | + extendedService.getHome = getHome; | |
16 | + extendedService.getAbout = getAbout; | |
17 | + extendedService.getThemes = getThemes; | |
18 | + extendedService.getPrograms = getPrograms; | |
19 | + extendedService.getProgramBySlug = getProgramBySlug; | |
20 | + extendedService.getProgramsRandom = getProgramsRandom; | |
21 | + extendedService.getEvents = getEvents; // override | |
22 | + extendedService.getQuestions = getQuestions; | |
23 | + extendedService.searchPrograms = searchPrograms; | |
24 | + extendedService.searchProposals = searchProposals; | |
26 | 25 | |
27 | 26 | var CACHE = {}; |
28 | 27 | |
29 | - return service; | |
28 | + return extendedService; | |
30 | 29 | |
31 | 30 | function getHome (cbSuccess, cbError) { |
32 | 31 | if( !!CACHE.home ){ |
... | ... | @@ -91,11 +90,11 @@ |
91 | 90 | } |
92 | 91 | |
93 | 92 | function getProgramBySlug (slug, cbSuccess, cbError) { |
94 | - | |
93 | + | |
95 | 94 | if( !CACHE.programs ){ |
96 | 95 | getPrograms(_getProgramBySlug, cbError); |
97 | 96 | } else { |
98 | - _getProgramBySlug(); | |
97 | + _getProgramBySlug(); | |
99 | 98 | } |
100 | 99 | |
101 | 100 | function _getProgramBySlug(){ |
... | ... | @@ -110,56 +109,46 @@ |
110 | 109 | } |
111 | 110 | } |
112 | 111 | |
113 | - function getProgramsRandom (cbSuccess, cbError) { | |
114 | - getPrograms(cbSuccess, cbError); | |
115 | - // TODO: get endpoint for production | |
116 | - // if( !!CACHE.programsRandom ){ | |
117 | - // cbSuccess(CACHE.programsRandom); | |
118 | - // }else{ | |
119 | - // // load article content | |
120 | - // // UtilService.get(API.random_topics, {params: { | |
121 | - // ArticleService.getArticleById(API.articleId.home, {params: { | |
122 | - // 'fields[]': [ | |
123 | - // 'id', 'title', 'slug', 'abstract', 'children_count'], | |
124 | - // 'content_type': 'ProposalsDiscussionPlugin::Topic' | |
125 | - // }}).then(function(data){ | |
126 | - // CACHE.programsRandom = data; | |
127 | - | |
128 | - // cbSuccess(data); | |
129 | - // }).catch(function(error){ | |
130 | - // cbError(error); | |
131 | - // }); | |
132 | - // } | |
133 | - } | |
112 | + // Ex.: /api/v1/dialoga_plugin/random_topics/103358 | |
113 | + // TODO: get endpoint for production | |
114 | + // TODO: put at cache? | |
115 | + function getProgramsRandom(params, cbSuccess, cbError) { | |
134 | 116 | |
135 | - function getProposals (param, cbSuccess, cbError) { | |
136 | - ArticleService.getProposals(param, function (data){ | |
137 | - CACHE.proposals = data; | |
117 | + if( !!CACHE.programsRandom ){ | |
118 | + cbSuccess(CACHE.programsRandom); | |
119 | + }else{ | |
120 | + var mapFromCache = !!CACHE.programs; | |
138 | 121 | |
139 | - cbSuccess(CACHE.proposals); | |
140 | - }, cbError); | |
141 | - } | |
122 | + var url = extendedService.serviceDialoga + 'random_topics/' + API.articleId.home; | |
123 | + var fields = null; | |
142 | 124 | |
143 | - function getProposalsByTopicId (topicId, params, cbSuccess, cbError) { | |
144 | - ArticleService.getProposalsByTopicId(topicId, params, function (data){ | |
145 | - CACHE.proposals = data; | |
125 | + if (mapFromCache){ | |
126 | + // get only references | |
127 | + fields = ['id', 'title', 'slug']; | |
128 | + }else{ | |
129 | + // get all content | |
130 | + fields = []; | |
131 | + } | |
132 | + | |
133 | + var paramsExtended = angular.extend({ | |
134 | + 'fields[]': fields | |
135 | + }, params); | |
146 | 136 | |
147 | - cbSuccess(CACHE.proposals); | |
148 | - }, cbError); | |
137 | + UtilService.get(url, {params: paramsExtended}).then(function(data){ | |
138 | + _pipeHandleProgramsRandomFromCache(mapFromCache, data, cbSuccess); | |
139 | + }).catch(function(error){ | |
140 | + cbError(error); | |
141 | + }); | |
142 | + } | |
149 | 143 | } |
150 | 144 | |
151 | 145 | function getEvents (params, cbSuccess, cbError) { |
152 | - if( !!CACHE.events ){ | |
153 | - cbSuccess(CACHE.events); | |
154 | - }else{ | |
155 | - ArticleService.getEvents(API.communityId, params, function(data){ | |
156 | - CACHE.events = data; | |
146 | + var paramsExtended = angular.extend({}, params); | |
157 | 147 | |
158 | - cbSuccess(data); | |
159 | - }, cbError); | |
160 | - } | |
148 | + ArticleService.getEvents(API.communityId, paramsExtended, cbSuccess, cbError); | |
161 | 149 | } |
162 | 150 | |
151 | + // TODO: implement | |
163 | 152 | function getQuestions (cbSuccess/*, cbError*/) { |
164 | 153 | if( !!CACHE.questions ){ |
165 | 154 | cbSuccess(CACHE.questions); |
... | ... | @@ -172,9 +161,13 @@ |
172 | 161 | } |
173 | 162 | } |
174 | 163 | |
175 | - function searchProgram (cbSuccess, cbError) {} | |
164 | + function searchPrograms (query, cbSuccess, cbError) { | |
165 | + ArticleService.searchTopics({query: query}, cbSuccess, cbError); | |
166 | + } | |
176 | 167 | |
177 | - function searchProposal (cbSuccess, cbError) {} | |
168 | + function searchProposals (query, cbSuccess, cbError) { | |
169 | + ArticleService.searchProposals({query: query}, cbSuccess, cbError); | |
170 | + } | |
178 | 171 | |
179 | 172 | function _pipeHandleYoutube (data) { |
180 | 173 | var abstract = data.article.abstract; |
... | ... | @@ -241,6 +234,30 @@ |
241 | 234 | } |
242 | 235 | } |
243 | 236 | |
237 | + function _pipeHandleProgramsRandomFromCache (mapFromCache, data, cbSuccess){ | |
238 | + | |
239 | + if(mapFromCache){ | |
240 | + var result = []; | |
241 | + var refPrograms = data.articles; | |
242 | + | |
243 | + for (var i = CACHE.programs.length - 1; i >= 0; i--) { | |
244 | + var cachedProgram = CACHE.programs[i]; | |
245 | + | |
246 | + for (var j = refPrograms.length - 1; j >= 0; j--) { | |
247 | + var refProgram = refPrograms[j]; | |
248 | + | |
249 | + if(refProgram.id === cachedProgram.id){ | |
250 | + result.push(cachedProgram); | |
251 | + } | |
252 | + } | |
253 | + } | |
254 | + | |
255 | + data.articles = result; | |
256 | + } | |
257 | + | |
258 | + cbSuccess(data); | |
259 | + } | |
260 | + | |
244 | 261 | function forceIframeParams(abstract) { |
245 | 262 | var patternIframe = '<iframe src="'; |
246 | 263 | var indexOfIframe = abstract.indexOf(patternIframe); | ... | ... |