Ženy v pandemii: Na rodiče, a matky zvlášť, se kladou nehorázné nároky

29. 3. 2021
Doba čtení: 9 minut

Sdílet

Ilustrační obrázek
Autor: Depositphotos.com, podle licence: Rights Managed
Ilustrační obrázek
Práce, děti, škola, domácnost, práce… Běžný kolotoč matek – OSVČ i zaměstnankyň se v posledním roce neúnosně vyostřil. Výsledek? I bezmoc a psychické potíže.

Barbora Čermáková žije v Olomouci, pracuje jako OSVČ a zároveň je mámou dvou dětí. Syn je desetiletý školák, který se teď učí doma, dcera kvůli koronaviru zatím ani nestačila nastoupit do školky. Vůbec nechápu, co všechno se od nás, matek, vlastně automaticky očekává, diví se Barbora rozzlobeně. Na volné noze přitom rozvíjí to, co se označuje jako portfoliová kariéra. Má souběžně více profesí a spolupracuje s četnými projekty.

Co se dozvíte v článku
  1. O část práce přišla s kulturní odstávkou
  2. Naučila se říkat „ne“
  3. Systém kašle na mámy, které zároveň pracují
  4. Výzkum: Další neplacená práce – škola na dálku
  5. Vstává v pět, aby stihla i práci
  6. Neperu se s tím, co je
  7. Důsledkem je bezmoc i psychosomatické potíže
  8. Výzkum: Rodiče trpí depresí a úzkostí
  9. Máma na směny, manžel na home office
  10. V týmu víc klidu, o napnelismus nikdo nestojí

O část práce přišla s kulturní odstávkou

O překlady a tlumočení však z větší části přišla, protože je měla navázané na kulturní sektor a především festivalový provoz, které pandemie zcela ochromila. Rozšířila proto svou práci v oblasti PR a správy sociálních sítí pro kulturní a vzdělávací organizace. Tvrdí, že jí pomohly dřívější pražské kontakty v oboru, protože právě pro pražskou organizaci nyní nově na dálku pracuje. Potřebovala jsem do svého portfolia i práci, která je teď trochu jistější a přinese mi pravidelnější příjmy. A také činnost, která mi umožní dělat zase trochu něco jiného. V Olomouci je trh práce pro kreativce dost omezený, na což narážejí i matky, které se vracejí po rodičovské a často musí práci prostě hledat jinde, vysvětluje Barbora.

Naučila se říkat „ne“

Skloubit všechny pracovní aktivity s péčí o školáka a dvouletou dceru však pro ni není žádný med. Co se školy týče, bylo pro nás loňské jaro hodně náročné, teď už ji syn zvládá v podstatě sám, hodně se osamostatnil. Pro mladší dítě si někdy zaplatím hlídání, při dodržení maximální opatrnosti, ale jinak bychom situaci prostě nezvládli, přiznává Barbora s tím, že její muž z velké části pracuje na home office a dělí se s ní o péči o děti i o domácí práce. Tím vyšetří trochu času na svou práci, pracuje, když děti spí, pracuje večer, přesto má na práci maximálně čtyři až pět hodin denně, i když by jich potřebovala alespoň osm. Moje práce je sice hodně flexibilní, což je určitá výhoda, stejně ji ale musím odvést. Naštěstí jsou lidé, s nimiž spolupracuji, celkem empatičtí a situaci chápou, protože i jiné matky jsou na tom podobně, dodává.

A říká, že celá věc má pro ni nakonec i jednu pozitivnější stránku, naučila se říkat „ne“, otevřeně mluvit o vlastních hranicích, nebát se přiznat, že něco zkrátka nezvládne – třeba úkol zadaný večer s termínem odevzdání druhý den ráno. I přes veškerou vstřícnost však cítím velký tlak, a to i vnitřní, že všechno musím zvládnout. Neumím si moc odpočinout, nemám čas na sebe, a to i proto, že jsem na sebe hodně přísná, popisuje.

Systém kašle na mámy, které zároveň pracují

