• Fotobatohy
  • Need Help?
    +420 228 811 811
    Mo-Fri: 9AM – 5PM CET
  • My account
  • is empty
    for 0 Kč

Outdoorové focení v novém pojetí

OnePro je první outdoorový fotografický batoh na světě navržený s profesionálním outdoorovým batohovým systémem. Batoh PGYTECH OnePro Flex 40L +Camera Insert M má 3D zakřivený rám, ergonomicky navržený tak, aby se přizpůsobil vašim zádům a zajistil stabilní komfort při nošení.

Zádový panel využívá ergonomickou síťovinu, která chladí po celý den, a 3D tvarované ramenní popruhy a bederní pás mají perforovanou konstrukci pro větrání. Díky patentovanému systému FreeFit lze délku zad nastavit ve čtyřech krocích, což umožňuje všestranné přizpůsobení.

Tento batoh, který je mistrem organizace, poskytuje dokonalý domov pro vaše každodenní oblečení, fotoaparáty/drony a kreativní nástroje, jako jsou notebooky, s úhledně uloženým příslušenstvím. Díky vyhrazeným kapsám na baterie a digitální příslušenství vám OnePro zajistí, že budete mít při svých dobrodružstvích vše po ruce.

Jedinečná konstrukce s velkým otvorem poskytuje snadný přístup k vašemu vybavení pro rychlý přístup a uložení. Ploché otevírání v úhlu 180° nabízí snadný a úplný přístup ke všemu vašemu vybavení. Uživatelsky přívětivý design batohu OnePro zajišťuje optimální organizaci a efektivitu.
Větší přední přihrádka je ideální pro uložení velkých předmětů, jako jsou kardany a světla, takže budete mít všechny své nezbytnosti na dosah ruky.

Rukojeť pro otevírání jednou rukou umožňuje rychlý a bezproblémový přístup k vybavení, což usnadňuje popadnutí fotoaparátu nebo každodenních nezbytností, jako je oblečení, spací pytel, chrániče kolen a vybavení do sněhu, na cestách. Skrytá kapsa ve spodní části navíc může zakrýt klopu pro rychlý přístup do vnitřní brašny, což vám umožní uchopit fotoaparát tahem za zip.

Odnímatelná vnitřní taška, důmyslně navržená s praktickými háčky, se změní na samostatný batoh přes rameno pro jednu osobu. Již žádné starosti s odkládáním výbavy na mokrém povrchu nebo tápání s několika brašnami. Díky inovativní konstrukci brašny OnePro máte své vybavení vždy po ruce a nemusíte žonglovat s více brašnami nebo vystavovat své vybavení potenciálnímu nebezpečí.

Batoh PGYTECH OnePro Flex 40L má vložku na fotoaparát M. Je vybaven nastavitelnými přepážkami pro bezpečnou ochranu. Jedinečná rohová přezka se páruje se speciálně navrženým rozhraním popruhů hlavního batohu a udržuje vložku bezpečně na místě.

Batoh OnePro překračuje základní rámec a nabízí jedinečnou rozšiřující konstrukci, která v případě potřeby přidá 10 litrů dalšího objemu. Jeho robustní konstrukce zajišťuje, že vydrží velké zatížení bez ztráty výkonu, takže je ideální na dlouhé cesty nebo náročná outdoorová dobrodružství.  ,


Vlastnosti

  • 3D obloukovitý rám z leteckého hliníku řady 7000
  • Přehledná organizace a maximální úložná kapacita
  • Ergonomická síťovina a vylepšené větrání
  • S vložkou pro fotoaparát M

 Specification
