„Papalášská“ Tatra 613 měla i řadu zvláštních variant, od přehlídkové až po záchranářskou

2 nové názory
Autor: Redakce Autobible
  • Tatra 613 se dočkala několika verzí se specifickým účelem

  • Na vývoji přehlídkové Tatry se zkoušel podílet Metalex i ruský ZIL

  • Po neúspěšných pokusech si kabriolet Tatra vyvinula sama

  • Premiéra proběhla na vojenské přehlídce v roce 1985

Pamětníci znají Tatru 613 zejména jako limuzínu komunistických pohlavárů. Kopřivnická automobilka však hledala pro svůj automobil s nevšední koncepcí také další uplatnění. V průběhu 80. let tak vznikly mnohé zajímavé projekty a prototypy.

Přeměna šestsettřináctky na přehlídkový automobil byla velkou výzvou pro konstruktéry osobních vozidel v Tatře. Je pravda, že první pokusy vyřešit tuto úlohu směřovaly do externích organizací. Připomeňme si v několika větách, jak se práce na této úloze s postupem času vyvíjely. První představy o řešiteli této úlohy směřovaly do Ústavu pro výzkum motorových vozidel a do Svazu pro spolupráci s armádou, který byl nadřízený výrobci závodních a sportovních vozidel firmě „Metalex“.

Retro: Tatra 700 byla ve své době nejrychlejším českým autem
Přečtěte si také:

Retro: Tatra 700 byla ve své době nejrychlejším českým autem

S odstupem mnoha let je velmi těžké hodnotit, proč tento záměr nevyšel. Spolupráce s touto organizací byla velmi brzy ukončena. Další představa o spolupráci směřovala k specialistům automobilky ZIL v Moskvě. Tato automobilka byla výrobcem nákladních automobilů, ale i výrobcem reprezentačních limuzín, od kterých byly odvozeny kabriolety pro účely přehlídek. Technici a konstruktéři z vývojového oddělení firmy ZIL při jednání se zástupci Tatry byli nevšedně ochotni. K prohlídce a odzkoušení zajistili z garáží Kremlu jedno z přehlídkových vozidel ZIL. Jejich představa o kabrioletu vozidla s motorem vzadu byla pro ně nemyslitelná.

Psal se rok 1979 a do řešení této úlohy se pustili konstruktéři Tatry. Zrodily se první představy o řešení úlohy. Byl zpracován projekt, který vedle představy jak bude Kabriolet z šestsettřináctky vypadat, dával také zadavateli úlohy odpověď, jak budou plněny jednotlivé požadavky zadání.

Zkoušky Tatry T623 na Masarykově okruhu v Brně

Projekt definoval úlohy nejen pro pracovníky konstrukce osobních vozidel, ale i pro spolupracující útvary. Jedním z klíčových úkolů bylo konstrukční zpracování dokumentace pro zkušební přípravek, který umožní měření ohybové a torzní tuhosti karosérie Tatry T 613.

Konstrukční dokumentaci pro výrobu zkušebního přípravku na měření ohybové a krutové tuhosti karosérie zpracoval konstruktér ing. Rostislav Klaus. Tento speciální zkušební přípravek byl konstrukčním provedením podobný zkušebnímu stavu požívaný pro tyto účely na Vysoké škole technické v italském Turíně.

Podle konstrukční dokumentace zajistili výrobu přípravku pracovníci prototypových dílen.  Zkušební technici zahájili soubor měření sériové karosérie bez dveří a kapot a následně odřízli i střechu. Na zkušebním přípravku byla zkoušena i karosérie Speciálu při zachování stejných postupů. Na přípravek byla namontována první ještě neupravená karosérie určena pro provedení Kabriolet. Konstruktéři řešili výztuhy karosérie. Postupnými úpravami bylo dosaženo vyhovujících výsledků ohybové a torzní tuhosti. O úspěšné vyřešení úlohy vyztužení karosérie pro přehlídkový automobil se zasloužili konstruktéři Jaroslav Bobek a Jiří Filip. Následně byl dán souhlas k zahájení navazujících vývojových etap této úlohy.

Sanitní vozidlo na podvozku Tatry T613-3 vyrobené podle projektu Tatry Kopřivnice
Jeho jízdní vlastnosti důkladně otestovala zkušební dráha

