Dum
Eina per a la gestió i planificació de la DUM
Aquesta plataforma és un instrument de consulta i guia per a tots els agents implicats en la distribució urbana de mercaderies (DUM) amb l'objectiu de trobar mesures que minimitzin les externalitats de la DUM. L'eina s'estructura en tres apartats principals: el buscador on es pot filtrar les mesures segons diferents objectius que es volen assolir, les fitxes de cada mesura i el glossari. Al glossari, que es troba a la part inferior d'aquesta pàgina, hi ha un recull de conceptes, acrònims i sigles relacionades amb la distribució urbana de mercaderies i la logística. Les fitxes de cada mesura es divideixen en els següents punts:
- Descripció i característiques
- Impacte i efectes pels agents implicats
- Marc legal
- Proposta aritcles per Ordenances Municipals
- Proves pilot i exemples pràctics.
An error occurred while processing the template.
The following has evaluated to null or missing: ==> quien_eres [in template "20101#20128#501937" at line 30, column 13] ---- 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: ${quien_eres} [in template "20101#20128#501937" at line 30, column 11] ----
1<#if (themeDisplay.getLanguageId() == 'es_ES')>
2 <#assign buscar = 'Buscar'/>
3 <#assign restaurar = 'Restaurar' />
4 <#assign quien_eres ='¿Quién eres?' />
5 <#assign selecciona_agente = 'Selecciona el agente implicado en la DUM que realizará o impulsará la medida' />
6 <#assign objetivos_medida = 'Objetivos de la medida.' />
7 <#assign selecciona_objetivos = 'Selecciona uno o varios objetivos' />
8 <#assign campoObligatorio = 'Este campo es obligatorio para la búsqueda.' />
9</#if>
10<#if (themeDisplay.getLanguageId() == 'ca_ES')>
11 <#assign buscar = 'Cercar'/>
12 <#assign restaurar = 'Restaurar' />
13 <#assign quien_eres = 'Qui ets?' />
14 <#assign selecciona_agente = "Selecciona l’agent implicat en la DUM que durà a terme o impulsarà la mesura" />
15 <#assign objetivos_medida = 'Objectius de la mesura.' />
16 <#assign selecciona_objetivos = 'Seleccionar entre un o varis objectius.' />
17 <#assign campoObligatorio = 'Aquest camp és obligatori per a la cerca.' />
18</#if>
19<#if entries?has_content>
20<#assign nameCategory = "" >
21
22<#assign assetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") />
23<section class="ficha-dum">
24<div class="container-filtros-dum">
25 <div class="container">
26 <form id="buscadorFilters">
27 <div class="head">
28 <p class="title">
29 <img src="/o/atm-dum/images/icons-dum/user.svg" alt="user" />
30 ${quien_eres}
31 </p>
32 <p class="subtitle">${selecciona_agente}</p>
33 <div class="select-agente">
34 <select name="agente" id="agente" value="243006" >
35 <option value=""></option>
36 <#list entries as entry>
37 <#assign nameCategory = entry.getTitle(themeDisplay.getLocale())>
38 <#assign categories = entry.getCategories() />
39 <#assign vocabulary = assetVocabularyLocalService.fetchGroupVocabulary(entry.groupId, entry.name) />
40 <#if (vocabulary.name == "agent")>
41 <@displayCategoriesSelectAgente categories=categories />
42 </#if>
43 </#list>
44 </select>
45 <span class="error-msg">${campoObligatorio}</span>
46 </div>
47 </div>
48 <div class="content-width">
49 <div class="grid-1">
50 <#list entries as entry>
51 <#assign vocabulary = assetVocabularyLocalService.fetchGroupVocabulary(entry.groupId, entry.name) />
52 <#-- ${vocabulary} -->
53 <#if (vocabulary.name == "àmbit geografic")>
54 <#-- ${vocabulary} -->
55 <#assign categories = entry.getCategories() />
56 <#assign nameCategory = entry.getTitle(themeDisplay.getLocale())>
57 </#if>
58 </#list>
59 <p class="subtitle">${nameCategory}</p>
60 <div class="container-checkbox">
61 <@displayCategoriesCheckboxAmbito categories=categories />
62 </div>
63
64 </div>
65 <div class="grid-2">
66 <p class="subtitle">
67 ${objetivos_medida}
68 <span>${selecciona_objetivos}</span></p>
69 <#list entries as entry>
70 <#assign vocabulary = assetVocabularyLocalService.fetchGroupVocabulary(entry.groupId, entry.name) />
71 <#if (vocabulary.name == "impacte positiu")>
72 <#-- <#if (entry.vocabularyId == 279320)> -->
73 <#assign categories = entry.getCategories() />
74 </#if>
75 </#list>
76 <div class="container-checkbox">
77 <@displayCategoriesCheckboxImpacto categories=categories />
78 </div>
79
80 </div>
81 </div>
82 </form>
83 <div class="container-buttons">
84 <button id="sendDatos">${buscar}</button>
85 <button id="restaurar">${restaurar}</button>
86 </div>
87 </div>
88</div>
89</section>
90</#if>
91<#macro displayCategoriesSelectAgente categories>
92 <#if categories?has_content>
93 <#list categories as category>
94 <option value="${category.categoryId}">${category.getTitle(themeDisplay.getLocale())}</option>
95 </#list>
96 </#if>
97</#macro>
98<#macro displayCategoriesCheckboxAmbito categories>
99 <#if categories?has_content>
100 <#list categories as category>
101 <#if (category.categoryId != 243001) && (category.categoryId != 243002)>
102 <div class="box-checkbox">
103 <input value="${category.categoryId}" id="${category.name}" type="checkbox" />
104 <label for="${category.name}">${category.getTitle(themeDisplay.getLocale())}</label>
105 </div>
106 </#if>
107 </#list>
108 </#if>
109</#macro>
110<#macro displayCategoriesCheckboxImpacto categories>
111 <#if categories?has_content>
112 <#list categories as category>
113 <div class="box-checkbox">
114 <#assign vocabulary = assetVocabularyLocalService.fetchGroupVocabulary(entry.groupId, entry.name) />
115 <#-- ${category.name} -->
116 <input value="${category.categoryId}" id="${category.name}" type="checkbox" />
117 <label for="${category.name}">${category.getTitle(themeDisplay.getLocale())}</label>
118 </div>
119 </#list>
120 </#if>
121</#macro>
122
123
124
125<script>
126var oldURL = "";
127
128var currentURL = window.location.href;
129if (currentURL != oldURL) {
130 let arrayFilter = [];
131 var url = window.location.href
132 let initIndex = window.location.href.indexOf("?");
133 if (window.location.href.indexOf("filterCategoryIds=") != -1) {
134
135 let firstIndex = url.indexOf('filterCategoryIds=');
136 let result = url.slice(firstIndex, url.length);
137 result = result.replace('filterCategoryIds=', '');
138 var numIdsUrl = result.replace('&operationType=AND', '')
139 arrayNumID = numIdsUrl.split(",")
140 console.log(arrayNumID)
141 arrayNumID.forEach(function(val) {
142 $('#buscadorFilters .head #agente option[value="'+val+'"]').prop('selected' , true)
143 $('#buscadorFilters input[value="'+val+'"]').prop('checked' , true)
144 });
145
146 }
147 else{
148 if (localStorage.getItem("arrayFilterSesion") != null) {
149 var arrayNumSave = localStorage.getItem("arrayFilterSesion").replaceAll('"', '').replaceAll('[', '').replaceAll(']', '').split(',');
150 console.log(arrayNumSave)
151 arrayNumSave.forEach(function(val) {
152 $('#buscadorFilters .head #agente option[value="'+val+'"]').prop('selected' , true)
153 $('#buscadorFilters input[value="'+val+'"]').prop('checked' , true)
154 });
155 }
156 }
157}
158arrayFilter = [];
159 $("#buscadorFilters").change(function () {
160 arrayFilter = [];
161 arrayFilter.push($("option:selected").val());
162 $("#buscadorFilters input:checked").each(function () {
163 arrayFilter.push($(this).val());
164 });
165 //console.log(arrayFilter);
166 });
167 $("#sendDatos").click(function(){
168 if($('select#agente').val() != ''){
169 if(window.location.href.indexOf("?") != -1){
170 window.location = window.location.href.slice(0,window.location.href.indexOf("?")) +'?filterCategoryIds=' +arrayFilter + '&operationType=AND';
171
172 }else{
173 window.location = window.location.href +'?filterCategoryIds=' + arrayFilter + '&operationType=AND';
174 }
175 localStorage.setItem('arrayFilterSesion', JSON.stringify(arrayFilter));
176 }else{
177 $('.error-msg').addClass('active')
178 }
179 })
180 $('select#agente').change(function () {
181 if($(this).val() != ''){
182 $('.error-msg').removeClass('active')
183 }
184 else{
185 $('.error-msg').addClass('active')
186 }
187 })
188
189 $("#restaurar").click(function(){
190 localStorage.clear('arrayFilterSesion')
191 if(window.location.href.indexOf("?") != -1){
192 window.location = window.location = window.location.href.slice(0,window.location.href.indexOf("?"))
193
194 }else{
195 window.location = window.location.href
196 }
197
198 })
199
200</script>
201<style>
202.grid-1 .container-checkbox{
203 display:flex;
204 flex-direction:column;
205}
206.content-width .grid-1 .box-checkbox {
207 margin: 5px 0px!important;
208}
209#buscadorFilters .head .select-agente{
210 display: flex;
211 align-items: center;
212 flex-wrap:wrap;
213 max-width:100%!important;
214}
215#buscadorFilters .head #agente{
216 max-width:500px;
217}
218.error-msg{
219 padding-left: 10px;
220 color: #d30101;
221 font-size: 16px;
222 font-weight: 600;
223 display:none;
224 background: transparent!important;
225}
226.error-msg.active{
227 display:block !important;
228}
229#buscadorFilters .grid-2 .container-checkbox,
230.container-checkbox{
231 min-height:180px;
232}
233
234</style>

Glossari
Recull de conceptes, acrònims i sigles relacionades amb la distribució urbana de mercaderies i la logística.
Ver más

Comparador
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.lorem ipsum dolor sit amet, consectetur adipiscing elit.
Veure contigut