Si è concluso Innovathon, il business game sul tema della navigazione autonoma. Scopri chi ha vinto! - Company

Si è concluso Innovathon, il business game sul tema della navigazione autonoma. Scopri chi ha vinto!

E’ stato il team “Palo” ad aggiudicarsi il podio nell’ambito della competizione Innovathon lanciata da Leonardo e PoliHub. A Milano, l’8 e 9 giugno scorsi, si sono sfidati oltre 40 studenti universitari provenienti da tutta Italia con l’obiettivo di progettare e realizzare un prototipo funzionante di sistema a guida autonoma.

11 giugno 2019

Innovathon, l'hackathon per studenti organizzato da Leonardo e PoliHub

Realizzare in meno di 48 ore un veicolo elettrico, completamente autonomo, in grado di navigare in un percorso predefinito per mezzo di sensori di distanza e dimostrare, allo stesso tempo, di possedere competenze necessarie per lavorare in un’azienda altamente tecnologica come la nostra. 

E' questa la sfida che hanno affrontato i partecipanti dell’hackathon, organizzato da Leonardo e PoliHub, in una maratona non-stop di due giorni all’insegna dell’innovazione, del senso della sfida verso se stessi e della creatività. I protagonisti di questo business game si sono messi alla prova, con l’orologio alla mano, testando le proprie capacità di problem solving attraverso soluzioni software e di elettronica in una gara mozzafiato. 

Presso la sede di PoliHub a Milano, gli studenti (neolaureati e laureandi in discipline STEM) si sono confrontati su tematiche legate alla tecnologia con professionisti, esperti del settore e mentor per finalizzare i propri progetti. Competenze, creatività, spirito di adattamento, teamwork, problem solving e pragmaticità sono state fondamentali per rispondere alla sfida progettuale.

Il team “Palo” composto da Davide Vairetti, Lorenzo Prandi, Simone Tomé, Angelo Falci e Riccardo Cantoni (tre provenienti dal Politecnico di Milano e due dall’Università di Pavia) si è aggiudicato il primo posto e ha ricevuto un premio del valore di 5.000 euro. Il progetto vincitore si è distinto non solo per il tempo con cui il sistema a guida autonoma ha coperto il percorso previsto ma anche per la qualità del prodotto finale, il budget utilizzato per realizzarlo e l’esposizione dell’idea di fronte alla giuria. 

Innovathon, giunto alla sua seconda edizione, rappresenta una delle modalità che Leonardo sta perseguendo nell’approccio all’open innovation. La competizione ha rappresentato un’opportunità non soltanto per i vincitori ma per tutti i partecipanti del business game, che hanno avuto la possibilità di valorizzare le proprie capacità innovative, confrontarsi con colleghi provenienti anche da altre università e conoscere da vicino la nostra realtà aziendale.
 

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