Commit 66f5cb153cd454c219bfb3242b2a3aa7c98842d4
Exists in
master
and in
5 other branches
Merge branch 'master' of gitlab.com:participa/proposal-app
Conflicts: js/handlebars-helpers.js js/main.js
Showing
7 changed files
with
862 additions
and
511 deletions
Show diff stats
images/logo.png
index.html
... | ... | @@ -90,7 +90,6 @@ |
90 | 90 | fjs.parentNode.insertBefore(js, fjs); |
91 | 91 | }(document, 'script', 'facebook-jssdk'));</script> |
92 | 92 | |
93 | - | |
94 | 93 | <div class=""> |
95 | 94 | <div id="proposal-result"></div> |
96 | 95 | </div> |
... | ... | @@ -98,11 +97,20 @@ |
98 | 97 | |
99 | 98 | <script id="proposal-template" type="text/x-handlebars-template"> |
100 | 99 | <header class="container"> |
101 | - <a id="display-contrast" href="#">Alto Contraste</a> | |
102 | - <div class="participar"> | |
103 | - <!--<a href="#" class="button button-inline participe">Participe</a>--> | |
104 | - <a href="#" class="entrar">Entrar</a> | |
105 | - <a href="#" class="logout hide">Sair</a> | |
100 | + <div class="row" style="margin: 10px 0 0 0"> | |
101 | + <div class="col-xs-5"> | |
102 | + <a id="display-contrast" href="#">Alto Contraste</a> | |
103 | + </div> | |
104 | + <div class="col-xs-7"> | |
105 | + <div class="participar"> | |
106 | + <!--<a href="#" class="button button-inline participe">Participe</a>--> | |
107 | + <a id="login-button" href="#" class="login"><i class="icon icon-login"></i>Entrar</a> | |
108 | + <a id="logout-button" href="#" class="logout hide"><i class="icon icon-login"></i><span class="name"></span>Sair</a> | |
109 | + </div> | |
110 | + </div> | |
111 | + <div class="col-xs-12"> | |
112 | + <div id="login-panel" class="hide"></div> | |
113 | + </div> | |
106 | 114 | </div> |
107 | 115 | <h1> |
108 | 116 | <a href="#" class='logo'>{{article.title}}</a> |
... | ... | @@ -304,34 +312,34 @@ |
304 | 312 | |
305 | 313 | <div class="talk-proposal-container col-sm-12"> |
306 | 314 | <section class="talk-proposal box box-propostas"> |
307 | - <div class="container-title box-title">Bate-papo com os ministros</div> | |
315 | + <div class="container-title box-title">Bate-papo com ministras e ministros</div> | |
308 | 316 | <p>Confira as datas e horários:</p> |
309 | 317 | <ul class="calendar saude" data-slick='{"infinite": false, "rows": 2}'> |
310 | 318 | <li> |
311 | - <span id='ep0'>Arthur Chioro</span> | |
319 | + <span id='ep0'></span> | |
312 | 320 | <span>Saúde</span> |
313 | - <div id='ed0' class="date"><i class="fa fa-calendar"></i> 17/06/2015</div><div class="time"><i class="fa fa-clock-o"></i> 19:00</div> | |
321 | + <div id='ed0' class="date"><i class="fa fa-calendar"></i></div><div class="time"><i class="fa fa-clock-o"></i> 19:00</div> | |
314 | 322 | </li> |
315 | 323 | </ul> |
316 | 324 | <ul class="calendar seguranca-publica" data-slick='{"infinite": false, "rows": 2}'> |
317 | 325 | <li> |
318 | - <span id='ep1'>José Eduardo Cardozo</span> | |
326 | + <span id='ep1'></span> | |
319 | 327 | <span id='ed1'>Justiça</span> |
320 | - <div class="date"><i class="fa fa-calendar"></i> 25/04/2015</div><div class="time"><i class="fa fa-clock-o"></i> 19:00</div> | |
328 | + <div class="date"><i class="fa fa-calendar"></i></div><div class="time"><i class="fa fa-clock-o"></i> 19:00</div> | |
321 | 329 | </li> |
322 | 330 | </ul> |
323 | 331 | <ul class="calendar educacao" data-slick='{"infinite": false, "rows": 2}'> |
324 | 332 | <li> |
325 | - <span id='ep2'>Renato Janine Ribeiro</span> | |
333 | + <span id='ep2'></span> | |
326 | 334 | <span>Educação</span> |
327 | - <div id='ed2' class="date"><i class="fa fa-calendar"></i> 24/06/2015</div><div class="time"><i class="fa fa-clock-o"></i> 19:00</div> | |
335 | + <div id='ed2' class="date"><i class="fa fa-calendar"></i></div><div class="time"><i class="fa fa-clock-o"></i> 19:00</div> | |
328 | 336 | </li> |
329 | 337 | </ul> |
330 | 338 | <ul class="calendar reducao-da-pobreza" data-slick='{"infinite": false, "rows": 2}'> |
331 | 339 | <li> |
332 | - <span id='ep3'>Tereza Campello</span> | |
340 | + <span id='ep3'></span> | |
333 | 341 | <span>Desenvolvimento Social</span> |
334 | - <div id='ed3' class="date"><i class="fa fa-calendar"></i> 18/06/2015</div><div class="time"><i class="fa fa-clock-o"></i> 19:00</div> | |
342 | + <div id='ed3' class="date"><i class="fa fa-calendar"></i></div><div class="time"><i class="fa fa-clock-o"></i> 19:00</div> | |
335 | 343 | </li> |
336 | 344 | </ul> |
337 | 345 | </section> |
... | ... | @@ -359,7 +367,7 @@ |
359 | 367 | <a href="#" class="skip button box-footer">Pular</a> |
360 | 368 | </div> |
361 | 369 | </div> |
362 | - <a href="#" class="vote-result box-bottom">Resultados</a> | |
370 | + <a href="#/programas/{{parent.id}}/resultados" class="vote-result box-bottom">Resultados</a> | |
363 | 371 | </div> |
364 | 372 | <div class="social"> |
365 | 373 | <span>Compartilhe esta proposta</span> |
... | ... | @@ -367,13 +375,13 @@ |
367 | 375 | </div> |
368 | 376 | </script> |
369 | 377 | |
370 | - <script id="results" type="text/x-handlebars-template"> | |
378 | + <script id="results-template" type="text/x-handlebars-template"> | |
371 | 379 | <div class="box box-propostas"> |
372 | 380 | <div class="loading">Carregando...</div> |
373 | 381 | <div class="results-content hide"> |
374 | 382 | <a href="#" class="vote-result"><span class="sr-only">Fechar</span><span class="fa fa-times"></span></a> |
375 | 383 | <h2>Resultados</h2> |
376 | - <span class="total">Total de propostas: <strong class="value">{{pagination.total}}</strong></span> | |
384 | + <span class="total">Total de propostas para o programa {{title}}: <strong class="value">{{pagination.total}}</strong></span> | |
377 | 385 | <div class="updated-at"> |
378 | 386 | <span>Última atualização </span> |
379 | 387 | <span class="timeago" title="{{updated_at}}"></span> |
... | ... | @@ -382,7 +390,7 @@ |
382 | 390 | <table class="footable"> |
383 | 391 | <thead> |
384 | 392 | <tr class="header"> |
385 | - <th class="position">Posição <a href="#/artigo/108047" class="hidden-xs"><span class="fa fa-question"></span></a></th> | |
393 | + <th class="position">Posição <a href="#/artigo/108047" class="question-link"><span class="fa fa-question"></span></a></th> | |
386 | 394 | <th class="abstract-text" data-toggle="true">Propostas</th> |
387 | 395 | <th class="views" data-hide="phone">Exibições</th> |
388 | 396 | <th class="votes-for" data-hide="phone"><span class="sr-only">A favor</span><span class="fa fa-check"></span></th> |
... | ... | @@ -407,7 +415,7 @@ |
407 | 415 | </div> |
408 | 416 | </script> |
409 | 417 | |
410 | - <script id="login" type="text/x-handlebars-template"> | |
418 | + <script id="login-template" type="text/x-handlebars-template"> | |
411 | 419 | <div class="loading">Carregando...</div> |
412 | 420 | <form id="login-form" class="login"> |
413 | 421 | <div class="message hide"></div> |
... | ... | @@ -485,7 +493,7 @@ |
485 | 493 | </ul> |
486 | 494 | </script> |
487 | 495 | |
488 | - <script id="article" type="text/x-handlebars-template"> | |
496 | + <script id="article-template" type="text/x-handlebars-template"> | |
489 | 497 | <div class="title"> |
490 | 498 | {{{title}}} |
491 | 499 | </div> |
... | ... | @@ -506,11 +514,11 @@ |
506 | 514 | <a href="#/artigo/107880">Termos de uso</a> |
507 | 515 | </div> |
508 | 516 | |
509 | - <script type='text/javascript' > | |
517 | + <script type="text/javascript"> | |
510 | 518 | loadRequireJS(); |
511 | 519 | </script> |
512 | 520 | |
513 | - <script src='https://www.google.com/recaptcha/api.js?hl=pt-BR' async defer></script> | |
521 | + <script src="https://www.google.com/recaptcha/api.js?hl=pt-BR" async defer></script> | |
514 | 522 | |
515 | 523 | </body> |
516 | 524 | ... | ... |
js/handlebars-helpers.js
... | ... | @@ -18,26 +18,34 @@ define(['handlebars'], function(Handlebars){ |
18 | 18 | var ret = ""; |
19 | 19 | for(var i=0, j=proposals.length; i<j; i++) { |
20 | 20 | var proposal = proposals[i]; |
21 | - | |
22 | - element = '<li class="proposal-item col-sm-6">' + | |
23 | - '<a href="#/programas/'+proposal.id+'" data-target="proposal-item-'+proposal.id+'" class="proposal-link box">' + | |
21 | + | |
22 | + element = '<li class="proposal-item col-sm-6">' + | |
23 | + '<a href="#/programas/' + proposal.id + '" data-target="proposal-item-' + proposal.id + '" class="proposal-link box">' + | |
24 | 24 | '<div class="box-header item">'; |
25 | 25 | category = "<div class='category box-category'>"; |
26 | - | |
27 | - | |
28 | - for(var x=0, y=proposal.categories.length; x<y; x++) { | |
29 | - if((options.hash['category'] != null) && (options.hash['category'] != proposal.categories[x].slug)){ | |
26 | + | |
27 | + | |
28 | + for (var x = 0, y = proposal.categories.length; x < y; x++) { | |
29 | + if ((options.hash['category'] != null) && (options.hash['category'] != proposal.categories[x].slug)) { | |
30 | 30 | element = ''; |
31 | 31 | continue; |
32 | - } | |
33 | - category = category + '<div class="category-'+proposal.categories[x].slug+'">' + proposal.categories[x].name + '</div>'; | |
32 | + } | |
33 | + category = category + '<div class="category-' + proposal.categories[x].slug + '">' + proposal.categories[x].name + '</div>'; | |
34 | 34 | } |
35 | - if(element == ''){ | |
35 | + if (element == '') { | |
36 | 36 | continue; |
37 | 37 | } |
38 | + if (proposal.image) { | |
39 | + category = category + '</div>' + | |
40 | + '<div class="box-body">' + | |
41 | + // '<div class="box__image">' + '<img src="' + options.hash['host'] + proposal.image.url + '" alt="Imagem de apresentação do programa."/>' + '</div>' + | |
42 | + '<div class="box__image" style="background-image:url(' + (options.hash['host'] + proposal.image.url) + ')"></div>' + | |
43 | + '<div class="box__title">' + proposal.title + '</div>' + | |
44 | + (proposal.abstract ? '<div class="box__abstract">' + proposal.abstract + '</div>' : '') + | |
45 | + '<div class="box__footer">' + '<span class="button participe">OPINE NESTE PROGRAMA</span>' + '</div>' + | |
46 | + '</div>'; | |
47 | + } | |
38 | 48 | |
39 | - if(proposal.image) | |
40 | - category = category + '</div>' + '<div class="box-body">' + '<img src="' + options.hash['host'] + proposal.image.url + '" alt="Imagem de apresentação do programa."/>' + proposal.title + (proposal.abstract ? proposal.abstract : '') + '<span class="button participe">OPINE NESTE PROGRAMA</span></div>'; | |
41 | 49 | // element = element + options.fn(proposal); |
42 | 50 | |
43 | 51 | element = element + category; | ... | ... |
... | ... | @@ -0,0 +1,31 @@ |
1 | +$.fn.equalHeights = function(px) { | |
2 | + 'use strict'; | |
3 | + | |
4 | + var currentTallest = 0; | |
5 | + $(this).each(function(index, item){ | |
6 | + var $item = $(item); | |
7 | + $item.height('auto'); // force a 'recalc' height | |
8 | + | |
9 | + if ($item.height() > currentTallest) { currentTallest = $item.height(); } | |
10 | + if (!px && Number.prototype.pxToEm) { currentTallest = currentTallest.pxToEm(); } //use ems unless px is specified | |
11 | + // for ie6, set height since min-height isn't supported | |
12 | + if (typeof(document.body.style.minHeight) === 'undefined') { $item.css({'height': currentTallest}); } | |
13 | + $item.css({'height': currentTallest}); | |
14 | + }); | |
15 | + return this; | |
16 | +}; | |
17 | + | |
18 | +// just in case you need it... | |
19 | +// $.fn.equalWidths = function(px) { | |
20 | +// $(this).each(function(){ | |
21 | +// var currentWidest = 0; | |
22 | +// $(this).children().each(function(i){ | |
23 | +// if($(this).width() > currentWidest) { currentWidest = $(this).width(); } | |
24 | +// }); | |
25 | +// if(!px && Number.prototype.pxToEm) currentWidest = currentWidest.pxToEm(); //use ems unless px is specified | |
26 | +// // for ie6, set width since min-width isn't supported | |
27 | +// if (typeof(document.body.style.minHeight) === "undefined") { $(this).children().css({'width': currentWidest}); } | |
28 | +// $(this).children().css({'min-width': currentWidest}); | |
29 | +// }); | |
30 | +// return this; | |
31 | +// }; | |
0 | 32 | \ No newline at end of file | ... | ... |
js/main.js
... | ... | @@ -7,9 +7,9 @@ define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, F |
7 | 7 | // compile the template |
8 | 8 | var template = Handlebars.compile(templateSource); |
9 | 9 | var supportProposalTemplate = Handlebars.compile(document.getElementById('support-proposal-template').innerHTML); |
10 | - var loginTemplate = Handlebars.compile(document.getElementById('login').innerHTML); | |
11 | - var resultsTemplate = Handlebars.compile(document.getElementById('results').innerHTML); | |
12 | - var articleTemplate = Handlebars.compile(document.getElementById('article').innerHTML); | |
10 | + var loginTemplate = Handlebars.compile(document.getElementById('login-template').innerHTML); | |
11 | + var resultsTemplate = Handlebars.compile(document.getElementById('results-template').innerHTML); | |
12 | + var articleTemplate = Handlebars.compile(document.getElementById('article-template').innerHTML); | |
13 | 13 | |
14 | 14 | // The div/container that we are going to display the results in |
15 | 15 | var resultsPlaceholder = document.getElementById('proposal-result'); |
... | ... | @@ -18,7 +18,7 @@ define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, F |
18 | 18 | |
19 | 19 | var loginButton; |
20 | 20 | |
21 | - var lastHash; | |
21 | + var lastHash = window.location.hash; | |
22 | 22 | |
23 | 23 | var participa = true; |
24 | 24 | |
... | ... | @@ -130,7 +130,7 @@ define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, F |
130 | 130 | |
131 | 131 | if(ProposalApp.hasProposalbeenVoted(article.id)){ |
132 | 132 | console.log("Proposta " + article.id + " já havia sido votada"); |
133 | - Main.displaySuccess(button.closest('.support-proposal .section-content'), 'Voto realizado com sucesso', 800); | |
133 | + Main.displaySuccess(button.closest('.support-proposal .section-content'), 'Seu voto já foi computado nesta proposta', 800); | |
134 | 134 | contextMain.loadRandomProposal(topic_id); |
135 | 135 | e.preventDefault(); |
136 | 136 | return; |
... | ... | @@ -143,8 +143,12 @@ define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, F |
143 | 143 | value: $(this).data('vote-value'), |
144 | 144 | private_token: Main.private_token |
145 | 145 | } |
146 | - }).done(function( /*data*/ ) { | |
147 | - Main.displaySuccess(button.closest('.support-proposal .section-content'), 'Voto realizado com sucesso', 800); | |
146 | + }).done(function(data) { | |
147 | + if(data.vote) { | |
148 | + Main.displaySuccess(button.closest('.support-proposal .section-content'), 'Voto realizado com sucesso', 800); | |
149 | + } else { | |
150 | + Main.displaySuccess(button.closest('.support-proposal .section-content'), 'Seu voto já foi computado nesta proposta', 800); | |
151 | + } | |
148 | 152 | ProposalApp.addVotedProposal(article.id); |
149 | 153 | contextMain.loadRandomProposal(topic_id); |
150 | 154 | }); |
... | ... | @@ -153,6 +157,8 @@ define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, F |
153 | 157 | |
154 | 158 | $body.off('click', '.vote-result'); |
155 | 159 | $body.on('click', '.vote-result', function(e) { |
160 | + // e.preventDefault(); | |
161 | + | |
156 | 162 | var $this = $(this); |
157 | 163 | var $proposalDetail = $this.parents('.proposal-detail'); |
158 | 164 | var $resultsContainer = $proposalDetail.find('.results-container'); |
... | ... | @@ -160,463 +166,494 @@ define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, F |
160 | 166 | if($resultsContainer.css('display') === 'none') { |
161 | 167 | Main.loadRanking($resultsContainer, topic_id, 1); |
162 | 168 | } else { |
163 | - $('.experience-proposal-container').show(); | |
164 | - $('.talk-proposal-container').show(); | |
169 | + $proposalDetail.find('.experience-proposal-container').show(); | |
170 | + $proposalDetail.find('.talk-proposal-container').show(); | |
165 | 171 | $resultsContainer.hide(); |
166 | 172 | } |
167 | - e.preventDefault(); | |
168 | 173 | }); |
174 | + | |
175 | + // $body.off('click', '.question-link'); | |
176 | + // $body.on('click', '.question-link', function(e) { | |
177 | + // var $this = $(this); | |
178 | + | |
179 | + // // Main.navigateTo($this.attr('href'), backTo); | |
180 | + // }); | |
169 | 181 | }).fail(function(){ |
170 | 182 | $loading.hide(); |
171 | 183 | $('.support-proposal .alert').show(); |
172 | 184 | }); |
173 | - }, | |
174 | - | |
175 | - loadRanking: function($resultsContainer, topic_id, page) { | |
176 | - $resultsContainer.find('.loading').show(); | |
177 | - $resultsContainer.find('.results-content').hide(); | |
178 | - | |
179 | - var per_page = 10; | |
180 | - var url = host + '/api/v1/proposals_discussion_plugin/' + topic_id + '/ranking' + '?private_token=' + Main.private_token + '&per_page='+per_page+'&page='+page; | |
181 | - $.getJSON(url).done(function( data, stats, xhr ) { | |
182 | - data.pagination = { | |
183 | - total: parseInt(xhr.getResponseHeader('Total')), | |
184 | - per_page: parseInt(xhr.getResponseHeader('Per-Page')), | |
185 | - page: page, | |
186 | - }; | |
187 | - | |
188 | - $resultsContainer.html(resultsTemplate(data)); | |
189 | - $resultsContainer.find('.loading').hide(); | |
190 | - $resultsContainer.find('.results-content').show(); | |
191 | - $(".timeago").timeago(); | |
192 | - $resultsContainer.show(); | |
193 | - | |
194 | - $('.footable').footable(); | |
195 | - | |
196 | - if(data.pagination.total > data.pagination.per_page) { | |
197 | - $resultsContainer.find('.paging').pagination({ | |
198 | - items: data.pagination.total, | |
199 | - itemsOnPage: data.pagination.per_page, | |
200 | - currentPage: data.pagination.page, | |
201 | - prevText: '«', | |
202 | - nextText: '»', | |
203 | - cssStyle: 'compact-theme', | |
204 | - onPageClick: function(page, e) { | |
205 | - Main.loadRanking($resultsContainer, topic_id, page); | |
206 | - e.preventDefault(); | |
207 | - } | |
208 | - }); | |
209 | - } | |
210 | - $resultsContainer.find('.abstract-text .truncated').click(function() { | |
211 | - $(this).toggleClass('truncated'); | |
185 | + }, | |
186 | + loadRanking: function($resultsContainer, topic_id, page) { | |
187 | + $resultsContainer.find('.loading').show(); | |
188 | + $resultsContainer.find('.results-content').hide(); | |
189 | + | |
190 | + var per_page = 10; | |
191 | + var url = host + '/api/v1/proposals_discussion_plugin/' + topic_id + '/ranking' + '?private_token=' + Main.private_token + '&per_page='+per_page+'&page='+page; | |
192 | + $.getJSON(url).done(function( data, stats, xhr ) { | |
193 | + data.pagination = { | |
194 | + total: parseInt(xhr.getResponseHeader('Total')), | |
195 | + per_page: parseInt(xhr.getResponseHeader('Per-Page')), | |
196 | + page: page, | |
197 | + }; | |
198 | + | |
199 | + // hack: add title to result table | |
200 | + data.title = $resultsContainer.closest('.categories').find('.proposal-header .title').text(); | |
201 | + | |
202 | + $resultsContainer.html(resultsTemplate(data)); | |
203 | + $resultsContainer.find('.loading').hide(); | |
204 | + $resultsContainer.find('.results-content').show(); | |
205 | + $(".timeago").timeago(); | |
206 | + $resultsContainer.show(); | |
207 | + | |
208 | + $('.footable').footable(); | |
209 | + | |
210 | + if(data.pagination.total > data.pagination.per_page) { | |
211 | + $resultsContainer.find('.paging').pagination({ | |
212 | + items: data.pagination.total, | |
213 | + itemsOnPage: data.pagination.per_page, | |
214 | + currentPage: data.pagination.page, | |
215 | + prevText: '«', | |
216 | + nextText: '»', | |
217 | + cssStyle: 'compact-theme', | |
218 | + onPageClick: function(page, e) { | |
219 | + Main.loadRanking($resultsContainer, topic_id, page); | |
220 | + e.preventDefault(); | |
221 | + } | |
212 | 222 | }); |
213 | - | |
214 | - // scroll to the end | |
215 | - $('html, body').animate({ | |
216 | - scrollTop: $(document).height() | |
217 | - }, 'fast'); | |
223 | + } | |
224 | + $resultsContainer.find('.abstract-text .truncated').click(function() { | |
225 | + $(this).toggleClass('truncated'); | |
218 | 226 | }); |
219 | - $('.experience-proposal-container').hide(); | |
220 | - $('.talk-proposal-container').hide(); | |
221 | - }, | |
222 | 227 | |
223 | - loginCallback: function(loggedIn, token, user) { | |
224 | - logged_in = loggedIn; | |
225 | - $('.login .message').text(''); | |
226 | - var requireLoginContainer = loginButton.closest('.require-login-container'); | |
227 | - | |
228 | - if(logged_in) { | |
229 | - Main.showLogout(); | |
230 | - if(token){ | |
231 | - Main.private_token = token; | |
232 | - } | |
233 | - requireLoginContainer = $('.require-login-container'); | |
234 | - requireLoginContainer.find('.require-login').show(); | |
235 | - requireLoginContainer.find('.require-login .message').show(); | |
236 | - requireLoginContainer.find('.login-container').hide(); | |
237 | - $.cookie('_dialoga_session', Main.private_token); | |
238 | - } else if (user) { | |
239 | - var loginContainer = requireLoginContainer.find('.login-container'); | |
240 | - loginContainer.show(); | |
241 | - loginContainer.find('.new-user').click(); | |
242 | - var signupForm = loginContainer.find('#signup-form'); | |
243 | - signupForm.find("#user_email").val(user.email); | |
244 | - signupForm.find("#user_name").val(user.login); | |
245 | - signupForm.find("#user_oauth_providers").val(user.oauth_providers); | |
246 | - //signupForm.find(".password").hide(); | |
247 | - //signupForm.find(".password-confirmation").hide(); | |
248 | - } else { | |
249 | - requireLoginContainer.find('.require-login').hide(); | |
250 | - requireLoginContainer.find('.login-container').show(); | |
251 | - Main.showLogin(); | |
228 | + var scrollTop = $(document).height(); | |
229 | + var proposalOffset = $resultsContainer.offset(); | |
230 | + if(proposalOffset){ | |
231 | + scrollTop = proposalOffset.top; | |
252 | 232 | } |
253 | - }, | |
254 | - guid: function() { | |
255 | - function s4() { | |
256 | - return Math.floor((1 + Math.random()) * 0x10000) | |
257 | - .toString(16) | |
258 | - .substring(1); | |
233 | + | |
234 | + // scroll to the end | |
235 | + $('html, body').animate({scrollTop: scrollTop }, 'fast'); | |
236 | + }); | |
237 | + $('.experience-proposal-container').hide(); | |
238 | + $('.talk-proposal-container').hide(); | |
239 | + }, | |
240 | + loginCallback: function(loggedIn, token, user) { | |
241 | + logged_in = loggedIn; | |
242 | + $('.login .message').text(''); | |
243 | + var requireLoginContainer = loginButton.closest('.require-login-container'); | |
244 | + | |
245 | + if(logged_in) { | |
246 | + Main.showLogout(); | |
247 | + if(token){ | |
248 | + Main.private_token = token; | |
259 | 249 | } |
260 | - return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4(); | |
261 | - }, | |
262 | - display_article: function(article_id, backTo) { | |
263 | - var url = host + '/api/v1/articles/' + article_id + '?private_token=' + Main.private_token; | |
264 | - $.getJSON(url).done(function( data ) { | |
265 | - $('#article-container .article-content').html(articleTemplate(data.article)); | |
266 | - $('#article-container').show(); | |
267 | - $('#proposal-categories').hide(); | |
268 | - $('#proposal-group').hide(); | |
269 | - $('nav').hide(); | |
270 | - $('#content').hide(); | |
271 | - $('#article-container .go-back').attr('href', backTo); | |
272 | - }); | |
273 | - }, | |
274 | - // inicio Eduardo | |
275 | - randomProposalByTheme: function(themeClasses) { | |
276 | - $('#proposal-group .proposal-list .proposal-item').hide(); | |
277 | - $.each(themeClasses, function(i, themeClass) { | |
278 | - var proposalsByTheme = $('#proposal-group .proposal-list .proposal-item').find('.' + themeClass); | |
279 | - var randomizedIndex = Math.floor(Math.random() * proposalsByTheme.length); | |
280 | - var proposalToShow = $(proposalsByTheme[randomizedIndex]).parents().filter('.proposal-item'); | |
281 | - $(proposalToShow).show(); | |
282 | - }); | |
283 | - }, | |
284 | - display_category_tab: function(){ | |
285 | - // $('#proposal-group').hide(); | |
286 | - this.randomProposalByTheme(['category-saude', 'category-seguranca-publica', 'category-educacao', 'category-reducao-da-pobreza']); | |
287 | - $('#proposal-group').show(); /* Show random proposals*/ | |
288 | - $('.content').addClass('background'); /* Add class background */ | |
250 | + // requireLoginContainer = $('.require-login-container'); | |
251 | + requireLoginContainer.find('.require-login').show(); | |
252 | + requireLoginContainer.find('.require-login .message').show(); | |
253 | + requireLoginContainer.find('.login-container').hide(); | |
254 | + $.cookie('_dialoga_session', Main.private_token); | |
255 | + } else if (user) { | |
256 | + var loginContainer = requireLoginContainer.find('.login-container'); | |
257 | + loginContainer.show(); | |
258 | + loginContainer.find('.new-user').click(); | |
259 | + var signupForm = loginContainer.find('#signup-form'); | |
260 | + signupForm.find('#user_email').val(user.email); | |
261 | + signupForm.find('#user_name').val(user.login); | |
262 | + signupForm.find('#user_oauth_providers').val(user.oauth_providers); | |
263 | + //signupForm.find(".password").hide(); | |
264 | + //signupForm.find(".password-confirmation").hide(); | |
265 | + } else { | |
266 | + requireLoginContainer.find('.require-login').hide(); | |
267 | + requireLoginContainer.find('.login-container').show(); | |
268 | + Main.showLogin(); | |
269 | + } | |
270 | + }, | |
271 | + guid: function() { | |
272 | + function s4() { | |
273 | + return Math.floor((1 + Math.random()) * 0x10000) | |
274 | + .toString(16) | |
275 | + .substring(1); | |
276 | + } | |
277 | + return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4(); | |
278 | + }, | |
279 | + display_article: function(article_id, backTo) { | |
280 | + var url = host + '/api/v1/articles/' + article_id + '?private_token=' + Main.private_token; | |
281 | + $.getJSON(url).done(function( data ) { | |
282 | + $('#article-container .article-content').html(articleTemplate(data.article)); | |
283 | + $('#article-container').show(); | |
284 | + $('#proposal-categories').hide(); | |
285 | + $('#proposal-group').hide(); | |
286 | + $('nav').hide(); | |
287 | + $('#content').hide(); | |
288 | + $('#article-container .go-back').attr('href', backTo); | |
289 | + }); | |
290 | + }, | |
291 | + // inicio Eduardo | |
292 | + randomProposalByTheme: function(themeClasses) { | |
293 | + $('#proposal-group .proposal-list .proposal-item').hide(); | |
294 | + $.each(themeClasses, function(i, themeClass) { | |
295 | + var proposalsByTheme = $('#proposal-group .proposal-list .proposal-item').find('.' + themeClass); | |
296 | + var randomizedIndex = Math.floor(Math.random() * proposalsByTheme.length); | |
297 | + var proposalToShow = $(proposalsByTheme[randomizedIndex]).parents().filter('.proposal-item'); | |
298 | + $(proposalToShow).show(); | |
299 | + }); | |
300 | + }, | |
301 | + display_category_tab: function(){ | |
302 | + // $('#proposal-group').hide(); | |
303 | + this.randomProposalByTheme(['category-saude', 'category-seguranca-publica', 'category-educacao', 'category-reducao-da-pobreza']); | |
304 | + $('#proposal-group').show(); /* Show random proposals*/ | |
305 | + $('.content').addClass('background'); /* Add class background */ | |
306 | + $('#proposal-categories').show(); | |
307 | + $('#nav-proposal-categories a').addClass('active'); | |
308 | + $('#nav-proposal-group a').removeClass('active'); | |
309 | + $('.proposal-category-items').hide(); | |
310 | + $('.proposal-category .arrow-box').hide(); | |
311 | + $('.proposal-detail').hide(); | |
312 | + $('#article-container').hide(); | |
313 | + | |
314 | + $('#content').show(); | |
315 | + $('nav').show(); | |
316 | + | |
317 | + this.computeBoxHeight(); | |
318 | + }, | |
319 | + display_proposals_tab: function(){ | |
320 | + // $('#proposal-categories').hide(); | |
321 | + // this.randomProposalByTheme(['category-saude', 'category-seguranca-publica', 'category-educacao', 'category-reducao-da-pobreza']); | |
322 | + $('.proposal-item').show(); /* Show all programs */ | |
323 | + $('#proposal-group').show(); | |
324 | + $('#proposal-categories').show(); | |
325 | + $('.proposal-category-items').hide(); | |
326 | + $('#nav-proposal-group a').addClass('active'); | |
327 | + $('#nav-proposal-categories a').removeClass('active'); | |
328 | + $('#content').show(); | |
329 | + $('#article-container').hide(); | |
330 | + $('nav').show(); | |
331 | + $('html, body').animate({ scrollTop: $('#proposal-group').offset().top }, 'fast'); | |
332 | + | |
333 | + this.computeBoxHeight(); | |
334 | + }, | |
335 | + // fim Eduardo | |
336 | + display_proposal: function(proposal_id){ | |
337 | + $('#proposal-categories').hide(); | |
338 | + $('#proposal-group').hide(); | |
339 | + $('.proposal-category-items').hide(); /* Hide Category Items */ | |
340 | + $('.content').removeClass('background'); /* Remove class background*/ | |
341 | + $('nav').hide(); | |
342 | + $('#content').hide(); | |
343 | + $('#article-container').hide(); | |
344 | + // $('.make-proposal-form').hide(); | |
345 | + // $('.login-container').hide(); | |
346 | + $('.proposal-detail').hide(); // hide all proposals | |
347 | + // $('.proposal-detail-base').hide(); | |
348 | + var $proposal = $('#' + proposal_id); | |
349 | + $proposal.find('.proposal-detail-base').hide(); | |
350 | + $proposal.show(); | |
351 | + $proposal.find('.proposal-header').show(); | |
352 | + $proposal.find('.make-proposal-container').show(); | |
353 | + $proposal.find('.support-proposal-container').show(); | |
354 | + $proposal.find('.results-container').hide(); | |
355 | + $proposal.find('.results-container .loading').hide(); | |
356 | + $proposal.find('.results-container .results-content').hide(); | |
357 | + $proposal.find('.experience-proposal-container').show(); | |
358 | + $proposal.find('.talk-proposal-container').show(); | |
359 | + $proposal.find('.calendar').hide(); | |
360 | + var active_category = ''; | |
361 | + switch($proposal.find('.categories').attr('class')) { | |
362 | + case 'categories saude': | |
363 | + active_category = 'saude'; | |
364 | + break; | |
365 | + case 'categories educacao': | |
366 | + active_category = 'educacao'; | |
367 | + break; | |
368 | + case 'categories seguranca-publica': | |
369 | + active_category = 'seguranca-publica'; | |
370 | + break; | |
371 | + case 'categories reducao-da-pobreza': | |
372 | + active_category = 'reducao-da-pobreza'; | |
373 | + break; | |
374 | + } | |
375 | + | |
376 | + $proposal.find('.calendar.' + active_category).show(); | |
377 | + $proposal.find('.calendar').slick(); | |
378 | + | |
379 | + var topic_id = proposal_id.split('-').pop(); | |
380 | + this.loadRandomProposal(topic_id); | |
381 | + }, | |
382 | + display_proposal_detail: function(proposal_id){ | |
383 | + $('.content').removeClass('background'); /* Remove class background */ | |
384 | + $('#proposal-categories').hide(); | |
385 | + $('#proposal-group').hide(); | |
386 | + $('nav').hide(); | |
387 | + $('#content').hide(); | |
388 | + $('#article-container').hide(); | |
389 | + var $proposal = $('#proposal-item-' + proposal_id); | |
390 | + $proposal.find('.proposal-header').hide(); | |
391 | + $proposal.find('.make-proposal-container').hide(); | |
392 | + $proposal.find('.support-proposal-container').hide(); | |
393 | + $proposal.find('.results-container').hide(); | |
394 | + $proposal.find('.experience-proposal-container').hide(); | |
395 | + $proposal.find('.talk-proposal-container').hide(); | |
396 | + $proposal.find('.body').show(); | |
397 | + $proposal.show(); | |
398 | + | |
399 | + var url = host + '/api/v1/articles/' + proposal_id + '?private_token=' + Main.private_token + '&fields=id,body&content_type=ProposalsDiscussionPlugin::Topic'; | |
400 | + $.getJSON(url).done(function( data ) { | |
401 | + $('#proposal-item-' + proposal_id + ' .body-content').replaceWith(data.article.body); | |
402 | + }) | |
403 | + .fail(function( jqxhr, textStatus, error ) { | |
404 | + var err = textStatus + ', ' + error; | |
405 | + console.log( 'Request Failed: ' + err ); | |
406 | + }); | |
407 | + }, | |
408 | + display_proposal_by_category: function(item){ | |
409 | + var $item = $('#' + item); | |
410 | + | |
411 | + if($item.hasClass('proposal-category-items')){ | |
412 | + //Display Topics or Discussion by category | |
413 | + $('nav').show(); | |
414 | + $('#content').show(); | |
289 | 415 | $('#proposal-categories').show(); |
290 | 416 | $('#nav-proposal-categories a').addClass('active'); |
291 | 417 | $('#nav-proposal-group a').removeClass('active'); |
418 | + $('#proposal-group').hide(); /* Hide section "Programas" */ | |
419 | + $('.content').addClass('background'); /* Add class background */ | |
292 | 420 | $('.proposal-category-items').hide(); |
293 | - $('.proposal-category .arrow-box').hide(); | |
294 | 421 | $('.proposal-detail').hide(); |
295 | - $('#article-container').hide(); | |
296 | - | |
297 | - $('#content').show(); | |
298 | - $('nav').show(); | |
299 | - }, | |
300 | - display_proposals_tab: function(){ | |
301 | - // $('#proposal-categories').hide(); | |
302 | - // this.randomProposalByTheme(['category-saude', 'category-seguranca-publica', 'category-educacao', 'category-reducao-da-pobreza']); | |
303 | - $('.proposal-item').show(); /* Show all programs */ | |
304 | - $('#proposal-group').show(); | |
305 | - $('#proposal-categories').show(); | |
306 | - $('.proposal-category-items').hide(); | |
307 | - $('#nav-proposal-group a').addClass('active'); | |
308 | - $('#nav-proposal-categories a').removeClass('active'); | |
309 | - $('#content').show(); | |
310 | - $('#article-container').hide(); | |
311 | - $('nav').show(); | |
312 | - $('html, body').animate({ scrollTop: $('#proposal-group').offset().top }, 'fast'); | |
313 | - }, | |
314 | - // fim Eduardo | |
315 | - display_proposal: function(proposal_id){ | |
316 | - $('#proposal-categories').hide(); | |
317 | - $('#proposal-group').hide(); | |
318 | - $('.proposal-category-items').hide(); /* Hide Category Items */ | |
319 | - $('.content').removeClass('background'); /* Remove class background*/ | |
320 | - $('nav').hide(); | |
321 | - $('#content').hide(); | |
322 | - $('#article-container').hide(); | |
323 | - // $('.make-proposal-form').hide(); | |
324 | - // $('.login-container').hide(); | |
325 | - $('.proposal-detail').hide(); // hide all proposals | |
326 | - // $('.proposal-detail-base').hide(); | |
327 | - $proposal = $('#' + proposal_id); | |
328 | - $proposal.find('.proposal-detail-base').hide(); | |
329 | - $proposal.show(); | |
330 | - $proposal.find('.proposal-header').show(); | |
331 | - $proposal.find('.make-proposal-container').show(); | |
332 | - $proposal.find('.support-proposal-container').show(); | |
333 | - $proposal.find('.results-container').hide(); | |
334 | - $proposal.find('.results-container .loading').hide(); | |
335 | - $proposal.find('.results-container .results-content').hide(); | |
336 | - $proposal.find('.experience-proposal-container').show(); | |
337 | - $proposal.find('.talk-proposal-container').show(); | |
338 | - $proposal.find('.calendar').hide(); | |
339 | - var active_category = ''; | |
340 | - switch($proposal.find('.categories').attr('class')) { | |
341 | - case 'categories saude': | |
342 | - active_category = 'saude'; | |
343 | - break; | |
344 | - case 'categories educacao': | |
345 | - active_category = 'educacao'; | |
346 | - break; | |
347 | - case 'categories seguranca-publica': | |
348 | - active_category = 'seguranca-publica'; | |
349 | - break; | |
350 | - case 'categories reducao-da-pobreza': | |
351 | - active_category = 'reducao-da-pobreza'; | |
352 | - break; | |
353 | - } | |
354 | - | |
355 | - $proposal.find('.calendar.' + active_category).show(); | |
356 | - $proposal.find('.calendar').slick(); | |
357 | - | |
358 | - var topic_id = proposal_id.split('-').pop(); | |
359 | - this.loadRandomProposal(topic_id); | |
360 | - }, | |
361 | - display_proposal_detail: function(proposal_id){ | |
362 | - $('.content').removeClass('background'); /* Remove class background */ | |
363 | - $('#proposal-categories').hide(); | |
364 | - $('#proposal-group').hide(); | |
365 | - $('nav').hide(); | |
366 | - $('#content').hide(); | |
367 | - $('#article-container').hide(); | |
368 | - $proposal = $('#proposal-item-' + proposal_id); | |
369 | - $proposal.find('.proposal-header').hide(); | |
370 | - $proposal.find('.make-proposal-container').hide(); | |
371 | - $proposal.find('.support-proposal-container').hide(); | |
372 | - $proposal.find('.results-container').hide(); | |
373 | - $proposal.find('.experience-proposal-container').hide(); | |
374 | - $proposal.find('.talk-proposal-container').hide(); | |
375 | - $proposal.find('.body').show(); | |
376 | - $proposal.show(); | |
377 | - | |
378 | - var url = host + '/api/v1/articles/' + proposal_id + '?private_token=' + Main.private_token + '&fields=id,body&content_type=ProposalsDiscussionPlugin::Topic'; | |
379 | - $.getJSON(url).done(function( data ) { | |
380 | - $('#proposal-item-' + proposal_id + ' .body-content').replaceWith(data.article.body); | |
381 | - }) | |
382 | - .fail(function( jqxhr, textStatus, error ) { | |
383 | - var err = textStatus + ', ' + error; | |
384 | - console.log( 'Request Failed: ' + err ); | |
385 | - }); | |
386 | - }, | |
387 | - display_proposal_by_category: function(item){ | |
388 | - var $item = $('#' + item); | |
389 | - | |
390 | - if($item.hasClass('proposal-category-items')){ | |
391 | - //Display Topics or Discussion by category | |
392 | - $('nav').show(); | |
393 | - $('#content').show(); | |
394 | - $('#proposal-categories').show(); | |
395 | - $('#nav-proposal-categories a').addClass('active'); | |
396 | - $('#nav-proposal-group a').removeClass('active'); | |
397 | - $('#proposal-group').hide(); /* Hide section "Programas" */ | |
398 | - $('.content').addClass('background'); /* Add class background */ | |
399 | - $('.proposal-category-items').hide(); | |
400 | - $('.proposal-detail').hide(); | |
401 | - $item.toggle( 'blind', 200, function () { | |
402 | - var itemOffset = $item.offset(); | |
403 | - if(itemOffset){ | |
404 | - $('html, body').animate({ scrollTop: itemOffset.top }, 'fast'); | |
405 | - } | |
406 | - } ); | |
407 | - $('.proposal-category .arrow-box').hide(); | |
408 | - var categorySlug = $item.data('category'); | |
409 | - $('#proposal-category-' + categorySlug).find('.arrow-box').show(); | |
422 | + $item.toggle( 'blind', 200, function () { | |
423 | + var itemOffset = $item.offset(); | |
424 | + if(itemOffset){ | |
425 | + $('html, body').animate({ scrollTop: itemOffset.top }, 'fast'); | |
426 | + } | |
427 | + } ); | |
428 | + $('.proposal-category .arrow-box').hide(); | |
429 | + var categorySlug = $item.data('category'); | |
430 | + $('#proposal-category-' + categorySlug).find('.arrow-box').show(); | |
410 | 431 | |
411 | - } | |
412 | - }, | |
413 | - addBarraDoGoverno: function(){ | |
414 | - | |
415 | - if( BARRA_ADDED ) { return; } | |
416 | - | |
417 | - var HTML_BODY_PREPEND = '' + | |
418 | - '<div id="barra-brasil" style="background:#7F7F7F; height: 20px; padding:0 0 0 10px;display:block;"> ' + | |
419 | - '<ul id="menu-barra-temp" style="list-style:none;">' + | |
420 | - '<li style="display:inline; float:left;padding-right:10px; margin-right:10px; border-right:1px solid #EDEDED"><a href="http://brasil.gov.br" style="font-family:sans,sans-serif; text-decoration:none; color:white;">Portal do Governo Brasileiro</a></li> ' + | |
421 | - '<li><a style="font-family:sans,sans-serif; text-decoration:none; color:white;" href="http://epwg.governoeletronico.gov.br/barra/atualize.html">Atualize sua Barra de Governo</a></li>' + | |
422 | - '</ul>' + | |
423 | - '</div>'; | |
424 | - | |
425 | - var HTML_BODY_APPEND = ''+ | |
426 | - '<footer id="footer-brasil"></footer>' + | |
427 | - '<script defer="defer" src="http://barra.brasil.gov.br/barra.js" type="text/javascript"></script>'; | |
428 | - | |
429 | - var STYLE_TEMA_AZUL = '' + | |
430 | - '<style>'+ | |
431 | - '#footer-brasil {'+ | |
432 | - 'background: none repeat scroll 0% 0% #0042b1;'+ | |
433 | - 'padding: 1em 0px;'+ | |
434 | - 'max-width: 100%;'+ | |
435 | - 'margin-top: 40px;'+ | |
436 | - '}'+ | |
437 | - '#barra-brasil ul {'+ | |
438 | - 'width: auto;'+ | |
439 | - '}'+ | |
440 | - '<style>'; | |
432 | + this.computeBoxHeight(); | |
441 | 433 | |
442 | - var $body = $(document.body); | |
443 | - $body.prepend(HTML_BODY_PREPEND); | |
444 | - $body.append(HTML_BODY_APPEND); | |
445 | - $body.append(STYLE_TEMA_AZUL); | |
434 | + } | |
435 | + }, | |
436 | + addBarraDoGoverno: function(){ | |
437 | + | |
438 | + if( BARRA_ADDED ) { return; } | |
439 | + | |
440 | + var HTML_BODY_PREPEND = '' + | |
441 | + '<div id="barra-brasil" style="background:#7F7F7F; height: 20px; padding:0 0 0 10px;display:block;"> ' + | |
442 | + '<ul id="menu-barra-temp" style="list-style:none;">' + | |
443 | + '<li style="display:inline; float:left;padding-right:10px; margin-right:10px; border-right:1px solid #EDEDED"><a href="http://brasil.gov.br" style="font-family:sans,sans-serif; text-decoration:none; color:white;">Portal do Governo Brasileiro</a></li> ' + | |
444 | + '<li><a style="font-family:sans,sans-serif; text-decoration:none; color:white;" href="http://epwg.governoeletronico.gov.br/barra/atualize.html">Atualize sua Barra de Governo</a></li>' + | |
445 | + '</ul>' + | |
446 | + '</div>'; | |
447 | + | |
448 | + var HTML_BODY_APPEND = ''+ | |
449 | + '<footer id="footer-brasil"></footer>' + | |
450 | + '<script defer="defer" src="http://barra.brasil.gov.br/barra.js" type="text/javascript"></script>'; | |
451 | + | |
452 | + var STYLE_TEMA_AZUL = '' + | |
453 | + '<style>'+ | |
454 | + '#footer-brasil {'+ | |
455 | + 'background: none repeat scroll 0% 0% #0042b1;'+ | |
456 | + 'padding: 1em 0px;'+ | |
457 | + 'max-width: 100%;'+ | |
458 | + 'margin-top: 40px;'+ | |
459 | + '}'+ | |
460 | + '#barra-brasil ul {'+ | |
461 | + 'width: auto;'+ | |
462 | + '}'+ | |
463 | + '<style>'; | |
464 | + | |
465 | + var $body = $(document.body); | |
466 | + $body.prepend(HTML_BODY_PREPEND); | |
467 | + $body.append(HTML_BODY_APPEND); | |
468 | + $body.append(STYLE_TEMA_AZUL); | |
469 | + | |
470 | + BARRA_ADDED = true; | |
471 | + }, | |
472 | + updateHash: function(hash){ | |
473 | + var id = hash.replace(/^.*#/, ''); | |
474 | + var elem = document.getElementById(id); | |
446 | 475 | |
447 | - BARRA_ADDED = true; | |
448 | - }, | |
449 | - updateHash: function(hash){ | |
450 | - var id = hash.replace(/^.*#/, ''); | |
451 | - var elem = document.getElementById(id); | |
452 | - | |
453 | - // preserve the query param | |
454 | - // if (HIDE_BARRA_DO_GOVERNO && (hash.indexOf('?barra=false') === -1)){ | |
455 | - // hash += '?barra=false'; | |
456 | - // } | |
457 | - | |
458 | - if ( !elem ) { | |
459 | - window.location.hash = hash; | |
460 | - return; | |
461 | - } | |
476 | + // preserve the query param | |
477 | + // if (HIDE_BARRA_DO_GOVERNO && (hash.indexOf('?barra=false') === -1)){ | |
478 | + // hash += '?barra=false'; | |
479 | + // } | |
462 | 480 | |
463 | - elem.id = id+'-tmp'; | |
481 | + if ( !elem ) { | |
464 | 482 | window.location.hash = hash; |
465 | - elem.id = id; | |
466 | - }, | |
467 | - locationHashChanged: function(){ | |
468 | - var hash = window.location.hash; | |
469 | - this.navigateTo(hash, lastHash); | |
470 | - lastHash = hash; | |
471 | - }, | |
472 | - navigateTo: function(hash, lastHash) { | |
473 | - var scrollTop = 0; | |
474 | - var $nav = $('nav[role="tabpanel"]'); | |
475 | - var navOffset = $nav.offset(); | |
476 | - | |
477 | - var regexProposals = /#\/programas/; | |
478 | - var regexCategory = /#\/temas/; | |
479 | - var regexHideBarra = /barra=false$/; | |
480 | - var regexArticle = /#\/artigo/; | |
481 | - | |
482 | - if( !(regexHideBarra.exec(hash) !== null) && !HIDE_BARRA_DO_GOVERNO ){ | |
483 | - this.addBarraDoGoverno(); | |
484 | - }else{ | |
485 | - HIDE_BARRA_DO_GOVERNO = true; | |
486 | - } | |
483 | + return; | |
484 | + } | |
487 | 485 | |
488 | - // remove query params | |
489 | - hash = hash.split('?')[0]; | |
486 | + elem.id = id+'-tmp'; | |
487 | + window.location.hash = hash; | |
488 | + elem.id = id; | |
489 | + }, | |
490 | + locationHashChanged: function(){ | |
491 | + var hash = window.location.hash; | |
492 | + this.navigateTo(hash, lastHash); | |
493 | + lastHash = hash; | |
494 | + }, | |
495 | + navigateTo: function(hash, lastHash) { | |
496 | + var scrollTop = 0; | |
497 | + var $nav = $('nav[role="tabpanel"]'); | |
498 | + var navOffset = $nav.offset(); | |
499 | + | |
500 | + var regexProposals = /#\/programas/; | |
501 | + var regexCategory = /#\/temas/; | |
502 | + var regexHideBarra = /barra=false$/; | |
503 | + var regexArticle = /#\/artigo/; | |
504 | + var regexResultados = /resultados$/; | |
505 | + | |
506 | + if( !(regexHideBarra.exec(hash) !== null) && !HIDE_BARRA_DO_GOVERNO ){ | |
507 | + this.addBarraDoGoverno(); | |
508 | + }else{ | |
509 | + HIDE_BARRA_DO_GOVERNO = true; | |
510 | + } | |
490 | 511 | |
491 | - var parts = hash.split('/'); | |
512 | + // remove query params | |
513 | + hash = hash.split('?')[0]; | |
492 | 514 | |
493 | - var isProposal = regexProposals.exec(hash) !== null; | |
494 | - var isCategory = regexCategory.exec(hash) !== null; | |
495 | - var isArticle = regexArticle.exec(hash) !== null; | |
515 | + var parts = hash.split('/'); | |
496 | 516 | |
497 | - if(isArticle) { | |
498 | - this.display_article(hash.split('/')[2], lastHash); | |
499 | - } | |
517 | + var isProposal = regexProposals.exec(hash) !== null; | |
518 | + var isCategory = regexCategory.exec(hash) !== null; | |
519 | + var isArticle = regexArticle.exec(hash) !== null; | |
520 | + var isResultados = regexResultados.exec(hash) !== null; | |
500 | 521 | |
501 | - if( isProposal ){ | |
522 | + if(isArticle) { | |
523 | + this.display_article(hash.split('/')[2], lastHash); | |
524 | + } | |
502 | 525 | |
503 | - // go to proposal | |
504 | - var proposalId = parts[2]; | |
505 | - this.navigateToProposal(proposalId); | |
526 | + if( isProposal ){ | |
506 | 527 | |
507 | - var $proposal = $('#proposal-item-' + proposalId); | |
508 | - var proposalOffset = $proposal.offset(); | |
509 | - if(proposalOffset){ | |
510 | - scrollTop = proposalOffset.top; | |
511 | - }else{ | |
512 | - if(navOffset){ | |
513 | - scrollTop = navOffset.top; | |
514 | - } else { | |
515 | - scrollTop = $('#proposal-group').offset().top; | |
516 | - } | |
528 | + // go to proposal | |
529 | + var proposalId = parts[2]; | |
530 | + this.navigateToProposal(proposalId); | |
531 | + | |
532 | + var $proposal = $('#proposal-item-' + proposalId); | |
533 | + var proposalOffset = $proposal.offset(); | |
534 | + if(proposalOffset){ | |
535 | + scrollTop = proposalOffset.top; | |
536 | + }else{ | |
537 | + if(navOffset){ | |
538 | + scrollTop = navOffset.top; | |
539 | + } else { | |
540 | + scrollTop = $('#proposal-group').offset().top; | |
517 | 541 | } |
518 | 542 | } |
519 | 543 | |
520 | - if( isCategory ){ | |
544 | + if(isResultados){ | |
545 | + var $resultsContainer = $proposal.find('.results-container'); | |
521 | 546 | |
522 | - // go to category | |
523 | - var categoryId = parts[3]; | |
524 | - this.navigateToCategory(categoryId); | |
547 | + if($resultsContainer.css('display') === 'none') { | |
548 | + Main.loadRanking($resultsContainer, proposalId, 1); | |
549 | + } else { | |
550 | + $proposalDetail.find('.experience-proposal-container').show(); | |
551 | + $proposalDetail.find('.talk-proposal-container').show(); | |
552 | + $resultsContainer.hide(); | |
553 | + } | |
525 | 554 | |
526 | - var $category = $('#proposal-item-' + categoryId); | |
527 | - var categoryOffset = $category.offset(); | |
528 | - if(categoryOffset){ | |
529 | - scrollTop = categoryOffset.top; | |
530 | - }else{ | |
531 | - if(navOffset){ | |
532 | - scrollTop = navOffset.top; | |
533 | - } | |
555 | + var proposalOffset = $resultsContainer.offset(); | |
556 | + if(proposalOffset){ | |
557 | + scrollTop = proposalOffset.top; | |
534 | 558 | } |
535 | 559 | } |
560 | + } | |
536 | 561 | |
537 | - // default | |
538 | - if( !isProposal && !isCategory ){ | |
539 | - // show the 'index' -> category tab | |
540 | - this.display_category_tab(); | |
541 | - | |
562 | + if( isCategory ){ | |
542 | 563 | |
543 | - // if(navOffset){ | |
544 | - // scrollTop = navOffset.top; | |
545 | - // } | |
546 | - } | |
564 | + // go to category | |
565 | + var categoryId = parts[3]; | |
566 | + this.navigateToCategory(categoryId); | |
547 | 567 | |
548 | - $('html, body').animate({ scrollTop: scrollTop }, 'fast'); | |
549 | - }, | |
550 | - navigateToProposal: function(proposalId){ | |
551 | - var regexSubpages = /sobre-o-programa$/; | |
552 | - if(proposalId === undefined){ | |
553 | - this.display_proposals_tab(); | |
554 | - }else if(regexSubpages.exec(window.location.hash) == null){ | |
555 | - this.display_proposal('proposal-item-' + proposalId); | |
556 | - }else{ | |
557 | - this.display_proposal_detail(proposalId); | |
558 | - } | |
559 | - }, | |
560 | - navigateToCategory: function(categoryId){ | |
561 | - if(categoryId === undefined){ | |
562 | - this.display_category_tab(); | |
568 | + var $category = $('#proposal-item-' + categoryId); | |
569 | + var categoryOffset = $category.offset(); | |
570 | + if(categoryOffset){ | |
571 | + scrollTop = categoryOffset.top; | |
563 | 572 | }else{ |
564 | - this.display_proposal_by_category('proposal-item-' + categoryId); | |
573 | + if(navOffset){ | |
574 | + scrollTop = navOffset.top; | |
575 | + } | |
565 | 576 | } |
566 | - }, | |
567 | - oauthClientAction: function(url) { | |
568 | - var child = window.open(url, "_blank"); | |
569 | - var interval = setInterval(function() { | |
570 | - try { | |
571 | - if(!child.closed) { | |
572 | - child.postMessage({ message: "requestOauthClientPluginResult" }, "*"); | |
573 | - } | |
574 | - } | |
575 | - catch(e) { | |
576 | - // we're here when the child window has been navigated away or closed | |
577 | - if (child.closed) { | |
578 | - clearInterval(interval); | |
579 | - return; | |
580 | - } | |
577 | + } | |
578 | + | |
579 | + // default | |
580 | + if( !isProposal && !isCategory ){ | |
581 | + // show the 'index' -> category tab | |
582 | + this.display_category_tab(); | |
583 | + } | |
584 | + | |
585 | + $('html, body').animate({ scrollTop: scrollTop }, 'fast'); | |
586 | + }, | |
587 | + navigateToProposal: function(proposalId){ | |
588 | + var regexSobreOPrograma = /sobre-o-programa$/; | |
589 | + if(proposalId === undefined){ | |
590 | + this.display_proposals_tab(); | |
591 | + }else if(regexSobreOPrograma.exec(window.location.hash) == null){ | |
592 | + this.display_proposal('proposal-item-' + proposalId); | |
593 | + }else{ | |
594 | + this.display_proposal_detail(proposalId); | |
595 | + } | |
596 | + }, | |
597 | + navigateToCategory: function(categoryId){ | |
598 | + if(categoryId === undefined){ | |
599 | + this.display_category_tab(); | |
600 | + }else{ | |
601 | + this.display_proposal_by_category('proposal-item-' + categoryId); | |
602 | + } | |
603 | + }, | |
604 | + oauthClientAction: function(url) { | |
605 | + var child = window.open(url, "_blank"); | |
606 | + var interval = setInterval(function() { | |
607 | + try { | |
608 | + if(!child.closed) { | |
609 | + child.postMessage({ message: "requestOauthClientPluginResult" }, "*"); | |
581 | 610 | } |
582 | - }, 300); | |
583 | - }, | |
584 | - displaySuccess: function(container, text, timeout, iconClass) { | |
585 | - timeout = typeof timeout !== 'undefined' ? timeout : 2000; | |
586 | - container.css('opacity', 0.1); | |
587 | - var successPanel = $('.success-panel').clone(); | |
588 | - successPanel.find('.icon').addClass(iconClass); | |
589 | - successPanel.find('.message').html(text); | |
590 | - successPanel.appendTo(container.closest('.categories')); | |
591 | - successPanel.show(); | |
592 | - successPanel.css("top", Math.max(0, ((container.height() - successPanel.outerHeight()) / 2) + container.offset().top) + "px"); | |
593 | - successPanel.css("left", Math.max(0, ((container.width() - successPanel.outerWidth()) / 2) + container.offset().left) + "px"); | |
594 | - | |
595 | - var interval = setTimeout(function() { | |
596 | - successPanel.hide(); | |
597 | - container.css('opacity', 1); | |
598 | - successPanel.remove(); | |
599 | - }, timeout); | |
600 | - }, | |
601 | - setUser: function(user){ | |
602 | - this.user = user; | |
603 | - }, | |
604 | - getUser: function(){ | |
605 | - return this.user; | |
606 | - }, | |
607 | - showLogin: function(){ | |
608 | - $('.entrar').show(); | |
609 | - $('.logout').hide(); | |
610 | - }, | |
611 | - showLogout: function(){ | |
612 | - $('.entrar').hide(); | |
613 | - var name = ''; | |
614 | - if(this.user){ | |
615 | - name = this.user.person.name + ' | '; | |
616 | - } | |
617 | - $('.logout').text(name + 'Sair'); | |
618 | - $('.logout').show(); | |
619 | - }, | |
611 | + } | |
612 | + catch(e) { | |
613 | + // we're here when the child window has been navigated away or closed | |
614 | + if (child.closed) { | |
615 | + clearInterval(interval); | |
616 | + return; | |
617 | + } | |
618 | + } | |
619 | + }, 300); | |
620 | + }, | |
621 | + displaySuccess: function(container, text, timeout, iconClass) { | |
622 | + timeout = typeof timeout !== 'undefined' ? timeout : 2000; | |
623 | + container.css('opacity', 0.1); | |
624 | + var successPanel = $('.success-panel').clone(); | |
625 | + successPanel.find('.icon').addClass(iconClass); | |
626 | + successPanel.find('.message').html(text); | |
627 | + successPanel.appendTo(container.closest('.categories')); | |
628 | + successPanel.show(); | |
629 | + successPanel.css("top", Math.max(0, ((container.height() - successPanel.outerHeight()) / 2) + container.offset().top) + "px"); | |
630 | + successPanel.css("left", Math.max(0, ((container.width() - successPanel.outerWidth()) / 2) + container.offset().left) + "px"); | |
631 | + | |
632 | + var interval = setTimeout(function() { | |
633 | + successPanel.hide(); | |
634 | + container.css('opacity', 1); | |
635 | + successPanel.remove(); | |
636 | + }, timeout); | |
637 | + }, | |
638 | + setUser: function(user){ | |
639 | + this.user = user; | |
640 | + }, | |
641 | + getUser: function(){ | |
642 | + return this.user; | |
643 | + }, | |
644 | + showLogin: function(){ | |
645 | + $('#login-button').show(); | |
646 | + $('#logout-button').hide(); | |
647 | + }, | |
648 | + showLogout: function(){ | |
649 | + $('#login-button').hide(); | |
650 | + var name = ''; | |
651 | + if(this.user){ | |
652 | + name = this.user.person.name + ' - '; | |
653 | + } | |
654 | + $('#logout-button .name').text(name); | |
655 | + $('#logout-button').show(); | |
656 | + }, | |
620 | 657 | responseToText: function(responseJSONmessage){ |
621 | 658 | var o = JSON.parse(responseJSONmessage); |
622 | 659 | var msg = ""; |
... | ... | @@ -641,20 +678,83 @@ define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, F |
641 | 678 | // /api/v1/communities/64/articles?from=2013-04-04-14:41:43&until=2015-06-11-14:41:43&limit=10&categories_ids[]=7&categories_ids[]=8&private_token=a97b6a5cae2c4c54e4ae18dde1829a49 |
642 | 679 | var url; |
643 | 680 | count = 0; |
644 | - for(var i = 0; i < window.themes_cat.length; ++i){ | |
645 | - url = host + '/api/v1/communities/' + window.dialoga_community + '/articles?categories_ids[]=' + window.themes_cat[i] + '&content_type=Event&private_token=' + Main.private_token; | |
681 | + for (var i = 0; i < window.themes_cat.length; ++i) { | |
682 | + url = host + '/api/v1/communities/' + window.dialoga_community + '/articles?categories_ids[]=' + window.themes_cat[i] + '&content_type=Event&private_token=' + Main.private_token; | |
646 | 683 | console.log(url); |
647 | - $.getJSON(url).done(function( data ) { | |
684 | + $.getJSON(url).done(function (data) { | |
648 | 685 | console.log(data); |
649 | 686 | $('#ep' + count).text(data.articles[0].author.name); |
650 | 687 | var dt = data.articles[0].start_date; |
651 | - dia = dt.substr(8,2); | |
652 | - mes = dt.substr(5,2); | |
653 | - ano = dt.substr(0,4); | |
688 | + dia = dt.substr(8, 2); | |
689 | + mes = dt.substr(5, 2); | |
690 | + ano = dt.substr(0, 4); | |
654 | 691 | $('#ed' + count).text(dia + '/' + mes + '/' + ano); |
655 | 692 | count++; |
656 | 693 | }); |
657 | 694 | } |
695 | + }, | |
696 | + computeBoxHeight: function(){ | |
697 | + var hPerLineOnTitle = 25; | |
698 | + var hPerLineOnParagraph = 20; | |
699 | + var maxLinesByParagraph = 0; | |
700 | + var maxLinesByTitle = 0; | |
701 | + var $visibleProposals = $('.proposal-list .proposal-item:visible'); | |
702 | + | |
703 | + // get the bigger paragraph | |
704 | + $visibleProposals.each(function(index, proposalItemEl){ | |
705 | + var $proposalItemEl = $(proposalItemEl); | |
706 | + var $paragraph = $proposalItemEl.find('p'); | |
707 | + var lines = Main.computeLines($paragraph); | |
708 | + if(lines > maxLinesByParagraph ){ | |
709 | + maxLinesByParagraph = lines | |
710 | + } | |
711 | + }); | |
712 | + // console.log('maxLinesByParagraph', maxLinesByParagraph); | |
713 | + | |
714 | + // get the bigger title | |
715 | + $visibleProposals.each(function(index, proposalItemEl){ | |
716 | + var $proposalItemEl = $(proposalItemEl); | |
717 | + var $title = $proposalItemEl.find('.box__title'); | |
718 | + var lines = Main.computeLines($title); | |
719 | + if(lines > maxLinesByTitle ){ | |
720 | + maxLinesByTitle = lines | |
721 | + } | |
722 | + }); | |
723 | + // console.log('maxLinesByTitle', maxLinesByTitle); | |
724 | + | |
725 | + $visibleProposals.each(function(index, proposalItemEl){ | |
726 | + var $proposalItemEl = $(proposalItemEl); | |
727 | + var $title = $proposalItemEl.find('.box__title'); | |
728 | + var $paragraph = $proposalItemEl.find('p'); | |
729 | + | |
730 | + var newTitleHeight = maxLinesByTitle * hPerLineOnTitle; | |
731 | + var newParagraphHeight = maxLinesByParagraph * hPerLineOnParagraph; | |
732 | + | |
733 | + $title.css('height', newTitleHeight + 'px'); | |
734 | + $paragraph.css('height', newParagraphHeight + 'px'); | |
735 | + }); | |
736 | + | |
737 | + // recalc box heights | |
738 | + var setAsPx = true; | |
739 | + $visibleProposals.equalHeights(setAsPx); | |
740 | + }, | |
741 | + computeLines: function ($el) { | |
742 | + // reset height | |
743 | + $el.height('auto'); | |
744 | + | |
745 | + var divHeight = $el.height(); | |
746 | + var lineHeight = parseInt($el.css('lineHeight')); | |
747 | + var lines = Math.ceil(divHeight / lineHeight); | |
748 | + return lines; | |
749 | + }, | |
750 | + handleLoginSuccess: function (e, data){ | |
751 | + if(data.person){ | |
752 | + Main.setUser({person: data.person}); | |
753 | + } | |
754 | + Main.loginCallback(true, data.private_token); | |
755 | + }, | |
756 | + handleLoginFail: function (e){ | |
757 | + // console.log('Event', e); | |
658 | 758 | } |
659 | 759 | } |
660 | 760 | })(); |
... | ... | @@ -721,8 +821,8 @@ define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, F |
721 | 821 | e.preventDefault(); |
722 | 822 | |
723 | 823 | var oldHash = window.location.hash; |
724 | - var regexSubpages = /sobre-o-programa$/; | |
725 | - var isSubpage = regexSubpages.exec(oldHash) !== null; | |
824 | + var regexSobreOPrograma = /sobre-o-programa$/; | |
825 | + var isSubpage = regexSobreOPrograma.exec(oldHash) !== null; | |
726 | 826 | var newHash = '#/temas'; // default page |
727 | 827 | |
728 | 828 | if(isSubpage){ |
... | ... | @@ -742,10 +842,10 @@ define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, F |
742 | 842 | |
743 | 843 | //display form to send proposal (or login form for non-logged users) |
744 | 844 | var $this = $(this); |
745 | - loginButton = $this.parents('.button-send'); | |
845 | + loginButton = $this.closest('.button-send'); | |
746 | 846 | loginButton.hide(); |
747 | - $this.parents('.success-proposal-sent').hide(); | |
748 | - $wrapper = $this.parents('.make-proposal'); | |
847 | + $this.closest('.success-proposal-sent').hide(); | |
848 | + var $wrapper = $this.closest('.make-proposal'); | |
749 | 849 | $wrapper.find('.subtitle').show(); |
750 | 850 | $wrapper.find('.info').show(); |
751 | 851 | Main.loginCallback(logged_in); |
... | ... | @@ -859,30 +959,50 @@ define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, F |
859 | 959 | }); |
860 | 960 | } |
861 | 961 | |
962 | + $(document).on('login:success', Main.handleLoginSuccess); | |
963 | + $(document).on('login:fail', Main.handleLoginFail); | |
964 | + | |
862 | 965 | $(document).on('click', '.login-action', function(e) { |
863 | - var message = $('.login .message'); | |
864 | - message.hide(); | |
865 | - message.text(''); | |
866 | - var button = $(this); | |
966 | + e.preventDefault(); | |
967 | + // console.log('obj', obj); | |
968 | + | |
969 | + var $this = $(this); // button | |
970 | + var $form = $this.closest('#login-form'); | |
971 | + var $message = $form.find('.message'); | |
972 | + $message.text('').hide(); | |
973 | + | |
974 | + loginButton = $this; | |
975 | + | |
867 | 976 | $.ajax({ |
868 | 977 | type: 'post', |
869 | 978 | url: host + '/api/v1/login', |
870 | - data: $(this).parents('.login').serialize(), | |
979 | + data: $form.serialize(), | |
871 | 980 | xhrFields: { |
872 | 981 | //withCredentials: true |
873 | 982 | } |
874 | 983 | }).done(function(data) { |
875 | - Main.loginCallback(true, data.private_token); | |
876 | - Main.displaySuccess(button.closest('.section-content'), 'Login efetuado com sucesso', 1000, 'icon-login-success'); | |
984 | + $(document).trigger('login:success', data); | |
985 | + | |
986 | + var $sectionContent = $form.closest('.section-content'); | |
987 | + if($sectionContent && $sectionContent.length > 0){ | |
988 | + Main.displaySuccess($sectionContent, 'Login efetuado com sucesso', 1000, 'icon-login-success'); | |
989 | + } | |
990 | + | |
991 | + var $loginPanel = $form.closest('#login-panel'); | |
992 | + if($loginPanel && $loginPanel.length > 0){ | |
993 | + $loginPanel.hide(); | |
994 | + } | |
995 | + | |
877 | 996 | }).fail(function(data) { |
878 | - message.show(); | |
997 | + $(document).trigger('login:fail', data); | |
998 | + | |
999 | + $message.show(); | |
879 | 1000 | if(data.status==401){ |
880 | - message.text('Nome de usuário, e-mail ou senha incorretos, não foi possível acessar.'); | |
1001 | + $message.text('Nome de usuário, e-mail ou senha incorretos, não foi possível acessar.'); | |
881 | 1002 | }else{ |
882 | - message.text('Um erro inesperado ocorreu'); | |
1003 | + $message.text('Um erro inesperado ocorreu'); | |
883 | 1004 | } |
884 | 1005 | }); |
885 | - e.preventDefault(); | |
886 | 1006 | }); |
887 | 1007 | |
888 | 1008 | $(document).on('click', '.social .fb-share', function(e) { |
... | ... | @@ -973,7 +1093,7 @@ define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, F |
973 | 1093 | e.preventDefault(); |
974 | 1094 | }); |
975 | 1095 | |
976 | - $(document).on('click', '.logout', function (e){ | |
1096 | + $(document).on('click', '#logout-button', function (e){ | |
977 | 1097 | var self = $(this); |
978 | 1098 | $.removeCookie('_dialoga_session'); |
979 | 1099 | $.removeCookie('votedProposals'); |
... | ... | @@ -984,6 +1104,29 @@ define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, F |
984 | 1104 | e.preventDefault(); |
985 | 1105 | }); |
986 | 1106 | |
1107 | + // create login panel on header | |
1108 | + (function (){ | |
1109 | + var $loginPanel = $('#login-panel'); | |
1110 | + $loginPanel.hide(); | |
1111 | + $loginPanel.removeClass('hide'); | |
1112 | + $loginPanel.append(loginTemplate()); | |
1113 | + $loginPanel.find('.actions') | |
1114 | + .removeClass('col-sm-4') | |
1115 | + .addClass('col-sm-12'); | |
1116 | + $loginPanel.find('.oauth') | |
1117 | + .removeClass('col-sm-8') | |
1118 | + .addClass('col-sm-12'); | |
1119 | + $loginPanel.find('.new-user').parent() | |
1120 | + .removeClass('col-sm-4') | |
1121 | + .addClass('col-sm-12'); | |
1122 | + | |
1123 | + $(document).on('click', '#login-button', function (e){ | |
1124 | + e.preventDefault(); | |
1125 | + | |
1126 | + $loginPanel.toggle(); | |
1127 | + }); | |
1128 | + })(); | |
1129 | + | |
987 | 1130 | }); |
988 | 1131 | |
989 | 1132 | window.addEventListener("message", function(ev) { |
... | ... | @@ -1001,5 +1144,45 @@ define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, F |
1001 | 1144 | console.log('The browser not supports the hashchange event!'); |
1002 | 1145 | } |
1003 | 1146 | |
1147 | + // Handle resize event | |
1148 | + (function($,sr){ | |
1149 | + | |
1150 | + // debouncing function from John Hann | |
1151 | + // http://unscriptable.com/index.php/2009/03/20/debouncing-javascript-methods/ | |
1152 | + var debounce = function (func, threshold, execAsap) { | |
1153 | + var timeout; | |
1154 | + | |
1155 | + return function debounced () { | |
1156 | + var obj = this, args = arguments; | |
1157 | + | |
1158 | + function delayed () { | |
1159 | + if (!execAsap){ | |
1160 | + func.apply(obj, args); | |
1161 | + } | |
1162 | + timeout = null; | |
1163 | + } | |
1164 | + | |
1165 | + if (timeout){ | |
1166 | + clearTimeout(timeout); | |
1167 | + }else if (execAsap){ | |
1168 | + func.apply(obj, args); | |
1169 | + } | |
1170 | + | |
1171 | + timeout = setTimeout(delayed, threshold || 100); | |
1172 | + }; | |
1173 | + } | |
1174 | + | |
1175 | + // smartresize | |
1176 | + jQuery.fn[sr] = function(fn){ | |
1177 | + return fn ? this.bind('resize', debounce(fn)) : this.trigger(sr); | |
1178 | + }; | |
1179 | + | |
1180 | + })(jQuery, 'smartresize'); | |
1181 | + | |
1182 | + $(window).smartresize(function(){ | |
1183 | + // console.log('window resized'); | |
1184 | + Main.computeBoxHeight(); | |
1185 | + }); | |
1186 | + | |
1004 | 1187 | return Main; |
1005 | 1188 | }); | ... | ... |
js/requirejs-config.js
... | ... | @@ -15,6 +15,7 @@ requirejs.config({ |
15 | 15 | jquery_timeago: 'jquery.timeago', |
16 | 16 | jquery_timeago_pt: 'jquery.timeago.pt-br', |
17 | 17 | jquery_simplePagination: 'jquery.simplePagination', |
18 | + jquery_equalHeights: 'jquery.equalHeights', | |
18 | 19 | jquery_footable: 'footable', |
19 | 20 | handlebars: 'handlebars-v3.0.1', |
20 | 21 | handlebars_helpers: 'handlebars-helpers', |
... | ... | @@ -42,6 +43,9 @@ requirejs.config({ |
42 | 43 | 'jquery_simplePagination': { |
43 | 44 | deps: ['jquery'] |
44 | 45 | }, |
46 | + 'jquery_equalHeights': { | |
47 | + deps: ['jquery'] | |
48 | + }, | |
45 | 49 | 'footable': { |
46 | 50 | deps: ['jquery'] |
47 | 51 | }, |
... | ... | @@ -70,5 +74,5 @@ requirejs.config({ |
70 | 74 | } |
71 | 75 | }); |
72 | 76 | |
73 | -requirejs(['jquery', 'proposal_app', 'jquery_ui', 'jquery_xdomainrequest', 'jquery_timeago_pt', 'jquery_simplePagination', 'footable', 'handlebars_helpers']); | |
77 | +requirejs(['jquery', 'proposal_app', 'jquery_ui', 'jquery_xdomainrequest', 'jquery_timeago_pt', 'jquery_simplePagination', 'jquery_equalHeights', 'footable', 'handlebars_helpers']); | |
74 | 78 | requirejs(['slick', 'fastclick', 'jquery_maxlength', 'layout','main']); | ... | ... |
sass/style.sass
... | ... | @@ -176,6 +176,7 @@ textarea |
176 | 176 | padding-right: $gutter * 0.5 |
177 | 177 | padding-top: $gutter * 0.25 |
178 | 178 | width: 100% |
179 | + height: 100px | |
179 | 180 | |
180 | 181 | |
181 | 182 | // ------------------------------------ |
... | ... | @@ -371,7 +372,7 @@ h1 |
371 | 372 | display: inline-block |
372 | 373 | height: 80px |
373 | 374 | text-indent: -99999px |
374 | - width: 160px | |
375 | + width: 180px | |
375 | 376 | |
376 | 377 | // 6.3 - menu topo |
377 | 378 | .top-menu |
... | ... | @@ -436,6 +437,7 @@ h1 |
436 | 437 | border-bottom: 1px solid #f1f1f1 |
437 | 438 | display: block |
438 | 439 | font-size: $font-size-base |
440 | + position: relative | |
439 | 441 | a |
440 | 442 | background-color: #fff |
441 | 443 | color: #484848 |
... | ... | @@ -453,24 +455,27 @@ h1 |
453 | 455 | text-decoration: none |
454 | 456 | .fa |
455 | 457 | color: #898989 |
456 | - float: right | |
457 | 458 | font-size: 45px |
459 | + position: absolute | |
460 | + top: 50% | |
461 | + margin-top: -22px | |
462 | + right: 8px | |
458 | 463 | &-name |
459 | 464 | display: inline-block |
460 | 465 | width: 50% |
461 | 466 | vertical-align: middle |
462 | - .arrow-box | |
463 | - position: relative | |
464 | - top: $gutter | |
465 | - &:after | |
466 | - bottom: 100% | |
467 | - left: 50% | |
468 | - border: solid transparent | |
469 | - content: "" | |
470 | - position: absolute | |
471 | - border-bottom-color: #000 | |
472 | - border-width: 8px | |
473 | - margin-left: -8px | |
467 | + // .arrow-box | |
468 | + // position: relative | |
469 | + // top: $gutter | |
470 | + // &:after | |
471 | + // bottom: 100% | |
472 | + // left: 50% | |
473 | + // border: solid transparent | |
474 | + // content: "" | |
475 | + // position: absolute | |
476 | + // border-bottom-color: #000 | |
477 | + // border-width: 8px | |
478 | + // margin-left: -8px | |
474 | 479 | |
475 | 480 | // 6.7 - listagem dos programas aleatorios |
476 | 481 | .ver-todos |
... | ... | @@ -486,6 +491,8 @@ h1 |
486 | 491 | &-list |
487 | 492 | list-style: none |
488 | 493 | padding-left: 0 |
494 | + .proposal-item | |
495 | + margin-bottom: $gutter | |
489 | 496 | &-group |
490 | 497 | ul |
491 | 498 | list-style: none |
... | ... | @@ -500,6 +507,7 @@ h1 |
500 | 507 | color: #000 |
501 | 508 | display: block |
502 | 509 | margin-top: $gutter * 1.5 |
510 | + height: 100% | |
503 | 511 | overflow: hidden |
504 | 512 | transition: all 400ms |
505 | 513 | +hover(#fff,$darken) |
... | ... | @@ -534,15 +542,28 @@ h1 |
534 | 542 | font-size: $font-size-small |
535 | 543 | font-weight: 500 |
536 | 544 | margin-top: $gutter * 0.5 |
537 | - height: $gutter * 2 | |
545 | + // height: $gutter * 2 | |
546 | + // @media (min-width: 768px) | |
547 | + // height: $gutter * 3 | |
538 | 548 | &-body |
539 | 549 | padding: $gutter |
540 | - img | |
541 | - margin-left: $gutter * (-1) | |
542 | - margin-right: $gutter * (-1) | |
543 | - margin-top: $gutter * (-1) | |
544 | - margin-bottom: $gutter | |
545 | - height: 170px | |
550 | + // img | |
551 | + // margin-left: $gutter * (-1) | |
552 | + // margin-right: $gutter * (-1) | |
553 | + // margin-top: $gutter * (-1) | |
554 | + // margin-bottom: $gutter | |
555 | + // height: 170px | |
556 | + &__image | |
557 | + background-size: cover | |
558 | + height: 170px | |
559 | + margin: -20px -20px 10px | |
560 | + background-position: center center | |
561 | + // &__footer | |
562 | + // position: absolute | |
563 | + // left: 0 | |
564 | + // width: 100% | |
565 | + // bottom: $gutter | |
566 | + // padding: 0 10% | |
546 | 567 | &-category |
547 | 568 | font-size: $font-size-small |
548 | 569 | font-weight: 700 |
... | ... | @@ -663,21 +684,38 @@ h1 |
663 | 684 | |
664 | 685 | // 6.11 - login form |
665 | 686 | .participar |
687 | + position: relative | |
666 | 688 | text-align: right |
667 | 689 | .participe |
668 | 690 | font-size: 14px |
669 | 691 | padding: 2px 10px |
670 | - .entrar | |
692 | + .icon-login | |
693 | + display: inline-block | |
694 | + position: relative | |
695 | + top: -2px | |
696 | + right: 5px | |
697 | + width: 20px | |
698 | + height: 20px | |
699 | + padding: 12px | |
700 | + vertical-align: middle | |
701 | + border: 1px solid #ccc !important | |
671 | 702 | background: url(images/icons/icon-user.png) no-repeat 20px 50% |
672 | - // border-left: 1px solid #bcbcbc | |
673 | - // margin-left: 20px | |
674 | - padding-left: 40px | |
703 | + .login | |
704 | + margin-left: 20px | |
675 | 705 | .logout |
676 | - background: url(images/icons/icon-user.png) no-repeat 20px 50% | |
677 | - // border-left: 1px solid #bcbcbc | |
678 | - // margin-left: 20px | |
679 | - padding-left: 40px | |
680 | -.login,.signup | |
706 | + margin-left: 20px | |
707 | +#login-panel | |
708 | + position: absolute | |
709 | + top: 0 | |
710 | + right: 0 | |
711 | + padding: 20px | |
712 | + z-index: 9999 | |
713 | + background-color: #fff | |
714 | + border: 1px solid #ccc | |
715 | + .loading | |
716 | + display: none | |
717 | +.login, | |
718 | +.signup | |
681 | 719 | text-align: left |
682 | 720 | .message |
683 | 721 | background: #fcc |
... | ... | @@ -833,10 +871,79 @@ td |
833 | 871 | display: table |
834 | 872 | table-layout: fixed |
835 | 873 | width: 100% |
874 | + @media (max-width: 567px) | |
875 | + width: 90% | |
836 | 876 | .truncated |
837 | 877 | overflow-x: hidden |
838 | 878 | text-overflow: ellipsis |
839 | 879 | white-space: nowrap |
880 | + &.phone | |
881 | + .footable-toggle | |
882 | + float: right | |
883 | + padding: 5px 0 !important | |
884 | + width: 10% | |
885 | + text-align: center | |
886 | + background-color: #e0e0e0 | |
887 | + .footable-row-detail-row | |
888 | + display: inline-block | |
889 | + &:not(:last-child) | |
890 | + margin-right: 10px | |
891 | + padding-right: 10px | |
892 | + border-right: 1px solid #ccc | |
893 | + .footable-row-detail-inner | |
894 | + margin: 0 auto | |
895 | + .footable-row-detail-cell | |
896 | + background-color: #e0e0e0 | |
897 | + .footable-row-detail-name | |
898 | + display: block | |
899 | + text-transform: uppercase | |
900 | + .footable-row-detail-value | |
901 | + display: block | |
902 | + | |
903 | + // fix height | |
904 | + .footable-row-detail-row:nth-child(1) | |
905 | + .footable-row-detail-value:before | |
906 | + height: 30px | |
907 | + | |
908 | + // check icon | |
909 | + .footable-row-detail-row:nth-child(2) | |
910 | + .footable-row-detail-name | |
911 | + display: none | |
912 | + .footable-row-detail-value:before | |
913 | + content: '\f00c' | |
914 | + font: normal normal normal 14px/1 'FontAwesome' | |
915 | + display: block | |
916 | + background-color: #32dbb5 | |
917 | + border: 2px solid #ffffff | |
918 | + border-radius: 100% | |
919 | + color: #fff | |
920 | + font-size: 16px | |
921 | + height: 30px | |
922 | + padding: 5px 0 | |
923 | + text-align: center | |
924 | + transition: all 200ms ease 0s | |
925 | + width: 30px | |
926 | + margin: 0 20px | |
927 | + | |
928 | + // check icon | |
929 | + .footable-row-detail-row:nth-child(3) | |
930 | + .footable-row-detail-name | |
931 | + display: none | |
932 | + .footable-row-detail-value:before | |
933 | + content: '\f00d' | |
934 | + font: normal normal normal 14px/1 'FontAwesome' | |
935 | + display: block | |
936 | + background-color: #DB4127 | |
937 | + border: 2px solid #ffffff | |
938 | + border-radius: 100% | |
939 | + color: #fff | |
940 | + font-size: 16px | |
941 | + height: 30px | |
942 | + padding: 5px 0 | |
943 | + text-align: center | |
944 | + transition: all 200ms ease 0s | |
945 | + width: 30px | |
946 | + margin: 0 20px | |
840 | 947 | |
841 | 948 | // 6.15 - paginador |
842 | 949 | .paging |
... | ... | @@ -1242,9 +1349,19 @@ h3.titulo-destaque |
1242 | 1349 | width: 100% |
1243 | 1350 | p |
1244 | 1351 | padding-bottom: $gutter |
1352 | + .proposal-list | |
1353 | + .proposal-item, | |
1354 | + .box__title, | |
1355 | + .box__abstract p | |
1356 | + height: auto !important | |
1245 | 1357 | .select |
1246 | 1358 | .proposal |
1247 | 1359 | &-selection |
1248 | 1360 | float: none |
1249 | 1361 | margin: 0 |
1250 | 1362 | width: 100% |
1363 | + table | |
1364 | + .position | |
1365 | + a | |
1366 | + margin-left: 0 | |
1367 | + margin-top: 5px | |
1251 | 1368 | \ No newline at end of file | ... | ... |