Controllo del Traffico Aereo: per un cielo più sicuro
Assicuriamo un supporto efficiente ed affidabile agli operatori ATC
Financial highlights
Ultima quotazione 53,93€
Variazione -1,80%
07/07/2026 - 17:37
data source: Investis Digital
Overview
Oltre 150 paesi nel mondo utilizzano i nostri sistemi di controllo del traffico aereo. Offriamo sistemi ATC, sensori di sorveglianza, cyber security, comunicazioni, radar meteorologici e aiuti alla navigazione, garantendo un supporto efficiente e affidabile agli operatori del settore.
Tecnologia all’avanguardia per tutte le fasi di volo
Progettiamo e forniamo radar primari e secondari, sensori meteo, centri operativi basati su intelligenza distribuita, sistemi multi-tracciamento e reti di comunicazione aeronautica, integrando sensori, display, processori, comunicazione dati per sistemi di automazione avanzati commerciali o per la difesa.
Incremento della sicurezza aeroportuale
Soluzioni integrate per coprire tutti i requisiti ATM/CNS per le aree di rotta, avvicinamento e terminali. Una gamma completa di prodotti modulari e integrati per garantire e aumentare la sicurezza e la resilienza degli aeroporti, in conformità con i più elevati standard internazionali riconosciuti.
Cyber Security nei cieli
Offriamo una vasta gamma di servizi e soluzioni di sicurezza informatica specifici per l'aviazione, con l’obiettivo di fornire alle organizzazioni ATM e aeroportuali una strategia di sicurezza affidabile.
Syntax error in template "20115#20151#14304350" in line 216, column 141:
Encountered ")", but was expecting one of:
"."
".."
<DOT_DOT_LESS>
"..*"
"?"
"??"
"!"
"["
"("
"}"
<TERMINATING_EXCLAM>
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
5 <@leonardo.articleInfo .vars "(G1, H) Images Wall (tabbed)"/>
6 <#assign ns = randomNamespace>
7 <#assign portletId = themeDisplay.getPortletDisplay().getId()>
8 <#assign LayoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")>
9
10 <#if NASTab.NASTabBrick.hideBg?? && getterUtil.getBoolean(NASTab.NASTabBrick.hideBg.getData())>
11 <#assign hidebg = 'hide-bg' />
12 <#else>
13 <#assign hidebg = '' />
14 </#if>
15
16 <#if Selezionamahu?? && Selezionamahu.getData() !=''>
17 <#assign bg = "${Selezionamahu.getData()}" />
18 <#if Selezionamahu.getData() == 'white'>
19 <#assign margin = "margin-top margin-bottom" />
20 <#assign buttonColor = "black">
21 <#elseif Selezionamahu.getData() == 'black'>
22 <#assign buttonColor = "white">
23 <#assign margin = "" />
24 <#else>
25 <#assign buttonColor = "black">
26 <#assign margin = "" />
27 </#if>
28 <#else>
29 <#assign bg = "grey" />
30 <#assign margin = "" />
31 </#if>
32
33
34 <#if NASTab.getSiblings()?has_content>
35 <#assign sizeContent = NASTab.getSiblings()?size />
36 <#list NASTab.getSiblings() as tab>
37 <#if tab.NASTabBrick.getSiblings()?has_content>
38 <#list tab.NASTabBrick.getSiblings() as tabBrick>
39 <#assign w = tabBrick.NASTabBrickWidth.getData() />
40 <#assign abstract = tabBrick.NASTabBrickAbstract.getData() />
41 <#if w == "1">
42 <#assign width = "container tight">
43 <#elseif w == "1.5" && abstract ==''>
44 <#assign width = "container">
45 <#elseif w == "1.5" && abstract !=''>
46 <#assign width = "container tight">
47 <#elseif w == "2">
48 <#assign width = "container">
49 <#elseif w == "3">
50 <#assign width = "container-full-width">
51 <#elseif w == "4">
52 <#assign width = "container">
53 <#elseif w == "card">
54 <#assign width = "container">
55 <#elseif w == "empty">
56 <#assign width = "container-full-width">
57 <#else>
58 <#assign width = "container-full-width">
59 </#if>
60 </#list>
61 </#if>
62 </#list>
63 </#if>
64
65 <#if NASTab.getSiblings()?has_content>
66 <#if (sizeContent > 1) && NASTab.NASTabTag.getData() !=''>
67 <!--Tabs-->
68 <#assign articleId = .vars['reserved-article-id'].data />
69 <section class="container-full-width padding-top padding-bottom ${bg}">
70 <div class="container overflow-visible <#if NASTitle.getData()?? && NASTitle.getData() != ''> component-with-title</#if>">
71 <#if NASTitle.getData()?? && NASTitle.getData() != ''>
72 <h2 class="title-extralarge">
73 <@leonardo.escapeTitle title=NASTitle.getData()/>
74 </h2>
75 </#if>
76 <div class="tabs tabs-pillow automatic" role="tablist">
77 <#list NASTab.getSiblings() as tab>
78 <button
79 class="tab label-regular ${(tab?is_first)?then('active', '')}"
80 id="tab-${tab?index + 1}-${articleId}"
81 type="button"
82 role="tab"
83 aria-selected="true"
84 aria-controls="tabpanel-pillow-${tab?index + 1}-${articleId}"
85 >
86 ${tab.NASTabTag.getData()}
87 </button>
88 </#list>
89 </div>
90
91 <div class="tab-panel-container">
92 <#list NASTab.getSiblings() as tab>
93 <#if tab.NASTabBrick.getSiblings()?has_content>
94 <div
95 id="tabpanel-pillow-${tab?index + 1}-${articleId}"
96 role="tabpanel"
97 tabindex="0"
98 aria-labelledby="tab-${tab?index + 1}-${articleId}"
99 >
100 <#assign size = NASTab.NASTabBrick.getSiblings()?size />
101 <#if (size <= 3)>
102 <#assign css = "pb-lg-0" />
103 <#else>
104 <#assign css = "" />
105 </#if>
106 <!--Start Module: Products Cards-->
107 <div class="swiper macro-category-swiper ${css}">
108 <#if (size > 3)>
109 <div class="swiper-navigation red">
110 <button class="swiper-button-prev" aria-label="previous slide" tabindex="0">
111 <img src="${themeDisplay.getPathThemeImages()}/img/generic/arrow-left-red-icon.svg" alt="navigation left">
112 </button>
113 <button class="swiper-button-next" aria-label="next slide" tabindex="0">
114 <img src="${themeDisplay.getPathThemeImages()}/img/generic/arrow-right-red-icon.svg" alt="navigation right">
115 </button>
116 </div>
117 </#if>
118 <div class="swiper-wrapper">
119 <#list tab.NASTabBrick.getSiblings() as tabBrick>
120 <#assign scalingDetails = {
121 "desktop": {"alternateImage": {}, "key": "h_560"},
122 "tl": {"alternateImage": tabBrick.NASTabBrickImage.ImageTl!, "key": "h_560"},
123 "tp": {"alternateImage": tabBrick.NASTabBrickImage.ImageTp!, "key": "h_560"},
124 "mobile": {"alternateImage": tabBrick.NASTabBrickImage.ImageM!, "key": "h_400"} }>
125 <#assign dataImage = leonardo.adaptImage(tabBrick.NASTabBrickImage!, scalingDetails )>
126 <div class="swiper-slide">
127 <section class="macro-category-single-arrow">
128 <div class="content">
129 <a href="${leonardo.getTargetUrl(tabBrick.ExternalTargetURL!, tabBrick.NasTabBrickLink!)}" title="${tabBrick.NASTabBrickTitle.getData()}" target="${leonardo.getTarget(tabBrick.LinkTargetOpenIn!)}">
130 <h2 class="body-medium">
131 ${tabBrick.NASTabBrickTitle.getData()}
132 </h2>
133 <div class="image-container">
134
135 <picture>
136 <source
137 srcset="${dataImage.mobile?replace(" ", "%20")!}"
138 media="(max-width: 576px)"
139 />
140 <source
141 srcset="${dataImage.tablet_portrait?replace(" ", "%20")!}"
142 media="(max-width: 768px)"
143 >
144 <source
145 srcset="${dataImage.tablet_landscape?replace(" ", "%20")!}"
146 media="(max-width: 1024px)"
147 >
148 <img
149 class="img-fluid"
150 src="${dataImage.desktop?replace(" ", "%20")!}"
151 alt="${dataImage.alt_desktop!}" loading="lazy" decoding="async"
152 />
153 </picture>
154 </div>
155 </a>
156 </div>
157 </section>
158 </div>
159 </#list>
160 </div>
161 <div class="swiper-pagination ${buttonColor}"></div>
162 </div>
163 </div>
164 </#if>
165 </#list>
166 </div>
167 </div>
168 </section>
169 <#else>
170 <#list NASTab.getSiblings() as tab>
171 <#if tab.NASTabBrick.getSiblings()?has_content>
172 <#list tab.NASTabBrick.getSiblings() as tabBrick>
173 <#assign w = tabBrick.NASTabBrickWidth.getData() />
174 <#assign brick_index = tabBrick?index>
175 <#if w == "3">
176 <!--Card width full-->
177 <#if NASTab.NASTabBrick.NasTabBrickLink.getData() !='' || NASTab.NASTabBrick.ExternalTargetURL.getData() !=''>
178 <div class="container-full-width padding-top padding-bottom ${bg}">
179 <div class="component-newsletter ${margin} rounded-20">
180 <div class="container-full-width">
181 <div class="container">
182 <#if tabBrick.NASTabBrickImage.getData() !=''>
183 <div class="image-container">
184 <#assign scalingDetails = {
185 "desktop": {"alternateImage": {}, "key": "w_1440"},
186 "tl": {"alternateImage": tabBrick.NASTabBrickImage.ImageTl!, "key": "h_460"},
187 "tp": {"alternateImage": tabBrick.NASTabBrickImage.ImageTp!, "key": "h_325"},
188 "mobile": {"alternateImage": tabBrick.NASTabBrickImage.ImageM!, "key": "h_460"} }>
189 <#assign dataImage = leonardo.adaptImage(tabBrick.NASTabBrickImage!, scalingDetails )>
190 <picture class="bg-picture">
191 <source
192 srcset="${dataImage.mobile?replace(" ", "%20")!}"
193 media="(max-width: 576px)"
194 />
195 <source
196 srcset="${dataImage.tablet_portrait?replace(" ", "%20")!}"
197 media="(max-width: 768px)"
198 >
199 <source
200 srcset="${dataImage.tablet_landscape?replace(" ", "%20")!}"
201 media="(max-width: 1024px)"
202 >
203 <img
204 class="img-fluid"
205 src="${dataImage.desktop?replace(" ", "%20")!}"
206 alt="${dataImage.alt_desktop!}" loading="lazy" decoding="async"
207 />
208 </picture>
209 </div>
210 </#if>
211 <div class="content ${hidebg} <#if tabBrick.NASTabBrickTitle.getData() =='' && tabBrick.NASTabBrickAbstract.getData() ==''>justify-content-end pb-5</#if>">
212 <#if tabBrick.NASTabBrickTitle.getData() !=''>
213 <p class="title title-banner">${tabBrick.NASTabBrickTitle.getData()}</p>
214 </#if>
215 <#if tabBrick.NASTabBrickAbstract.getData() !=''>
216 <p class="body-medium subtitle text-center">${tabBrick.NASTabBrickAbstract.getData())}</p>
217 </#if>
218 <#if tabBrick.ExternalTargetURL.getData() !=''>
219 <#assign linkUrl = tabBrick.ExternalTargetURL.getData() />
220 <#elseif tabBrick.NasTabBrickLink.getData() !=''>
221 <#assign linkUrl = tabBrick.NasTabBrickLink.getFriendlyUrl() />
222 </#if>
223 <#if tabBrick.LabelLink?? && tabBrick.LabelLink.getData() !=''>
224 <#assign linkLabel = tabBrick.LabelLink.getData() />
225 <#else>
226 <#assign linkLabel>
227 <@liferay.language key="discover-more" />
228 </#assign>
229 </#if>
230 <#assign linkTarget=leonardo.getTarget(tabBrick.LinkTargetOpenIn!)>
231 <a class="btn-primary-negative" href="${linkUrl}" target = "${linkTarget}" title ="${linkLabel}">${linkLabel}</a>
232 </div>
233 </div>
234 </div>
235 </div>
236 </div>
237 <#else>
238 <section class="component-with-title container-full-width ${bg} margin-top margin-bottom">
239 <#if NASTitle.getData()?? && NASTitle.getData() != ''>
240 <div class="container">
241 <h2 class="title-extralarge">
242 <@leonardo.escapeTitle title=NASTitle.getData()/>
243 </h2>
244 </div>
245 </#if>
246 <#list NASTab.getSiblings() as tab>
247 <#if tab.NASTabBrick.getSiblings()?has_content>
248 <#list tab.NASTabBrick.getSiblings() as tabBrick>
249 <div class="campaigns-section grid">
250 <#assign scalingDetails = {
251 "desktop": {"alternateImage": {}, "key": "h_959"},
252 "tl": {"alternateImage": tabBrick.NASTabBrickImage.ImageTl!, "key": "h_959"},
253 "tp": {"alternateImage": tabBrick.NASTabBrickImage.ImageTp!, "key": "h_959"},
254 "mobile": {"alternateImage": tabBrick.NASTabBrickImage.ImageM!, "key": "h_959"} }>
255 <#assign dataImage = leonardo.adaptImage(tabBrick.NASTabBrickImage!, scalingDetails )>
256 <picture>
257 <source
258 srcset="${dataImage.mobile?replace(" ", "%20")!}"
259 media="(max-width: 576px)"
260 />
261 <source
262 srcset="${dataImage.tablet_portrait?replace(" ", "%20")!}"
263 media="(max-width: 768px)"
264 >
265 <source
266 srcset="${dataImage.tablet_landscape?replace(" ", "%20")!}"
267 media="(max-width: 1024px)"
268 >
269 <img
270 class="bg"
271 src="${dataImage.desktop?replace(" ", "%20")!}"
272 alt="${dataImage.alt_desktop!}" loading="lazy" decoding="async"
273 />
274 </picture>
275 <div class="container padding">
276 <p class="title-hero-02 title">
277 <#if tabBrick.NASTabBrickTitle.getData() !=''>
278 ${tabBrick.NASTabBrickTitle.getData()}
279 </#if>
280 </p>
281 <#if tabBrick.linkList.linkItem.linkTitle.getData() !=''>
282 <div class="flex">
283 <#list tabBrick.linkList.linkItem.getSiblings() as linkItem>
284 <#assign linkUrl=leonardo.getTargetUrl(linkItem.externalUrl!, linkItem.link!)>
285 <#assign linkTarget=leonardo.getTarget(linkItem.linkTarget!)>
286 <a href="${linkUrl}" target = "${linkTarget}" title ="${linkItem.linkTitle.data!}" class="body-medium">${linkItem.linkTitle.data!}</a>
287 </#list>
288 </div>
289 </#if>
290 </div>
291 </div>
292 </#list>
293 </#if>
294 </#list>
295 </section>
296 </#if>
297 <#elseif w == "1">
298 <#assign outer_index = tabBrick?index>
299 <#if outer_index == 1>
300 <div class="container-full-width <#if brick_index != 1>padding-top </#if> ${bg} newsletter-grid padding-bottom">
301 <div class="container">
302 <div class="grid">
303 <!--Card width full in grid-->
304 <#if NASTab.NASTabBrick.NasTabBrickLink.getData() !='' || NASTab.NASTabBrick.ExternalTargetURL.getData() !=''>
305 <div class="component-newsletter ${margin} small">
306 <div class="container-full-width">
307 <div class="container">
308 <#if tabBrick.NASTabBrickImage.getData() !=''>
309 <div class="image-container">
310 <#assign scalingDetails = {
311 "desktop": {"alternateImage": {}, "key": "h_460"},
312 "tl": {"alternateImage": tabBrick.NASTabBrickImage.ImageTl!, "key": "h_300"},
313 "tp": {"alternateImage": tabBrick.NASTabBrickImage.ImageTp!, "key": "h_300"},
314 "mobile": {"alternateImage": tabBrick.NASTabBrickImage.ImageM!, "key": "h_460"} }>
315 <#assign dataImage = leonardo.adaptImage(tabBrick.NASTabBrickImage!, scalingDetails )>
316 <picture>
317 <source
318 srcset="${dataImage.mobile?replace(" ", "%20")!}"
319 media="(max-width: 576px)"
320 />
321 <source
322 srcset="${dataImage.tablet_portrait?replace(" ", "%20")!}"
323 media="(max-width: 768px)"
324 >
325 <source
326 srcset="${dataImage.tablet_landscape?replace(" ", "%20")!}"
327 media="(max-width: 1024px)"
328 >
329 <img
330 class="img-fluid"
331 src="${dataImage.desktop?replace(" ", "%20")!}"
332 alt="${dataImage.alt_desktop!}" loading="lazy" decoding="async"
333 />
334 </picture>
335 </div>
336 </#if>
337 <div class="content">
338 <#if tabBrick.NASTabBrickTitle.getData() !=''>
339 <p class="title title-regular">${tabBrick.NASTabBrickTitle.getData()}</p>
340 </#if>
341 <#if tabBrick.NASTabBrickAbstract.getData() !=''>
342 <p class="body-small subtitle text-center">${tabBrick.NASTabBrickAbstract.getData()}</p>
343 </#if>
344 <div class="flex">
345 <#if tabBrick.ExternalTargetURL.getData() !=''>
346 <#assign linkUrl = tabBrick.ExternalTargetURL.getData() />
347 <#elseif tabBrick.NasTabBrickLink.getData() !=''>
348 <#assign linkUrl = tabBrick.NasTabBrickLink.getFriendlyUrl() />
349 </#if>
350 <#if tabBrick.LabelLink?? && tabBrick.LabelLink.getData() !=''>
351 <#assign linkLabel = tabBrick.LabelLink.getData() />
352 <#else>
353 <#assign linkLabel>
354 <@liferay.language key="discover-more" />
355 </#assign>
356 </#if>
357 <#assign linkTarget=leonardo.getTarget(tabBrick.LinkTargetOpenIn!)>
358 <a class="btn-primary-negative" href="${linkUrl}" target = "${linkTarget}" title ="${linkLabel}">${linkLabel}</a>
359 </div>
360 </div>
361 </div>
362 </div>
363 </div>
364 </#if>
365 <#else>
366 <!--Card width full in grid-->
367 <#if NASTab.NASTabBrick.NasTabBrickLink.getData() !='' || NASTab.NASTabBrick.ExternalTargetURL.getData() !=''>
368 <div class="component-newsletter ${margin} small">
369 <div class="container-full-width">
370 <div class="container">
371 <#if tabBrick.NASTabBrickImage.getData() !=''>
372 <div class="image-container">
373 <#assign scalingDetails = {
374 "desktop": {"alternateImage": {}, "key": "h_460"},
375 "tl": {"alternateImage": tabBrick.NASTabBrickImage.ImageTl!, "key": "h_300"},
376 "tp": {"alternateImage": tabBrick.NASTabBrickImage.ImageTp!, "key": "h_300"},
377 "mobile": {"alternateImage": tabBrick.NASTabBrickImage.ImageM!, "key": "h_460"} }>
378 <#assign dataImage = leonardo.adaptImage(tabBrick.NASTabBrickImage!, scalingDetails )>
379 <picture>
380 <source
381 srcset="${dataImage.mobile?replace(" ", "%20")!}"
382 media="(max-width: 576px)"
383 />
384 <source
385 srcset="${dataImage.tablet_portrait?replace(" ", "%20")!}"
386 media="(max-width: 768px)"
387 >
388 <source
389 srcset="${dataImage.tablet_landscape?replace(" ", "%20")!}"
390 media="(max-width: 1024px)"
391 >
392 <img
393 class="img-fluid"
394 src="${dataImage.desktop?replace(" ", "%20")!}"
395 alt="${dataImage.alt_desktop!}" loading="lazy" decoding="async"
396 />
397 </picture>
398 </div>
399 </#if>
400 <div class="content">
401 <#if tabBrick.NASTabBrickTitle.getData() !=''>
402 <p class="title title-regular">${tabBrick.NASTabBrickTitle.getData()}</p>
403 </#if>
404 <#if tabBrick.NASTabBrickAbstract.getData() !=''>
405 <p class="body-small subtitle text-center">${tabBrick.NASTabBrickAbstract.data!?replace(r"<[^>]*>", "", "r")}</p>
406 </#if>
407 <div class="flex">
408 <#if tabBrick.ExternalTargetURL.getData() !=''>
409 <#assign linkUrl = tabBrick.ExternalTargetURL.getData() />
410 <#elseif tabBrick.NasTabBrickLink.getData() !=''>
411 <#assign linkUrl = tabBrick.NasTabBrickLink.getFriendlyUrl() />
412 </#if>
413 <#if tabBrick.LabelLink?? && tabBrick.LabelLink.getData() !=''>
414 <#assign linkLabel = tabBrick.LabelLink.getData() />
415 <#else>
416 <#assign linkLabel>
417 <@liferay.language key="discover-more" />
418 </#assign>
419 </#if>
420 <#assign linkTarget=leonardo.getTarget(tabBrick.LinkTargetOpenIn!)>
421 <a class="btn-primary-negative" href="${linkUrl}" target = "${linkTarget}" title ="${linkLabel}">${linkLabel}</a>
422 </div>
423 </div>
424 </div>
425 </div>
426 </div>
427 </#if>
428 </#if>
429 <#elseif w == "empty">
430 <!--Card width full without button-->
431 <div class="${width} padding-top padding-bottom ${bg}">
432 <#list NASTab.getSiblings() as tab>
433 <#if tab.NASTabBrick.getSiblings()?has_content>
434 <#list tab.NASTabBrick.getSiblings() as tabBrick>
435 <div class="component-newsletter ${margin} rounded-20">
436 <div class="container-full-width">
437 <#if tabBrick.LabelLink?? && tabBrick.LabelLink.getData() !=''>
438 <div class="container">
439 <#if tabBrick.NASTabBrickImage.getData() !=''>
440 <div class="image-container">
441 <#assign scalingDetails = {
442 "desktop": {"alternateImage": {}, "key": "h_460"},
443 "tl": {"alternateImage": tabBrick.NASTabBrickImage.ImageTl!, "key": "h_300"},
444 "tp": {"alternateImage": tabBrick.NASTabBrickImage.ImageTp!, "key": "h_300"},
445 "mobile": {"alternateImage": tabBrick.NASTabBrickImage.ImageM!, "key": "h_460"} }>
446 <#assign dataImage = leonardo.adaptImage(tabBrick.NASTabBrickImage!, scalingDetails )>
447 <picture>
448 <source
449 srcset="${dataImage.mobile?replace(" ", "%20")!}"
450 media="(max-width: 576px)"
451 />
452 <source
453 srcset="${dataImage.tablet_portrait?replace(" ", "%20")!}"
454 media="(max-width: 768px)"
455 >
456 <source
457 srcset="${dataImage.tablet_landscape?replace(" ", "%20")!}"
458 media="(max-width: 1024px)"
459 >
460 <img
461 class="img-fluid"
462 src="${dataImage.desktop?replace(" ", "%20")!}"
463 alt="${dataImage.alt_desktop!}" loading="lazy" decoding="async"
464 />
465 </picture>
466 </div>
467 </#if>
468 <div class="content">
469 <#if tabBrick.NASTabBrickTitle.getData() !=''>
470 <p class="title title-banner">${tabBrick.NASTabBrickTitle.getData()}</p>
471 </#if>
472 <#if tabBrick.NASTabBrickAbstract.getData() !=''>
473 <p class="body-medium subtitle text-center">${tabBrick.NASTabBrickAbstract.data!?replace(r"<[^>]*>", "", "r")}</p>
474 </#if>
475 <div class="flex">
476 <#if tabBrick.ExternalTargetURL.getData() !=''>
477 <#assign linkUrl = tabBrick.ExternalTargetURL.getData() />
478 <#elseif tabBrick.NasTabBrickLink.getData() !=''>
479 <#assign linkUrl = tabBrick.NasTabBrickLink.getFriendlyUrl() />
480 </#if>
481 <#if tabBrick.LabelLink?? && tabBrick.LabelLink.getData() !=''>
482 <#assign linkLabel = tabBrick.LabelLink.getData() />
483 <#else>
484 <#assign linkLabel = liferay.language key="discover-more" />
485 </#if>
486 <#assign linkTarget=leonardo.getTarget(tabBrick.LinkTargetOpenIn!)>
487 <a class="btn-primary-negative" href="${linkUrl}" target = "${linkTarget}" title ="${linkLabel}">${linkLabel}</a>
488 </div>
489 </div>
490 </div>
491 <#else>
492 <#if tabBrick.ExternalTargetURL.getData() !=''>
493 <#assign linkUrl = tabBrick.ExternalTargetURL.getData() />
494 <#elseif tabBrick.NasTabBrickLink.getData() !=''>
495 <#assign linkUrl = tabBrick.NasTabBrickLink.getFriendlyUrl() />
496 </#if>
497 <#assign linkTarget=leonardo.getTarget(tabBrick.LinkTargetOpenIn!)>
498 <a href="${linkUrl}" target = "${linkTarget}" class="container d-block">
499 <#if tabBrick.NASTabBrickImage.getData() !=''>
500 <div class="image-container">
501 <#assign scalingDetails = {
502 "desktop": {"alternateImage": {}, "key": "h_460"},
503 "tl": {"alternateImage": tabBrick.NASTabBrickImage.ImageTl!, "key": "h_300"},
504 "tp": {"alternateImage": tabBrick.NASTabBrickImage.ImageTp!, "key": "h_300"},
505 "mobile": {"alternateImage": tabBrick.NASTabBrickImage.ImageM!, "key": "h_460"} }>
506 <#assign dataImage = leonardo.adaptImage(tabBrick.NASTabBrickImage!, scalingDetails )>
507 <picture>
508 <source
509 srcset="${dataImage.mobile?replace(" ", "%20")!}"
510 media="(max-width: 576px)"
511 />
512 <source
513 srcset="${dataImage.tablet_portrait?replace(" ", "%20")!}"
514 media="(max-width: 768px)"
515 >
516 <source
517 srcset="${dataImage.tablet_landscape?replace(" ", "%20")!}"
518 media="(max-width: 1024px)"
519 >
520 <img
521 class="img-fluid"
522 src="${dataImage.desktop?replace(" ", "%20")!}"
523 alt="${dataImage.alt_desktop!}" loading="lazy" decoding="async"
524 />
525 </picture>
526 </div>
527 </#if>
528 <div class="content">
529 <#if tabBrick.NASTabBrickTitle.getData() !=''>
530 <p class="title title-banner">${tabBrick.NASTabBrickTitle.getData()}</p>
531 </#if>
532 </div>
533 </a>
534 </#if>
535 </div>
536 </div>
537 </#list>
538 </#if>
539 </#list>
540 </div>
541 <#else>
542 <#if w == "4">
543 <#assign cardCol = 'business-areas' />
544 <#assign titleCol = 'title' />
545 <#elseif w == "1.5" && abstract =='' || w == "2" && abstract ==''>
546 <#assign cardCol = 'macro-category double-row' />
547 <#assign titleCol = 'title body-medium' />
548 <#elseif w == "card">
549 <#assign cardCol = 'macro-category' />
550 <#assign titleCol = 'title body-medium' />
551 <#else>
552 <#assign cardCol = 'macro-category' />
553 <#assign titleCol = 'title body-medium' />
554 </#if>
555 <section class="sant-anna-school-swiper-wrapper ${cardCol} with-title padding-top padding-bottom ${bg}">
556 <div class="container-full-width">
557 <div class="${width} <#if NASTitle.getData()?? && NASTitle.getData() != ''>component-with-title</#if>">
558 <#if NASTitle.getData()?? && NASTitle.getData() != ''>
559 <h2 class="title-extralarge">
560 <@leonardo.escapeTitle title=NASTitle.getData()/>
561 </h2>
562 </#if>
563
564 <#if w == "1.5" && abstract !=''>
565 <!--Card two column con layer -->
566 <section class="sant-anna-school-carousel">
567 <#assign size = NASTab.NASTabBrick.getSiblings()?size />
568 <div class="swiper sant-anna-school-swiper <#if (size < 3)>pb-md-0</#if>">
569 <#if (size > 2)>
570 <div class="swiper-navigation red">
571 <button class="swiper-button-prev" aria-label="previous slide" tabindex="0">
572 <img src="${themeDisplay.getPathThemeImages()}/img/generic/arrow-left-red-icon.svg" alt="navigation left">
573 </button>
574 <button class="swiper-button-next" aria-label="next slide" tabindex="0">
575 <img src="${themeDisplay.getPathThemeImages()}/img/generic/arrow-right-red-icon.svg" alt="navigation right">
576 </button>
577 </div>
578 </#if>
579 <div class="swiper-wrapper">
580 <#list NASTab.getSiblings() as tab>
581 <#if tab.NASTabBrick.getSiblings()?has_content>
582 <#list tab.NASTabBrick.getSiblings() as tabBrick>
583 <#assign scalingDetails = {
584 "desktop": {"alternateImage": {}, "key": "h_530"},
585 "tl": {"alternateImage": tabBrick.NASTabBrickImage.ImageTl!, "key": "h_530"},
586 "tp": {"alternateImage": tabBrick.NASTabBrickImage.ImageTp!, "key": "h_530"},
587 "mobile": {"alternateImage": tabBrick.NASTabBrickImage.ImageM!, "key": "h_460"} }>
588 <#assign dataImage = leonardo.adaptImage(tabBrick.NASTabBrickImage!, scalingDetails )>
589 <div class="swiper-slide">
590 <#if tabBrick.ExternalTargetURL.getData() !='' || tabBrick.NasTabBrickLink.getData() !=''>
591 <a href="${leonardo.getTargetUrl(tabBrick.ExternalTargetURL!, tabBrick.NasTabBrickLink!)}" class="sant-anna-school-card" target="${leonardo.getTarget(tabBrick.LinkTargetOpenIn!)}">
592 <#else>
593 <div class="sant-anna-school-card">
594 </#if>
595 <picture>
596 <source
597 srcset="${dataImage.mobile?replace(" ", "%20")!}"
598 media="(max-width: 576px)"
599 />
600 <source
601 srcset="${dataImage.tablet_portrait?replace(" ", "%20")!}"
602 media="(max-width: 768px)"
603 >
604 <source
605 srcset="${dataImage.tablet_landscape?replace(" ", "%20")!}"
606 media="(max-width: 1024px)"
607 >
608 <img
609 class="management-card-image"
610 src="${dataImage.desktop?replace(" ", "%20")!}"
611 alt="${dataImage.alt_desktop!}" loading="lazy" decoding="async"
612 />
613 </picture>
614 <div class="sant-anna-school-card-title rounded-20">
615 <div class="sant-anna-school-card-title-content">
616 <#if tabBrick.NASTabBrickTitle.getData() !=''>
617 <span class="body-medium">${tabBrick.NASTabBrickTitle.getData()}
618 </span>
619 </#if>
620 <#if tabBrick.NASTabBrickTitle.getData() !=''>
621 <div class="body-small m-0">${tabBrick.NASTabBrickAbstract.getData()}
622 </div>
623 </#if>
624 </div>
625 </div>
626 <#if tabBrick.ExternalTargetURL.getData() !='' || tabBrick.NasTabBrickLink.getData() !=''>
627 </a>
628 <#else>
629 </div>
630 </#if>
631 </div>
632 </#list>
633 </#if>
634 </#list>
635 </div>
636 <div class="swiper-pagination ${buttonColor}"></div>
637 </div>
638 </section>
639 <#else>
640 <!--Card two column card grid -->
641 <#if w == "1.5" && abstract =='' || w == "2" && abstract ==''>
642 <div class="flex-container">
643 <#assign counter = 0>
644 <#list NASTab.getSiblings() as tab>
645 <#if tab.NASTabBrick.getSiblings()?has_content>
646 <#assign sizeSlide = tab.NASTabBrick.getSiblings()?size />
647 <#list tab.NASTabBrick.getSiblings() as tabBrick>
648 <#if tabBrick?index == 0>
649 <div class="content hover-resize-columns">
650 <#elseif tabBrick?index % 2 == 0>
651 </div>
652 <div class="content hover-resize-columns">
653 </#if>
654
655 <#if tabBrick.NASTabBrickTitle?? && tabBrick.NASTabBrickTitle.getData() !=''>
656 <a href="${leonardo.getTargetUrl(tabBrick.ExternalTargetURL!, tabBrick.NasTabBrickLink!)}" title="${tabBrick.NASTabBrickTitle.getData()}" target="${leonardo.getTarget(tabBrick.LinkTargetOpenIn!)}">
657 <#assign scalingDetails = {
658 "desktop": {"alternateImage": {}, "key": "h_480"},
659 "tl": {"alternateImage": tabBrick.NASTabBrickImage.ImageTl!, "key": "h_325"},
660 "tp": {"alternateImage": tabBrick.NASTabBrickImage.ImageTp!, "key": "h_325"},
661 "mobile": {"alternateImage": tabBrick.NASTabBrickImage.ImageM!, "key": "h_325"} }>
662 <#assign dataImage = leonardo.adaptImage(tabBrick.NASTabBrickImage!, scalingDetails )>
663 <div class="image-container">
664 <picture>
665 <source
666 srcset="${dataImage.mobile?replace(" ", "%20")!}"
667 media="(max-width: 576px)"
668 />
669 <source
670 srcset="${dataImage.tablet_portrait?replace(" ", "%20")!}"
671 media="(max-width: 768px)"
672 >
673 <source
674 srcset="${dataImage.tablet_landscape?replace(" ", "%20")!}"
675 media="(max-width: 1024px)"
676 >
677 <img
678 class="img-fluid"
679 src="${dataImage.desktop?replace(" ", "%20")!}"
680 alt="${dataImage.alt_desktop!}" loading="lazy" decoding="async"
681 />
682 </picture>
683 </div>
684 <div class="${titleCol}">${tabBrick.NASTabBrickTitle.getData()}</div>
685 </a>
686 </#if>
687 <#if tabBrick?index == sizeSlide - 1>
688 </div>
689 </#if>
690 </#list>
691 </#if>
692 </#list>
693 </div>
694 <#else>
695 <div class="content hover-resize-columns <#if w == "card">four-per-row</#if>">
696 <#list NASTab.getSiblings() as tab>
697 <#if tab.NASTabBrick.getSiblings()?has_content>
698 <#list tab.NASTabBrick.getSiblings() as tabBrick>
699 <#if tabBrick.NASTabBrickTitle?? && tabBrick.NASTabBrickTitle.getData() !=''>
700 <a href="${leonardo.getTargetUrl(tabBrick.ExternalTargetURL!, tabBrick.NasTabBrickLink!)}" title="${tabBrick.NASTabBrickTitle.getData()}" target="${leonardo.getTarget(tabBrick.LinkTargetOpenIn!)}">
701 <#if w == "4">
702 <#assign scalingDetails = {
703 "desktop": {"alternateImage": {}, "key": "h_325"},
704 "tl": {"alternateImage": tabBrick.NASTabBrickImage.ImageTl!, "key": "h_325"},
705 "tp": {"alternateImage": tabBrick.NASTabBrickImage.ImageTp!, "key": "h_325"},
706 "mobile": {"alternateImage": tabBrick.NASTabBrickImage.ImageM!, "key": "h_325"} }>
707 <#else>
708 <#assign scalingDetails = {
709 "desktop": {"alternateImage": {}, "key": "h_480"},
710 "tl": {"alternateImage": tabBrick.NASTabBrickImage.ImageTl!, "key": "h_325"},
711 "tp": {"alternateImage": tabBrick.NASTabBrickImage.ImageTp!, "key": "h_325"},
712 "mobile": {"alternateImage": tabBrick.NASTabBrickImage.ImageM!, "key": "h_325"} }>
713 </#if>
714 <#assign dataImage = leonardo.adaptImage(tabBrick.NASTabBrickImage!, scalingDetails )>
715 <div class="image-container">
716 <picture>
717 <source
718 srcset="${dataImage.mobile?replace(" ", "%20")!}"
719 media="(max-width: 576px)"
720 />
721 <source
722 srcset="${dataImage.tablet_portrait?replace(" ", "%20")!}"
723 media="(max-width: 768px)"
724 >
725 <source
726 srcset="${dataImage.tablet_landscape?replace(" ", "%20")!}"
727 media="(max-width: 1024px)"
728 >
729 <img
730 class="img-fluid"
731 src="${dataImage.desktop?replace(" ", "%20")!}"
732 alt="${dataImage.alt_desktop!}" loading="lazy" decoding="async"
733 />
734 </picture>
735 </div>
736 <div class="${titleCol}">${tabBrick.NASTabBrickTitle.getData()}</div>
737 </a>
738 </#if>
739 </#list>
740 </#if>
741 </#list>
742 </div>
743 </#if>
744 </#if>
745 </div>
746 </div>
747 </section>
748 <#break />
749 </#if>
750 </#list>
751 </#if>
752 </#list>
753 </#if>
754 </#if>
755<#else>
756 <@leonardo.articleInfo .vars "(G1, H) Images Wall (tabbed)"/>
757 <#assign ns = randomNamespace>
758 <#assign portletId = themeDisplay.getPortletDisplay().getId()>
759
760 <#assign LayoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")>
761 <#assign currentGroupExpandoBridge = themeDisplay.getScopeGroup().getExpandoBridge()>
762 <#assign isDarkTheme = false>
763
764 <#if currentGroupExpandoBridge.hasAttribute("dark-theme")>
765 <#assign isDarkTheme = currentGroupExpandoBridge.getAttribute("dark-theme", false)>
766 </#if>
767
768 <!--Start Module: Products Cards-->
769 <div class="section-container section-container--fixed">
770 <div class='products-cards-tabs ${((NASTab.getSiblings()?size) > 1)?then("","collapsedPadding")}'>
771 <#if NASTitle.getData()?? && NASTitle.getData() != ''>
772
773 ${(getterUtil.getBoolean(NASTitle.isH1Flag.getData()))?then('<h1','<h2')} class="products-cards-tabs--heading section-heading section-heading--center"
774 ${(getterUtil.getBoolean(isAnchorBarHide.getData())!)?then('','id="${portletId}"')}
775 >
776 <@leonardo.escapeTitle title=NASTitle.getData()/>
777 ${(getterUtil.getBoolean(NASTitle.isH1Flag.getData()))?then('</h1>','</h2>')}
778 </#if>
779 <div class="products-cards-tabs--content">
780 <#if NASTab.getSiblings()?has_content>
781 <#if ((NASTab.getSiblings()?size) > 1)>
782 <ul class="nav nav-tabs" role="tablist">
783 <#list NASTab.getSiblings() as tab>
784 <li class="${(tab?is_first)?then('active', '')}" role="presentation">
785 <a href="#${ns}_${tab?index}" aria-controls="${ns}_${tab?index}" role="tab" data-toggle="tab">${tab.NASTabTag.getData()}</a>
786 </li>
787 </#list>
788 </ul>
789 </#if>
790 <div class="tab-content">
791 <#list NASTab.getSiblings() as tab>
792 <div class="tab-pane ${(tab?is_first)?then('active', '')}" id="${ns}_${tab?index}" role="tabpanel">
793 <!--Start Module: Products Cards-->
794 <div class="section-container section-container--fixed">
795 <div class="products-cards">
796 <div class="products-cards--cards">
797 <#if tab.NASTabBrick.getSiblings()?has_content>
798 <#assign count = 0>
799 <#list tab.NASTabBrick.getSiblings() as tabBrick>
800 <#if count == 0>
801 <div class="section-grid layout--m-col">
802 </#if>
803 <#assign w = getterUtil.getFloat(tabBrick.NASTabBrickWidth.getData(), 0)>
804 <#assign count = count + w>
805 <#if w == 1>
806 <#assign width = "33">
807 <#elseif w == 1.5>
808 <#assign width = "50">
809 <#elseif w == 2>
810 <#assign width = "67">
811 <#else>
812 <#assign width = "100">
813 </#if>
814 <#if w == 1>
815 <#assign scalingDetails = {
816 "desktop": {"alternateImage": {}, "key": "w_480"},
817 "tl": {"alternateImage": (tabBrick.NASTabBrickImage.ImageTl)!, "key": "h_285"},
818 "tp": {"alternateImage": (tabBrick.NASTabBrickImage.ImageTp)!, "key": "h_335"},
819 "mobile": {"alternateImage": (tabBrick.NASTabBrickImage.ImageM)!, "key": "h_335"}
820 }>
821 <#elseif w == 1.5>
822 <#assign scalingDetails = {
823 "desktop": {"alternateImage": {}, "key": "w_720"},
824 "tl": {"alternateImage": (tabBrick.NASTabBrickImage.ImageTl)!, "key": "h_285"},
825 "tp": {"alternateImage": (tabBrick.NASTabBrickImage.ImageTp)!, "key": "h_335"},
826 "mobile": {"alternateImage": (tabBrick.NASTabBrickImage.ImageM)!, "key": "h_335"}
827 }>
828 <#else>
829 <#assign scalingDetails = {
830 "desktop": {"alternateImage": {}, "key": "w_1440"},
831 "tl": {"alternateImage": (tabBrick.NASTabBrickImage.ImageTl)!, "key": "h_285"},
832 "tp": {"alternateImage": (tabBrick.NASTabBrickImage.ImageTp)!, "key": "h_335"},
833 "mobile": {"alternateImage": (tabBrick.NASTabBrickImage.ImageM)!, "key": "h_335"}
834 }>
835 </#if>
836 <#assign brickImg=leonardo.adaptImage((tabBrick.NASTabBrickImage)!, scalingDetails)>
837 <div class="grid grid--m100p grid--d${width}p grid--tp${width}p">
838 <div class="products-cards--cards--card">
839 <!--Start Module: Service Offering Cards-->
840 <#if (isDarkTheme)&& (tabBrick.linkList??) &&
841 (tabBrick.linkList.linkItem.getSiblings()[0].linkTitle.getData()?has_content) &&
842 (leonardo.getTargetUrl(tabBrick.linkList.linkItem.getSiblings()[0].externalUrl!,tabBrick.linkList.linkItem.getSiblings()[0].link!)?has_content)
843 >
844 <!--Start linkListType -->
845 <div class="service-offerings-card"
846 data-img-url-d="${brickImg.desktop!}"
847 data-img-url-tl="${brickImg.tablet_landscape!}"
848 data-img-url-tp="${brickImg.tablet_portrait!}"
849 data-img-url-m="${brickImg.mobile!}"
850 title="${tabBrick.NASTabBrickTitle.getData()}">
851 <div class="service-offerings-card--overlay"></div>
852 <div class="service-offerings-card--content ${tabBrick.NASTabBrickTextLightOrDark.getData()} has-description multi-link-type">
853 <div class="service-offerings-card--content--heading">${tabBrick.NASTabBrickTitle.getData()}</div>
854 <div class="service-offerings-card--content--description">
855 ${tabBrick.NASTabBrickAbstract.getData()}
856 <#list tabBrick.linkList.linkItem.getSiblings() as linkItem>
857
858 <#assign linkUrl=leonardo.getTargetUrl(linkItem.externalUrl!, linkItem.link!)>
859 <#assign linkTarget=leonardo.getTarget(linkItem.linkTarget!)>
860
861 <div class="button-link">
862 <a class="link-arrow"
863 href="${linkUrl}"
864 target = "${linkTarget}"
865 title ="${linkItem.linkTitle.data!}"
866 >
867 ${linkItem.linkTitle.data!}
868 </a>
869 </div>
870 </#list>
871 </div>
872 </div>
873 </div>
874 <!--End linkListType -->
875 <#else>
876 <!--Start Single Link -->
877 <a class="service-offerings-card"
878 href="${leonardo.getTargetUrl(tabBrick.ExternalTargetURL!, tabBrick.NasTabBrickLink!)}"
879 target="${leonardo.getTarget(tabBrick.LinkTargetOpenIn!)}"
880 data-img-url-d="${brickImg.desktop!}"
881 data-img-url-tl="${brickImg.tablet_landscape!}"
882 data-img-url-tp="${brickImg.tablet_portrait!}"
883 data-img-url-m="${brickImg.mobile!}"
884 title="${tabBrick.NASTabBrickTitle.getData()}">
885 <div class="service-offerings-card--overlay"></div>
886 <div class="service-offerings-card--content ${tabBrick.NASTabBrickTextLightOrDark.getData()} has-description">
887 <div class="service-offerings-card--content--heading">${tabBrick.NASTabBrickTitle.getData()}</div>
888 <div class="service-offerings-card--content--description">${tabBrick.NASTabBrickAbstract.getData()}</div>
889 </div>
890 </a>
891 <noscript>
892 <img src="${brickImg.desktop!}" alt='${brickImg.alt_desktop!}'>
893 <img src="${brickImg.tablet_landscape!}" alt='${brickImg.alt_tablet_landscape!}'>
894 <img src="${brickImg.tablet_portrait!}" alt='${brickImg.alt_tablet_portrait!}'>
895 <img src="${brickImg.mobile!}" alt='${brickImg.alt_mobile!}'>
896 </noscript>
897 <!--End Single Link -->
898 </#if>
899 <!--End Module: Service Offering Cards-->
900 </div>
901 </div>
902 <#if ((count > 2) || tabBrick?is_last)>
903 <#assign count = 0>
904 </div>
905 </#if>
906 </#list>
907 </#if>
908 </div>
909 </div>
910 </div>
911 <!--End Module: Products Cards-->
912 </div>
913 </#list>
914 </div>
915 </#if>
916 </div>
917 </div>
918 </div>
919 <!--End Module: Products Cards-->
920
921 <!--Start Module: Free Area-->
922 <#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
923 <#assign languageId = languageUtil.getLanguageId(locale) />
924
925 <#if AreaLibera?has_content>
926 <#list AreaLibera.getSiblings() as cur_AreaLibera>
927 <div class="section-container section-container--fixed wall-tab-free-area">
928 <#if (cur_AreaLibera.HTML.getData())?has_content>
929 ${cur_AreaLibera.HTML.getData()}
930 </#if>
931 <#if (cur_AreaLibera.WebContent.getData())?has_content>
932 <#assign data = cur_AreaLibera.WebContent.getData()/>
933 <#assign json = jsonFactoryUtil.createJSONObject(data) />
934 <#assign classPK = json.getLong("classPK") />
935 <#if (classPK >0) >
936 <#assign ja = journalArticleLocalService.getLatestArticle(classPK) />
937 <#assign jad = journalArticleLocalService.getArticleDisplay(ja,
938 ja.getTemplateId(), "", languageId,
939 1, null, themeDisplay) />
940 ${jad.getContent()}
941 </#if>
942 </#if>
943 </div>
944 </#list>
945 </#if>
946 <!--End Module: Free Area-->
947</#if>
Il Servizio come valore aggiunto
Forniamo ai clienti servizi integrati e la gestione dell'obsolescenza a livello di manutenzione III e IV. Sono previsti servizi di monitoraggio, controllo, diagnosi, configurazione e collaborazione a distanza.
Meteorologia e ambiente
Con oltre cinquant'anni di esperienza nella progettazione, produzione, vendita e assistenza di sistemi meteorologici, siamo leader nella realizzazione di sistemi radar, sensori e soluzioni integrate nell’ambito della meteorologia. Abbiamo installato oltre 400 sistemi radar meteorologici in oltre 80 paesi in tutto il mondo. La nostra clientela è internazionale e opera nei settori della meteorologia, idrologia e aviazione.
2026-07-07T23:29:28Z
cookie_disclaimer:true
page_disclaimer :false