{"id":947,"date":"2025-09-17T11:30:55","date_gmt":"2025-09-17T11:30:55","guid":{"rendered":"https:\/\/23ombr.dev.komanda.dev\/pidrozdily\/supply-and-logistics\/"},"modified":"2025-10-02T19:39:04","modified_gmt":"2025-10-02T19:39:04","slug":"supply-and-logistics","status":"publish","type":"subdivisions","link":"https:\/\/23ombr.dev.komanda.dev\/en\/pidrozdily\/supply-and-logistics\/","title":{"rendered":"Supply and Logistics"},"content":{"rendered":"\r\n<section class=\"custom_classes block-1 align wp-block-acf-pic-left\">\r\n\r\n    <div class=\"flex-pic-left-container\">\r\n                    <img decoding=\"async\" src=\"https:\/\/23ombr.dev.komanda.dev\/wp-content\/uploads\/2025\/09\/supply.jpg\" alt=\"\" class=\"flex-image\"\/>\r\n        \r\n                    <div class=\"flex-text\">\r\n                <p>The material support battalion is the foundation on which the entire brigade rests.<\/p>\n<p>The effectiveness of combat operations depends on the timely supply of ammunition, fuel, products and necessary equipment. The battalion&#8217;s fighters work non-stop, ensuring the delivery of everything necessary to the front line, even in difficult combat conditions.<\/p>\n<p>Their work often goes unnoticed by many, but without the efforts of these people it is impossible to imagine the effective operation of any unit. The material support battalion of the 23rd Motorized Rifle Brigade performs an extremely important mission &#8211; maintaining a continuous flow of necessary resources to the front line.<\/p>\n            <\/div>\r\n            <\/div>\r\n\r\n<\/section>\n\n\r\n<section class=\"custom_classes block-1 align wp-block-acf-gallery\">\r\n\t<div class=\"slider-wrapper\">\r\n\t\t<div class=\"slider-container\" id=\"infinite-slider\">\r\n\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/23ombr.dev.komanda.dev\/wp-content\/uploads\/2025\/09\/supply1.jpg\" alt=\"supply1\" class=\"slider-image\"\/>\r\n\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/23ombr.dev.komanda.dev\/wp-content\/uploads\/2025\/09\/supply2.jpg\" alt=\"supply2\" class=\"slider-image\"\/>\r\n\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/23ombr.dev.komanda.dev\/wp-content\/uploads\/2025\/09\/supply3.jpg\" alt=\"supply3\" class=\"slider-image\"\/>\r\n\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/23ombr.dev.komanda.dev\/wp-content\/uploads\/2025\/09\/supply4.jpg\" alt=\"supply4\" class=\"slider-image\"\/>\r\n\t\t\t\t\t\t<\/div>\r\n\t<\/div>\r\n<\/section>\r\n\r\n\r\n<script>\r\ndocument.addEventListener('DOMContentLoaded', function () {\r\n  const slider = document.querySelector('#infinite-slider');\r\n  if (!slider) return;\r\n\r\n  let slides = Array.from(slider.children);\r\n  let index = 0;\r\n\r\n  \/\/ \u041a\u043b\u043e\u043d\u0443\u0454\u043c\u043e \u043f\u0435\u0440\u0448\u0438\u0439 \u0456 \u043e\u0441\u0442\u0430\u043d\u043d\u0456\u0439 \u0441\u043b\u0430\u0439\u0434 \u0434\u043b\u044f \u0431\u0435\u0437\u043a\u0456\u043d\u0435\u0447\u043d\u043e\u0441\u0442\u0456\r\n  const firstClone = slides[0].cloneNode(true);\r\n  const lastClone = slides[slides.length - 1].cloneNode(true);\r\n\r\n  slider.appendChild(firstClone);\r\n  slider.insertBefore(lastClone, slides[0]);\r\n\r\n  slides = Array.from(slider.children);\r\n  let currentIndex = 1;\r\n  const slideWidth = slides[0].offsetWidth + 16; \/\/ 16 \u2014 gap\r\n\r\n  slider.style.transform = `translateX(-${slideWidth * currentIndex}px)`;\r\n\r\n  \/\/ \u0424\u0443\u043d\u043a\u0446\u0456\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0443\r\n  function moveToSlide(index) {\r\n    slider.style.transition = 'transform 0.4s ease';\r\n    slider.style.transform = `translateX(-${slideWidth * index}px)`;\r\n  }\r\n\r\n  \/\/ \u041f\u0456\u0441\u043b\u044f \u0430\u043d\u0456\u043c\u0430\u0446\u0456\u0457 \u043f\u0435\u0440\u0435\u0432\u0456\u0440\u044f\u0454\u043c\u043e \u043c\u0435\u0436\u0456\r\n  slider.addEventListener('transitionend', () => {\r\n    if (slides[currentIndex].isSameNode(firstClone)) {\r\n      slider.style.transition = 'none';\r\n      currentIndex = 1;\r\n      slider.style.transform = `translateX(-${slideWidth * currentIndex}px)`;\r\n    }\r\n    if (slides[currentIndex].isSameNode(lastClone)) {\r\n      slider.style.transition = 'none';\r\n      currentIndex = slides.length - 2;\r\n      slider.style.transform = `translateX(-${slideWidth * currentIndex}px)`;\r\n    }\r\n  });\r\n\r\n  \/\/ \u041a\u043b\u0456\u043a \u043f\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u0446\u0456 \u2014 \u0434\u0430\u043b\u0456\r\n  slider.addEventListener('click', () => {\r\n    currentIndex++;\r\n    moveToSlide(currentIndex);\r\n  });\r\n\r\n  \/\/ \u041f\u0456\u0434\u0442\u0440\u0438\u043c\u043a\u0430 \u0441\u0432\u0430\u0439\u043f\u0443 \/ drag\r\n  let startX = 0;\r\n  let isDragging = false;\r\n\r\n  slider.addEventListener('mousedown', (e) => {\r\n    isDragging = true;\r\n    startX = e.pageX;\r\n  });\r\n\r\n  slider.addEventListener('mouseup', (e) => {\r\n    if (!isDragging) return;\r\n    isDragging = false;\r\n    const diff = e.pageX - startX;\r\n    if (Math.abs(diff) > 50) {\r\n      currentIndex += diff > 0 ? -1 : 1;\r\n      moveToSlide(currentIndex);\r\n    }\r\n  });\r\n\r\n  slider.addEventListener('touchstart', (e) => {\r\n    startX = e.touches[0].clientX;\r\n    isDragging = true;\r\n  });\r\n\r\n  slider.addEventListener('touchend', (e) => {\r\n    if (!isDragging) return;\r\n    isDragging = false;\r\n    const diff = e.changedTouches[0].clientX - startX;\r\n    if (Math.abs(diff) > 50) {\r\n      currentIndex += diff > 0 ? -1 : 1;\r\n      moveToSlide(currentIndex);\r\n    }\r\n  });\r\n\r\n  \/\/ \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u0435 \u043e\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u0448\u0438\u0440\u0438\u043d\u0438 \u043f\u0440\u0438 \u0440\u0435\u0441\u0430\u0439\u0437\u0456\r\n  window.addEventListener('resize', () => {\r\n    const newWidth = slides[0].offsetWidth + 16;\r\n    slider.style.transition = 'none';\r\n    slider.style.transform = `translateX(-${newWidth * currentIndex}px)`;\r\n  });\r\n});\r\n\r\n\r\n<\/script>","protected":false},"excerpt":{"rendered":"","protected":false},"featured_media":948,"template":"","class_list":["post-947","subdivisions","type-subdivisions","status-publish","has-post-thumbnail","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/23ombr.dev.komanda.dev\/en\/wp-json\/wp\/v2\/subdivisions\/947","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/23ombr.dev.komanda.dev\/en\/wp-json\/wp\/v2\/subdivisions"}],"about":[{"href":"https:\/\/23ombr.dev.komanda.dev\/en\/wp-json\/wp\/v2\/types\/subdivisions"}],"version-history":[{"count":4,"href":"https:\/\/23ombr.dev.komanda.dev\/en\/wp-json\/wp\/v2\/subdivisions\/947\/revisions"}],"predecessor-version":[{"id":1474,"href":"https:\/\/23ombr.dev.komanda.dev\/en\/wp-json\/wp\/v2\/subdivisions\/947\/revisions\/1474"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/23ombr.dev.komanda.dev\/en\/wp-json\/wp\/v2\/media\/948"}],"wp:attachment":[{"href":"https:\/\/23ombr.dev.komanda.dev\/en\/wp-json\/wp\/v2\/media?parent=947"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}