Učí tanec na vertikální tyči a tvrdí: Je konkurence, ale po krku si nejdeme

5. 3. 2020
Doba čtení: 7 minut

Sdílet

Ilustrační obrázek
Autor: Depositphotos – AllaSerebrina
Ilustrační obrázek
Pole dance, tanec na vertikální tyči, je soutěžní disciplína, koníček po práci i předmět podnikání. Vyzpovídali jsme tedy tři ženy, které se do byznysu pustily.

Má-li pole dance studio u nás dlouhou tradici, koření někde kolem roku 2010, kdy se tu obor začal etablovat. Dnes tančí jak mladé ženy, tak děti i klientky 50+.

Co se dozvíte v článku
  1. Jarmila: Z hobby podnikání? Pracujte na tom, aby vás pořád bavilo
  2. Mezi klientkami jsou studentky i podnikatelky
  3. Jana: Jste sama sobě šéfovou? Naučte se říkat „stop“
  4. Konkurence je silná, ale nejdou si po krku
  5. Daniela: Ideální doba pro rozjezd byznysu? Rodičovská dovolená
  6. Když klientky překonají samy sebe, je to odměna

Jarmila: Z hobby podnikání? Pracujte na tom, aby vás pořád bavilo

Pole dance, tanec na vertikální tyči, je tanečně – sportovní disciplína, která v sobě spojuje prvky různých tanců s gymnastikou a akrobacií. Jarmila Hanzlíková se k pole dance dostala ke konci vysoké školy, když si chtěla s kamarádkou najít společnou aktivitu, aby se dál vídaly. Kamarádka jí poslala odkaz na video se soutěžním pole dance, plným akrobatických triků. Viděla jsem to poprvé v životě a úplně mě to dostalo. Pustila jsem si to video asi 100krát a odepsala jí, že to musíme zkusit, vzpomíná.

Později své někdejší hobby překlopila do podnikání. Pokud se svým koníčkem začnete živit, nabírá trochu jiné rozměry a je potřeba dobrý sebekoučink, aby vás to stále bavilo, přiznává. Její podnikání má přitom dvě stránky – byznys, kdy provozuje pražské Vertigo Pole Fitness Studio, a stránku tréninkovou. Vést studio v Praze je podle ní docela náročné, protože musí obstát mezi asi dvacítkou dalších studií, která v hlavním městě fungují. Vsází proto na, v oboru dlouhou, tradici od roku 2011 a vybudované jméno, takže nedostatkem klientů netrpí. Ale za vším stojí dost dřiny – spousta školení, sociální sítě, spolupráce s pole dance komunitou. Důležitým faktorem jsou také lidské zdroje. Z 99 % se pohybuji v ženském kolektivu, který má svá specifika, a je potřeba se v něm umět dobře pohybovat, vysvětluje s tím, že na lidech v týmu její podnikání stojí, takže je třeba, aby byli kvalitními lektory i loajálními, spolehlivými a zodpovědnými osobami. To je v dnešní době dost vzácnost. Jsem proto moc ráda, že můj současný tým šlape jak hodinky, pochvaluje si.

Mezi klientkami jsou studentky i podnikatelky

Jarmila, která je i prezidentkou European Pole Dance Federation a se svým týmem školí nové instruktory, má ve svém studiu rozvrh už skoro zaplněný. Do studia k ní přitom přicházejí klienti často bez jakýchkoliv zkušeností, a to mnohdy i se sportem obecně, což je poznatek i dalších podnikatelek v oboru. Nezřídka je pak pole dance chytne. I když je to na první pohled náročná disciplína, pokud jí propadnete, máte vůli trénovat a učit se stále něco nového, pak překvapíte sami sebe tím, čeho jste schopní dosáhnout. Je to opravdu hodně motivační a estetický sport, tvrdí Jarmila a poukazuje i na to, že má pole dance spoustu stylů, takže si každý vybere, co se mu líbí. Učí se ho u ní studentky, manažerky, administrativní pracovnice, podnikatelky, lékařky, učitelky, děti od šesti let, ale i klientky ve věku 50+. Přečtěte si také o tom, jak Šárka Vojáčková provozuje studio jógy, a to v článku Má za sebou divoké období, pak se dostala k józe. Studio má v srdci Prahy.

Jana: Jste sama sobě šéfovou? Naučte se říkat „stop“

Jana Kozlová se k pole dance dostala náhodou v roce 2010, v jeho úplných začátcích u nás. Chvíli na něj chodila do studia, kde měli v Brně jako první tyče. V dětství se věnovala moderní gymnastice a po dlouhé době zase objevila aktivitu, která jí pocit svobody těla a pohybu, který při gymnastice zažívala, připomněla. Pole dance jí zvedl sebevědomí a jak říká, obrátil jí život vzhůru nohama. Kamarádce pak pomáhala vybudovat pole dance studio, ale když se nepohodly, Jana se rozhodla, že to riskne a půjde vlastní cestou. Tak v roce 2012 vzniklo s velkou pomocí mých rodičů moje první malé studio Decadance, usmívá se.

