Skip to content

Commit

Permalink
fix: re-design companions config (#34)
Browse files Browse the repository at this point in the history
Previous structure:
companions: { testCompanionSquare: { width: 300, height: 250, sizeCriteria: 'SELECT_EXACT_MATCH' } }
New structure:
companions: { ads: { testCompanionSquare: { width: 300, height: 250, } }, sizeCriteria: 'SELECT_EXACT_MATCH' }
  • Loading branch information
Dan Ziv committed Dec 11, 2017
1 parent 9c46809 commit 75b2463
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 50 deletions.
19 changes: 10 additions & 9 deletions samples/companion-ads-manual.html
Original file line number Diff line number Diff line change
Expand Up @@ -67,15 +67,16 @@
ima: {
adTagUrl: 'http://pubads.g.doubleclick.net/gampad/ads?sz=640x480&iu=/124319096/external/ad_rule_samples&ciu_szs=300x250&ad_rule=1&impl=s&gdfp_req=1&env=vp&output=xml_vmap1&unviewed_position_start=1&cust_params=sample_ar%3Dpreonly&cmsid=496&vid=short_onecue&correlator=[timestamp]',
companions: {
testCompanionSquare: {
width: 300,
height: 250,
sizeCriteria: 'SelectExactMatch'
},
testCompanionLong: {
width: 728,
height: 90,
sizeCriteria: 'SelectExactMatch'
sizeCriteria: 'SELECT_EXACT_MATCH',
ads: {
testCompanionSquare: {
width: 300,
height: 250
},
testCompanionLong: {
width: 728,
height: 90
}
}
}
}
Expand Down
60 changes: 24 additions & 36 deletions src/ima.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ export default class Ima extends BasePlugin {
*/
static defaultConfig: Object = {
debug: false,
companions: {},
setDisableCustomPlaybackForIOS10Plus: null,
adsRenderingSettings: {
restoreCustomPlaybackStateOnAdBreakComplete: true,
Expand All @@ -42,7 +41,11 @@ export default class Ima extends BasePlugin {
useStyledNonLinearAds: true,
bitrate: -1,
autoAlign: true
}
},
companions: {
ads: null,
sizeCriteria: 'SELECT_EXACT_MATCH'
},
};

/**
Expand Down Expand Up @@ -819,43 +822,28 @@ export default class Ima extends BasePlugin {
* @returns {void}
*/
_maybeDisplayCompanionAds(): void {
if (this.config.companions && !window.googletag) {
let companionsIds = Object.keys(this.config.companions);
if (this.config.companions && this.config.companions.ads && !window.googletag) {
const selectionCriteria = new this._sdk.CompanionAdSelectionSettings();
selectionCriteria.resourceType = this._sdk.CompanionAdSelectionSettings.ResourceType.ALL;
selectionCriteria.creativeType = this._sdk.CompanionAdSelectionSettings.CreativeType.ALL;
const sizeCriteria = this.config.companions.sizeCriteria;
selectionCriteria.sizeCriteria = this._sdk.CompanionAdSelectionSettings.SizeCriteria[sizeCriteria] || this._sdk.CompanionAdSelectionSettings.SizeCriteria.SELECT_EXACT_MATCH;
const companionsIds = Object.keys(this.config.companions.ads);
for (let i = 0; i < companionsIds.length; i++) {
let id = companionsIds[i];
let width = this.config.companions[id].width;
let height = this.config.companions[id].height;
let sizeCriteria = this.config.companions[id].sizeCriteria || '';
let companionAds = [];
try {
let selectionCriteria = new this._sdk.CompanionAdSelectionSettings();
selectionCriteria.resourceType = this._sdk.CompanionAdSelectionSettings.ResourceType.ALL;
selectionCriteria.creativeType = this._sdk.CompanionAdSelectionSettings.CreativeType.ALL;
switch (sizeCriteria.toLowerCase()) {
case 'selectnearmatch':
selectionCriteria.sizeCriteria = this._sdk.CompanionAdSelectionSettings.SizeCriteria.SELECT_NEAR_MATCH;
break;
case 'ignore':
selectionCriteria.sizeCriteria = this._sdk.CompanionAdSelectionSettings.SizeCriteria.IGNORE;
break;
case 'selectexactmatch':
default:
selectionCriteria.sizeCriteria = this._sdk.CompanionAdSelectionSettings.SizeCriteria.SELECT_EXACT_MATCH;
break;
}
companionAds = this._currentAd.getCompanionAds(width, height, selectionCriteria);
if (companionAds.length > 0) {
let companionAd = companionAds[0];
let content = companionAd.getContent();
let el = Utils.Dom.getElementById(id);
if (el) {
el.innerHTML = content;
}
const id = companionsIds[i];
const ad = this.config.companions.ads[id];
const width = ad.width;
const height = ad.height;
const companionAds = this._currentAd.getCompanionAds(width, height, selectionCriteria);
if (companionAds.length > 0) {
const companionAd = companionAds[0];
const content = companionAd.getContent();
const el = Utils.Dom.getElementById(id);
if (el) {
el.innerHTML = content;
}
} catch (e) {
this.logger.error(e);
}
}
}
}
}
}
12 changes: 7 additions & 5 deletions test/src/ima.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -305,11 +305,13 @@ describe('Ima Plugin', function () {
player = loadPlayerWithAds(targetId, {
adTagUrl: 'http://pubads.g.doubleclick.net/gampad/ads?sz=640x480&iu=/124319096/external/ad_rule_samples&ciu_szs=300x250&ad_rule=1&impl=s&gdfp_req=1&env=vp&output=xml_vmap1&unviewed_position_start=1&cust_params=sample_ar%3Dpreonly&cmsid=496&vid=short_onecue&correlator=[timestamp]',
companions: {
testCompanionSquare: {
width: 300,
height: 250,
sizeCriteria: 'SelectExactMatch'
}
ads: {
testCompanionSquare: {
width: 300,
height: 250,
}
},
sizeCriteria: 'SELECT_EXACT_MATCH'
}
});
ima = player._pluginManager.get('ima');
Expand Down

0 comments on commit 75b2463

Please sign in to comment.