Barbora přitom nedosáhla na ošetřovné kvůli souběhu OSVČ s rodičovským příspěvkem. A pozastavuje se nad tím, že právě taková je situace i mnoha dalších žen, přestože šly za poslední rok s příjmy výrazně dolů. Prostě se předpokládá, že se ženy nějak uživí, budou pracovat, postarají se o děti, o domácnost… Při současné krizi se znovu potvrdilo, že stát vůbec nereflektuje různorodou situaci žen OSVČ, jako by to bylo černobílé, buď pečuješ o děti, nebo pracuješ, nic mezi tím, neřeší se souběh práce a péče, práce a rodičovské. Systémově se na matky, které zároveň také vydělávají, prostě vůbec nemyslí, uzavírá.

Výzkum: Další neplacená práce – škola na dálku

Na fakt, že především u žen – matek v Evropě v době pandemie výrazně vzrostl tlak na work-life balance, upozorňuje ve svých výzkumech také European Institute for Gender Equality (EIGE). Především u žen s malými dětmi do pěti lety k tomu paradoxně přispěly i možnosti práce na dálku. Vzrostl i podíl žen na neplacené domácí práci, a to navzdory tomu, že i muži se na ní více podílejí. Novou formu neplacené péče navíc totiž nyní představuje online vzdělávání dětí. Podle EIGE i to dopadá více na ženy, které jsou do online výuky dětí celkově zapojené více než muži, a matky jsou také častěji vyrušené dětmi, když pracují z domova. Ve výsledku tím vším trpí produktivita práce žen a může to negativně ovlivnit jejich pracovní postup a plat.

Vstává v pět, aby stihla i práci

V podobné konstelaci, OSVČ, více projektů, dvě děti, škola z domova, funguje i Petra Krainová kousek za Prahou. Vstávám kolem páté ráno, abych stihla udělat nějakou práci, dokud doma všichni spí. A to jsem šťastná jak blecha, že tu práci mám, přiznává Petra, která pracuje na projektu Práce z obýváku pro rodiče samoživitele, koučuje a pro firmy školí komunikaci a psychohygienu, nyní výhradně online.

Bere to však tak, že její psychické zdraví a pohoda jsou na prvním místě. Je to víc než úkoly, oběd přesně ve dvanáct, než co si myslí a chce paní učitelka. Chvilku pro sebe si najdu každý den, i kdybych se měla ukrýt na toaletě. Praktikuji řízené relaxace, autogenní trénink a dechové techniky. Nebo prostě jen čumím do blba, tedy do zahrady, a záměrně vypínám, vypráví o tom, co jí pomáhá náročný čas bez újmy zvládnout.

Neperu se s tím, co je

Jak Petra dodává, pěstuje nadhled, humor a nevsugerovává si představu, jak děti doma trpí, protože ty její jsou spokojené. Nepere se s tím, co je, i když se jí to nelíbí. To, že jsou na rodiče, a matky zejména, kladeny nehorázné nároky, se mi nelíbí a nesouhlasím s tím, ale vím, že stížnosti, brblání a hněv nepomáhají. Na druhou stranu si sama sobě přiznávám právo cítit se někdy frustrovaně, naštvaně, vyčerpaně a ono to pak zase přejde, upozorňuje Petra.

Důsledkem je bezmoc i psychosomatické potíže

Mnohé ženy se v posledním roce, kdy se jim nakumulovaly povinnosti, ovšem ocitly v opravdu tíživé situaci. Další máma, která má doma prvňáčka na distanční výuce a čtyřletého syna, si nepřeje zveřejnit své jméno. Přes den je na děti sama doma, její muž ujíždí do kanceláře, aby mohl pracovat, a vrací se večer. Sama kvůli koronavirové situaci přišla již vloni o dvě pracovní příležitosti – o zpěv v muzikálech a na plesech, kde působila na volné noze, a o poloviční úvazek v nakladatelství. Aktuálně proto pracuje na dohody v různorodých projektech. Reálně ale moc nemám kdy práci dělat. Večer nebo v noci nefunguji, jsem unavená a nejsem schopná dělat kreativní práci. Obdivuji všechny pracantky po nocích… Navíc jsem typ, který se na práci nejlépe soustředí v kanceláři, mimo domov a bez dětí, což teď vůbec není možné, popisuje složitou situaci.

