From 502030eaedeb39ad69c6935bfecdeb96623e92da Mon Sep 17 00:00:00 2001 From: Joe Flateau Date: Sat, 6 Apr 2019 21:07:26 -0400 Subject: [PATCH] doubleclick event specific types --- .../doubleclick-gpt/doubleclick-gpt-tests.ts | 10 ++++--- types/doubleclick-gpt/index.d.ts | 28 +++++++++++-------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/types/doubleclick-gpt/doubleclick-gpt-tests.ts b/types/doubleclick-gpt/doubleclick-gpt-tests.ts index 4d29a46d91..7b83ec7679 100644 --- a/types/doubleclick-gpt/doubleclick-gpt-tests.ts +++ b/types/doubleclick-gpt/doubleclick-gpt-tests.ts @@ -262,9 +262,11 @@ googletag.pubads().updateCorrelator(); // The listener will be called only when the pubads service renders a slot. // To listen to companion ads, add a similar listener to // googletag.companionAds(). -googletag.pubads().addEventListener("slotRenderEnded", (event: googletag.events.SlotRenderEndedEvent) => { +googletag.pubads().addEventListener("slotRenderEnded", (event) => { console.log("Slot has been rendered:"); - console.log(event); + console.log(event.isEmpty); + console.log(event.lineItemId); + console.log(event.creativeId); }); // 2. Slot render ended listener, slot specific logic. @@ -273,7 +275,7 @@ googletag.pubads().addEventListener("slotRenderEnded", (event: googletag.events. // however, programmatically filter a listener to respond only to a certain // ad slot, using this pattern: let targetSlot = slot1; -googletag.pubads().addEventListener("slotRenderEnded", (event: googletag.events.SlotRenderEndedEvent) => { +googletag.pubads().addEventListener("slotRenderEnded", (event) => { if (event.slot === targetSlot) { // Slot specific logic. } @@ -283,7 +285,7 @@ googletag.pubads().addEventListener("slotRenderEnded", (event: googletag.events. // The listener will be called when the impression is considered viewable. // This event also operates at service level, but, as above, you can filter // to respond only to a certain ad slot by using this pattern: -googletag.pubads().addEventListener("impressionViewable", (event: googletag.events.ImpressionViewableEvent) => { +googletag.pubads().addEventListener("impressionViewable", (event) => { if (event.slot === targetSlot) { // Slot specific logic. } diff --git a/types/doubleclick-gpt/index.d.ts b/types/doubleclick-gpt/index.d.ts index 5e693c8f9a..cca24f7225 100644 --- a/types/doubleclick-gpt/index.d.ts +++ b/types/doubleclick-gpt/index.d.ts @@ -25,9 +25,17 @@ declare namespace googletag { } interface Service { + addEventListener( + eventType: "slotRenderEnded", + listener: (event: events.SlotRenderEndedEvent) => void + ): void; + addEventListener( + eventType: "impressionViewable", + listener: (event: events.ImpressionViewableEvent) => void + ): void; addEventListener( eventType: string, - listener: (event: events.ImpressionViewableEvent | events.SlotOnloadEvent | events.SlotRenderEndedEvent | events.slotVisibilityChangedEvent) => void + listener: (event: events.Event | events.ImpressionViewableEvent | events.SlotOnloadEvent | events.SlotRenderEndedEvent | events.slotVisibilityChangedEvent) => void ): void; getSlots(): Slot[]; } @@ -155,32 +163,28 @@ declare namespace googletag { } namespace events { - interface ImpressionViewableEvent { + interface Event { serviceName: string; slot: Slot; } - - interface SlotOnloadEvent { - serviceName: string; - slot: Slot; + interface ImpressionViewableEvent extends Event { } - interface SlotRenderEndedEvent { + interface SlotOnloadEvent extends Event { + } + + interface SlotRenderEndedEvent extends Event { advertiserId?: number; creativeId?: number; isEmpty: boolean; lineItemId?: number; - serviceName: string; size: number[] | string; - slot: Slot; sourceAgnosticCreativeId?: number; sourceAgnosticLineItemId?: number; } - interface slotVisibilityChangedEvent { + interface slotVisibilityChangedEvent extends Event { inViewPercentage: number; - serviceName: string; - slot: Slot; } } }