Zároveň přiznává, že je její podnikatelský styl často pokus – omyl. Učí se stále za pochodu. Váží si ale toho, že si může vydělávat peníze něčím, co ji baví, je svou vlastní šéfovou a má bezvadný kolektiv. To je u mě na prvním místě. Nikomu se nezodpovídám, nikdo mi neříká, co mám dělat. Pracuju v neformálním prostředí, potkávám zajímavé lidi, učím veřejnost se hýbat, tancovat, často překonávat svoje strachy. Věřím tomu, že pole dance zlepšuje ženám jejich pohled na sebe, své schopnosti a své tělo. Baví mě být toho součástí, vysvětluje.

Za náročnější aspekt podnikání však považuje fakt, že její pracovní doba v podstatě nikdy nekončí, pokud si sama neřekne „stop“. Na druhou stranu, dovolenou si můžu udělat v podstatě, kdy chci. Ale pak na ní stejně pořád něco řeším, krčí rameny. Jako určitou bariéru zmiňuje byrokracii, která je s podnikáním spojená. Je ale realistka, takže to bere tak, jak to je – něco za něco. Všechno má své klady a zápory. Obecně jsem velmi spokojená, říká.

Konkurence je silná, ale nejdou si po krku

V Brně je podle ní asi pět nebo šest míst, kde se pole dance učí. Nejde o žádný ostrý konkurenční boj. Lidé ze studií se mezi sebou znají a každé si najde svou klientelu, podobně jako v hlavním městě. K Janě chodí jak studentky vysokých škol, tak ženy kolem třicítky nebo 40+. V poslední době zaznamenává také zájem dětí a teenagerů. S pole dance se totiž dá podle Jany začít kdykoliv.

S tím, že má vlastní velké Pole Decadance Studio (to původní malé v roce 2018 zavřela) na pole dance a vzdušnou akrobacii, s kvalitními instruktory a dobrým jménem, Jana tvrdí, že dosáhla toho, co si předsevzala. Časová kapacita studia momentálně není zdaleka naplněná, takže na tom bych ráda ještě zapracovala. Mám i další nápady a sny, které si ale zatím nechávám pro sebe. Mám ráda život, cestování a učení se nových věcí, takže můj hlavní plán je najít balanc a udržet si to, co mám tak, aby mě to stále a ještě dlouho bavilo, popisuje svůj postoj.

Daniela: Ideální doba pro rozjezd byznysu? Rodičovská dovolená

Daniela Čaloudová se k pole dance dostala už před deseti lety. Celkem se k němu po mateřské pauze dvakrát vracela. Během druhého těhotenství se také rozhodla založit s kamarádkou Alex Kalousovou vlastní studio. Hledaly vhodné prostory, smlouvu Daniela podepisovala, když bylo jejímu synovi pět měsíců. Vzniklo Studio Pole Heaven. Rodičovská dovolená je podle mého názoru ideální doba pro rozjezd podnikání, tvrdí Daniela. Přečtěte si také o tom, jaké to je učit Češky a Čechy argentinské tango, a to v článku Učí Čechy argentinskému tangu. Tady je její příběh.

Ve studiu se teď soustředí na kvalitu výuky, individuální přístup a stálé vzdělávání lektorek. Pole dance je obor, který se neustále vyvíjí, vymýšlejí se nové prvky, přechody, zapracovává se čím dál víc gymnastických průprav a triků, a proto je nezbytné, aby se lektorky stále učily nové věci, techniky a ty pak předávaly dál svým klientkám, vysvětluje. Je to podle ní přístup, díky němuž ve studiu klientky zůstávají a pokračují v pokročilejších kurzech. S každým semestrem máme potíž najít místo pro nové začátečníky, kteří se ovšem také hlásí, dodává. V Pole Heaven se také zaměřují na přípravu lidí na soutěže. A pokud se daří na soutěžích i našim lektorkám, je to pro studio skvělá reklama, připomíná.

školení červen - ochrana os. údajů

Když klientky překonají samy sebe, je to odměna

Daniele dělá radost, když vidí, jak klientky na lekcích překonávají samy sebe – třeba tím, že se na tyči pověsí hlavou dolů. A ke své práci dodává: Když klientka odchází domů a poděkuje vám za skvělou lekci, je to ta největší odměna. Jako náročné ale i ona při podnikání vnímá některé povinnosti ze strany státu, které podle ní drobné podnikatele zrovna nepodporují, někdy spíše naopak.

Také Daniela potvrzuje, že roste zájem o pole dance mezi dětmi a juniorkami. Přichází k ní ale i ženy po čtyřicítce. A protože ve studiu nabízejí hlídání dětí, hlásí se i spousta maminek. Dokonce i první muži. Zkrátka klientela je poměrně pestrá, snad jen mužů by mohlo být víc – momentálně k nám chodí tři, usmívá se. Její studio má teď v Praze dvě pobočky. A spolu s Terezou Štrobovou, další spolumajitelkou, a Barborou Szabovou, majitelkou studií B-pole, Daniela organizuje také soutěže zaměřené na pole dance. Její další plány tak nyní směřují právě k soutěžím. V listopadu to bude například Czech Exotic Open 2020, kde je nutné předvést své vystoupení v botách na vysoké platformě.

'; 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'; } }
Upozorníme vás na články, které by vám neměly uniknout (maximálně 2x týdně).
'; 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 »