var cdek; var ready = false; var moving = true; function init(location) { import('https://cdn.jsdelivr.net/npm/@cdek-it/widget@3') .then(module => { cdek = new window.CDEKWidget({ from: { code: 248, address: 'Екатерининская 116' }, root: 'map', apiKey: 'a222c5fe-fee7-420a-b979-aec0473a0400', servicePath: 'https://arming.dev.mirzaev.sexy/api/cdek', hideFilters: { have_cashless: true, have_cash: true, is_dressing_room: true, type: false, }, hideDeliveryOptions: { office: false, door: false, }, lang: '{{ language.name == "ru" ? "rus" : "eng" }}', currency: '{{ currency.name|upper }}', tariffs: { office: [234, 136, 185, 368, 378, 498, 2323, 2360, 510, 291], door: [233, 137, 186, 2322, 294], }, defaultLocation: [location?.longitude || {{ session.buffer.delivery[account.buffer.delivery.company ?? session.buffer.delivery.company].location.data.longitude ?? 37.622513 }}, location?.latitude || {{ session.buffer.delivery[account.buffer.delivery.company ?? session.buffer.delivery.company].location.data.latitude ?? 55.75322 }}], onReady() { // const map = document.getElementById('map'); // map?.style.setProperty('--animation-end-height', '240px'); // map?.classList.add('animated', 'slide-down'); }, onCalculate(tariffs, address) { // Deleting the delivery cost element document.getElementById("cost_delivery")?.remove(); // Deleting the delivery days element document.getElementById("shipping")?.remove(); // Disablind the order button document.getElementById("order")?.setAttribute('disabled', true); }, onChoose(type, tariff, address) { moving = false; // Deleting the delivery cost element document.getElementById("cost_delivery")?.remove(); // Deleting the delivery days element document.getElementById("shipping")?.remove(); // Disablind the order button document.getElementById("order")?.setAttribute('disabled', true); core.modules.connect("damper").then( () => { // Imported the damper module // Execute under damper if (tariff) core.delivery.write.damper("type", tariff.tariff_code, true); }, () => { // Not imported the damper module // Execute if (tariff) core.delivery.write.system("type", tariff.tariff_code, true); }, ); setTimeout(() => { // const location = document.getElementById('location'); if (location instanceof HTMLInputElement) { // // location.value = address.city; // core.delivery.location(location, false, true); } setTimeout(() => { // const street = document.getElementById('street'); if (type === 'office') { // if (street instanceof HTMLInputElement) { // // street.value = address.address; // core.delivery.street(street, true); } } else { // if (street instanceof HTMLInputElement) { // // street.value = address.name; // core.delivery.street(street, true); } } setTimeout(() => { map = true; // Initializing the delivery data request
element const request = document.getElementById("delivery_request"); if (request instanceof HTMLElement) { // Initializeg the delivery data request
element // Hiding the delivery data request
element request.classList.add("hidden"); }}, 1000); }, 500); }, 500); }, }); {% for product in formatted %} cdek?.addParcel({ weight: Math.ceil({{ product.weight is empty ? 0 : product.weight }}), width: Math.ceil({{ product.x is empty ? 0 : product.x }}), height: Math.ceil({{ product.y is empty ? 0 : product.y }}), length: Math.ceil({{ product.z is empty ? 0 : product.z }}) }); {% endfor %} }); } document.addEventListener('core.telegram.api.location.received', (event) => { if (!ready) { ready = true; init(event.detail.location); } }); document.addEventListener('core.telegram.api.location.rejected', (event) => { if (!ready) { ready = true; init(); } }); document.addEventListener('core.delivery.calculated', (event) => { if (map && event.detail.json.longitude && event.detail.json.latitude) cdek?.updateLocation([event.detail.json.longitude, event.detail.json.latitude]); }); document.addEventListener('core.cart.summary.received', (event) => { cdek?.resetParcels(); for (const product of event.detail.json?.products) { cdek?.addParcel({ weight: Math.ceil(product.weight || 0), width: Math.ceil(product.x || 0), height: Math.ceil(product.y || 0), length: Math.ceil(product.z || 0) }); } }); setTimeout(() => { if (!ready) { ready = true; init(); } }, 5000);