Poháněcí jednotku určil projekt. Byl to sériový osmiválcový vzduchem chlazený motor a třístupňová automatická převodovka Borg-Warner typ 65. Konstruktéři museli vyřešit provedení odnímatelné střechy textilní a také odnímatelné pevné střechy laminátové. Přeskočme další vývojové problémy a připomeňme, že první prototyp Kabrioletu převzali do zkoušek pracovníci oddělení výzkumu a zkoušek vozidel na počátku února 1981. Na počátku léta v roce 1981 si odzkoušeli první prototyp odborní pracovníci budoucího uživatele. Po provedených dílčích úpravách podle doporučení zmíněných odborných pracovníků byla zahájena dlouhodobá životnostní zkouška v běžném provozu, ale také na tatrováckém zkušebním polygonu s využitím specielních vozovek.

Tatra 603 budila před šedesáti lety ve světě úžas. A budí ho i dnes
Přečtěte si také:

Tatra 603 budila před šedesáti lety ve světě úžas. A budí ho i dnes

V závěrečném protokolu o provedené dlouhodobé zkoušce bylo konstatováno, že nedošlo k poškození nebo k deformacím karosérie. Po zhodnocení poznatků funkčních zkoušek a životnostních zkoušek byl dán souhlas k výrobě čtyř vozidel pro zadavatele této úlohy a budoucího uživatele. Odměnou všem, kteří se na vývoji a výrobě Tatry T 613 Kabriolet podíleli, byla úspěšná premiéra na vojenské přehlídce 9. května 1985 na Letenské pláni v Praze. A jaký osud potkal první prototyp kabrioletu? Po splnění všech etap programu zkoušek zaparkoval v kopřivnickém technickém muzeu.

Sanitní vozidlo vyrobené podle představ designéra Václava Krále a konstruktéra Ing. Vladimíra Frimla

Provozy závodu Tatra – Příbor byly projektovány na roční produkci 1500 vyrobených vozidel. Jestli v rocích 1976 až 1979 bylo vyrobeno 3999 šestsettřináctek pak rok 1980, ale i následující roky, zaznamenaly hluboký propad výroby. To byl pro technické útvary signál pro hledání možností využití těchto vozidel v jiných oblastech. Nebylo to však vůbec jednoduché. V roce 1978 vyšlo vládní usnesení, které stanovilo úzký okruh uživatelů vozidel Tatra T 613. Toto usnesení znemožňovalo jakékoliv jiné využití těchto osobních vozidel. Hledali se nějaké možnosti, jak toto usnesení obejít. Po dohodě s pracovníky Ministerstva vnitra se jevilo jako jediné možné řešení jiné typové označení. Bylo rozhodnuto zavést typové označení Tatra T 623. Ve stejném období již byla navázána spolupráce s automobilovým závodníkem a představitelem záchranného systému NAREX s Cyrilem Svobodou. Následně na základě rozhodnutí vedení technického úseku Tatry byly pro účely záchranného systému NAREX připraveny tři vozidla Tatra T 613, které uvedená organizace přestavila vnitřním vybavením na Tatry T 623. V roce 1983 záchranný systém NAREX již měl šest vozidel Tatra T 623, které byly vybavené protipožární a vyprošťovací technikou.

První dvě vozidla Tatra T 623, kterými byla zahájena spolupráce se záchranným systémem NAREX. Pro úplnost informace o prvních vozidlech Tatra T 623 je nutno připomenou, že organizace NAREX připravila celkem tři vozidla. Jedno z těchto vozidel bylo používáno na zkušebním polygonu Tatry Kopřivnice.

Tatra kolem světa byla i na dnešní poměry ohromující expedice. Očekávané výsledky však nepřinesla
Přečtěte si také:

Tatra kolem světa byla i na dnešní poměry ohromující expedice. Očekávané výsledky však nepřinesla

Hledání možností využití šestsettřináctky, správně Tatry T 623, pokračovalo i v následujících letech. Na platformě šestsettřináctky vznikaly i sanitní vozidla. Úplně první vznikl v roce 1984 prototyp sanitního vozidla podle návrhu velmi známého designéra Václava Krále a konstruktéra Ing. Vladimíra Frimla. Toto sanitní vozidlo mělo typové označení T 624. Bylo zařazeno do formace vozidel záchranného systému NAREX.

Do zkoušek převzali pracovníci oddělení výzkumu a zkoušek vozidel první prototyp otevřené reprezentační Tatry

