1/* global jQuery, TRX_ADDONS_STORAGE */ 2 3jQuery(document).ready(function() { 4 "use strict"; 5 6 var $window = jQuery( window ), 7 $document = jQuery( document ); 8 9 var $reviews; 10 11 // Update links and values after the new post added 12 $document.on( 'action.init_hidden_elements', update_jquery_links ); 13 $document.on( 'action.got_ajax_response', update_jquery_links ); 14 var first_run = true; 15 function update_jquery_links(e) { 16 if ( first_run && e && e.namespace == 'init_hidden_elements' ) { 17 first_run = false; 18 return; 19 } 20 $reviews = jQuery( '.trx_addons_reviews_block_mark:not(.inited)' 21 +',.trx_addons_reviews_stars:not([data-mark-max]):not(.inited)' 22 +',.trx_addons_reviews_block_detailed .trx_addons_reviews_block_criterias[data-mark-max="10"] .trx_addons_reviews_block_list_mark_line_hover:not(.inited)' 23 +',.trx_addons_reviews_block_detailed .trx_addons_reviews_block_criterias[data-mark-max="100"] .trx_addons_reviews_block_list_mark_line_hover:not(.inited)' 24 ); 25 } 26 update_jquery_links(); 27 28 // Votes in the comment 29 var votes_wrap = jQuery(".trx_addons_reviews_stars[data-mark-max]"); 30 if (votes_wrap.length > 0) { 31 votes_wrap 32 // Show value slider on hover 33 .on('mousemove', function(e) { 34 var mark_wrap = jQuery(this), 35 mark_max = mark_wrap.data('mark-max'), 36 mark_decimals = mark_wrap.data('mark-decimals'), 37 w = mark_wrap.width(), 38 x = Math.min( w, Math.max( 0, Math.round( e.pageX - mark_wrap.offset().left ) ) ) + 1; 39 if (x <= w) { 40 var pos = Math.round(x / w * 100), 41 mark_show = trx_addons_reviews_mark2show(pos, mark_max, mark_decimals); 42 pos = trx_addons_reviews_mark2save(mark_show, mark_max, mark_decimals); 43 // Shift bubble and show new value in it 44 mark_wrap 45 .data("mark", pos) 46 .find(".trx_addons_reviews_bubble") 47 .fadeIn() 48 .css({"left": pos + "%"}) 49 .find('.trx_addons_reviews_bubble_value') 50 .text(mark_show); 51 // Set new width of the 'stars hover' 52 mark_wrap 53 .find(".trx_addons_reviews_stars_hover") 54 .css({"width": pos+"%"}); 55 } 56 }) 57 // Hide value slider 58 .on('mouseleave', function(e) { 59 var mark_wrap = jQuery(this), 60 pos = Math.max(0, Number(mark_wrap.find('input[name="trx_addons_reviews_vote"]').val())); 61 mark_wrap.find(".trx_addons_reviews_bubble").fadeOut(); 62 mark_wrap.find(".trx_addons_reviews_stars_hover").css({"width": pos+"%"}); 63 }) 64 // Save vote on click 65 .on('click', function(e) { 66 var mark_wrap = jQuery(this); 67 mark_wrap 68 .find('input[name="trx_addons_reviews_vote"]') 69 .val( mark_wrap.data("mark") ); 70 mark_wrap 71 .next('.trx_addons_reviews_text') 72 .find('.trx_addons_reviews_text_mark') 73 .text(mark_wrap.find('.trx_addons_reviews_bubble_value').text()); 74 }); 75 } 76 77 // Convert rating mark to the display equivalent 78 function trx_addons_reviews_mark2show(mark, mark_max, mark_decimals) { 79 if (mark_max < 100) { 80 mark = mark_decimals > 0 81 ? Math.round(mark / 100 * mark_max * 10) / 10 82 : Math.ceil(mark / 100 * mark_max); 83 if (mark_decimals > 0 && String(mark).indexOf(".") < 0) { 84 mark += ".0"; 85 } 86 } else { 87 mark = Math.round(mark); 88 } 89 return mark; 90 } 91 92 // Convert rating mark to the storage equivalent 93 function trx_addons_reviews_mark2save(mark, mark_max) { 94 if (mark_max < 100) { 95 mark = Math.round(mark * 100 / mark_max); 96 } else { 97 mark = Math.round(mark); 98 } 99 return mark; 100 } 101 102 $document 103 .on( 'action.init_hidden_elements', trx_addons_reviews_block_mark_init ) 104 .on( 'action.scroll_trx_addons', trx_addons_reviews_block_mark_init ) 105 .on( 'action.resize_trx_addons', trx_addons_reviews_block_mark_resize ); 106 107 // Init marks in the reviews blocks 108 function trx_addons_reviews_block_mark_init(e, container) { 109 110 if ( $reviews.length === 0 ) return; 111 112 var scrollPosition = $window.scrollTop() + $window.height(); 113 114 $reviews.each(function(idx) { 115 var item = $reviews.eq(idx); 116 // If item now invisible or inited 117 if ( item.hasClass('inited') || item.parents('div:hidden,article:hidden').length > 0 ) { 118 return; 119 } 120 var scrollMark = item.offset().top; 121 if (scrollPosition - 50 > scrollMark) { 122 item.addClass('inited'); 123 if (item.hasClass('trx_addons_reviews_block_mark')) { 124 var canvas = item.find('canvas').eq(0), 125 mark = parseFloat(canvas.data('value')), 126 max = parseInt(canvas.data('max-value'), 10), 127 decimals = parseInt(canvas.data('decimals'), 10), 128 digits = item.find('.trx_addons_reviews_block_mark_value'); 129 item 130 .find('.trx_addons_reviews_block_mark_progress') 131 .animate( 132 { 133 'width': trx_addons_reviews_mark2save( mark, max, decimals )+'
133%' 134 }, 135 { 136 duration: 2000, 137 easing: 'linear', 138 step: function(now, fx) { 139 var m = trx_addons_reviews_mark2show( now, max, decimals ); 140 digits.text(m); 141 trx_addons_draw_arc_on_canvas(item, m); 142 } 143 } 144 ); 145 } 146 } 147 }); 148 } 149 150 function trx_addons_reviews_block_mark_resize( e ) { 151 jQuery('.trx_addons_reviews_block_mark.inited canvas').each(function () { 152 var canvas = jQuery(this); 153 // If item now invisible 154 if (canvas.parents('div:hidden,article:hidden').length > 0) { 155 return; 156 } 157 var item = canvas.parent(); 158 if (item.width() != canvas.width()) { 159 trx_addons_draw_arc_on_canvas(item, parseFloat(canvas.data('value'))); 160 } 161 }); 162 } 163 164});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.