Mercurial > public > sg101
view media/js/downloads/rating.js @ 141:861f7d5f1b23
Rework r149 for #30. Got rid of the custom index. Put my dashboard in the nav-global block instead.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Sun, 06 Dec 2009 07:55:48 +0000 |
parents | dbd703f7d63a |
children | b43e1288ff80 |
line wrap: on
line source
function dlRatingOver(event) { var div = $(this).parent('div'); var stars = $('img', div); for (var i = 0; i <= event.data; ++i) { var star = $(stars[i]); star.attr('src', '/static/downloads/stars/rating_over.gif'); } } function dlRatingOut(event) { var div = $(this).parent('div'); var stars = $('img', div); for (var i = 0; i <= event.data; ++i) { var star = $(stars[i]); star.attr('src', '/static/downloads/stars/rating_' + star.attr('class') + '.gif'); } } function dlRatingClick(event) { var star = $(this); var id = star.attr('id'); if (id.match(/star-(\d+)-(\d+)/)) { $.post('/downloads/rate/', { id: RegExp.$1, rating: parseInt(RegExp.$2) + 1}, function(rating) { rating = parseFloat(rating); if (rating < 0) { alert("You've already rated this download."); return; } alert('Thanks for rating this download!'); var div = star.parent('div'); var stars = $('img', div); rating = parseFloat(rating); for (var i = 0; i < 5; ++i) { var s = $(stars[i]); s.removeClass(s.attr('class')); if (rating >= 1.0) { s.attr('src', '/static/downloads/stars/rating_on.gif'); s.addClass('on') rating -= 1.0; } else if (rating >= 0.5) { s.attr('src', '/static/downloads/stars/rating_half.gif'); s.addClass('half') rating = 0; } else { s.attr('src', '/static/downloads/stars/rating_off.gif'); s.addClass('off') } } }, 'text'); } } $(document).ready(function() { $('.rating').each(function(n) { var div = $(this); var id = div.attr('id'); var numeric_id = -1; if (id.match(/rating-(\d+)/)) { numeric_id = RegExp.$1; } var rating = div.html(); div.html(''); for (var i = 0; i < 5; ++i) { var star = $('<img />'); if (rating >= 1) { star.attr('src', '/static/downloads/stars/rating_on.gif'); star.addClass('on') --rating; } else if (rating >= 0.5) { star.attr('src', '/static/downloads/stars/rating_half.gif'); star.addClass('half') rating = 0; } else { star.attr('src', '/static/downloads/stars/rating_off.gif'); star.addClass('off') } star.attr('alt', 'star'); star.attr('id', 'star-' + numeric_id + '-' + i); star.bind('mouseover', i, dlRatingOver); star.bind('mouseout', i, dlRatingOut); star.click(dlRatingClick); div.append(star); } }); });