1 2<!DOCTYPE html> 3<html lang="en"> 4<head> 5 <meta charset="utf-8"> 6<link rel="preload" as="style" href="/Magazine/core.css?p=8039869216058437"> 7<link rel="preload" as="script" href="/Magazine/core.js?p=8039869216058437"> 8 9 <link rel="preload" as="image" href="https://dft2fymcn9opj.cloudfront.net/Pictures/480xany/3/1/6/21316_conferencehall_256294.jpg" imagesrcset="https://dft2fymcn9opj.cloudfront.net/Pictures/480xany/3/1/6/21316_conferencehall_256294.jpg 480w,https://dft2fymcn9opj.cloudfront.net/Pictures/600xany/3/1/6/21316_conferencehall_256294.jpg 600w,https://dft2fymcn9opj.cloudfront.net/Pictures/780xany/3/1/6/21316_conferencehall_256294.jpg 780w" imagesizes="(max-width: 1023px) 100vw, 780px" /> 10 11 12 13
14<script> 15 window.dataLayer = window.dataLayer || []; 16 function gtag() { 17 dataLayer.push(arguments); 18 } 19 gtag("consent", "default", { 20 ad_storage: "denied", 21 ad_user_data: "denied", 22 ad_personalization: "denied", 23 analytics_storage: "denied", 24 functionality_storage: "denied", 25 personalization_storage: "denied", 26 security_storage: "granted", 27 wait_for_update: 2000, 28 }); 29</script>
29 30 31 32<style> 33#cookiePolicy:not(.emailValidationGrace) {display: none !important;} 34</style> 35 36<title>Oncology drug development focuses on clinical translation and systems integration at AACR 2026 | Drug Target Review</title> 37<meta name="description" content="In part two of our AACR 2026 coverage, industry leaders were focussed on how the field is no longer constrained by data generation or molecular design, but by the challenge of connecting systems, standardising workflows and ensuring biological insights." /> 38<meta name="viewport" content="width=device-width, initial-scale=1" /> 39 40 41<meta name="momentnowdate" content="2026-09-24 09:53:42.277"/> 42<meta name="momentlocale" content="en-gb"/> 43<meta name="momentlocaleformat" content="MMMM DD, yyyy"/> 44<meta name="momentrelative" content="false"/> 45<meta name="momentrelativeformat" content="YYYY,MM,DD"/> 46<meta name="momentrelativemorethan" content="10"/> 47 48 49 <meta name="robots" content="noarchive" /> 50<meta name="pubdate" content="Thu, 11 Jun 2026 12:00 GMT" /> 51<link rel="canonical" href="https://www.drugtargetreview.com/aacr-2026-part-two-integrating-ai-spatial-biology-and-next-gen-therapeutics/2135691.article" /> 52<meta name="blockthis" content="blockGA" /> 53<meta name="showwallpaper" content="true" /> 54<meta name="navcode" content="83" /> 55<meta name="primarynavigation" content="Home" /> 56 <meta property="og:title" content="AACR 2026 part two: integrating AI, spatial biology and next-gen therapeutics" /> 57<meta property="og:type" content="Article" /> 58<meta property="og:url" content="https://www.drugtargetreview.com/aacr-2026-part-two-integrating-ai-spatial-biology-and-next-gen-therapeutics/2135691.article" /> 59<meta property="og:site_name" content="Drug Target Review" /> 60<meta property="og:description" content="In part two of our AACR 2026 coverage, industry leaders were focussed on how the field is no longer constrained by data generation or molecular design, but by the challenge of connecting systems, standardising workflows and ensuring biological insights." /> 61<meta property="og:image:width" content="1024" /> 62<meta property="og:image:height" content="536" /> 63<meta property="og:image" content="https://dft2fymcn9opj.cloudfront.net/Pictures/1024x536/3/1/6/21316_conferencehall_256294.jpg" /> 64<meta property="og:image:alt" content="Conference Hall" /> 65<meta property="og:image" content="https://dft2fymcn9opj.cloudfront.net/Pictures/1024x536/3/1/7/21317_revolutionmedicinesbooth2_136700.jpg" /> 66<meta property="og:image:alt" content="Revolution Medicines Booth 2" /> 67<meta property="og:image" content="https://dft2fymcn9opj.cloudfront.net/Pictures/1024x536/3/1/9/21319_cellcelectorsartoriusimage3_198199.jpg" /> 68<meta property="og:image:alt" content="CellCelector Sartorius Image 3" /> 69<meta property="og:image" content="https://dft2fymcn9opj.cloudfront.net/Pictures/1024x536/3/2/0/21320_crownbiosciencebooth_643000.jpg" /> 70<meta property="og:image:alt" content="Crown Bioscience Booth" /> 71<meta property="og:image" content="https://dft2fymcn9opj.cloudfront.net/Pictures/1024x536/3/2/1/21321_miltenyibooth_28793.jpg" /> 72<meta property="og:image:alt" content="Miltenyi Booth" /> 73 74<meta property="twitter:card" content="summary_large_image" /> 75<meta property="twitter:title" content="AACR 2026 part two: integrating AI, spatial biology and next-gen ..." /> 76<meta property="twitter:description" content="In part two of our AACR 2026 coverage, industry leaders were focussed on how the field is no longer constrained by data generation or molecular design, but by the challenge of connecting systems, standardising workflows and ensuring biological insights." /> 77<meta property="twitter:image:src" content="https://dft2fymcn9opj.cloudfront.net/Pictures/1120xAny/3/1/6/21316_conferencehall_256294.jpg" /> 78<meta property="twitter:image:alt" content="Conference Hall" /> 79 80 81<link rel="icon" href="/magazine/dest/graphics/favicons/favicon-32x32.png" /> 82<!--[if IE]><link rel="shortcut icon" href="/magazine/dest/graphics/favicons/favicon.ico" /><![endif]--> 83<link rel="apple-touch-icon-precomposed" href="/magazine/dest/graphics/favicons/apple-touch-icon-precomposed.png" /> 84<meta name="msapplication-TileImage" content="/magazine/dest/graphics/favicons/mstile-144x144.png" /> 85<meta name="msapplication-TileColor" content="#ffffff" /> 86 87 <link href="/Magazine/core.css?p=8039869216058437" rel="stylesheet" type="text/css"> 88<link href="/Magazine/print.css?p=8039869216058437" rel="stylesheet" type="text/css" media="print"> 89 90 91
92<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
92 93
94<script>var newLang={"more":{"default":"Show more","searchtype":"Show more","searchdates":"Show more"},"less":{"default":"Show fewer","searchtype":"Show fewer","searchdates":"Show fewer"},"show":{"default":"show"},"hide":{"default":"hide"},"caption":{"show":"show caption","hide":"hide caption"},"carousel":{"play":"play slideshow","pause":"pause slideshow"}};</script>
94 95 96 97 98
98<script type="text/javascript"> 99 var IPState = { 100 101 useripstate: false, 102 useripname: '' 103 104 }; 105 </script>
105
106<script type="text/javascript"> 107 108 window.dataLayer = window.dataLayer || []; 109 window.dataLayer.push({'StoryID':'2135691'}); 110 window.dataLayer.push({'StoryFormatProperty':'N'}); 111 112 window.dataLayer.push({'StoryCategories':'|Drug Discovery|Oncology|Lab Tools & Automation|Translational Science|Imaging & Diagnostics|Immunotherapy|Drug Development|Artificial Intelligence (AI)|Biologics|Antibody-Drug Conjugates (ADCs)|Featured content|Topics|'}); 113 114 window.dataLayer.push({'StoryLayout':'Standard'}); 115 window.dataLayer.push({'StoryWidth':'standard width'}); 116 117 118 window.dataLayer.push({'StoryLayoutCode':'1'}); 119 120 window.dataLayer.push({'StoryFormatCode':'1120'}); 121 122 window.dataLayer.push({'StoryTypeCode':'1019'}); 123 124 window.dataLayer.push({'StoryCategoriesCodes':'|256007|256129|256201|256346|256653|256852|257227|257419|265348|336940|429898|429916|'}); 125 126 window.dataLayer.push({'StoryFullNavPath':'null'}); 127 128 window.dataLayer.push({'UserID':undefined}); 129 window.dataLayer.push({'NavCode':'83'}); 130 window.dataLayer.push({'MicrositeNavCode':'-1'}); 131 window.dataLayer.push({'NavKey':'83'}); 132 133 window.dataLayer.push({'NavigationAreaNavCode':'83'}); 134 </script>
134
135<script type="text/javascript"> 136window.dataLayer.push({'AccessQualificationTypeName':'Free access (anonymous users)'}); 137window.dataLayer.push({'AccessProductCode':'P_000008'}); 138window.dataLayer.push({'AccessProductName':'Drug Target Review - Registered Metered'}); 139window.dataLayer.push({'AccessCount':'1'}); 140</script>
140
141<script type="text/javascript"> 142 window.dataLayer.push({'experiencestate': undefined}); 143 window.dataLayer.push({'grecaptcha':'6Le-x24sAAAAAAFTtptw3191t6rlQRS0IBpCrzvy'}); 144 window.dataLayer.push({'UserStateLoggedIn':'False'}); 145 window.dataLayer.push({'FullNavPath':'|82|83|'}); 146</script>
146 147 <link rel="preconnect" href="https://fonts.googleapis.com"> 148<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 149<link href="https://fonts.googleapis.com/css2?family=Mulish:ital,wght@0,200..1000;1,200..1000&family=Titillium+Web:ital,wght@0,400;0,700;1,400;1,700&display=swap" rel="stylesheet"> 150<!-- PROMO --> 151<style> 152.desktopNavigation ul.main>li.highlight:not(.current)>a>span{ 153 background-color: #e1f4fd; 154 color: #0098d6; 155 border-right: 4px solid #fff; 156 border-left: 4px solid #fff; 157} 158 159.desktopNavigation ul.main>li.highlight:not(.current)>a>span:after, 160.desktopNavigation ul.main>li.highlight:not(.current)>a>span:before{ 161filter: brightness(0) saturate(100%) invert(40%) sepia(87%) saturate(1070%) hue-rotate(166deg) brightness(93%) contrast(101%); 162} 163/*RPCS-134: Webinar dates shown after byline*/ 164 .byline.meta.eventDate > div { 165 display: inline-block; margin: 5px 10px 0 0; 166 } 167 .byline.meta.eventDate .leadgen-icon { 168 display: inline-block; background-repeat: no-repeat; 169 background-image: url("https://core-test.abasoftaws.co.uk/css/dest/graphics/output/sprite.css-b8e397a9.svg "); margin-right: 5px; 170 } 171 .byline.meta.eventDate .leadgen-webinar-date .leadgen-icon { 172 background-position: -288px -232px; width: 12px; height: 12px; 173 } 174 .byline.meta.eventDate .leadgen-webinar-time .leadgen-icon { 175 background-position: -449px -350px; width: 16px; height: 14px; 176 } 177 .byline.meta.eventDate .endDate.visible:before, .byline.meta.eventDate .endTime.visible:before { 178 content: "-"; padding-right: 4px; margin-left: 4px; 179 } 180 /*End RPCS-134*/ 181 182 section.promo-wrapper { 183 width: 100%; 184 container-type: inline-size; 185 } 186 187 .promo { 188 border-top: 0 solid; 189 height: fit-content; 190 padding: 0; 191 font-family: Mulish, sans-serif; 192 border-radius: 8px; 193 background-color: #0098D6; 194 margin-bottom: 0; 195 display: grid; 196 grid-template-columns: repeat(12, 1fr); 197 grid-template-rows: 1fr; 198 grid-column-gap: 0px; 199 grid-row-gap: 0px; 200 } 201 202 .promo h1, 203 .promo h2, 204 .promo h3, 205 .promo h4, 206 .promo h5 { 207 font-family: Titillium Web, sans-serif; 208 } 209 210 .promo div, 211 .promo p { 212 margin-bottom: 16px; 213 } 214 215 216 .promo .button { 217 font-family: Titillium Web, sans-serif; 218 219 } 220 .promo .promo-details .small-text, 221 .promo .small-text { 222 font-size: 0.889rem; 223 line-height: 1.266rem; 224 } 225 226 227 .promo-image { 228 padding: 24px; 229 border-top-left-radius: 8px; 230 border-bottom-left-radius: 8px; 231 max-width: 590px; 232 width: 100%; 233 background-repeat: no-repeat; 234 background-size: cover; 235 margin: 0; 236 grid-area: 1 / 1 / 2 / 7; 237 min-height:380px; 238 } 239 240 241 .promo-details.dark { 242 grid-area: 1 / 1 / 1 / 13; 243 } 244 245 .promo-image+.promo-details.dark { 246 grid-area: 1 / 7 / 2 / 13; 247 border-top-left-radius: 0; 248 border-bottom-left-radius: 0; 249 } 250 251 .promo-details { 252 padding: 24px; 253 } 254 255 .promo-details.dark { 256 color: #fff; 257 background-color: #0098D6; 258 border-radius: 8px; 259 } 260 261 .promo .promo-details.dark .promo-tag { 262 font-size: 0.889rem; 263 margin-bottom: 16px; 264 color: #B9E5FB; 265 } 266 267 .promo .promo-details.dark .promo-details-content h2 { 268 color: #fff; 269 font-size: 1.602rem; 270 line-height: 2.027rem; 271 272 } 273 274 .promo .promo-details a.button { 275 border-radius: 5px; 276 font-size: .889rem; 277 font-weight: 700; 278 font-family: Titillium Web, sans-serif; 279 text-transform: none; 280 text-align: center; 281 color: #fff; 282 background-color: #0098D6; 283 transition: background-color .25s ease-in; 284 margin-top: 0; 285 display: inline-block; 286 margin-bottom: 0; 287 padding: 7px 16px; 288 cursor: pointer; 289 background-color: transparent; 290 } 291 292 .promo .promo-details.dark a.ghost-style { 293 border: 1px solid #fff; 294 295 } 296 297 .promo .promo-details.dark a.ghost-style:hover { 298 background-color: #fff; 299 color: #0098D6; 300 } 301 302 .promo .promo-details ul { 303 list-style: none; 304 padding: 0; 305 } 306 307 .promo .promo-details ul li { 308 line-height: 24px; 309 margin-bottom: 8px; 310 position: relative; 311 padding-left: 18px; 312 font-size:16px; 313 } 314 315 .promo .promo-details ul li:before { 316 content: ''; 317 border-style: solid; 318 border-color: #871F80; 319 border-width: 0.15em 0.15em 0 0; 320 display: inline-block; 321 height: 0.45em; 322 left: 0; 323 position: absolute; 324 top: 8px; 325 transform: rotate(45deg); 326 width: 0.45em; 327 328 } 329
330 .promo .promo-details.dark ul li:before { 331 border-color: #fff; 332 } 333 334 .promo .promo-details ul li:last-child { 335 margin-bottom: 0px; 336 } 337 338 .promo:has(.promo-details.light) .promo-details.dark { 339 grid-area: 1 / 1 / 2 / 7; 340 margin-bottom:0; 341 } 342 343 .promo-details.dark+.promo-details.light { 344 grid-area: 1 / 7 / 2 / 13; 345 } 346 347 /*light promo details */ 348 .promo .promo-details.light { 349 background-color: #fafafa; 350 border-top-right-radius: 8px; 351 border-bottom-right-radius: 8px; 352 color: #0098D6; 353 } 354 .promo .promo-details.light h3 { 355 color: #0098D6; 356 } 357 .promo .promo-details.light a.ghost-style { 358 border: 1px solid #871F80; 359 color: #871F80; 360 } 361 362 .promo .promo-details.light a.ghost-style:hover { 363 background-color: #871F80; 364 color: #fff; 365 } 366 367 .promo .promo-image, 368 .promo>*:last-child, 369 .promo-details.dark>*:last-child, 370 .promo-details.light>*:last-child, 371 .promo-details.dark+.promo-details.light .promo-details-content:last-child, 372 .promo .promo-details.dark .promo-details-content>*:last-child, 373 .promo .promo-details.light .promo-details-content>*:last-child { 374 margin-bottom: 0; 375 } 376 377 378 @container (max-width: 450px) { 379 section .promo { 380 grid-template-columns: 1fr; 381 grid-template-rows: repeat(8, auto); 382 } 383 384 .promo-image { 385 grid-area: 1 / 1 / 5 / 2; 386 width: auto; 387 388 border-top-right-radius: 8px; 389 390 border-bottom-left-radius: 0; 391 min-height:192px; 392 } 393 394 .promo-details.dark { 395 grid-area: 1 / 1 / 9 / 2; 396 } 397 398 .promo-image+.promo-details.dark { 399 grid-area: 5 / 1 / 9 / 2; 400 border-bottom-left-radius: 8px; 401 } 402 403 .promo:has(.promo-details.light) .promo-details.dark { 404 grid-area: 1 / 1 / 4 / 2; 405 } 406 407 .promo-details.dark+.promo-details.light { 408 grid-area: 5 / 1 / 9 / 2; 409 border-top-right-radius: 0px; 410 border-bottom-left-radius: 8px; 411 } 412 } 413 @media screen and (min-width: 768px) { 414 .promo .promo-details address p, 415 .promo .promo-details dl, 416 .promo .promo-details ol li, 417 .promo .promo-details ul li, 418 .promo .promo-details p, 419 .promo .promo-detailsul li { 420 font-size: 16px; 421 } 422 } 423</style> 424<!-- END PROMO --> 425 426<style> 427.grecaptcha-badge { 428visibility: hidden; 429} 430</style> 431 432
433<script> 434 function getDataLayerVal(keyVal) { 435 for (var i = 0; i < window.dataLayer.length; i++) { 436 if (dataLayer[i][keyVal] !== undefined) { 437 return dataLayer[i][keyVal]; 438 } 439 } 440 } 441 442/* 443 if(typeof getDataLayerVal === 'function'){ //PWVD-1410: Update login status across tabs 444 const bc = new BroadcastChannel('loginCheck'); 445 var loggedIn = false, partyId = parseInt( getDataLayerVal('UserID') ); 446 if( partyId && !isNaN(partyId) ) loggedIn = true; 447 448 if(loggedIn){ 449 bc.postMessage( {loginRefresh: true} ); 450 bc.close(); 451 } 452 else if(!loggedIn){ 453 bc.onmessage = function(ev) { 454 if (ev.data && ev.data.loginRefresh === true){ 455 location.reload(); 456 bc.close(); 457 } 458 }; 459 } 460 } 461*/ 462</script>
462 463 464 465
466<script> 467window.iabConfig = { 468 allowedVendors: [ 469 755, // Google 470 49 // LinkedIn 471 ] 472} 473</script>
473 474 475 476<!-- Abacus Google Tag Manager -->
477<script>
vendor: 327 bytes, lines 477-481
477(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 478new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 479j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 480'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 481})(window,document,'script','dataLayer','
481GTM-N334KSM2
vendor: 3 bytes, line 481
481');
481</script>
481 482<!-- Abacus End Google Tag Manager --> 483 484<!-- Google Tag Manager -->
485<script>
vendor: 327 bytes, lines 485-489
485(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 486new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 487j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 488'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 489})(window,document,'script','dataLayer','
489GTM-KM6ZDN2
vendor: 3 bytes, line 489
489');
489</script>
489 490<!-- End Google Tag Manager --> 491 492
493<script id="cookieyes" type="text/javascript" src="https://cdn-cookieyes.com/client_data/2beda41e37a36abcca20d59a1eccf437/script.js"></script>
493 494 495 496<!-- Google AdSense
497<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8923463638765656" 498 crossorigin="anonymous"></script>
498 499End Google AdSense --> 500 501<!-- OneSignal Global Head Tag -->
502<script src="https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.page.js" defer></script>
vendor: 1 bytes, line 502
502
503<script> 504 window.OneSignalDeferred = window.OneSignalDeferred || []; 505 OneSignalDeferred.push(async function(OneSignal) { 506 await OneSignal.init({ 507 appId: "ef205720-1780-4939-bf29-1bf36ec3b684", 508 }); 509 }); 510</script>
510 511<!-- End OneSignal Global Head Tag --> 512 513 514<!-- hub ad removal -->
515<script type="text/javascript"> 516var currentPath = window.location.pathname; 517 518var hideLeaderboard = 519 currentPath === '/knowledge-hub' || 520 currentPath.indexOf('/knowledge-hub/') === 0 || 521 currentPath === '/dtr-directory' || 522 currentPath.indexOf('/dtr-directory/') === 0 || 523 currentPath === '/knowledgehub-search' || 524 currentPath.indexOf('/knowledgehub-search/') === 0; 525 526if (hideLeaderboard) { 527 document.documentElement.className += ' hide-leaderboard'; 528} 529</script>
529 530 531<style type="text/css"> 532.hide-leaderboard .leaderboard { 533 display: none !important; 534} 535</style> 536 537 538
539<script> 540 var EnhancedAdvertisingConfig = {}; 541</script>
541 542 543<!--Global Enhanced Adverts JSON definition from PAGETEXT-->
544<script> 545EnhancedAdvertisingConfig = { 546 "Refresh":false, 547 "RefreshDelaySecondsDefaultDesktop":30, 548 "RefreshDelaySecondsDefaultMobile":30, 549 550 "StoryDynamicSlotsAddGroupsAll":"Ads,Widgets", 551 "StoryDynamicSlotsAddGroupsInline":"", 552 "StoryDynamicSlotsAddGroupsRHC":"", 553 "StoryDynamicSlotsRemoveGroupsAll":"", 554 "StoryDynamicSlotsRemoveGroupsInline":"", 555 "StoryDynamicSlotsRemoveGroupsRHC":"", 556 557 "StoryDynamicSlotsRepeat":true, 558 "StoryDynamicSlotsDesktopMaxInlineSlots":10, 559 "StoryDynamicSlotsMobileMaxInlineSlots":10, 560 "StoryDynamicSlotsDesktopMaxRHCSlots":20, 561 "StoryDynamicSlotsMobileMaxRHCSlots":10, 562 "StoryDynamicSlotsDesktopElementSpacingFirst":3, 563 "StoryDynamicSlotsMobileElementSpacingFirst":3, 564 "StoryDynamicSlotsDesktopElementSpacing":3, 565 "StoryDynamicSlotsMobileElementSpacing":3, 566 567 "GAMAdUnitSizesInlineMobileDefault":[[300,250]], 568 "GAMAdUnitSizesInlineDesktopDefault":[[300,250],[300,600]], 569 "GAMAdUnitSizesRHCDefault":[[300,250],[300,600]], 570 571 "RHCMinHeightForSlotInsert":270, 572 "RHCMinHeightForStickyAd":550, 573 574 "CollapseEmptyDivs":true, 575 576 "Slots":[ 577 { 578 "Type":"GAMAdvert", 579 "Position":"PreferRight", 580 "Group":"Ads", 581 "AdUnit":"/xxx/DemoAdvertA", 582 "RefreshDelaySeconds":30, 583 "Sticky":false, 584 "Repeat":false, 585 "Refresh":false, 586 "InsertIfNoRHCSpace":true, 587 "AdUnitSizesInlineDesktop":[[300,250]], 588 "AdUnitSizesInlineMobile":[[300,250]], 589 "AdUnitSizesRHC":[[300,600]], 590 "NoBackfill":true, 591 //"CSSClass":"wvc-custom-ad", 592 "ExtraHTML":"<div class=\"ad-text\">Advert</div>" 593 }, 594 { 595 "Type":"GAMAdvert", 596 "Position":"Inline", 597 "Group":"Ads", 598 "AdUnit":"/xxx/DemoAdvertB", 599 "RefreshDelaySeconds":30, 600 "Sticky":false, 601 "Repeat":true, 602 "Refresh":false, 603 "InsertIfNoRHCSpace":true, 604 "AdUnitSizesInlineDesktop":[[300,250]], 605 "AdUnitSizesInlineMobile":[[300,250]], 606 "AdUnitSizesRHC":[[300,600]], 607 "NoBackfill":true, 608 //"CSSClass":"wvc-custom-ad", 609 "ExtraHTML":"<div class=\"ad-text\">Advert</div>" 610 }, 611 { 612 "Type":"CustomContent", 613 "Position":"Right", 614 "Sticky":true, 615 "Group":"Widgets", 616 "Repeat":false, 617 "InsertIfNoRHCSpace":true, 618 "HTML":"<div class=\"tab-widget-7\" data-ajax-load-content=\"\" data-cache-bust=\"true\" data-url=\"/ajax/most?cachetoken=1&wid=12\"></div>", 619 "CustomEventName":"MostPopularWidgetInit", 620 "Javascript":function(elem,container,slotconfig,adcounter,counter,repeat){ 621 $(window).trigger('abacus:readjusrhcheight',[event, elem]); 622 }, 623 "CSSClass":"wvc-custom-widget-mostpopular", 624 "MinHeight":700 625 }, 626 { 627 "Type":"GAMAdvert", 628 "Position":"Right", 629 "Group":"Ads", 630 "AdUnit":"/xxx/DemoAdvertB", 631 "RefreshDelaySeconds":30, 632 "Sticky":true, 633 "Repeat":false, 634 "Refresh":false, 635 "InsertIfNoRHCSpace":true, 636 "AdUnitSizesInlineDesktop":[[300,250]], 637 "AdUnitSizesInlineMobile":[[300,250]], 638 "AdUnitSizesRHC":[[300,250],[300,600]], 639 //"CSSClass":"wvc-custom-ad", 640 "ExtraHTML":"<div class=\"ad-text\">Advert</div>" 641 }, 642 { 643 "Type":"GAMAdvert", 644 "Position":"Right", 645 "Group":"Ads", 646 "AdUnit":"/xxx/DemoAdvertB", 647 "RefreshDelaySeconds":30, 648 "Sticky":true, 649 "Repeat":true, 650 "Refresh":false, 651 "InsertIfNoRHCSpace":false, 652 "AdUnitSizesInlineDesktop":[[300,250]], 653 "AdUnitSizesInlineMobile":[[300,250]], 654 "AdUnitSizesRHC":[[300,250]], 655 //"CSSClass":"wvc-custom-ad", 656 "ExtraHTML":"<div class=\"ad-text\">Advert</div>" 657 } 658 ], 659 660 "Overrides":[ 661 662 { 663 //If Type - my type 664 "Conditions":"StoryType-1", 665 "Settings":{ 666 "DesktopMaxInlineSlots":1, 667 "DesktopElementSpacingFirst":1000000 668 } 669 }, 670 { 671 //If Category="Slots (all) - Off" 672 "Conditions":"StoryCategoriesCodes-99999991", 673 "Operator":"And", 674 "Settings":{ 675 "RemoveGroupsAll":"Ads" 676 } 677 }, 678 { 679 //If Category="Slots (RHC) - Off" 680 "Conditions":"StoryCategoriesCodes-99999992", 681 "Operator":"And", 682 "Settings":{ 683 "RemoveGroupsRHC":"Ads,Widgets" 684 } 685 }, 686 { 687 //If Category="Slots (inline) - Off" 688 "Conditions":"StoryCategoriesCodes-99999993", 689 "Operator":"And", 690 "Settings":{ 691 "RemoveGroupsInline":"Ads,Widgets" 692 } 693 }, 694 { 695 //If Category="Advert slots (all) - Off" 696 "Conditions":"StoryCategoriesCodes-99999994", 697 "Operator":"And", 698 "Settings":{ 699 "RemoveGroupsAll":"Ads" 700 } 701 }, 702 { 703 //If Category="Advert slots (RHC) - Off" 704 "Conditions":"StoryCategoriesCodes-99999995", 705 "Operator":"And", 706 "Settings":{ 707 "RemoveGroupsRHC":"Ads" 708 } 709 }, 710 { 711 //If Category="Advert slots (inline) - Off" 712 "Conditions":"StoryCategoriesCodes-99999996", 713 "Operator":"And", 714 "Settings":{ 715 "RemoveGroupsInline":"Ads" 716 } 717 } 718 ] 719} 720</script>
720 721
722<script> 723 $(window).trigger("wvcfe:globalenhancedadvertsinit", [event, EnhancedAdvertisingConfig]); 724 (function(w, d) { 725 if(window.NodeList && !NodeList.prototype.forEach) { 726 NodeList.prototype.forEach = Array.prototype.forEach; 727 } 728 d.addEventListener('DOMContentLoaded', function(event) { 729 if(EnhancedAdvertisingConfig.Slots) { 730 var enhAdDebug = false; 731 if( localStorage.getItem('enh-ads-debug') == 'true' ) enhAdDebug = true; 732 var sp = 'story-inlinecontent-placeholder'; 733 var supportedTypes = ['gamadvert', 'customcontent']; 734 var supportedPositions = ['inline', 'preferright', 'right']; 735 var isDesktopResolution = w.matchMedia("screen and (min-width: 1023px)").matches; 736 var isStoryFullLayout = d.body.classList.contains('story-full-layout'); 737 var inlineCounter = 1; 738 var rhcCounter = 1; 739 var inlineAdCounter = 1; 740 var rhcAdCounter = 1; 741 var ticking = false; 742 $('#story.enhanced-advertising .storytext > div.webonly').each( function(){ 743 var t = $(this); 744 t.replaceWith( t.html() ); 745 }); 746 var storyCustomContentPlaceholders = d.querySelectorAll('#story.enhanced-advertising .storytext > *:not(script,style)'); 747 var maxRHCSlotsToFitIn = 0; 748 var matches = function(el, selector) { return (el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector).call(el, selector); }; 749 var getClosestParent = function(elem, selector) { 750 for(; elem && elem !== d; elem = elem.parentNode) { 751 if(matches(elem, selector)) { 752 return elem; 753 } 754 } 755 return null; 756 }; 757 758 var storyType = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryTypeCode && el.StoryTypeCode != 'null'; }).map(function(el) { return 'StoryType-' + el.StoryTypeCode; }).join('') : ''; 759 var storyFormat = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryFormatCode && el.StoryFormatCode != 'null'; }).map(function(el) { return 'StoryFormat-' + el.StoryFormatCode; }).join('') : ''; 760 var storyLayout = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryLayoutCode && el.StoryLayoutCode != 'null'; }).map(function(el) { return 'StoryLayout-' + el.StoryLayoutCode; }).join('') : ''; 761 762 //PWVD-780 763 var storyWidth = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryWidth && el.StoryWidth != 'null'; }).map(function(el) { return 'StoryWidth-' + el.StoryWidth; }).join('') : ''; 764 765 var storyFullNavPath = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryFullNavPath && el.StoryFullNavPath != 'null'; }).map(function(el) { return el.StoryFullNavPath; }).join('').split('|').filter(function(el) { return el && el != 'null'; }).join('-') : ''; 766 var storyCategoriesCodes = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryCategoriesCodes && el.StoryCategoriesCodes != 'null'; }).map(function(el) { return el.StoryCategoriesCodes; }).join('').split('|').filter(function(el) { return el && el != 'null'; }).map(function(el) { return 'StoryCategoriesCodes-' + el; }) : []; 767 var storyID = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryID && el.StoryID != 'null'; }).map(function(el) { return 'StoryID-' + el.StoryID; }).filter(function(el) { return el && el != 'null' && el != 'StoryID-'; }).join('') : ''; 768 storyFullNavPath = (storyFullNavPath ? 'StoryFullNavPath-' + storyFullNavPath : ''); 769 var allDataLayerFilters = storyCategoriesCodes.concat([storyType, storyFormat, storyLayout, storyWidth, storyFullNavPath, storyID]).map(function(m) { return m.toLowerCase(); }); 770 771 EnhancedAdvertisingConfig.RHCMinHeightForSlotInsert = (EnhancedAdvertisingConfig.RHCMinHeightForSlotInsert || 800); 772 EnhancedAdvertisingConfig.RHCMinHeightForStickyAd = (EnhancedAdvertisingConfig.RHCMinHeightForStickyAd || 250); 773 774 if('Overrides' in EnhancedAdvertisingConfig) { 775 if(EnhancedAdvertisingConfig.Overrides) { 776 var overrides = EnhancedAdvertisingConfig.Overrides; 777 var andOperator = function() { 778 return (override.Conditions.toLowerCase().split(',').filter(function(el) { return el && el; }).every(function(el) { return allDataLayerFilters.indexOf(el) != -1; })); 779 }; 780 var orOperator = function(el) { 781 return (override.Conditions.toLowerCase().split(',').filter(function(el) { return el && el; }).some(function(el) { return allDataLayerFilters.indexOf(el) != -1; })); 782 }; 783 for(var i = 0, iL = overrides.length; i < iL; i++) { 784 var override = overrides[i];
785 var operatorFilter; 786 if(override.Operator && override.Operator.toLowerCase() == 'and') { 787 operatorFilter = andOperator; 788 } 789 else { 790 operatorFilter = orOperator; 791 } 792 if(operatorFilter()) { 793 if('Settings' in override) { 794 if(override.Settings) { 795 var settings = override.Settings; 796 if('AddGroupsAll' in settings && settings.AddGroupsAll && isString(settings.AddGroupsAll)) { 797 if(settings.AddGroupsAll.toLowerCase().toLowerCase().indexOf('[all]') != -1) { 798 EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsAll = '[all]'; 799 } 800 else { 801 EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsAll += ',' + settings.AddGroupsAll.toLowerCase(); 802 } 803 } 804 if('AddGroupsInline' in settings && settings.AddGroupsInline && isString(settings.AddGroupsInline)) { 805 if(settings.AddGroupsInline.toLowerCase().toLowerCase().indexOf('[all]') != -1) { 806 EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsInline = '[all]'; 807 } 808 else { 809 EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsInline += ',' + settings.AddGroupsInline.toLowerCase(); 810 } 811 } 812 if('AddGroupsRHC' in settings && settings.AddGroupsRHC && isString(settings.AddGroupsRHC)) { 813 if(settings.AddGroupsRHC.toLowerCase().toLowerCase().indexOf('[all]') != -1) { 814 EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsRHC = '[all]'; 815 } 816 else { 817 EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsRHC += ',' + settings.AddGroupsRHC.toLowerCase(); 818 } 819 } 820 if('RemoveGroupsAll' in settings && settings.RemoveGroupsAll && isString(settings.RemoveGroupsAll)) { 821 if(settings.RemoveGroupsAll.toLowerCase().toLowerCase().indexOf('[all]') != -1) { 822 EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsAll = '[all]'; 823 } 824 else { 825 EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsAll += ',' + settings.RemoveGroupsAll.toLowerCase(); 826 } 827 } 828 if('RemoveGroupsInline' in settings && settings.RemoveGroupsInline && isString(settings.RemoveGroupsInline)) { 829 if(settings.RemoveGroupsInline.toLowerCase().toLowerCase().indexOf('[all]') != -1) { 830 EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsInline = '[all]'; 831 } 832 else { 833 EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsInline += ',' + settings.RemoveGroupsInline.toLowerCase(); 834 } 835 } 836 if('RemoveGroupsRHC' in settings && settings.RemoveGroupsRHC && isString(settings.RemoveGroupsRHC)) { 837 if(settings.RemoveGroupsRHC.toLowerCase().toLowerCase().indexOf('[all]') != -1) { 838 EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsRHC = '[all]'; 839 } 840 else { 841 EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsRHC += ',' + settings.RemoveGroupsRHC.toLowerCase(); 842 } 843 } 844 if('Repeat' in settings && isBoolean(settings.Repeat)) { 845 EnhancedAdvertisingConfig.StoryDynamicSlotsRepeat = settings.Repeat; 846 } 847 if('DesktopMaxInlineSlots' in settings && isNumberPositiveOrZero(settings.DesktopMaxInlineSlots)) { 848 EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMaxInlineSlots = settings.DesktopMaxInlineSlots; 849 } 850 if('MobileMaxInlineSlots' in settings && isNumberPositiveOrZero(settings.MobileMaxInlineSlots)) { 851 EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMaxInlineSlots = settings.MobileMaxInlineSlots; 852 } 853 if('DesktopMinRHCSlots' in settings && isNumberPositiveOrZero(settings.DesktopMinRHCSlots)) { 854 EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMinRHCSlots = settings.DesktopMinRHCSlots; 855 } 856 if('MobileMinRHCSlots' in settings && isNumberPositiveOrZero(settings.MobileMinRHCSlots)) { 857 EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMinRHCSlots = settings.MobileMinRHCSlots; 858 } 859 if('DesktopMaxRHCSlots' in settings && isNumberPositiveOrZero(settings.DesktopMaxRHCSlots)) { 860 EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMaxRHCSlots = settings.DesktopMaxRHCSlots; 861 } 862 if('MobileMaxRHCSlots' in settings && isNumberPositiveOrZero(settings.MobileMaxRHCSlots)) { 863 EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMaxRHCSlots = settings.MobileMaxRHCSlots; 864 } 865 if('DesktopElementSpacingFirst' in settings && isNumberPositiveOrZero(settings.DesktopElementSpacingFirst)) { 866 EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopElementSpacingFirst = settings.DesktopElementSpacingFirst; 867 } 868 if('MobileElementSpacingFirst' in settings && isNumberPositiveOrZero(settings.MobileElementSpacingFirst)) { 869 EnhancedAdvertisingConfig.StoryDynamicSlotsMobileElementSpacingFirst = settings.MobileElementSpacingFirst; 870 } 871 if('DesktopElementSpacing' in settings && isNumberPositive(settings.DesktopElementSpacing)) { 872 EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopElementSpacing = settings.DesktopElementSpacing; 873 } 874 if('MobileElementSpacing' in settings && isNumberPositive(settings.MobileElementSpacing)) { 875 EnhancedAdvertisingConfig.StoryDynamicSlotsMobileElementSpacing = settings.MobileElementSpacing; 876 } 877 if('RHCMinHeightForSlotInsert' in settings && settings.RHCMinHeightForSlotInsert && isNumberPositive(settings.RHCMinHeightForSlotInsert)) { 878 EnhancedAdvertisingConfig.RHCMinHeightForSlotInsert = settings.RHCMinHeightForSlotInsert; 879 } 880 if('RHCMinHeightForStickyAd' in settings && settings.RHCMinHeightForStickyAd && isNumberPositive(settings.RHCMinHeightForStickyAd)) { 881 EnhancedAdvertisingConfig.RHCMinHeightForStickyAd = settings.RHCMinHeightForStickyAd; 882 } 883 if('CollapseEmptyDivs' in settings && isBoolean(settings.CollapseEmptyDivs)) { 884 EnhancedAdvertisingConfig.CollapseEmptyDivs = settings.CollapseEmptyDivs; 885 } 886 } 887 } 888 } 889 } 890 } 891 } 892 893 var paragraphThreshold = isDesktopResolution ? EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopElementSpacing : EnhancedAdvertisingConfig.StoryDynamicSlotsMobileElementSpacing; 894 var paragraphFirstThreshold = isDesktopResolution ? EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopElementSpacingFirst : EnhancedAdvertisingConfig.StoryDynamicSlotsMobileElementSpacingFirst; 895 var maxInlineSlots = isDesktopResolution ? EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMaxInlineSlots : EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMaxInlineSlots; 896 var minRHCSlots = isDesktopResolution ? EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMinRHCSlots : EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMinRHCSlots; 897 var maxRHCSlots = isDesktopResolution ? EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMaxRHCSlots : EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMaxRHCSlots; 898 899 var allAddGroups = (EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsAll ? EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsAll : "").split(',').filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); 900 var allAddInlineGroups = [].concat(allAddGroups, (EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsInline ? EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsInline : "").split(',')).map(function(m) { return m.toLowerCase(); }).filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); 901 var allAddRHCGroups = [].concat(allAddGroups, (EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsRHC ? EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsRHC : "").split(',')).map(function(m) { return m.toLowerCase(); }).filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); 902 903 var allRemoveGroups = (EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsAll ? EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsAll : "").split(',').filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); 904 var allRemoveInlineGroups = [].concat(allRemoveGroups, (EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsInline ? EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsInline : "").split(',')).map(function(m) { return m.toLowerCase(); }).filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); 905 var allRemoveRHCGroups = [].concat(allRemoveGroups, (EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsRHC ? EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsRHC : "").split(',')).map(function(m) { return m.toLowerCase(); }).filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); 906 907 EnhancedAdvertisingConfig.Slots = EnhancedAdvertisingConfig.Slots.map(function(x, i) { 908 x.Used = false; 909 x.Index = i; 910 if('Type' in x) { 911 if(supportedTypes.indexOf(x.Type.toString().toLowerCase()) != -1) { 912 x.Type = x.Type.toString().toLowerCase(); 913 } 914 else { 915 x.Type = 'customcontent'; 916 } 917 } 918 else { 919 x.Type = 'customcontent'; 920 } 921 if('Position' in x) { 922 if(supportedPositions.indexOf(x.Position.toString().toLowerCase()) != -1) { 923 x.Position = x.Position.toString().toLowerCase(); 924 } 925 else { 926 x.Position = 'inline'; 927 } 928 } 929 else { 930 x.Position = 'inline'; 931 } 932 if('CSSClass' in x) { 933 x.CSSClass = x.CSSClass.toString().split(' ').join(',').split(',').filter(function(e) { return e && e; }).join(' '); 934 } 935 else { 936 x.CSSClass = ''; 937 } 938 if('Group' in x) { 939 x.Group = x.Group.toString().split(' ').join(',').split(',').filter(function(e) { return e && e; }).join(','); 940 } 941 else { 942 x.Group = ''; 943 } 944 if('Sticky' in x) { 945 if(x.Sticky.toString().toLowerCase() == 'true') { 946 x.Sticky = true; 947 } 948 else { 949 x.Sticky = false; 950 } 951 } 952 else { 953 x.Sticky = false; 954 } 955 if('InsertIfNoRHCSpace' in x) { 956 if(x.InsertIfNoRHCSpace.toString().toLowerCase() == 'true') { 957 x.InsertIfNoRHCSpace = true; 958 } 959 else { 960 x.InsertIfNoRHCSpace = false; 961 } 962 } 963 else { 964 x.InsertIfNoRHCSpace = false; 965 } 966 if('MinHeight' in x) { 967 x.MinHeight = parseInt(x.MinHeight.toString()); 968 } 969 else { 970 x.MinHeight = 0; 971 } 972 if('NoBackfill' in x) { 973 if(x.NoBackfill.toString().toLowerCase() == 'true') { 974 x.NoBackfill = true; 975 } 976 else { 977 x.NoBackfill = false; 978 } 979 } 980 else { 981 x.NoBackfill = false; 982 } 983 if('Refresh' in x) { 984 if(x.Refresh.toString().toLowerCase() == 'true') { 985 x.Refresh = true; 986 } 987 else { 988 x.Refresh = false; 989 } 990 } 991 else { 992 x.Refresh = false; 993 } 994 if('ExtraHTML' in x) { 995 if(x.ExtraHTML.toString()) { 996 x.ExtraHTML = x.ExtraHTML.toString(); 997 } 998 else { 999 x.ExtraHTML = ''; 1000 } 1001 } 1002 else { 1003 x.ExtraHTML = ''; 1004 } 1005 if('CustomEventName' in x) { 1006 if(x.CustomEventName.toString()) { 1007 x.CustomEventName = x.CustomEventName.toString(); 1008 } 1009 else { 1010 x.CustomEventName = ''; 1011 } 1012 } 1013 else { 1014 x.CustomEventName = ''; 1015 } 1016 if('Javascript' in x) { 1017 if(x.Javascript) { 1018 if(typeof x.Javascript === 'function') { 1019 x.Javascript = x.Javascript; 1020 } 1021 } 1022 else { 1023 x.Javascript = ''; 1024 } 1025 } 1026 else { 1027 x.Javascript = ''; 1028 } 1029 if('AdUnit' in x) { 1030 if(x.AdUnit.toString()) { 1031 x.AdUnit = x.AdUnit.toString(); 1032 } 1033 else { 1034 x.AdUnit = ''; 1035 } 1036 } 1037 else { 1038 x.AdUnit = ''; 1039 } 1040 if('AdUnitSizesInlineMobile' in x) { 1041 x.AdUnitSizesInlineMobile = x.AdUnitSizesInlineMobile; 1042 } else if('GAMAdUnitSizesInlineMobileDefault' in EnhancedAdvertisingConfig) { 1043 x.AdUnitSizesInlineMobile = EnhancedAdvertisingConfig.GAMAdUnitSizesInlineMobileDefault 1044 } 1045 if('AdUnitSizesInlineDesktop' in x) { 1046 x.AdUnitSizesInlineDesktop = x.AdUnitSizesInlineDesktop; 1047 } else if('GAMAdUnitSizesInlineDesktopDefault' in EnhancedAdvertisingConfig) {
1048 x.AdUnitSizesInlineDesktop = EnhancedAdvertisingConfig.GAMAdUnitSizesInlineDesktopDefault; 1049 } 1050 if('AdUnitSizesRHC' in x) { 1051 x.AdUnitSizesRHC = x.AdUnitSizesRHC; 1052 } else if('GAMAdUnitSizesRHCDefault' in EnhancedAdvertisingConfig) { 1053 x.AdUnitSizesRHC = EnhancedAdvertisingConfig.GAMAdUnitSizesRHCDefault; 1054 } 1055 if('RefreshDelaySeconds' in x) { 1056 x.RefreshDelaySeconds = parseInt(x.RefreshDelaySeconds.toString(), 10); 1057 } 1058 else { 1059 x.RefreshDelaySeconds = 30; 1060 } 1061 1062 return x; 1063 }); 1064 1065 var storyInlineContent = EnhancedAdvertisingConfig.Slots.filter(function(el) { return el && (el.Position.toLowerCase() == "inline" || ((!isDesktopResolution || isStoryFullLayout) && el.Position.toLowerCase() == "preferright")) && (el.Group || "").split(',').filter(function(subel) { return subel && subel != undefined; }).map(function(subel) { return subel.toLowerCase(); }).some(function(subel) { return allAddInlineGroups.indexOf(subel) != -1 || allAddInlineGroups.indexOf('[all]') != -1; }) && !(el.Group || "").split(',').filter(function(subel) { return subel && subel != undefined; }).map(function(subel) { return subel.toLowerCase(); }).some(function(subel) { return allRemoveInlineGroups.indexOf(subel) != -1 || allRemoveInlineGroups.indexOf('[all]') != -1; }); }); 1066 var storyRHCContent = isDesktopResolution ? EnhancedAdvertisingConfig.Slots.filter(function(el) { return el && (el.Position.toLowerCase() == "right" || (isDesktopResolution && !isStoryFullLayout && el.Position.toLowerCase() == "preferright")) && (el.Group || "").split(',').filter(function(subel) { return subel && subel != undefined; }).map(function(subel) { return subel.toLowerCase(); }).some(function(subel) { return allAddRHCGroups.indexOf(subel) != -1 || allAddRHCGroups.indexOf('[all]') != -1; }) && !(el.Group || "").split(',').filter(function(subel) { return subel && subel != undefined; }).map(function(subel) { return subel.toLowerCase(); }).some(function(subel) { return allRemoveRHCGroups.indexOf(subel) != -1 || allRemoveRHCGroups.indexOf('[all]') != -1; }); }) : []; 1067 storyInlineContent.forEach( (c, ix) => c.inlineIndex = ix ); 1068 storyRHCContent.forEach( (c, ix) => c.rhcIndex = ix ); 1069 var googletag = w.googletag || {}; 1070 googletag.cmd = googletag.cmd || []; 1071 1072 if( isNumberPositive(maxInlineSlots) ){ //PWVD-781 1073 for(var tmpCounter = 0, i = 0, eL = storyCustomContentPlaceholders.length, adThresholdCounter = 1; i < eL; i++) { 1074 var currentIsPara = matches(storyCustomContentPlaceholders[i], 'p:not([class])'); 1075 1076 var prevIsPara = ( i == 0) || matches(storyCustomContentPlaceholders[i - 1], 'p:not([class])'); //This should also be true for the first paragraph, even though there is no previous one) 1077 var nextIsPara = ( i+1 < eL) && matches(storyCustomContentPlaceholders[i + 1], 'p:not([class])'); 1078 var nextOrPreviousIsPara = (paragraphFirstThreshold == 0) ? prevIsPara : nextIsPara; //PWVD-1229: Should always insert slot between paragraphs - check preceding element if adding slot BEFORE, otherwise next 1079 1080 if( currentIsPara && !nextOrPreviousIsPara ){ //PWVD-897 - count paragraphs followed by any other element 1081 if(adThresholdCounter < (tmpCounter == 0 ? paragraphFirstThreshold : paragraphThreshold)) { 1082 adThresholdCounter++; 1083 continue; 1084 } 1085 } 1086 else if( currentIsPara && nextOrPreviousIsPara ) { 1087 if(adThresholdCounter < (tmpCounter == 0 ? paragraphFirstThreshold : paragraphThreshold)) { 1088 adThresholdCounter++; 1089 continue; 1090 } 1091 tmpCounter++; 1092 adThresholdCounter = 1; 1093 1094 var paraContent = storyCustomContentPlaceholders[i].outerHTML; 1095 var slotContent = `<div class="story-inlinecontent-placeholder story-inlinecontent-placeholder-init item-notin-viewport" data-storyinlinecontainer="${tmpCounter}">` + 1096 `<div class="story-inlinecontent-placeholder-inner" data-id="story-inline-item-${tmpCounter}" data-storyinlineitem="${tmpCounter}"></div></div>`; 1097 1098 if(paragraphFirstThreshold == 0) //PWVD-1229: Ad slot inserted BEFORE first paragraph of story if StoryDynamicSlotsDesktopElementSpacingFirst in config is zero 1099 storyCustomContentPlaceholders[i].outerHTML = slotContent + paraContent; 1100 else //Placeholder AFTER current paragraph (default previous behaviour) 1101 storyCustomContentPlaceholders[i].outerHTML = paraContent + slotContent; 1102 1103 if(tmpCounter >= maxInlineSlots && maxInlineSlots) break; 1104 } 1105 } 1106 } 1107 1108 if(d.querySelector('#story.enhanced-advertising:not(.story-full-layout) #rightcolumn_sleeve')) { 1109 if(!(d.body.id == "story" || d.body.id == "story_custom") && !d.querySelector('.storytext div.table-full:not(.initialized)')) { 1110 w.addEventListener("abacus:storytexttablefull:finished", function(e) { 1111 adjustRHCHeightAndInitialAds(); 1112 }, true); 1113 } 1114 else { 1115 adjustRHCHeightAndInitialAds(); 1116 } 1117 } 1118 1119 if('IntersectionObserver' in w && 'IntersectionObserverEntry' in w && 'intersectionRatio' in w.IntersectionObserverEntry.prototype) { 1120 d.querySelectorAll('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init').forEach(function(el) { 1121 if(el) { 1122 var inlineAdsObserver = new IntersectionObserver(function(entries) { 1123 return inlineAdsObserverCallback(entries); 1124 }, { root: null, rootMargin: "50px 0px 50px 0px", threshold: [0, 0.01, 0.99, 1] }); 1125 inlineAdsObserver.observe(el); 1126 } 1127 }); 1128 1129 var inlineAdsObserverCallback = function(entries) {
1130 return entries.forEach(function(entry, i) { 1131 if(entry.isIntersecting) { 1132 entry.target.classList.remove('item-notin-viewport'); 1133 entry.target.classList.add('item-in-viewport'); 1134 } 1135 else { 1136 entry.target.classList.remove('item-in-viewport'); 1137 entry.target.classList.add('item-notin-viewport'); 1138 } 1139 }); 1140 }; 1141 1142 d.querySelectorAll('.storytext-end, #rhcreflow-extra-end').forEach(function(el) { 1143 if(el) { 1144 var adsInViewportObserver = new IntersectionObserver(function(entries) { 1145 return adsInViewportObserverCallback(entries); 1146 }, { root: null, rootMargin: "0px 0px 200px 0px", threshold: [1] }); 1147 adsInViewportObserver.observe(el); 1148 } 1149 }); 1150 1151 var adsInViewportObserverCallback = function(entries) { 1152 return entries.forEach(function(entry, i) { 1153 if(entry.isIntersecting) { 1154 if(entry.target.classList.contains('storytext-end') && d.body.classList.contains('enhanced-advertising-inline-init')) { 1155 d.body.classList.add('enhanced-advertising-storytext-endreached'); 1156 } 1157 // RHC is empty at load time so it always fires as in viewport, need to check whether rhc ads slots already init 1158 if(entry.target.classList.contains('rhcreflow-extra-end') && d.body.classList.contains('enhanced-advertising-rhc-init')) { 1159 d.body.classList.add('enhanced-advertising-rhc-endreached'); 1160 } 1161 1162 /* 1163 if(entry.target.id === 'rhcreflow-extra'){ //Fix for issue when RHC is not in initial viewport 1164 if( location.host.indexOf('abasoftaws.co.uk') > 0 ) console.log('New observer callback'); 1165 readjusRHCHeight(); 1166 } 1167 */ 1168 } 1169 }); 1170 }; 1171 } 1172 1173 var inlineEl = d.querySelector('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init:not(.story-inlinecontent-placeholder-completed):not(.story-inlinecontent-placeholder-processing)'); 1174 if(inlineEl) { 1175 googletag.cmd = googletag.cmd || []; 1176 googletag.cmd.push(function() { 1177 d.body.classList.add('enhanced-advertising-inline-init'); 1178 insertInlineSlot(inlineEl); 1179 1180 console.log('Init inline ad slot load'); 1181 }); 1182 } 1183 1184 function slotRender(event){ 1185 var el, slot = event.slot, slotId = slot.getSlotElementId(); 1186 1187 if(enhAdDebug) console.log('Slot render: ' + slotId); 1188 1189 if(slotId == 'custom-inline'){ 1190 el = document.querySelector(`div.story-inlinecontent-placeholder-inner[data-id="story-inline-item-${event.dataId}"]`); //Get inline slot (does not have ID) 1191 //if(!el) 1192 // el = document.querySelector(`div.story-inlinecontent-placeholder-inner[data-id="story-inline-item-${event.inlineIndex+1}"]`); 1193 } 1194 else 1195 el = d.getElementById(slotId); 1196 1197 if(el) { 1198 var minHeight = 0; 1199 var parentInlineNode = getClosestParent(el, '.story-inlinecontent-placeholder'); 1200 var parentRHCNode = getClosestParent(el, '.story-rhccontent-placeholder'); 1201 if(parentInlineNode || parentRHCNode) { 1202 var classList = el.classList; 1203 1204 if(parentInlineNode) { 1205 parentInlineNode.classList.add('story-inlinecontent-placeholder-ad'); 1206 var index = parseInt(parentInlineNode.hasAttribute('data-index') ? parentInlineNode.getAttribute('data-index') : '0', 10); 1207 if(!event.isEmpty) { 1208 classList.add('ad'); 1209 classList.add('mob-ad-50'); 1210 classList.add('ad-story-inline'); 1211 classList.add('ad-story-inline-notempty'); 1212 1213 parentInlineNode.classList.add('story-inlinecontent-placeholder-ad-size-' + event.size.join('x')); 1214 1215 parentInlineNode.setAttribute('data-slot', slot.getAdUnitPath()); 1216 1217 var currentInlineSlot = storyInlineContent.filter(function(e) { return e.Index == index; }); 1218 if(currentInlineSlot.length) { 1219 minHeight = currentInlineSlot[0].MinHeight; 1220 if(currentInlineSlot[0].Repeat == false) { 1221 currentInlineSlot[0].Used = true; 1222 } 1223 } 1224 else { 1225 console.log('Slot with index [data-index="' + index + '"] was not found'); 1226 } 1227 parentInlineNode.classList.add('story-inlinecontent-placeholder-finished'); 1228 1229 insertInlineSlot(d.querySelector('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init:not(.story-inlinecontent-processing)')); 1230 } 1231 else { 1232 classList.add('ad-story-inline-isempty'); 1233 1234 var currentInlineSlot = storyInlineContent.filter(function(e) { return e.Index == index; }); 1235 if(currentInlineSlot.length) { 1236 minHeight = currentInlineSlot[0].MinHeight; 1237 currentInlineSlot[0].Used = true; 1238 } 1239 else { 1240 console.log('Slot with index [data-index="' + index + '"] was not found'); 1241 } 1242 1243 if(parentInlineNode && parentInlineNode.hasAttribute('data-nobackfill')) { 1244 if(parentInlineNode.getAttribute('data-nobackfill') == '1') { 1245 updateInlinePlaceholderClasses(parentInlineNode, event.isEmpty, minHeight); 1246 if(!storyInlineContent.some(function(el) { return el.Used == false; })) { 1247 finalizeRemainingEmptyInlineSlotContainers(parentInlineNode.classList, true); 1248 } 1249 else { 1250 insertInlineSlot(d.querySelector('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init:not(.story-inlinecontent-processing)')); 1251 }
1252 initRHCHeightCalc(); 1253 return; 1254 } 1255 } 1256 // Move to next from the list 1257 if( storyInlineContent.some( function(e){ return e.Used == false; } ) ) { 1258 if(enhAdDebug) console.log('slotRender: parentInlineNode: Move to next from the list') 1259 var adRetryCssClass = 'ad-story-inline-retry'; 1260 var nextInlineSlotList = storyInlineContent.filter(function(e) { return e.Index > index && e.Used == false; }); 1261 if(!nextInlineSlotList.length) { 1262 // select repeatable ads 1263 nextInlineSlotList = storyInlineContent.filter(function(e) { return e.Used == false && e.Index > index && e.Repeat == true; }); 1264 if(!nextInlineSlotList.length) { 1265 // if no repeatable ads by indexed order then start from the beginning or just pick any existing 1266 nextInlineSlotList = storyInlineContent.filter(function(e) { return e.Used == false && e.Repeat == true; }); 1267 if(!nextInlineSlotList.length) { 1268 // no more ads to add 1269 d.body.classList.add('enhanced-advertising-inline-runoutofslots'); 1270 1271 finalizeRemainingEmptyInlineSlotContainers(parentInlineNode.classList, true); 1272 1273 updateInlinePlaceholderClasses(parentInlineNode, event.isEmpty, minHeight); 1274 1275 initRHCHeightCalc(); 1276 1277 return; 1278 } 1279 } 1280 } 1281 var mapInlineAdItem = nextInlineSlotList[0]; 1282 var refresh = EnhancedAdvertisingConfig.Refresh; 1283 1284 googletag.destroySlots([slot]); 1285 if(mapInlineAdItem.Refresh) { 1286 refresh = mapInlineAdItem.Refresh; 1287 } 1288 if(mapInlineAdItem.Repeat) { 1289 parentInlineNode.classList.remove('story-inlinecontent-placeholder-repeat-false'); 1290 parentInlineNode.classList.add('story-inlinecontent-placeholder-repeat-true'); 1291 } 1292 else { 1293 parentInlineNode.classList.remove('story-inlinecontent-placeholder-repeat-true'); 1294 parentInlineNode.classList.add('story-inlinecontent-placeholder-repeat-false'); 1295 } 1296 var mapInlineAdItemSlot = googletag.defineSlot(mapInlineAdItem.AdUnit, isDesktopResolution ? mapInlineAdItem.AdUnitSizesInlineDesktop : mapInlineAdItem.AdUnitSizesInlineMobile, slotId); 1297 if(mapInlineAdItemSlot) { 1298 mapInlineAdItemSlot.defineSizeMapping(googletag.sizeMapping().build()).setTargeting('refresh', (refresh ? 'true' : 'false')).setTargeting('refreshdelayseconds', mapInlineAdItem.RefreshDelaySeconds || (isDesktopResolution ? EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultDesktop : Enh
1298ancedAdvertisingConfig.RefreshDelaySecondsDefaultMobile)).setCollapseEmptyDiv(EnhancedAdvertisingConfig.CollapseEmptyDivs, false).addService(googletag.pubads()); 1299 } 1300 else { 1301 console.warn('Something wrong with inline ad slot \'' + slotId + '\', size(s) \'' + (isDesktopResolution ? mapInlineAdItem.AdUnitSizesInlineDesktop : mapInlineAdItem.AdUnitSizesInlineMobile).join('x') + '\', path \'' + mapInlineAdItem.AdUnit + '\''); 1302 } 1303 googletag.display(slotId); 1304 el.classList.add(adRetryCssClass); 1305 parentInlineNode.setAttribute('data-index', mapInlineAdItem.Index); 1306 if(mapInlineAdItem.ExtraHTML) { 1307 var extraHTMLEl = parentInlineNode.querySelector('.story-inlinecontent-placeholder-ad-extrahtml'); 1308 if(extraHTMLEl) { 1309 extraHTMLEl.innerHTML = mapInlineAdItem.ExtraHTML; 1310 } 1311 } 1312 else { 1313 var extraHTMLEl = parentInlineNode.querySelector('.story-inlinecontent-placeholder-ad-extrahtml'); 1314 if(extraHTMLEl) { 1315 extraHTMLEl.innerHTML = ''; 1316 } 1317 } 1318 } 1319 else { // no slots to add.. 1320 finalizeRemainingEmptyInlineSlotContainers(parentInlineNode.classList, true); 1321 } 1322 } 1323 } 1324 else if(parentRHCNode) { 1325 parentRHCNode.classList.add('story-rhccontent-placeholder-ad'); 1326 var index = parseInt(parentRHCNode.hasAttribute('data-index') ? parentRHCNode.getAttribute('data-index') : '0', 10); 1327 if(!event.isEmpty) { 1328 classList.add('ad-rhc'); 1329 classList.add('ad-story-rhc'); 1330 classList.add('ad-story-rhc-notempty'); 1331 1332 parentRHCNode.classList.add('story-rhccontent-placeholder-ad-size-' + event.size.join('x')); 1333 1334 parentRHCNode.setAttribute('data-slot', slot.getAdUnitPath()); 1335 1336 var currentRHCSlot = storyRHCContent.filter(function(e) { return e.Index == index; }); 1337 if(currentRHCSlot.length) { 1338 minHeight = currentRHCSlot[0].MinHeight; 1339 if(currentRHCSlot[0].Repeat == false) { 1340 currentRHCSlot[0].Used = true; 1341 } 1342 if(currentRHCSlot[0].InsertIfNoRHCSpace) { 1343 currentRHCSlot[0].InsertIfNoRHCSpace = false; 1344 } 1345 } 1346 else { 1347 console.log('Slot with index [data-index="' + index + '"] was not found'); 1348 } 1349 1350 parentRHCNode.classList.remove('story-rhccontent-placeholder-isempty'); 1351 parentRHCNode.classList.remove('story-rhccontent-placeholder-notempty'); 1352 parentRHCNode.classList.add((event.isEmpty ? 'story-rhccontent-placeholder-isempty' : 'story-rhccontent-placeholder-notempty')); 1353 parentRHCNode.classList.add('story-rhccontent-placeholder-ad-completed'); 1354 1355 parentRHCNode.classList.add('story-rhccontent-placeholder-finished'); 1356 1357 var canAddRHC = isStoryTextTallerThanRHC(); 1358 1359 if( 1360 ( index > 0 && !d.body.classList.contains('enhanced-advertising-inline-completed') && parentRHCNode.classList.contains('story-rhccontent-placeholder-canbesticky') ) 1361 || 1362 ( canAddRHC.canAdd && parentRHCNode.classList.contains('story-rhccontent-placeholder-canbesticky') && canAddRHC.delta > EnhancedAdvertisingConfig.RHCMinHeightForStickyAd ) 1363 ){ 1364 parentRHCNode.classList.remove('story-rhccontent-placeholder-canbesticky'); 1365 parentRHCNode.classList.add('story-rhccontent-placeholder-sticky'); 1366 } 1367 } 1368 else { 1369 classList.add('ad-story-rhc-isempty'); 1370 1371 var currentRHCSlot = storyRHCContent.filter(function(e) { return e.Index == index; }); 1372 if(currentRHCSlot.length) { 1373 currentRHCSlot[0].Used = true; 1374 } 1375 else { 1376 console.log('Slot with index [data-index="' + index + '"] was not found'); 1377 } 1378 1379 if(parentRHCNode && parentRHCNode.hasAttribute('data-nobackfill')) { 1380 if(parentRHCNode.getAttribute('data-nobackfill') == '1') { 1381 updateRHCPlaceholderClasses(parentRHCNode, event.isEmpty); 1382 if(!storyRHCContent.some(function(el) { return el.Used == false; })) { 1383 d.body.classList.add('enhanced-advertising-rhc-runoutofslots'); 1384 finalizeRemainingEmptyRHCSlotContainers(parentRHCNode.classList, true); 1385 }
1386 initRHCHeightCalc(); 1387 return; 1388 } 1389 } 1390 // Move to next from the list 1391 if(enhAdDebug){ 1392 console.log('slotRender: parentRHCNode: storyRHCContent: index: ' + index); 1393 console.log(storyRHCContent); 1394 } 1395 if(storyRHCContent.some(function(e) { return e.Used == false; })) { 1396 var adRetryCssClass = 'ad-story-rhc-retry'; 1397 var nextRHCSlotList = storyRHCContent.filter(function(e) { 1398 if(enhAdDebug) console.log('%c Current index: ' + e.Index + ', slot data index: ' + index, 'color: #0C6') 1399 return e.Index > index && e.Used == false; 1400 }); 1401 if(enhAdDebug){ 1402 console.log('%c slotRender: parentRHCNode: Moved to next from the list', 'color: #06C'); 1403 console.log(nextRHCSlotList); 1404 } 1405 if(!nextRHCSlotList.length) { 1406 // select repeatable ads 1407 nextRHCSlotList = storyRHCContent.filter(function(e) { 1408 return e.Used == false && e.Index > index && e.Repeat == true; 1409 }); 1410 if(!nextRHCSlotList.length) { 1411 // if no repeatable ads by indexed order then start from the beginning or just pick any existing 1412 nextRHCSlotList = storyRHCContent.filter(function(e) { return e.Used == false && e.Repeat == true; }); 1413 if(!nextRHCSlotList.length) { 1414 // no more ads to add 1415 finalizeRemainingEmptyRHCSlotContainers(parentRHCNode.classList, false); 1416 1417 //updateRHCPlaceholderClasses(parentRHCNode, event.isEmpty, minHeight); 1418 updateRHCPlaceholderClasses(parentRHCNode, event.isEmpty); 1419 1420 initRHCHeightCalc(); 1421 1422 return; 1423 } 1424 } 1425 } 1426 var mapRHCAdItem = nextRHCSlotList[0]; 1427 var refresh = EnhancedAdvertisingConfig.Refresh; 1428 googletag.destroySlots([slot]); 1429 if(mapRHCAdItem.Refresh) { 1430 refresh = mapRHCAdItem.Refresh; 1431 } 1432 if(mapRHCAdItem.Repeat) { 1433 parentRHCNode.classList.remove('story-rhccontent-placeholder-repeat-false'); 1434 parentRHCNode.classList.add('story-rhccontent-placeholder-repeat-true'); 1435 } 1436 else { 1437 parentRHCNode.classList.remove('story-rhccontent-placeholder-repeat-true'); 1438 parentRHCNode.classList.add('story-rhccontent-placeholder-repeat-false'); 1439 } 1440 1441 if(mapRHCAdItem.Type == 'customcontent'){ //Custom content (RSCCS-540) 1442 if(enhAdDebug) console.log('Next RHC config item is custom content'); 1443 adjustRHCHeightAndInitialAds(); 1444 } 1445 else if(mapRHCAdItem.AdUnit){ //Google ad 1446 var mapInlineAdItemSlot = googletag.defineSlot(mapRHCAdItem.AdUnit, isDesktopResolution ? mapRHCAdItem.AdUnitSizesInlineDesktop : mapRHCAdItem.AdUnitSizesInlineMobile, slotId); 1447 if(mapInlineAdItemSlot) { 1448 mapInlineAdItemSlot.defineSizeMapping( 1449 googletag.sizeMapping().build() 1450 ).setTargeting( 1451 'refresh', (refresh ? 'true' : 'false') 1452 ).setTargeting( 1453 'refreshdelayseconds', mapRHCAdItem.RefreshDelaySeconds || (isDesktopResolution ? EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultDesktop : Enh
1453ancedAdvertisingConfig.RefreshDelaySecondsDefaultMobile) 1454 ).setCollapseEmptyDiv( 1455 EnhancedAdvertisingConfig.CollapseEmptyDivs, false 1456 ).addService( 1457 googletag.pubads() 1458 ); 1459 } 1460 else { 1461 console.warn('SlotRender: Something wrong with RHC ad slot \'' + slotId + '\', size(s) \'' + (isDesktopResolution ? mapRHCAdItem.AdUnitSizesInlineDesktop : mapRHCAdItem.AdUnitSizesInlineMobile).join('x') + '\', path \'' + mapRHCAdItem.AdUnit + '\''); 1462 } 1463 googletag.display(slotId); 1464 } 1465 1466 el.classList.add(adRetryCssClass); 1467 parentRHCNode.setAttribute('data-index', mapRHCAdItem.Index); 1468 if(mapRHCAdItem.ExtraHTML) { 1469 var extraHTMLEl = parentRHCNode.querySelector('.story-rhccontent-placeholder-ad-extrahtml'); 1470 if(extraHTMLEl) { 1471 extraHTMLEl.innerHTML = mapRHCAdItem.ExtraHTML; 1472 } 1473 } 1474 else { 1475 var extraHTMLEl = parentRHCNode.querySelector('.story-rhccontent-placeholder-ad-extrahtml'); 1476 if(extraHTMLEl) { 1477 extraHTMLEl.innerHTML = ''; 1478 } 1479 } 1480 } 1481 else { // no slots to add.. 1482 finalizeRemainingEmptyRHCSlotContainers(parentRHCNode.classList, false); 1483 } 1484 } 1485 } 1486 1487 if(parentInlineNode) { 1488 updateInlinePlaceholderClasses(parentInlineNode, event.isEmpty, minHeight); 1489 } 1490 else { 1491 //updateRHCPlaceholderClasses(parentRHCNode, event.isEmpty, minHeight); 1492 updateRHCPlaceholderClasses(parentRHCNode, event.isEmpty); 1493 } 1494 1495 } 1496 } 1497 initRHCHeightCalc(); 1498 } 1499 1500 googletag.cmd = googletag.cmd || []; 1501 googletag.cmd.push(function() { 1502 googletag.pubads().addEventListener('slotRequested', function(event) { 1503 var slot = event.slot; 1504 var el = d.getElementById(slot.getSlotElementId()); 1505 if(el) { 1506 var parentInlineNode = getClosestParent(el, '.story-inlinecontent-placeholder'); 1507 var parentRHCNode = getClosestParent(el, '.story-rhccontent-placeholder'); 1508 if(parentInlineNode || parentRHCNode) { 1509 if(parentInlineNode) { 1510 parentInlineNode.classList.add('story-inlinecontent-placeholder-ad-init'); 1511 } 1512 else { 1513 parentRHCNode.classList.add('story-rhccontent-placeholder-ad-init'); 1514 } 1515 } 1516 } 1517 }); 1518 1519 googletag.pubads().addEventListener('slotRenderEnded', function(event) { 1520 var sId = event.slot.getSlotElementId(); 1521 1522 if( enhAdDebug && sId.includes('story-rhcad') || sId.includes('story-inlinead') ){ 1523 console.log(`%c Slot RENDER END (${sId})`, 'color: #FE2ACA'); 1524 console.log(event); 1525 //loadOrRender(sId, 'render', event); 1526 } 1527 slotRender(event); 1528 }); 1529 1530 if(enhAdDebug){ //Track slot load events 1531 googletag.pubads().addEventListener('slotOnload', (evLoad) => { 1532 var sId = evLoad.slot.getSlotElementId(); 1533 1534 if( sId.includes('story-rhcad') || sId.includes('story-inlinead') ){ 1535 console.log(`%c Slot LOAD (${ evLoad.slot.getSlotElementId() })`, 'color: #C00;'); 1536 console.log(event); 1537 //loadOrRender(sId, 'load'); 1538 } 1539 }); 1540 } 1541 1542 googletag.pubads().addEventListener('slotVisibilityChanged', function(event) { 1543 var slot = event.slot; 1544 if(slot.getTargeting('refresh').indexOf('true') > -1 && event.inViewPercentage > 0) { 1545 var el = d.getElementById(slot.getSlotElementId()); 1546 var parentStoryInlineNode = getClosestParent(el, '.ad-story-inline'); 1547 var parentStoryRHCNode = getClosestParent(el, '.ad-story-rhc'); 1548 if(parentStoryInlineNode || parentStoryRHCNode) { 1549 if(parentStoryInlineNode) { 1550 var inlineEl = getClosestParent(el, '.story-inlinecontent-placeholder'); 1551 if(inlineEl) { 1552 if(inlineEl.hasAttribute('data-shouldrefresh')) { 1553 var shouldRefresh = inlineEl.getAttribute('data-shouldrefresh'); 1554 if(shouldRefresh && shouldRefresh == '1') { 1555 googletag.cmd.push(function() { 1556 googletag.pubads().refresh([slot], { changeCorrelator: false }); 1557 });
1558 var classList = parentStoryInlineNode.classList; 1559 var cssClassName = 'ad-story-inline-refreshed-'; 1560 var cssClassCounter = 1; 1561 1562 for(var i = 0, c = parentStoryInlineNode.className.split(' '), iL = c.length; i < iL; i++) { 1563 var v = c[i]; 1564 if(v.indexOf(cssClassName) != -1) { 1565 cssClassCounter = parseInt(v.split(cssClassName).join(''), 10) + 1; 1566 classList.remove(v); 1567 break; 1568 } 1569 } 1570 classList.add(cssClassName + cssClassCounter); 1571 classList.add('ad-story-inline-refreshed'); 1572 inlineEl.setAttribute('data-shouldrefresh', '0'); 1573 } 1574 } 1575 } 1576 } 1577 else { 1578 var rhcEl = getClosestParent(el, '.story-rhccontent-placeholder'); 1579 if(rhcEl) { 1580 if(rhcEl.hasAttribute('data-shouldrefresh')) { 1581 var shouldRefresh = rhcEl.getAttribute('data-shouldrefresh'); 1582 if(shouldRefresh && shouldRefresh == '1') { 1583 googletag.cmd.push(function() { 1584 googletag.pubads().refresh([slot], { changeCorrelator: false }); 1585 }); 1586 var classList = parentStoryRHCNode.classList; 1587 var cssClassName = 'ad-story-rhc-refreshed-'; 1588 var cssClassCounter = 1; 1589 1590 for(var i = 0, c = parentStoryRHCNode.className.split(' '), iL = c.length; i < iL; i++) { 1591 var v = c[i]; 1592 if(v.indexOf(cssClassName) != -1) { 1593 cssClassCounter = parseInt(v.split(cssClassName).join(''), 10) + 1; 1594 classList.remove(v); 1595 break; 1596 } 1597 } 1598 classList.add(cssClassName + cssClassCounter); 1599 classList.add('ad-story-rhc-refreshed'); 1600 rhcEl.setAttribute('data-shouldrefresh', '0'); 1601 } 1602 } 1603 } 1604 } 1605 } 1606 } 1607 }); 1608 1609 googletag.pubads().addEventListener('impressionViewable', function(event) { 1610 var slot = event.slot; 1611 if(slot.getTargeting('refresh').indexOf('true') > -1) { 1612 var refreshdelayseconds = slot.getTargeting('refreshdelayseconds').length ? parseInt(slot.getTargeting('refreshdelayseconds')[0], 10) : 0; 1613 if(refreshdelayseconds) { 1614 setTimeout(function() { 1615 var el = d.getElementById(slot.getSlotElementId()); 1616 var parentStoryInlineNode = getClosestParent(el, '.ad-story-inline'); 1617 var parentStoryRHCNode = getClosestParent(el, '.ad-story-rhc'); 1618 if(parentStoryInlineNode) { 1619 var inlineEl = getClosestParent(el, '.story-inlinecontent-placeholder'); 1620 if(inlineEl) { 1621 if(inlineEl.classList.contains('item-in-viewport')) { 1622 googletag.cmd.push(function() { 1623 googletag.pubads().refresh([slot], { changeCorrelator: false }); 1624 }); 1625 var classList = parentStoryInlineNode.classList; 1626 var cssClassName = 'ad-story-inline-refreshed-'; 1627 var cssClassCounter = 1; 1628 for(var i = 0, c = parentStoryInlineNode.className.split(' '), iL = c.length; i < iL; i++) { 1629 var v = c[i]; 1630 if(v.indexOf(cssClassName) != -1) { 1631 cssClassCounter = parseInt(v.split(cssClassName).join(''), 10) + 1; 1632 classList.remove(v); 1633 break; 1634 } 1635 } 1636 classList.add(cssClassName + cssClassCounter); 1637 inlineEl.setAttribute('data-shouldrefresh', '0'); 1638 } 1639 else { 1640 inlineEl.setAttribute('data-shouldrefresh', '1'); 1641 } 1642 } 1643 } else if(parentStoryRHCNode) { 1644 var rhcEl = getClosestParent(el, '.story-rhccontent-placeholder'); 1645 if(rhcEl) { 1646 if(rhcEl.classList.contains('item-in-viewport')) { 1647 googletag.cmd.push(function() { 1648 googletag.pubads().refresh([slot], { changeCorrelator: false }); 1649 }); 1650 var classList = parentStoryRHCNode.classList; 1651 var cssClassName = 'ad-story-rhc-refreshed-'; 1652 var cssClassCounter = 1; 1653 for(var i = 0, c = parentStoryRHCNode.className.split(' '), iL = c.length; i < iL; i++) { 1654 var v = c[i]; 1655 if(v.indexOf(cssClassName) != -1) { 1656 cssClassCounter = parseInt(v.split(cssClassName).join(''), 10) + 1; 1657 classList.remove(v); 1658 break; 1659 } 1660 } 1661 classList.add(cssClassName + cssClassCounter); 1662 rhcEl.setAttribute('data-shouldrefresh', '0'); 1663 } 1664 else { 1665 rhcEl.setAttribute('data-shouldrefresh', '1'); 1666 } 1667 } 1668 } 1669 1670 }, refreshdelayseconds * 1000); 1671 } 1672 else {
1673 console.log('Ad refresh delay in seconds is incorrect (slot: ' + slot.getSlotElementId() + '): ', refreshdelayseconds); 1674 } 1675 } 1676 }); 1677 }); 1678 1679 function isBoolean(n) { 1680 return !!n === n; 1681 } 1682 1683 function isNumber(n) { 1684 return +n === n; 1685 } 1686 1687 function isString(n) { 1688 return '' + n === n; 1689 } 1690 1691 function isNumberPositive(n) { 1692 return +n === n && n > 0; 1693 } 1694 1695 function isNumberPositiveOrZero(n) { 1696 return +n === n && n >= 0; 1697 } 1698 1699 function isArrayOfArrays(a) { 1700 return a.every(function(x) { return Array.isArray(x); }); 1701 } 1702 1703 function getAbsoluteHeight(element) { 1704 if(!element) return 0; 1705 var styles = w.getComputedStyle(element); 1706 var margin = parseFloat(styles['margin-top']) + parseFloat(styles['margin-bottom']); 1707 var minHeight = element.clientHeight; 1708 return Math.ceil(minHeight ? minHeight + margin : element.offsetHeight + margin); 1709 } 1710 1711 function updateRHCContainerState() { 1712 var classList = d.body.classList; 1713 if(!d.querySelectorAll('#rhcreflow-extra .story-rhccontent-placeholder.story-rhccontent-placeholder-completed').length) { 1714 d.body.classList.add('enhanced-advertising-rhc-empty'); 1715 } 1716 else { 1717 d.body.classList.remove('enhanced-advertising-rhc-empty'); 1718 } 1719 } 1720 1721 function insertRHCSlot(el) { 1722 if(el) { 1723 el.classList.add('story-rhccontent-placeholder-processing'); 1724 } 1725 if(el && storyRHCContent.some(function(e) { return e.Used == false; })) { 1726 var classList = el.classList; 1727 var placeholder = el.querySelector('[data-id]'); 1728 var tempFilteredRHCAds = storyRHCContent; 1729 if(placeholder) { 1730 var elemsIndexes = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed[data-index]'); 1731 var slotIndex = elemsIndexes.length ? parseInt(elemsIndexes[elemsIndexes.length - 1].getAttribute('data-index'), 10) : -1; 1732 tempFilteredRHCAds = storyRHCContent.filter(function(e) { return slotIndex < e.Index && e.Used == false; }); 1733 if(!tempFilteredRHCAds.length) { 1734 tempFilteredRHCAds = storyRHCContent.filter(function(e) { return e.Used == false && slotIndex < e.Index && e.Repeat == true; }); 1735 } 1736 if(!tempFilteredRHCAds.length) { 1737 tempFilteredRHCAds = storyRHCContent.filter(function(e) { return e.Used == false && e.Repeat == true; }); 1738 } 1739 if(!tempFilteredRHCAds.length) { 1740 finalizeRemainingEmptyRHCSlotContainers(classList, false); 1741 1742 return; 1743 } 1744 var mapRHCAdItem = tempFilteredRHCAds[0]; 1745 1746 classList.remove('story-rhccontent-placeholder-init'); 1747 classList.remove('story-rhccontent-placeholder-processing'); 1748 classList.add('story-rhccontent-placeholder-completed'); 1749 1750 if(mapRHCAdItem.CSSClass) { 1751 mapRHCAdItem.CSSClass.split(' ').forEach(function(elem) { 1752 if(elem) { 1753 classList.add(elem); 1754 } 1755 }); 1756 } 1757 if(mapRHCAdItem.Type == 'gamadvert') { 1758 if(placeholder) { 1759 var refresh = EnhancedAdvertisingConfig.Refresh; 1760 el.setAttribute('data-storycustomcontent', '0'); 1761 if(mapRHCAdItem.Sticky) { 1762 classList.add('story-rhccontent-placeholder-canbesticky'); 1763 placeholder.classList.add('sticky'); 1764 } 1765 if(mapRHCAdItem.NoBackfill) { 1766 el.setAttribute('data-nobackfill', '1'); 1767 } 1768 else { 1769 el.setAttribute('data-nobackfill', '0'); 1770 } 1771 if(mapRHCAdItem.Refresh) { 1772 refresh = mapRHCAdItem.Refresh; 1773 } 1774 1775 var mapRHCAdItemSlot = googletag.defineSlot(mapRHCAdItem.AdUnit, mapRHCAdItem.AdUnitSizesRHC, 'story-rhcad-' + rhcAdCounter); 1776 if(mapRHCAdItemSlot) { 1777 mapRHCAdItemSlot.defineSizeMapping(googletag.sizeMapping().build()).setTargeting('refresh', (refresh ? 'true' : 'false')).setTargeting('refreshdelayseconds', mapRHCAdItem.RefreshDelaySeconds || (isDesktopResolution ? EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultDesktop : Enh
1777ancedAdvertisingConfig.RefreshDelaySecondsDefaultMobile)).setCollapseEmptyDiv(EnhancedAdvertisingConfig.CollapseEmptyDivs, false).addService(googletag.pubads()); 1778 } 1779 else { 1780 console.warn('Something wrong with rhc ad slot \'' + 'story-rhcad-' + rhcAdCounter + '\', size(s) \'' + mapRHCAdItem.AdUnitSizesRHC.join('x') + '\', path \'' + mapRHCAdItem.AdUnit + '\''); 1781 } 1782 if(refresh) { 1783 el.setAttribute('data-shouldrefresh', '0'); 1784 classList.add('story-rhccontent-placeholder-refresh-true'); 1785 } 1786 else { 1787 classList.add('story-rhccontent-placeholder-refresh-false'); 1788 } 1789 1790 classList.add('story-rhccontent-placeholder-ad'); 1791 placeholder.id = 'story-rhcad-' + rhcAdCounter; 1792 placeholder.outerHTML = '<div class="story-rhccontent-placeholder-ad-extrahtml">' + mapRHCAdItem.ExtraHTML + '</div>' + placeholder.outerHTML; 1793 el.setAttribute('data-slot', mapRHCAdItem.AdUnit); 1794 googletag.display('story-rhcad-' + rhcAdCounter); 1795 $(w).trigger("wvcfe:storyrhcaditeminit", [$(el), $(placeholder), mapRHCAdItem, rhcAdCounter, rhcCounter, false, 'rhc', mapRHCAdItem.Type]); 1796 if(mapRHCAdItem.CustomEventName) { 1797 $(w).trigger(mapRHCAdItem.CustomEventName, [el, placeholder, mapRHCAdItem, rhcAdCounter, rhcCounter, false, 'rhc', mapRHCAdItem.Type]); 1798 } 1799 if(mapRHCAdItem.Javascript) { 1800 if(typeof mapRHCAdItem.Javascript === 'function') { 1801 mapRHCAdItem.Javascript.call(this, el, placeholder, mapRHCAdItem, rhcAdCounter, rhcCounter, false, 'rhc', mapRHCAdItem.Type); 1802 } 1803 } 1804 rhcAdCounter++; 1805 } 1806 } 1807 else if(mapRHCAdItem.Type == 'customcontent') { 1808 el.setAttribute('data-storycustomcontent', '1'); 1809 classList.add('story-rhccontent-placeholder-customcontent'); 1810 if(placeholder) { 1811 placeholder.innerHTML = mapRHCAdItem.HTML; 1812 classList.add('story-rhccontent-placeholder-notempty'); 1813 $(w).trigger("wvcfe:storyrhcitemajaxinit", [$(el), $(placeholder), mapRHCAdItem, rhcCounter, false, 'rhc', mapRHCAdItem.Type]); 1814 if(mapRHCAdItem.CustomEventName) { 1815 $(w).trigger(mapRHCAdItem.CustomEventName, [$(el), $(placeholder), mapRHCAdItem, rhcCounter, false, 'rhc', mapRHCAdItem.Type]); 1816 } 1817 if(mapRHCAdItem.Javascript) { 1818 if(typeof mapRHCAdItem.Javascript === 'function') { 1819 mapRHCAdItem.Javascript.call(this, el, placeholder, mapRHCAdItem, rhcCounter, false, 'rhc', mapRHCAdItem.Type); 1820 } 1821 } 1822 el.classList.add('story-rhccontent-placeholder-finished'); 1823 } 1824 } 1825 el.setAttribute('data-index', mapRHCAdItem.Index); 1826 rhcCounter++; 1827 } 1828 else { 1829 console.log('Missing placeholder: [data-id="story-rhc-item-' + rhcCounter + '"]'); 1830 } 1831 } else if(el) { // All slots are used, mark current slot placeholder and the rest ones as completed and used 1832 var classList = el.classList; 1833 finalizeRemainingEmptyRHCSlotContainers(classList, false); 1834 } 1835 else { 1836 console.log('Missing RHC element'); 1837 } 1838 } 1839 1840 function insertInlineSlot(el) { 1841 if(el) { 1842 el.classList.add('story-inlinecontent-placeholder-processing'); 1843 } 1844 if(el && storyInlineContent.some(function(e) { return e.Used == false; })) { 1845 var classList = el.classList; 1846 var placeholder = el.querySelector('[data-id]'); 1847 var tempFilteredInlineAds = storyInlineContent; 1848 if(placeholder) { 1849 var elemsIndexes = d.querySelectorAll('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-completed[data-index]'); 1850 var slotIndex = elemsIndexes.length ? parseInt(elemsIndexes[elemsIndexes.length - 1].getAttribute('data-index'), 10) : -1; 1851 tempFilteredInlineAds = storyInlineContent.filter(function(e){ 1852 return slotIndex < e.Index && e.Used == false; 1853 }); 1854 if(!tempFilteredInlineAds.length) { 1855 tempFilteredInlineAds = storyInlineContent.filter(function(e) { return e.Used == false && slotIndex < e.Index && e.Repeat == true; }); 1856 if(!tempFilteredInlineAds.length) { 1857 // start from the first repeatable ad index 1858 tempFilteredInlineAds = storyInlineContent.filter(function(e) { return e.Used
1858== false && e.Repeat == true; }); 1859 if(!tempFilteredInlineAds.length) { 1860 finalizeRemainingEmptyInlineSlotContainers(classList, true); 1861 1862 return; 1863 } 1864 } 1865 } 1866 var mapInlineAdItem = tempFilteredInlineAds[0]; 1867 1868 classList.remove('story-inlinecontent-placeholder-init'); 1869 classList.remove('story-inlinecontent-placeholder-processing'); 1870 classList.add('story-inlinecontent-placeholder-completed'); 1871 1872 if(mapInlineAdItem.CSSClass) { 1873 mapInlineAdItem.CSSClass.split(' ').forEach(function(elem) { 1874 if(elem) { 1875 classList.add(elem); 1876 } 1877 }); 1878 } 1879 1880 if(mapInlineAdItem.Type == 'gamadvert') { 1881 var refresh = EnhancedAdvertisingConfig.Refresh; 1882 el.setAttribute('data-storycustomcontent', '0'); 1883 el.classList.add('story-inlinecontent-placeholder-ad'); 1884 if(mapInlineAdItem.Sticky) { 1885 classList.add('story-inlinecontent-placeholder-sticky'); 1886 placeholder.classList.add('sticky'); 1887 } 1888 if(mapInlineAdItem.NoBackfill) { 1889 el.setAttribute('data-nobackfill', '1'); 1890 } 1891 else { 1892 el.setAttribute('data-nobackfill', '0'); 1893 } 1894 1895 if(mapInlineAdItem.Repeat) { 1896 classList.add('story-inlinecontent-placeholder-repeat-true'); 1897 } 1898 else { 1899 classList.add('story-inlinecontent-placeholder-repeat-false'); 1900 } 1901 1902 if(mapInlineAdItem.Refresh) { 1903 refresh = mapInlineAdItem.Refresh; 1904 } 1905 var mapInlineAdItemSlot = googletag.defineSlot(mapInlineAdItem.AdUnit, isDesktopResolution ? mapInlineAdItem.AdUnitSizesInlineDesktop : mapInlineAdItem.AdUnitSizesInlineMobile, 'story-inlinead-' + inlineAdCounter); 1906 if(mapInlineAdItemSlot) { 1907 mapInlineAdItemSlot.defineSizeMapping(googletag.sizeMapping().build()).setTargeting('refresh', (refresh ? 'true' : 'false')).setTargeting('refreshdelayseconds', mapInlineAdItem.RefreshDelaySeconds || (isDesktopResolution ? EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultDesktop : Enh
1907ancedAdvertisingConfig.RefreshDelaySecondsDefaultMobile)).setCollapseEmptyDiv(EnhancedAdvertisingConfig.CollapseEmptyDivs, false).addService(googletag.pubads()); 1908 } 1909 else { 1910 console.warn('Something wrong with inline ad slot \'' + 'story-inlinead-' + inlineAdCounter + '\', size(s) \'' + (isDesktopResolution ? mapInlineAdItem.AdUnitSizesInlineDesktop : mapInlineAdItem.AdUnitSizesInlineMobile).join('x') + '\', path \'' + mapInlineAdItem.AdUnit + '\''); 1911 } 1912 if(refresh) { 1913 el.setAttribute('data-shouldrefresh', '0'); 1914 classList.add('story-inlinecontent-placeholder-refresh-true'); 1915 } 1916 else { 1917 classList.add('story-inlinecontent-placeholder-refresh-false'); 1918 } 1919 1920 placeholder.id = 'story-inlinead-' + inlineAdCounter; 1921 placeholder.outerHTML = '<div class="story-inlinecontent-placeholder-ad-extrahtml">' + mapInlineAdItem.ExtraHTML + '</div>' + placeholder.outerHTML; 1922 el.setAttribute('data-slot', mapInlineAdItem.AdUnit); 1923 googletag.display('story-inlinead-' + inlineAdCounter); 1924 $(w).trigger("wvcfe:storyinlineaditeminit", [$(el), $(placeholder), mapInlineAdItem, inlineAdCounter, inlineCounter, false, 'inline', mapInlineAdItem.Type]); 1925 if(mapInlineAdItem.CustomEventName) { 1926 $(w).trigger(mapInlineAdItem.CustomEventName, [el, placeholder, mapInlineAdItem, inlineAdCounter, inlineCounter, false, 'inline', mapInlineAdItem.Type]); 1927 } 1928 if(mapInlineAdItem.Javascript) { 1929 if(typeof mapInlineAdItem.Javascript === 'function') { 1930 mapInlineAdItem.Javascript.call(this, el, placeholder, mapInlineAdItem, inlineAdCounter, inlineCounter, false, 'inline', mapInlineAdItem.Type); 1931 } 1932 } 1933 inlineAdCounter++; 1934 } 1935 else if(mapInlineAdItem.Type == 'customcontent') { 1936 el.setAttribute('data-storycustomcontent', '1'); 1937 el.classList.add('story-inlinecontent-placeholder-customcontent'); 1938 placeholder.innerHTML = mapInlineAdItem.HTML; 1939 $(w).trigger("wvcfe:storyinlineitemajaxinit", [$(el), $(placeholder), mapInlineAdItem, inlineCounter, false, 'inline', mapInlineAdItem.Type]); 1940 if(mapInlineAdItem.CustomEventName) { 1941 $(w).trigger(mapInlineAdItem.CustomEventName, [$(el), $(placeholder), mapInlineAdItem, inlineCounter, false, 'inline', mapInlineAdItem.Type]); 1942 } 1943 if(mapInlineAdItem.Javascript) { 1944 if(typeof mapInlineAdItem.Javascript === 'function') { 1945 mapInlineAdItem.Javascript.call(this, el, placeholder, mapInlineAdItem, inlineCounter, false, 'inline', mapInlineAdItem.Type.toLowerCase()); 1946 } 1947 } 1948 el.classList.add('story-inlinecontent-placeholder-finished'); 1949 1950 var inlineCustomEvent = { dataId: (mapInlineAdItem.Index+1), slot: { getSlotElementId: function(){ return 'custom-inline'; }, getAdUnitPath: function(){return 'custom-inline'} }, isEmpty: false, size:[0,0] }; 1951 1952 el.setAttribute('data-index', mapInlineAdItem.Index); 1953 slotRender(inlineCustomEvent); 1954 //$(w).trigger('abacus:inlinecontentrender', inlineCustomEvent); 1955 } 1956 el.setAttribute('data-index', mapInlineAdItem.Index); 1957 //el.setAttribute('data-index', inlineCounter); 1958 inlineCounter++; 1959 } 1960 else { 1961 console.log('Missing placeholder: [data-id="story-inline-item-' + inlineCounter + '"]'); 1962 } 1963 } else if(el) { 1964 // All slots are used, mark current slot placeholder and the rest ones as completed and used 1965 var classList = el.classList; 1966 finalizeRemainingEmptyInlineSlotContainers(classList, true); 1967 } 1968 else { 1969 console.log('Missing inline element'); 1970 } 1971 } 1972 1973 function finalizeRemainingEmptyRHCSlotContainers(classList, processremaining) { 1974 classList.remove('story-rhccontent-placeholder-init'); 1975 classList.remove('story-rhccontent-placeholder-processing'); 1976 classList.add('story-rhccontent-placeholder-completed'); 1977 classList.add('story-rhccontent-placeholder-isempty'); 1978 classList.add('story-rhccontent-placeholder-runoutofslots'); 1979 classList.add('story-rhccontent-placeholder-finished'); 1980 1981 if(processremaining) { 1982 for(var i = 0, elems = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-init:not(.story-rhccontent-placeholder-processing)'), iL = elems.length; i < iL; i++) { 1983 var e = elems[i]; 1984 if(e) { 1985 var c = e.classList; 1986 c.remove('story-rhccontent-placeholder-init'); 1987 c.add('story-rhccontent-placeholder-completed'); 1988 c.add('story-rhccontent-placeholder-isempty'); 1989 c.add('story-rhccontent-placeholder-runoutofslots'); 1990 c.add('story-rhccontent-placeholder-finished'); 1991 } 1992 } 1993 } 1994 } 1995 1996 function finalizeRemainingEmptyInlineSlotContainers(classList, processremaining) { 1997 classList.remove('story-inlinecontent-placeholder-init'); 1998 classList.remove('story-inlinecontent-placeholder-processing'); 1999 classList.add('story-inlinecontent-placeholder-completed'); 2000 classList.add('story-inlinecontent-placeholder-isempty'); 2001 classList.add('story-inlinecontent-placeholder-runoutofslots'); 2002 classList.add('story-inlinecontent-placeholder-finished'); 2003 2004 if(processremaining) { 2005 for(var i = 0, elems = d.querySelectorAll('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init:not(.story-inlinecontent-placeholder-processing)'), iL = elems.length; i < iL; i++) { 2006 var e = elems[i]; 2007 if(e) { 2008 var c = e.classList; 2009 c.remove('story-inlinecontent-placeholder-init'); 2010 c.add('story-inlinecontent-placeholder-completed'); 2011 c.add('story-inlinecontent-placeholder-isempty'); 2012 c.add('story-inlinecontent-placeholder-runoutofslots'); 2013 c.add('story-inlinecontent-placeholder-finished'); 2014 } 2015 } 2016 } 2017 } 2018 2019 function updateInlinePlaceholderClasses(node, status, minHeight) { 2020 node.classList.remove('story-inlinecontent-placeholder-isempty'); 2021 node.classList.remove('story-inlinecontent-placeholder-notempty'); 2022 node.classList.add((status ? 'story-inlinecontent-placeholder-isempty' : 'story-inlinecontent-placeholder-notempty')); 2023 node.classList.add('story-inlinecontent-placeholder-ad-completed'); 2024 if(!status) { 2025 var computedMinHeightValue = w.getComputedStyle(node).minHeight || 0; 2026 var computedMinHeight = parseInt(computedMinHeightValue, 10); 2027 if(minHeight > computedMinHeight) { 2028 node.style.minHeight = minHeight + 'px'; 2029 } 2030 } 2031 } 2032 2033 function updateRHCPlaceholderClasses(node, status) { 2034 node.classList.remove('story-rhccontent-placeholder-ad-init'); 2035 node.classList.remove('story-rhccontent-placeholder-isempty'); 2036 node.classList.remove('story-rhccontent-placeholder-notempty'); 2037 node.classList.add((status ? 'story-rhccontent-placeholder-isempty' : 'story-rhccontent-placeholder-notempty')); 2038 node.classList.add('story-rhccontent-placeholder-ad-completed'); 2039 } 2040 2041 function initRHCHeightCalc() { 2042 updateRHCFirstandLastItemStyles(); 2043 // readjust height if no in progress/loading ads as the height might change on storytext or RHC 2044 if(!d.querySelectorAll('#rhcreflow-extra .story-rhccontent-placeholder.story-rhccontent-placeholder-completed.story-rhccontent-placeholder-ad-init').length) { 2045 readjusRHCHeight(); 2046 } 2047 else { 2048 setTimeout(function() {
2049 initRHCHeightCalc(); 2050 }, 0); 2051 } 2052 } 2053 2054 function isInViewport(element) { 2055 var rect = element.getBoundingClientRect(); 2056 var height = w.innerHeight || d.documentElement.clientHeight; 2057 var width = w.innerWidth || d.documentElement.clientWidth; 2058 2059 return ( 2060 rect.right >= 0 && 2061 rect.bottom >= 0 && 2062 rect.left <= width && 2063 rect.top <= height 2064 ); 2065 } 2066 2067 function processElementsInViewport() { 2068 var adsInlinePlaceholders = d.querySelectorAll('.storytext .story-inlinecontent-placeholder'); //PWVD-893 : change from rhccontent 2069 var adsRHCPlaceholders = d.querySelectorAll('#rhcreflow-extra .story-rhccontent-placeholder'); 2070 if(adsInlinePlaceholders || adsRHCPlaceholders) { 2071 if(adsInlinePlaceholders) { 2072 adsInlinePlaceholders.forEach(function(el) { 2073 var classList = el.classList; 2074 if(!isInViewport(el)) { 2075 classList.remove('story-inlinecontent-placeholder-isinviewport'); 2076 classList.add('story-inlinecontent-placeholder-isnotinviewport'); 2077 } 2078 else { 2079 classList.remove('story-inlinecontent-placeholder-isnotinviewport'); 2080 classList.add('story-inlinecontent-placeholder-isinviewport'); 2081 } 2082 }); 2083 } 2084 else { 2085 adsRHCPlaceholders.forEach(function(el) { 2086 var classList = el.classList; 2087 if(!isInViewport(el)) { 2088 classList.remove('story-rhccontent-placeholder-isinviewport'); 2089 classList.add('story-rhccontent-placeholder-isnotinviewport'); 2090 } 2091 else { 2092 classList.remove('story-rhccontent-placeholder-isnotinviewport'); 2093 classList.add('story-rhccontent-placeholder-isinviewport'); 2094 } 2095 }); 2096 } 2097 } 2098 } 2099 2100 function adjustRHCHeightAndInitialAds() { 2101 var output = []; 2102 var googletag = w.googletag || {}; 2103 var rhcreflowExtra = d.querySelector('#rhcreflow-extra'); 2104 if(rhcreflowExtra) { 2105 rhcreflowExtra.innerHTML = ''; 2106 minRHCSlotsToFitIn = (minRHCSlots > 0 ? minRHCSlots : 2); 2107 maxRHCSlotsToFitIn = (maxRHCSlots > 0 ? maxRHCSlots : 0); 2108 for(var i = 0, iL = Math.max(storyRHCContent.length, maxRHCSlotsToFitIn); i < iL; i++) { 2109 rhcCounter = i + 1; 2110 output.push("<div class=\"story-rhccontent-placeholder story-rhccontent-placeholder-init item-notin-viewport\" data-storyrhccontainer=\"" + rhcCounter + "\"><div class=\"story-rhccontent-placeholder-inner\" data-id=\"story-rhc-item-" + rhcCounter + "\" data-storyrhcitem=\"" + rhcCounter + "\"></div></div>"); 2111 if(rhcCounter >= maxRHCSlotsToFitIn) break; 2112 } 2113 d.querySelector('#rhcreflow-extra').innerHTML = output.join(''); 2114 2115 if('IntersectionObserver' in w && 'IntersectionObserverEntry' in w && 'intersectionRatio' in w.IntersectionObserverEntry.prototype) { 2116 d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-init').forEach(function(el) { 2117 if(el) { 2118 observer = new IntersectionObserver(function(entries) { 2119 return observerCallback(entries); 2120 }, { root: null, rootMargin: "50px 0px 50px 0px", threshold: [0, 0.01, 0.99, 1] }); 2121 observer.observe(el); 2122 } 2123 }); 2124 2125 var observerCallback = function(entries) { 2126 return entries.forEach(function(entry, i) { 2127 if(entry.isIntersecting) { 2128 entry.target.classList.remove('item-notin-viewport'); 2129 entry.target.classList.add('item-in-viewport'); 2130 } 2131 else { 2132 entry.target.classList.remove('item-in-viewport'); 2133 entry.target.classList.add('item-notin-viewport'); 2134 } 2135 }); 2136 } 2137 } 2138 2139 googletag.cmd = googletag.cmd || []; 2140 googletag.cmd.push(function() { 2141 var rhcEl = d.querySelector('.story-rhccontent-placeholder.story-rhccontent-placeholder-init:not(.story-rhccontent-placeholder-completed):not(.story-rhccontent-placeholder-processing)'); 2142 var hasAnyRHCLoadedBefore = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed'); 2143 if(rhcEl && !hasAnyRHCLoadedBefore.length) { 2144 insertRHCSlot(rhcEl); 2145 d.body.classList.add('enhanced-advertising-rhc-init'); 2146 } 2147 });
2148 2149 updateRHCContainerState(); 2150 } 2151 } 2152 2153 function isStoryTextTallerThanRHC() { 2154 var calcHeight = 0; 2155 if(w.matchMedia("screen and (min-width: 1023px)").matches && !d.body.classList.contains('story-full-layout')) { 2156 var h = 0, colmain = d.getElementById('colmain').clientHeight; 2157 d.querySelectorAll('#rightcolumn_sleeve > *:not(#rhcreflow-extra)').forEach(function(item) { 2158 h = getAbsoluteHeight(item); 2159 item.setAttribute('data-height', h); 2160 calcHeight += h; 2161 }); 2162 d.querySelectorAll('#rhcreflow-extra > *').forEach(function(item) { 2163 h = getAbsoluteHeight(item); 2164 item.setAttribute('data-height', h); 2165 calcHeight += h; 2166 }); 2167 return { 2168 "canAdd": colmain > calcHeight, "delta": colmain - calcHeight 2169 }; 2170 } 2171 else { 2172 return { "canAdd": false, "delta": 0 }; 2173 } 2174 2175 } 2176 2177 function canAddRHCItem() { 2178 // check whether inline and RHC ads finished loading, otherwise ignore 2179 var storyRHCSlotHeight = EnhancedAdvertisingConfig.RHCMinHeightForSlotInsert; 2180 var calcHeight = 0; 2181 if(w.matchMedia("screen and (min-width: 1023px)").matches && !d.body.classList.contains('story-full-layout')) { 2182 var h = 0, innerChild = 0; 2183 d.querySelectorAll('#rightcolumn_sleeve > *:not(#rhcreflow-extra)').forEach(function(item) { 2184 h = getAbsoluteHeight(item); 2185 item.setAttribute('data-height', h); 2186 calcHeight += h; 2187 }); 2188 d.querySelectorAll('#rhcreflow-extra > *').forEach(function(item) { 2189 //innerChild = (item || item.querySelector('.story-rhccontent-placeholder-inner') || item.firstChild); 2190 //h = getAbsoluteHeight(innerChild); 2191 //if (h == 0) { 2192 // h = getAbsoluteHeight(item); 2193 //} 2194 h = getAbsoluteHeight(item); 2195 item.setAttribute('data-height', h); 2196 calcHeight += h; 2197 }); 2198 var result = { 2199 "canAddRHCItem": d.getElementById('colmain').clientHeight > calcHeight + storyRHCSlotHeight, 2200 "colmainTaller": d.getElementById('colmain').clientHeight > calcHeight 2201 }; 2202 2203 return result; 2204 } 2205 else { 2206 return { "canAddRHCItem": false, "colmainTaller": false }; 2207 } 2208 } 2209 2210 function readjusRHCHeight() { 2211 if(w.matchMedia("screen and (min-width: 1023px)").matches && !d.body.classList.contains('story-full-layout')) { 2212 d.getElementById('rightcolumn_sleeve').style.minHeight = d.getElementById('colmain').clientHeight + 'px'; 2213 } 2214 var elemsIndexes = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed[data-index]'); 2215 var slotIndex = elemsIndexes.length ? parseInt(elemsIndexes[elemsIndexes.length - 1].getAttribute('data-index'), 10) : -1; 2216 var rhcEl = d.querySelector('.story-rhccontent-placeholder.story-rhccontent-placeholder-init:not(.story-rhccontent-placeholder-completed):not(.story-rhccontent-placeholder-processing)'); 2217 2218 var canAdd = canAddRHCItem(); 2219 var hasInsertIfNoRHCSpace = storyRHCContent.some(function(e) { return e.InsertIfNoRHCSpace == true && e.Used == false && e.Index > slotIndex; }); 2220 2221 if(!rhcEl || (!canAdd.canAddRHCItem && !hasInsertIfNoRHCSpace && !d.querySelectorAll('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init:not(.story-inlinecontent-processing)').length)) { 2222 d.body.classList.add('enhanced-advertising-rhc-completed'); 2223 } 2224 else { 2225 d.body.classList.remove('enhanced-advertising-rhc-completed'); 2226 } 2227 2228 //var rhcElementsInitialised = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed:not(.story-rhccontent-placeholder-init):not(.story-rhccontent-placeholder-processing):not(.story-rhccontent-placeholder-finished)'); 2229 2230 var rhcElementsInitialised = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed:not(.story-rhccontent-placeholder-init):not(.story-rhccontent-placeholder-processing):not(.story-rhccontent-placeholder-finished):not(.story-rhccontent-placeholder-isempty)'); 2231 2232 //var rhcElemInit = $('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed'); //PWVD-749 2233 //var classesToExclude = ['init', 'processing', 'finished'].map( cls => '.story-rhccontent-placeholder-' + cls); //, 'isempty' 2234 //rhcElemInit = rhcElemInit.find( classesToExclude.join(',') ).remove(); 2235 2236 if(rhcEl && (canAdd.canAddRHCItem || hasInsertIfNoRHCSpace) && rhcElementsInitialised.length == 0) { 2237 googletag.cmd.push(function() { 2238 insertRHCSlot(rhcEl); 2239 });
2240 } 2241 } 2242 2243 function updateRHCFirstandLastItemStyles() { 2244 d.querySelectorAll('#rhcreflow-extra > *:not(.story-rhccontent-placeholder-init):not(.story-rhccontent-placeholder-processing):not(.story-rhccontent-placeholder-isempty)').forEach(function(item, index, data) { 2245 item.classList.remove('story-rhccontent-placeholder-first'); 2246 item.classList.remove('story-rhccontent-placeholder-last'); 2247 if(index == 0) { 2248 item.classList.add('story-rhccontent-placeholder-first'); 2249 } 2250 if(index == data.length - 1) { 2251 item.classList.add('story-rhccontent-placeholder-last'); 2252 } 2253 }); 2254 if((d.querySelectorAll('.storytext .story-inlinecontent-placeholder.story-inlinecontent-placeholder-completed').length == d.querySelectorAll('.storytext .story-inlinecontent-placeholder.story-inlinecontent-placeholder-finished').length) && !d.querySelectorAll('.storytext .story-inlinecontent-placeholder.story-inlinecontent-placeholder-init').length) { 2255 d.body.classList.add('enhanced-advertising-inline-completed'); 2256 } 2257 else { 2258 d.body.classList.remove('enhanced-advertising-inline-completed'); 2259 } 2260 } 2261 2262 w.addEventListener('scroll', function(e) { 2263 if(!ticking) { 2264 w.requestAnimationFrame(function() { 2265 processElementsInViewport(); 2266 readjusRHCHeight(); 2267 ticking = false; 2268 }); 2269 ticking = true; 2270 } 2271 }, true); 2272 2273 w.addEventListener('resize', function(e) { 2274 if(!ticking) { 2275 w.requestAnimationFrame(function() { 2276 processElementsInViewport(); 2277 readjusRHCHeight(); 2278 ticking = false; 2279 }); 2280 ticking = true; 2281 } 2282 }, true); 2283 2284 w.addEventListener("abacus:loadcontent:complete", function(evt, context) { 2285 readjusRHCHeight(); 2286 }, true); 2287 2288 if(d.querySelector('#story .storytext img.lazyload')) { 2289 d.addEventListener('lazyloaded', function(e) { 2290 if(w.googletag && googletag.apiReady) { 2291 if(getClosestParent(e.target, '.storytext')) { 2292 readjusRHCHeight(); 2293 } 2294 } 2295 }); 2296 } 2297 2298 w.addEventListener("abacus:advertb:loaded", function(evt, context) { 2299 readjusRHCHeight(); 2300 }, true); 2301 2302 w.addEventListener("abacus:gamadvert:loaded", function(evt, context) { 2303 readjusRHCHeight(); 2304 }, true); 2305 2306 w.addEventListener("abacus:readjusrhcheight", function(evt, context) { 2307 readjusRHCHeight(); 2308 }, true); 2309 2310 //w.addEventListener('abacus:inlinecontentrender', function(customEvent) { 2311 // slotRender(customEvent); 2312 //}, true); 2313 } 2314 }); 2315})(window, document); 2316</script>
2316 2317 2318 <meta name="citation_journal_title" content="Drug Target Review"/> 2319 2320 2321 2322 2323 2324</head> 2325<body id="story" class="M1-master js-disabled story-style-1 story-format-1019 story-type-1120 enhanced-advertising enhanced-advertising-rhc-empty hasRelatedArticles"> 2326 2327 <!-- Abacus Google Tag Manager (noscript) -->
vendor: 68 bytes, lines 2327-2328
2327 2328<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
2328GTM-N334KSM2
vendor: 83 bytes, lines 2328-2329
2328" 2329height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
2330<!-- Abacus End Google Tag Manager (noscript) --> 2331 2332<!-- RP Google Tag Manager (noscript) -->
vendor: 68 bytes, lines 2332-2333
2332 2333<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
2333GTM-KM6ZDN2
vendor: 83 bytes, lines 2333-2334
2333" 2334height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
2335<!-- RP End Google Tag Manager (noscript) --> 2336 2337<!--[if lte IE 10]> 2338<link rel="stylesheet" href="/CSS/dest/notsupported.css"> 2339<div class="notSupported"> 2340 <div class="sleeve"> 2341 <span id="logo" class="vector-icon i-brand-logo i-brand-logo-dims"></span> 2342 <h2> 2343 Your browser is not supported 2344 </h2> 2345 <p> 2346 Sorry but it looks as if your browser is out of date. To get the best experience using our site we recommend that you upgrade or switch browsers. 2347 </p> 2348 <p class="buttonContainer"> 2349 <a class="button" href="https://www.google.co.uk/webhp?ion=1&espv=2&ie=UTF-8#q=update+my+browser" target="_blank">Find a solution</a> 2350 </p> 2351 </div> 2352</div> 2353<![endif]--> 2354
2354<script type="text/javascript">document.body.className = document.body.className.replace('js-disabled', ''); document.cookie = "_js=1; path=/";</script>
2354 2355 2356 2357 2358 <div id="wrapper"> 2359 2360<ul id="skiplinks"><li><a href="#wrapper_sleeve">Skip to main content</a></li><li><a href="#mainnav">Skip to navigation</a></li></ul> 2361 2362<header id="masthead" class="masthead"> 2363 <div class="htmlContent"> 2364 2365</div> 2366 2367 2368 <!-- 2369<div class="leaderboard"> 2370 <div class="ad"> 2371 <div class="dt-ad-250 mob-ad-250"> 2372
2373<script type="text/javascript"> 2374var rnd = window.rnd || Math.floor(Math.random()*10e6); 2375var pid1188588 = window.pid1188588 || rnd; 2376var plc1188588 = window.plc1188588 || 0; 2377var abkw = window.abkw || ''; 2378var absrc = 'https://servedbyadbutler.com/adserve/;ID=167548;size=0x0;setID=1188588;type=js;sw='+screen.width+';sh='+screen.height+';spr='+window.devicePixelRatio+';kw='+abkw+';pid='+pid1188588+';place='+(plc1188588++)+';rnd='+rnd+''; 2379document.write('<scr'+'ipt src="'+absrc+'" type="text/javascript"></scr'+'ipt>'); 2380</script>
2380 2381 2382 </div> 2383 </div> 2384</div> 2385--> 2386 2387<div class="leaderboard"> 2388 <div class="ad"> 2389 <div class="dt-ad-250 mob-ad-250"> 2390 <!-- DTR - Billboard (Dynamic) [js] --> 2391
2391<script type="text/javascript"> 2392 if (!hideLeaderboard) { 2393 var rnd = window.rnd || Math.floor(Math.random()*10e6); 2394 var pid1188588 = window.pid1188588 || rnd; 2395 var plc1188588 = window.plc1188588 || 0; 2396 var abkw = window.abkw || ''; 2397 var absrc = 'https://servedbyadbutler.com/adserve/;ID=167548;size=0x0;setID=1188588;type=js;sw='+screen.width+';sh='+screen.height+';spr='+window.devicePixelRatio+';kw='+abkw+';pid='+pid1188588+';place='+(plc1188588++)+';rnd='+rnd+''; 2398 2399 document.write('<scr'+'ipt src="'+absrc+'" type="text/javascript"></scr'+'ipt>'); 2400 } 2401 </script>
2401 2402 </div> 2403 </div> 2404</div> 2405 2406
2407<script> 2408(function () { 2409 var isGamTest = new URLSearchParams(window.location.search).get('gamtest') === '1'; 2410/* 2411 const rootSections = ['/knowledge-hub', '/brand-directory']; 2412 const path = window.location.pathname; 2413 2414 const skipMastLB = rootSections.some( 2415 section => path === section || path.startsWith(`${section}/`) 2416 ); 2417*/ 2418 2419 if (!isGamTest) return; 2420 2421 document.currentScript.insertAdjacentHTML( 2422 'beforebegin', 2423 '<div class="leaderboard showMenuPushed">' + 2424 '<div class="ad">' + 2425 '<div id="div-gpt-ad-MastLB" class="mob-ad-100"></div>' + 2426 '</div>' + 2427 '</div>' 2428 ); 2429 2430 googletag.cmd.push(function () { 2431 googletag.display('div-gpt-ad-MastLB'); 2432 }); 2433 2434})(); 2435</script>
2435 2436 <div class="mast container full" role="banner" data-multi-toggle-menu> 2437 <div class="inner-sleeve" data-menu-open-pushed> 2438 <div class="mastheadLogo"> 2439 <a href="/"> 2440 <span class="logoIcon"> 2441 <span class="assistive">Site name</span> 2442 </span> 2443 </a> 2444</div> 2445<div id="print_logo"> 2446 <img src="/magazine/dest/graphics/logo/print_logo.png" alt="" /> 2447</div> 2448<div class="mastheadMobileLogo"> 2449 <a href="/"> 2450 <span class="logoIcon"> 2451 <span class="assistive">Site name</span> 2452 </span> 2453 </a> 2454</div> 2455 2456 <div class="mastControls"> 2457 <nav data-multi-toggle-item="" class="mastNav loggedout hide"><span class="toggleIcon"><a href="#mastnav" data-toggle-button=""><span class="assistive">Mast navigation</span></a></span><ul id="mastnav" data-toggle-element=""><li><a href="https://account.drugtargetreview.com/register?returl=https%3a%2f%2fwww.drugtargetreview.com%2Fthankyou">Become a member</a></li><li><a class="popup signIn" href="https://www.drugtargetreview.com/sign-in">Sign In</a></li></ul></nav> 2458 <div class="mastheadSearch hide" data-multi-toggle-item=""> 2459 <span class="toggleIcon"> 2460 <a href="#search" data-toggle-button=""> 2461 <span class="assistive">Search our site</span> 2462 </a> 2463 </span> 2464 <form action="https://www.drugtargetreview.com/searchresults" method="get" id="mastsearch" data-toggle-element=""> 2465 <fieldset> 2466 <div> 2467 <label for="search">Search our site</label> 2468 <input type="text" id="search" value="" name="qkeyword" class="text" placeholder="Search our site" /> 2469 <button class="mastSearch" type="submit">Search</button> 2470 </div> 2471 </fieldset> 2472 </form> 2473</div> 2474 2475 2476<div class="menuToggle"> 2477 <span class="toggleIcon"><a href="#mobilemenu" data-menu-toggle-button=""><span class="assistive">Menu</span></a></span> 2478</div> 2479 </div> 2480 </div> 2481 </div> 2482 <div class="menuContainer"> 2483 <div class="mobileMenu" id="mobilemenu"> 2484 <div class="sleeve"> 2485 <a class="menuClose" href="#wrapper"> 2486 <span>Close<span class="assistive"> menu</span></span> 2487 </a> 2488 <ul class="main"> 2489 <li class="home-icon"> 2490 <a href="https://www.drugtargetreview.com/"> 2491 <span>Home</span> 2492 </a> 2493 </li> 2494 <li class=""> 2495 <a href="https://www.drugtargetreview.com/news"> 2496 <span>News</span> 2497 </a> 2498 </li> 2499 <li class=""> 2500 <a href="https://www.drugtargetreview.com/oncology"> 2501 <span>Oncology</span> 2502 </a> 2503 </li> 2504 <li class=""> 2505 <a href="https://www.drugtargetreview.com/ai"> 2506 <span>AI</span> 2507 </a> 2508 </li> 2509 <li class="hasChildren "> 2510 <a href="https://www.drugtargetreview.com/topics" aria-expanded="false"> 2511 <span>Topics</span> 2512 </a> 2513 <ul aria-hidden="true" class="subMenu hide"> 2514 <li class="parentBack"> 2515 <a class="toolbar" href="#"> 2516 <span class="header">Back<span class="assistive"> to parent navigation item</span></span> 2517 <span class="btn backBtn"> 2518 <i></i> 2519 </span> 2520 </a> 2521 </li> 2522 <li class="parentNav"> 2523 <a href="https://www.drugtargetreview.com/topics"> 2524 <span>Topics</span> 2525 </a> 2526 </li> 2527 <li class=""> 2528 <a href="https://www.drugtargetreview.com/topics/technology"> 2529 <span>Technology</span> 2530 </a> 2531 </li> 2532 <li class=""> 2533 <a href="https://www.drugtargetreview.com/topics/resources"> 2534 <span>Resources</span> 2535 </a> 2536 </li> 2537 <li class=""> 2538 <a href="https://www.drugtargetreview.com/topics/diseases"> 2539 <span>Diseases</span> 2540 </a> 2541 </li> 2542 <li class=""> 2543 <a href="https://www.drugtargetreview.com/topics/drugs-and-therapies"> 2544 <span>Drugs and therapies</span> 2545 </a> 2546 </li> 2547 <li class=""> 2548 <a href="https://www.drugtargetreview.com/topics/research-and-development">
2549 <span>Research and development</span> 2550 </a> 2551 </li> 2552 <li class=""> 2553 <a href="https://www.drugtargetreview.com/topics/tools-and-techniques"> 2554 <span>Tools and techniques</span> 2555 </a> 2556 </li> 2557 <li class=""> 2558 <a href="https://www.drugtargetreview.com/topics/business"> 2559 <span>Business</span> 2560 </a> 2561 </li> 2562 </ul> 2563 </li> 2564 <li class=""> 2565 <a href="https://www.drugtargetreview.com/webinars"> 2566 <span>Webinars</span> 2567 </a> 2568 </li> 2569 <li class=""> 2570 <a href="https://www.drugtargetreview.com/reports"> 2571 <span>Reports</span> 2572 </a> 2573 </li> 2574 </ul> 2575 2576 </div> 2577</div> 2578<div class="mobileMenuClose"></div> 2579 <div id="mainnav" class="desktopNavigation container" data-menu-open-pushed=""><div class="dropdown vanityPanel"><div class="inner-sleeve"></div></div><div class="inner-sleeve"><ul class="main preJS"><li data-navcode="83" data-rootnavcode="83" class="current home-icon"><a href="https://www.drugtargetreview.com/"><span>Home</span></a></li><li data-navcode="201" data-rootnavcode="201"><a href="https://www.drugtargetreview.com/news"><span>News</span></a></li><li data-navcode="202" data-rootnavcode="202"><a href="https://www.drugtargetreview.com/oncology"><span>Oncology</span></a></li><li data-navcode="203" data-rootnavcode="203"><a href="https://www.drugtargetreview.com/ai"><span>AI</span></a></li><li data-navcode="204" data-rootnavcode="204" class="hasChildren oneSubNav"><a href="https://www.drugtargetreview.com/topics"><span>Topics</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="207" data-rootnavcode="204" class=""><a href="https://www.drugtargetreview.com/topics/technology"><span>Technology</span></a></li><li data-navcode="208" data-rootnavcode="204" class=""><a href="https://www.drugtargetreview.com/topics/resources"><span>Resources</span></a></li><li data-navcode="209" data-rootnavcode="204" class=""><a href="https://www.drugtargetreview.com/topics/diseases"><span>Diseases</span></a></li><li data-navcode="210" data-rootnavcode="204" class=""><a href="https://www.drugtargetreview.com/topics/drugs-and-therapies"><span>Drugs and therapies</span></a></li><li data-navcode="211" data-rootnavcode="204" class=""><a href="https://www.drugtargetreview.com/topics/research-and-development"><span>Research and development</span></a></li><li data-navcode="212" data-rootnavcode="204" class=""><a href="https://www.drugtargetreview.com/topics/tools-and-techniques"><span>Tools and techniques</span></a></li><li data-navcode="213" data-rootnavcode="204" class=""><a href="https://www.drugtargetreview.com/topics/business"><span>Business</span></a></li></ul></li><li class="promotedStory"><a href="/aacr-2026-part-two-integrating-ai-spatial-biology-and-next-gen-therapeutics/2135691.article" class="image"><div class="image"><img src="https://dft2fymcn9opj.cloudfront.net/Pictures/274x183/3/1/6/21316_conferencehall_256294.jpg" loading="lazy" class="lazyloaded" alt="Conference Hall"></div><div class="captionBlock"><span class="title">AACR 2026 part two: integrating AI, spatial biology and next-gen therapeutics</span></div></a></li><li class="promotedStory"><a href="/aacr-2026-part-one-ai-design-precision-biology-and-the-next-wave-of-oncology-innovation/2135490.article" class="image"><div class="image"><img src="https://dft2fymcn9opj.cloudfront.net/Pictures/274x183/9/8/7/20987_aacr2_321859_crop.jpg" loading="lazy" class="lazyloaded" alt="AACR 2"></div><div class="captionBlock"><span class="title">AACR 2026 part one: AI design, precision biology and the next wave of oncology innovation</span></div></a></li><li class="promotedStory"><a href="/home/when-scale-meets-insight-reinventing-spr-for-the-future-of-drug-discovery/2135329.article" class="image"><div class="image"><img src="https://dft2fymcn9opj.cloudfront.net/Pictures/274x183/7/4/7/20747_16_still01_boandlexilookingatcomputer_cleaned_391925.jpg" loading="lazy" class="lazyloaded" alt="16_Still01_Bo and Lexi looking at computer_cleaned"></div><div class="captionBlock"><span class="title">
2579When scale meets insight: reinventing SPR for the future of drug discovery</span></div></a></li></ul></div></div></li><li data-navcode="214" data-rootnavcode="214"><a href="https://www.drugtargetreview.com/webinars"><span>Webinars</span></a></li><li data-navcode="271" data-rootnavcode="271"><a href="https://www.drugtargetreview.com/reports"><span>Reports</span></a></li><li class="more hide"><a href="#mobilemenu" data-menu-toggle-button="" aria-expanded="false"><span> 2580 More<span class="assistive"> navigation items</span></span></a></li></ul></div></div><div class="desktopNavigationSpace"></div> 2581 </div> 2582</header> 2583 2584 2585<!-- 2586<div class="ad-style1 showMenuPushed"> 2587 <div class="sleeve"> 2588 Insert ad code here 2589 </div></div> 2590 --> 2591 <div id="wrapper_sleeve" data-menu-open-pushed> 2592 2593 2594 <div class="storyLayout standard"></div> 2595 2596 2597 2598 <div class="headerWrapper"> 2599 2600 2601 2602 2603 2604 2605 2606 2607 <div class="container titleByline"> 2608 <div class="inner-sleeve"> 2609 2610 2611 <div class="story_title"> 2612 <h1>AACR 2026 part two: integrating AI, spatial biology and next-gen therapeutics</h1> 2613</div> 2614<p class="byline meta"> <span class="author"><a href="https://www.drugtargetreview.com/sam-wightwick/338374.bio" rel="author">Sam Wightwick</a></span><span class="date" data-date-timezone="{"publishdate": "2026-06-11T12:00:00","format": "MMMM DD, yyyy"}">2026-06-11T12:00:00+01:00</span></p> 2615 </div> 2616 </div> 2617 </div> 2618 2619 2620 2621 2622 2623 2624 <div id="columns" class="container"> 2625 <div id="colwrapper" class="inner-sleeve"> 2626 <div id="colmain" role="main" class="restrictedcontent"> 2627 <div id="content"> 2628 <div id="content_sleeve"> 2629 2630 <div class="contentWrapper"> 2631 <div class="storyContentWrapper"> 2632 <div class="pageOptions"> 2633 <ul><li> 2634 <a href="https://www.facebook.com/sharer/sharer.php?u=https%3a%2f%2fwww.drugtargetreview.com%2faacr-2026-part-two-integrating-ai-spatial-biology-and-next-gen-therapeutics%2f2135691.article&e=AACR+2026+part+two%3a+integrating+AI%2c+spatial+biology+and+next-gen+therapeutics" class="facebook" title="Share this on Facebook" target="_blank"></a> 2635 </li> 2636 <li> 2637 <a href="https://twitter.com/intent/tweet?text=AACR+2026+part+two%3a+integrating+AI%2c+spatial+biology+and+next-gen+therapeutics&url=https%3a%2f%2fwww.drugtargetreview.com%2faacr-2026-part-two-integrating-ai-spatial-biology-and-next-gen-therapeutics%2f2135691.article" class="twitter" title="Share this on Twitter" target="_blank"></a> 2638 </li> 2639 <li> 2640 <a href="https://www.linkedin.com/cws/share?url=https%3a%2f%2fwww.drugtargetreview.com%2faacr-2026-part-two-integrating-ai-spatial-biology-and-next-gen-therapeutics%2f2135691.article" class="linkedin" title="Share this on Linked in" target="_blank"></a> 2641 </li> 2642 <li> 2643 <a href="https://wa.me/?text=https%3a%2f%2fwww.drugtargetreview.com%2faacr-2026-part-two-integrating-ai-spatial-biology-and-next-gen-therapeutics%2f2135691.article!" data-action="share/whatsapp/share" class="whatsapp" title="Share this on Whatsapp" target="_blank"></a> 2644 </li><li><a href="mailto:?subject=AACR 2026 part two: integrating AI, spatial biology and next-gen therapeutics&body=https://www.drugtargetreview.com/aacr-2026-part-two-integrating-ai-spatial-biology-and-next-gen-therapeutics/2135691.article" class="email" title="Email this article"></a></li> 2645 </ul> 2646 <ul class="pageOptions_right"> 2647 <li aria-live="polite"><a href="#commentsJump" class="commentButton scrollTo"><div class="commentCount"><span class="commentText commentHidden">No comments</span></div> 2648 <div class="commentIcon"> 2649 </div></a></li> 2650 <li class=" last" aria-live="polite" data-cache-bust="true" data-ajax-load-content="" data-url="/2135691/bookmark"> 2651 </li> 2652 </ul> 2653</div> 2654 <div class="articleWrapper"> 2655 <div class="articleContent"> 2656 2657 2658 2659 2660 <div class="standfirst"><p>In part two of Drug Target Reviewâs AACR 2026 coverage, we look at how oncology innovators are bridging the gap between complex biology and clinical impact across RAS targeting, immunotherapy, spatial biology and ADC development.</p></div><div class="storytext"><div class="inline_image image_size_full" data-attachment="21316" data-sequence="1"> 2661<p class="picture"><img alt="Conference Hall" src="https://dft2fymcn9opj.cloudfront.net/Pictures/480xany/3/1/6/21316_conferencehall_256294.jpg" sizes="(max-width: 1023px) 100vw, 780px" srcset="https://dft2fymcn9opj.cloudfront.net/Pictures/480xany/3/1/6/21316_conferencehall_256294.jpg 480w,https://dft2fymcn9opj.cloudfront.net/Pictures/600xany/3/1/6/21316_conferencehall_256294.jpg 600w,https://dft2fymcn9opj.cloudfront.net/Pictures/780xany/3/1/6/21316_conferencehall_256294.jpg 780w" loading="eager" class="lazyloaded" width="2856" height="2142"></p> 2662</div> 2663<p>At the <a href="https://www.aacr.org/meeting/aacr-annual-meeting-2026/" target="_blank" rel="noopener noreferrer">American Association for Cancer Research (AACR) Annual Meeting 2026</a>, <em>Drug Target Review</em> continued its discussions with oncology drug developers, platform innovators and translational scientists exploring how automation, AI and increasingly sophisticated therapeutic modalities are helping to change experimental biology.</p> 2664<p>While part one focused on AI-driven discovery and molecular expansion of the druggable genome, part two highlights a different but connected challenge: how to translate increasingly complex biological systems â including spatial profiling, engineered proteins, cell therapies and combination strategies â into reproducible, clinically meaningful outcomes.</p> 2665<p>Across multiple conversations, experts explained how oncology is no longer constrained by the ability to generate data or design molecules, but by the ability to connect systems, standardise workflows and ensure that biological information survives the journey to the clinic.</p> 2666<h2 id="RAS_targeting_and_the_shift_towards_combination_logic">RAS targeting and the shift towards combination logic</h2> 2667<p>At <a href="https://www.revmed.com/" target="_blank" rel="noopener noreferrer">Revolution Medicines</a>, their focus is on one of oncologyâs most historically intractable pathways: RAS. Chief Development Officer Alan Sandler described how the companyâs emerging pipeline is already demonstrating differentiated activity in KRAS-driven cancers, including non-small cell lung cancer and pancreatic cancer.</p> 2668<p>Its KRAS G12D inhibitor has shown encouraging early clinical activity in previously treated NSCLC, including response rates significantly above historical standards of care and extended progression-free survival compared to chemotherapy.</p> 2669<p>âWeâve seen a median progression-free survival of just over 11 months compared to around four months with standard therapy,â Sandler said.</p> 2670<p>Beyond single-agent activity, Revolution Medicines is also looking at combination strategies. Sandler highlighted the biological rationale for combining RAS pathway inhibition with immunotherapy and other targeted agents.</p> 2671<p>âBy inhibiting RAS, we may enhance immune system activity,â he explained.</p> 2672<p>This has led to the exploration of multi-agent regimens, including combinations of its RAS inhibitors with both immunotherapies and other targeted compounds, as well as progression into first-line pancreatic cancer studies.</p> 2673<div class="inline_image image_size_full" data-attachment="21317" data-sequence="2"> 2674<p class="picture"><img alt="Revolution Medicines Booth 2" src="https://dft2fymcn9opj.cloudfront.net/Pictures/480xany/3/1/7/2
26741317_revolutionmedicinesbooth2_136700.jpg" sizes="(max-width: 1023px) 100vw, 780px" srcset="https://dft2fymcn9opj.cloudfront.net/Pictures/480xany/3/1/7/21317_revolutionmedicinesbooth2_136700.jpg 480w,https://dft2fymcn9opj.cloudfront.net/Pictures/600xany/3/1/7/21317_revolutionmedicinesbooth2_136700.jpg 600w,https://dft2fymcn9opj.cloudfront.net/Pictures/780xany/3/1/7/21317_revolutionmedicinesbooth2_136700.jpg 780w" loading="lazy" class="lazyloaded" width="2856" height="2142"></p> 2675 2676 2677<div class="inline_meta"><p class="inline_title">The Revolution Medicines booth at AACR 2026</p><p class="inline_caption">At the conference, Revolution Medicines outlined how their emerging pipeline is already demonstrating differentiated activity in KRAS-driven cancers, including non-small cell lung cancer and pancreatic cancer.</p></div></div> 2678<h2 id="TCR_therapies_and_the_expansion_of_immune_targeting">TCR therapies and the expansion of immune targeting</h2> 2679<p>At <a href="https://www.immunocore.com/" target="_blank" rel="noopener noreferrer">Immunocore</a>, the conversation was focused on the evolution of T-cell receptor (TCR)-based therapies from niche applications into broader oncology platforms.</p> 2680<p>Dr Connie Pfeiffer, Head of Global Medical Affairs, highlighted five-year survival data from a pivotal study in metastatic uveal melanoma, a disease historically associated with extremely poor outcomes.</p> 2681<p>âThe data shows a doubling of the proportion of patients alive at five years,â she said.</p> 2682<p>This long-term survival signal demonstrates the potential durability of TCR therapies in solid tumours, particularly when targeting intracellular antigens inaccessible to conventional antibody approaches.</p> 2683<p>Immunocore is also actively exploring combination strategies with their approved treatment and an investigational candidate in other types of cancer, particularly with checkpoint inhibitors such as pembrolizumab and nivolumab, while maintaining openness to other mechanistic partners.</p> 2684<p>âWeâre not limiting ourselves to checkpoint inhibitors,â Pfeiffer said. âThatâs one possibility, but weâre open to other mechanisms and our research and translational teams are always looking at what makes sense scientifically.â</p> 2685<h2 id="From_candidate_selection_to_scalable_development">From candidate selection to scalable development</h2> 2686<p>While much of the focus at AACR was on breakthrough biology, several discussions highlighted that early development decisions â particularly in biologics â can have a lasting impact on clinical success.</p> 2687<p>At <a href="https://www.sartorius.com/en">Sartorius</a>, Dr Darius Wilson, Sartorius Product Management, outlined how newer cell line development workflows are moving towards earlier, more data-driven selection of candidate clones. Platforms such as its <a href="https://www.sartorius.com/en/products/cell-selection-and-retrieval/cell-selection-instruments/cellcelector-cld">CellCelector CLD</a> Platform enable researchers to screen thousands of monoclonal-derived clones at the earliest stages, identifying top performers before committing resources to expansion and characterisation.</p> 2688<p>âThe key advantage is the early preselection of top-performing clones from the largest possible pool,â he explained.</p> 2689<p>This approach is supported by integrated analytical validation across imaging, growth monitoring and productivity assays, helping ensure that accelerated timelines do not compromise clone stability or long-term output. By narrowing the field early, developers can avoid progressing suboptimal candidates, reducing both time and resource burden downstream.</p> 2690<p>The result is a more efficient and reliable transition from discovery into scalable development â an important factor as biologics pipelines continue to grow.</p> 2691<div class="inline_image image_size_full" data-attachment="21319" data-sequence="3"> 2692<p class="picture"><img alt="CellCelector Sartorius Image 3" src="https://dft2fymcn9opj.cloudfront.net/Pictures/480xany/3/1/9/21319_cellcelectorsartoriusimage3_198199.jpg" sizes="(max-width: 1023px) 100vw, 780px" srcset="https://dft2fymcn9opj.cloudfront.net/Pictures/480xany/3/1/9/21319_cellcelectorsartoriusimage3_198199.jpg 480w,https://dft2fymcn9opj.cloudfront.net/Pictures/600xany/3/1/9/21319_cellcelectorsartoriusimage3_198199.jpg 600w,https://dft2fymcn9opj.cloudfront.net/Pictures/780xany/3/1/9/21319_cellcelectorsartoriusimage3_198199.jpg 780w" loading="lazy" class="lazyloaded" width="2856" height="2142"></p> 2693 2694 2695<div class="inline_meta"><p class="inline_title">The CellCelector CLD on display at AACR 2026</p><p class="inline_caption">The CellCelector CLD Platform enables researchers to screen thousands of monoclonal-derived clones at the earliest stages, identifying top performers before committing resources to expansion and characterisation.</p></div></div> 2696<h2 id="Engineering_smarter_biologics_with_nextgeneration_discovery_platforms">
2696Engineering smarter biologics with next-generation discovery platforms</h2> 2697<p>At <a href="https://www.sygnaturediscovery.com/" target="_blank" rel="noopener noreferrer">Sygnature Discovery</a>, attention was focused on how discovery platforms can change the design of next-generation therapeutics, particularly antibodyâdrug conjugates (ADCs).</p> 2698<p>Dr Allan Jordan, VP of Oncology Drug Discovery, described a field still dominated by a narrow set of cytotoxic payloads, limiting differentiation and increasing development redundancy.</p> 2699<p>âThere are literally hundreds of very similar ADCs in development. There simply are not enough patients, or enough funding, for all of these to reach market and be commercially successful,â he said. âWe are plotting a ânew pathâ forwards, where the antibody is only one component of the optimisation.â</p> 2700<p>To address this, Sygnature is advancing a more integrated design approach, focusing not only on antibody engineering but also on payload optimisation towards tumour-selective biology, including metabolic pathways and oncogenic dependencies.</p> 2701<h2 id="Scaling_biology_with_automation_and_data_feedback_loops">Scaling biology with automation and data feedback loops</h2> 2702<p><a href="https://www.crownbio.com/" target="_blank" rel="noopener noreferrer">Crown Bioscienceâs</a> emphasis was on bridging experimental biology with AI-driven discovery systems.</p> 2703<p>CEO John Gu described a future in which preclinical models â including cell lines, organoids and patient-derived xenografts â are tightly integrated into iterative AI feedback loops.</p> 2704<p>âWe see this as a lab-in-the-loop system,â he said.</p> 2705<p>In this model, AI generates hypotheses that are experimentally validated, with resulting data fed back to refine computational models. Crownâs role is to provide the biological validation layer required to ensure predictions reflect real tumour biology.</p> 2706<p>âItâs not just about prediction. Itâs about validation,â Gu added.</p> 2707<div class="inline_image image_size_full" data-attachment="21320" data-sequence="4"> 2708<p class="picture"><img alt="Crown Bioscience Booth" src="https://dft2fymcn9opj.cloudfront.net/Pictures/480xany/3/2/0/21320_crownbiosciencebooth_643000.jpg" sizes="(max-width: 1023px) 100vw, 780px" srcset="https://dft2fymcn9opj.cloudfront.net/Pictures/480xany/3/2/0/21320_crownbiosciencebooth_643000.jpg 480w,https://dft2fymcn9opj.cloudfront.net/Pictures/600xany/3/2/0/21320_crownbiosciencebooth_643000.jpg 600w,https://dft2fymcn9opj.cloudfront.net/Pictures/780xany/3/2/0/21320_crownbiosciencebooth_643000.jpg 780w" loading="lazy" class="lazyloaded" width="2856" height="2142"></p> 2709 2710 2711<div class="inline_meta"><p class="inline_title">The Crown Bioscience booth at AACR 2026</p><p class="inline_caption">Company CEO John Gu described a future in which preclinical models â including cell lines, organoids and patient-derived xenografts â are tightly integrated into iterative AI feedback loops</p></div></div> 2712<h2 id="Spatial_biology_and_the_challenge_of_multilayered_data">Spatial biology and the challenge of multilayered data</h2> 2713<p><a href="https://www.miltenyibiotec.com/GB-en/" target="_blank" rel="noopener noreferrer">Miltenyi Biotec</a> is rapidly advancing spatial biology technologies and attempting to understand what is possible in tissue analysis, while also addressing new challenges in data interpretation. With platforms now capable of analysing hundreds of proteins and RNA probes simultaneously, researchers can build increasingly detailed maps of tumour microenvironments, combining 3D tissue architecture with deep cellular phenotyping to understand biological organisation at multiple scales.</p> 2714<p>Yet this increased resolution is also shifting the bottleneck from data generation to data interpretation. As datasets become more multidimensional, the challenge is now about translating it into meaningful, âactionable insightâ.</p> 2715<p>âWith these technologies there is the potential to generate more data than actual actionable insight,â said Katrin Sc
2715hönborn, Global Product Manager at Miltenyi Biotec. âThe way we as a company resolve this is by providing dedicated software solutions integrated into our platform that allows users to really understand their data in an intuitive manner, while still preserving the flexibility needed for expert users to interrogate results in depth or apply alternative analytical approaches.â</p> 2716<p>Companies are now increasingly investing in integrated software ecosystems designed not only to manage complex datasets, but to support interpretation at scale. These platforms aim to bridge the gap between raw data and biological understanding, which is a balancing act between standardisation of analysis workflows and the flexibility required to tackle specific scientific questions.</p> 2717<p>âItâs a problem the entire field is facing,â said Eike GeiÃmar, Marketing Product Manager at Miltenyi Biotec. âWe havenât yet come to a consensus in the community on how to handle these datasets, but quite optimistic that this will happen just as it did for other ground breaking technologies and in the meantime, we are actively fostering exchange between our users to move things forward.â</p> 2718<div class="inline_image image_size_full" data-attachment="21321" data-sequence="5"> 2719<p class="picture"><img alt="Miltenyi Booth" src="https://dft2fymcn9opj.cloudfront.net/Pictures/480xany/3/2/1/21321_miltenyibooth_28793.jpg" sizes="(max-width: 1023px) 100vw, 780px" srcset="https://dft2fymcn9opj.cloudfront.net/Pictures/480xany/3/2/1/21321_miltenyibooth_28793.jpg 480w,https://dft2fymcn9opj.cloudfront.net/Pictures/600xany/3/2/1/21321_miltenyibooth_28793.jpg 600w,https://dft2fymcn9opj.cloudfront.net/Pictures/780xany/3/2/1/21321_miltenyibooth_28793.jpg 780w" loading="lazy" class="lazyloaded" width="2856" height="2142"></p> 2720 2721 2722<div class="inline_meta"><p class="inline_title">The Miltenyi Biotec booth at AACR 2026</p><p class="inline_caption">The company is rapidly advancing spatial biology technologies and attempting to understand what is possible in tissue analysis, while also addressing new challenges in data interpretation.</p></div></div> 2723<h2 id="From_experimental_systems_to_integrated_oncology_pipelines">From experimental systems to integrated oncology pipelines</h2> 2724<p>From RAS inhibition and TCR therapies to spatial biology and cell line optimisation, AACR demonstrated that the field is looking at building systems that not only generate biological understanding but can reliably convert that into real benefit for patients down the line.</p> 2725<p>The next challenge is now about ensuring new biology can be connected, standardised and executed at clinical scale going forwards.</p> 2726<div class="inline_related" title="Select stories & display options" data-storycodes="2135680,2135490,2135134" data-id="1" data-layout="grid" data-align="L" data-show="image,type,date" data-heading="USE_DEFAULT"></div></div><div id="storytext-end" class="storytext-end"></div> 2727 </div> 2728 </div> 2729 2730 <div class="htmlContent"> 2731 2732 </div> 2733 </div> 2734 <div class="topics"><div class="sleeve"><span class="topicsLabel"></span><h2>Topics</h2><ul class="topicsList"><li><a href="/antibody-drug-conjugates-adcs/336940.subject">Antibody-Drug Conjugates (ADCs)</a></li><li><a href="/artificial-intelligence-ai/257419.subject">Artificial Intelligence (AI)</a></li><li><a href="/biologics/265348.subject">Biologics</a></li><li><a href="/drug-development/257227.subject">Drug Development</a></li><li><a href="/drug-discovery/256007.subject">Drug Discovery</a></li><li><a href="/imaging-and-diagnostics/256653.subject">Imaging & Diagnostics</a></li><li><a href="/immunotherapy/256852.subject">Immunotherapy</a></li><li><a href="/lab-tools-and-automation/256201.subject">Lab Tools & Automation</a></li><li><a href="/oncology/256129.subject">Oncology</a></li><li><a href="/translational-science/256346.subject">Translational Science</a></li></ul></div></div> 2735 2736 2737 2738 2739 2740 2741 2742 <div class="pageOptions"> 2743 <ul><li> 2744 <a href="https://www.facebook.com/sharer/sharer.php?u=https%3a%2f%2fwww.drugtargetreview.com%2faacr-2026-part-two-integrating-ai-spatial-biology-and-next-gen-therapeutics%2f2135691.article&e=AACR+2026+part+two%3a+integrating+AI%2c+spatial+biology+and+next-gen+therapeutics" class="facebook" title="Share this on Facebook" target="_blank"></a> 2745 </li> 2746 <li> 2747 <a href="https://twitter.com/intent/tweet?text=AACR+2026+part+two%3a+integrating+AI%2c+spatial+biology+and+next-gen+therapeutics&url=https%3a%2f%2fwww.drugtargetreview.com%2faacr-2026-part-two-integrating-ai-spatial-biology-and-next-gen-therapeutics%2f2135691.article" class="twitter" title="Share this on Twitter" target="_blank"></a> 2748 </li> 2749 <li> 2750 <a href="https://www.linkedin.com/cws/share?url=https%3a%2f%2fwww.drugtargetreview.com%2faacr-2026-part-two-integrating-ai-spatial-biology-and-next-gen-therapeutics%2f2135691.article" class="linkedin" title="Share this on Linked in" target="_blank"></a> 2751 </li> 2752 <li> 2753 <a href="https://wa.me/?text=https%3a%2f%2fwww.drugtargetreview.com%2faacr-2026-part-two-integrating-ai-spatial-biology-and-next-gen-therapeutics%2f2135691.article!" data-action="share/whatsapp/share" class="whatsapp" title="Share this on Whatsapp" target="_blank"></a> 2754 </li><li><a href="mailto:?subject=AACR 2026 part two: integrating AI, spatial biology and next-gen therapeutics&body=https://www.drugtargetreview.com/aacr-2026-part-two-integrating-ai-spatial-biology-and-next-gen-therapeutics/2135691.article" class="email" title="Email this article"></a></li> 2755 </ul> 2756 <ul class="pageOptions_right"> 2757 <li aria-live="polite"><a href="#commentsJump" class="commentButton scrollTo"><div class="commentCount"><span class="commentText commentHidden">No comments</span></div> 2758 <div class="commentIcon"> 2759 </div></a></li> 2760 <li class=" last" aria-live="polite" data-cache-bust="true" data-ajax-load-content="" data-url="/2135691/bookmark"> 2761 </li> 2762 </ul> 2763</div> 2764 </div> 2765 2766 2767 </div> 2768 </div> 2769 </div> 2770 <div id="rightcolumn" class="fixedrightcolumn rightcolumn restrictedcontent"> 2771 <div id="rightcolumn_sleeve"> 2772 2773 2774 2775 2776 2777 2778 2779 2780<div data-mpu1-reflow></div> 2781 <div id="rhcreflow-tabletlandscape"></div> 2782 <div id="rhcreflow-desktop" class="rhc-mostpopular-desktop"> 2783 2784 </div> 2785 <div id="rhcreflow-extra"></div> 2786 <div id="rhcreflow-extra-end" class="rhcreflow-extra-end"></div> 2787 <style> 2788#story.enhanced-advertising #rightcolumn_sleeve { 2789 display: block; 2790} 2791 2792#story.enhanced-advertising #rightcolumn_sleeve .ad{ 2793 margin: 0 auto 42px auto;; 2794} 2795</style> 2796 2797<!-- EPR - MPU #1 [async] --> 2798<div class="ad"> 2799<!-- DTR - MPU #1 [async] -->
2800<script type="text/javascript">if (!window.AdButler){(function(){var s = document.createElement("script"); s.async = true; s.type = "text/javascript"; s.src = 'https://servedbyadbutler.com/app.js'; var n = document.getElementsByTagName("script")[0]; n.parentNode.insertBefore(s, n);}());}</script>
vendor: 1 bytes, line 2800
2800
2801<script type="text/javascript"> 2802var AdButler = AdButler || {}; 2803AdButler.ads = AdButler.ads || []; 2804var abkw = window.abkw || ''; 2805var plc821668 = window.plc821668 || 0; 2806document.write('<'+'div id="placement_821668_'+plc821668+'"></'+'div>'); 2807AdButler.ads.push({handler: function(opt){ AdButler.register(167548, 821668, [300,250], 'placement_821668_'+opt.place, opt); }, opt: { place: plc821668++, keywords: abkw, domain: 'servedbyadbutler.com', click: 'CLICK_MACRO_PLACEHOLDER' }}); 2808</script>
2808 2809</div> 2810 2811<!-- most popular--> 2812<div class="tab-widget-7" data-ajax-load-content="" data-cache-bust="true" data-url="/ajax/most?cachetoken=1&wid=25"></div> 2813 2814<!-- EPR - MPU #2 [async] --> 2815<div class="ad"> 2816<!-- DTR - MPU #2 [async] -->
2817<script type="text/javascript">if (!window.AdButler){(function(){var s = document.createElement("script"); s.async = true; s.type = "text/javascript"; s.src = 'https://servedbyadbutler.com/app.js'; var n = document.getElementsByTagName("script")[0]; n.parentNode.insertBefore(s, n);}());}</script>
vendor: 1 bytes, line 2817
2817
2818<script type="text/javascript"> 2819var AdButler = AdButler || {}; 2820AdButler.ads = AdButler.ads || []; 2821var abkw = window.abkw || ''; 2822var plc821669 = window.plc821669 || 0; 2823document.write('<'+'div id="placement_821669_'+plc821669+'"></'+'div>'); 2824AdButler.ads.push({handler: function(opt){ AdButler.register(167548, 821669, [300,250], 'placement_821669_'+opt.place, opt); }, opt: { place: plc821669++, keywords: abkw, domain: 'servedbyadbutler.com', click: 'CLICK_MACRO_PLACEHOLDER' }}); 2825</script>
2825 2826</div> 2827 2828 2829<!-- EPR - MPU #3 [async] --> 2830<div class="ad"> 2831<!-- DTR - MPU #3 [async] -->
2832<script type="text/javascript">if (!window.AdButler){(function(){var s = document.createElement("script"); s.async = true; s.type = "text/javascript"; s.src = 'https://servedbyadbutler.com/app.js'; var n = document.getElementsByTagName("script")[0]; n.parentNode.insertBefore(s, n);}());}</script>
vendor: 1 bytes, line 2832
2832
2833<script type="text/javascript"> 2834var AdButler = AdButler || {}; 2835AdButler.ads = AdButler.ads || []; 2836var abkw = window.abkw || ''; 2837var plc821670 = window.plc821670 || 0; 2838document.write('<'+'div id="placement_821670_'+plc821670+'"></'+'div>'); 2839AdButler.ads.push({handler: function(opt){ AdButler.register(167548, 821670, [300,250], 'placement_821670_'+opt.place, opt); }, opt: { place: plc821670++, keywords: abkw, domain: 'servedbyadbutler.com', click: 'CLICK_MACRO_PLACEHOLDER' }}); 2840</script>
2840 2841</div> 2842 2843 2844 2845 </div> 2846 </div> 2847 </div> 2848 </div> 2849 <div class="container bottomAdContainer restrictedcontent"> 2850 <div class="inner-sleeve"> 2851 <div class="bottomAd"> 2852 <div data-ajax-param-replacement="true" data-ajax-load-native-content="" data-cache-bust="true" data-url="/relatednativeadvert?storytoken=1&pid=B"></div> 2853 </div> 2854 </div> 2855 </div> 2856 2857 2858 <div class="container relatedVideos restrictedcontent"> 2859 <div class="inner-sleeve"> 2860 <div id="videosreflow-tabletportrait"></div> 2861 <div id="videosreflow-mobile"></div> 2862 </div> 2863 </div> 2864 <div class="container latestVideos relatedArticles" id="relatedArticles"> 2865 <div class="inner-sleeve"> 2866 <div data-reflow-content="" class="extras latestvideos"> 2867 <div class="sleeve"> 2868 <div class="extras_heading"> 2869 <h3>Related articles</h3> 2870 </div> 2871 <div class="extrasStory listBlocks loadMoreItems" data-load-more-ajax=""> 2872 <ul data-load-more-context=""> 2873 <li class=""> 2874 <a href="https://www.drugtargetreview.com/home/how-disease-exposes-hidden-epitopes-that-ai-models-may-miss/2136543.article" class="image layoutIcon pictureLayout"> 2875 <img alt="Immuto - still 4" loading="lazy" src="https://dft2fymcn9opj.cloudfront.net/Pictures/380x253/8/2/5/22825_immutostill4_531590_crop.jpg" srcset="https://dft2fymcn9opj.cloudfront.net/Pictures/380x253/8/2/5/22825_immutostill4_531590_crop.jpg 380w" width="380" height="253" class="lazyloaded" /> 2876 </a> 2877 <div class="storyDetails"> 2878 <a href="https://www.drugtargetreview.com/article/1019.type" class="storyType">Article</a> 2879 <h3> 2880 <a href="https://www.drugtargetreview.com/home/how-disease-exposes-hidden-epitopes-that-ai-models-may-miss/2136543.article">How disease exposes hidden epitopes that AI models may miss</a> 2881 </h3> 2882 <p class="meta"> 2883 <span class="date" data-date-timezone="{"publishdate": "2026-09-24T06:30:00Z","format": "MMMM DD, yyyy HH:mm a"}">2026-09-24T06:30:00Z</span> 2884 </p> 2885 <p class="byline"> 2886 <span class="author">Contributor <a rel="author" href="https://www.drugtargetreview.com/dr-dan-benjamin/429648.bio">Dr Dan Benjamin</a>, <a rel="author" href="https://www.drugtargetreview.com/drug-target-review/261607.bio">Drug Target Review</a></span> 2887 </p> 2888 </div> 2889 </li> 2890 <li class=""> 2891 <a href="https://www.drugtargetreview.com/mayo-clinic-strategy-restores-car-t-targets-on-aggressive-thyroid-tumours/2136546.article" class="image"> 2892 <img alt="shutterstock_2846378687" loading="lazy" src="https://dft2fymcn9opj.cloudfront.net/Pictures/380x253/8/2/3/22823_shutterstock_2846378687_698139.jpg" srcset="https://dft2fymcn9opj.cloudfront.net/Pictures/380x253/8/2/3/22823_shutterstock_2846378687_698139.jpg 380w" width="380" height="253" class="lazyloaded" /> 2893 </a> 2894 <div class="storyDetails"> 2895 <a class="storyType" href="https://www.drugtargetreview.com/news">News</a> 2896 <h3> 2897 <a href="https://www.drugtargetreview.com/mayo-clinic-strategy-restores-car-t-targets-on-aggressive-thyroid-tumours/2136546.article">Mayo Clinic strategy restores CAR T targets on aggressive thyroid tumours</a> 2898 </h3> 2899 <p class="meta"> 2900 <span class="date" data-date-timezone="{"publishdate": "2026-09-23T13:54:00Z","format": "MMMM DD, yyyy HH:mm a"}">2026-09-23T13:54:00Z</span> 2901 </p> 2902 <p class="byline"> 2903 <span class="author"> <a rel="author" href="https://www.drugtargetreview.com/sam-wightwick/338374.bio">Sam Wightwick</a></span> 2904 </p> 2905 </div> 2906 </li> 2907 <li class=""> 2908 <a href="https://www.drugtargetreview.com/plug-and-play-car-t-platform-enables-post-infusion-immune-cell-reprogramming/2136539.article" class="image"> 2909 <img alt="shutterstock_2763418221" loading="lazy" src="https://dft2fymcn9opj.cloudfront.net/Pictures/380x253/8/0/3/22803_shutterstock_2763418221_419271.jpg" srcset="https://dft2fymcn9opj.cloudfront.net/Pictures/380x253/8/0/3/22803_shutterstock_2763418221_419271.jpg 380w" width="380" height="253" class="lazyloaded" /> 2910 </a> 2911 <div class="storyDetails"> 2912 <a class="storyType" href="https://www.drugtargetreview.com/news">News</a> 2913 <h3> 2914 <a href="https://www.drugtargetreview.com/plug-and-play-car-t-platform-enables-post-infusion-immune-cell-reprogramming/2136539.article">âPlug-and-playâ CAR T platform enables post-infusion immune cell reprogramming</a> 2915 </h3> 2916 <p class="meta">
2917 <span class="date" data-date-timezone="{"publishdate": "2026-09-23T09:27:00Z","format": "MMMM DD, yyyy HH:mm a"}">2026-09-23T09:27:00Z</span> 2918 </p> 2919 <p class="byline"> 2920 <span class="author"> <a rel="author" href="https://www.drugtargetreview.com/sam-wightwick/338374.bio">Sam Wightwick</a></span> 2921 </p> 2922 </div> 2923 </li> 2924 <li class=""> 2925 <a href="https://www.drugtargetreview.com/oestrogen-receptor-alpha-identified-as-right-ventricle-protector-in-pulmonary-hypertension/2136528.article" class="image"> 2926 <img alt="shutterstock_2293419887" loading="lazy" src="https://dft2fymcn9opj.cloudfront.net/Pictures/380x253/7/8/3/22783_shutterstock_2293419887_140715.jpg" srcset="https://dft2fymcn9opj.cloudfront.net/Pictures/380x253/7/8/3/22783_shutterstock_2293419887_140715.jpg 380w" width="380" height="253" class="lazyloaded" /> 2927 </a> 2928 <div class="storyDetails"> 2929 <a class="storyType" href="https://www.drugtargetreview.com/news">News</a> 2930 <h3> 2931 <a href="https://www.drugtargetreview.com/oestrogen-receptor-alpha-identified-as-right-ventricle-protector-in-pulmonary-hypertension/2136528.article">Oestrogen receptor alpha identified as right ventricle protector in pulmonary hypertension</a> 2932 </h3> 2933 <p class="meta"> 2934 <span class="date" data-date-timezone="{"publishdate": "2026-09-22T10:59:00Z","format": "MMMM DD, yyyy HH:mm a"}">2026-09-22T10:59:00Z</span> 2935 </p> 2936 <p class="byline"> 2937 <span class="author"> <a rel="author" href="https://www.drugtargetreview.com/sam-wightwick/338374.bio">Sam Wightwick</a></span> 2938 </p> 2939 </div> 2940 </li> 2941 <li class=""> 2942 <a href="https://www.drugtargetreview.com/kidney-organoids-reveal-inflammation-drives-diabetic-kidney-disease/2136524.article" class="image"> 2943 <img alt="Low-Res_Organoids-Glucose-concentrations" loading="lazy" src="https://dft2fymcn9opj.cloudfront.net/Pictures/380x253/7/7/5/22775_lowres_organoidsglucoseconcentrations_188772.jpg" srcset="https://dft2fymcn9opj.cloudfront.net/Pictures/380x253/7/7/5/22775_lowres_organoidsglucoseconcentrations_188772.jpg 380w" width="380" height="253" class="lazyloaded" /> 2944 </a> 2945 <div class="storyDetails"> 2946 <a class="storyType" href="https://www.drugtargetreview.com/news">News</a> 2947 <h3> 2948 <a href="https://www.drugtargetreview.com/kidney-organoids-reveal-inflammation-drives-diabetic-kidney-disease/2136524.article">Kidney organoids reveal inflammation drives diabetic kidney disease</a> 2949 </h3> 2950 <p class="meta"> 2951 <span class="date" data-date-timezone="{"publishdate": "2026-09-22T09:19:00Z","format": "MMMM DD, yyyy HH:mm a"}">2026-09-22T09:19:00Z</span> 2952 </p> 2953 <p class="byline"> 2954 <span class="author"> <a rel="author" href="https://www.drugtargetreview.com/sam-wightwick/338374.bio">Sam Wightwick</a></span> 2955 </p> 2956 </div> 2957 </li> 2958 <li class=""> 2959 <a href="https://www.drugtargetreview.com/home/how-protective-gene-variants-are-revealing-new-drug-targets/2136522.article" class="image layoutIcon pictureLayout"> 2960 <img alt="AdobeStock_1581461584" loading="lazy" src="https://dft2fymcn9opj.cloudfront.net/Pictures/380x253/7/7/2/22772_adobestock_1581461584_624291_crop.jpeg" srcset="https://dft2fymcn9opj.cloudfront.net/Pictures/380x253/7/7/2/22772_adobestock_1581461584_624291_crop.jpeg 380w" width="380" height="253" class="lazyloaded" /> 2961 </a> 2962 <div class="storyDetails"> 2963 <a href="https://www.drugtargetreview.com/article/1019.type" class="storyType">Article</a> 2964 <h3> 2965 <a href="https://www.drugtargetreview.com/home/how-protective-gene-variants-are-revealing-ne
2965w-drug-targets/2136522.article">How protective gene variants are revealing new drug targets</a> 2966 </h3> 2967 <p class="meta"> 2968 <span class="date" data-date-timezone="{"publishdate": "2026-09-22T07:00:00Z","format": "MMMM DD, yyyy HH:mm a"}">2026-09-22T07:00:00Z</span> 2969 </p> 2970 <p class="byline"> 2971 <span class="author">Contributor <a rel="author" href="https://www.drugtargetreview.com/luca-lotta/429642.bio">Luca Lotta</a>, <a rel="author" href="https://www.drugtargetreview.com/drug-target-review/261607.bio">Drug Target Review</a></span> 2972 </p> 2973 </div> 2974 </li> 2975 </ul> 2976 <div class="loadMoreButtonWrapper" data-load-more-button-wrapper=""> 2977 <button type="button" class="button" data-load-more-button="" data-items-offset="6" data-ajax-url="https://www.drugtargetreview.com/2135691/loadmore?code=ARTICLES" data-items-to-load="6" data-loading-more-text="Loading more articles"> 2978 Load more articles 2979 </button> 2980 </div> 2981 </div> 2982 <div class="fixedrightcolumn rightcolumn"> 2983 <!-- DTR - MPU #4 [async] --> 2984<div class="ad">
2985<script type="text/javascript">if (!window.AdButler){(function(){var s = document.createElement("script"); s.async = true; s.type = "text/javascript"; s.src = 'https://servedbyadbutler.com/app.js'; var n = document.getElementsByTagName("script")[0]; n.parentNode.insertBefore(s, n);}());}</script>
vendor: 1 bytes, line 2985
2985
2986<script type="text/javascript"> 2987var AdButler = AdButler || {}; 2988AdButler.ads = AdButler.ads || []; 2989var abkw = window.abkw || ''; 2990var plc1189428 = window.plc1189428 || 0; 2991document.write('<'+'div id="placement_1189428_'+plc1189428+'"></'+'div>'); 2992AdButler.ads.push({handler: function(opt){ AdButler.register(167548, 1189428, [300,250], 'placement_1189428_'+opt.place, opt); }, opt: { place: plc1189428++, keywords: abkw, domain: 'servedbyadbutler.com', click: 'CLICK_MACRO_PLACEHOLDER' }}); 2993</script>
2993 2994</div> 2995 </div> 2996 </div> 2997 </div> 2998 </div> 2999</div> 3000<div class="container commentContainer restrictedcontent"> 3001 <div class="inner-sleeve"> 3002 <div class=" extras"> 3003 <a id="commentsJump" class="scrollTarget"></a><div id="commentsHead"><div class="extras_heading"><h3>No comments yet</h3></div></div> 3004 <div class="extrasStory"> 3005 <div class="contentWrapper"> 3006 <div id="comments_form" class="formbox"><div class="formbox_sleeve"><div class="commentWarningWrapper"> 3007 <div class="commentWarningLeft"> 3008 <span class="commentAvatar"></span> 3009 <span class="commentWarningText">You're not signed in.</span> 3010 </div> 3011 <div class="commentWarningRight"> 3012 <h3>Only registered users can comment on this article.</h3> 3013 <a class="popup signIn button" href="/sign-in">Sign in</a> 3014 <a class="button ad-append-return" href="https://account.{{PUBLICATION_URL}}">Register</a> 3015 </div> 3016</div></div></div> 3017 <div id="ajaxCommentsList" aria-live="polite" data-cache-bust="true" data-ajax-load-content="" data-url="/0/2135691/commentlist?cachetoken=1&fh=1&sort="></div></div> 3018 </div> 3019 <div class="fixedrightcolumn rightcolumn"></div></div> 3020 </div> 3021</div> 3022<div class="container latestVideos relatedArticles" id="sponsoredArticles"> 3023 <div class="inner-sleeve"> 3024 <div data-reflow-content="" class="extras latestvideos"> 3025 <div class="sleeve"> 3026 <div class="extras_heading"> 3027 <h3>Partner content</h3> 3028 </div> 3029 <div class="extrasStory listBlocks loadMoreItems" data-load-more-ajax=""> 3030 <ul data-load-more-context=""> 3031 <li class=""> 3032 <a href="https://www.drugtargetreview.com/reports/building-biomarkers-that-drug-developers-can-rely-on/2136243.article" class="image"> 3033 <img alt="biomarkers feature image" loading="lazy" src="https://dft2fymcn9opj.cloudfront.net/Pictures/380x253/3/7/1/22371_digitalfreight1_174272.jpg" srcset="https://dft2fymcn9opj.cloudfront.net/Pictures/380x253/3/7/1/22371_digitalfreight1_174272.jpg 380w" width="380" height="253" class="lazyloaded" /> 3034 </a> 3035 <div class="storyDetails"> 3036 <a href="https://www.drugtargetreview.com/report/1093.type" class="storyType">Report</a> 3037 <h3> 3038 <a href="https://www.drugtargetreview.com/reports/building-biomarkers-that-drug-developers-can-rely-on/2136243.article">Building biomarkers that drug developers can rely on</a> 3039 </h3> 3040 <p class="meta"> 3041 <span class="date" data-date-timezone="{"publishdate": "2026-08-27T08:48:00","format": "MMMM DD, yyyy HH:mm a"}">2026-08-27T08:48:00</span> 3042 </p> 3043 <p class="byline"> 3044 <span class="author">Sponsored by <a rel="author" href="https://www.drugtargetreview.com/danaher/429382.bio">Danaher</a></span> 3045 </p> 3046 </div> 3047 </li> 3048 <li class=""> 3049 <a href="https://www.drugtargetreview.com/home/from-randd-to-qc-building-a-single-analytical-strategy-for-cell-and-gene-therapies/2135838.article" class="image"> 3050 <img alt="AdobeStock_2078296488" loading="lazy" src="https://dft2fymcn9opj.cloudfront.net/Pictures/380x253/5/4/1/21541_adobestock_2078296488_52177.jpeg" srcset="https://dft2fymcn9opj.cloudfront.net/Pictures/380x253/5/4/1/21541_adobestock_2078296488_52177.jpeg 380w" width="380" height="253" class="lazyloaded" /> 3051 </a> 3052 <div class="storyDetails"> 3053 <a href="https://www.drugtargetreview.com/article/1019.type" class="storyType">Article</a> 3054 <h3> 3055 <a href="https://www.drugtargetreview.com/home/from-randd-to-qc-building-a-single-analytical-strategy-for-cell-and-gene-therapies/2135838.article">From R&D to QC: building a single analytical strategy for cell and gene therapies</a> 3056 </h3> 3057 <p class="meta">
3058 <span class="date" data-date-timezone="{"publishdate": "2026-07-01T13:30:00","format": "MMMM DD, yyyy HH:mm a"}">2026-07-01T13:30:00</span> 3059 </p> 3060 <p class="byline"> 3061 <span class="author">Contributor <a rel="author" href="https://www.drugtargetreview.com/carrie-maynard/429528.bio">Carrie Maynard</a> and <a rel="author" href="https://www.drugtargetreview.com/dr-veronica-fowler/429529.bio">Dr Veronica Fowler</a></span> 3062 </p> 3063 </div> 3064 </li> 3065 <li class=""> 3066 <a href="https://www.drugtargetreview.com/webinars/meeting-ethical-and-regulatory-requirements-when-using-human-biological-specimens/2136000.article" class="image"> 3067 <img alt="Background-Graphic-Option-1-could be extended on right" loading="lazy" src="https://dft2fymcn9opj.cloudfront.net/Pictures/380x253/8/0/6/21806_backgroundgraphicoption1couldbeextendedonright_216915.jpg" srcset="https://dft2fymcn9opj.cloudfront.net/Pictures/380x253/8/0/6/21806_backgroundgraphicoption1couldbeextendedonright_216915.jpg 380w" width="380" height="253" class="lazyloaded" /> 3068 </a> 3069 <div class="storyDetails"> 3070 <a class="storyType" href="https://www.drugtargetreview.com/webinars">Webinar</a> 3071 <h3> 3072 <a href="https://www.drugtargetreview.com/webinars/meeting-ethical-and-regulatory-requirements-when-using-human-biological-specimens/2136000.article">Meeting ethical & regulatory requirements when using human biological specimens</a> 3073 </h3> 3074 <p class="meta"> 3075 <span class="date event-start" data-date-timezone="{"publishdate": "2026-09-23T15:00:00"}">2026-09-23T15:00:00</span> 3076 </p> 3077 <p class="byline"> 3078 <span class="author">Sponsored by <a rel="author" href="https://www.drugtargetreview.com/bioivt/429554.bio">BioIVT</a></span> 3079 </p> 3080 </div> 3081 </li> 3082 <li class=""> 3083 <a href="https://www.drugtargetreview.com/home/why-researchers-are-revisiting-bisantrene-decades-after-it-was-abandoned/2136265.article" class="image layoutIcon pictureLayout"> 3084 <img alt="shutterstock_2210307289 (1)" loading="lazy" src="https://dft2fymcn9opj.cloudfront.net/Pictures/380x253/2/6/1/22261_shutterstock_22103072891_14059.jpg" srcset="https://dft2fymcn9opj.cloudfront.net/Pictures/380x253/2/6/1/22261_shutterstock_22103072891_14059.jpg 380w" width="380" height="253" class="lazyloaded" /> 3085 </a> 3086 <div class="storyDetails"> 3087 <a href="https://www.drugtargetreview.com/article/1019.type" class="storyType">Article</a> 3088 <h3> 3089 <a href="https://www.drugtargetreview.com/home/why-researchers-are-revisiting-bisantrene-decades-after-it-was-abandoned/2136265.article">Why researchers are revisiting bisantrene decades after it was abandoned</a> 3090 </h3> 3091 <p class="meta"> 3092 <span class="date" data-date-timezone="{"publishdate": "2026-08-20T08:43:00","format": "MMMM DD, yyyy HH:mm a"}">2026-08-20T08:43:00</span> 3093 </p> 3094 <p class="byline"> 3095 <span class="author">Author <a rel="author" href="https://www.drugtargetreview.com/dr-daniel-tillett/429590.bio">Dr Daniel Tillett</a></span> 3096 </p> 3097 </div> 3098 </li> 3099 <li class=""> 3100 <a href="https://www.drugtargetreview.com/home/why-targeted-therapies-are-exposing-the-limits-of-animal-models-and-what-comes-next/2135609.article" class="image"> 3101 <img alt="VoxCellBio2026_Tissue" loading="lazy" src="https://dft2fymcn9opj.cloudfront.net/Pictures/380x253/2/0/4/21204_voxcellbio2026_tissue_233031.jpg" srcset="https://dft2fymcn9opj.cloudfront.net/Pictures/380x253/2/0/4/21204_voxcellbio2026_tissue_233031.jpg 380w" width="380" height="253" class="lazyloaded" /> 3102 </a> 3103 <div class="storyDetails"> 3104 <a href="https://www.drugtargetreview.com/article/1019.type" class="storyType">Article</a> 3105 <h3> 3106 <a href="https://www.drugtargetreview.com/home/why-targeted-therapies-are-exposing-the-limits-of-animal-models-and-what-comes-next/2135609.article">Why targeted therapies are exposing the limits of animal models â and what comes next</a> 3107 </h3> 3108 <p class="meta">
3109 <span class="date" data-date-timezone="{"publishdate": "2026-06-04T07:05:00","format": "MMMM DD, yyyy HH:mm a"}">2026-06-04T07:05:00</span> 3110 </p> 3111 <p class="byline"> 3112 <span class="author">Author <a rel="author" href="https://www.drugtargetreview.com/graham-craig/429485.bio">Graham Craig</a></span> 3113 </p> 3114 </div> 3115 </li> 3116 <li class=""> 3117 <a href="https://www.drugtargetreview.com/home/reducing-drug-development-failures-with-human-relevant-models-and-ai/2136188.article" class="image layoutIcon pictureLayout"> 3118 <img alt="AdobeStock_1933021183 (1)" loading="lazy" src="https://dft2fymcn9opj.cloudfront.net/Pictures/380x253/0/8/7/22087_adobestock_19330211831_430877.jpeg" srcset="https://dft2fymcn9opj.cloudfront.net/Pictures/380x253/0/8/7/22087_adobestock_19330211831_430877.jpeg 380w" width="380" height="253" class="lazyloaded" /> 3119 </a> 3120 <div class="storyDetails"> 3121 <a href="https://www.drugtargetreview.com/article/1019.type" class="storyType">Article</a> 3122 <h3> 3123 <a href="https://www.drugtargetreview.com/home/reducing-drug-development-failures-with-human-relevant-models-and-ai/2136188.article">Reducing drug development failures with human-relevant models and AI</a> 3124 </h3> 3125 <p class="meta"> 3126 <span class="date" data-date-timezone="{"publishdate": "2026-08-11T07:02:00","format": "MMMM DD, yyyy HH:mm a"}">2026-08-11T07:02:00</span> 3127 </p> 3128 <p class="byline"> 3129 <span class="author">Contributor <a rel="author" href="https://www.drugtargetreview.com/professor-joseph-c-wu/429581.bio">Professor Joseph C. Wu</a>, <a rel="author" href="https://www.drugtargetreview.com/drug-target-review/261607.bio">Drug Target Review</a></span> 3130 </p> 3131 </div> 3132 </li> 3133 </ul> 3134 <div class="loadMoreButtonWrapper" data-load-more-button-wrapper=""> 3135 <button type="button" class="button" data-load-more-button="" data-items-offset="6" data-ajax-url="https://www.drugtargetreview.com/2135691/loadmore?code=SPONSORED" data-items-to-load="6"> 3136 Load more 3137 </button> 3138 </div> 3139 </div> 3140 <div class="fixedrightcolumn rightcolumn"> 3141 <!-- DTR - MPU #5 [async] --> 3142<div class="ad">
3143<script type="text/javascript">if (!window.AdButler){(function(){var s = document.createElement("script"); s.async = true; s.type = "text/javascript"; s.src = 'https://servedbyadbutler.com/app.js'; var n = document.getElementsByTagName("script")[0]; n.parentNode.insertBefore(s, n);}());}</script>
vendor: 1 bytes, line 3143
3143
3144<script type="text/javascript"> 3145var AdButler = AdButler || {}; 3146AdButler.ads = AdButler.ads || []; 3147var abkw = window.abkw || ''; 3148var plc1189429 = window.plc1189429 || 0; 3149document.write('<'+'div id="placement_1189429_'+plc1189429+'"></'+'div>'); 3150AdButler.ads.push({handler: function(opt){ AdButler.register(167548, 1189429, [300,250], 'placement_1189429_'+opt.place, opt); }, opt: { place: plc1189429++, keywords: abkw, domain: 'servedbyadbutler.com', click: 'CLICK_MACRO_PLACEHOLDER' }}); 3151</script>
3151 3152</div> 3153 </div> 3154 </div> 3155 </div> 3156 </div> 3157</div> 3158 3159 3160 <div class="container"><div class="inner-sleeve"><div id="rhcreflow-tabletportrait"></div><div id="rhcreflow-mobile"></div></div></div><div id="mobile-drop-zone"></div> 3161 3162 3163 3164 3165 3166<div class="footer_ad"> 3167 <div class="footer_ad_strip"> 3168 <div class="ad"> 3169 3170 </div> 3171 </div> 3172</div> 3173 3174<div id="footer" class="footer" role="contentinfo"> 3175 <div class="container footerTopNavPageText"> 3176 <div class="inner-sleeve"> 3177 <div class="nav topNav"><ul><li class="first footer-nav-header"><span>Topics</span></li><li class=""><a href="https://www.drugtargetreview.com/topics/technology">Technology</a></li><li class=""><a href="https://www.drugtargetreview.com/topics/resources">Resources</a></li><li class=""><a href="https://www.drugtargetreview.com/topics/diseases">Diseases</a></li><li class=""><a href="https://www.drugtargetreview.com/topics/drugs-and-therapies">Drugs and therapies</a></li><li class=""><a href="https://www.drugtargetreview.com/topics/research-and-development">Research and development</a></li><li class=""><a href="https://www.drugtargetreview.com/topics/tools-and-techniques">Tools and techniques</a></li><li class=""><a href="https://www.drugtargetreview.com/topics/business">Business</a></li><li class="footer-nav-header"><span>Advertising & Editorial</span></li><li class=""><a href="https://www.drugtargetreview.com/advertising-opportunities">Advertising opportunities</a></li><li class=""><a href="https://www.russellpublishing.com/dtr-media-planner/" class="newWindow">Media planner</a></li><li class=""><a href="https://www.drugtargetreview.com/advertising-opportunities/#tech-specs">Advertising tech specs</a></li><li class=""><a href="https://www.drugtargetreview.com/information-for-authors">Information for authors</a></li><li class=""><a href="https://www.drugtargetreview.com/reuse-policy">Reuse policy</a></li><li class="footer-nav-header"><span>Information</span></li><li class=""><a href="https://www.drugtargetreview.com/about-us">About us</a></li><li class=""><a href="https://www.drugtargetreview.com/company-information">Company information</a></li><li class=""><a href="https://www.drugtargetreview.com/about-us/#careers">Careers</a></li><li class=""><a href="https://www.drugtargetreview.com/terms-and-conditions">Terms and conditions</a></li><li class=""><a href="https://www.drugtargetreview.com/privacy-policy">Privacy policy</a></li><li class="last"><a href="https://www.drugtargetreview.com/cookie-policy">Cookie policy</a></li></ul></div><div class="rp-footer"> 3178 <div class="footer-logo"> 3179<svg class="footer-logo-desktop" width="192" height="100" viewBox="0 0 192 100" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> 3180<rect width="192" height="100" fill="url(#pattern0_2005_9833)"/> 3181<defs> 3182<pattern id="pattern0_2005_9833" patternContentUnits="objectBoundingBox" width="1" height="1"> 3183<use xlink:href="#image0_2005_9833" transform="matrix(0.00272688 0 0 0.0052356 -0.000381763 0)"/> 3184</pattern> 3185<image id="image0_2005_9833" width="367" height="191" preserveAspectRatio="none" xlink:href="data:image/png;base64,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"/> 3186</defs> 3187</svg> 3188 3189 3190 3191 3192 3193<svg class="footer-logo-mobile" width="129" height="67" viewBox="0 0 129 67" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> 3194<rect width="129" height="67" fill="url(#pattern0_2138_1637)"/> 3195<defs> 3196<pattern id="pattern0_2138_1637" patternContentUnits="objectBoundingBox" width="1" height="1"> 3197<use xlink:href="#image0_2138_1637" transform="matrix(0.0027248 0 0 0.00524625 0 -0.00101671)"/> 3198</pattern> 3199<image id="image0_2138_1637" width="367" height="191" preserveAspectRatio="none" xlink:href="data:image/png;base64,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"/> 3200</defs> 3201</svg> 3202 3203 </div> 3204 <div class="footer-tagline"> 3205 The trusted voice in drug discovery 3206 </div> 3207 </div> 3208 3209 3210<div class="footerSocial"> 3211 <span class="footerSocialText">Find us on social media:</span> 3212 <ul> 3213 <!-- 3214 <li class="footerSocialFacebook"> 3215 <a href="https://www.facebook.com/DrugTargetReview" title="Connect with us on Facebook"></a> 3216 </li> 3217 <li class="footerSocialTwitter"> 3218 <a href="https://twitter.com/DrugTargetRev" title="Connect with us on Twitter"></a> 3219 </li> 3220 --> 3221 <li class="footerSocialLinkedin"> 3222 <a href="https://www.linkedin.com/company/drug-target-review" title="Connect with us on Linked in"></a> 3223 </li> 3224 <!-- 3225 <li class="footerSocialEmail"> 3226 <a href="#" title="Email us"></a> 3227 </li> 3228 <li class="footerSocialYoutube"> 3229 <a href="#" title="Connect with us on Youtube"></a> 3230 </li> 3231 <li class="footerSocialVimeo"> 3232 <a href="#" title="Connect with us on Vimeo"></a> 3233 </li> 3234 <li class="footerSocialPinterest"> 3235 <a href="#" title="Connect with us on Pinterest"></a> 3236 </li> 3237 <li class="footerSocialInstagram"> 3238 <a href="#" title="Connect with us on Instagram"></a> 3239 </li> 3240 <li class="footerSocialBluesky"> 3241 <a href="#" title="Connect with us on Bluesky"></a> 3242 </li> 3243 --> 3244 </ul> 3245</div> 3246 </div> 3247 </div> 3248 <div class="container bottomNav"><div class="inner-sleeve"><ul><li class="first"><a href="https://www.drugtargetreview.com/topics-a-z">Topics A-Z</a></li><li><a href="https://www.drugtargetreview.com/writers-a-z">Writers A-Z</a></li><li class="last">© 2026 Drug Target Review</li></ul></div></div> 3249 <div class="bottom"> 3250 <div class="container footerBottomNavPageText"> 3251 <div class="inner-sleeve"> 3252 3253 <p class="webvision">Site powered by <a href="https://www.abacusemedia.com/webvisioncloud">Webvision Cloud</a></p> 3254 </div> 3255 </div> 3256 </div> 3257</div> 3258 3259 </div> 3260 </div> 3261
3261<script src="/Magazine/core.js?p=8039869216058437" defer></script>
3261 3262 3263
3263<script async src="https://marketing.drugtargetreview.com/DM-7093923174-01/ddgtag.js"></script>
3263 3264
3265<script> 3266 $(window).one("abacus:loadcontent:complete", function(e, t) { //RPCS-134: Webinar dates shown after byline 3267 if( $('div.leadgen-content div.leadgen-webinar-date').length == 0 || $('byline.meta.eventDate div.leadgen-webinar-date').length > 0 ) 3268 return; 3269 3270 setTimeout( function(){ 3271 var bmd = $('.byline.meta.eventDate'), lcd = $('.leadgen-content-details'); 3272 var authors = bmd.find('span.author'); 3273 if( authors.length > 0 ){ 3274 authors.last().after('<br>'); 3275 } 3276 3277 var rhDateDiv = lcd.find('div.leadgen-webinar-date:has(span.date.visible)').clone(); 3278 if(rhDateDiv.length == 1) bmd.append(rhDateDiv); 3279 3280 var rhTimeDiv = lcd.find('div.leadgen-webinar-time:has(span.date.visible)').clone(); 3281 if(rhTimeDiv.length == 1) bmd.append(rhTimeDiv); 3282 3283 }, 250); 3284 }); 3285</script>
3285 3286 3287 3288
3289<script type="application/ld+json">{ 3290 "@context": "https://schema.org", 3291 "@type": "Article", 3292 "description": "In part two of our AACR 2026 coverage, industry leaders were focussed on how the field is no longer constrained by data generation or molecular design, but by the challenge of connecting systems, standardising workflows and ensuring biological insights.", 3293 "image": "https://dft2fymcn9opj.cloudfront.net/Pictures/2000xAny/3/1/6/21316_conferencehall_256294.jpg", 3294 "mainEntityOfPage": { 3295 "@type": "WebPage", 3296 "@id": "https://www.drugtargetreview.com/aacr-2026-part-two-integrating-ai-spatial-biology-and-next-gen-therapeutics/2135691.article" 3297 }, 3298 "author": { 3299 "@type": "Person", 3300 "name": "Sam Wightwick" 3301 }, 3302 "dateCreated": "2026-06-11", 3303 "dateModified": "2026-06-12", 3304 "datePublished": "2026-06-11", 3305 "hasPart": { 3306 "@type": "WebPageElement", 3307 "isAccessibleForFree": false, 3308 "cssSelector": ".restrictedcontent" 3309 }, 3310 "headline": "Oncology drug development focuses on clinical translation and systems integration at AACR 2026", 3311 "isAccessibleForFree": false, 3312 "publisher": { 3313 "@type": "Organization", 3314 "name": "Drug Target Review", 3315 "logo": { 3316 "@type": "ImageObject", 3317 "url": "https://www.drugtargetreview.com/magazine/dest/graphics/logo/logo.png" 3318 } 3319 } 3320}</script>
3320 3321 3322 3323 3324 3325 </body> 3326</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.