Podnikání podle karet a hvězd: Jak využít tajemno, i když nejste čarodějnice?

9. 7. 2020
Doba čtení: 6 minut

Sdílet

Ilustrační obrázek
Autor: Depositphotos.com, podle licence: Rights Managed
Ilustrační obrázek
Intuice, astrologie a tarot v podnikání. Řadíte se mezi skeptiky? Jenže jak říká astroložka, když něco nevidíme a nevěříme tomu, neznamená to, že to nefunguje.

Tarot prý zase v praxi může pomoci se vztahem k penězům, načasováním i složitým rozhodováním. Je čas experimentovat? Otevřená hlava je přeci základ podnikání.

Co se dozvíte v článku
  1. Astrologie, starověká věda o životě
  2. Kdy se firma narodila a jaké má znamení?
  3. Tarot není jen věštění, pomůže i s cenou a rozhodnutím
  4. Karta radí čekat – a vyplatilo se
  5. Jen racionální myšlení? Ochudíte se a přitáhnete otravy

Astrologie, starověká věda o životě

Zatímco aktuálně ovlivňuje dovolenkářům cestovní plány hlavně postup koronavirové pandemie a s ní související (ne)propustnost hranic, ještě vloni by z patové situace, kam se vydat dřív, když je k dispozici nepřeberné možností, pomohla dobrá rada astrologa. Alespoň podle řetězce W Hotels, který se propojil s novinářkou a autorkou knih Ruby Warrington a nabídl cestovatelské tipy podle znamení zvěrokruhu. Například býky Ruby poslala do W hotelu v Guangzhou v Číně, Lvy a Lvice do thajského Bangkoku a Vodnáře do Kuala Lumpuru v Malajsii.

Cestovat podle horoskopu? Dobře, proti gustu… Ale podnikat podle hvězd? Současnému člověku z evropské kultury to zní trochu cize. Jenže, když něco nevidíme a nevnímáme nebo tomu nevěříme, neznamená to, že to neexistuje a nefunguje, vzkazuje Monika Jánská, učitelka angličtiny a pražská astroložka, skeptikům. Monika přiznává, že v byznysu, který je obvykle spíš materialisticky zaměřený, nemá astrologie místo moc často. Astrologie, podobně jako třeba tarot, jsou přitom podle ní vědy o životě a o lidské životní cestě. A otázku, co znamená být kompletním člověkem, uplatnit své nejsilnější stránky a nejhlubší potenciál, si chtějí zodpovědět i lidé v byznysu. Astrologie je starověké učení, které uznává člověka jako součást vesmírné sítě s jedinečným posláním pro jeho dobro i dobro komunity, ve které žije, a tím pro dobro Země a Vesmíru, definuje astrologii, pro srovnání, hebraistka, kulturoložka a astroterapeutka Terezie Dubinová na svém webu Ohel Adom.

Kdy se firma narodila a jaké má znamení?

Známý matematik a astronom Johannes Kepler, který v roce 1600 přijel pracovat do rudolfinské Prahy a rok na to se stal císařským matematikem, se před tím živil jako učitel matematiky a také sestavováním horoskopů. Monika horoskopy připravuje a vykládá lidem hlavně ve chvílích, kdy stojí na nějakých důležitých životních křižovatkách. V souvislosti s podnikáním to může být například založení firmy, její rozšíření, příchod nových zaměstnanců, moment, kdy se podnikatelka nebo podnikatel potřebují rozhodnout mezi více možnostmi řešení nebo třeba zvažují, zda do byznysu přiberou partnera a zda jim to společně v pracovním vztahu bude klapat. Horoskop taky dokáže připravit pro celou firmu jako takovou, podle jejího data, místa a času „narození“.

A tvrdí: Když začínáte podnikat, je dobré zvážit načasování i místo – hrají svou roli podobně, jako když se narodí člověk. V souvislosti s konkrétní oblastí byznysu mohou být v danou chvíli planetární vlivy pozitivní nebo negativní, některé chvíle jsou zkrátka pro určité rozhodnutí lepší, jiné horší. Znamení horoskopu, ve kterém se podnikatel, firma nebo projekt narodí, může určit i místo, kde se bude podnikat nejlépe, zda se bude víc dařit doma nebo v zahraničí a s čím je dobré počítat. Každý typ byznysu je navíc podle Moniky spjatý s některou konkrétní planetou, jejíž momentální pozice může napovědět, kudy se vydat – nebo naopak ukázat, proč je některá cesta slepá, když se zrovna příliš nedaří.

Karty, numerologie. Co si o nich myslí podnikatelé a už je vyzkoušeli? Zeptali jsme se. Více čtěte v článku Podnikání podle karet a čísel? Český podnikatel se tomu nebrání

