Soluzioni complete per la sorveglianza marittima - Company

maritime surveillance_slider

Soluzioni complete per la sorveglianza marittima

Leonardo offre soluzioni integrate a supporto delle operazioni di sorveglianza marittima in tutto il mondo. Il Sistema di Missione ATOS integra diverse suite di sensori Leonardo garantendo l’interoperabilità di sistemi manned, come l’ATR72, e uncrewed, come il Falco, per un’efficace sorveglianza del Mediterraneo.

02 marzo 2021

Un aereo da pattugliamento marittimo in volo sul Canale di Sicilia, individua indizi di attività sospette a 200 miglia dalla costa. Il velivolo inizia l’attività di sorveglianza, ma è quasi al termine della sua autonomia e dovrà presto rientrare per garantire il necessario riposo all’equipaggio e agli operatori alle console. Potrebbero volerci molte ore di sorveglianza per raccogliere le prove degli illeciti in mare, quindi viene richiesto l’intervento di un velivolo uncrewed Falco EVO, in grado di svolgere missioni della durata di oltre 18 ore, con una completa suite di sorveglianza marittima e connessione satellitare. Da un’altitudine di 3.000 piedi, tenendosi a 6 o 7 chilometri di distanza dal suo obiettivo grazie all’alta definizione del suo sistema elettro-ottico, il Falco è virtualmente invisibile e, grazie ad un’impronta sonora dell’ordine dei 43 decibel, i trafficanti non lo sentiranno. Nelle ore successive, il velivolo a controllo remoto raccoglierà le prove degli illeciti, documentando le attività in mare in ogni dettaglio, senza che la sua presenza sia notata.

Falco Evo

 

Questo è solo un esempio delle sinergie possibili fra velivoli con equipaggio a bordo e sistemi a controllo remoto: l’interoperabilità tra le due categorie di sistemi e la complementarietà delle caratteristiche operative permettono di migliorare l’efficienza delle missioni di sorveglianza più complesse . Se da un lato, un grande pattugliatore pilotato come un ATR della Guardia di Finanza può spostarsi a velocità anche tre volte superiori a quelle di un velivolo uncrewed, i velivoli senza pilota offrono una persistenza sull’obiettivo fino a tre o quattro volte più lunga rispetto ad un velivolo tradizionale. D’altra parte, se un ATR può contare su di carico di sensori più vasto e la presenza a bordo di operatori specializzati, un velivolo non pilotato non soffre dei problemi di affaticamento dell’equipaggio ed ha un’autonomia di missione molto maggiore, così da poter pattugliare una vasta area per molte ore, senza interruzioni. In entrambi i casi, il Centro di Comando e Controllo a terra potrà contare su preziose informazioni raccolte sul campo e trasmesse in tempo reale dalle piattaforme di sorveglianza. Questo scenario, che si ripete regolarmente nei cieli del canale di Sicilia, è anche un chiaro esempio della capacità, praticamente unica a livello globale, che Leonardo ha di offrire soluzioni complete che coprono ogni elemento della sorveglianza: dai velivoli uncrewed a quelli pilotati, passando per la sensoristica e per tutti i servizi accessori che consentono l’esecuzione della missione. 

 

 

Falco Xplorer – Ground Control station

 

Data la complessità delle esigenze dei clienti, Leonardo concorda la soluzione che meglio si adatta alle esigenze del cliente stesso. Il sistema ISR può essere venduto così com'è, op-pure Leonardo può impostare un servizio completo, fornendo all'acquirente informazioni già processate, pronte per supportare i responsabili dei processi decisionali. Leonardo è in gra-do di fornire un'ampia gamma di soluzioni di servizi, dal noleggio del sistema al pay-for-information, dove Leonardo è responsabile di qualsiasi aspetto operativo dalla manutenzio-ne alla gestione e disseminazione delle informazioni.
Oltre alle opzioni sopra descritte, è disponibile una grande varietà di soluzioni specifiche per il cliente, adatte ad ogni esigenza operativa. Infatti,  Leonardo non è solo un OEM, ma un vero e proprio partner per implementare le più complesse soluzioni ISRbasate su piattafor-me proprie o di terze parti. Leonardo può fornire soluzioni completamente autosviluppate e sistemi aerei di sorveglianza basati su velivoli “green” commerciali edequipaggiati con qual-siasi tipo di sensore o suite di missione basati su un modello di business “one-stop-shop”.
Il fatto che Leonardo possa offrire una soluzione operativa completa in cui rappresenta la Design Authority per tutti gli elementi, dal velivolo al sensore, rende l'azienda praticamente unica al mondo e rappresenta un grande vantaggio per il cliente.

