PageSourceSearch

https://snobahn.com/wp-content/plugins/trx_addons/components/reviews/reviews.js?reload=48699229

js snobahn.com collected 2026-10-05 05:51:33 UTC 5,460 bytes, 164 lines download raw bytes

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.