HUMS SERVICE - Helicopters

REAL-TIME ANOMALY DETECTION

Health & Usage Monitoring System (HUMS) provides Customers with data storage and infrastructure to deal with specific fleet HUMS and maintenance management, driving down operating costs and increasing aircraft availability.

Login

An error occurred while processing the template.
The following has evaluated to null or missing:
==> Links  [in template "20115#20151#10383429" at line 194, column 30]

----
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#10383429" at line 194, column 25]
----
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": "h_560"}, 
19                        "tl": {"alternateImage": VideoInfo.Image.ImageTl!, "key": "h_400"}, 
20                        "tp": {"alternateImage": VideoInfo.Image.ImageTp!, "key": "h_400"}, 
21                        "mobile": {"alternateImage": VideoInfo.Image.ImageM!, "key": "h_300"} }> 
22                        <#assign posterImg = leonardo.adaptImage(VideoInfo.Image!, scalingDetails )> 
23                        <picture> 
24                            <source 
25                                    srcset="${posterImg.mobile?replace(" ", "%20")!}" 
26                                    media="(max-width: 576px)" 
27                            /> 
28                            <source 
29                                    srcset="${posterImg.tablet_portrait?replace(" ", "%20")!}" 
30                                    media="(max-width: 768px)" 
31
32                            <source 
33                                    srcset="${posterImg.tablet_landscape?replace(" ", "%20")!}" 
34                                    media="(max-width: 1024px)" 
35
36                            <img class="img-fluid" alt="${posterImg.alt_desktop!}" src="${posterImg.desktop?replace(" ", "%20")!}" /> 
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_720"}, 
61        "tl": {"alternateImage": VideoInfo.Image.ImageTl!, "key": "h_695"}, 
62        "tp": {"alternateImage": VideoInfo.Image.ImageTp!, "key": "w_768"}, 
63        "mobile": {"alternateImage": VideoInfo.Image.ImageM!, "key": "w_375"} 
64        }> 
65        <#assign posterImg = leonardo.adaptImage(VideoInfo.Image!, scalingDetails )> 
66 
67        <#assign isYt = (VideoInfo.YoutubeId.getData() != "") > 
68        <#assign isCanto = (VideoInfo.CantoUrl.getData())?has_content && (VideoInfo.CantoUrl.getData() != "") > 
69 
70        <#if (VideoInfo.CantoUrl.getData())?has_content && VideoInfo.CantoUrl.getData() != ""> 
71            <#assign videoStr = VideoInfo.CantoUrl.getData()> 
72        <#elseif VideoInfo.YoutubeId.getData() != ""> 
73            <#assign videoStr = VideoInfo.YoutubeId.getData()> 
74        <#elseif VideoInfo.Video.getSiblings()?has_content> 
75            <#assign videoStr = ""> 
76            <#list VideoInfo.Video.getSiblings() as cur_Video> 
77                <#assign videoFile = cur_Video.getData()> 
78                <#assign videoFileType = cur_Video.VideoType.getData()> 
79                <#if videoStr?? && videoStr != ""> 
80                    <#assign videoStr = videoStr + ","> 
81                </#if> 
82                <#assign videoStr = videoStr + "${themeDisplay.getPortalURL()}" + videoFile> 
83            </#list> 
84        </#if> 
85 
86        <!--Start Module: Plan Highlights--> 
87        <div class="container-full-width padding-bottom padding-top"> 
88            <div class="container"> 
89                <div class="flex-grid-plus-cards video"> 
90                    <div class="left <#if VideoInfo.ImagePosition.getData() == "right">order-lg-2</#if>"> 
91                        <#if VideoInfo.YoutubeId.getData() != ""> 
92                            <div class="video-full-width-container-rounded"> 
93                                <#assign videoId = VideoInfo.YoutubeId.getData()> 
94                                <button 
95                                        type="button" 
96                                        class="video-full-width video-yt" 
97                                        title="play report video" 
98                                        data-video="${videoId}" 
99                                        id="button-video-${videoId}" 
100
101                                    <div class="cover rounded-20"> 
102                                        <#if VideoInfo.Image.getData()?? && VideoInfo.Image.getData() != ""> 
103                                            <#assign scalingDetails = { 
104                                            "desktop": {"alternateImage": {}, "key": "h_560"}, 
105                                            "tl": {"alternateImage": VideoInfo.Image.ImageTl!, "key": "h_400"}, 
106                                            "tp": {"alternateImage": VideoInfo.Image.ImageTp!, "key": "h_400"}, 
107                                            "mobile": {"alternateImage": VideoInfo.Image.ImageM!, "key": "h_300"} }> 
108                                            <#assign posterImg = leonardo.adaptImage(VideoInfo.Image!, scalingDetails )> 
109                                            <picture> 
110                                                <source 
111                                                        srcset="${posterImg.mobile?replace(" ", "%20")!}" 
112                                                        media="(max-width: 576px)" 
113                                                /> 
114                                                <source 
115                                                        srcset="${posterImg.tablet_portrait?replace(" ", "%20")!}" 
116                                                        media="(max-width: 768px)" 
117
118                                                <source 
119                                                        srcset="${posterImg.tablet_landscape?replace(" ", "%20")!}" 
120                                                        media="(max-width: 1024px)" 
121
122                                                <img class="img-fluid" alt="${posterImg.alt_desktop!}" src="${posterImg.desktop?replace(" ", "%20")!}" /> 
123                                            </picture> 
124                                        </#if> 
125 
126                                        <div class="btn-play"> 
127                                            <img 
128                                                    class="icon" 
129                                                    src="${themeDisplay.getPathThemeImages()}/img/generic/button-play.svg" 
130                                                    alt="play" 
131                                            /> 
132                                            <img 
133                                                    class="icon-hover" 
134                                                    src="${themeDisplay.getPathThemeImages()}/img/generic/button-play-hover.svg" 
135                                                    alt="play" 
136                                            /> 
137                                        </div> 
138                                    </div> 
139                                </button> 
140                                <div id="video-${videoId}" class="embed-responsive embed-responsive-16by9" style="display:none;"> 
141                                    <iframe 
142                                            id="youtube-player-${videoId}" 
143                                            width="100%" 
144                                            height="100%" 
145                                            frameborder="0" 
146                                            allow="autoplay; fullscreen; encrypted-media" 
147                                            allowfullscreen 
148                                            playsinline 
149                                    ></iframe> 
150                                </div> 
151                            </div> 
152                            <script> 
153                                (function() { 
154                                    const button = document.getElementById("button-video-${videoId}"); 
155                                    const overlay = document.getElementById("video-${videoId}"); 
156                                    const iframe = document.getElementById("youtube-player-${videoId}"); 
157 
158                                    button.addEventListener("click", function() { 
159                                        const videoId = button.dataset.video; 
160 
161                                        iframe.src = "https://www.youtube.com/embed/" + videoId + "?autoplay=1&rel=0"; 
162                                        overlay.style.display = "block"; 
163                                        button.style.display = "none"; 
164                                    }); 
165                                })(); 
166                            </script> 
167                        <#else> 
168                            <@videoBox yt=isYt canto=isCanto video=videoStr poster=posterImg /> 
169                        </#if> 
170                    </div> 
171                    <div class="right component-with-title"> 
172                        <!--Start Module: Highlights Pitch--> 
173                        <div> 
174                            <#if TextInfo.Title.getData() != "" > 
175                                <p class="title title-regular"><@leonardo.escapeTitle title=TextInfo.Title.getData()/></p> 
176                            </#if> 
177                            <#if TextInfo.Title.Description?? && TextInfo.Title.Description.getData() != "" > 
178                                <p class="description body-small"><@leonardo.escapeTitle title=TextInfo.Title.Description.getData()/></p> 
179                            </#if> 
180                        </div> 
181                        <#if TextInfo.Title.Attach.getData() !=''> 
182                            <div class="card-interview centered download"> 
183                                <#list TextInfo.Title.Attach.getSiblings() as node> 
184                                    <#if TextInfo.Title.Attach?? && TextInfo.Title.Attach.getData() != "" && TextInfo.Title.Attach.Label.getData() != ""> 
185                                        <div class="card"> 
186                                            <a href="${TextInfo.Title.Attach.getData()}" target="_blank" class="label-regular" title="${TextInfo.Title.Attach.Label.getData()}" download> 
187                                                <span>${TextInfo.Title.Attach.Label.getData()}</span> 
188                                            </a> 
189                                        </div> 
190                                    </#if> 
191                                </#list> 
192                            </div> 
193                        </#if> 
194                        <#if Links.ExternalTargetURL.getData() !='' || Links.LinkTargetPage.getFriendlyUrl() !=''> 
195                            <div class="flex flex-col gap-4"> 
196                                <#list Links.getSiblings() as node> 
197                                    <#if node.ExternalTargetURL.getData() !='' && node.LinkText.getData() !=''> 
198                                        <#assign url = node.ExternalTargetURL.getData() /> 
199                                    </#if> 
200                                    <#if node.LinkTargetPage.getFriendlyUrl() !='' && node.LinkText.getData() !=''> 
201                                        <#assign url = node.LinkTargetPage.getFriendlyUrl() /> 
202                                    </#if> 
203                                    <a href="${url}" target ="${node.LinkTargetOpenIn.getData()}" title="${node.LinkText.getData()}" class="card-text-arrow"> 
204                                        <p class="body-medium">${node.LinkText.getData()}</p> 
205                                    </a> 
206                                </#list> 
207                            </div> 
208                        </#if> 
209                        <!--End Module: Highlights Pitch--> 
210                    </div> 
211                </div> 
212            </div> 
213        </div> 
214        <!--End Module: Plan Highlights--> 
215    <#else> 
216        <!-- No video selected --> 
217    </#if> 
218<#else> 
219   <@leonardo.articleInfo .vars "(I3) Video Launch"/> 
220   <#assign rndNamespace = randomNamespace> 
221   <#assign currentLayoutFriendlyURL = themeDisplay.getLayout().getFriendlyURL()?remove_beginning("/") /> 
222    
223   <#if currentLayoutFriendlyURL == "home"> 
224   	<#assign cssForTitle = "plan-highlights"> 
225   <#else> 
226   	<#assign cssForTitle = "plan-highlights--investors"> 
227   </#if> 
228    
229   <#macro downloadIcon> 
230   	<svg xmlns="http://www.w3.org/2000/svg" width="14" height="18" viewBox="0 0 14 18"> 
231   		<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"/> 
232   	</svg> 
233   </#macro> 
234   <#macro videoBox yt canto video poster> 
235   	<div class="grid grid--d50p grid--tl50p grid--tp100p grid--m100p"> 
236   		<div class="plan-highlights--wrapper"> 
237   			<#if canto> 
238   				<div class="leo-video canto-video"  
239   					data-video-data='{ 
240   						&quot;showControls&quot;:true, 
241   						&quot;videoSources&quot;:[ 
242   							"${video}" 
243   						], 
244   						&quot;posters&quot;:{ 
245   							&quot;desktop&quot;:&quot;${poster.desktop!}&quot;, 
246   							&quot;tabletLandscape&quot;:&quot;${poster.tablet_landscape!}&quot;, 
247   							&quot;tabletPortrait&quot;:&quot;${poster.tablet_portrait!}&quot;, 
248   							&quot;mobile&quot;:&quot;${poster.mobile!}&quot; 
249   						}}'  
250   					data-img-url-d="${poster.desktop!}"  
251   					data-img-url-tl="${poster.tablet_landscape!}"  
252   					data-img-url-tp="${poster.tablet_portrait!}"  
253   					data-img-url-m="${poster.mobile!}"> 
254   				</div> 
255   			<#elseif yt> 
256   				<div class="youtube-player-container "  
257   					data-video-id="${video}"  
258   					data-div-id = "${randomNamespace}${video}" 
259   					data-img-url-d="${poster.desktop!}"  
260   					data-img-url-tl="${poster.tablet_landscape!}"  
261   					data-img-url-tp="${poster.tablet_portrait!}"  
262   					data-img-url-m="${poster.mobile!}" 
263   					data-use-no-cookie-domain="true"  
264   					data-play-fullscreen="true"  
265   					data-video-controls="true" 
266   					tabindex="1"> 
267   					<div class="youtube-player" id="${randomNamespace}${video}"></div> 
268   				</div> 
269   			<#else> 
270   				<div class="leo-video"  
271   					data-video-data="{ 
272   						&quot;showControls&quot;:true, 
273   						&quot;videoSources&quot;:[ 
274   							${video} 
275   						], 
276   						&quot;posters&quot;:{ 
277   							&quot;desktop&quot;:&quot;${poster.desktop!}&quot;, 
278   							&quot;tabletLandscape&quot;:&quot;${poster.tablet_landscape!}&quot;, 
279   							&quot;tabletPortrait&quot;:&quot;${poster.tablet_portrait!}&quot;, 
280   							&quot;mobile&quot;:&quot;${poster.mobile!}&quot; 
281   						}}"  
282   					data-img-url-d="${poster.desktop!}"  
283   					data-img-url-tl="${poster.tablet_landscape!}"  
284   					data-img-url-tp="${poster.tablet_portrait!}"  
285   					data-img-url-m="${poster.mobile!}"> 
286   				</div> 
287   			</#if> 
288   		</div> 
289   	</div> 
290   </#macro> 
291    
292   <#if VideoInfo.Video.getData() != "" ||  VideoInfo.YoutubeId.getData() != "" ||  VideoInfo.CantoUrl.getData() != "" > 
293    
294   	<#assign isLeft = (VideoInfo.ImagePosition?? && VideoInfo.ImagePosition.getData() != "" && !(VideoInfo.ImagePosition.getData())?contains("right")) > 
295   	 
296   	<#assign scalingDetails = { 
297   		 "desktop": {"alternateImage": {}, "key": "w_720"}, 
298   		 "tl": {"alternateImage": VideoInfo.Image.ImageTl!, "key": "h_695"}, 
299   		 "tp": {"alternateImage": VideoInfo.Image.ImageTp!, "key": "w_768"}, 
300   		 "mobile": {"alternateImage": VideoInfo.Image.ImageM!, "key": "w_375"} 
301   	}> 
302   	<#assign posterImg = leonardo.adaptImage(VideoInfo.Image!, scalingDetails )> 
303   	 
304   	<noscript> 
305   		<img src="${posterImg.desktop!}" alt='${posterImg.alt_desktop!}'> 
306   		<img src="${posterImg.tablet_landscape!}" alt='${posterImg.alt_tablet_landscape!}'> 
307   		<img src="${posterImg.tablet_portrait!}" alt='${posterImg.alt_tablet_portrait!}'> 
308   		<img src="${posterImg.mobile!}" alt='${posterImg.alt_mobile!}'> 
309   	</noscript> 
310   	 
311   	<#assign isYt = (VideoInfo.YoutubeId.getData() != "") > 
312   	<#assign isCanto = (VideoInfo.CantoUrl.getData())?has_content && (VideoInfo.CantoUrl.getData() != "") > 
313    
314   	<#if (VideoInfo.CantoUrl.getData())?has_content && VideoInfo.CantoUrl.getData() != ""> 
315   		<#assign videoStr = VideoInfo.CantoUrl.getData()> 
316   	<#elseif VideoInfo.YoutubeId.getData() != ""> 
317   		<#assign videoStr = VideoInfo.YoutubeId.getData()> 
318   	<#elseif VideoInfo.Video.getSiblings()?has_content> 
319   		<#assign videoStr = ""> 
320   		<#list VideoInfo.Video.getSiblings() as cur_Video> 
321   			<#assign videoFile = cur_Video.getData()> 
322   			<#assign videoFileType = cur_Video.VideoType.getData()> 
323   			<#if videoStr?? && videoStr != ""> 
324   				<#assign videoStr = videoStr + ","> 
325   			</#if> 
326   			<#assign videoStr = videoStr + "{&quot;src&quot;:&quot;" + videoFile + "&quot;,&quot;type&quot;:&quot;" + videoFileType + "&quot;}"> 
327   		</#list> 
328   	</#if> 
329    
330   	<!--Start Module: Plan Highlights--> 
331   	<div class="section-container section-container--fixed"> 
332   		<#if TextInfo.Title.isAnchorEnabled?? && getterUtil.getBoolean(TextInfo.Title.isAnchorEnabled.getData())> 
333   			<#assign labelIsLeft = ((TextInfo.Title.isAnchorEnabled.AnchorText.LabelPosition.getData())!"left") == "left"> 
334   			<div class="section-grid layout--tp-col layout--m-col"> 
335   				<#if !labelIsLeft > 
336   					<div class="grid grid--d50p grid--tl50p grid--tp100p grid--m100p"></div> 
337   				</#if> 
338   				<div class="grid grid--d50p grid--tl50p grid--tp100p grid--m100p"> 
339   					<!--Start Module: Goto--> 
340   					<#if TextInfo.Title.isAnchorEnabled.AnchorText.getData() != "" > 
341   						<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> 
342   					</#if> 
343   					<!--End Module: Goto--> 
344   				</div> 
345   				<#if labelIsLeft> 
346   					<div class="grid grid--d50p grid--tl50p grid--tp100p grid--m100p"></div> 
347   				</#if> 
348   			</div> 
349   		</#if> 
350   		<div class="${cssForTitle}"> 
351   			<div class="section-grid ${(!isLeft)?then('layout--tp-col-reverse layout--m-col-reverse','layout--tp-col layout--m-col')}"> 
352   				<#if isLeft > 
353   					<@videoBox yt=isYt canto=isCanto video=videoStr poster=posterImg /> 
354   				</#if> 
355   				<div class="grid grid--d50p grid--tl50p grid--tp100p grid--m100p"> 
356   					<!--Start Module: Highlights Pitch--> 
357   					<div class="highlights-pitch"> 
358   						<#if TextInfo.Title.getData() != "" > 
359   							<#if TextInfo.Title.isH1?? && getterUtil.getBoolean(TextInfo.Title.isH1.getData())> 
360   								<h1 class="highlights-pitch--title"><@leonardo.escapeTitle title=TextInfo.Title.getData()/></h1> 
361   							<#else> 
362   								<h2 class="highlights-pitch--title"><@leonardo.escapeTitle title=TextInfo.Title.getData()/></h2> 
363   							</#if> 
364   							<#if TextInfo.Title.Description?? && TextInfo.Title.Description.getData() != "" > 
365   								<p class="highlights-pitch--description"><@leonardo.escapeTitle title=TextInfo.Title.Description.getData()/></p> 
366   							</#if> 
367   						</#if> 
368   						<#if TextInfo.Title.Attach?? && TextInfo.Title.Attach.getData() != ""> 
369   							<div class="highlights-pitch--file-downloads"> 
370   							<#list TextInfo.Title.Attach.getSiblings() as cur_file> 
371   								<#assign file_info = leonardo.findFileEntryInfo(cur_file.getData()) > 
372   								<div class="highlights-pitch--file"> 
373   									<a class="file"  
374   									   href="${file_info.downloadUrl}"  
375   									   target="_blank"> 
376   										<@downloadIcon /> 
377   										<span class="highlights-pitch--file--filename"> 
378   										${(cur_file.Label.getData())!(file_info.title)!} 
379   										</span> 
380   									</a> 
381   								</div> 
382   							</#list> 
383   							</div> 
384   						</#if> 
385   						<#assign opened = false> 
386   						<#if Links?has_content> 
387   							<#list Links.getSiblings() as cur_Link> 
388   								<#assign targetUrl=leonardo.getTargetUrl(cur_Link.ExternalTargetURL, cur_Link.LinkTargetPage)!> 
389   								<#if targetUrl?has_content> 
390   									<#assign target=leonardo.getTarget(cur_Link.LinkTargetOpenIn!)!> 
391   									<#if opened = false> 
392   								<div class="section-hero-card--targets" > 
393   										<#assign opened = true> 
394   									</#if> 
395   									<div class="section-hero-card--target"> 
396   										<a class="section-hero-card--target--link"  
397   										   href="${targetUrl}"  
398   										   target = "${target}"  
399   										   title="${cur_Link.LinkText.data!}" > 
400   										   ${cur_Link.LinkText.data!} 
401   										   <span class="icon--read-more"></span> 
402   										</a> 
403   									</div> 
404   								</#if> 
405   							</#list> 
406   							<#if opened> 
407   								</div> 
408   							</#if> 
409   						</#if> 
410   					</div> 
411   					<!--End Module: Highlights Pitch--> 
412   				</div> 
413   				<#if !isLeft > 
414   					<@videoBox yt=isYt canto=isCanto video=videoStr poster=posterImg /> 
415   				</#if> 
416   			</div> 
417   		</div> 
418   	</div> 
419   	<!--End Module: Plan Highlights--> 
420   <#else> 
421   	<!-- No video selected --> 
422   </#if> 
423</#if> 
There are no results.
There are no results.
Search overlay background

Mobile navigation menu