Commit c4dda55a2e35d71e3226137373880bfc0b25798a
1 parent
c38ddace
Exists in
master
and in
10 other branches
Pequenas melhorias no javascript (refact)
Showing
2 changed files
with
71 additions
and
62 deletions
Show diff stats
index.html
| @@ -120,7 +120,7 @@ | @@ -120,7 +120,7 @@ | ||
| 120 | </ul> | 120 | </ul> |
| 121 | </nav> | 121 | </nav> |
| 122 | 122 | ||
| 123 | - <ul id="proposal-categories"> | 123 | + <div id="proposal-categories"> |
| 124 | <div id="proposal-categories-container"> | 124 | <div id="proposal-categories-container"> |
| 125 | {{#each article.categories}} | 125 | {{#each article.categories}} |
| 126 | <li id='proposal-category-{{slug}}' class="proposal-category" data-category="{{slug}}"> | 126 | <li id='proposal-category-{{slug}}' class="proposal-category" data-category="{{slug}}"> |
| @@ -142,7 +142,7 @@ | @@ -142,7 +142,7 @@ | ||
| 142 | </div> | 142 | </div> |
| 143 | {{/each}} | 143 | {{/each}} |
| 144 | </div> | 144 | </div> |
| 145 | - </ul> | 145 | + </div> |
| 146 | 146 | ||
| 147 | <div id="proposal-group" class='hide'> | 147 | <div id="proposal-group" class='hide'> |
| 148 | <label for="search-input">Selecione um programa para fazer propostas e contar sua experiência.</label> | 148 | <label for="search-input">Selecione um programa para fazer propostas e contar sua experiência.</label> |
js/main.js
| @@ -3,7 +3,6 @@ var templateSource = document.getElementById('proposal-template').innerHTML; | @@ -3,7 +3,6 @@ var templateSource = document.getElementById('proposal-template').innerHTML; | ||
| 3 | 3 | ||
| 4 | // compile the template | 4 | // compile the template |
| 5 | var template = Handlebars.compile(templateSource); | 5 | var template = Handlebars.compile(templateSource); |
| 6 | - | ||
| 7 | var supportProposalTemplate = Handlebars.compile(document.getElementById('support-proposal-template').innerHTML); | 6 | var supportProposalTemplate = Handlebars.compile(document.getElementById('support-proposal-template').innerHTML); |
| 8 | var loginTemplate = Handlebars.compile(document.getElementById('login').innerHTML); | 7 | var loginTemplate = Handlebars.compile(document.getElementById('login').innerHTML); |
| 9 | var resultsTemplate = Handlebars.compile(document.getElementById('results').innerHTML); | 8 | var resultsTemplate = Handlebars.compile(document.getElementById('results').innerHTML); |
| @@ -40,8 +39,8 @@ if( isLocalhost ){ | @@ -40,8 +39,8 @@ if( isLocalhost ){ | ||
| 40 | 39 | ||
| 41 | $.getJSON(noosferoAPI) | 40 | $.getJSON(noosferoAPI) |
| 42 | .done(function( data ) { | 41 | .done(function( data ) { |
| 43 | - data['host'] = host; | ||
| 44 | - data['private_token'] = private_token; | 42 | + data.host = host; |
| 43 | + data.private_token = private_token; | ||
| 45 | resultsPlaceholder.innerHTML = template(data); | 44 | resultsPlaceholder.innerHTML = template(data); |
| 46 | $('.login-container').html(loginTemplate()); | 45 | $('.login-container').html(loginTemplate()); |
| 47 | $('.countdown').maxlength({text: '%left caracteres restantes'}); | 46 | $('.countdown').maxlength({text: '%left caracteres restantes'}); |
| @@ -84,20 +83,6 @@ $.getJSON(noosferoAPI) | @@ -84,20 +83,6 @@ $.getJSON(noosferoAPI) | ||
| 84 | // Update URL and Navigate | 83 | // Update URL and Navigate |
| 85 | updateHash($link.attr('href')); | 84 | updateHash($link.attr('href')); |
| 86 | }); | 85 | }); |
| 87 | -//TODO remove this | ||
| 88 | -// $( '.proposal-category a' ).hover(function(event){ | ||
| 89 | -// $(this).stop().effect('shake', {distance:20}, 700); | ||
| 90 | -// $(form).siblings('.success-sent').show(); | ||
| 91 | -// | ||
| 92 | -// if(!$(this)..siblings.hasClass('animated')){ | ||
| 93 | -// if(!$(this).hasClass('animated')){ | ||
| 94 | -// $(this).addClass('animated'); | ||
| 95 | -// $(this).stop().effect('shake', {distance:20}, 700); | ||
| 96 | -// } | ||
| 97 | -// }, | ||
| 98 | -// function(){ | ||
| 99 | -// $(this).removeClass('animated'); | ||
| 100 | -// }); | ||
| 101 | 86 | ||
| 102 | $( '.proposal-category .go-back' ).on('click touchstart', function(event){ | 87 | $( '.proposal-category .go-back' ).on('click touchstart', function(event){ |
| 103 | event.preventDefault(); | 88 | event.preventDefault(); |
| @@ -116,22 +101,24 @@ $.getJSON(noosferoAPI) | @@ -116,22 +101,24 @@ $.getJSON(noosferoAPI) | ||
| 116 | updateHash(newHash); | 101 | updateHash(newHash); |
| 117 | }); | 102 | }); |
| 118 | 103 | ||
| 119 | - $( '.send-button a' ).on('click touchstart', function(event){ | 104 | + $( '.send-button a' ).on('click touchstart', function(e){ |
| 105 | + e.preventDefault(); | ||
| 106 | + | ||
| 120 | //display form to send proposal (or login form for non-logged users) | 107 | //display form to send proposal (or login form for non-logged users) |
| 121 | var $this = $(this); | 108 | var $this = $(this); |
| 122 | loginButton = $this.parents('.send-button'); | 109 | loginButton = $this.parents('.send-button'); |
| 123 | loginButton.hide(); | 110 | loginButton.hide(); |
| 124 | $this.parents('.success-proposal-sent').hide(); | 111 | $this.parents('.success-proposal-sent').hide(); |
| 125 | loginCallback(logged_in); | 112 | loginCallback(logged_in); |
| 126 | - event.preventDefault(); | ||
| 127 | }); | 113 | }); |
| 128 | 114 | ||
| 129 | - $( '#display-contrast' ).on('click touchstart', function(event){ | 115 | + $( '#display-contrast' ).on('click touchstart', function(e){ |
| 116 | + e.preventDefault(); | ||
| 130 | $('#proposal-result').toggleClass('contrast'); | 117 | $('#proposal-result').toggleClass('contrast'); |
| 131 | }); | 118 | }); |
| 132 | 119 | ||
| 133 | - $( '.show_body a' ).on('click touchstart', function(event){ | ||
| 134 | - event.preventDefault(); | 120 | + $( '.show_body a' ).on('click touchstart', function(e){ |
| 121 | + e.preventDefault(); | ||
| 135 | 122 | ||
| 136 | var $link = $(this); | 123 | var $link = $(this); |
| 137 | var item = $link.data('target'); | 124 | var item = $link.data('target'); |
| @@ -140,8 +127,8 @@ $.getJSON(noosferoAPI) | @@ -140,8 +127,8 @@ $.getJSON(noosferoAPI) | ||
| 140 | updateHash($link.attr('href')); | 127 | updateHash($link.attr('href')); |
| 141 | }); | 128 | }); |
| 142 | 129 | ||
| 143 | - $( '.go-to-proposal-button a' ).on('click touchstart', function(event){ | ||
| 144 | - event.preventDefault(); | 130 | + $( '.go-to-proposal-button a' ).on('click touchstart', function(e){ |
| 131 | + e.preventDefault(); | ||
| 145 | 132 | ||
| 146 | var $link = $(this); | 133 | var $link = $(this); |
| 147 | var item = $link.data('target'); | 134 | var item = $link.data('target'); |
| @@ -150,7 +137,9 @@ $.getJSON(noosferoAPI) | @@ -150,7 +137,9 @@ $.getJSON(noosferoAPI) | ||
| 150 | updateHash($link.attr('href')); | 137 | updateHash($link.attr('href')); |
| 151 | }); | 138 | }); |
| 152 | 139 | ||
| 153 | - $( '.proposal-selection' ).change(function(event){ | 140 | + $( '.proposal-selection' ).change(function(e){ |
| 141 | + e.preventDefault(); | ||
| 142 | + | ||
| 154 | display_proposal('proposal-item-' + this.value); | 143 | display_proposal('proposal-item-' + this.value); |
| 155 | }); | 144 | }); |
| 156 | 145 | ||
| @@ -159,7 +148,7 @@ $.getJSON(noosferoAPI) | @@ -159,7 +148,7 @@ $.getJSON(noosferoAPI) | ||
| 159 | availableTags.push({ label: $(this).text(), value: $(this).attr('href')}); | 148 | availableTags.push({ label: $(this).text(), value: $(this).attr('href')}); |
| 160 | }); | 149 | }); |
| 161 | 150 | ||
| 162 | - $( "#search-input" ).autocomplete({ | 151 | + $( '#search-input' ).autocomplete({ |
| 163 | source: availableTags, | 152 | source: availableTags, |
| 164 | minLength: 3, | 153 | minLength: 3, |
| 165 | select: function( event, ui ) { | 154 | select: function( event, ui ) { |
| @@ -178,22 +167,23 @@ $.getJSON(noosferoAPI) | @@ -178,22 +167,23 @@ $.getJSON(noosferoAPI) | ||
| 178 | e.preventDefault(); | 167 | e.preventDefault(); |
| 179 | var proposal_id = this.id.split('-').pop(); | 168 | var proposal_id = this.id.split('-').pop(); |
| 180 | var form = this; | 169 | var form = this; |
| 170 | + var $form = $(this); | ||
| 181 | var message = $(form).find('.message'); | 171 | var message = $(form).find('.message'); |
| 182 | message.hide(); | 172 | message.hide(); |
| 183 | message.text(''); | 173 | message.text(''); |
| 184 | $.ajax({ | 174 | $.ajax({ |
| 185 | type: 'post', | 175 | type: 'post', |
| 186 | url: host + '/api/v1/articles/' + proposal_id + '/children', | 176 | url: host + '/api/v1/articles/' + proposal_id + '/children', |
| 187 | - data: $('#'+this.id).serialize() + "&private_token="+private_token+"&fields=id&article[name]=article_"+guid() | 177 | + data: $('#'+this.id).serialize() + '&private_token=' + private_token + '&fields=id&article[name]=article_' + guid() |
| 188 | }) | 178 | }) |
| 189 | .done(function( data ) { | 179 | .done(function( data ) { |
| 190 | form.reset(); | 180 | form.reset(); |
| 191 | - $(form).hide(); | ||
| 192 | - $(form).siblings('.success-sent').show(); | 181 | + $form.hide(); |
| 182 | + $form.siblings('.success-sent').show(); | ||
| 193 | }) | 183 | }) |
| 194 | .fail(function( jqxhr, textStatus, error ) { | 184 | .fail(function( jqxhr, textStatus, error ) { |
| 195 | - var err = textStatus + ", " + error; | ||
| 196 | - console.log( "Request Failed: " + err ); | 185 | + var err = textStatus + ', ' + error; |
| 186 | + console.log( 'Request Failed: ' + err ); | ||
| 197 | message.show(); | 187 | message.show(); |
| 198 | message.text('Não foi possível enviar.'); | 188 | message.text('Não foi possível enviar.'); |
| 199 | }); | 189 | }); |
| @@ -201,33 +191,39 @@ $.getJSON(noosferoAPI) | @@ -201,33 +191,39 @@ $.getJSON(noosferoAPI) | ||
| 201 | 191 | ||
| 202 | }) | 192 | }) |
| 203 | .fail(function( jqxhr, textStatus, error ) { | 193 | .fail(function( jqxhr, textStatus, error ) { |
| 204 | - var err = textStatus + ", " + error; | ||
| 205 | - console.log( "Request Failed: " + err ); | 194 | + var err = textStatus + ', ' + error; |
| 195 | + console.log( 'Request Failed: ' + err ); | ||
| 206 | }); | 196 | }); |
| 207 | 197 | ||
| 208 | function loadRandomProposal(topic_id, private_token) { | 198 | function loadRandomProposal(topic_id, private_token) { |
| 209 | - $(".no-proposals").hide(); | ||
| 210 | - $(".loading").show(); | ||
| 211 | - $('.random-proposal').html(''); | 199 | + var $noProposals = $('.no-proposals'); |
| 200 | + var $loading = $('.loading'); | ||
| 201 | + var $randomProposal = $('.random-proposal'); | ||
| 202 | + var $body = $(document.body); | ||
| 203 | + | ||
| 204 | + // reset view | ||
| 205 | + $noProposals.hide(); | ||
| 206 | + $loading.show(); | ||
| 207 | + $randomProposal.html(''); | ||
| 208 | + | ||
| 212 | var url = host + '/api/v1/articles/' + topic_id + '/children' + '?private_token=' + private_token + '&limit=1&order=random()&_='+new Date().getTime()+'&fields=id,name,abstract,created_by&content_type=ProposalsDiscussionPlugin::Proposal'; | 209 | var url = host + '/api/v1/articles/' + topic_id + '/children' + '?private_token=' + private_token + '&limit=1&order=random()&_='+new Date().getTime()+'&fields=id,name,abstract,created_by&content_type=ProposalsDiscussionPlugin::Proposal'; |
| 213 | $.getJSON(url).done(function( data ) { | 210 | $.getJSON(url).done(function( data ) { |
| 214 | - $(".loading").hide(); | 211 | + $loading.hide(); |
| 215 | 212 | ||
| 216 | - if(data.articles.length == 0) { | ||
| 217 | - $(".no-proposals").show(); | 213 | + if(data.articles.length === 0) { |
| 214 | + $noProposals.show(); | ||
| 218 | return; | 215 | return; |
| 219 | } | 216 | } |
| 220 | 217 | ||
| 221 | var article = data.articles[0]; | 218 | var article = data.articles[0]; |
| 222 | - $('.random-proposal').html(supportProposalTemplate(article)); | ||
| 223 | - // $(".abstract").dotdotdot(); | ||
| 224 | - $(document.body).off('click', '.vote-actions .skip'); | ||
| 225 | - $(document.body).on('click', '.vote-actions .skip', function(e) { | 219 | + $randomProposal.html(supportProposalTemplate(article)); |
| 220 | + $body.off('click', '.vote-actions .skip'); | ||
| 221 | + $body.on('click', '.vote-actions .skip', function(e) { | ||
| 226 | loadRandomProposal(topic_id, private_token); | 222 | loadRandomProposal(topic_id, private_token); |
| 227 | e.preventDefault(); | 223 | e.preventDefault(); |
| 228 | }); | 224 | }); |
| 229 | - $(document.body).off('click', '.vote-actions .like'); | ||
| 230 | - $(document.body).on('click', '.vote-actions .like', function(e) { | 225 | + $body.off('click', '.vote-actions .like'); |
| 226 | + $body.on('click', '.vote-actions .like', function(e) { | ||
| 231 | $.ajax({ | 227 | $.ajax({ |
| 232 | type: 'post', | 228 | type: 'post', |
| 233 | url: host + '/api/v1/articles/' + article.id + '/vote', | 229 | url: host + '/api/v1/articles/' + article.id + '/vote', |
| @@ -241,18 +237,29 @@ function loadRandomProposal(topic_id, private_token) { | @@ -241,18 +237,29 @@ function loadRandomProposal(topic_id, private_token) { | ||
| 241 | e.preventDefault(); | 237 | e.preventDefault(); |
| 242 | }); | 238 | }); |
| 243 | 239 | ||
| 244 | - $(document.body).off('click', '.vote-result'); | ||
| 245 | - $(document.body).on('click', '.vote-result', function(e) { | ||
| 246 | - $('.results-container').toggle(); | ||
| 247 | - if($('.results-container').is(":visible")) { | ||
| 248 | - $('.results-container .loading').show(); | ||
| 249 | - $('.results-container .results-content').hide(); | 240 | + $body.off('click', '.vote-result'); |
| 241 | + $body.on('click', '.vote-result', function(e) { | ||
| 242 | + | ||
| 243 | + var $resultsContainer = $('.results-container'); | ||
| 244 | + | ||
| 245 | + $resultsContainer.toggle(); | ||
| 246 | + | ||
| 247 | + if($resultsContainer.is(':visible')) { | ||
| 248 | + var $loading = $resultsContainer.find('.loading'); | ||
| 249 | + var $resultsContent = $resultsContainer.find('.results-content'); | ||
| 250 | + | ||
| 251 | + $loading.show(); | ||
| 252 | + $resultsContent.hide(); | ||
| 253 | + | ||
| 250 | var url = host + '/api/v1/articles/' + topic_id + '/children' + '?private_token=' + private_token + '&limit=10&order=votes_score&fields=id,name,abstract,votes_for,votes_against&content_type=ProposalsDiscussionPlugin::Proposal'; | 254 | var url = host + '/api/v1/articles/' + topic_id + '/children' + '?private_token=' + private_token + '&limit=10&order=votes_score&fields=id,name,abstract,votes_for,votes_against&content_type=ProposalsDiscussionPlugin::Proposal'; |
| 251 | $.getJSON(url).done(function( data ) { | 255 | $.getJSON(url).done(function( data ) { |
| 252 | - $('.results-container').html(resultsTemplate(data)); | 256 | + |
| 257 | + $resultsContainer.html(resultsTemplate(data)); | ||
| 253 | $('.results-container .loading').hide(); | 258 | $('.results-container .loading').hide(); |
| 254 | $('.results-container .results-content').show(); | 259 | $('.results-container .results-content').show(); |
| 255 | - $("html, body").animate({ scrollTop: $(document).height() }, "fast"); | 260 | + $('html, body').animate({ |
| 261 | + scrollTop: $(document).height() | ||
| 262 | + }, 'fast'); | ||
| 256 | }); | 263 | }); |
| 257 | $('.experience-proposal-container').hide(); | 264 | $('.experience-proposal-container').hide(); |
| 258 | $('.talk-proposal-container').hide(); | 265 | $('.talk-proposal-container').hide(); |
| @@ -280,7 +287,9 @@ function loginCallback(loggedIn, token) { | @@ -280,7 +287,9 @@ function loginCallback(loggedIn, token) { | ||
| 280 | $('.login .message').text(''); | 287 | $('.login .message').text(''); |
| 281 | 288 | ||
| 282 | if(logged_in) { | 289 | if(logged_in) { |
| 283 | - if(token) private_token = token; | 290 | + if(token){ |
| 291 | + private_token = token; | ||
| 292 | + } | ||
| 284 | loginButton.siblings('.save-article-form').show(); | 293 | loginButton.siblings('.save-article-form').show(); |
| 285 | loginButton.siblings('.save-article-form .message').show(); | 294 | loginButton.siblings('.save-article-form .message').show(); |
| 286 | loginButton.siblings('.login-container').hide(); | 295 | loginButton.siblings('.login-container').hide(); |
| @@ -297,7 +306,7 @@ function oauthPluginHandleLoginResult(loggedIn, token) { | @@ -297,7 +306,7 @@ function oauthPluginHandleLoginResult(loggedIn, token) { | ||
| 297 | 306 | ||
| 298 | jQuery(document).ready(function($) { | 307 | jQuery(document).ready(function($) { |
| 299 | $(document).on('click', '.login-action', function(e) { | 308 | $(document).on('click', '.login-action', function(e) { |
| 300 | - var message = $('.login .message') | 309 | + var message = $('.login .message'); |
| 301 | message.hide(); | 310 | message.hide(); |
| 302 | message.text(''); | 311 | message.text(''); |
| 303 | $.ajax({ | 312 | $.ajax({ |
| @@ -345,7 +354,7 @@ function display_proposals_tab(){ | @@ -345,7 +354,7 @@ function display_proposals_tab(){ | ||
| 345 | $('#proposal-group').show(); | 354 | $('#proposal-group').show(); |
| 346 | $('#nav-proposal-group a').addClass('active'); | 355 | $('#nav-proposal-group a').addClass('active'); |
| 347 | $('#nav-proposal-categories a').removeClass('active'); | 356 | $('#nav-proposal-categories a').removeClass('active'); |
| 348 | - $(".proposal-item p").dotdotdot(); | 357 | + $('.proposal-item p').dotdotdot(); |
| 349 | 358 | ||
| 350 | $('#content').show(); | 359 | $('#content').show(); |
| 351 | $('nav').show(); | 360 | $('nav').show(); |
| @@ -387,7 +396,7 @@ function display_proposal_detail(){ | @@ -387,7 +396,7 @@ function display_proposal_detail(){ | ||
| 387 | $('.talk-proposal-container').hide(); | 396 | $('.talk-proposal-container').hide(); |
| 388 | 397 | ||
| 389 | $('.body').show(); | 398 | $('.body').show(); |
| 390 | - $("html, body").animate({ scrollTop: 0 }, "fast"); | 399 | + $('html, body').animate({ scrollTop: 0 }, 'fast'); |
| 391 | } | 400 | } |
| 392 | 401 | ||
| 393 | function display_proposal_by_category(item){ | 402 | function display_proposal_by_category(item){ |
| @@ -403,7 +412,7 @@ function display_proposal_by_category(item){ | @@ -403,7 +412,7 @@ function display_proposal_by_category(item){ | ||
| 403 | $('.proposal-category-items').hide(); | 412 | $('.proposal-category-items').hide(); |
| 404 | $('.proposal-detail').hide(); | 413 | $('.proposal-detail').hide(); |
| 405 | $item.toggle( 'blind', 1000 ); | 414 | $item.toggle( 'blind', 1000 ); |
| 406 | - $(".proposal-item p").dotdotdot(); | 415 | + $('.proposal-item p').dotdotdot(); |
| 407 | $('.proposal-category .arrow-box').hide(); | 416 | $('.proposal-category .arrow-box').hide(); |
| 408 | var categorySlug = $item.data('category'); | 417 | var categorySlug = $item.data('category'); |
| 409 | $('#proposal-category-' + categorySlug).find('.arrow-box').show(); | 418 | $('#proposal-category-' + categorySlug).find('.arrow-box').show(); |
| @@ -480,11 +489,11 @@ function navigateToCategory(categoryId){ | @@ -480,11 +489,11 @@ function navigateToCategory(categoryId){ | ||
| 480 | if(categoryId === undefined){ | 489 | if(categoryId === undefined){ |
| 481 | display_category_tab(); | 490 | display_category_tab(); |
| 482 | }else{ | 491 | }else{ |
| 483 | - display_proposal_by_category('proposal-item-' + categoryId) | 492 | + display_proposal_by_category('proposal-item-' + categoryId); |
| 484 | } | 493 | } |
| 485 | } | 494 | } |
| 486 | 495 | ||
| 487 | -if("onhashchange" in window){ | 496 | +if('onhashchange' in window){ |
| 488 | window.onhashchange = locationHashChanged; | 497 | window.onhashchange = locationHashChanged; |
| 489 | }else{ | 498 | }else{ |
| 490 | console.log('The browser not supports the hashchange event!'); | 499 | console.log('The browser not supports the hashchange event!'); |