Avere competenze d’eccellenza in ogni settore genera anche altri vantaggi: quando i velivoli senza pilota hanno iniziato a trovare un ruolo nella sorveglianza marittima, i sensori, soprattutto radar, erano troppo grandi e pesanti perché pensati solo per le grandi piattaforme manned. Leonardo ha risolto il problema in casa, miniaturizzando i sensori il cui peso, ingombro e assorbimento sono stati ridotti mantenendone costanti, se non migliorandone, le prestazioni. Ne è un esempio il radar Gabbiano il cui peso si è ridotto di oltre la metà versione standard, arrivando a raggiungere soli 25 Kg. Questa trasformazione ha colmato un vuoto nel mercato dei sensori e ha permesso di maturare soluzioni uncrewed di grandissima efficacia, come i già citati velivoli FALCO. E da questo sviluppo, in un circolo virtuoso, i sensori miniaturizzati sviluppati per gli Uncrewed Air Vehicles hanno trovato poi applicazione in un ulteriore segmento di mercato, quello dei velivoli da sorveglianza pilotati leggeri. Leonardo ha stretto accordi con diversi produttori di velivoli leggeri, realizzando soluzioni di sorveglianza marittima piccole ed economiche ma completo di radar, camera elettro-ottica e suite di missione ATOS. Lo svolgimento di missioni di sorveglianza aerea con velivoli leggeri è oggi una solida realtà, eppure, fino a qualche anno fa, nessuno avrebbe pensato fosse possibile. 


Atos

