UNPKG

@aller/blink

Version:

A library for tracking user behaviour.

98 lines (92 loc) 2.69 kB
import { DFP_INSCREEN, SCROLL_POS_AD_LOAD, SCROLL_POS_INSCREEN_DFP, SCROLL_POS_SLOT_RENDER_ENDED, SCROLL_POS_SLOT_ONLOAD, SCROLL_OFFSET_TOP, SCROLL_OFFSET_HEIGHT, DFP_NAME, DFP_ADVERTISER_ID, DFP_CAMPAIGN_ID, DFP_CREATIVE_ID, DFP_ADUNIT_PATH, DFP_RENDERED, DFP_LOADED, DFP_LINE_ITEM_ID, DFP_SIZE, DFP_SOURCE_AGNOSTIC_LINE_ITEM_ID, DFP_SOURCE_AGNOSTIC_CREATIVE_ID, DFP_BIDDER, } from './consts'; import generalData from '../utils/general-data'; import { calculateEventTime } from '../utils/event-time'; import { BlinkEvent } from '../types'; import { Page } from '../selectors/get-page-state'; export interface PrepareAdEventInput { id: string; page: Page; utils: any; time?: Date; } export default function prepareAdEvent(input: PrepareAdEventInput): BlinkEvent { const { page, utils, id } = input; const inscreenTime = calculateEventTime({ times: page.state.inscreen[id], screenEvents: page.state.screen.events, now: input.time, }); const inscreenTime0 = calculateEventTime({ times: page.state.inscreen0[id], screenEvents: page.state.screen.events, now: input.time, }); const { getScrollHeight } = utils; const ad = page.state.ads[id] || {}; return { ...generalData(page.state), id: id || 'N/A', adId: id || 'N/A', type: 'ads', inscreenTime: inscreenTime || 0, inscreenTime0: inscreenTime0 || 0, scroll: { pos: { adLoad: ad[SCROLL_POS_AD_LOAD] || 0, inscreenDFP: ad[SCROLL_POS_INSCREEN_DFP] || 0, slotRenderEnded: ad[SCROLL_POS_SLOT_RENDER_ENDED] || 0, slotOnload: ad[SCROLL_POS_SLOT_ONLOAD] || 0, }, offsetTop: ad[SCROLL_OFFSET_TOP] || 0, offsetHeight: ad[SCROLL_OFFSET_HEIGHT] || 0, scrollHeight: getScrollHeight() || 0, }, dfp: { inscreen: ad[DFP_INSCREEN] || 0, name: ad[DFP_NAME] || 'N/A', advertiserId: ad[DFP_ADVERTISER_ID] || 0, campaignId: ad[DFP_CAMPAIGN_ID] || 0, creativeId: ad[DFP_CREATIVE_ID] || 0, adUnitPath: ad[DFP_ADUNIT_PATH] || 'N/A', rendered: ad[DFP_RENDERED] || 0, loaded: ad[DFP_LOADED] || 0, lineItemId: ad[DFP_LINE_ITEM_ID] || 0, size: ad[DFP_SIZE] || [0], sourceAgnosticCreativeId: ad[DFP_SOURCE_AGNOSTIC_CREATIVE_ID] || 0, sourceAgnosticLineItemId: ad[DFP_SOURCE_AGNOSTIC_LINE_ITEM_ID] || 0, bidder: ad[DFP_BIDDER] || null, }, }; } export function getAllAdEventsPrepared( page: Page, utils: any, time: Date, ): BlinkEvent[] { if (!page || !page.state) { return []; } return Object.keys(page.state.ads).map(adId => prepareAdEvent({ id: adId, page, utils, time }), ); }