Commit e96555e7c360921350dd7cfc64c02c336f8a242f
1 parent
5562a304
Exists in
master
and in
39 other branches
Improving JS for voting
Showing
1 changed file
with
28 additions
and
45 deletions
Show diff stats
src/super_archives/templates/message-thread.html
| ... | ... | @@ -6,27 +6,21 @@ |
| 6 | 6 | {% block head_js %} |
| 7 | 7 | |
| 8 | 8 | <script> |
| 9 | - function vote_done_callback(msg_id, step) { | |
| 9 | + function vote_done_callback(step) { | |
| 10 | 10 | console.debug('(un)vote successfuly (step ' + step + ')'); |
| 11 | - var $msg = $('#msg-' + msg_id) | |
| 11 | + var $btn = $(this); | |
| 12 | + var step; | |
| 12 | 13 | |
| 13 | - $('.vote-count', $msg).text(function(self, count) { | |
| 14 | + if ($btn.hasClass('btn-default')) { | |
| 15 | + step = 1; | |
| 16 | + } else { | |
| 17 | + step = -1; | |
| 18 | + } | |
| 19 | + | |
| 20 | + $btn.prev('.vote-count').text(function(self, count) { | |
| 14 | 21 | return parseInt(count) + step; |
| 15 | 22 | }); |
| 16 | 23 | |
| 17 | - if (step == -1) { | |
| 18 | - var $btn = $('.vote.btn-success', $msg); | |
| 19 | - $btn.unbind('click'); | |
| 20 | - $btn.bind('click', function() { | |
| 21 | - vote(msg_id); | |
| 22 | - }); | |
| 23 | - } else { | |
| 24 | - var $btn = $('.vote.btn-default', $msg); | |
| 25 | - $btn.unbind('click'); | |
| 26 | - $btn.bind('click', function() { | |
| 27 | - unvote(msg_id); | |
| 28 | - }); | |
| 29 | - } | |
| 30 | 24 | $btn.toggleClass('btn-success'); |
| 31 | 25 | $btn.toggleClass('btn-default'); |
| 32 | 26 | $btn.button('reset') |
| ... | ... | @@ -46,35 +40,35 @@ |
| 46 | 40 | scroll(0, 0); |
| 47 | 41 | } |
| 48 | 42 | |
| 49 | - function get_vote_ajax_dict(msg_id, method) { | |
| 43 | + function get_vote_ajax_dict(msg_id, method, context) { | |
| 50 | 44 | var csrftoken = $.cookie('csrftoken'); |
| 51 | - $('#msg-' + msg_id + ' .vote.btn-success').button('loading'); | |
| 52 | 45 | |
| 53 | 46 | return { |
| 54 | 47 | url: "/api/message/" + msg_id + "/vote", |
| 55 | 48 | type: method, |
| 49 | + context: context, | |
| 56 | 50 | beforeSend: function(xhr, settings) { |
| 57 | 51 | xhr.setRequestHeader("X-CSRFToken", csrftoken); |
| 58 | 52 | } |
| 59 | 53 | } |
| 60 | 54 | } |
| 61 | 55 | |
| 62 | - function vote(msg_id) { | |
| 63 | - console.debug('trying to vote'); | |
| 64 | - $.ajax(get_vote_ajax_dict(msg_id, 'PUT')) | |
| 65 | - .done(function(){ | |
| 66 | - vote_done_callback(msg_id, 1); | |
| 67 | - }) | |
| 68 | - .fail(vote_fail_callback); | |
| 69 | - } | |
| 56 | + function vote() { | |
| 57 | + var $ajax; | |
| 58 | + var $btn = $(this); | |
| 59 | + var $msg = $(this).parents('.email-message'); | |
| 60 | + | |
| 61 | + var msg_id = $msg.attr('id').split('-')[1]; | |
| 70 | 62 | |
| 71 | - function unvote(msg_id) { | |
| 72 | - console.debug('trying to remove vote'); | |
| 73 | - $.ajax(get_vote_ajax_dict(msg_id, 'DELETE')) | |
| 74 | - .done(function(){ | |
| 75 | - vote_done_callback(msg_id, -1); | |
| 76 | - }) | |
| 77 | - .fail(vote_fail_callback); | |
| 63 | + $btn.button('loading'); | |
| 64 | + if($btn.hasClass('btn-default')) { | |
| 65 | + $ajax = $.ajax(get_vote_ajax_dict(msg_id, 'PUT', $btn[0])); | |
| 66 | + } else { | |
| 67 | + $ajax = $.ajax(get_vote_ajax_dict(msg_id, 'DELETE', $btn[0])); | |
| 68 | + } | |
| 69 | + console.debug('trying to vote'); | |
| 70 | + $ajax.done(vote_done_callback); | |
| 71 | + $ajax.fail(vote_fail_callback); | |
| 78 | 72 | } |
| 79 | 73 | |
| 80 | 74 | // Binding functions |
| ... | ... | @@ -83,18 +77,7 @@ |
| 83 | 77 | $(this).next('.panel-collapse').collapse('toggle'); |
| 84 | 78 | }); |
| 85 | 79 | |
| 86 | - $('.email-message').each(function() { | |
| 87 | - var msg_id = this.getAttribute('id').split('-')[1]; | |
| 88 | - | |
| 89 | - $('.vote.btn-default', this).bind('click', function() { | |
| 90 | - vote(msg_id); | |
| 91 | - }); | |
| 92 | - | |
| 93 | - $('.vote.btn-success', this).bind('click', function() { | |
| 94 | - unvote(msg_id); | |
| 95 | - }); | |
| 96 | - | |
| 97 | - }); | |
| 80 | + $('.vote.btn', this).bind('click', vote); | |
| 98 | 81 | }); |
| 99 | 82 | |
| 100 | 83 | </script> | ... | ... |