ZnačkaPGYTech
Hmotnost1,96 kg
Barvaoranžová
Rozměry (švh)54 x 33 x 26 cm
VariantaM
Objem40 litrů
Materiál76% Condura
24% polyuretan
100% polyamid
Typ zapínánízip
Místo pro notebook16 ''
Počet tělnespecifikováno ks
Vlastnostimísto na stativ
kapsa na láhev
voděodolnost
Přístup k technicepřístup z vrchu
zadní přístup
rychlý přístup z boku
Způsob přenášenídva ramenní
hrudní
bederní
Určenídámské
pánské
Vnitřní uspořádánípevné
vložka
Specializovánouniverzální
 Pro lepší péči
     
    We use cookies for the proper functioning of our website and its functions. With the help of cookies, we also, for example, remember your preferred language, increase the relevance of the displayed ads for you, calculate the number of visits to the site and remember your settings made on the site.
    (function () { "use strict"; const CUT_OFF_HOUR = 7; // po 7:00 = start další prac. den /* ========================================================= MANUÁLNÍ DNY MIMO PROVOZ (dovolená, inventura, ...) Formát: "dd.mm" (bez roku) ========================================================= */ const EXTRA_BLOCKED_DATES_DDMM = [ // "03.02", // "04.02", // "15.08", ]; /* ========================================================= */ const ADDITION_SELECTOR = ".p_detail_info_box.p_detail_info_addition"; const AVAIL_SELECTOR = ".p_detail_availability"; const AVAIL_SPAN_SELECTOR = '.p_detail_availability span[data-variant="availability"]'; function pad2(n) { return String(n).padStart(2, "0"); } function formatDDMM(dateLocal) { return `${pad2(dateLocal.getDate())}.${pad2(dateLocal.getMonth() + 1)}.`; } // "Teď" v Europe/Prague (nezávisle na TZ uživatele) function nowInPragueParts() { const dtf = new Intl.DateTimeFormat("cs-CZ", { timeZone: "Europe/Prague", year: "numeric", month: "2-digit", day: "2-digit", hour: "2-digit", minute: "2-digit", second: "2-digit", hour12: false }); const parts = dtf.formatToParts(new Date()); const get = (type) => parts.find(p => p.type === type)?.value; return { year: Number(get("year")), month: Number(get("month")), day: Number(get("day")), hour: Number(get("hour")), minute: Number(get("minute")), second: Number(get("second")) }; } // UTC midnight helper (aby nepřekvapilo DST) function makeDateUTC(y, m, d) { return new Date(Date.UTC(y, m - 1, d, 0, 0, 0)); } function dateToKeyUTC(d) { return `${d.getUTCFullYear()}-${pad2(d.getUTCMonth() + 1)}-${pad2(d.getUTCDate())}`; } // Easter Sunday (Gregorian) function easterSunday(year) { const a = year % 19; const b = Math.floor(year / 100); const c = year % 100; const d = Math.floor(b / 4); const e = b % 4; const f = Math.floor((b + 8) / 25); const g = Math.floor((b - f + 1) / 3); const h = (19 * a + b - d - g + 15) % 30; const i = Math.floor(c / 4); const k = c % 4; const l = (32 + 2 * e + 2 * i - h - k) % 7; const m = Math.floor((a + 11 * h + 22 * l) / 451); const month = Math.floor((h + l - 7 * m + 114) / 31); const day = ((h + l - 7 * m + 114) % 31) + 1; return makeDateUTC(year, month, day); } function addExtraBlockedDatesToSet(holidaysSet, year, todayUTC) { EXTRA_BLOCKED_DATES_DDMM.forEach((ddmm) => { const m = ddmm.match(/^(\d{2})\.(\d{2})$/); if (!m) return; const dd = Number(m[1]); const mm = Number(m[2]); if (!Number.isFinite(dd) || !Number.isFinite(mm) || mm < 1 || mm > 12 || dd < 1 || dd > 31) return; const dThisYear = makeDateUTC(year, mm, dd); holidaysSet.add(dateToKeyUTC(dThisYear)); // pokud už datum letos proběhlo, přidáme i příští rok (praktické při údržbě) if (dThisYear.getTime() < todayUTC.getTime()) { const dNextYear = makeDateUTC(year + 1, mm, dd); holidaysSet.add(dateToKeyUTC(dNextYear)); } }); } function buildCZHolidaysSet(years, todayUTC) { const set = new Set(); years.forEach((y) => { // Fixní svátky CZ const fixed = [ [1, 1], [5, 1], [5, 8], [7, 5], [7, 6], [9, 28], [10, 28], [11, 17], [12, 24], [12, 25], [12, 26] ]; fixed.forEach(([mm, dd]) => set.add(dateToKeyUTC(makeDateUTC(y, mm, dd)))); // Velký pátek (-2) a Velikonoční pondělí (+1) const easter = easterSunday(y); const goodFriday = new Date(easter.getTime() - 2 * 24 * 3600 * 1000); const easterMonday = new Date(easter.getTime() + 1 * 24 * 3600 * 1000); set.add(dateToKeyUTC(goodFriday)); set.add(dateToKeyUTC(easterMonday)); // + ručně blokované dny addExtraBlockedDatesToSet(set, y, todayUTC); }); return set; } function isWeekendUTC(d) { const wd = d.getUTCDay(); return wd === 0 || wd === 6; } function isHolidayUTC(d, holidaysSet) { return holidaysSet.has(dateToKeyUTC(d)); } function isBusinessDayUTC(d, holidaysSet) { return !isWeekendUTC(d) && !isHolidayUTC(d, holidaysSet); } function nextBusinessDayUTC(d, holidaysSet) { let cur = new Date(d.getTime()); do { cur = new Date(cur.getTime() + 24 * 3600 * 1000); } while (!isBusinessDayUTC(cur, holidaysSet)); return cur; } function computeShipBaseUTC(holidaysSet) { const p = nowInPragueParts(); const todayUTC = makeDateUTC(p.year, p.month, p.day); const beforeCutoff = (p.hour < CUT_OFF_HOUR); // 0..6 if (beforeCutoff && isBusinessDayUTC(todayUTC, holidaysSet)) return todayUTC; // po cut-off nebo nepracovní den => nejbližší další pracovní den if (isBusinessDayUTC(todayUTC, holidaysSet)) return nextBusinessDayUTC(todayUTC, holidaysSet); let cur = new Date(todayUTC.getTime()); while (!isBusinessDayUTC(cur, holidaysSet)) { cur = new Date(cur.getTime() + 24 * 3600 * 1000); } return cur; } // "+N" pracovních dnů přesně function addBusinessDaysUTC(startUTC, n, holidaysSet) { let cur = new Date(startUTC.getTime()); let added = 0; while (added < n) { cur = new Date(cur.getTime() + 24 * 3600 * 1000); if (isBusinessDayUTC(cur, holidaysSet)) added++; } return cur; } function normalizeText(s) { return (s || "") .replace(/\u00A0/g, " ") .replace(/[–—]/g, "-") .replace(/\s+/g, " ") .trim(); } function parseAddition(text) { // "8 ks – doručení do 5 pracovních dnů" const t = normalizeText(text); const stockMatch = t.match(/(\d+)\s*ks/i); const daysMatch = t.match(/doru[cč]en[ií]\s*do\s*(\d+)\s*prac/i); if (!stockMatch || !daysMatch) return null; const stock = Number(stockMatch[1]); const leadDays = Number(daysMatch[1]); if (!Number.isFinite(stock) || !Number.isFinite(leadDays)) return null; return { stock, leadDays }; } function getAvailabilityMode() { const avail = document.querySelector(AVAIL_SELECTOR); if (!avail) return { mode: "unknown" }; const schemaLink = avail.querySelector('link[itemprop="availability"]'); const schemaHref = schemaLink?.getAttribute("href") || ""; const span = avail.querySelector(AVAIL_SPAN_SELECTOR); const label = normalizeText(span?.textContent || ""); if (/OutOfStock/i.test(schemaHref) || /Dostupnost k ověření/i.test(label)) { return { mode: "verify", avail, span, label }; } if (/^Skladem/i.test(label)) { return { mode: "local", avail, span, label }; } if (/^Centrální sklad/i.test(label)) { return { mode: "central", avail, span, label }; } return { mode: "unknown", avail, span, label }; } function removeExistingEstimate() { document.querySelectorAll(".delivery-estimate").forEach(el => el.remove()); } function insertEstimateUnderSpan(spanEl, dateDDMM) { removeExistingEstimate(); if (!spanEl || !spanEl.parentNode) return; const line = document.createElement("span"); line.className = "delivery-estimate"; line.textContent = `Obdržíte do ${dateDDMM}`; spanEl.insertAdjacentElement("afterend", line); } function applyDeliveryLogic() { const addition = document.querySelector(ADDITION_SELECTOR); if (addition) addition.classList.add("delivery-hide"); const { mode, span } = getAvailabilityMode(); // verify/unknown => jen schovat addition a nic nepřidávat if (mode === "verify" || mode === "unknown") { removeExistingEstimate(); return; } const p = nowInPragueParts(); const todayUTC = makeDateUTC(p.year, p.month, p.day); const holidays = buildCZHolidaysSet([p.year, p.year + 1], todayUTC); // lokální sklad => +1 prac. den if (mode === "local") { const shipBase = computeShipBaseUTC(holidays); const deliveryUTC = addBusinessDaysUTC(shipBase, 1, holidays); insertEstimateUnderSpan(span, formatDDMM(new Date(deliveryUTC.getTime()))); return; } // centrální sklad => vyčíst z addition if (mode === "central") { const parsed = addition ? parseAddition(addition.textContent) : null; // parsing selže nebo stock=0 => nic nepřidávat if (!parsed || parsed.stock <= 0) { removeExistingEstimate(); return; } const shipBase = computeShipBaseUTC(holidays); const deliveryUTC = addBusinessDaysUTC(shipBase, parsed.leadDays, holidays); if (span) span.textContent = `Centrální sklad ${parsed.stock} ks`; insertEstimateUnderSpan(span, formatDDMM(new Date(deliveryUTC.getTime()))); } } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", applyDeliveryLogic); } else { applyDeliveryLogic(); } })();