PageSourceSearch

https://uralskie-pelmeni.com/scheme/basket.js?1234

js uralskie-pelmeni.com collected 2026-10-04 22:36:53 UTC 14,111 bytes, 458 lines download raw bytes

1decim = 0;
2
3var SchemeWidget = function(options) {
4    var defaults = {
5        container_list: '#list_tickets',
6        container_schema: '#plan_hall_view',
7        handlers: {
8        	beforeLoad: {
9        		selector: '[action="get_tickets"]',
10        		event: 'click',
11        		callback: this.beforeLoad,
12        	},
13        	load: {
14        		selector: '#select_date',
15        		event: 'change',
16        		callback: this.loadScheme,
17        	},
18        },
19    };
20
21    this.options = $.extend(options, defaults);
22    this.isLoading = false;
23
24	console.log(sessionStorage.getItem('selectedEventId'))
25
26    this.initHandlers();
27	this.addBuyListeners();
28}
29
30SchemeWidget.prototype.addBuyListeners = function() {
31    $(document).ready(function() { 
32		var selectedEventId = sessionStorage.getItem('selectedEventId');
33		var selectedDateId = sessionStorage.getItem('selectedDateId');
34		sessionStorage.removeItem('selectedEventId');
35		sessionStorage.removeItem('selectedDateId');
36		if (!(selectedEventId == null) && !(selectedDateId == null)){
37			var btn = document.querySelector(`span[data-event="${selectedEventId}"][data-id="${selectedDateId}"]`);
38			if (btn) {
39				btn.click();
40			}
41		}
42    });
43}
44
45SchemeWidget.prototype.initHandlers = function () {
46	$(this.options.handlers.beforeLoad.selector).on(this.options.handlers.beforeLoad.event, {self : this}, this.options.handlers.beforeLoad.callback);
47	$(this.options.handlers.load.selector).on(this.options.handlers.load.event, {self : this}, this.options.handlers.load.callback);
48	var self = this;
49	console.log(self)
50	$('[scheme-type="list"]').on('click', function() {
51		self.switchButtonView('list');
52	});
53	$('[scheme-type="scheme"]').on('click', function() {
54		self.switchButtonView('scheme');
55	});
56};
57
58SchemeWidget.prototype.beforeLoad = function (e) {
59	$('#wrapper_ticket_order').fadeIn('fast');
60	var target = e.currentTarget;
61
62	if (Number($('#bottom_basket_count_ticket').text()) > 0 ) {
63		$('.bottom_basket').show();
64	}
65
66	var forOrder = false;
67	$('#select_date option').each(function(){
68		if ($(this).attr('for-order') != '' && $(this).attr('for-order') != undefined) {
69			forOrder = true;
70		}
71	});
72
73	if (!forOrder) {
74		$('#list_tickets').css({'display':'none'});
75		$('#schema_tickets').css({'display':'none'});
76		$('#non_tickets').css({'display':'block'});
77		$('#tickets_form').css({'display':'block'});
78		return;
79	}
80
81	if (Number($(target).attr('data-id')) != 0) {
82		$('#select_date').val($(target).attr('data-id')).change();
83	}
84	return;
85};
86
87SchemeWidget.prototype.switchButtonView = function (tag) {
88	if ($('[scheme-type="' + tag + '"]').hasClass('active')) {
89		return;
90	}
91
92	$('[scheme-type="list"]').removeClass('active');
93	$('[scheme-type="scheme"]').removeClass('active');
94	$('[scheme-view="list"]').css({display:'none'});
95	$('[scheme-view="scheme"]').css({display:'none'});
96	$('[scheme-type="' + tag + '"]').addClass('active');
97	$('[scheme-view="' + tag + '"]').css({display:'block'});
98};
99
100SchemeWidget.prototype.loadScheme = function (e) {
101	var self = e.data.self;
102	var dateId = $('#select_date').val();
103	var dateStr = $('#select_date').text();
104
105	if (self.isLoading == true) {
106		return;
107	}
108	self.isLoading = true;
109
110	$('#reload').attr('data-event', dateId);
111	$('#current_place').text($('#select_date option:selected').attr('data-place'));
112
113	var requestData = {
114		dateId: dateId,
115		time: $('#select_date option:selected').attr('data-unix'),
116		event: $('#select_date').attr('data-event'),
117		place: $('#select_date option:selected').attr('data-place'),
118	}
119	
120	function sendStatisticsRequest(requestData, type) {
121		requestData['type'] = type;
122		$.ajax({
123			url: '/api/services/statistics/',
124			method: 'POST',
125			dataType: 'json',
126			data: requestData
127		});
128	}
129
130	function sendSchemeRequest(requestData, attempts) {
131		if (attempts <= 0) {
132		        sendStatisticsRequest(requestData, 'tickets_not_found');
133			self.isLoading = false;
134			$('#scheme-container').css({'display':'none'});
135			$('#non_tickets').css({'display':'block'});
136			$('#tickets_form').css({'display':'block'});
137			$('#loadinger_ticket').fadeOut();
138			decim = 0;
139			return;
140		}
141		$.ajax({
142			url: '/api/services/scheme/',
143			method: 'POST',
144			dataType: 'json',
145			data: requestData,
146			success: function (response) {
147				if (Number(response.http) == 200) {
148				        self.isLoading = false;
149					$('#loadinger_ticket').fadeOut();
150					decim = 0;
151					$('#scheme-container').css({'display':'block'});
152					$('[scheme-view="scheme"]').html(response.maps);
153					$('[scheme-view="list"]').html(response.list);
154					if (response.maps != null) {
155						self.switchButtonView('scheme');
156						sendStatisticsRequest(requestData, 'scheme');
157					} else {
158					        sendStatisticsRequest(requestData, 'list');
159						self.switchButtonView('list');
160					}
161				} else {
162					if (attempts <= 0) {
163						$('#non_tickets').css({'display':'block'});
164						$('#tickets_form').css({'display':'block'});
165					} else {
166						setTimeout(function () {
167							sendSchemeRequest(requestData, attempts - 1);
168						}, 2500);
169					}
170				}
171			},
172			error: function (error) {
173			        sendStatisticsRequest(requestData, 'error_request');
174				self.isLoading = false;
175				$('#scheme-container').css({'display':'none'});
176				$('#non_tickets').css({'display':'block'});
177				$('#tickets_form').css({'display':'block'});
178				$('#loadinger_ticket').fadeOut();
179				decim = 0;
180			}
181		});
182	}
183	self.showLoading();
184	sendSchemeRequest(requestData, 3);
185	$('#datas').val(dateStr);
186};
187
188SchemeWidget.prototype.showLoading = function () {
189	decim = 0;
190	$('#loadinger_ticket').fadeIn();
191	$('#progress').anim_progressbar();
192	$('#non_tickets').css({'display':'none'});
193	$('#scheme-container').css({'display':'none'});
194	$('#tickets_form').css({'display':'none'});
195	$('#success_send_order').css({'display':'none'});
196	$('body').addClass('oh');
197	
198};
199
200$(document).ready(function(){
201	decim = 0;
202              
203	
204
205	function showBasket() {
206		if ($('.bottom_basket').css('display') == 'none') {
207			$('.bottom_basket').show();
208		}
209	}
210
211	function hideBasket() {
212		$('.bottom_basket').hide();
213	}
214
215	function updateBasket(data) {
216		$('#total_basket').text(data.total);
217		$('#bottom_basket_total').text(data.total);
218		$('#top_basket_count').text(data.count);
219		$('#bottom_basket_count_ticket').text(data.count);
220		if (Number(data.total) > 0) {
221			showBasket();
222		  if ($('.order > a').length === 0) {
223			$('.order').wrapInner('<a href="/order/"></a>');
224		  }
225		} else {
226		  if ($('.order > a').length > 0) {
227			$('.order > a').contents().unwrap();
228		  }
229		  hideBasket();
230		}
231	  }
232
233	$('#hide_basket').click(function(event){
234		if ( !$('.basket').hasClass('hide')) {
235		    $('.basket').addClass('hide');
236		    $('.basket').removeClass('popup');
237		    $('.basket').removeClass('active');
238		}
239	});
240
241	$('#basket_show').click(function(event){
242		if ($('.basket').hasClass('hide') && $(event.target).attr('id') != 'hide_basket') {
243	    	$('.basket').addClass('active');
244	    	$('.basket').removeClass('hide');
245	    }
246	});
247	
248
249
250	/*
251	  ДЕЙСТВИЯ С БИЛЕТАМИ
252	*/
253	$('#wrapper_ticket_order').on('click', '[action="seat"]', function(e){
254		
255		if (!$(e.target).is('[action="seat"]')) {
256			return;
257		}
258
259		var seat = {
260			number: $(this).val(),
261			sector: $(this).attr('zone'),
262			price: $(this).attr('price'),
263			row: $(this).attr('row'),
264			id: $(this).attr('offer'),
265			event: $(this).attr('event'),
266			place: $(this).attr('place'),
267			time: $(this).attr('time'),
268			e_ticket: $(this).attr('e-ticket'),
269			inBasket: Number($(this).attr('in-basket'))
270		}
271
272		if (seat.inBasket == 1) {
273			$(this).removeClass('in-basket');
274			$(this).attr('in-basket', 0);
275		} else {
276			$(this).addClass('in-basket');
277			$(this).attr('in-basket', 1);
278		}
279
280		$.ajax({
281			url: $('#wrapper_ticket_order').attr('path-ticket'),
282			type: 'POST',
283			dataType: 'JSON',
284			data: { seat:seat },
285			success: function(data) {
286				updateBasket(data.result);
287			}
288		});
289	});
290
291	$('#clear_basket').click(function(){
292
293		$( "input[in-basket='1']" ).removeClass('in-basket');
294		$( "input[in-basket='1']" ).attr('in-basket', 0);
295		
296		$.ajax({
297			url: $('#clear_basket').attr('path'),
298			type: 'POST',
299			dataType: 'JSON',
300			success: function(data) {
301				$('#total_basket').text(0);
302				$('#bottom_basket_total').text(0);
303				$('#top_basket_count').text(0);
304				$('#bottom_basket_count_ticket').text(0);
305				$('.bottom_basket').hide();
306			}
307		});
308		return false;
309	});
310	
311	$('#wrapper_ticket_order').on('click', '#reload',function(){
312		$('#select_date').val($(this).attr('data-event')).change();
313		return;
314	});
315
316	$('#wrapper_ticket_order').on('click', '#go_form_without_ticket', function(){
317		$('#non_tickets').css({'display':'none'});
318		$('#list_tickets').css({'display':'none'});
319		$('#schema_tickets').css({'display':'none'});
320		$('#tickets_form_total').css({'display':'none'});
321		$('#tickets_form').css({'display':'block'});
322	});
323
324	$('#send_new_tickets_order').click(function(){
325		var errors = 0;
326		if ($('#form_order_name').val().length < 3) {
327			$('#form_order_name').addClass('error');
328			errors++;
329		} else {
330			$('#form_order_name').removeClass('error');
331		}
332
333		if ($('#form_order_phone').val().length < 6) {
334			$('#form_order_phone').addClass('error');
335			errors++;
336		} else {
337			$('#form_order_phone').removeClass('error');
338		}
339
340		if (errors > 0) {
341			return;
342		}
343
344		var path = $(this).attr('path');
345
346		var name = $('#form_order_name').val();
347        var date = $('#select_date option:selected').attr('data-str');
348        var phone = $('#form_order_phone').val();
349        var comment = $('#form_order_message').val();
350        var place = $('#select_date option:selected').attr('data-place');
351        var event = $('#form_order_event').val();
352
353        if ( place == '' || place == undefined) {
354        	place = $('#without_ticket_form').find('[name="place"]').val();
355        }
356
357		$.ajax({
358			url: path,
359			type: 'POST',
360			data: { name:name, date:date, phone:phone, comment:comment, place:place, event:event },
361			dataType: 'JSON',
362			success: function(data) {
363				//alert('Спасибо за заказ! Заявка на заказ билетов нами получена и принята к рассмотрению. Мы в скором времени обязательно свжемся с вами для уточнения деталей');
364				//yaCounter34811365.reachGoal('ORDER');
365				//$('#wrapper_ticket_order').fadeOut('fast');
366				$('#non_tickets').css({'display':'none'});
367				$('#list_tickets').css({'display':'none'});
368				$('#schema_tickets').css({'display':'none'});
369				$('#tickets_form').css({'display':'none'});
370				$('#success_send_order').css({'display':'block'});
371				
372				$('#form_order_name').val('');
373				$('#form_order_phone').val('');
374				$('#form_order_message').val('');
375			}
376		});
377	});
378
379	$('#back_to_site, #close_ticket_order').click(function(){
380		$('#wrapper_ticket_order').fadeOut('fast');
381		$('.basket').removeClass('hide');
382		$('.basket').removeClass('active');
383		$('.bottom_basket').hide();
384		$('body').removeClass('oh');
385		//$('#basket').fadeOut('fast');
386	});
387
388	$('#show_basket').click(function(){
389		if ($(this).hasClass('show')) {
390			$(this).removeClass('show');
391			$(this).addClass('hide');
392			$('#basket').addClass('hide');
393		} else {
394			$(this).addClass('show');
395			$(this).removeClass('hide');
396			$('#basket').removeClass('hide');
397		}
398	});
399
400	/*прогрессбар*/
401	jQuery.fn.anim_progressbar = function (aOptions) {
402        // Определяем значения
403        var iCms = 1000;
404        var iMms = 32 * iCms;
405        var iHms = 3600 * iCms;
406        var iDms = 24 * 3600 * iCms;
407
408        // Определяем опции
409        var aDefOpts = {
410            start: new Date(), // Текущее время
411            finish: new Date().setTime(new Date().getTime() + 32 * iCms), // Текущее время  + 60 сек
412            interval: 100
413        }
414
415        var aOpts = jQuery.extend(aDefOpts, aOptions);
416        var vPb = this;
417
418        // Кажды индикаторо прогресса
419        return this.each(
420            function() {
421                var iDuration = aOpts.finish - aOpts.start;
422                // Вызываем оригинальны йиндикатор прогресса
423                //$(vPb).children('.pbar').progressbar();
424
425                // Процесс обработки
426                var vInterval = setInterval(
427                    function(){
428						if (!$(vPb).is(':visible')) {
429							clearInterval(vInterval);
430							return;
431						}
432                        var iLeftMs = aOpts.finish - new Date(); // Оставшееся врмея в миллисекундах
433                        var iElapsedMs = new Date() - aOpts.start, // Прошедшее время в миллисекундах
434                            iDays = parseInt(iLeftMs / iDms), // Прошло дней
435                            iHours = parseInt((iLeftMs - (iDays * iDms)) / iHms), // Прошло часов
436                            iMin = parseInt((iLeftMs - (iDays * iDms) - (iHours * iHms)) / iMms), // Прошло минут
437                            iSec = parseInt((iLeftMs - (iDays * iDms) - (iMin * iMms) - (iHours * iHms)) / iCms), // Прошло секунд
438                            iPerc = (iElapsedMs > 0) ? iElapsedMs / iDuration * 100 : 0; // Процент выполнения
439
440                            if (decim != 0) {
441                                iPerc = decim;
442                            }
443
444                        // Выводим текущее положение и прогресс
445                        $(vPb).children('.percent').html('<b>'+iPerc.toFixed(1)+'%</b>');
446                        $(vPb).children('.pbar').children('.ui-progressbar-value').css('width', iPerc+'%');
447
448                        // В случае завершения
449                        if (iPerc >= 100) {
450                            clearInterval(vInterval);
451                            $(vPb).children('.percent').html('<b>100%</b>');
452                        }
453                    } ,aOpts.interval
454                );
455            }
456        );
457	}
458});

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.