Každé všední dopoledne tráví se synem, prvňákem, který je vysokofunkční autista, u online výuky. Musíme se mu hodně věnovat. Učení mu jde, škola je skvělá, ale není to tak, že by se učil sám. Celá situace už mě opravdu dostává, mám i psychosomatické zdravotní potíže, dodává. Přiznává, že u některých pracovních projektů už má po termínu odevzdání, začala tedy alespoň v neděli jezdit pryč, o děti se stará manžel a ona pracuje u své mámy. Sice cítí všeobecnou podporu, ale sama je se skluzem v práci ještě víc v depresi. A vnímá bezmoc. Potřebuji, aby se už otevřely první třídy a školky. Jinak nevím, jak z toho ven, tvrdí.

Výzkum: Rodiče trpí depresí a úzkostí

Pandemie výrazně ovlivnila duševní zdraví rodičů, ukázalo se i v průzkumu PAQ Research (tedy výzkumné organizace založené sociologem Danielem Prokopem) pro Nadaci České spořitelny, který se zabývá distanční výukou na jaře a na podzim minulého roku. O příznacích středně těžké deprese a úzkosti mezi dubnem a listopadem 2020 svědčilo 27 % dotázaných rodičů (oproti 8% odhadu pro celou populaci před pandemií). Častěji se přitom příznaky objevovaly u žen než u mužů (31 % oproti 22 %). U rodičů dětí na druhém stupni základní školy sice příznaky deprese a úzkosti od jara do podzimu klesly, avšak u rodičů dětí na prvním stupni naopak narostly.

Máma na směny, manžel na home office

Jak zvládnout děti školou povinné, domácnost a náročnou práci neřeší jen podnikatelky, ale i zaměstnankyně. A tím pádem i jejich zaměstnavatelé. Jana Motlová pracuje jako zdravotní sestra na neonatologii v Ústavu pro péči o matku a dítě v pražském Podolí. Do Prahy dojíždí. A sama je mámou čtyř synů. Před rokem jsem zkusila plný úvazek, abych pomohla vydělat na moře. Také jsme spoléhali na to, že to chlapečky (tenkrát 10 a 13 let) naučí více samostatnosti. Kvůli pandemii se k moři nejelo, já zůstala na plný úvazek a manžel na home office, vzpomíná.

Dokud to šlo, v práci se střídali – Jana chodila na denní a noční směny a manžel do kanceláře, když měla volno. Od září však je manžel více doma než v práci. Kluci se naučili být samostatní v distanční výuce a IT. Není to ale vždy růžové, některé dny učení odkládají a večer s hrůzou dodělávají. Také, protože už to nejsou prťata, naučili se obsloužit v kuchyni a klidně i upečou, popisuje Jana svou pracovní a domácí situaci.

Marketing meeting Influenceři a sociální sítě

Protože manžel zastane v domácnosti úplně všechno a práce má teď spíš méně než obvykle, našla si Jana v tomto režimu nakonec i jednu výhodu – má víc času na spánek a odpočinek. V běžném provozu jsem buď v práci, nebo ráno vstávám s dětmi. Po noční musím vstát brzy a rozvézt je na atletiku. To mi teď odpadá. Ráno si můžu poležet, protože děti mají online výuku. Pak sice musím obstarat kuchyň a domácnost, ale mám na to celý den, říká s tím, že jestli jí dnes něco pomáhá všechno zvládnout, je to jednoznačně právě manžel a jeho stoprocentní spolehlivost.

V týmu víc klidu, o napnelismus nikdo nestojí

Jana tvrdí, že i u ní v práci se mámám snaží vyjít maximálně vstříc, co se týče rozvrhu služeb. Cítím také, že problémy a napnelismus, který tam někdy panoval, se snažíme řešit víc v klidu. Víme, že jsme čím dál citlivější, a nikomu se nechce řešit malichernosti, uvádí. Pokud byl někdo v karanténě, nebyl nikdy problém s obsazením služeb, ani ona, ani žádná z jejích kolegyň nevyužila ošetřovačku na děti. Ve většině případů pomohl manžel a také právě práce na směny. Kromě spaní přitom Jana obnovuje své síly při čtení, pokud to jen trochu jde. Přes zimu dělala s rodinou dlouhé pěší túry a teď, s jarem, v sobě objevuje zahradnické geny. U toho zrelaxuji úplně nejlépe. A začala jsem cvičit, co kdyby to moře letos klaplo, usmívá se.

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