Opustíme myšlenku sanitních vozidel a připomeňme si záměr využití šestsettřináctky v podstatně atraktivnější oblasti. Byly provedeny pokusy o zapojení záchranného systému NAREX v rámci závodů Formule 1. V roce 1986 byla formace vozidel záchranného systému NAREX zařazena do ostrého závodního režimu v Maďarsku na Hungaroringu. Představa o uplatnění záchranného systému NAREX v seriálu závodů Formule 1 vedla k vývoji velmi výkonného a rychlého vyhotovení T 623. Bylo rozhodnuto připravit vozidlo požadovaných parametrů již na platformě Tatry T 613-3. Na tomto vozidle byly provedeny výrazné úpravy podvozku s cílem zlepšení jízdních vlastností při vysokých rychlostech. Byl připravován i motor se zvětšeným objemem válců, podstatně vyšším výkonem. Vyvrcholením těchto aktivit byly jízdní zkoušky na Brněnském Masarykovým okruhu.

První dvě vozidla Tatra T623, kterými byla zahájena spolupráce se záchranným systémem NAREX
Jeden z návrhů využití Tatry T613 bylo využití ve službách policejního sboru

Byly připravované i razantnější úpravy takového vozidla a zároveň byla připravovaná dokumentace včetně homologačního listu „FIA“ se záměrem širšího využití takového vozidla při zajišťování bezpečnosti na  automobilových závodech.

Záměr využít Tatru T613 pro testování letištních ploch byl v danou dobu perspektivní. Je třeba připomenout, že v Evropě takové vozidlo nabízela pouze švédská firma SAAB

Vraťme se ještě jednou k sanitním vozidlům. Psal se rok 1989, když v technickém úseku Tatry Kopřivnice byl zpracován projekt sanitního vozidla pochopitelně na platformě Tatry T 613 3 určený pro masovější výrobu. Projekt předpokládal, že takové sanitní vozidlo bude mít větší rozvor a samozřejmě i větší nástavbu. V závěru roku 1990 byla dokončena výroba dvou takových vozidel, ale ne v dílnách Tatry Kopřivnice.

Policie má nové auto. Není to dálniční speciál, nýbrž Tatrou upravený Ford s dieselem 6,7 l
Přečtěte si také:

Policie má nové auto. Není to dálniční speciál, nýbrž Tatrou upravený Ford s dieselem 6,7 l

Při rekapitulaci snah o uplatnění Tatry T 613 v jiných oblastech není možné nevzpomenout velmi ambiciózní projekt s názvem „Tatra runway tester“. Přestavbou Tatry T 613 vzniklo vozidlo pro testování vlastností povrchu letištních vzletových a přistávacích drah. Tento projekt měl před sebou zajímavou budoucnost. Na strojírenském veletrhu v Brně získalo toto provedení Tatry T 613 zlatou medaili. Tento zajímavý projekt měl i smutný konec. Byl ztrátový.

Žádný z popisovaných pokusů nebyl úspěšný. Realita ve vztahu k Tatře T 613 byla nekompromisní. Rychle se vytrácela i z těchto oblastí využití. Byla postupně nahrazována jinými značkami osobních automobilů.

Text Augustin Lacina / Foto soukromé archivy

jantom (neregistrovaný)
ne moc často mohu pochválit - tady MUSÍM - spolupráce Svazarmu, otce vývoje speciálního nářadí v NAREXu Cyrdy Svobody a Václava Krále - spolupráce hlavně za přízně Svazarmu a NAREXu vedla k dvojímu vystoupení na Hungároringu, kolektiv okolo Cyrdy byl pracovitý a velice úspěšný, jejich klubové zařízení na Smíchově v ulici U kováků bylo na tehdejší dobu super - TATRY byly většinou utahaniny, tam členy Svazarmu dovybavené a dostavěné - Narex k tomu přispěl vývojem a výrobou speciálního nářadí a Králova sanitní TATRA byla opravdu originální - shrnuto : TATRA + Cyrdova zarytost a úžasný kolektiv ZO Svazarmu Narex včetně pomoci a úsilí podniku Nářadí - přivedli na svět nejen ZO Svazarmu NAREX, ale i speciální vyprošťovací nářadí, které se vyvíjelo i vyrábělo velice úspěšně
jep (neregistrovaný)
papaláši po plyšáku byli už dávno zvyklí na medvědy a jiné západní vergly a tatru prostě pohřbili
  • Našli jste v článku chybu?