Z horoskopu zaměstnanců se zase podle ní dá vyčíst, zda se hodí na konkrétní pozici nebo jaké vztahy lze mezi lidmi očekávat v týmu. S vytvořením horoskopu ale samozřejmě musí souhlasit a poskytnout ideálně datum, čas a místo narození, jak uvádí Monika. Podle ní v astrologii platí podobné pravidlo jako při vaření – každá ingredience mění výslednou chuť.

Tarot není jen věštění, pomůže i s cenou a rozhodnutím

Marketingová čarodějnice (jak sama sebe nazývá) Magdalena Čevelová se věnuje marketingovému poradenství i koučování a je autorkou e-knih. Mimo jiné se svými klienty pracuje i s tarotovými kartami. Ty jsou známé od 15. století, nejprve jako obrázkové hrací karty, kořeny však mají ještě o jedno století hlubší. Hodně lidí vnímá tarot čistě jako nástroj k věštění budoucnosti. Podle mě je to škoda, komentuje Magdalena. Při práci s klienty jí tarotové karty pomáhají dodat kontext a podívat se zpátky na kořeny stávající situace. Třeba jaké finanční bloky vám brání si říct o vyšší cenu. Jakou motivaci má konkurence nebo protistrana v soudním sporu. Nebo jaký produkt či služba skutečně zajímá vaše ideální klienty, popisuje konkrétní příklady témat.

Tarot podle ní pomáhá i ve chvíli, kdy si podnikatel nebo podnikatelka potřebují vybrat ze dvou možností. Je vcelku jedno, jestli se jedná o dva podnikatelské záměry, dva marketingové nástroje nebo dvě značky auta. Jedna možnost je málokdy výrazně lepší než ta druhá. Spíš se liší v detailech. Tarot však pomůže pochopit, mezi čím se vlastně rozhodujete, objasňuje. Rozklíčuje podle ní třeba to, že jedna podnikatelská příležitost znamená rychlé peníze, druhá větší stabilitu do budoucna, že jedno auto přinese nižší provozní náklady, ale druhé víc radosti. Čtěte více také v článku 7 způsobů, jak využít tarotové karty v podnikání.

Karta radí čekat – a vyplatilo se

Jak Magdalena prozrazuje, jedna z nejčastějších otázek, na kterou s klienty tarot vykládá, je: Co mi přinese, když… Spoustu věcí podvědomě tušíte nebo z nich máte strach. Obrázky na tarotových kartách umožní naděje a obavy snáze převést do slov. Po zmapování situace pak obvykle pokračujeme otázkou Co se s tím dá dělat? nebo Jaký je vhodný další krok?, vysvětluje. Sama má ráda i dotaz: Které své silné stránky mohu právě teď využít v podnikání? A jak dodává, tarot dokáže v byznysu pomoci i s načasováním. Jako když chtěl můj muž koupit mírně zlevněný stan. V kartách vyšlo, ať ještě chvíli počká. Druhý den stan zlevnil ještě o dalších 30 %, dává osobní příklad.

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

Jen racionální myšlení? Ochudíte se a přitáhnete otravy

O tom, že tarot funguje, přitom Magdalena skeptiky nijak nepřesvědčuje. Podnikatelských nástrojů je totiž podle ní spousta a je lepší použít hlavně ty, kterým daný člověk důvěřuje. To ovšem neznamená, že by nedůvěřivec nemohl tarot zkusit. I Magdalena totiž tvrdí, že v současnosti se v podnikání vsází hlavně na tak zvané racionální myšlení. Je ale podle ní škoda se omezovat jen na jeden zdroj informací a upozadit tak další zdroje, včetně intuice. Intuice nám často může dodat informace, ke kterým vědomý mozek nemá přístup. A spoustu věcí vám umožní použít rychleji, než je dokážete analyticky zpracovat, uvádí. Skutečná intuice totiž podle ní není náhoda nebo zbrklost, ale fyzický pocit v těle. Vnímáte ho ale jen v případě, že mu věnujete pozornost, a to se většina lidí musí naučit, doporučuje. Více se dozvíte i v článku Nebojte se intuice a improvizace. Vašemu podnikání totiž prospějí.

Sama intuici v podnikání využívá například k nastavení ceny. Jak říká, s trochou zkušenosti je možné nacítit, kolik má určitý produkt nebo služba stát, aby s tím byl podnikatel v souladu. Takto nastavená cena pak podle ní funguje i na ideální zákazníky. Intuice se mi mnohokrát vyplatila i při výběru nových klientů. A pár problematických zakázek jsem naopak získala jen tím, že jsem ji neposlouchala, uzavírá přesvědčeně.

'; 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 »