Catalogo dataset

Elenco completo dei dataset disponibili in formato aperto del Comune di Milano. Sono presenti dataset Open Data e di Milano Statistica
Temi
Sort By:
An error occurred while processing the template.
Java method "com.liferay.portal.kernel.util.DateUtil_IW.parseDate(String, String, Locale)" threw an exception when invoked on com.liferay.portal.kernel.util.DateUtil_IW object "com.liferay.portal.kernel.util.DateUtil_IW@1557ddb"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign date_DateObj = dateUtil.parse...  [in template "65777792077794#20120#250010" at line 102, column 59]
----
1<#-- instanceId --> 
2<#assign instanceId = themeDisplay.getPortletDisplay().getId()?keep_after("INSTANCE_") /> 
3 
4<#-- Servizio per ricavare i ddm field di una struttura --> 
5<#assign ddmFieldLocalService = serviceLocator.findService("com.liferay.dynamic.data.mapping.service.DDMFieldLocalService")/> 
6<#-- Servizio utile per ricavare i documenti della DM --> 
7<#assign dlFileEntryLocalService = serviceLocator.findService('com.liferay.document.library.kernel.service.DLFileEntryLocalService') /> 
8<#-- Servizio per ricavare dati del journal article --> 
9<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
10<#-- Servizio per ricavare l'oggetto layout --> 
11<#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") /> 
12<#-- Servizio per ricavare le categorie e relative properties --> 
13<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") /> 
14 
15<#-- Inclusione template con macros e relativi servizi --> 
16<#include "${templatesPath}/CDM_RICERCA_COMMON_MACROS" /> 
17 
18<#-- Categorie di tipo --> 
19<#assign categorie = [] /> 
20<#assign assetCategories = ["APPROFONDIMENTO", "PROGETTO", "DATASET", "PAGINA"] /> 
21 
22<#-- html --> 
23<div class="risultati-ricerca risultati-ricerca-servizi"> 
24	<div class="c-mb-4 c-mt-4 search-total-label"> 
25		<#if searchContainer.getTotal() == 1> 
26			${languageUtil.format(locale, "x-result-for-x", ["<strong  class='number'>" +searchContainer.getTotal() + "</strong>" , htmlUtil.escape(searchResultsPortletDisplayContext.getKeywords()) ], false)} 
27		<#else> 
28			${languageUtil.format(locale, "x-results-for-x", ["<strong class='number'>" +searchContainer.getTotal() + "</strong>", htmlUtil.escape(searchResultsPortletDisplayContext.getKeywords()) ], false)} 
29		</#if> 
30	</div> 
31    <#if entries?size gt 0> 
32        <div class="row"> 
33 
34            <#-- inizio a ciclare sugli elementi e faccio controlli che l'entry sia un articolo --> 
35            <#list entries as curEntry> 
36                <#if curEntry.getClassName() == "com.liferay.journal.model.JournalArticle"> 
37                    <#assign journalArticle = journalArticleLocalService.getLatestArticle(curEntry.getClassPK(), 0) /> 
38 
39                    <#if journalArticle?has_content> 
40						<#-- valorizzo le variabili che uso in seguito --> 
41						<#assign title = "", abstract = "", viewUrl = "#", date = "", isProgetto = false, fonte = "" /> 
42											 
43						<#assign ddmStructureKey = journalArticle.getDDMStructureKey() /> 
44 
45						<#-- primary key journal article --> 
46                        <#assign journalArticlePrimKey = journalArticle.resourcePrimKey/> 
47							 
48						  <#--  categorie  --> 
49              <#assign categorie = getListCategoryByArticlePrimKey( journalArticlePrimKey ) /> 
50 
51						<#-- title journal article --> 
52                        <#assign journalArticleTitle = journalArticle.getTitle(locale)/> 
53 
54						<#-- ricavo dalla struttura i dati che mi servono per creare le card --> 
55						<#-- ARTICOLO --> 
56						<#if ddmStructureKey == "39724"> 
57							<#-- struttura: titolo --> 
58							<#if getFieldValue(journalArticle, 'Titolo')??> 
59								<#assign title = getFieldValue(journalArticle, 'Titolo') /> 
60							</#if> 
61												 
62							<#-- struttura: descrizione --> 
63							<#if getFieldValue(journalArticle, 'Descrizione')??> 
64								<#assign abstract = getFieldValue(journalArticle, 'Descrizione') /> 
65							</#if> 
66														 
67							 
68							<#-- struttura: data --> 
69							<#assign date = curEntry.getModifiedDateString() /> 
70							<#if validator.isNotNull(date)> 
71							   <#assign date_DateObj = dateUtil.parseDate("dd MMM yy, HH:mm", date, locale) /> 
72							   <#if "it_IT" == locale> 
73								  <#assign date = dateUtil.getDate(date_DateObj, "dd/MM/yyyy", locale) /> 
74							   <#else> 
75								  <#assign date = dateUtil.getDate(date_DateObj, "yyyy/MM/dd", locale) /> 
76							   </#if> 
77							</#if> 
78							<#assign viewUrl = curEntry.getViewURL()?keep_before('?p_l_back_url') /> 
79						</#if> 
80						 
81						<#-- DATASET -->	 
82						<#if ddmStructureKey == "45631"> 
83							<#-- struttura: titolo --> 
84							<#if getFieldValue(journalArticle, 'titoloField')??> 
85								<#assign title = getFieldValue(journalArticle, 'titoloField') /> 
86							</#if> 
87													 
88							<#-- struttura: descrizione --> 
89							<#if getFieldValue(journalArticle, 'descrizioneField')??> 
90								<#assign abstract = getFieldValue(journalArticle, 'descrizioneField') /> 
91							</#if> 
92													 
93							<#-- struttura: data --> 
94							<#if getFieldValue(journalArticle, 'DataCKANField')?? && validator.isNotNull(getFieldValue(journalArticle, 'DataCKANField')) && getFieldValue(journalArticle, 'DataCKANField')!=""> 
95								<#assign date = getFieldValue(journalArticle, 'DataCKANField') /> 
96							  <#assign date_DateObj = dateUtil.parseDate("yyyy-MM-dd'T'HH:mm:ss.SSSZ", date, locale) /> 
97							<#elseif getFieldValue(journalArticle, 'dataField')?? && validator.isNotNull(getFieldValue(journalArticle, 'dataField')) && getFieldValue(journalArticle, 'dataField')!=""> 
98								<#assign date = getFieldValue(journalArticle, 'dataField') /> 
99							  <#assign date_DateObj = dateUtil.parseDate("yyyy-MM-dd", date, locale) /> 
100							<#else> 
101								<#assign date = curEntry.getModifiedDateString() /> 
102							  <#assign date_DateObj = dateUtil.parseDate("dd MMM yy, HH:mm", date, locale) /> 
103							</#if>					 
104							<#if validator.isNotNull(date)> 
105							   <#if "it_IT" == locale> 
106								  <#assign date = dateUtil.getDate(date_DateObj, "dd/MM/yyyy", locale) /> 
107							   <#else> 
108								  <#assign date = dateUtil.getDate(date_DateObj, "yyyy/MM/dd", locale) /> 
109							   </#if> 
110							</#if> 
111							 
112															 
113							<#-- View URL--> 
114							<#if getFieldValue(journalArticle, 'linkField')??> 
115								<#assign viewUrl = getFieldValue(journalArticle, 'linkField') /> 
116							</#if> 
117						</#if> 
118 
119 
120						<#-- html --> 
121                        <div class="col-lg-6"> 
122                            <div class="card-wrapper pb-4 h-100"> 
123                                <div class="card card-servizio h-100 no-after"> 
124                                    <div class="card-body p-4"> 
125 
126                                        <#-- ciclo sulle categorie e visualizzo solo quelle padri --> 
127										<div class="category-top"> 
128											<#if ddmStructureKey == "39724"> 
129												<#if categorie?? && (categorie?size > 0)> 
130													<#list categorie as curCat> 
131														<#if validator.isNotNull(curCat) && curCat != ""> 
132															<#attempt> 
133																<#if curCat.getTitle(locale)?upper_case == "PROGETTO"> 
134																	<#assign isProgetto = true /> 
135																</#if> 
136																<#recover> 
137																<#-- in caso di problemi non visualizzo nulla --> 
138															</#attempt> 
139														</#if> 
140													</#list> 
141												</#if> 
142												<#if isProgetto> 
143													<span class="badge-cat-article" style="font-weight:600; color:hsl(350, 85.1851851852%, 35.1%);display: flex;gap: 8px;"> 
144														<img width="25" src="/documents/d/portale-del-dato/icona-progetto-speciale">PROGETTO 
145													</span> 
146												<#else> 
147													<span class="badge-cat-article" style="font-weight:600; color:hsl(350, 85.1851851852%, 35.1%);display: flex;gap: 8px;"> 
148														<img width="25" src="/documents/d/portale-del-dato/icona-articolo"> 
149															APPROFONDIMENTO 
150													</span> 
151												</#if> 
152											</#if> 
153											<#if ddmStructureKey == "45631"> 
154												<span class="badge-cat" style="font-weight:600; color:hsl(350, 85.1851851852%, 35.1%);display: flex;gap: 8px;"> 
155													<img width="25" src="/documents/d/portale-del-dato/icona-dataset">DATASET 
156												</span> 
157											</#if> 
158													<#if !isProgetto><span class="date-article">${date}</span></#if> 
159										</div> 
160 
161                                        <#-- titolo --> 
162                                        <#if validator.isNotNull(title)> 
163                                            <h3 class="card-title"> 
164                                                ${title} 
165                                            </h3> 
166                                        </#if> 
167 
168                                        <#-- abstract --> 
169                                        <#if validator.isNotNull(abstract)> 
170                                            <div class="card-text card-text-article font-sans-serif mb-6">${abstract}</div> 
171                                        </#if> 
172										<div class="pills-container-article"> 
173											<#if categorie?? && (categorie?size > 0)> 
174											<#list categorie as curCat> 
175												<#if validator.isNotNull(curCat) && curCat != "" && curCat.parentCategoryId == 0 && !assetCategories?seq_contains(curCat.getTitle(locale)?upper_case)> 
176													<span class="badge-cat-article">${curCat.getTitle(locale)}</span> 
177												</#if> 
178											</#list> 
179												</#if> 
180										</div> 
181										<div class="fonte-article"> 
182											<#if ddmStructureKey == "39724"> 
183												<#if getFieldValue(journalArticle, 'AutoreRef')??> 
184													<#assign fonte = getFieldValue(journalArticle, 'AutoreRef') /> 
185												</#if> 
186											</#if> 
187											<#if ddmStructureKey == "45631"> 
188												<#if getFieldValue(journalArticle, 'fonteField')??> 
189													<#assign fonte = getFieldValue(journalArticle, 'fonteField') /> 
190												</#if> 
191											</#if> 
192											<#if fonte?? && validator.isNotNull(fonte) && fonte!=""> 
193												<#if fonte?contains("Comune")> 
194													Da: Open Data 
195												<#else> 
196													Da: ${fonte} 
197												</#if> 
198										  <#else> 
199													Da: Redazione 
200											</#if> 
201										</div> 
202                                    </div> 
203 
204                                    <div class="card-footer p-4 pt-0 bg-white border-0"> 
205                                        <div class="d-grid gap-2"> 
206											<#if ddmStructureKey == "39724"> 
207												<a href="${viewUrl}" class="btn btn-primary btn-block col-lg-12" data-senna-off="true">Esplora</a> 
208											</#if> 
209											<#if ddmStructureKey == "45631"> 
210												<a href="${viewUrl}" target="_blank" class="btn btn-primary btn-block col-lg-12 linkBtn">Link 
211													<svg width="20px" height="20px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" stroke="#ffffff"> 
212														<path d="M10 4H6C4.89543 4 4 4.89543 4 6V18C4 19.1046 4.89543 20 6 20H18C19.1046 20 20 19.1046 20 18V14M11 13L20 4M20 4V9M20 4H15" stroke="#ffffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path> 
213													</svg> 
214												</a> 
215												<#if getFieldValue(journalArticle, 'linkIncorporaField')??> 
216													<#assign urlIncorpora = getFieldValue(journalArticle, 'linkIncorporaField') /> 
217													<#if validator.isNotNull(urlIncorpora) && urlIncorpora != ""> 
218														<a href="/web/portale-del-dato/anteprima?" class="btn btn-outline-primary btn-block col-lg-12 linkBtn" onclick="localStorage.setItem('anterpimaUrl', '${urlIncorpora}');" data-senna-off="true">Anteprima</a> 
219													</#if> 
220												</#if> 
221												<#if getFieldValue(journalArticle, 'linkMappaField')??> 
222													<#assign urlMappa = getFieldValue(journalArticle, 'linkMappaField') /> 
223													<#if validator.isNotNull(urlMappa) && urlMappa != ""> 
224														<a href="/web/portale-del-dato/anteprima?" class="btn btn-outline-primary btn-block col-lg-12 linkBtn" onclick="localStorage.setItem('anterpimaUrl', '${urlMappa}');" data-senna-off="true">Mappa</a> 
225													</#if> 
226												</#if> 
227											</#if> 
228                                        </div> 
229                                    </div> 
230 
231                                </div> 
232                            </div> 
233                        </div> 
234 
235                    </#if> 
236                </#if> 
237								<#if curEntry.getClassName() == "com.liferay.portal.kernel.model.Layout"> 
238									  <#assign layoutEntry = layoutLocalService.getLayout(curEntry.getClassPK()) /> 
239									  <#assign title = layoutEntry.getHTMLTitle(locale) /> 
240									  <#assign description = layoutEntry.getDescription(locale) /> 
241									  <#assign viewUrl = layoutEntry.getFriendlyURL(locale) /> 
242						  <#--  categorie  --> 
243              <#assign categorie = assetCategoryLocalService.getCategories("com.liferay.portal.kernel.model.Layout", curEntry.getClassPK()) /> 
244									  <div class="col-lg-6"> 
245	<div class="card-wrapper pb-4 h-100"> 
246		<div class="card card-servizio h-100 no-after"> 
247			<div class="card-body p-4"> 
248				<#-- ciclo sulle categorie e visualizzo solo quelle padri --> 
249				<div class="category-top"> 
250					<span class="badge-cat-article" style="font-weight:600; color:hsl(350, 85.1851851852%, 35.1%);display: flex;gap: 8px;"> 
251						<img width="25" src="/documents/d/portale-del-dato/icona-pagina-standard">Pagina 
252													</span> 
253					</div> 
254					<#-- titolo --> 
255					<#if validator.isNotNull(title)> 
256					<h3 class="card-title">${title}</h3> 
257				</#if> 
258				 
259        <#-- description --> 
260        <#if validator.isNotNull(description)> 
261          <div class="card-text card-text-article font-sans-serif mb-6">${description}</div> 
262        </#if> 
263				<div class="pills-container-article"> 
264					<#if categorie?? && (categorie?size > 0)> 
265					<#list categorie as curCat> 
266						<#if validator.isNotNull(curCat) && curCat !="" && curCat.parentCategoryId==0 && !assetCategories?seq_contains(curCat.getTitle(locale)?upper_case)> 
267							<span class="badge-cat-article">${curCat.getTitle(locale)}</span> 
268						</#if> 
269					</#list> 
270						</#if> 
271				</div> 
272				<div class="fonte-article">Da: Redazione</div> 
273			</div> 
274			<div class="card-footer p-4 pt-0 bg-white border-0"> 
275				<div class="d-grid gap-2"> 
276					<a href="/web/portale-del-dato${viewUrl}" class="btn btn-primary btn-block col-lg-12" data-senna-off="true">Esplora</a> 
277				</div> 
278			</div> 
279		</div> 
280	</div> 
281</div> 
282								</#if> 
283            </#list> 
284 
285        </div> 
286    </#if> 
287</div> 
288<style> 
289.number { 
290	color: #A50D26; 
291
292.search-total-label { 
293	padding-left: 12px; 
294	position: absolute; 
295	z-index: 2; 
296	margin-top:-58px; 
297	font-size: 1rem; 
298
299.pagination { 
300   justify-content:center; 
301
302.pagination-items-per-page { 
303	display:flex; 
304    flex-direction:row-reverse; 
305}	 
306.pagination-results{    
307	position: absolute; 
308    top: -32px; 
309    padding-left: 12px; 
310	display: flex; 
311	font-size: 16px; 
312    flex-direction: row-reverse; 
313
314@media (max-width: 600px) { 
315	.search-total-label{ 
316		margin-top:-80px !important; 
317
318
319.category-top { 
320    display: flex !important; 
321    justify-content: space-between; 
322
323.card-text-article, .card-text-article p { 
324    font-size: 14px !important; 
325
326.pills-container-article { 
327    display: flex; 
328    flex-wrap: wrap; 
329    gap: 0.4rem; 
330    margin-top: 0.5rem; 
331
332.pills-container-article .badge-cat-article { 
333	background-color: white; 
334	color: hsl(350, 85.1851851852%, 35.1%); 
335	border: 1px solid hsl(350, 85.1851851852%, 35.1%); 
336	padding: 0rem 0.65rem; 
337	font-size: 0.75rem; 
338	text-transform:uppercase;  
339	border-radius: 9999px; 
340	font-weight: 600; 
341	white-space: nowrap; 
342	max-width: 100%; 
343	overflow: hidden; 
344	text-overflow: ellipsis; 
345
346.pills-container-article .badge-cat-article:hover  { 
347  background-color: hsl(350, 85.1851851852%, 35.1%); /* colore più scuro al passaggio */ 
348	color: #fff; 
349
350.fonte-article { 
351    font-style: italic; 
352    font-size: 14px; 
353    text-align: start; 
354    margin-top: 0.75rem; 
355
356</style>