1(function ($) { 2 'use strict'; 3 4 var template = null; 5 6 var statusByCode = { 7 NEW: 'Создание заказа', 8 CANCEL: 'ÐÑмена заказа', 9 LOST: 'Ðаказ ÑÑеÑÑн', 10 11 WAREHOUSE_HANDOVER: 'Ðаказ оÑÑканиÑован на паÑÑнÑÑÑком дÑопоÑÑ', 12 WAREHOUSE_PARCEL_ACCEPTED: 'Ðаказ взвеÑен опеÑаÑоÑом пеÑвой мили', 13 WAREHOUSE_ARRIVAL: 'Ðаказ пÑинÑÑ Ð¾Ð¿ÐµÑаÑоÑом пеÑвой мили на Ñклад', 14 WAREHOUSE_DEPARTURE: 'Ðаказ оÑгÑÑжен опеÑаÑоÑом пеÑвой мили Ñо Ñклада', 15 WAREHOUSE_RETURN_READY: 'ÐозвÑаÑнÑй заказ пÑинÑÑ Ð½Ð° Ñкладе', 16 WAREHOUSE_RETURNED: 'ÐÑÐ¾Ð´Ð°Ð²ÐµÑ Ð·Ð°Ð±Ñал заказ Ñо Ñклада', 17 WAREHOUSE_DISPOSAL: 'Ðаказ ÑÑилизиÑован на Ñкладе', 18 19 LINEHAUL_HANDOVER: 'Ðаказ пÑинÑÑ Ð¾Ð¿ÐµÑаÑоÑом Linehaul', 20 LINEHAUL_REJECTED: 'Ðаказ возвÑаÑен на ÑÑапе обÑабоÑки опеÑаÑоÑом Linehaul', 21 LINEHAUL_DEPARTURE: 'Ðаказ оÑпÑавлен опеÑаÑоÑом Linehaul из наÑалÑной ÑоÑки', 22 LINEHAUL_TRANSIT_ARRIVAL: 'Ðаказ пÑибÑл на ÑÑанзиÑнÑй Ñклад опеÑаÑоÑа Linehaul', 23 LINEHAUL_TRANSIT_DEPARTURE: 'Ðаказ оÑпÑавлен Ñ ÑÑанзиÑного Ñклада опеÑаÑоÑа Linehaul', 24 LINEHAUL_ARRIVAL: 'Ðаказ пÑибÑл в конеÑнÑÑ ÑоÑÐºÑ Ð¾Ð¿ÐµÑаÑоÑа Linehaul', 25 26 CUSTOMS_CHECK_IN: 'Ðаказ поÑÑÑпил на СÐÐ¥', 27 CUSTOMS_CLEARANCE: 'ÐаннÑе по Ð·Ð°ÐºÐ°Ð·Ñ Ð¿ÐµÑÐµÐ´Ð°Ð½Ñ Ð½Ð° ÑÐ°Ð¼Ð¾Ð¶Ð½Ñ Ð´Ð»Ñ Ð²ÑпÑÑка', 28 CUSTOMS_HELD: 'ÐадеÑжано Ñаможней', 29 CUSTOMS_DENIAL: 'ÐÑказ Ñаможней в вÑпÑÑке заказа', 30 CUSTOMS_WAITS_PAYMENT: 'ÐжидаеÑÑÑ Ð¾Ð¿Ð»Ð°Ñа ÑаможеннÑÑ Ð¿Ð¾Ñлин по заказÑ', 31 CUSTOMS_FEE_PAID: 'ТаможеннÑе поÑÐ»Ð¸Ð½Ñ Ð¾Ð¿Ð»Ð°ÑенÑ', 32 CUSTOMS_FEE_CANCELED: 'ÐÑÐµÐ¼Ñ Ð½Ð° оплаÑÑ Ð¿Ð¾ÑÐ»Ð¸Ð½Ñ Ð¸ÑÑекло. Ðаказ помеÑен на возвÑаÑ', 33 CUSTOMS_RELEASED: 'ТРзавеÑÑено. Ðаказ вÑпÑÑен', 34 CUSTOMS_CHECK_OUT: 'Ðаказ оÑгÑÑжен ÑкÑпÑеÑÑ-пеÑевозÑÐ¸ÐºÑ Ð¿Ð¾Ñледней мили', 35 CUSTOMS_READY_TO_SHIP: 'Ðаказ гоÑов к оÑгÑÑзке Ñ Ð¡ÐÐ¥', 36 CUSTOMS_RETURN_PREPARATION: 'ÐодгоÑовка заказа к возвÑаÑÑ Ñ Ñаможни', 37 CUSTOMS_RETURNED: 'Ðаказ возвÑаÑÑн Ñ Ñаможни в ÑÑÑÐ°Ð½Ñ Ð¾ÑпÑавлениÑ', 38 CUSTOMS_DISPOSAL_MARKED: 'Ðаказ помеÑен на ÑÑилизаÑÐ¸Ñ Ð² зоне ТÐ', 39 CUSTOMS_DISPOSED: 'Ðаказ ÑÑилизиÑован в зоне ТÐ', 40 CUSTOMS_PD_REQUESTED: 'ÐÑокеÑом запÑоÑÐµÐ½Ñ ÐÐ', 41 CUSTOMS_PD_RECEIVED: 'ÐÑокеÑом полÑÑÐµÐ½Ñ ÐÐ', 42 CUSTOMS_PD_REVIEW: 'ÐÐ ÑÑебÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑной пÑовеÑки', 43 CUSTOMS_RELEASE_EXTENDED: 'ÐÑодление ÑеÑÐµÐ½Ð¸Ñ Ð¿Ð¾ вÑпÑÑкÑ', 44 45 LAST_MILE_TRANSIT_ARRIVAL: 'Ðаказ поÑÑÑпил на ÑÑанзиÑнÑй Ñклад', 46 LAST_MILE_TRANSIT_DEPARTURE: 'Ðаказ оÑгÑÑжен Ñ ÑÑанзиÑного Ñклада', 47 LAST_MILE_HANDOVER: 'Ðаказ оÑгÑÑжен ÑкÑпÑеÑÑ-пеÑевозÑÐ¸ÐºÑ Ð¿Ð¾Ñледней мили' 48 }; 49 50 var statusByEn = { 51 'Order created': 'Создание заказа', 52 'Order cancelled': 'ÐÑмена заказа', 53 'Order canceled': 'ÐÑмена заказа', 54 'Order lost': 'Ðаказ ÑÑеÑÑн', 55 'Order arrived to Customs Warehouse': 'Ðаказ поÑÑÑпил на СÐÐ¥', 56 'Order submitted to customs for release': 'ÐаннÑе по Ð·Ð°ÐºÐ°Ð·Ñ Ð¿ÐµÑÐµÐ´Ð°Ð½Ñ Ð½Ð° ÑÐ°Ð¼Ð¾Ð¶Ð½Ñ Ð´Ð»Ñ Ð²ÑпÑÑка', 57 'Customs clearance completed, order released': 'ТРзавеÑÑено. Ðаказ вÑпÑÑен', 58 'Order shipped out from customs warehouse': 'Ðаказ оÑгÑÑжен ÑкÑпÑеÑÑ-пеÑевозÑÐ¸ÐºÑ Ð¿Ð¾Ñледней мили', 59 'Customs denial': 'ÐÑказ Ñаможней в вÑпÑÑке заказа', 60 'Held by customs': 'ÐадеÑжано Ñаможней' 61 }; 62 63 var bizTypeRu = { 64 EXPRESS: 'ÐкÑпÑеÑÑ', 65 STANDARD: 'СÑандаÑÑ' 66 }; 67 68 function translateStatus(status, description) { 69 if (status && statusByCode[status]) { 70 return statusByCode[status]; 71 } 72 if (description && statusByEn[description]) { 73 return statusByEn[description]; 74 } 75 return description || status || ''; 76 } 77 78 function localizeTracking(data) { 79 var result = $.extend({}, data); 80 var currentStatus = ''; 81 82 if ($.isArray(data.trackingHistory)) { 83 $.each(data.trackingHistory, function (_, item) { 84 if (item.trackingDescription === data.trackingDescription && item.status) { 85 currentStatus = item.status; 86 return false;
87 } 88 }); 89 } 90 91 result.trackingDescription = translateStatus(currentStatus, data.trackingDescription); 92 result.bizTypeLabel = bizTypeRu[data.bizType] || data.bizType || ''; 93 result.weightUnitLabel = data.weightUnit === 'g' ? 'г' : (data.weightUnit || ''); 94 95 if ($.isArray(data.trackingHistory)) { 96 result.trackingHistory = $.map(data.trackingHistory, function (item) { 97 var row = $.extend({}, item); 98 row.trackingDescription = translateStatus(item.status, item.trackingDescription); 99 return row; 100 }); 101 } 102 103 return result; 104 } 105 106 function showError(message) { 107 $('#tracking-error').text(message).show(); 108 } 109 110 function hideError() { 111 $('#tracking-error').hide(); 112 } 113 114 function loadTracking(number) { 115 number = $.trim(number || ''); 116 117 if (!number) { 118 showError('ÐведиÑе ÑÑек-Ð½Ð¾Ð¼ÐµÑ Ð¸Ð»Ð¸ Ð½Ð¾Ð¼ÐµÑ Ð·Ð°ÐºÐ°Ð·Ð°'); 119 $('#tracking-display').empty(); 120 return; 121 } 122 123 hideError(); 124 $('#tracking-display').html('<div class="crocus-tracking-loading">ÐагÑÑзка...</div>'); 125 126 $.ajax({ 127 url: '/tracking/api.php', 128 data: { number: number }, 129 cache: false 130 }).then(function (data) { 131 if (typeof data === 'string') { 132 try { 133 data = $.parseJSON(data); 134 } catch (e) { 135 showError('ÐекоÑÑекÑнÑй оÑÐ²ÐµÑ ÑеÑвиÑа ÑÑекинга'); 136 $('#tracking-display').empty(); 137 return; 138 } 139 } 140 141 if (!data || data.error || data.msg === 'Not found!' || !data.trackingNumber) { 142 showError((data && data.error) || 'ÐнÑоÑмаÑÐ¸Ñ Ð¿Ð¾ ÑÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð¼Ñ Ð½Ð¾Ð¼ÐµÑÑ Ð½Ðµ найдена'); 143 $('#tracking-display').empty(); 144 return; 145 } 146 147 if (template === null) { 148 template = $('#tracking-template').html(); 149 Mustache.parse(template); 150 } 151 152 $('#tracking-display').html(Mustache.render(template, localizeTracking(data))); 153 }, function (xhr) { 154 var message = 'Ðе ÑдалоÑÑ Ð¿Ð¾Ð»ÑÑиÑÑ Ð´Ð°Ð½Ð½Ñе по ÑÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð¼Ñ Ð½Ð¾Ð¼ÐµÑÑ'; 155 var data = null; 156 157 if (xhr.responseText) { 158 try { 159 data = $.parseJSON(xhr.responseText); 160 } catch (e) {} 161 } 162 163 if (data && data.error) { 164 message = data.error; 165 } else if (xhr.status === 404 || xhr.status === 400) { 166 message = 'ÐнÑоÑмаÑÐ¸Ñ Ð¿Ð¾ ÑÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð¼Ñ Ð½Ð¾Ð¼ÐµÑÑ Ð½Ðµ найдена'; 167 } 168 169 showError(message); 170 $('#tracking-display').empty(); 171 }); 172 } 173 174 $(document).ready(function () { 175 $('#tracking-search-form').on('submit', function (e) { 176 e.preventDefault(); 177 loadTracking($('#tracking-number').val()); 178 }); 179 180 var query = window.location.search || ''; 181 var match = query.match(/[?&](?:number|awb|track)=([^&]*)/); 182 if (match && match[1]) { 183 var queryNumber = decodeURIComponent(match[1].replace(/\+/g, ' ')); 184 $('#tracking-number').val(queryNumber); 185 loadTracking(queryNumber); 186 } 187 }); 188})(window.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.