PageSourceSearch

https://muka.cafe/assets/js/order.js

js muka.cafe collected 2026-09-30 02:31:38 UTC 2,924 bytes, 104 lines download raw bytes

1(function($) {
2
3ymaps.ready(function() {
4	function addressHandler() {
5		var $form = $(".js--order-form"),
6			$addressError = $("#form_address_error", $form),
7			$submit = $("input:submit", $form),
8			$deliveryPriceInput = $("input[name='delivery_price']", $form),
9			$deliveryAddressYandex = $("input[name='delivery_address_yandex']", $form),
10			$orderDelivery = $(".order__delivery", $form),
11			$orderDeliveryPrice = $(".js--cart-delivery", $orderDelivery),
12			$orderSummary = $(".js--cart-total-sum", $form),
13			orderSummaryValue = $orderSummary.data("summary");
14			
15		
16		var addressMap = new ymaps.Map("address-map", {
17				center: [55.74954, 37.621587],
18				zoom: 10
19			}),
20			suggestView = new ymaps.SuggestView("delivery-address", {
21				boundedBy: [[60.239078, 29.502410], [59.790364, 30.622473]]
22			}),
23			deliveryZones = null;
24	
25		$.ajax({
26			url: "/zones.json?v=2",
27			dataType: "json",
28			success: function(json) {
29				deliveryZones = ymaps.geoQuery(json).addToMap(addressMap);
30			}
31		});
32		
33		
34		$("#delivery-address").on("blur", function() {
35			(function($input) {
36				setTimeout(function() {
37					if($input.val() != $deliveryAddressYandex.val()) {
38						$input.val($deliveryAddressYandex.val());
39					}
40				}, 100);
41			})($(this));
42		});
43		
44
45	
46		suggestView.events.add("select", function (e) {
47			var request = e.get("item").value,
48				error, freeAfter, price, minimalPrice;
49				
50			$deliveryAddressYandex.val(request);
51	
52	        ymaps.geocode(request).then(function(res) {
53				var obj = res.geoObjects.get(0);
54				if(obj) {
55					// Об оценке точности ответа геокодера можно прочитать тут: https://tech.yandex.ru/maps/doc/geocoder/desc/reference/precision-docpage/
56					switch(obj.properties.get("metaDataProperty.GeocoderMetaData.precision")) {
57						case "exact":
58							var zone = deliveryZones.searchContaining(obj.geometry.getCoordinates()).get(0);
59							if(zone) {
60								error = "";
61							} else {
62								error = "К сожалению, мы не можем доставить заказ на указанный адрес";
63							}
64							
65						break;
66	
67						case "number":
68						case "near":
69						case "range":
70						case "street":
71							error = "Неполный адрес, требуется уточнение. Уточните номер дома";
72						break;
73	
74						case "other":
75						default:
76							error = "Неточный адрес, требуется уточнение. Уточните адрес";
77					}
78				} else {
79					error = "Адрес не найден. Уточните адрес";
80				}
81				
82				if(error) {
83					$addressError.text(error).show();
84					$submit.attr("disabled", "disabled");
85				} else {
86					$addressError.empty().hide();
87					$submit.removeAttr("disabled");
88				}
89				
90				
91				
92	        }, function(e) {
93	            console.log(e);
94	        });
95		});
96	}
97	
98	
99	addressHandler();
100
101
102});
103
104})(jQuery);

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.