'; document.getElementById('preroll-iframe').onload = function () { setupIframe(); } prerollContainer = document.getElementsByClassName('preroll-container-iframe')[0]; } function setupIframe() { prerollDocument = document.getElementById('preroll-iframe').contentWindow.document; let el = prerollDocument.createElement('style'); prerollDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:20px;right:25px}"; videoContent = prerollDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('PREROLL sound allowed'); // setUpIMA(true); videoContent.volume = 1; videoContent.muted = false; setUpIMA(); }).catch(function () { console.log('PREROLL sound forbidden'); videoContent.volume = 0; videoContent.muted = true; setUpIMA(); }); } } function setupDimensions() { prerollWidth = Math.min(iinfoPrerollPosition.offsetWidth, 480); prerollHeight = Math.min(iinfoPrerollPosition.offsetHeight, 320); } function setUpIMA() { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Preroll advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = prerollWidth; // adsRequest.linearAdSlotHeight = prerollHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. prerollDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( prerollDocument.getElementById('adContainer'), videoContent); } function unmutePrerollAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } } function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(prerollWidth, prerollHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } function onAdEvent(adEvent) { const ad = adEvent.getAd(); console.log('Preroll event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: if (!ad.isLinear()) { videoContent.play(); } prerollDocument.getElementById('adContainer').style.width = '100%'; prerollDocument.getElementById('adContainer').style.maxWidth = '640px'; prerollDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); if (ad.isLinear()) { intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } prerollDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (prerollLastError === 303) { playYtVideo(); } break; case google.ima.AdEvent.Type.COMPLETE: if (ad.isLinear()) { clearInterval(intervalTimer); } playYtVideo(); break; } } function onAdError(adErrorEvent) { console.log(adErrorEvent.getError()); prerollLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { playYtVideo(); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoPrerollPosition.remove(); playPrerollAd(); } else { return false; } adVolume = 1; return true; } function onContentPauseRequested() { videoContent.pause(); } function onContentResumeRequested() { videoContent.play(); } function onActiveView() { if (prerollContainer) { const containerOffset = prerollContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (prerollPaused) { adsManager.resume(); prerollPaused = false; } return true; } else { if (!prerollPaused) { adsManager.pause(); prerollPaused = true; } } } return false; } function playYtVideo() { iinfoPrerollPosition.remove(); youtubeIframe.style.display = 'block'; youtubeIframe.src += '&autoplay=1&mute=1'; } }
'; document.getElementById('outstream-iframe').onload = function () { setupIframe(); } replayScreen = document.getElementById('iinfoOutstreamReplay'); iinfoOutstreamPosition = document.getElementById('iinfoOutstreamPosition'); outstreamContainer = document.getElementsByClassName('outstream-container')[0]; setupReplayScreen(); } function setupIframe() { outstreamDocument = document.getElementById('outstream-iframe').contentWindow.document; let el = outstreamDocument.createElement('style'); outstreamDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:-5px;right:25px}"; videoContent = outstreamDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; if ( location.href.indexOf('rejstriky.finance.cz') !== -1 || location.href.indexOf('finance-rejstrik') !== -1 || location.href.indexOf('firmy.euro.cz') !== -1 || location.href.indexOf('euro-rejstrik') !== -1 || location.href.indexOf('/rejstrik/') !== -1 || location.href.indexOf('/rejstrik-firem/') !== -1) { outstreamDirectPlayed = true; soundAllowed = true; iinfoVastUrlIndex = 0; } if (!outstreamDirectPlayed) { console.log('OUTSTREAM direct'); setUpIMA(true); } else { if (soundAllowed) { const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('OUTSTREAM sound allowed'); setUpIMA(false); }).catch(function () { console.log('OUTSTREAM sound forbidden'); renderBanner(); }); } } else { renderBanner(); } } } function getWrapper() { let articleWrapper = document.querySelector('.rs-outstream-placeholder'); // Outstream Placeholder from RedSys manipulation if (articleWrapper && articleWrapper.style.display !== 'block') { articleWrapper.innerHTML = ""; articleWrapper.style.display = 'block'; } // Don't render OutStream on homepages if (articleWrapper === null) { if (document.querySelector('body.p-index')) { return null; } } if (articleWrapper === null) { articleWrapper = document.getElementById('iinfo-outstream'); } if (articleWrapper === null) { articleWrapper = document.querySelector('.layout-main__content .detail__article p:nth-of-type(6)'); } if (articleWrapper === null) { // Euro, Autobible, Zdravi articleWrapper = document.querySelector('.o-article .o-article__text p:nth-of-type(6)'); } if (articleWrapper === null) { articleWrapper = document.getElementById('sidebar'); } if (!articleWrapper) { console.error("Outstream wrapper of article was not found."); } return articleWrapper; } function setupDimensions() { outstreamWidth = Math.min(iinfoOutstreamPosition.offsetWidth, 480); outstreamHeight = Math.min(iinfoOutstreamPosition.offsetHeight, 320); } /** * Sets up IMA ad display container, ads loader, and makes an ad request. */ function setUpIMA(direct) { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); if (direct) { adsRequest.adTagUrl = directVast; console.log('Outstream DIRECT CAMPAING advert: ' + directVast); videoContent.muted = true; videoContent.volume = 0; outstreamDirectPlayed = true; } else { adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Outstream advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; } // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = outstreamWidth; // adsRequest.linearAdSlotHeight = outstreamHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function setupReplayScreen() { replayScreen.addEventListener('click', function () { iinfoOutstreamPosition.remove(); iinfoVastUrlIndex = 0; outstreamInit(); }); } /** * Sets the 'adContainer' div as the IMA ad display container. */ function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. outstreamDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( outstreamDocument.getElementById('adContainer'), videoContent); } function unmuteAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); outstreamDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); outstreamDocument.getElementById('adMuteBtn').innerHTML = ''; } } /** * Loads the video content and initializes IMA ad playback. */ function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(outstreamWidth, outstreamHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } /** * Handles the ad manager loading and sets ad event listeners. * @param { !google.ima.AdsManagerLoadedEvent } adsManagerLoadedEvent */ function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } /** * Handles actions taken in response to ad events. * @param { !google.ima.AdEvent } adEvent */ function onAdEvent(adEvent) { // Retrieve the ad from the event. Some events (for example, // ALL_ADS_COMPLETED) don't have ad object associated. const ad = adEvent.getAd(); console.log('Outstream event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: // This is the first event sent for an ad - it is possible to // determine whether the ad is a video ad or an overlay. if (!ad.isLinear()) { // Position AdDisplayContainer correctly for overlay. // Use ad.width and ad.height. videoContent.play(); } outstreamDocument.getElementById('adContainer').style.width = '100%'; outstreamDocument.getElementById('adContainer').style.maxWidth = '640px'; outstreamDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); // This event indicates the ad has started - the video player // can adjust the UI, for example display a pause button and // remaining time. if (ad.isLinear()) { // For a linear ad, a timer can be started to poll for // the remaining time. intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } outstreamDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (outstreamLastError === 303) { if (isBanner) { renderBanner(); } else { replayScreen.style.display = 'flex'; } } break; case google.ima.AdEvent.Type.COMPLETE: // This event indicates the ad has finished - the video player // can perform appropriate UI actions, such as removing the timer for // remaining time detection. if (ad.isLinear()) { clearInterval(intervalTimer); } if (isBanner) { renderBanner(); } else { replayScreen.style.display = 'flex'; } break; } } /** * Handles ad errors. * @param { !google.ima.AdErrorEvent } adErrorEvent */ function onAdError(adErrorEvent) { // Handle the error logging. console.log(adErrorEvent.getError()); outstreamLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { renderBanner(); } } function renderBanner() { if (isBanner) { console.log('Outstream: Render Banner'); iinfoOutstreamPosition.innerHTML = ""; iinfoOutstreamPosition.style.height = "330px"; iinfoOutstreamPosition.appendChild(bannerDiv); } else { console.log('Outstream: Banner is not set'); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoOutstreamPosition.remove(); outstreamInit(); } else { return false; } adVolume = 1; return true; } /** * Pauses video content and sets up ad UI. */ function onContentPauseRequested() { videoContent.pause(); // This function is where you should setup UI for showing ads (for example, // display ad timer countdown, disable seeking and more.) // setupUIForAds(); } /** * Resumes video content and removes ad UI. */ function onContentResumeRequested() { videoContent.play(); // This function is where you should ensure that your UI is ready // to play content. It is the responsibility of the Publisher to // implement this function when necessary. // setupUIForContent(); } function onActiveView() { if (outstreamContainer) { const containerOffset = outstreamContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (outstreamPaused) { adsManager.resume(); outstreamPaused = false; } return true; } else { if (!outstreamPaused) { adsManager.pause(); outstreamPaused = true; } } } return false; } let outstreamInitInterval; if (typeof cpexPackage !== "undefined") { outstreamInitInterval = setInterval(tryToInitializeOutstream, 100); } else { const wrapper = getWrapper(); if (wrapper) { let outstreamInitialized = false; window.addEventListener('scroll', () => { if (!outstreamInitialized) { const containerOffset = wrapper.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight / 1 && containerOffset.bottom > 0.0) { outstreamInit(); outstreamInitialized = true; } } }); } } function tryToInitializeOutstream() { const wrapper = getWrapper(); if (wrapper) { const containerOffset = wrapper.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight / 1 && containerOffset.bottom > 0.0) { if (cpexPackage.adserver.displayed) { clearInterval(outstreamInitInterval); outstreamInit(); } } } else { clearInterval(outstreamInitInterval); } } }
OSZAR »