Si è verificato un errore nell'elaborarazione del modello.
The following has evaluated to null or missing:
==> Links  [in template "20115#20151#8694053" at line 193, column 29]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #if Links.ExternalTargetURL.getData()...  [in template "20115#20151#8694053" at line 193, column 24]
----
1<#assign siteExpandoBridge = themeDisplay.getScopeGroup().getExpandoBridge() /> 
2<#assign new_restyle = (siteExpandoBridge.hasAttribute("new-restyle")?then(getterUtil.getBoolean(siteExpandoBridge.getAttribute("new-restyle", false)),false)) /> 
3<#if new_restyle?? && new_restyle> 
4    <@leonardo.articleInfo .vars "(I3) Video Launch"/> 
5 
6    <#macro videoBox yt canto video poster> 
7 
8        <div class="video-full-width-container-rounded"> 
9                <button 
10                        class="video-full-width" 
11                        title="play report video" 
12                        onclick="playSingleVideo(this)" 
13                        data-video="${video}" 
14
15                <div class="cover rounded-20"> 
16                    <#if VideoInfo.Image.getData()?? && VideoInfo.Image.getData() != ""> 
17                        <#assign scalingDetails = { 
18                        "desktop": {"alternateImage": {}, "key": "w_768"}, 
19                        "tl": {"alternateImage": VideoInfo.Image.ImageTl!, "key": "h_400"}, 
20                        "tp": {"alternateImage": VideoInfo.Image.ImageTp!, "key": "w_720"}, 
21                        "mobile": {"alternateImage": VideoInfo.Image.ImageM!, "key": "w_596"} }> 
22                        <#assign posterImg = leonardo.adaptImage(VideoInfo.Image!, scalingDetails )> 
23                        <picture> 
24                            <source 
25                                    srcset="${posterImg.mobile!}" 
26                                    media="(max-width: 576px)" 
27                            /> 
28                            <source 
29                                    srcset="${posterImg.tablet_portrait!}" 
30                                    media="(max-width: 768px)" 
31
32                            <source 
33                                    srcset="${posterImg.tablet_landscape!}" 
34                                    media="(max-width: 1024px)" 
35
36                            <img class="img-fluid" alt="${posterImg.alt_desktop!}" src="${posterImg.desktop!}" /> 
37                        </picture> 
38                    </#if> 
39 
40                    <div class="btn-play"> 
41                        <img 
42                                class="icon" 
43                                src="${themeDisplay.getPathThemeImages()}/img/generic/button-play.svg" 
44                                alt="play" 
45                        /> 
46                        <img 
47                                class="icon-hover" 
48                                src="${themeDisplay.getPathThemeImages()}/img/generic/button-play-hover.svg" 
49                                alt="play" 
50                        /> 
51                    </div> 
52                </div> 
53                </button> 
54        </div> 
55    </#macro> 
56 
57    <#if VideoInfo.Video.getData() != "" ||  VideoInfo.YoutubeId.getData() != "" ||  VideoInfo.CantoUrl.getData() != "" > 
58 
59        <#assign scalingDetails = { 
60        "desktop": {"alternateImage": {}, "key": "w_768"}, 
61        "tl": {"alternateImage": VideoInfo.Image.ImageTl!, "key": "h_400"}, 
62        "tp": {"alternateImage": VideoInfo.Image.ImageTp!, "key": "w_720"}, 
63        "mobile": {"alternateImage": VideoInfo.Image.ImageM!, "key": "w_596"} }> 
64        <#assign posterImg = leonardo.adaptImage(VideoInfo.Image!, scalingDetails )> 
65 
66        <#assign isYt = (VideoInfo.YoutubeId.getData() != "") > 
67        <#assign isCanto = (VideoInfo.CantoUrl.getData())?has_content && (VideoInfo.CantoUrl.getData() != "") > 
68 
69        <#if (VideoInfo.CantoUrl.getData())?has_content && VideoInfo.CantoUrl.getData() != ""> 
70            <#assign videoStr = VideoInfo.CantoUrl.getData()> 
71        <#elseif VideoInfo.YoutubeId.getData() != ""> 
72            <#assign videoStr = VideoInfo.YoutubeId.getData()> 
73        <#elseif VideoInfo.Video.getSiblings()?has_content> 
74            <#assign videoStr = ""> 
75            <#list VideoInfo.Video.getSiblings() as cur_Video> 
76                <#assign videoFile = cur_Video.getData()> 
77                <#assign videoFileType = cur_Video.VideoType.getData()> 
78                <#if videoStr?? && videoStr != ""> 
79                    <#assign videoStr = videoStr + ","> 
80                </#if> 
81                <#assign videoStr = videoStr + "${themeDisplay.getPortalURL()}" + videoFile> 
82            </#list> 
83        </#if> 
84 
85        <!--Start Module: Plan Highlights--> 
86        <div class="container-full-width padding-bottom padding-top"> 
87            <div class="container"> 
88                <div class="flex-grid-plus-cards video"> 
89                    <div class="left <#if VideoInfo.ImagePosition.getData() == "right">order-lg-2</#if>"> 
90                        <#if VideoInfo.YoutubeId.getData() != ""> 
91                            <div class="video-full-width-container-rounded"> 
92                                <#assign videoId = VideoInfo.YoutubeId.getData()> 
93                                <button 
94                                        type="button" 
95                                        class="video-full-width video-yt" 
96                                        title="play report video" 
97                                        data-video="${videoId}" 
98                                        id="button-video-${videoId}" 
99
100                                    <div class="cover rounded-20"> 
101                                        <#if VideoInfo.Image.getData()?? && VideoInfo.Image.getData() != ""> 
102                                            <#assign scalingDetails = { 
103                                            "desktop": {"alternateImage": {}, "key": "w_768"}, 
104                                            "tl": {"alternateImage": VideoInfo.Image.ImageTl!, "key": "h_400"}, 
105                                            "tp": {"alternateImage": VideoInfo.Image.ImageTp!, "key": "w_720"}, 
106                                            "mobile": {"alternateImage": VideoInfo.Image.ImageM!, "key": "w_596"} }> 
107                                            <#assign posterImg = leonardo.adaptImage(VideoInfo.Image!, scalingDetails )> 
108                                            <picture> 
109                                                <source 
110                                                        srcset="${posterImg.mobile!}" 
111                                                        media="(max-width: 576px)" 
112                                                /> 
113                                                <source 
114                                                        srcset="${posterImg.tablet_portrait!}" 
115                                                        media="(max-width: 768px)" 
116
117                                                <source 
118                                                        srcset="${posterImg.tablet_landscape!}" 
119                                                        media="(max-width: 1024px)" 
120
121                                                <img class="img-fluid" alt="${posterImg.alt_desktop!}" src="${posterImg.desktop!}" /> 
122                                            </picture> 
123                                        </#if> 
124 
125                                        <div class="btn-play"> 
126                                            <img 
127                                                    class="icon" 
128                                                    src="${themeDisplay.getPathThemeImages()}/img/generic/button-play.svg" 
129                                                    alt="play" 
130                                            /> 
131                                            <img 
132                                                    class="icon-hover" 
133                                                    src="${themeDisplay.getPathThemeImages()}/img/generic/button-play-hover.svg" 
134                                                    alt="play" 
135                                            /> 
136                                        </div> 
137                                    </div> 
138                                </button> 
139                                <div id="video-${videoId}" class="embed-responsive embed-responsive-16by9" style="display:none;"> 
140                                    <iframe 
141                                            id="youtube-player-${videoId}" 
142                                            width="100%" 
143                                            height="100%" 
144                                            frameborder="0" 
145                                            allow="autoplay; fullscreen; encrypted-media" 
146                                            allowfullscreen 
147                                            playsinline 
148                                    ></iframe> 
149                                </div> 
150                            </div> 
151                            <script> 
152                                (function() { 
153                                    const button = document.getElementById("button-video-${videoId}"); 
154                                    const overlay = document.getElementById("video-${videoId}"); 
155                                    const iframe = document.getElementById("youtube-player-${videoId}"); 
156 
157                                    button.addEventListener("click", function() { 
158                                        const videoId = button.dataset.video; 
159 
160                                        iframe.src = "https://www.youtube.com/embed/" + videoId + "?autoplay=1&rel=0"; 
161                                        overlay.style.display = "block"; 
162                                        button.style.display = "none"; 
163                                    }); 
164                                })(); 
165                            </script> 
166                        <#else> 
167                            <@videoBox yt=isYt canto=isCanto video=videoStr poster=posterImg /> 
168                        </#if> 
169                    </div> 
170                    <div class="right component-with-title"> 
171                        <!--Start Module: Highlights Pitch--> 
172                        <div> 
173                            <#if TextInfo.Title.getData() != "" > 
174                                <p class="title title-regular"><@leonardo.escapeTitle title=TextInfo.Title.getData()/></p> 
175                            </#if> 
176                            <#if TextInfo.Title.Description?? && TextInfo.Title.Description.getData() != "" > 
177                                <p class="description body-small"><@leonardo.escapeTitle title=TextInfo.Title.Description.getData()/></p> 
178                            </#if> 
179                        </div> 
180                        <#if TextInfo.Title.Attach.getData() !=''> 
181                            <div class="card-interview centered download"> 
182                                <#list TextInfo.Title.Attach.getSiblings() as node> 
183                                    <#if TextInfo.Title.Attach?? && TextInfo.Title.Attach.getData() != "" && TextInfo.Title.Attach.Label.getData() != ""> 
184                                        <div class="card"> 
185                                            <a href="${TextInfo.Title.Attach.getData()}" target="_blank" class="label-regular" title="${TextInfo.Title.Attach.Label.getData()}" download> 
186                                                <span>${TextInfo.Title.Attach.Label.getData()}</span> 
187                                            </a> 
188                                        </div> 
189                                    </#if> 
190                                </#list> 
191                            </div> 
192                        </#if> 
193                       <#if Links.ExternalTargetURL.getData() !='' || Links.LinkTargetPage.getFriendlyUrl() !=''> 
194                        <div class="flex flex-col gap-4"> 
195                            <#list Links.getSiblings() as node> 
196                     
197                                <#assign externalUrl = node.ExternalTargetURL.getData()!"" /> 
198                                <#assign internalUrl = node.LinkTargetPage.getFriendlyUrl()!"" /> 
199                                <#assign linkText = node.LinkText.getData()!"" /> 
200                     
201                                <#if linkText?has_content && (externalUrl?has_content || internalUrl?has_content)> 
202                     
203                                    <#assign url = externalUrl?has_content?then(externalUrl, internalUrl) /> 
204                     
205                                    <a href="${url}" 
206                                       target="${node.LinkTargetOpenIn.getData()!}" 
207                                       title="${linkText}" 
208                                       class="card-text-arrow"> 
209                                        <p class="body-medium">${linkText}</p> 
210                                    </a> 
211                     
212                                </#if> 
213                            </#list> 
214                        </div> 
215                    </#if> 
216                        <!--End Module: Highlights Pitch--> 
217                    </div> 
218                </div> 
219            </div> 
220        </div> 
221        <!--End Module: Plan Highlights--> 
222    <#else> 
223        <!-- No video selected --> 
224    </#if> 
225<#else> 
226    <#assign siteExpandoBridge = themeDisplay.getScopeGroup().getExpandoBridge() /> 
227    <#assign new_restyle = (siteExpandoBridge.hasAttribute("new-restyle")?then(getterUtil.getBoolean(siteExpandoBridge.getAttribute("new-restyle", false)),false)) /> 
228    <#if new_restyle?? && new_restyle> 
229        <@leonardo.articleInfo .vars "(I3) Video Launch"/> 
230     
231        <#macro videoBox yt canto video poster> 
232     
233            <div class="video-full-width-container-rounded"> 
234                <button 
235                        class="video-full-width" 
236                        title="play report video" 
237                        onclick="playSingleVideo(this)" 
238                        data-video="${video}" 
239
240                    <div class="cover rounded-20"> 
241                        <#if VideoInfo.Image.getData()?? && VideoInfo.Image.getData() != ""> 
242                            <#assign scalingDetails = { 
243                            "desktop": {"alternateImage": {}, "key": "w_768"}, 
244                            "tl": {"alternateImage": VideoInfo.Image.ImageTl!, "key": "h_400"}, 
245                            "tp": {"alternateImage": VideoInfo.Image.ImageTp!, "key": "w_720"}, 
246                            "mobile": {"alternateImage": VideoInfo.Image.ImageM!, "key": "w_596"} }> 
247                            <#assign posterImg = leonardo.adaptImage(VideoInfo.Image!, scalingDetails )> 
248                            <picture> 
249                                <source 
250                                        srcset="${posterImg.mobile!}" 
251                                        media="(max-width: 576px)" 
252                                /> 
253                                <source 
254                                        srcset="${posterImg.tablet_portrait!}" 
255                                        media="(max-width: 768px)" 
256
257                                <source 
258                                        srcset="${posterImg.tablet_landscape!}" 
259                                        media="(max-width: 1024px)" 
260
261                                <img class="img-fluid" alt="${posterImg.alt_desktop!}" src="${posterImg.desktop!}" /> 
262                            </picture> 
263                        </#if> 
264     
265                        <div class="btn-play"> 
266                            <img 
267                                    class="icon" 
268                                    src="${themeDisplay.getPathThemeImages()}/img/generic/button-play.svg" 
269                                    alt="play" 
270                            /> 
271                            <img 
272                                    class="icon-hover" 
273                                    src="${themeDisplay.getPathThemeImages()}/img/generic/button-play-hover.svg" 
274                                    alt="play" 
275                            /> 
276                        </div> 
277                    </div> 
278                </button> 
279            </div> 
280        </#macro> 
281     
282        <#if VideoInfo.Video.getData() != "" ||  VideoInfo.YoutubeId.getData() != "" ||  VideoInfo.CantoUrl.getData() != "" > 
283     
284            <#assign scalingDetails = { 
285            "desktop": {"alternateImage": {}, "key": "w_768"}, 
286            "tl": {"alternateImage": VideoInfo.Image.ImageTl!, "key": "h_400"}, 
287            "tp": {"alternateImage": VideoInfo.Image.ImageTp!, "key": "w_720"}, 
288            "mobile": {"alternateImage": VideoInfo.Image.ImageM!, "key": "w_596"} }> 
289            <#assign posterImg = leonardo.adaptImage(VideoInfo.Image!, scalingDetails )> 
290            <#assign posterImg = leonardo.adaptImage(VideoInfo.Image!, scalingDetails )> 
291     
292            <#assign isYt = (VideoInfo.YoutubeId.getData() != "") > 
293            <#assign isCanto = (VideoInfo.CantoUrl.getData())?has_content && (VideoInfo.CantoUrl.getData() != "") > 
294     
295            <#if (VideoInfo.CantoUrl.getData())?has_content && VideoInfo.CantoUrl.getData() != ""> 
296                <#assign videoStr = VideoInfo.CantoUrl.getData()> 
297            <#elseif VideoInfo.YoutubeId.getData() != ""> 
298                <#assign videoStr = VideoInfo.YoutubeId.getData()> 
299            <#elseif VideoInfo.Video.getSiblings()?has_content> 
300                <#assign videoStr = ""> 
301                <#list VideoInfo.Video.getSiblings() as cur_Video> 
302                    <#assign videoFile = cur_Video.getData()> 
303                    <#assign videoFileType = cur_Video.VideoType.getData()> 
304                    <#if videoStr?? && videoStr != ""> 
305                        <#assign videoStr = videoStr + ","> 
306                    </#if> 
307                    <#assign videoStr = videoStr + "${themeDisplay.getPortalURL()}" + videoFile> 
308                </#list> 
309            </#if> 
310     
311            <!--Start Module: Plan Highlights--> 
312            <div class="container-full-width padding-bottom padding-top"> 
313                <div class="container"> 
314                    <div class="flex-grid-plus-cards video"> 
315                        <div class="left <#if VideoInfo.ImagePosition.getData() == "right">order-2</#if>"> 
316                            <#if VideoInfo.YoutubeId.getData() != ""> 
317                                <div class="video-full-width-container-rounded"> 
318                                    <#assign videoId = VideoInfo.YoutubeId.getData()> 
319                                    <button 
320                                            type="button" 
321                                            class="video-full-width video-yt" 
322                                            title="play report video" 
323                                            data-video="${videoId}" 
324                                            id="button-video-${videoId}" 
325
326                                        <div class="cover rounded-20"> 
327                                            <#if VideoInfo.Image.getData()?? && VideoInfo.Image.getData() != ""> 
328                                                <#assign scalingDetails = { 
329                                                "desktop": {"alternateImage": {}, "key": "w_768"}, 
330                                                "tl": {"alternateImage": VideoInfo.Image.ImageTl!, "key": "h_400"}, 
331                                                "tp": {"alternateImage": VideoInfo.Image.ImageTp!, "key": "w_720"}, 
332                                                "mobile": {"alternateImage": VideoInfo.Image.ImageM!, "key": "w_596"} }> 
333                                                <#assign posterImg = leonardo.adaptImage(VideoInfo.Image!, scalingDetails )> 
334                                                <picture> 
335                                                    <source 
336                                                            srcset="${posterImg.mobile!}" 
337                                                            media="(max-width: 576px)" 
338                                                    /> 
339                                                    <source 
340                                                            srcset="${posterImg.tablet_portrait!}" 
341                                                            media="(max-width: 768px)" 
342
343                                                    <source 
344                                                            srcset="${posterImg.tablet_landscape!}" 
345                                                            media="(max-width: 1024px)" 
346
347                                                    <img class="img-fluid" alt="${posterImg.alt_desktop!}" src="${posterImg.desktop!}" /> 
348                                                </picture> 
349                                            </#if> 
350     
351                                            <div class="btn-play"> 
352                                                <img 
353                                                        class="icon" 
354                                                        src="${themeDisplay.getPathThemeImages()}/img/generic/button-play.svg" 
355                                                        alt="play" 
356                                                /> 
357                                                <img 
358                                                        class="icon-hover" 
359                                                        src="${themeDisplay.getPathThemeImages()}/img/generic/button-play-hover.svg" 
360                                                        alt="play" 
361                                                /> 
362                                            </div> 
363                                        </div> 
364                                    </button> 
365                                    <div id="video-${videoId}" class="embed-responsive embed-responsive-16by9" style="display:none;"> 
366                                        <iframe 
367                                                id="youtube-player-${videoId}" 
368                                                width="100%" 
369                                                height="100%" 
370                                                frameborder="0" 
371                                                allow="autoplay; fullscreen; encrypted-media" 
372                                                allowfullscreen 
373                                                playsinline 
374                                        ></iframe> 
375                                    </div> 
376                                </div> 
377                                <script> 
378                                    (function() { 
379                                        const button = document.getElementById("button-video-${videoId}"); 
380                                        const overlay = document.getElementById("video-${videoId}"); 
381                                        const iframe = document.getElementById("youtube-player-${videoId}"); 
382     
383                                        button.addEventListener("click", function() { 
384                                            const videoId = button.dataset.video; 
385     
386                                            iframe.src = "https://www.youtube.com/embed/" + videoId + "?autoplay=1&rel=0"; 
387                                            overlay.style.display = "block"; 
388                                            button.style.display = "none"; 
389                                        }); 
390                                    })(); 
391                                </script> 
392                            <#else> 
393                                <@videoBox yt=isYt canto=isCanto video=videoStr poster=posterImg /> 
394                            </#if> 
395                        </div> 
396                        <div class="right component-with-title"> 
397                            <!--Start Module: Highlights Pitch--> 
398                            <div> 
399                                <#if TextInfo.Title.getData() != "" > 
400                                    <p class="title title-regular"><@leonardo.escapeTitle title=TextInfo.Title.getData()/></p> 
401                                </#if> 
402                                <#if TextInfo.Title.Description?? && TextInfo.Title.Description.getData() != "" > 
403                                    <p class="description body-small"><@leonardo.escapeTitle title=TextInfo.Title.Description.getData()/></p> 
404                                </#if> 
405                            </div> 
406                            <#if TextInfo.Title.Attach.getData() !=''> 
407                                <div class="card-interview centered download"> 
408                                    <#list TextInfo.Title.Attach.getSiblings() as node> 
409                                        <#if TextInfo.Title.Attach?? && TextInfo.Title.Attach.getData() != "" && TextInfo.Title.Attach.Label.getData() != ""> 
410                                            <div class="card"> 
411                                                <a href="${TextInfo.Title.Attach.getData()}" target="_blank" class="label-regular" title="${TextInfo.Title.Attach.Label.getData()}" download> 
412                                                    <span>${TextInfo.Title.Attach.Label.getData()}</span> 
413                                                </a> 
414                                            </div> 
415                                        </#if> 
416                                    </#list> 
417                                </div> 
418                            </#if> 
419                            <#if Links.ExternalTargetURL.getData() !='' || Links.LinkTargetPage.getFriendlyUrl() !=''> 
420                                <div class="flex flex-col gap-4"> 
421                                    <#list Links.getSiblings() as node> 
422                                        <#if node.ExternalTargetURL.getData() !='' && node.LinkText.getData() !=''> 
423                                            <#assign url = node.ExternalTargetURL.getData() /> 
424                                        </#if> 
425                                        <#if node.LinkTargetPage.getFriendlyUrl() !='' && node.LinkText.getData() !=''> 
426                                            <#assign url = node.LinkTargetPage.getFriendlyUrl() /> 
427                                        </#if> 
428                                        <a href="${url}" target ="${node.LinkTargetOpenIn.getData()}" title="${node.LinkText.getData()}" class="card-text-arrow"> 
429                                            <p class="body-medium">${node.LinkText.getData()}</p> 
430                                        </a> 
431                                    </#list> 
432                                </div> 
433                            </#if> 
434                            <!--End Module: Highlights Pitch--> 
435                        </div> 
436                    </div> 
437                </div> 
438            </div> 
439            <!--End Module: Plan Highlights--> 
440        <#else> 
441            <!-- No video selected --> 
442        </#if> 
443    <#else> 
444        <@leonardo.articleInfo .vars "(I3) Video Launch"/> 
445        <#assign rndNamespace = randomNamespace> 
446        <#assign currentLayoutFriendlyURL = themeDisplay.getLayout().getFriendlyURL()?remove_beginning("/") /> 
447     
448        <#if currentLayoutFriendlyURL == "home"> 
449            <#assign cssForTitle = "plan-highlights"> 
450        <#else> 
451            <#assign cssForTitle = "plan-highlights--investors"> 
452        </#if> 
453     
454        <#macro downloadIcon> 
455            <svg xmlns="http://www.w3.org/2000/svg" width="14" height="18" viewBox="0 0 14 18"> 
456                <path fill="#000" fill-rule="nonzero" d="M6.61 12.763l-2.145-2.24a.58.58 0 0 1 0-.796c.211-.22.551-.22.762 0l1.235 1.29V6.75c0-.31.24-.563.538-.563.297 0 .538.252.538.563v4.267l1.235-1.29c.21-.22.551-.22.762 0a.58.58 0 0 1 0 .796l-2.145 2.24a.526.526 0 0 1-.78 0zM12.62 18H1.383C.62 18 0 17.368 0 16.592V5.037c0-.49.19-.968.52-1.314L3.565.544A1.728 1.728 0 0 1 4.82 0h7.797C13.38 0 14 .631 14 1.407v15.186C14 17.37 13.38 18 12.619 18zM4.82 1.125a.682.682 0 0 0-.496.214L1.282 4.52a.755.755 0 0 0-.205.518v11.555c0 .156.137.283.306.283h11.235c.168 0 .305-.127.305-.282V1.407c0-.155-.137-.282-.305-.282H4.821zm-.783 4.5H2.154a.551.551 0 0 1-.539-.563c0-.31.242-.562.539-.562h1.884c.15 0 .27-.126.27-.281V2.25c0-.31.24-.563.538-.563.297 0 .539.252.539.563v1.969c0 .775-.605 1.406-1.347 1.406zm6.193 9.563H3.769a.55.55 0 0 1-.538-.563.55.55 0 0 1 .538-.563h6.462a.55.55 0 0 1 .538.563.55.55 0 0 1-.538.563z"/> 
457            </svg> 
458        </#macro> 
459        <#macro videoBox yt canto video poster> 
460            <div class="grid grid--d50p grid--tl50p grid--tp100p grid--m100p"> 
461                <div class="plan-highlights--wrapper"> 
462                    <#if canto> 
463                        <div class="leo-video canto-video" 
464                             data-video-data='{ 
465    						&quot;showControls&quot;:true, 
466    						&quot;videoSources&quot;:[ 
467    							"${video}" 
468    						], 
469    						&quot;posters&quot;:{ 
470    							&quot;desktop&quot;:&quot;${poster.desktop!}&quot;, 
471    							&quot;tabletLandscape&quot;:&quot;${poster.tablet_landscape!}&quot;, 
472    							&quot;tabletPortrait&quot;:&quot;${poster.tablet_portrait!}&quot;, 
473    							&quot;mobile&quot;:&quot;${poster.mobile!}&quot; 
474    						}}' 
475                             data-img-url-d="${poster.desktop!}" 
476                             data-img-url-tl="${poster.tablet_landscape!}" 
477                             data-img-url-tp="${poster.tablet_portrait!}" 
478                             data-img-url-m="${poster.mobile!}"> 
479                        </div> 
480                    <#elseif yt> 
481                        <div class="youtube-player-container " 
482                             data-video-id="${video}" 
483                             data-div-id = "${randomNamespace}${video}" 
484                             data-img-url-d="${poster.desktop!}" 
485                             data-img-url-tl="${poster.tablet_landscape!}" 
486                             data-img-url-tp="${poster.tablet_portrait!}" 
487                             data-img-url-m="${poster.mobile!}" 
488                             data-use-no-cookie-domain="true" 
489                             data-play-fullscreen="true" 
490                             data-video-controls="true" 
491                             tabindex="1"> 
492                            <div class="youtube-player" id="${randomNamespace}${video}"></div> 
493                        </div> 
494                    <#else> 
495                        <div class="leo-video" 
496                             data-video-data="{ 
497    						&quot;showControls&quot;:true, 
498    						&quot;videoSources&quot;:[ 
499    							${video} 
500    						], 
501    						&quot;posters&quot;:{ 
502    							&quot;desktop&quot;:&quot;${poster.desktop!}&quot;, 
503    							&quot;tabletLandscape&quot;:&quot;${poster.tablet_landscape!}&quot;, 
504    							&quot;tabletPortrait&quot;:&quot;${poster.tablet_portrait!}&quot;, 
505    							&quot;mobile&quot;:&quot;${poster.mobile!}&quot; 
506    						}}" 
507                             data-img-url-d="${poster.desktop!}" 
508                             data-img-url-tl="${poster.tablet_landscape!}" 
509                             data-img-url-tp="${poster.tablet_portrait!}" 
510                             data-img-url-m="${poster.mobile!}"> 
511                        </div> 
512                    </#if> 
513                </div> 
514            </div> 
515        </#macro> 
516     
517        <#if VideoInfo.Video.getData() != "" ||  VideoInfo.YoutubeId.getData() != "" ||  VideoInfo.CantoUrl.getData() != "" > 
518     
519            <#assign isLeft = (VideoInfo.ImagePosition?? && VideoInfo.ImagePosition.getData() != "" && !(VideoInfo.ImagePosition.getData())?contains("right")) > 
520     
521            <#assign scalingDetails = { 
522            "desktop": {"alternateImage": {}, "key": "w_720"}, 
523            "tl": {"alternateImage": VideoInfo.Image.ImageTl!, "key": "h_695"}, 
524            "tp": {"alternateImage": VideoInfo.Image.ImageTp!, "key": "w_768"}, 
525            "mobile": {"alternateImage": VideoInfo.Image.ImageM!, "key": "w_375"} 
526            }> 
527            <#assign posterImg = leonardo.adaptImage(VideoInfo.Image!, scalingDetails )> 
528     
529            <noscript> 
530                <img src="${posterImg.desktop!}" alt='${posterImg.alt_desktop!}'> 
531                <img src="${posterImg.tablet_landscape!}" alt='${posterImg.alt_tablet_landscape!}'> 
532                <img src="${posterImg.tablet_portrait!}" alt='${posterImg.alt_tablet_portrait!}'> 
533                <img src="${posterImg.mobile!}" alt='${posterImg.alt_mobile!}'> 
534            </noscript> 
535     
536            <#assign isYt = (VideoInfo.YoutubeId.getData() != "") > 
537            <#assign isCanto = (VideoInfo.CantoUrl.getData())?has_content && (VideoInfo.CantoUrl.getData() != "") > 
538     
539            <#if (VideoInfo.CantoUrl.getData())?has_content && VideoInfo.CantoUrl.getData() != ""> 
540                <#assign videoStr = VideoInfo.CantoUrl.getData()> 
541            <#elseif VideoInfo.YoutubeId.getData() != ""> 
542                <#assign videoStr = VideoInfo.YoutubeId.getData()> 
543            <#elseif VideoInfo.Video.getSiblings()?has_content> 
544                <#assign videoStr = ""> 
545                <#list VideoInfo.Video.getSiblings() as cur_Video> 
546                    <#assign videoFile = cur_Video.getData()> 
547                    <#assign videoFileType = cur_Video.VideoType.getData()> 
548                    <#if videoStr?? && videoStr != ""> 
549                        <#assign videoStr = videoStr + ","> 
550                    </#if> 
551                    <#assign videoStr = videoStr + "{&quot;src&quot;:&quot;" + videoFile + "&quot;,&quot;type&quot;:&quot;" + videoFileType + "&quot;}"> 
552                </#list> 
553            </#if> 
554     
555            <!--Start Module: Plan Highlights--> 
556            <div class="section-container section-container--fixed"> 
557                <#if TextInfo.Title.isAnchorEnabled?? && getterUtil.getBoolean(TextInfo.Title.isAnchorEnabled.getData())> 
558                    <#assign labelIsLeft = ((TextInfo.Title.isAnchorEnabled.AnchorText.LabelPosition.getData())!"left") == "left"> 
559                    <div class="section-grid layout--tp-col layout--m-col"> 
560                        <#if !labelIsLeft > 
561                            <div class="grid grid--d50p grid--tl50p grid--tp100p grid--m100p"></div> 
562                        </#if> 
563                        <div class="grid grid--d50p grid--tl50p grid--tp100p grid--m100p"> 
564                            <!--Start Module: Goto--> 
565                            <#if TextInfo.Title.isAnchorEnabled.AnchorText.getData() != "" > 
566                                <a class='goto ${(!labelIsLeft)?then("goto--icon-left","")}' href="javascript:void(0)" title="Scroll to next section">${TextInfo.Title.isAnchorEnabled.AnchorText.getData()}<span class="icon--goto"></span></a> 
567                            </#if> 
568                            <!--End Module: Goto--> 
569                        </div> 
570                        <#if labelIsLeft> 
571                            <div class="grid grid--d50p grid--tl50p grid--tp100p grid--m100p"></div> 
572                        </#if> 
573                    </div> 
574                </#if> 
575                <div class="${cssForTitle}"> 
576                    <div class="section-grid ${(!isLeft)?then('layout--tp-col-reverse layout--m-col-reverse','layout--tp-col layout--m-col')}"> 
577                        <#if isLeft > 
578                            <@videoBox yt=isYt canto=isCanto video=videoStr poster=posterImg /> 
579                        </#if> 
580                        <div class="grid grid--d50p grid--tl50p grid--tp100p grid--m100p"> 
581                            <!--Start Module: Highlights Pitch--> 
582                            <div class="highlights-pitch"> 
583                                <#if TextInfo.Title.getData() != "" > 
584                                    <#if TextInfo.Title.isH1?? && getterUtil.getBoolean(TextInfo.Title.isH1.getData())> 
585                                        <h1 class="highlights-pitch--title"><@leonardo.escapeTitle title=TextInfo.Title.getData()/></h1> 
586                                    <#else> 
587                                        <h2 class="highlights-pitch--title"><@leonardo.escapeTitle title=TextInfo.Title.getData()/></h2> 
588                                    </#if> 
589                                    <#if TextInfo.Title.Description?? && TextInfo.Title.Description.getData() != "" > 
590                                        <p class="highlights-pitch--description"><@leonardo.escapeTitle title=TextInfo.Title.Description.getData()/></p> 
591                                    </#if> 
592                                </#if> 
593                                <#if TextInfo.Title.Attach?? && TextInfo.Title.Attach.getData() != ""> 
594                                    <div class="highlights-pitch--file-downloads"> 
595                                        <#list TextInfo.Title.Attach.getSiblings() as cur_file> 
596                                            <#assign file_info = leonardo.findFileEntryInfo(cur_file.getData()) > 
597                                            <div class="highlights-pitch--file"> 
598                                                <a class="file" 
599                                                   href="${file_info.downloadUrl}" 
600                                                   target="_blank"> 
601                                                    <@downloadIcon /> 
602                                                    <span class="highlights-pitch--file--filename"> 
603    										${(cur_file.Label.getData())!(file_info.title)!} 
604    										</span> 
605                                                </a> 
606                                            </div> 
607                                        </#list> 
608                                    </div> 
609                                </#if> 
610                                <#assign opened = false> 
611                                <#if Links?has_content> 
612                                    <#list Links.getSiblings() as cur_Link> 
613                                        <#assign targetUrl=leonardo.getTargetUrl(cur_Link.ExternalTargetURL, cur_Link.LinkTargetPage)!> 
614                                        <#if targetUrl?has_content> 
615                                            <#assign target=leonardo.getTarget(cur_Link.LinkTargetOpenIn!)!> 
616                                            <#if opened = false> 
617                                                <div class="section-hero-card--targets" > 
618                                                <#assign opened = true> 
619                                            </#if> 
620                                            <div class="section-hero-card--target"> 
621                                                <a class="section-hero-card--target--link" 
622                                                   href="${targetUrl}" 
623                                                   target = "${target}" 
624                                                   title="${cur_Link.LinkText.data!}" > 
625                                                    ${cur_Link.LinkText.data!} 
626                                                    <span class="icon--read-more"></span> 
627                                                </a> 
628                                            </div> 
629                                        </#if> 
630                                    </#list> 
631                                    <#if opened> 
632                                        </div> 
633                                    </#if> 
634                                </#if> 
635                            </div> 
636                            <!--End Module: Highlights Pitch--> 
637                        </div> 
638                        <#if !isLeft > 
639                            <@videoBox yt=isYt canto=isCanto video=videoStr poster=posterImg /> 
640                        </#if> 
641                    </div> 
642                </div> 
643            </div> 
644            <!--End Module: Plan Highlights--> 
645        <#else> 
646            <!-- No video selected --> 
647        </#if> 
648    </#if> 
649</#if> 
OGR_OGR_P1104778

Ricevi gli ultimi aggiornamenti su Leonardo

Iscriviti
Search overlay background

Mobile navigation menu