Financial highlights
Last trade 57.98€
Variation -2.06%
24/03/2026 - 05:39 PM
data source: Investis Digital
Financial highlights
Last trade 57.98€
Variation -2.06%
24/03/2026 - 05:39 PM
data source: Investis Digital
Financial Results & Reports
Press releases
Data collection and processing are essential practices to interpret and understand everyday life in order to work, communicate and live better. They are the raw materials for industrial digitalisation, for the evolution of the country and to design a sustainable future for the planet.
Data, numbers, codes, information, knowledge. With skills, technologies and infrastructure, Leonardo is at the heart of the digital transformation to drive development, security and sustainability through an accurate process of data-driven decision-making.
Focusing on the exploitation of data and the so-called data-driven economy to strengthen the company's core activities, Leonardo is improving its technological and product competitiveness also through the Genoa Hub for Industrial Digitalisation launched on 1 December 2021.
The key to accelerating digitalisation lies in supercomputing: the ability to process huge amounts of data and to do it quickly. Genoa is home to davinci-1, one of the most powerful supercomputers in the Aerospace, Defence and Security sector. The Hub's main competences are:
The following has evaluated to null or missing:
==> maxWidth [in template "20115#20151#20291585" at line 63, column 10]
----
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 maxWidth != "without-margin" [in template "20115#20151#20291585" at line 63, column 5]
----
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 "Video Inline Restyled"/>
5
6 <#assign journalArticleId = .vars['reserved-article-id'].data>
7
8 <#assign
9 journalArticleId = .vars['reserved-article-id'].data
10 cantoUrl = ""
11 autoplay = false
12 loop = false
13 controlBar = false
14 posterImage = ""
15 caption = ""
16 author = ""
17 >
18
19
20 <#if (CantoUrl.getData())?has_content>
21 <#assign
22 cantoUrl = CantoUrl.getData()
23 >
24 </#if>
25
26 <#if CantoUrl.CantoAutoPlay?? && getterUtil.getBoolean(CantoUrl.CantoAutoPlay.getData())>
27 <#assign
28 autoplay = true
29 >
30 </#if>
31
32 <#if CantoUrl.CantoLoop?? && getterUtil.getBoolean(CantoUrl.CantoLoop.getData())>
33 <#assign
34 loop = true
35 >
36 </#if>
37
38 <#if CantoUrl.CantoControlBar?? && getterUtil.getBoolean(CantoUrl.CantoControlBar.getData())>
39 <#assign
40 controlBar = true
41 >
42 </#if>
43
44 <#if PosterImage.getData()?? && PosterImage.getData() != "">
45 <#assign
46 posterImage = PosterImage.getData()
47 >
48 </#if>
49
50 <#if Caption?? && Caption.getData() != "">
51 <#assign caption = Caption.getData() />
52 </#if>
53 <#if Author?? && Author.getData() != "">
54 <#assign author = Author.getData() />
55 </#if>
56 <#if MaxWidth?? && MaxWidth.getData() != "">
57 <#assign maxWidth = MaxWidth.getData() />
58 </#if>
59
60
61 <#if cantoUrl!= ''>
62
63 <#if maxWidth != "without-margin">
64 <#assign scalingDetails = {
65 "desktop": {"alternateImage": {}, "key": "w_944"},
66 "tl": {"alternateImage": PosterImage!, "key": "w_944"},
67 "tp": {"alternateImage": PosterImage!, "key": "w_720"},
68 "mobile": {"alternateImage": PosterImage!, "key": "w_596"}
69 }>
70 <#else>
71 <#assign scalingDetails = {
72 "desktop": {"alternateImage": {}, "key": "w_1440"},
73 "tl": {"alternateImage": PosterImage!, "key": "w_1120"},
74 "tp": {"alternateImage": PosterImage!, "key": "w_768"},
75 "mobile": {"alternateImage": PosterImage!, "key": "w_596"}
76 }>
77 </#if>
78 <#assign posterImg = leonardo.adaptImage(PosterImage!, scalingDetails )>
79
80 <div class="container-full-width pagination-flex padding-block">
81 <div class="component-with-title <#if maxWidth != "without-margin">container tight<#else>video-big</#if>">
82 <div class="<#if maxWidth != "without-margin"> video-full-width-container-rounded video-inline-wrapper </#if> <#if (!controlBar && autoplay)>no-pause</#if> video-inline-wrapper-${.vars['reserved-article-id'].data}">
83
84 <button
85 class="video-full-width"
86 title="play video"
87 onclick="playSingleVideo(this)"
88 data-video="${cantoUrl}"
89 >
90 <div class="cover <#if maxWidth != "without-margin"> rounded-20</#if>">
91 <#if PosterImage.getData() !=''>
92 <picture class="video-card-picture">
93 <source
94 srcset="${posterImg.mobile?replace(" ", "%20")!}"
95 media="(max-width: 576px)"
96 >
97 <source
98 srcset="${posterImg.tablet_portrait?replace(" ", "%20")!}"
99 media="(max-width: 768px)"
100 >
101 <source
102 srcset="${posterImg.tablet_landscape?replace(" ", "%20")!}"
103 media="(max-width: 1024px)"
104 >
105 <img class="img-fluid" src="${posterImg.desktop?replace(" ", "%20")!}" alt="cover-video">
106 </picture>
107 </#if>
108 <div class="btn-play">
109 <img class="icon" src="${themeDisplay.getPathThemeImages()}/img/generic/button-play.svg" alt="play">
110 <img class="icon-hover" src="${themeDisplay.getPathThemeImages()}/img/generic/button-play-hover.svg" alt="play">
111 </div>
112 </div>
113 </button>
114 </div>
115 <#if caption != "">
116 <div class="description-label text-center">
117 ${caption} <#if (author != "")>${author}</#if>
118 </div>
119 </#if>
120 </div>
121 </div>
122 </#if>
123<#else>
124 <@leonardo.articleInfo .vars "Video Inline"/>
125
126 <#assign journalArticleId = .vars['reserved-article-id'].data>
127
128 <#assign
129 journalArticleId = .vars['reserved-article-id'].data
130 cantoUrl = ""
131 autoplay = false
132 loop = false
133 controlBar = false
134 posterImage = ""
135 maxWidthClass = ""
136 maxWidthPixel = ""
137 verticalSpacePixel = ""
138 horizontalSpacePixel = ""
139 alignmentClass = ""
140 caption = ""
141 author = ""
142 >
143
144
145 <#if (CantoUrl.getData())?has_content>
146 <#assign
147 cantoUrl = CantoUrl.getData()
148 >
149 </#if>
150
151 <#if CantoUrl.CantoAutoPlay?? && getterUtil.getBoolean(CantoUrl.CantoAutoPlay.getData())>
152 <#assign
153 autoplay = true
154 >
155 </#if>
156
157 <#if CantoUrl.CantoLoop?? && getterUtil.getBoolean(CantoUrl.CantoLoop.getData())>
158 <#assign
159 loop = true
160 >
161 </#if>
162
163 <#if CantoUrl.CantoControlBar?? && getterUtil.getBoolean(CantoUrl.CantoControlBar.getData())>
164 <#assign
165 controlBar = true
166 >
167 </#if>
168
169 <#if PosterImage.getData()?? && PosterImage.getData() != "">
170 <#assign
171 posterImage = PosterImage.getData()
172 >
173 </#if>
174
175
176 <#if MaxWidth?? && MaxWidth.getData() != "">
177 <#assign maxWidthClass = MaxWidth.getData() />
178 </#if>
179 <#if MaxWidthPixel?? && MaxWidthPixel.getData() != "">
180 <#assign maxWidthPixel = MaxWidthPixel.getData() />
181 </#if>
182 <#if VerticalSpace?? && VerticalSpace.getData() != "">
183 <#assign verticalSpacePixel = VerticalSpace.getData() />
184 </#if>
185 <#if HorizontalSpace?? && HorizontalSpace.getData() != "">
186 <#assign horizontalSpacePixel = HorizontalSpace.getData() />
187 </#if>
188 <#if Alignment?? && Alignment.getData() != "">
189 <#assign alignmentClass = Alignment.getData() />
190 </#if>
191
192 <#if Caption?? && Caption.getData() != "">
193 <#assign caption = Caption.getData() />
194 </#if>
195 <#if Author?? && Author.getData() != "">
196 <#assign author = Author.getData() />
197 </#if>
198
199
200
201 <#if cantoUrl!= ''>
202
203 <#assign scalingDetails = {
204 "desktop": {"alternateImage": {}, "key": "w_1440"},
205 "tl": {"alternateImage": PosterImage!, "key": "h_703"},
206 "tp": {"alternateImage": PosterImage!, "key": "h_959"},
207 "mobile": {"alternateImage": PosterImage!, "key": "h_602"}
208 }>
209 <#assign posterImg = leonardo.adaptImage(PosterImage!, scalingDetails )>
210
211 <div class="video-inline-wrapper <#if (!controlBar && autoplay)>no-pause</#if> video-inline-wrapper-${.vars['reserved-article-id'].data} <#if maxWidthPixel == "" && horizontalSpacePixel == "">${maxWidthClass?html}</#if> ${alignmentClass?html}">
212 <video id="video-${journalArticleId}"
213 data-video-url="${cantoUrl}"
214 data-video-autoplay="<#if autoplay>1<#else>0</#if>"
215 data-video-loop="<#if loop>1<#else>0</#if>"
216 data-video-controls="<#if controlBar>1<#else>0</#if>"
217 <#if autoplay>autoplay muted</#if>
218 <#if loop>loop</#if>
219 <#if controlBar>controls</#if>
220 <#if posterImage!="">poster="${posterImage}"</#if>
221 preload="auto"
222 width="100%"
223 height="100%">
224 </video>
225 <#if (!autoplay)>
226 <a class="leo-video--play" href="javascript:void(0)" title="Play"></a>
227 </#if>
228 </div>
229 <#if ((caption != "") || (author != ""))>
230 <div class="video-inline-caption-wrapper">
231 ${caption}<#if (author != "")><span class="general-author">${author}</span></#if>
232 </div>
233 </#if>
234
235
236 <style type="text/css">
237 <#if maxWidthPixel != "">
238 html.leo18.dark-theme body #wrapper.leonardocompany .video-inline-wrapper-${.vars['reserved-article-id'].data} {
239 max-width: ${maxWidthPixel?html}px;
240 }
241 </#if>
242 <#if verticalSpacePixel != "">
243 html.leo18.dark-theme body #wrapper.leonardocompany .video-inline-wrapper-${.vars['reserved-article-id'].data} {
244 padding-bottom: ${verticalSpacePixel?html}px;
245 padding-top: ${verticalSpacePixel?html}px;
246 }
247 </#if>
248 <#if horizontalSpacePixel != "">
249 html.leo18.dark-theme body #wrapper.leonardocompany .video-inline-wrapper-${.vars['reserved-article-id'].data} {
250 padding-left: ${horizontalSpacePixel?html}px;
251 padding-right: ${horizontalSpacePixel?html}px;
252 }
253 </#if>
254 </style>
255
256 </#if>
257</#if>
2026-03-24T20:37:26Z
cookie_disclaimer:true
page_disclaimer :false