CINXE.COM
Timeline & Budget | Clean Aviation
<!DOCTYPE html> <html lang="en" dir="ltr" prefix="og: https://ogp.me/ns#"> <head> <meta charset="utf-8" /> <meta name="description" content="The timeline provides a clear overview of Clean Aviation's key milestones and budget allocations for the duration of Phase 2, spanning from January 2025 to end" /> <link rel="canonical" href="https://www.clean-aviation.eu/timeline-budget" /> <meta property="og:url" content="https://www.clean-aviation.eu/timeline-budget" /> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:title" content="Timeline & Budget" /> <meta name="twitter:description" content="The timeline provides a clear overview of Clean Aviation's key milestones and budget allocations for the duration of Phase 2, spanning from January 2025 to end 2030.In Phase 2, our focus will be on" /> <meta name="twitter:url" content="https://www.clean-aviation.eu/timeline-budget" /> <!-- Matomo Tag Manager --> <script> var _mtm = window._mtm = window._mtm || []; _mtm.push({'mtm.startTime': (new Date().getTime()), 'event': 'mtm.Start'}); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.async=true; g.src='https://cdn.matomo.cloud/esn.matomo.cloud/container_DALAPMNe.js'; s.parentNode.insertBefore(g,s); </script> <!-- End Matomo Tag Manager --> <script id="Cookiebot" src="https://consent.cookiebot.com/uc.js" data-cbid="2cefdd57-ab28-4380-888c-fa8979fc8654" data-blockingmode="auto" type="text/javascript"></script> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Jaldi:wght@400;700&display=swap" rel="stylesheet"> <!-- Matomo --> <script> var _paq = window._paq = window._paq || []; /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u="https://esn.matomo.cloud/"; _paq.push(['setTrackerUrl', u+'piwik.php']); _paq.push(['setSiteId', '7']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.async=true; g.src='//cdn.matomo.cloud/esn.matomo.cloud/piwik.js'; s.parentNode.insertBefore(g,s); })(); </script> <!-- End Matomo Code --> <!-- Hotjar Tracking Code for https://clean-aviation.eu/ --> <script> (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:2960384,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); </script> <meta property="og:image" content="/sites/default/files/CA%20logo.jpg" /> <meta name="image_src" content="/sites/default/files/CA%20logo.jpg" /> <meta name="MobileOptimized" content="width" /> <meta name="HandheldFriendly" content="true" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="icon" href="/sites/default/files/default-favicon.ico" type="image/vnd.microsoft.icon" /> <link rel="alternate" hreflang="en" href="https://www.clean-aviation.eu/timeline-budget" /> <title>Timeline & Budget | Clean Aviation</title> <link rel="stylesheet" media="all" href="/sites/default/files/css/css_-N80rwuwnDI5SVRmbFisPaXSEjPQnOTHYnGHa0FuZHA.css?delta=0&language=en&theme=ocelot_paddle&include=eJx9kdGOhCAMRX8I5JNIKVWJhRrA3XG_ftFhYmY27hNwONbrFYEpecgG-2aoM0VSK3jPZFEyGQ9ldgLZq1WYjc_bCjwce80hLUUVwQBsI_kA9kTmL-qDy14qReOgkBIklmqf7zITiwPWpe7Nnz4uUeIqiVIdXCbwmLfo7hWGn_32dpQcdYQEE3k9Bv7McZkzRLflifKtEWKbouhRj098NdOPCkWWcHSYanOtY8GFWtMn1h3rjhXDLluztsC-WfVbUNgWwhokqbNI09JWygPCesK7VKf89gtHSLg7eVywu-V6rLwi-FBQvijvpvEW4p-eW3RdCDLO6rlYWIOFrcphMVUyN_wX8Tn4bQ" /> <link rel="stylesheet" media="all" href="/sites/default/files/css/css_0cshiC5fON_0FA1dwBCqU83cGSZS6FJ5DT7VPPW5joY.css?delta=1&language=en&theme=ocelot_paddle&include=eJx9kdGOhCAMRX8I5JNIKVWJhRrA3XG_ftFhYmY27hNwONbrFYEpecgG-2aoM0VSK3jPZFEyGQ9ldgLZq1WYjc_bCjwce80hLUUVwQBsI_kA9kTmL-qDy14qReOgkBIklmqf7zITiwPWpe7Nnz4uUeIqiVIdXCbwmLfo7hWGn_32dpQcdYQEE3k9Bv7McZkzRLflifKtEWKbouhRj098NdOPCkWWcHSYanOtY8GFWtMn1h3rjhXDLluztsC-WfVbUNgWwhokqbNI09JWygPCesK7VKf89gtHSLg7eVywu-V6rLwi-FBQvijvpvEW4p-eW3RdCDLO6rlYWIOFrcphMVUyN_wX8Tn4bQ" /> <link rel="stylesheet" media="print" href="/sites/default/files/css/css_ajdPgzzV8QtSmahDusbtFrvzvuca-HiWnbsTk_QqCaM.css?delta=2&language=en&theme=ocelot_paddle&include=eJx9kdGOhCAMRX8I5JNIKVWJhRrA3XG_ftFhYmY27hNwONbrFYEpecgG-2aoM0VSK3jPZFEyGQ9ldgLZq1WYjc_bCjwce80hLUUVwQBsI_kA9kTmL-qDy14qReOgkBIklmqf7zITiwPWpe7Nnz4uUeIqiVIdXCbwmLfo7hWGn_32dpQcdYQEE3k9Bv7McZkzRLflifKtEWKbouhRj098NdOPCkWWcHSYanOtY8GFWtMn1h3rjhXDLluztsC-WfVbUNgWwhokqbNI09JWygPCesK7VKf89gtHSLg7eVywu-V6rLwi-FBQvijvpvEW4p-eW3RdCDLO6rlYWIOFrcphMVUyN_wX8Tn4bQ" /> </head> <body class="sticky-navigation-enabled node-2435 path-node page-node-type-page"> <a href="#region-content" class="visually-hidden focusable"> Skip to main content </a> <div class="dialog-off-canvas-main-canvas" data-off-canvas-main-canvas> <div class="page-wrapper-container"> <div class="page-wrapper"> <header class="header"> <div class="header-content"> <div class="container-max-xxl"> <div class="header__top"> <div class="navbar navbar-light navbar-expand-lg"> <div class="collapse navbar-collapse"> <div id="region-header_top" class="region region--header-top"> <div id="block-topnavigation" class="system-menu-blocktop-navigation"> <ul class="navbar-nav menu--main"> <li class="nav-item menu__item"> <a href="/contact" class="nav-link" data-drupal-link-system-path="node/1558">Contact</a> </li> <li class="nav-item menu__item"> <a href="https://circabc.europa.eu/faces/jsp/extension/wai/login.jsp?_alfRedirect=/w/browse/ef1a9b1c-10af-4a71-90d4-bf8fc66a3287" class="nav-link">Extranet</a> </li> <li class="nav-item menu__item"> <a href="https://ec.europa.eu/info/research-and-innovation/funding/funding-opportunities/funding-programmes-and-open-calls/horizon-europe_en" class="nav-link">EU flag</a> </li> </ul> </div> </div> </div> </div> </div> <div class="header__wrapper"> <a href="/" title="Go to the homepage" class="logo"> <img src="/sites/default/files/logo-ca.jpg" alt="Clean Aviation home page" class="img-fluid" /> </a> <button class="navbar-toggler hamburger" type="button" data-bs-toggle="collapse" data-bs-target="#main-navbar" aria-controls="main-navbar" aria-expanded="false" aria-label="Navigation"> <span class="hamburger-text">Menu</span> <span class="hamburger-box"> <span class="hamburger-inner"></span> </span> </button> <div class="navbar navbar-light navbar-expand-lg"> <div class="collapse navbar-collapse" id="main-navbar"> <div role="navigation" id="block-mainnavigation" class="system-menu-blockmain"> <ul class="navbar-nav menu--main"> <li class="nav-item menu-item--expanded dropdown menu__item"> <a href="/about-us" class="dropdown-toggle nav-link " role="button" data-bs-toggle="dropdown" aria-expanded="false" data-menu="clickable"> About us </a> <ul class="dropdown-menu"> <li class="dropdown-item menu-item--collapsed menu__item"> <a href="/who-we-are" data-drupal-link-system-path="node/1622">Who we are</a> </li> <li class="dropdown-item menu-item--collapsed menu__item"> <a href="/about-us/what-we-do">What we do</a> </li> <li class="dropdown-item menu__item"> <a href="/about-us/key-documents" data-drupal-link-system-path="node/1815">Key documents</a> </li> <li class="dropdown-item menu-item--collapsed menu__item"> <a href="/about-us/who-we-are/organisation/team-and-vacancies" data-drupal-link-system-path="node/1625">Team and vacancies</a> </li> </ul> </li> <li class="nav-item menu-item--expanded active dropdown menu__item"> <a href="/clean-aviation" class="dropdown-toggle nav-link active " role="button" data-bs-toggle="dropdown" aria-expanded="false" data-menu="clickable"> Clean Aviation </a> <ul class="dropdown-menu"> <li class="dropdown-item menu-item--collapsed menu__item"> <a href="/clean-aviation/our-energy-efficiency-and-emission-reduction" data-drupal-link-system-path="node/2428">Our energy efficiency and Emissions reduction</a> </li> <li class="dropdown-item menu__item"> <a href="/clean-aviation/our-energy-efficiency-and-emission-reduction/our-strategic-research-innovation-agenda" data-drupal-link-system-path="node/2429">Our Strategic Research & Innovation Agenda</a> </li> <li class="dropdown-item menu__item"> <a href="/clean-aviation/clean-aviation-projects" data-drupal-link-system-path="node/2434">Clean Aviation projects</a> </li> <li class="dropdown-item active menu__item"> <a href="/timeline-budget" class="active is-active" data-drupal-link-system-path="node/2435" aria-current="page">Timeline & Budget</a> </li> <li class="dropdown-item menu__item"> <a href="/impact-monitoring" data-drupal-link-system-path="node/1632">Impact Monitoring</a> </li> <li class="dropdown-item menu-item--collapsed menu__item"> <a href="/participation" data-drupal-link-system-path="node/1630">Participation</a> </li> </ul> </li> <li class="nav-item menu-item--expanded dropdown menu__item"> <a href="/clean-sky-2" class="dropdown-toggle nav-link " role="button" data-bs-toggle="dropdown" aria-expanded="false" data-menu="clickable"> Clean Sky 2 </a> <ul class="dropdown-menu"> <li class="dropdown-item menu-item--collapsed menu__item"> <a href="/clean-sky-2/programme-overview-and-structure" data-drupal-link-system-path="node/1554">Programme overview and structure</a> </li> <li class="dropdown-item menu-item--collapsed menu__item"> <a href="/clean-sky-2/participation" data-drupal-link-system-path="node/1640">Participation</a> </li> <li class="dropdown-item menu-item--collapsed menu__item"> <a href="/clean-sky-2/results-stories">Results stories</a> </li> <li class="dropdown-item menu-item--collapsed menu__item"> <a href="/clean-sky-2/clean-sky-2s-demonstrators" data-drupal-link-system-path="node/2427">Demonstrators</a> </li> <li class="dropdown-item menu__item"> <a href="/progress-results" data-drupal-link-system-path="node/1641">Progress & Results</a> </li> <li class="dropdown-item menu__item"> <a href="/technology-evaluator" data-drupal-link-system-path="node/36">Technology Evaluator</a> </li> <li class="dropdown-item menu__item"> <a href="/clean-sky-2/facts-and-figures" data-drupal-link-system-path="node/2083">Facts and Figures</a> </li> </ul> </li> <li class="nav-item menu-item--expanded dropdown menu__item"> <a href="/media" class="dropdown-toggle nav-link " role="button" data-bs-toggle="dropdown" aria-expanded="false" data-menu="clickable"> Media </a> <ul class="dropdown-menu"> <li class="dropdown-item menu-item--collapsed menu__item"> <a href="/media/news" data-drupal-link-system-path="node/1450">News</a> </li> <li class="dropdown-item menu-item--collapsed menu__item"> <a href="/media/events" data-drupal-link-system-path="node/1488">Events</a> </li> <li class="dropdown-item menu-item--collapsed menu__item"> <a href="/media/publications" data-drupal-link-system-path="node/1449">Publications</a> </li> <li class="dropdown-item menu__item"> <a href="/media/e-news" data-drupal-link-system-path="node/30">E-news</a> </li> <li class="dropdown-item menu-item--collapsed menu__item"> <a href="/results-stories" data-drupal-link-system-path="node/1456">Results Stories</a> </li> <li class="dropdown-item menu-item--collapsed menu__item"> <a href="/media/qa-with-axel-krein-on-the-future-of-aviation" data-drupal-link-system-path="node/1491">Executive director's blog</a> </li> <li class="dropdown-item menu__item"> <a href="/media/facts-and-figures" data-drupal-link-system-path="node/31">Facts and Figures</a> </li> <li class="dropdown-item menu-item--collapsed menu__item"> <a href="/plane-and-simple-podcasts" data-drupal-link-system-path="node/2367">Podcast</a> </li> <li class="dropdown-item menu__item"> <a href="/media/press-information" data-drupal-link-system-path="node/2133">Press</a> </li> </ul> </li> <li class="nav-item menu__item"> <a href="/high-five-winners-2023" class="nav-link" data-drupal-link-system-path="node/2120">High Five Ambassadors</a> </li> </ul> </div> <div class="paddle-search-form-1 paddle-search-form icon-only" data-drupal-selector="paddle-search-form-1" novalidate="novalidate" id="block-searchform"> <span class="search-toggle fas fa-search" tabindex="0" aria-label="Search" role="button" aria-expanded="false"></span> <form action="/timeline-budget" method="post" id="paddle-search-form-1" accept-charset="UTF-8"> <div class="search-wrapper js-form-wrapper form-group" data-drupal-selector="edit-search-wrapper" id="edit-search-wrapper"> <div class="js-form-item form-item js-form-type-search-api-autocomplete form-type-search-api-autocomplete js-form-item-search form-item-search form-no-label form-group"> <label for="edit-search" class="sr-only"> Search </label> <input data-drupal-selector="edit-search" data-search-api-autocomplete-search="search" class="form-autocomplete form-text form-control" data-autocomplete-path="/search_api_autocomplete/search?display=search_overview&arguments%5B0%5D=all&tid%5B0%5D=all&nid=1" type="text" id="edit-search" name="search" value="" size="60" maxlength="128" placeholder="Type here to start a research" /> </div> <input class="btn-secondary button js-form-submit form-submit btn" data-drupal-selector="edit-submit" type="submit" id="edit-submit" name="op" value="Search" /> </div> <input data-drupal-selector="form-9wp9ivwa7auufazctryjcma-i5qyjk-kcshabj8auss" type="hidden" name="form_build_id" value="form-9Wp9IvwA7AuUFazCTRYjCma_I5qYjk_KCsHAbJ8auSs" class="form-control" /> <input data-drupal-selector="edit-paddle-search-form-1" type="hidden" name="form_id" value="paddle_search_form_1" class="form-control" /> </form> </div> </div> </div> </div> </div> </div> <div class="amorphic"> <img src="/themes/custom/ocelot_paddle/assets/images/amorphic.svg" alt=""/> </div> </header> <main> <a id="main-content" tabindex="-1"></a> <div id="region-breadcrumb" class="region region--breadcrumb"> <div class="container-max-xxl"> <div id="block-ocelot-paddle-breadcrumbs"> <div> <h2 id="system-breadcrumb" class="visually-hidden">You are here</h2> <ol class="breadcrumb"> <li class="breadcrumb-item"> <a href="/"><i class="fas fa-home" aria-hidden="true"></i><span class="visually-hidden">Home</span></a> </li> </ol> </div> </div> </div> </div> <div class="region-wrapper--content"> <div class="container-max-xxl"> <div id="region-content_top" class="region region--content-top"> </div> </div> <div class="container-max-xxl"> <div id="region-content" class="region region--content"> <div id="block-ocelot-paddle-page-title" class="node-page-title"> <h1 tabindex="0">Timeline & Budget</h1> </div> <div data-drupal-messages-fallback class="hidden"></div> <div id="block-ocelot-paddle-content"> <article class="no-image node node--page node--page--full view-mode--full" role="presentation"> <div> <div class="layout-builder__custom container_region layout-builder layout layout--onecol" style=""> <div style="--margin:0px;" class="layout__region layout__region--content"> <div id="field_block:node:page:body" class="field-block field-body"> <div class="field field--body field--type--text-with-summary"> <div class="items"> <div class="item"><p>The timeline provides a clear overview of Clean Aviation's key milestones and budget allocations for the duration of Phase 2, spanning from January 2025 to end 2030.<o:p></o:p></p><p>In Phase 2, our focus will be on accelerating the development and maturation of new technologies through integrated demonstration. We will launch three Calls for Proposals to drive innovation and help bring these technologies closer to market readiness.<span style="font-size:12.0pt;" lang="en-BE"><o:p></o:p></span></p><p><span class="file file--mime-application-pdf file--application-pdf file-id-3744"> <a class="btn btn-primary" href="https://www.clean-aviation.eu/sites/default/files/2024-09/2024-Timeline-budget.pdf" type="application/pdf; length=63329"><span class="link__file">Timeline and Budget</span> <span class="file__size">(61.84 KB)</span> <i class="file_type fas fa-file-pdf"></i><span class="visually-hidden">"pdf"</span></a></span></p></div> </div> </div> </div> </div> </div> </div> </article> </div> </div> </div> </div> </main> <footer class="sticky-footer"> <div class="amorphic"> <img src="/themes/custom/ocelot_paddle/assets/images/amorphic180.svg" alt=""/> </div> <div class="sticky-footer-content"> <div class="region-wrapper--footer"> <div class="container-max-xxl"> <div id="region-footer" class="region region--footer"> <div class="container-max-xxl"> <div id="block-richfooter"> <div class="layout-builder__custom container_region layout-builder layout layout--onecol" style=""> <div style="--margin:0px;" class="layout__region layout__region--content"> <div class="paddle-component-wrapper paddle-components-top-bottom-only-block-wrapper comp_footer_subscribe" id="paddle_components_top_bottom_only_block_dd1b1e7d-8df5-4ee6-8da8-ef19dca5c9b1"> <div class="paddle-component paddle-component--top-bottom-only-block"> <div class="paddle-component paddle-component--top-section text"> <span class="top-section-icon"> <picture> <source srcset="/sites/default/files/styles/original_ratio_xxxxl/public/2021-07/footer-subs-icon.svg?itok=zoqnasn5 1x" media="(min-width: 4000px)" type="image/svg+xml"/> <source srcset="/sites/default/files/styles/original_ratio_xxxl/public/2021-07/footer-subs-icon.svg?itok=2r0hESBq 1x" media="(min-width: 2000px)" type="image/svg+xml"/> <source srcset="/sites/default/files/styles/original_ratio_xl/public/2021-07/footer-subs-icon.svg?itok=t7GuS_jW 1x" media="(min-width: 1200px)" type="image/svg+xml"/> <source srcset="/sites/default/files/styles/original_ratio_lg/public/2021-07/footer-subs-icon.svg?itok=WdFARQEx 1x" media="(min-width: 992px)" type="image/svg+xml"/> <source srcset="/sites/default/files/styles/original_ratio_md/public/2021-07/footer-subs-icon.svg?itok=moy53Htr 1x" media="(min-width: 768px)" type="image/svg+xml"/> <source srcset="/sites/default/files/styles/original_ratio_sm/public/2021-07/footer-subs-icon.svg?itok=8EAO5JVp 1x" media="(min-width: 576px)" type="image/svg+xml"/> <div class="svg-formatter"><img src="/sites/default/files/2021-07/footer-subs-icon.svg" alt="" class="img-fluid" /> </div> </picture> </span> Subscribe to our newsletter </div> <div class="paddle-component paddle-component--bottom-section"> <a href="/newsletter">Subscribe</a> </div> </div> </div> </div> </div> <div class="layout layout--twocol-section layout--twocol-section--50-50 layout-builder__custom container_region layout-builder__layout--twocol row" style=""> <div style="--margin:0px;" class="layout__region layout__region--first col-md-12"> <div class="paddle-component-wrapper paddle-components-text-block-wrapper footer-social-media" id="paddle_components_text_block_5d607148-3199-4033-a6d1-d221ea39b930"> <div class="paddle-component paddle-component--text-block"> <div class="paddle-component--body-section"><ul><li><a href="https://twitter.com/clean_aviation">Twitter</a></li><li><a href="https://www.linkedin.com/company/clean-sky-joint-undertaking">Linkedin</a></li><li><a href="https://www.youtube.com/watch?v=c-hFMiFsDsE&list=PLL-rQT06nC9WA0OE8cWpDDWHzAlWe6qfz&index=1">Youtube</a></li><li><a href="https://flic.kr/ps/YMYSZ">Flickr</a></li><li><a href="/gallery" data-entity-type="node" data-entity-uuid="44abbb4b-b82b-4c50-bf8b-6f14668e305c" data-entity-substitution="canonical" title="Gallery">Gallery</a></li></ul></div> </div> </div> </div> <div style="--margin:0px;" class="layout__region layout__region--second col-md-12"> <div class="paddle-component-wrapper paddle-components-text-block-wrapper comp_footer_disclaimer" id="paddle_components_text_block_7eeabb3a-df50-4fac-b847-8522e9516398"> <div class="paddle-component paddle-component--text-block"> <div class="paddle-component--body-section"> <article class="fancybox-gallery media" tabindex="0" data-src="https://www.clean-aviation.eu/sites/default/files/2024-07/footer-eu-flag.svg" role="presentation"> <img class="original img-fluid" src="/sites/default/files/2024-07/footer-eu-flag.svg" alt> </article> <p>漏 Copyright Clean Aviation <a href="/data-protection-legal-notice" data-entity-type="node" data-entity-uuid="713e73ec-a414-442f-9855-77d485a30c24" data-entity-substitution="canonical" title="Data Protection & Legal Notice">Data Protection</a> & <a href="/data-protection-legal-notice" data-entity-type="node" data-entity-uuid="713e73ec-a414-442f-9855-77d485a30c24" data-entity-substitution="canonical" title="Data Protection & Legal Notice">Legal Notice</a> </p></div> </div> </div> </div> </div> </div> </div> </div> </div> </div> <div class="footer-copyright-wrapper"> <div class="container-max-xxl"> <div class="footer-copyright"> <a href="https://www.paddle.be" class="paddle-link" title="Paddle, a Drupal CMS" target="_blank"> <img src="/themes/custom/ocelot_paddle/assets/images/logo.svg" alt="paddle.be"/> </a> </div> </div> </div> </div> </footer> </div> </div> </div> <script type="application/json" data-drupal-selector="drupal-settings-json">{"path":{"baseUrl":"\/","pathPrefix":"","currentPath":"node\/2435","currentPathIsAdmin":false,"isFront":false,"currentLanguage":"en"},"pluralDelimiter":"\u0003","suppressDeprecationErrors":true,"ajaxPageState":{"libraries":"eJx9UtFuxCAM-yFopf0QCiHXogaCgN7Gvn6019up27oXBLaJjA0CU3SQRzw2Q50pkEKRxZNBiZViNZYFF-qqHdYHrA9Y0UdlH5fR5TUBD8dRMTRZ--XVs-uX67ugsCmE1Ut8ss4XlDvlNkqkzqtAzsN481wpDwhpFwsSSzUJnGPqNkLq6lgHy_DZ_mG7P10IMs7XokzgMK_BXkpukoMOEGEip7szulTOEOyap57JlcKHPuWS3R__g51YLLAutfVUJ_VAjc2yUDR77tuicaa9jIP_nlle48uLzDQ6KLMVyO6E3iBis_JxAgtxb-1NAyKV4q1nX9tJUX0gk4Rbj4fPjCQT4e4n2Jrc-k69etW1_Pww215vjyjqUZaB5A2sVTbrTHVz8CeuiqAHNntuexhl_A0dn7q0UimMFgp9AeMvKjw","theme":"ocelot_paddle","theme_token":null},"ajaxTrustedUrl":{"form_action_p_pvdeGsVG5zNF_XLGPTvYSKCf43t8qZYSwcfZl2uzM":true},"display_top_navigation_mobile":1,"paddle_core":{"release_notifcation":{"class":""}},"data":{"extlink":{"extTarget":true,"extTargetAppendNewWindowLabel":"(opens in a new window)","extTargetNoOverride":true,"extNofollow":true,"extNoreferrer":false,"extFollowNoOverride":true,"extClass":"0","extLabel":"(link is external)","extImgClass":false,"extSubdomains":true,"extExclude":"support\\.paddle\\.be","extInclude":"","extCssExclude":".no-extlink","extCssInclude":"","extCssExplicit":"","extAlert":false,"extAlertText":"This link will take you to an external web site. We are not responsible for their content.","extHideIcons":true,"mailtoClass":"0","telClass":"","mailtoLabel":"(link sends email)","telLabel":"(link is a phone number)","extUseFontAwesome":true,"extIconPlacement":"append","extFaLinkClasses":"fa fa-external-link-alt","extFaMailtoClasses":"fa fa-envelope-o","extAdditionalLinkClasses":"","extAdditionalMailtoClasses":"","extAdditionalTelClasses":"","extFaTelClasses":"fa fa-phone","whitelistedDomains":[],"extExcludeNoreferrer":""}},"cookieContentBlocker":{"consentAwareness":{"accepted":{"event":{"name":"click","selector":".agree-button"},"cookie":{"operator":"===","name":"cookie-agreed","value":"2"}},"declined":{"event":{"name":"click","selector":".decline-button"},"cookie":{"operator":"===","name":"cookie-agreed","value":"0"}},"change":{"event":{"name":"click","selector":".eu-cookie-withdraw-tab"}}},"categories":{"required":{"consentAwareness":{"accepted":{"event":{"name":"","selector":""},"cookie":{"operator":"c","name":"cookie-agreed-categories","value":"required"}},"declined":{"event":{"name":"","selector":""},"cookie":{"operator":"","name":"","value":""}},"change":{"event":{"name":"","selector":""}}}},"statistics":{"consentAwareness":{"accepted":{"event":{"name":"","selector":""},"cookie":{"operator":"c","name":"cookie-agreed-categories","value":"statistics"}},"declined":{"event":{"name":"","selector":""},"cookie":{"operator":"","name":"","value":""}},"change":{"event":{"name":"","selector":""}}}}}},"eu_cookie_compliance":{"popup_enabled":false},"drupalSettings":{"drupalSettings":{"paddle_font_resize":{"font_size_small":"14","font_size_normal":"18","font_size_large":"22","font_size":""}}},"user":{"uid":0,"permissionsHash":"95d7bd36529aea4becc61aff685b02aa4d7c6f3d933657db34e039ae0c8b7267"}}</script> <script src="/sites/default/files/js/js_riulRM6G9halEZkk_ALMyp_0v29Rpi9wYni4b7O1eDI.js?scope=footer&delta=0&language=en&theme=ocelot_paddle&include=eJxtkGtuAyEMhC8EQeqFLON1NtY6GIFThds3-2jzUP9g-GY0HlFxmpSBrHHqrEz-FZGIe5csKj5CfXG4XBmq6TiL6rtiFQp-y4wuVmCSXhVHMGI1h92ZZrWMGrsPlTIHvvtjLmlqt4p6Op6BzBZZY4tzcchqtHBLO44Hjgf-LZGbLVxgy1uPSBd-1beSZyw0st2f8FqtPNJ6el4_Ov8Jp21j7IyNLmEfgFUAb26rS9nXP_yX_wBGP42i"></script> <!-- CookieBot YouTube video --> <script type="text/javascript"> window.addEventListener( "CookiebotOnAccept", function (e) { if (!Cookiebot.consent.marketing) { jQuery("iframe.cookieconsent-optin-marketing").each(function () { //if (jQuery(this).css('display') == 'none') { var iframeSrc = jQuery(this).attr("data-src"); url = iframeSrc.replace(/(>|<)/gi, "").split(/(vi\/|v=|\/v\/|youtu\.be\/|\/embed\/)/); if (url[2] !== undefined) { ytId = url[2].split(/[^0-9a-z_\-]/i); ytId = ytId[0]; jQuery(this).after( '<div class="yt_thumb"><a href="https://www.youtube.com/watch?v=' + ytId + '" target="_blank"><img src="https://i.ytimg.com/vi/' + ytId + '/hqdefault.jpg" alt=""/></a></div>' ); } //} if (jQuery("body").hasClass("path-frontpage")) { jQuery(this).parents(".view-mode-teaser").addClass("yt-img-on"); } }); } }, false ); window.addEventListener( "CookiebotOnDecline", function (e) { jQuery("iframe.cookieconsent-optin-marketing").each(function () { var iframeSrc = jQuery(this).attr("data-src"); url = iframeSrc.replace(/(>|<)/gi, "").split(/(vi\/|v=|\/v\/|youtu\.be\/|\/embed\/)/); if (url[2] !== undefined) { ytId = url[2].split(/[^0-9a-z_\-]/i); ytId = ytId[0]; jQuery(this).after( '<div class="yt_thumb"><a href="https://www.youtube.com/watch?v=' + ytId + '" target="_blank"><img src="https://i.ytimg.com/vi/' + ytId + '/hqdefault.jpg" alt=""/></a></div>' ); } if (jQuery("body").hasClass("path-frontpage")) { jQuery(this).parents(".view-mode-teaser").addClass("yt-img-on"); } }); }, false ); window.addEventListener( "CookiebotOnAccept", function (e) { console.log("Accepted"); }, false ); </script> <script src="https://cdn.jsdelivr.net/npm/owl.carousel@2.3.4/dist/owl.carousel.min.js"></script> <script type="text/javascript"> jQuery(window).on("load resize", function () { checkWindowWidth(); }); function checkWindowWidth() { var windowWidth = window.innerWidth; if (windowWidth > 991) { jQuery("#main-navbar .paddle-search-form").insertBefore("#block-topnavigation"); } } jQuery(document).ready(function () { if (jQuery("body").hasClass("body_cleansky_map")) { jQuery(".paddle-components-list-block-wrapper .paddle-component--body-section ul li> a").contents().unwrap(); } var cs2_article_dropdown_label = "Choose innovative technologies:"; if (jQuery("body").hasClass("body_overview")) { jQuery(".body_publications .card").each(function (index) { var new_src = jQuery(".image", this).css("background-image").replace("/styles/search_teaser/public", ""); jQuery(".image", this).css("background-image", new_src); let a_url = jQuery("a.card-link", this).attr("href"); jQuery('<a class="page_url" href="' + a_url + '">').insertBefore(jQuery(".row.no-gutters", this)); }); if (jQuery("body").hasClass("body_cs2_articles")) { //jQuery('.block-facet h2').text(cs2_article_dropdown_label).css('visibility', 'visible'); jQuery(".block-facet h2").css("visibility", "visible"); jQuery(".card").each(function () { let label_new_article = jQuery(".field--body .item", this).text(); if (label_new_article == "new") { jQuery(this).append('<span class="new--article">New</span>'); } }); } } if (jQuery(".comp--btn-txt-over-img").length) { jQuery(".comp--btn-txt-over-img").closest(".layout--threecol-section--33-34-33").addClass("comp--btn-txt-over-img-wrapper"); } //Homepage if (jQuery("body").hasClass("body_homepage")) { jQuery(".comp--hp-publications article.view-mode--middle").each(function () { jQuery("h2", this).insertBefore(jQuery(".field--body .items", this)); jQuery("article.media source", this).remove(); let pub_img_src = jQuery("article.media img", this).attr("src").replace("/styles/16_9_zero/public", ""); jQuery("article.media img", this).attr("src", pub_img_src); }); } if (jQuery("body").hasClass("body--hfa-winners-2023")) { jQuery(".header__wrapper").append('<div class="header-hashtag">#HighFive2023</div>'); } if (jQuery("body").hasClass("page-node-type-event")) { jQuery(".field-date .badge.badge-light time:first")[0].nextSibling.nodeValue = ""; jQuery( ".field-block.field-date, .extra-field-block.field-ical, .field-block.field-address, .field-block.field-organiser, .field-block.field-phone, .field-block.field-mail, .field-block.field-website" ).wrapAll('<div class="event-info-wrapper comp_block_with_shadow"><div class="paddle-component"></div></div>'); jQuery(".event-info-wrapper .paddle-component").prepend('<div class="paddle-component--top-section text">Event information</div>'); } // --- Timeline --- if (jQuery("body").hasClass("body_timeline")) { jQuery("body").append('<div class="tl--overlay" />'); } jQuery(".timeline_content").each(function (index) { let tl_class = "timeline--item-no-" + index; jQuery(this).addClass(tl_class); }); jQuery(".timeline_slide").each(function (index) { var this_html = jQuery(this).html(); jQuery(".timeline .timeline__items").append( jQuery('<div class="timeline__item"><div id="timeline--item-no-' + index + '" class="timeline__content">' + this_html + "</div></div>") ); }); jQuery(".timeline__content").click(function () { let tl_slide_id = jQuery(this).attr("id"); jQuery(".tl--overlay").addClass("tl--overlay-show"); jQuery("." + tl_slide_id).addClass("tl--content-show"); }); jQuery(".tl--overlay, .cancel_btn").click(function () { jQuery(".tl--overlay").removeClass("tl--overlay-show"); jQuery(".timeline_content").removeClass("tl--content-show"); }); jQuery(".body_timeline .paddle-components-text-block-wrapper.timeline_content").each(function () { jQuery(this).find(".paddle-component--top-section.image").append(jQuery(this).find(".paddle-component--body-section p:first-child")); }); // Event detail page if (jQuery("body").hasClass("body--detailpage")) { jQuery("article.node--event").prepend('<div class="tag--detailpage">Event</div>'); } jQuery(".news--carousel .paddle-component--body-section>ul").addClass("owl-carousel"); jQuery(".news--carousel .paddle-component--body-section>ul").owlCarousel({ margin: 0, nav: true, loop: true, responsive: { 0: { items: 1, }, 320: { items: 1, }, 600: { items: 1, }, 768: { items: 2, }, 1024: { items: 3, margin: 0, }, 1200: { items: 3, margin: 0, }, }, }); // End Owl-carousel }); //End document </script> <script type="text/javascript"> jQuery(document).ready(function () { var count = 0; jQuery(".body_cleansky_map article .paddle-components-list-block-wrapper").each(function () { count += jQuery(this).find(".paddle-component--body-section ul li").length; }); jQuery("#map text").text(count); function loadData(mapData) { jQuery(".eu_map #countries>g").each(function () { let current_country_code = jQuery(this).attr("id"); for (let value of mapData) { if (current_country_code == value.code) { console.log(value); jQuery("text", this).text(value.cat_num); jQuery("a", this).attr("xlink:href", value.page_url); jQuery(this).addClass("active"); } } }); } if (jQuery("#map").length) { loadData(Object.values(all_categories)); } jQuery(".cat-all").click(function (event) { event.preventDefault(); loadData(Object.values(all_categories)); }); jQuery(".cat-industry").click(function (event) { event.preventDefault(); loadData(Object.values(map_industry)); }); jQuery(".cat-research-institutions").click(function (event) { event.preventDefault(); loadData(Object.values(map_researchInstitutions)); }); jQuery(".cat-enterprises").click(function (event) { event.preventDefault(); loadData(Object.values(map_smallmediumenterprises)); }); jQuery(".cat-universities").click(function (event) { event.preventDefault(); loadData(Object.values(map_universities)); }); jQuery(".map_tabs a").on("click", function () { jQuery(this).addClass("active"); jQuery(this).parent("p").siblings().find("a").removeClass("active"); jQuery("#ca_pin text").text("Canada"); jQuery("#usa_pin text").text("USA"); }); }); //End document //Event Date if (jQuery(".event-date").length) { var timeElements = document.querySelectorAll(".event-date .items .badge-light time"); var startTime = timeElements[0].textContent.split("|")[1].split("-")[1]; var endTime = timeElements[1].textContent.split("|")[1].split("-")[1]; var date = timeElements[0].textContent.split("|")[0]; var newTime = date + " | " + startTime + " - " + endTime; timeElements[0].textContent = newTime; } if (jQuery("body").hasClass("caaf-event-day")) { jQuery("article.node--contact").each(function () { jQuery("h2", this).insertBefore(jQuery(".field--organisations > .items", this)); }); // Alters the time range to only show the start time in the table var cells = document.getElementsByClassName("views-field-time-range"); for (var i = 0; i < cells.length; i++) { var timeRange = cells[i].textContent; var startTime = timeRange.split(" ~ ")[0]; cells[i].textContent = startTime; } // Removes the , from the divs in table const divs = document.querySelectorAll("td div.paragraph"); for (let i = 0; i < divs.length; i++) { if (i !== 0) { divs[i].previousSibling.remove(); } } } // Start - Subsite - High Five Awards if (jQuery("body").hasClass("body--subsite-high-five-award")) { var w_width = window.innerWidth; var logo_path_hfa = "/sites/default/files/2023-02/logo-ss-hfa.svg"; var logo_path_hfa_mobile = "/sites/default/files/2023-02/logo_hfa_mobile.svg"; var logo_subsite_hfa = "/sites/default/files/2023-03/hfa-logo-internal.svg"; jQuery(".header .logo img").attr("src", logo_subsite_hfa).css("visibility", "visible"); if (jQuery("body").hasClass("body--hfa-homepage")) { if (w_width > 767) { jQuery(".header .logo img").attr("src", logo_path_hfa).css("visibility", "visible"); } else { jQuery(".header .logo img").attr("src", logo_path_hfa_mobile).css("visibility", "visible"); } jQuery(".layout-builder__custom.section--hfa-hero-banner .paddle-component--bottom-section").click(function () { jQuery("html, body").animate( { scrollTop: jQuery(".section--hfa-about .layout__region").offset().top, }, 1000 ); }); } if (jQuery(".section--hfa-timeline").length) { jQuery(".section--hfa-timeline .paddle-component--top-section.image source").remove(); let pub_img_src = jQuery(".section--hfa-timeline .paddle-component--top-section.image img") .attr("src") .replace("styles/original_ratio_zero/public/", ""); jQuery(".section--hfa-timeline .paddle-component--top-section.image img").attr("src", pub_img_src); } if (!jQuery("body").hasClass("body--hfa-homepage")) { if (jQuery(".section--hfa-hero-banner").length) { jQuery("body").addClass("is--hfa-hero-banner"); jQuery(".section--hfa-hero-banner").wrapAll('<div class="container-max-xxl section--hfa-hero-banner-wrapper" />'); jQuery(".section--hfa-hero-banner-wrapper").prependTo(jQuery(".region-wrapper--content")); } } if (jQuery(".news-item.spotlight.columns-3 ul.row.component--list.list-unstyled").length) { document.querySelectorAll("ul.row.component--list.list-unstyled").forEach(function (ul) { ul.querySelectorAll("li").forEach(function (li) { var item = li.querySelector(".field--featured-image .items"); var link = li.querySelector("h2 a"); if (item && link) { var linkHref = link.getAttribute("href"); var newLink = document.createElement("a"); newLink.setAttribute("href", linkHref); newLink.appendChild(item.cloneNode(true)); item.parentNode.replaceChild(newLink, item); } }); }); } if (jQuery(".sec-hf-videos .high-five-ambassadors-news").length) { jQuery(".sec-hf-videos .high-five-ambassadors-news .field--type--text-with-summary").each(function () { var $element = jQuery(this); var text = $element.text().replace("...", ""); function setBackgroundColor(color) { $element.css("background-color", color); } if (text.includes("VIDEO")) { setBackgroundColor("#77a709"); } else if (text.includes("PODCAST")) { setBackgroundColor("#003a73"); } else if (text.includes("NEWS")) { setBackgroundColor("#0083c4"); } $element.text(text); }); } } // END - Subsite - High Five Awards // Start - Highlights if (jQuery("body").hasClass("body--highlights")) { if (jQuery(".sec--hl-clean-aviation").length) { const elements = document.querySelectorAll(".sec--hl-clean-aviation .paddle-components-counter-component-block-wrapper"); const wrapper = document.createElement("div"); wrapper.classList.add("section-flex-wrapper"); elements.forEach((el) => { el.parentNode.removeChild(el); wrapper.appendChild(el); }); const firstTextBlock = document.querySelector(".sec--hl-clean-aviation .paddle-components-text-block-wrapper"); firstTextBlock.insertAdjacentElement("afterend", wrapper); } if (jQuery(".sec--hl-participation").length) { const elements = document.querySelectorAll(".sec--hl-participation .paddle-components-counter-component-block-wrapper"); const wrapper = document.createElement("div"); wrapper.classList.add("section-flex-wrapper"); elements.forEach((el) => { el.parentNode.removeChild(el); wrapper.appendChild(el); }); const firstTextBlock = document.querySelector(".sec--hl-participation .paddle-components-text-block-wrapper"); firstTextBlock.insertAdjacentElement("afterend", wrapper); } if (jQuery(".sec--hl-technical-highlights").length) { const parentDiv = document.querySelector(".sec--hl-technical-highlights"); const primaryBtn = parentDiv.querySelector(".sec--hl-technical-highlights .primary-btn"); const goalBlock = parentDiv.querySelector(".sec--hl-technical-highlights .our-goal-block"); const paddleWrapper = parentDiv.querySelector(".sec--hl-technical-highlights .paddle-components-image-block-wrapper"); const sectionWrapper = document.createElement("div"); sectionWrapper.classList.add("section-flex-wrapper"); sectionWrapper.append(goalBlock, paddleWrapper); primaryBtn.after(sectionWrapper); const pElement = document.querySelector(".sec--hl-technical-highlights .our-goal-block p"); const spanElement = document.createElement("span"); if (pElement) { while (pElement.firstChild) { spanElement.appendChild(pElement.firstChild); } pElement.appendChild(spanElement); } } if (jQuery(".sec--hl-synergies").length) { const elements = document.querySelectorAll(".sec--hl-synergies .paddle-components-counter-component-block-wrapper"); const wrapper = document.createElement("div"); wrapper.classList.add("section-flex-wrapper"); elements.forEach((el) => { el.parentNode.removeChild(el); wrapper.appendChild(el); }); const firstTextBlock = document.querySelector(".sec--hl-synergies .paddle-components-text-block-wrapper"); firstTextBlock.insertAdjacentElement("afterend", wrapper); } if (jQuery(".sec--hl-communications").length) { const elements = document.querySelectorAll(".sec--hl-communications .paddle-components-counter-component-block-wrapper"); const wrapper = document.createElement("div"); wrapper.classList.add("section-flex-wrapper"); elements.forEach((el) => { el.parentNode.removeChild(el); wrapper.appendChild(el); }); const firstTextBlock = document.querySelector(".sec--hl-communications .paddle-components-text-block-wrapper"); firstTextBlock.insertAdjacentElement("afterend", wrapper); } } if (jQuery("body").hasClass("body--highlights23")) { if (jQuery(".sec--hl-synergies").length) { const elements = document.querySelectorAll(".sec--hl-synergies .synergy-states"); const wrapper = document.createElement("div"); wrapper.classList.add("section-flex-wrapper"); elements.forEach((el) => { el.parentNode.removeChild(el); wrapper.appendChild(el); }); const firstTextBlock = document.querySelector(".sec--hl-synergies .synergy-heading"); firstTextBlock.insertAdjacentElement("afterend", wrapper); } } // End - Highlights </script> <script type="text/javascript"> function timeline(collection, options) { const timelines = []; const warningLabel = "Timeline:"; let winWidth = window.innerWidth; let resizeTimer; let currentIndex = 0; // Set default settings const defaultSettings = { forceVerticalMode: { type: "integer", defaultValue: 767, }, horizontalStartPosition: { type: "string", acceptedValues: ["bottom", "top"], defaultValue: "top", }, mode: { type: "string", acceptedValues: ["horizontal", "vertical"], defaultValue: "vertical", }, moveItems: { type: "integer", defaultValue: 1, }, rtlMode: { type: "boolean", acceptedValues: [true, false], defaultValue: false, }, startIndex: { type: "integer", defaultValue: 0, }, verticalStartPosition: { type: "string", acceptedValues: ["left", "right"], defaultValue: "left", }, verticalTrigger: { type: "string", defaultValue: "15%", }, visibleItems: { type: "integer", defaultValue: 3, }, }; // Helper function to test whether values are an integer function testValues(value, settingName) { if (typeof value !== "number" && value % 1 !== 0) { console.warn(`${warningLabel} The value "${value}" entered for the setting "${settingName}" is not an integer.`); return false; } return true; } // Helper function to wrap an element in another HTML element function itemWrap(el, wrapper, classes) { wrapper.classList.add(classes); el.parentNode.insertBefore(wrapper, el); wrapper.appendChild(el); } // Helper function to wrap each element in a group with other HTML elements function wrapElements(items) { items.forEach((item) => { itemWrap(item.querySelector(".timeline__content"), document.createElement("div"), "timeline__content__wrap"); itemWrap(item.querySelector(".timeline__content__wrap"), document.createElement("div"), "timeline__item__inner"); }); } // Helper function to check if an element is partially in the viewport function isElementInViewport(el, triggerPosition) { const rect = el.getBoundingClientRect(); const windowHeight = window.innerHeight || document.documentElement.clientHeight; const defaultTrigger = defaultSettings.verticalTrigger.defaultValue.match(/(\d*\.?\d*)(.*)/); let triggerUnit = triggerPosition.unit; let triggerValue = triggerPosition.value; let trigger = windowHeight; if (triggerUnit === "px" && triggerValue >= windowHeight) { console.warn('The value entered for the setting "verticalTrigger" is larger than the window height. The default value will be used instead.'); [, triggerValue, triggerUnit] = defaultTrigger; } if (triggerUnit === "px") { trigger = parseInt(trigger - triggerValue, 10); } else if (triggerUnit === "%") { trigger = parseInt(trigger * ((100 - triggerValue) / 100), 10); } return ( rect.top <= trigger && rect.left <= (window.innerWidth || document.documentElement.clientWidth) && rect.top + rect.height >= 0 && rect.left + rect.width >= 0 ); } // Helper function to add transform styles function addTransforms(el, transform) { el.style.webkitTransform = transform; el.style.msTransform = transform; el.style.transform = transform; } // Create timelines function createTimelines(timelineEl) { const timelineName = timelineEl.id ? `#${timelineEl.id}` : `.${timelineEl.className}`; const errorPart = "could not be found as a direct descendant of"; const data = timelineEl.dataset; let wrap; let scroller; let items; const settings = {}; // Test for correct HTML structure try { wrap = timelineEl.querySelector(".timeline__wrap"); if (!wrap) { throw new Error(`${warningLabel} .timeline__wrap ${errorPart} ${timelineName}`); } else { scroller = wrap.querySelector(".timeline__items"); if (!scroller) { throw new Error(`${warningLabel} .timeline__items ${errorPart} .timeline__wrap`); } else { items = [].slice.call(scroller.children, 0); } } } catch (e) { console.warn(e.message); return false; } // Test setting input values Object.keys(defaultSettings).forEach((key) => { settings[key] = defaultSettings[key].defaultValue; if (data[key]) { settings[key] = data[key]; } else if (options && options[key]) { settings[key] = options[key]; } if (defaultSettings[key].type === "integer") { if (!settings[key] || !testValues(settings[key], key)) { settings[key] = defaultSettings[key].defaultValue; } } else if (defaultSettings[key].type === "string") { if (defaultSettings[key].acceptedValues && defaultSettings[key].acceptedValues.indexOf(settings[key]) === -1) { console.warn(`${warningLabel} The value "${settings[key]}" entered for the setting "${key}" was not recognised.`); settings[key] = defaultSettings[key].defaultValue; } } }); // Further specific testing of input values const defaultTrigger = defaultSettings.verticalTrigger.defaultValue.match(/(\d*\.?\d*)(.*)/); const triggerArray = settings.verticalTrigger.match(/(\d*\.?\d*)(.*)/); let [, triggerValue, triggerUnit] = triggerArray; let triggerValid = true; if (!triggerValue) { console.warn(`${warningLabel} No numercial value entered for the 'verticalTrigger' setting.`); triggerValid = false; } if (triggerUnit !== "px" && triggerUnit !== "%") { console.warn(`${warningLabel} The setting 'verticalTrigger' must be a percentage or pixel value.`); triggerValid = false; } if (triggerUnit === "%" && (triggerValue > 100 || triggerValue < 0)) { console.warn(`${warningLabel} The 'verticalTrigger' setting value must be between 0 and 100 if using a percentage value.`); triggerValid = false; } else if (triggerUnit === "px" && triggerValue < 0) { console.warn(`${warningLabel} The 'verticalTrigger' setting value must be above 0 if using a pixel value.`); triggerValid = false; } if (triggerValid === false) { [, triggerValue, triggerUnit] = defaultTrigger; } settings.verticalTrigger = { unit: triggerUnit, value: triggerValue, }; if (settings.moveItems > settings.visibleItems) { console.warn( `${warningLabel} The value of "moveItems" (${settings.moveItems}) is larger than the number of "visibleItems" (${settings.visibleItems}). The value of "visibleItems" has been used instead.` ); settings.moveItems = settings.visibleItems; } if (settings.startIndex > items.length - settings.visibleItems && items.length > settings.visibleItems) { console.warn( `${warningLabel} The 'startIndex' setting must be between 0 and ${items.length - settings.visibleItems} for this timeline. The value of ${ items.length - settings.visibleItems } has been used instead.` ); settings.startIndex = items.length - settings.visibleItems; } else if (items.length <= settings.visibleItems) { console.warn(`${warningLabel} The number of items in the timeline must exceed the number of visible items to use the 'startIndex' option.`); settings.startIndex = 0; } else if (settings.startIndex < 0) { console.warn( `${warningLabel} The 'startIndex' setting must be between 0 and ${ items.length - settings.visibleItems } for this timeline. The value of 0 has been used instead.` ); settings.startIndex = 0; } timelines.push({ timelineEl, wrap, scroller, items, settings, }); } if (collection.length) { [].forEach.call(collection, createTimelines); } // Set height and widths of timeline elements and viewport function setHeightandWidths(tl) { // Set widths of items and viewport function setWidths() { tl.itemWidth = tl.wrap.offsetWidth / tl.settings.visibleItems; tl.items.forEach((item) => { item.style.width = `${tl.itemWidth}px`; }); tl.scrollerWidth = tl.itemWidth * tl.items.length; tl.scroller.style.width = `${tl.scrollerWidth}px`; } // Set height of items and viewport function setHeights() { let oddIndexTallest = 0; let evenIndexTallest = 0; tl.items.forEach((item, i) => { item.style.height = "auto"; const height = 120 + item.offsetHeight; if (i % 2 === 0) { evenIndexTallest = height > evenIndexTallest ? height : evenIndexTallest; } else { oddIndexTallest = height > oddIndexTallest ? height : oddIndexTallest; } }); const transformString = `translate( 25%, ${evenIndexTallest}px)`; if (tl.items.length % 2 != 0) { tl.items[tl.items.length] = tl.items[0]; console.log(tl.items[0]); } tl.items.forEach((item, i) => { // console.log("item=> " + item); // console.log(jQuery.type(item)); if (i % 2 === 0) { item.style.height = `${evenIndexTallest}px`; if (tl.settings.horizontalStartPosition === "bottom") { item.classList.add("timeline__item--bottom"); addTransforms(item, transformString); } else { item.classList.add("timeline__item--top"); } } else { item.style.height = `${oddIndexTallest}px`; if (tl.settings.horizontalStartPosition !== "bottom") { item.classList.add("timeline__item--bottom"); addTransforms(item, transformString); } else { item.classList.add("timeline__item--top"); } } }); tl.scroller.style.height = `${evenIndexTallest + oddIndexTallest}px`; } if (window.innerWidth > tl.settings.forceVerticalMode) { setWidths(); setHeights(); } } // Create and add arrow controls to horizontal timeline function addNavigation(tl) { if (tl.items.length > tl.settings.visibleItems) { const prevArrow = document.createElement("button"); const nextArrow = document.createElement("button"); const topPosition = tl.items[0].offsetHeight; prevArrow.className = "timeline-nav-button timeline-nav-button--prev"; nextArrow.className = "timeline-nav-button timeline-nav-button--next"; prevArrow.textContent = "Previous"; nextArrow.textContent = "Next"; prevArrow.style.top = `${topPosition}px`; nextArrow.style.top = `${topPosition}px`; if (currentIndex === 0) { prevArrow.disabled = true; } else if (currentIndex === tl.items.length - tl.settings.visibleItems) { nextArrow.disabled = true; } tl.timelineEl.appendChild(prevArrow); tl.timelineEl.appendChild(nextArrow); } } // Add the centre line to the horizontal timeline function addHorizontalDivider(tl) { const divider = tl.timelineEl.querySelector(".timeline-divider"); if (divider) { tl.timelineEl.removeChild(divider); } const topPosition = tl.items[0].offsetHeight; const horizontalDivider = document.createElement("span"); horizontalDivider.className = "timeline-divider"; horizontalDivider.style.top = `${topPosition}px`; tl.timelineEl.appendChild(horizontalDivider); } // Calculate the new position of the horizontal timeline function timelinePosition(tl) { const position = tl.items[currentIndex].offsetLeft; const str = `translate3d(-${position}px, 0, 0)`; addTransforms(tl.scroller, str); } // Make the horizontal timeline slide function slideTimeline(tl) { const navArrows = tl.timelineEl.querySelectorAll(".timeline-nav-button"); const arrowPrev = tl.timelineEl.querySelector(".timeline-nav-button--prev"); const arrowNext = tl.timelineEl.querySelector(".timeline-nav-button--next"); const maxIndex = tl.items.length - tl.settings.visibleItems; const moveItems = parseInt(tl.settings.moveItems, 10); [].forEach.call(navArrows, (arrow) => { arrow.addEventListener("click", function (e) { e.preventDefault(); currentIndex = this.classList.contains("timeline-nav-button--next") ? (currentIndex += moveItems) : (currentIndex -= moveItems); if (currentIndex === 0 || currentIndex < 0) { currentIndex = 0; arrowPrev.disabled = true; arrowNext.disabled = false; } else if (currentIndex === maxIndex || currentIndex > maxIndex) { currentIndex = maxIndex; arrowPrev.disabled = false; arrowNext.disabled = true; } else { arrowPrev.disabled = false; arrowNext.disabled = false; } timelinePosition(tl); }); }); } // Set up horizontal timeline function setUpHorinzontalTimeline(tl) { if (tl.settings.rtlMode) { currentIndex = tl.items.length > tl.settings.visibleItems ? tl.items.length - tl.settings.visibleItems : 0; } else { currentIndex = tl.settings.startIndex; } tl.timelineEl.classList.add("timeline--horizontal"); setHeightandWidths(tl); timelinePosition(tl); addNavigation(tl); addHorizontalDivider(tl); slideTimeline(tl); } // Set up vertical timeline function setUpVerticalTimeline(tl) { let lastVisibleIndex = 0; tl.items.forEach((item, i) => { item.classList.remove("animated", "fadeIn"); if (!isElementInViewport(item, tl.settings.verticalTrigger) && i > 0) { item.classList.add("animated"); } else { lastVisibleIndex = i; } const divider = tl.settings.verticalStartPosition === "left" ? 1 : 0; if (i % 2 === divider && window.innerWidth > tl.settings.forceVerticalMode) { item.classList.add("timeline__item--right"); } else { item.classList.add("timeline__item--left"); } }); for (let i = 0; i < lastVisibleIndex; i += 1) { tl.items[i].classList.remove("animated", "fadeIn"); } // Bring elements into view as the page is scrolled window.addEventListener("scroll", () => { tl.items.forEach((item) => { if (isElementInViewport(item, tl.settings.verticalTrigger)) { item.classList.add("fadeIn"); } }); }); } // Reset timelines function resetTimelines(tl) { tl.timelineEl.classList.remove("timeline--horizontal", "timeline--mobile"); tl.scroller.removeAttribute("style"); tl.items.forEach((item) => { item.removeAttribute("style"); item.classList.remove("animated", "fadeIn", "timeline__item--left", "timeline__item--right"); }); const navArrows = tl.timelineEl.querySelectorAll(".timeline-nav-button"); [].forEach.call(navArrows, (arrow) => { arrow.parentNode.removeChild(arrow); }); } // Set up the timelines function setUpTimelines() { timelines.forEach((tl) => { tl.timelineEl.style.opacity = 0; if (!tl.timelineEl.classList.contains("timeline--loaded")) { wrapElements(tl.items); } resetTimelines(tl); if (window.innerWidth <= tl.settings.forceVerticalMode) { tl.timelineEl.classList.add("timeline--mobile"); } if (tl.settings.mode === "horizontal" && window.innerWidth > tl.settings.forceVerticalMode) { setUpHorinzontalTimeline(tl); } else { setUpVerticalTimeline(tl); } tl.timelineEl.classList.add("timeline--loaded"); setTimeout(() => { tl.timelineEl.style.opacity = 1; }, 500); }); } // Initialise the timelines on the page setUpTimelines(); window.addEventListener("resize", () => { clearTimeout(resizeTimer); resizeTimer = setTimeout(() => { const newWinWidth = window.innerWidth; if (newWinWidth !== winWidth) { setUpTimelines(); winWidth = newWinWidth; } }, 250); }); } // Register as a jQuery plugin if the jQuery library is present if (window.jQuery) { (($) => { $.fn.timeline = function (opts) { timeline(this, opts); return this; }; })(window.jQuery); } //Initialize the timeline plugin to create a vertical timeline on the page. //https://www.jqueryscript.net/time-clock/Horizontal-Vertical-Timeline-Plugin-jQuery.html jQuery(document).ready(function () { jQuery(".timeline").timeline({ mode: "horizontal", visibleItems: 2, horizontalStartPosition: "bottom", verticalTrigger: "50%", moveItems: 2, startIndex: 0, }); jQuery(".timeline__items .timeline__item:first-child").removeClass("timeline__item--top"); jQuery("#ca_pin text").text("Canada"); jQuery("#usa_pin text").text("USA"); jQuery(".body_timeline .paddle-components-text-block-wrapper").prepend( '<img class="cancel_btn" src="https://cleansky.paddlecms.net/sites/default/files/2021-11/cross.png"></div>' ); jQuery(".cancel_btn").click(function () { jQuery(this).parent(".timeline_content").removeClass("tl--content-show"); jQuery(".tl--overlay").removeClass("tl--overlay-show"); }); // Load after the page is ready if (jQuery("body").hasClass("body--highlights") || jQuery("body").hasClass("body--caaf-event-2024")) { if (jQuery("#in-page-sticky").length) { const element = document.getElementById("in-page-sticky"); const wrapper = document.createElement("div"); wrapper.classList.add("in-page-sticky-wrapper"); element.parentNode.insertBefore(wrapper, element); wrapper.appendChild(element); } if (jQuery(".in-page-sticky-wrapper").length) { jQuery(".in-page-sticky-wrapper .paddle-component--body-section ul li") .filter(function () { return jQuery(this).text().trim() === "Axel Krein"; }) .remove(); } } if (jQuery("body").hasClass("synergy-3-col-images")) { jQuery(".region--content .field-body p:last").prepend(jQuery(".region--content .layout--threecol")); } if (jQuery("body").hasClass("body--ceremony-location")) { var existingIframe = document.querySelector("iframe"); var hrefValue = document.querySelector(".embed-map-url .paddle-component--text-block .paddle-component--body-section a").getAttribute("href"); existingIframe.src = hrefValue; } if (jQuery("body").hasClass("page-node-type-knowledge-base-product")) { jQuery(".comp_block_with_shadow").wrapAll('<div class="comp_block_with_shadow_wrapper"></div>'); // jQuery('.field-block.field-featured_image .field--featured-image source[srcset*="16_9"]').each(function () { // var newSrcset = jQuery(this).attr("srcset").replace("16_9", "square"); // jQuery(this).attr("srcset", newSrcset); // }); // jQuery(".field-block.field-featured_image .field--featured-image img").each(function () { // var newSrc = jQuery(this).attr("src").replace("16_9", "square"); // jQuery(this).attr("src", newSrc); // }); } if (jQuery(".sec--demonstrators-item").length && jQuery(".sec--demonstrators").length) { jQuery(".sec--demonstrators-item").appendTo(".sec--demonstrators"); function setIdFromClass(classes) { classes.forEach((className) => { if (jQuery(`.${className}`).length) { jQuery(`.${className}`).attr("id", className); } }); } setIdFromClass([ "novel-aircraft-configurations", "advances-in-wings-and-aerodynamics", "innovative-structures-and-production-systems", "next-gen-cockpit-systems", "optimal-cabin-passenger-environment", "breakthroughs-in-propulsion-efficiency", "aircraft-non-propulsive-energy", ]); jQuery(".sec--demonstrators").append( '<button id="scrollToTop"><img src="/sites/default/files/styles/medium/public/2024-09/arrow-top.png" /></button>' ); jQuery(window).scroll(function () { if (jQuery(this).scrollTop() > 1000) { jQuery("#scrollToTop").fadeIn(); } else { jQuery("#scrollToTop").fadeOut(); } }); jQuery("#scrollToTop").click(function () { jQuery("html, body").animate( { scrollTop: jQuery(".sec--demonstrators").offset().top, }, 100 ); return false; }); } }); //End document </script> </body> </html>