Costos totals del transport: passatgers i mercaderies - Observatori de la mobilitat a Catalunya (OMC)

Costos totals del transport: passatgers i mercaderies

Costos totals del transport de passatgers per tipus (externs i interns: operador, temps i usuari), i de les mercaderies (operador i externs) de periodicitat biennal

Unitat:

Freqüència: Biennal

Àmbit: RMB

Font: ATM Barcelona

S'ha produït un error mentre es processava la plantilla.
The following has evaluated to null or missing:
==> NombreAbreviado  [in template "20097#20123#88725" at line 762, column 36]

----
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: ${NombreAbreviado.getData()}  [in template "20097#20123#88725" at line 762, column 34]
----
1<#if (SinGrafico?? && SinGrafico.getData() == "true") > 
2 
3<#else > 
4    <#assign eje=''> 
5    <#if ejex?? && ejex.getData()!='' > 
6        <#assign eje=ejex.getData()> 
7    </#if> 
8 
9    <#assign journalArticleId = .vars['reserved-article-id'].data> 
10    <#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") /> 
11    <#assign journalArticleResourceLocalServiceUtil = serviceLocator.findService("com.liferay.journal.service.JournalArticleResourceLocalService")> 
12    <#assign assetCategoryLocalServiceUtil = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")> 
13    <#assign assetVocabularyLocalServiceUtil = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")> 
14 
15    <#assign articleResourcePK = journalArticleResourceLocalServiceUtil.getArticleResourcePrimKey(groupId, journalArticleId)/> 
16    <#assign categoryList=assetCategoryLocalServiceUtil.getCategories("com.liferay.journal.model.JournalArticle",articleResourcePK) > 
17    <#assign asset = assetEntryLocalService.getEntry('com.liferay.journal.model.JournalArticle', articleResourcePK) > 
18 
19    <#if (themeDisplay.getLanguageId() == 'es_ES')> 
20        <#assign tabla_de_datos  = 'Tabla de datos'/> 
21        <#assign exportar_csv = 'Exportar CSV'> 
22        <#assign ocultar_tabla_datos = 'Ocultar tabla de datos'> 
23        <#assign indicador_por = 'Indicador por: '> 
24        <#assign enero = 'Enero'> 
25        <#assign febrero = 'Febrero'> 
26        <#assign marzo = 'Marzo'> 
27        <#assign abril = 'Abril'> 
28        <#assign mayo = 'Mayo'> 
29        <#assign junio = 'Junio'> 
30        <#assign julio = 'Julio'> 
31        <#assign agosto = 'Agosto'> 
32        <#assign septiembre = 'Septiembre'> 
33        <#assign octubre = 'Octubre'> 
34        <#assign noviembre = 'Noviembre'> 
35        <#assign diciembre = 'Diciembre'> 
36        <#assign  aeropuerto='aeropuerto'> 
37        <#assign  puerto= 'puerto'> 
38        <#assign  viaAccesoBcn='via acceso bcn'> 
39        <#assign ambito='ámbito'> 
40        <#assign ambitoterritorial='ámbito territorial'> 
41        <#assign viapeaje='Vía Peaje'> 
42        <#assign vialibrepeaje='vía libre peaje'> 
43        <#assign estacion="estación"> 
44        <#assign tiposAportacion='Tipos de aportación'> 
45        <#assign organismo="organismo"> 
46        <#assign año='año'> 
47        <#assign  mes='mes'> 
48        <#assign  motivo='motivo'> 
49        <#assign  genero='género'> 
50        <#assign origendestino='origen/destino'> 
51        <#assign recursoparamoverse='recurso para moverse'> 
52        <#assign periodicidad='periodicidad'> 
53        <#assign operador='operador'> 
54        <#assign lineaferroviaria='linea ferroviária'> 
55        <#assign empresaoperadora='empresa operadora'> 
56        <#assign tipodeingreso='tipo de ingreso'> 
57        <#assign tipodegasto='tipo de gasto'> 
58        <#assign movilidadpoblacion='movilidad de la población'> 
59        <#assign rangoedad='rango de edad'> 
60        <#assign multimodalidad='multimodalidad'> 
61        <#assign repartomodal='reparto modal'> 
62        <#assign repartomodaldesagregado='reparto modal desagregado'> 
63        <#assign motivodesagregado='motivo desagregado'> 
64        <#assign discapacidad='discapacidad'> 
65        <#assign gradodiscapacidad='grado de discapacidad'> 
66        <#assign recursomovimiento='recurso para moverse'> 
67        <#assign usotransportepublico='uso del transporte público'> 
68        <#assign capitulos='capítulos'> 
69        <#assign tipodecostes='tipo costes'> 
70        <#assign hasta22='Hasta 22'> 
71        <#assign hasta35='Hasta 35'> 
72        <#assign hasta55='Hasta 55'> 
73        <#assign mas55='Más de 55'> 
74        <#assign hasta='Hasta'> 
75        <#assign comarca='Comarca'> 
76        <#assign ambitoterritorialcomarca='ámbito territorial_Comarca'> 
77        <#assign ambitoterritorialsti= 'ámbito territorial_STI'> 
78        <#assign urbanos='URBANOS'> 
79        <#assign  autopista='autopista'> 
80        <#assign subcategoriadecostos="subcategoria de costos"> 
81		<#assign nombreparada="nombre parada"> 
82		<#assign administracion="administració"> 
83        <#assign porcentagedefinanciacion="porcentaje de financiación"> 
84 
85    </#if> 
86    <#if (themeDisplay.getLanguageId() == 'ca_ES')> 
87        <#assign tabla_de_datos  = 'Taula de dades'/> 
88        <#assign exportar_csv = 'Exportar CSV'> 
89        <#assign ocultar_tabla_datos = 'Amagar taula de dades'> 
90        <#assign indicador_por = 'Indicador per: '> 
91        <#assign enero = 'Gener'> 
92        <#assign febrero = 'Febrer'> 
93        <#assign marzo = 'Març'> 
94        <#assign abril = 'Abril'> 
95        <#assign mayo = 'Maig'> 
96        <#assign junio = 'Juny'> 
97        <#assign julio = 'Juliol'> 
98        <#assign agosto = 'Agost'> 
99        <#assign septiembre = 'Setembre'> 
100        <#assign octubre = 'Octubre'> 
101        <#assign noviembre = 'Novembre'> 
102        <#assign diciembre = 'Desembre'> 
103        <#assign aeropuerto='Aeroport'> 
104        <#assign ambito='àmbit'> 
105        <#assign ambitoterritorial='àmbit territorial'> 
106        <#assign  puerto= 'port'> 
107        <#assign  viaAccesoBcn='Via acces BCN'> 
108        <#assign viapeaje='Via Peatge'> 
109        <#assign vialibrepeaje='Via lliure peatge'> 
110        <#assign estacion="Estació"> 
111        <#assign tiposAportacion='tipus d aportació'> 
112        <#assign organismo="organisme"> 
113        <#assign año='any'> 
114        <#assign  mes='mes'> 
115        <#assign  motivo='motiu'> 
116        <#assign  genero='gènere'> 
117        <#assign  origendestino='origen/destinació'> 
118        <#assign  recursoparamoverse='recurs per moures'> 
119        <#assign periodicidad='periodicitat'> 
120        <#assign operador='operador'> 
121        <#assign lineaferroviaria='línia ferroviària'> 
122        <#assign empresaoperadora='empresa operadora'> 
123        <#assign tipodeingreso="tipus d'ingrés"> 
124        <#assign tipodegasto='tipus de despesa'> 
125        <#assign movilidadpoblacion='mobilitat de la població'> 
126        <#assign rangoedad="rang d'edat"> 
127        <#assign multimodalidad='multimodalitat'> 
128        <#assign repartomodal='repartiment modal'> 
129        <#assign repartomodaldesagregado='repartiment modal desagregat'> 
130        <#assign motivodesagregado='motiu desagregat'> 
131        <#assign gradodiscapacidad='rang grau discapacitat'> 
132        <#assign recursomovimiento='recurs per moures'> 
133        <#assign usotransportepublico='ús del transport públic'> 
134        <#assign capitulos='capítols'> 
135        <#assign tipodecostes='tipus costos'> 
136        <#assign discapacidad="discapacitat"> 
137        <#assign hasta22= 'Fins a 22'> 
138        <#assign hasta35='Fins a 35'> 
139        <#assign hasta55='Fins a 55'> 
140        <#assign mas55='Més de 55'> 
141        <#assign hasta='Fins'> 
142        <#assign comarca='Comarca'> 
143        <#assign ambitoterritorialcomarca='àmbit territorial_Comarca'> 
144        <#assign ambitoterritorialsti= 'àmbit territorial_STI'> 
145        <#assign urbanos='URBANES'> 
146        <#assign  autopista='autopista'> 
147        <#assign subcategoriadecostos="subcategoria de costos"> 
148		<#assign nombreparada="nom parada"> 
149	    <#assign administracion="administració"> 
150	     <#assign porcentagedefinanciacion="percentatge de Finançament"> 
151    </#if> 
152    <#if (themeDisplay.getLanguageId() == 'en_US')> 
153        <#assign tabla_de_datos  = 'Data table'/> 
154        <#assign exportar_csv = 'Export CSV'> 
155        <#assign ocultar_tabla_datos = 'Hide Data Table'> 
156        <#assign indicador_por = 'Indicator by: '> 
157        <#assign enero = 'January'> 
158        <#assign febrero = 'February'> 
159        <#assign marzo = 'March'> 
160        <#assign abril = 'April'> 
161        <#assign mayo = 'May'> 
162        <#assign junio = 'June'> 
163        <#assign julio = 'July'> 
164        <#assign agosto = 'August'> 
165        <#assign septiembre = 'September'> 
166        <#assign octubre = 'October'> 
167        <#assign noviembre = 'November'> 
168        <#assign diciembre = 'December'> 
169        <#assign aeropuerto= 'airport'> 
170        <#assign  puerto= 'port'> 
171        <#assign  viaAccesoBcn='access route bcn'> 
172        <#assign ambito='scope'> 
173        <#assign ambitoterritorial='territorial scope'> 
174        <#assign viapeaje='Via toll'> 
175        <#assign vialibrepeaje='Via toll free'> 
176        <#assign estacion="station"> 
177        <#assign tiposAportacion='Assignment types'> 
178        <#assign organismo="organism"> 
179        <#assign año='year'> 
180        <#assign  mes='month'> 
181        <#assign  motivo='motive'> 
182        <#assign  genero='gender'> 
183        <#assign  origendestino='origin/destination'> 
184        <#assign  recursoparamoverse='resource to move'> 
185        <#assign periodicidad='periodicity'> 
186        <#assign operador='operator'> 
187        <#assign lineaferroviaria='railway line'> 
188        <#assign empresaoperadora='operating company'> 
189        <#assign tipodeingreso="type of income"> 
190        <#assign tipodegasto='type of expenditure'> 
191        <#assign movilidadpoblacion='population mobility'> 
192        <#assign rangoedad='age range'> 
193        <#assign multimodalidad='multimodality'> 
194        <#assign repartomodal='modal distribution'> 
195        <#assign repartomodaldesagregado='disaggregated modal distribution'> 
196        <#assign motivodesagregado='Disaggregated reason'> 
197        <#assign  discapacidad='disability'> 
198        <#assign gradodiscapacidad='degree of disability'> 
199        <#assign recursomovimiento='resource to move'> 
200        <#assign usotransportepublico='use of public transport'> 
201        <#assign capitulos='chapters'> 
202        <#assign tipodecostes='types of costs'> 
203        <#assign hasta22= 'Up to 22'> 
204        <#assign hasta35='Up to 35'> 
205        <#assign hasta55='Up to 55'> 
206        <#assign mas55='Over 55'> 
207        <#assign hasta='to'> 
208        <#assign comarca='Region'> 
209        <#assign ambitoterritorialcomarca='territorial scope_Region'> 
210        <#assign ambitoterritorialsti= 'territorial scope_STI'> 
211        <#assign urbanos='URBANES'> 
212        <#assign  autopista='highway'> 
213        <#assign subcategoriadecostos="cost subcategory"> 
214		<#assign nombreparada="stop name"> 
215		<#assign administracion="administration"> 
216		 <#assign porcentagedefinanciacion="percentage of financing"> 
217    </#if> 
218   
219 
220    <#list categoryList as category> 
221    <#--pre-- <#if category.categoryId ==88497>--> 
222        <#if category.categoryId ==784011> 
223            <#if (UrlIframeGráfica.getData()!="" &&  UrlIframeGráfica.getData()??)> 
224 
225                <#if UrlIframeGráfica.getData()?contains("https://datastudio.google.com")> 
226                    <div class="container mt-0 contanierIframe" id="contanierIframe"> 
227                        <iframe src="${UrlIframeGráfica.getData()?replace("https://datastudio.google.com", "https://datastudio.google.com/embed")}"  height="500" width="800" name="urlAlternativa"> 
228 
229                        </iframe> 
230                    </div> 
231 
232                <#else> 
233                    <div class="container mt-0 contanierIframe" id="contanierIframe"> 
234                        <iframe src="${UrlIframeGráfica.getData()}"  height="400" width="800" name="urlAlternativa"> 
235 
236                        </iframe> 
237                    </div> 
238                </#if> 
239 
240            <#else> 
241                <#if DocumentosYMultimediamepd?? > 
242                    <div class="container mt-0"> 
243<!-------tablas--- barras--------> 
244    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
245<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script> 
246<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.10.0/bootstrap-table.js"></script> 
247<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.9.1/extensions/export/bootstrap-table-export.js"></script> 
248<script src="https://rawgit.com/hhurz/tableExport.jquery.plugin/master/tableExport.js"></script> 
249<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.9.1/extensions/filter-control/bootstrap-table-filter-control.js"></script> 
250 
251<div class="container"> 
252<div id="divBarras"></div> 
253</div> 
254<#assign url2=DocumentosYMultimediamepd.getData() /> 
255<script defer> 
256 
257function csvJSON(csv){ 
258 
259  var lines=csv.split("\n"); 
260 
261  var result = []; 
262 
263  // NOTE: If your columns contain commas in their values, you'll need 
264  // to deal with those before doing the next step  
265  // (you might convert them to &&& or something, then covert them back later) 
266  // jsfiddle showing the issue https://jsfiddle.net/ 
267  var headers=lines[0].split(";"); 
268for (var i = 0; i < headers.length; i+=1) { 
269if(headers[i].includes("valor") || headers[i].includes("Valor")  ){ 
270   headers[i]="Valor"  
271
272
273  for(var i=1;i<lines.length;i++){ 
274 
275      var obj = {}; 
276      var currentline=lines[i].split(";"); 
277 
278      for(var j=0;j<headers.length;j++){ 
279      if(currentline[j]!='' || currentline[j]!=null){ 
280          obj[headers[j]] = currentline[j]; 
281
282
283 
284      result.push(obj); 
285 
286
287 
288  //return result; //JavaScript object 
289  return (result); //JSON 
290
291 
292 
293  async function throwfetch () { 
294       
295   
296   
297  await fetch( 
298    "${url2}" 
299
300    .then((response) => response.text()) 
301    .then((data) => genera_tabla(data)) 
302    .catch((error) => console.error("Error al obtener los datos:", error)); 
303
304  function genera_tabla(data) { 
305   
306 
307 data = csvJSON(data); 
308  
309    // Obtener la referencia del elemento body 
310    var body = document.getElementById("divBarras"); 
311    // Crea un elemento <table> añadiendole los atributos de la tabla y un elemento <tbody> 
312    var tabla = document.createElement("table"); 
313    tabla.setAttribute("id", "table1"); 
314    tabla.setAttribute("data-toggle", "table"); 
315    tabla.setAttribute("data-search", "true"); 
316    tabla.setAttribute("data-filter-control", "true"); 
317    tabla.setAttribute("data-show-export", "true"); 
318    tabla.setAttribute("data-click-to-select", "true"); 
319    tabla.setAttribute("data-toolbar", "#toolbar"); 
320    tabla.setAttribute("data-pagination", "true"); 
321    tabla.classList.add("table-responsive"); 
322    var tbHead = document.createElement("thead"); 
323    var tr = document.createElement("tr"); 
324 
325     var claves = Object.keys(data[0]); 
326    claves.forEach((cabecera) => { 
327      var th = document.createElement("th"); 
328      th.setAttribute("data-field", cabecera); 
329      th.setAttribute("data-filter-control", "input"); 
330      th.setAttribute("data-sortable", true); 
331      th.textContent = cabecera; 
332      // Agregar la celda de cabecera a la fila de cabecera 
333      tr.appendChild(th); 
334    }); 
335    tbHead.appendChild(tr); 
336    tabla.appendChild(tbHead); 
337 
338    var tblBody = document.createElement("tbody"); 
339    data.forEach((dato) => { 
340      const fila = document.createElement("tr"); 
341      tblBody.appendChild(fila); 
342 
343      claves.forEach((cabecera) => { 
344        const celda = document.createElement("td"); 
345        celda.textContent = dato[cabecera]; 
346        fila.appendChild(celda); 
347      }); 
348    }); 
349    tabla.appendChild(tblBody); 
350    // Agrega <table> dentro del <body> 
351    body.appendChild(tabla); 
352 
353    var $table = $("#table1"); 
354    $table.bootstrapTable(); 
355    $(".export").click(function () { 
356      $table.bootstrapTable("refreshOptions", { 
357        exportDataType: "all", 
358      }); 
359    }); 
360
361   
362  $(function () { 
363    throwfetch(); 
364 
365  }); 
366</script> 
367 
368<link 
369  rel="stylesheet" 
370  href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.10.0/bootstrap-table.min.css" 
371/> 
372<link 
373  rel="stylesheet" 
374  href="https://rawgit.com/vitalets/x-editable/master/dist/bootstrap3-editable/css/bootstrap-editable.css" 
375/> 
376 
377 
378<style> 
379    /* Ocultamos el buscador general  */ 
380   .pull-right.search{ 
381    display: none; 
382
383   #table1{ 
384   display: table; 
385
386</style> 
387     
388     
389     
390    <!------fin tabla-----------> 
391                        <div class="btn_container mb-3"> 
392                            <!--<button id="viewDataTable" class="exportTable"  >${tabla_de_datos}</button> 
393                            <button id="exportAsCSV" class="exportCsv">${exportar_csv}</button>--> 
394                        </div> 
395                        <div id="table_container_bar_sub" style="width: 100%;margin: 0 auto;margin: 0 auto; 
396    overflow: auto" id="chartdata"></div> 
397 
398 
399                        <div id="container_select_bar_sub" class="none align-items-center d-flex"> 
400                            <select id="select_any" class="select-grafic" > 
401                            </select> 
402                            <select id="select_ambit_territorial" class="none" > 
403                            </select> 
404 
405                        </div> 
406 
407                        <div id="chartdiv" style="width: 95%; height: 900px;margin:0 auto;margin-top: 20px;"></div> 
408                        <div id="legenddiv"></div> 
409                    </div> 
410 
411                    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
412                    <script src="https://cdnjs.cloudflare.com/ajax/libs/PapaParse/4.1.2/papaparse.js"></script> 
413                    <script src="https://cdn.amcharts.com/lib/4/core.js"></script> 
414                    <script src="https://cdn.amcharts.com/lib/4/charts.js"></script> 
415                    <script src="https://cdn.amcharts.com/lib/4/themes/animated.js"></script> 
416                    <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/0.10.0/lodash.min.js"></script> 
417                    <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script> 
418                    <script src="https://cdn.jsdelivr.net/npm/file-saver@2.0.2/dist/FileSaver.min.js"></script> 
419 
420                    <script> 
421 
422 
423 
424                        var dataOriginal 
425                        var subcategorias="${Subcategoria.getData()}".toLocaleLowerCase() 
426                        if(subcategorias!=''){ 
427                            subcategorias=subcategorias.split(',') 
428
429                        var sub=[] 
430                        var any='' 
431                        var mes='' 
432                        var año='${año}' 
433 
434                        if(subcategorias.length>0){ 
435                            subcategorias.forEach(i=>{ 
436                                if(i=='aeroport'||i=='aeropuerto'||i=='airport'){ 
437                                    sub.push('${aeropuerto}') 
438                                }else 
439                                if(i=='port'||i=='puerto'){ 
440                                    sub.push('${puerto}') 
441                                }else 
442                                if(i=='via acces bcn'||i=='via bcn access'||i=='vía acceso bcn'){ 
443                                    sub.push('${viaAccesoBcn}') 
444                                }else 
445                                if(i=='àmbit'||i=='ámbito'||i=='scope'){ 
446                                    sub.push('${ambito}') 
447                                } else 
448                                if(i=='àmbit territorial'||i=='territorial scope'||i=='ámbito territorial'){ 
449                                    sub.push('${ambitoterritorial}') 
450                                }else if(i=='via peatge'||i=='via peaje'||i=='via tolls'){ 
451                                    sub.push('${viapeaje}') 
452                                }else if(i=='via lliure peatge'|| i=='free toll road'||i=='vía libre peaje'){ 
453                                    sub.push('${vialibrepeaje}') 
454                                }else if(i=='estació'||i=='estación'||i=='station'){ 
455                                    sub.push('${estacion}') 
456                                } else if(i=='tipus d aportació'||i=='tipos de aportacion'||i=='types of contribution'){ 
457                                    sub.push('${tiposAportacion}') 
458                                }else if(i=='organisme'|| i=='organismo'|| i=='organism'){ 
459                                    sub.push('${organismo}') 
460                                }else if(i=='motiu'|| i=='motivo'|| i=='motive'){ 
461                                    sub.push('${motivo}') 
462                                }else if(i=='stop name'|| i=='nom parada'|| i=='nombre parada'){ 
463                                    sub.push('${nombreparada}') 
464                                }else{ 
465                                    sub.push(i) 
466
467                            }) 
468
469                        subcategorias=sub 
470                        var csv 
471 
472 
473 
474                        //creacion de selectores dinámicos 
475                        function generateSelector(val){ 
476                            var values = val 
477                            var select = document.createElement("select"); 
478                            select.name = "category"; 
479                            select.id = "category" 
480                            select.classList.add("select-grafic"); 
481 
482                            for (const val of values) { 
483                                var option = document.createElement("option"); 
484                                option.value = val; 
485                                option.text = val.charAt(0).toUpperCase() + val.slice(1); 
486                                select.appendChild(option); 
487
488 
489                            var label = document.createElement("label"); 
490                            label.innerHTML = "${indicador_por}" 
491                            label.htmlFor = "subtipo"; 
492                            label.classList.add("d-flex"); 
493                            label.classList.add("align-items-center"); 
494                            label.classList.add("mb-0"); 
495 
496                            document.getElementById("container_select_bar_sub").appendChild(label).appendChild(select); 
497
498 
499                        generateSelector(subcategorias) 
500                        // 
501                        var objData,myChart,dataFormat 
502                        var categoria_valor =document.getElementById('category') 
503                        var anio_valor =document.getElementById('select_any') 
504 
505                        function arrayToTable(tableData) { 
506                            var table = $('<table class="table" style="border: 1px solid lightgray;"></table>'); 
507                            $(tableData).each(function (i, rowData) { 
508                                var row = $('<tr></tr>'); 
509                                $(rowData).each(function (j, cellData) { 
510                                    row.append($('<td>'+cellData+'</td>')); 
511                                }); 
512                                table.append(row); 
513                            }); 
514                            return table; 
515
516 
517                        var url='${DocumentosYMultimediamepd.getData()}' 
518                        var ambitoTerritorial='' 
519                        if (url!=undefined){ 
520                            $.ajax({ 
521                                type: "GET", 
522                                url: '${DocumentosYMultimediamepd.getData()}', 
523                                success: function (data) { 
524 
525                                console.log("barras") 
526                                    // $('#table_container').append(arrayToTable(Papa.parse(data).data)); 
527                                    // myChart=[Papa.parse(data).data] 
528                                    objData= convertObj(data) 
529                                    csv=data 
530                                    objData.splice(objData.length-1, 1) 
531                                    any=Object.keys(objData[0]).find(i=>{return(i=='año'||i=='any'||i=='year')}) 
532                                    ambitoTerritorial=Object.keys(objData[0]).find(i=>{return(i=='ámbito territorial'||i=='àmbit territorial'|| i=='territorial scope')}) 
533                                    valor=Object.keys(objData[0]).find(i=>{return(i=='valor'||i=='value')}) 
534                                    mes=Object.keys(objData[0]).find(i=>{return(i=='mes'||i=='month')}) 
535                                    objData.forEach((e)=>{ 
536                                        //e.valor=parseFloat(e.valor); 
537                                        if(e[valor].includes('.')){ 
538                                            e[valor]=e[valor].replaceAll('.','') 
539
540                                    }) 
541                                    objData.forEach((e)=>{ 
542                                        //e.valor=parseFloat(e.valor); 
543                                        if(e[valor].includes(',')){ 
544                                            e[valor]=e[valor].replace(',','.') 
545
546                                    }) 
547                                    console.log('bar-sub') 
548                                    chartLine(objData) 
549 
550
551                            }); 
552
553 
554                        function convertObj(data){ 
555                            var arr=data.split('\n') 
556                            arr[0]=arr[0].toLowerCase() 
557                            var jsonObj = []; 
558                            var headers = arr[0].split(';'); 
559                            for(var i = 1; i < arr.length; i++) { 
560                                var data = arr[i].split(';'); 
561                                var obj = {}; 
562                                for(var j = 0; j < data.length; j++) { 
563                                    obj[headers[j].trim()] = data[j].trim(); 
564
565                                jsonObj.push(obj); 
566
567 
568                            return  jsonObj 
569 
570
571                        var columnsFiltered 
572 
573                        function chartLine(objData){ 
574                            var data=objData 
575                            //nombre de las columnas 
576                            var nameColumns=Object.getOwnPropertyNames(objData[0]) 
577                            /*var indexCol 
578                            nameColumns.forEach((e)=>{ 
579                                if(e!='any' && e!='génere' && e!='valor'){ 
580                                    indexCol=nameColumns.indexOf(e) 
581
582                            })*/ 
583                            //convert months 
584                            var found = nameColumns.find(element => element=='mes'); 
585                            if(found!=undefined){ 
586                                objData.forEach(dat=>{ 
587                                    convertMonth(dat) 
588                                }) 
589                            }else{ 
590                                found = nameColumns.find(element => element=='${mes}'); 
591                                if(found!=undefined){ 
592                                    objData.forEach(dat=>{ 
593                                        convertMonth(dat) 
594                                    }) 
595
596
597                            var foundAeroport=nameColumns.find(element=>element=='aeroport') 
598                            if(foundAeroport!=undefined){ 
599                                objData.forEach(dat=>{ 
600                                    convertKey(dat,'aeroport','${aeropuerto}') 
601                                }) 
602
603                            var foundPort=nameColumns.find(element=>element=='port') 
604                            if(foundPort!=undefined){ 
605                                objData.forEach(dat=>{ 
606                                    convertKey(dat,'port','${puerto}') 
607                                }) 
608
609                            var foundAccesoBcn=nameColumns.find(element=>element=='via acces bcn') 
610                            if(foundAccesoBcn!=undefined){ 
611                                objData.forEach(dat=>{ 
612                                    convertKey(dat,'via acces bcn','${viaAccesoBcn}') 
613                                }) 
614
615                            var foundAmbit=nameColumns.find(element=>element=='àmbit') 
616                            if(foundAmbit!=undefined){ 
617                                objData.forEach(dat=>{ 
618                                    convertKey(dat,'àmbit','${ambito}') 
619                                }) 
620
621                            var foundAmbitTerr=nameColumns.find(element=>element=='àmbit territorial') 
622                            if(foundAmbitTerr!=undefined){ 
623                                objData.forEach(dat=>{ 
624                                    convertKey(dat,'àmbit territorial','${ambitoterritorial}') 
625                                }) 
626
627                            var viaPeaje=nameColumns.find(element=>element=='via peatge') 
628                            if(viaPeaje!=undefined){ 
629                                objData.forEach(dat=>{ 
630                                    convertKey(dat,'via peatge','${viapeaje}') 
631                                }) 
632
633                            var vialibrePeaje=nameColumns.find(element=>element=='via lliure peatge') 
634                            if(vialibrePeaje!=undefined){ 
635                                objData.forEach(dat=>{ 
636                                    convertKey(dat,'via lliure peatge','${vialibrepeaje}') 
637                                }) 
638
639                            var estacion=nameColumns.find(element=>element=='estació') 
640                            if(estacion!=undefined){ 
641                                objData.forEach(dat=>{ 
642                                    convertKey(dat,'estació','${estacion}') 
643                                }) 
644
645                            var tipoAportacion=nameColumns.find(element=>element=='tipus d aportació') 
646                            if(tipoAportacion!=undefined){ 
647                                objData.forEach(dat=>{ 
648                                    convertKey(dat,'tipus d aportació','${tiposAportacion}') 
649                                }) 
650
651                            var organismo=nameColumns.find(element=>element=='organisme') 
652                            if(organismo!=undefined){ 
653                                objData.forEach(dat=>{ 
654                                    convertKey(dat,'organisme','${organismo}') 
655                                }) 
656
657                            var motivo=nameColumns.find(element=>element=='motiu') 
658                            if(motivo!=undefined){ 
659                                objData.forEach(dat=>{ 
660                                    convertKey(dat,'motiu','${motivo}') 
661                                }) 
662
663                            columnsFiltered=nameColumns 
664                            var indice = columnsFiltered.indexOf(any); // obtenemos el indice 
665                            columnsFiltered.splice(indice, 1); 
666                            var indice2 = columnsFiltered.indexOf(valor); // obtenemos el indice 
667                            columnsFiltered.splice(indice2, 1); 
668 
669 
670 
671                            console.log(objData) 
672                            const unique = [...new Set(objData.map(item => item[any]))]; 
673                            console.log(unique) 
674                            unique.sort((a,b)=>b-a); 
675 
676                            var unique2= [...new Set(objData.map(item => item[ambitoTerritorial]))]; 
677                            unique.sort((a,b)=>b-a); 
678//si hay distintos años necesitamos un selector 
679                            if(unique.length>=1){ 
680                                var selectcont=document.getElementById('container_select_bar_sub') 
681                                selectcont.className='d-flex align-items-center' 
682                                let sel = document.getElementById('select_any'); 
683                                for (i = 0; i<=unique.length-1; i++) { 
684                                    sel.innerHTML += '<option value="'+unique[i]+'">'+unique[i]+'</option>' 
685
686 
687
688 
689                            if(unique2[0]!=undefined){ 
690                                var selectcont=document.getElementById('container_select_bar_sub') 
691                                selectcont.className='d-flex align-items-center' 
692                                let sel = document.getElementById('select_ambit_territorial'); 
693                                sel.className='select-grafic' 
694                                for (i = 0; i<=unique2.length-1; i++) { 
695                                    sel.innerHTML += '<option value="'+unique2[i]+'">'+unique2[i]+'</option>' 
696
697 
698
699 
700//objeto separados por años 
701                            var newArrData 
702                            dataOriginal=data 
703//var categoria_valor =document.getElementById('category') 
704//var anio_valor =document.getElementById('select_any') 
705                            var data1=[] 
706                            if(anio_valor.value!=''&& anio_valor.value!=undefined){ 
707 
708                                newArrData=dataOriginal.filter((e)=>{ 
709                                    return e[any]==anio_valor.value 
710                                }) 
711                                 if(select_ambit_territorial.value!=''){ 
712                                    newArrData=newArrData.filter((e)=>{ 
713                                        return e['${ambitoterritorial}']==select_ambit_territorial.value 
714                                    }) 
715
716
717                            else{ 
718                                newArrData =dataOriginal 
719
720                            var arrn=[]; 
721                            newArrData.forEach((val)=>{ 
722                                val[valor]=val[valor].replace(',','.'); 
723                                arrn.push(val) 
724                            }) 
725                            newArrData=arrn 
726 
727                            let b= _.groupBy(newArrData,categoria_valor.value.toLowerCase()); 
728                            var p=[]; 
729                            var v={} 
730                            for (var key in b) { 
731                                var val={type:key,'data':(b[key])}; 
732                                p.push(val) 
733 
734
735 
736 
737                            var arrdata1= p.filter(x => x.type === selectAmbitoTerr.value); 
738                            if(arrdata1!=undefined&& arrdata1.length>0){ 
739                                data1=arrdata1 
740                            }else{ 
741                                data1=p 
742
743 
744 
745 
746 
747                            Bars(data1,categoria_valor.value,valor) 
748 
749
750 
751                        function Bars(arrd,category,valor){ 
752 
753                            console.log(arrd) 
754                            var newarr=[] 
755                            var objnew={} 
756                            //categorias posibles 
757                            var catobj=subcategorias.filter((e)=>{return e!=categoria_valor.value}) 
758                            if (catobj.length==0){ 
759                                catobj=columnsFiltered.filter((e)=>{return e!=categoria_valor.value}) 
760 
761
762                            if( '${NombreAbreviado.getData()}'=='TranAcces') { 
763                                if (categoria_valor.value == 'mes' || categoria_valor.value == 'month' || categoria_valor.value == '${viaAccesoBcn}') { 
764                                    if (categoria_valor.value == 'mes' || categoria_valor.value == 'month') { 
765                                        if (Object.keys(objData[0]).find(i => { 
766                                            return (i == '${viaAccesoBcn}') 
767                                        }) != undefined) { 
768 
769                                            valorName = Object.keys(objData[0]).find(i => { 
770                                                return (i == 'valor' || i == 'value') 
771                                            }) 
772                                            arrd.forEach((e) => { 
773                                                objnew = {type: e.type} 
774                                                for (var i = 0; i <= e.data.length - 1; i++) { 
775                                                    var cat = categoria_valor.value 
776                                                    _.groupBy(e.data, '${viaAccesoBcn}') 
777                                                    var arrGroup = Object.keys(_.groupBy(e.data, '${viaAccesoBcn}')).map(k => _.groupBy(e.data, '${viaAccesoBcn}')[k]); 
778 
779                                                    arrGroup.forEach(t => { 
780                                                        var valorDa = 0 
781                                                        var name = t[0]['${viaAccesoBcn}'] 
782                                                        t.forEach(name => { 
783                                                            valorDa += parseFloat(name[valorName]).toFixed(2) 
784                                                        }) 
785                                                        var objkeys = {[name]: valorDa} 
786                                                        objnew = Object.assign(objnew, objkeys) 
787 
788                                                    }) 
789 
790
791                                                newarr.push(objnew) 
792                                            }) 
793
794 
795                                    } else if (categoria_valor.value == '${viaAccesoBcn}') { 
796                                        if (Object.keys(objData[0]).find(i => { 
797                                            return (i == '${viaAccesoBcn}') 
798                                        }) != undefined) { 
799 
800                                            valorName = Object.keys(objData[0]).find(i => { 
801                                                return (i == 'valor' || i == 'value') 
802                                            }) 
803                                            arrd.forEach((e) => { 
804                                                objnew = {type: e.type} 
805                                                for (var i = 0; i <= e.data.length - 1; i++) { 
806                                                    var cat = categoria_valor.value 
807                                                    _.groupBy(e.data, '${mes}') 
808                                                    var arrGroup = Object.keys(_.groupBy(e.data, '${mes}')).map(k => _.groupBy(e.data, '${mes}')[k]); 
809                                                    
810                                                    arrGroup.forEach(t => { 
811                                                        var valorDa = 0 
812                                                        var name = t[0]['${mes}'] 
813                                                        t.forEach(name => { 
814                                                            valorDa += parseFloat(name[valorName]).toFixed(2) 
815                                                        }) 
816                                                        var objkeys = {[name]: valorDa} 
817                                                        objnew = Object.assign(objnew, objkeys) 
818 
819                                                    }) 
820 
821
822                                                newarr.push(objnew) 
823                                            }) 
824
825
826
827                            }else 
828
829 
830                                arrd.forEach((e) => { 
831                                    objnew = {type: e.type} 
832                                    console.log(e.data) 
833                                    for (var i = 0; i <= e.data.length - 1; i++) { 
834                                        //objeto a array 
835                                        var cat = categoria_valor.value 
836                                        var t = Object.entries(e.data[i]) 
837                                        //nos qudamos con el resto de datos del objeto 
838                                        var u = t.filter((e) => { 
839                                            return e[0] != cat 
840                                        }) 
841                                        var text = '' 
842                                        var val = 0 
843                                        catobj.forEach((key) => { 
844                                            for (var a = 0; a <= u.length - 1; a++) { 
845                                                if (key == u[a][0]) { 
846                                                    if (text != '') { 
847                                                        text = text + ' ' + u[a][1] 
848                                                    } else { 
849 
850                                                        if (key != '${mes}') { 
851                                                            text = u[a][1] 
852                                                        } else { 
853                                                            text = u[a][1] 
854
855
856
857                                                if (u[a][0] == [valor]) { 
858                                                    val = u[a][1] // val=parseInt(u[a][1] ) 
859
860
861                                        }) 
862                                        var objkeys = {[text]: val} 
863                                        objnew = Object.assign(objnew, objkeys) 
864
865                                    newarr.push(objnew) 
866                                }) 
867
868                            console.log(newarr) 
869                            var returnedTarget={} 
870							var ob=[] 
871                            newarr.forEach((e)=>{ 
872                                /*var obj={zero:0}; 
873                                return e=Object.assign(e,obj)*/ 
874                                var o =Object.keys(e) 
875								for (const key of Object.keys(e)) { 
876							        if( key!='type'){ 
877							            ob.push(key) 
878
879
880                                returnedTarget = Object.assign(returnedTarget,ob); 
881                            }) 
882 
883                            //var t=Object.keys(newarr[0]) 
884                            var t=returnedTarget 
885                            //removeItemFromArr( t, 'type' ); 
886                            //removeItemFromArr( t, 'zero' ); 
887                            var columns=[] 
888                            for (var [key, value] of Object.entries(t)) { 
889                                console.log(key + ' ' + value); 
890                                if(value=='type'){ 
891                                    delete t[key]; 
892                                }else{ 
893                                    columns.push(value) 
894
895
896 
897                            t=columns 
898                            for(var i = t.length -1; i >=0; i--){ 
899                             if(t.indexOf(t[i]) !== i) t.splice(i,1); 
900
901                            //values inside obj 
902                            var obj2=[],lengthCat=[],uniqueValues=[] 
903                            catobj.forEach((e)=>{ 
904                                uniqueValues='' 
905                                arrd.forEach(d=>{  //para cuando tengamos  mas group 
906                                    var r=[...new Set(d.data.map(item => item[e]))] 
907                                    //uniqueValues.push(r) 
908                                    uniqueValues=uniqueValues+r.join()+',' 
909                                }) 
910                                uniqueValues=uniqueValues+',' 
911                                uniqueValues=uniqueValues.split(',') 
912                                uniqueValues= [...new Set(uniqueValues)]; 
913                                var textUnique=uniqueValues.toString() 
914                                lengthCat.push( textUnique) 
915 
916                                /*uniqueValues =[...new Set(arrd[0].data.map(item => item[e]))]; 
917                                var textUnique=uniqueValues.toString() 
918                                lengthCat.push( textUnique)*/ 
919                            }) 
920 
921                            for(var i=0;i<=lengthCat.length-1;i++){ 
922                                var tval=lengthCat[i].split(',') 
923                                var o={val:tval.length,index:i} 
924                                obj2.push(o) 
925
926 
927 
928                            obj2.sort( compare ); 
929                            //group series 
930                            var groupSeries=lengthCat[obj2[0].index] 
931                            if(groupSeries[0]=='${enero}'){ 
932                                groupSeries="${enero},${febrero},${marzo},${abril},${mayo},${junio},${julio},${agosto},${septiembre},${octubre},${noviembre},${diciembre}" 
933
934 
935                            if(groupSeries.includes('${hasta}')){ 
936                                groupSeries="'${hasta22}','${hasta35}','${hasta55}','${mas55}'" 
937
938 
939                            if(groupSeries=='${comarca}'){ 
940                                var neObj=[] 
941                                newarr.forEach(d=>{ 
942                                    var obj 
943                                    if(d['${ambitoterritorialcomarca}']!=undefined){ 
944                                        obj={'type':d.type, [valor]:d['${ambitoterritorialcomarca}']} 
945                                        neObj.push(obj) 
946                                    }else if(d['${ambitoterritorialsti}']!=undefined){ 
947                                        obj={'type':d.type, [valor]:d['${ambitoterritorialsti}']} 
948                                        neObj.push(obj) 
949
950 
951 
952                                }) 
953                                console.log(neObj) 
954                                newarr=neObj 
955
956                            if(groupSeries.includes('${urbanos}')){ 
957                                var neObj=[] 
958                                newarr.forEach(d=>{ 
959                                    var obj 
960                                    if(d.type=='undefined'){ 
961                                        d.type="${tipodeingreso}" 
962
963 
964 
965                                }) 
966
967 
968                            // Themes begin 
969                            am4core.useTheme(am4themes_animated); 
970                            // Themes end 
971                            am4core.addLicense("CH333277446"); 
972                            // Create chart instance 
973                            var chart = am4core.create("chartdiv", am4charts.XYChart); 
974 
975                            // Add data 
976                            /* if(newArrWithMonts.length>0){ 
977                                 chart.data = newArrWithMonts 
978                             }else{ 
979                                 chart.data = newarr 
980                             }*/ 
981                            chart.data = newarr; 
982                            myChart=[chart] 
983 
984                            // Create axes 
985                            var categoryAxis = chart.xAxes.push(new am4charts.CategoryAxis()); 
986                            categoryAxis.dataFields.category = "type"; 
987                            // Room for sub-category labels 
988                           
989                            categoryAxis.renderer.labels.template.marginTop = 20; 
990                            categoryAxis.renderer.grid.template.location = 0; 
991							categoryAxis.tooltip.label.wrap = true; 
992						 
993							/* 
994							categoryAxis.events.on("sizechanged", function(ev) { 
995                            let axis = ev.target; 
996                            let cellWidth = axis.pixelWidth / (axis.endIndex - axis.startIndex); 
997                            axis.renderer.labels.template.maxWidth = cellWidth; 
998                                });*/ 
999                            var valueAxis = chart.yAxes.push(new am4charts.ValueAxis()); 
1000                            var eje0= '${eje}' 
1001 
1002                            if(eje0!=null && eje0!=undefined && eje0!=''){ 
1003                                valueAxis.min = parseInt(eje0); 
1004 
1005                                valueAxis.strictMinMax = true; 
1006
1007                            //valueAxis.min = 0; 
1008 
1009 
1010                            // Configure axis label 
1011                           // var label = categoryAxis.renderer.labels.template; 
1012                            //label.wrap = true; 
1013						 
1014                           // label.maxWidth = 300; 
1015						   //label.wrap = true; 
1016 
1017                           // label.maxWidth="Auto sizing text"; 
1018                            
1019                           	var labelIndicador = categoryAxis.renderer.labels.template; 
1020                            labelIndicador.wrap = true; 
1021                            labelIndicador.maxWidth = 120; 
1022                            // Create series 
1023                            function createSeries(field, name, stacked) { 
1024                                var series = chart.series.push(new am4charts.ColumnSeries()); 
1025                                series.dataFields.valueY = field; 
1026                                series.dataFields.categoryX = "type"; 
1027                                series.name = name; 
1028								 
1029                                if(series.name!=''){ 
1030                                    series.name=series.name[0].toUpperCase() + series.name.slice(1); 
1031
1032                                series.columns.template.tooltipText = "{name}: [bold]{valueY}[/]"; 
1033                                series.stacked = stacked; 
1034
1035 
1036 
1037                            function createLabelSeries(name) { 
1038                                var series = chart.series.push(new am4charts.ColumnSeries()); 
1039                                series.dataFields.valueY = name;//series.dataFields.valueY = "zero"; 
1040                                series.dataFields.categoryX = "type"; 
1041                                series.name = name; 
1042                                if(series.name!=''){ 
1043                                    series.name=series.name[0].toUpperCase() + series.name.slice(1); 
1044
1045                                series.hiddenInLegend = true; 
1046 
1047                                var bullet = series.bullets.push(new am4charts.LabelBullet()); 
1048                                // bullet.label.text = "{name}"; 
1049                                bullet.label.hideOversized = false; 
1050                                bullet.label.paddingTop = 30; 
1051
1052 
1053                            chart.maskBullets = false; 
1054                            chart.scrollbarX = new am4core.Scrollbar(); 
1055                            chart.scrollbarY = new am4core.Scrollbar(); 
1056 
1057                            groupSeries=groupSeries.split(',') 
1058 
1059                            if(groupSeries[0]=='${enero}'){ 
1060 
1061                                if(groupSeries[0]=='Comarca'){ 
1062                                    newarr.forEach(p=>{ 
1063                                        createSeries(p.valor, p.type,false); 
1064                                    }) 
1065 
1066                                }else{ 
1067                                    t.forEach((serie)=>{ 
1068                                        //createLabelSeries(serie); 
1069                                        // var tipo= ['motivo de viaje', 'medio de transporte', 'ámbito territorial', 'provincia'] 
1070                                        //  ['reason for travel', 'mean of transport', 'territorial scope', 'province'] 
1071                                        //  ['motiu de viatje', 'mode de transport', 'àmbit territorial', 'àmbit'] 
1072 
1073                                        if(columnsFiltered.includes('motiu de viatje') && columnsFiltered.includes('mode de transport') 
1074                                            ||columnsFiltered.includes('reason for travel') && columnsFiltered.includes('mean of transport') 
1075                                            ||columnsFiltered.includes('motivo de viaje') && columnsFiltered.includes('medio de transporte') ){ 
1076                                            createSeries(serie, serie, true); 
1077                                        }else 
1078                                            createSeries(serie, serie, false); 
1079                                    }) 
1080
1081                            }else{ 
1082                                //groupSeries.foreach 
1083                                t.forEach((serie)=>{ 
1084                                    if(serie!=''){ 
1085                                        //createLabelSeries(serie) 
1086                                        createSeries(serie, serie, false); 
1087
1088 
1089                                }) 
1090 
1091
1092 
1093                            // Add legend 
1094                            chart.legend = new am4charts.Legend(); 
1095 
1096
1097 
1098                        function removeItemFromArr ( arr, item ) { 
1099                            var i = arr.indexOf( item ); 
1100                            arr.splice( i, 1 ); 
1101
1102                        function compare( a, b ) { 
1103                            if ( a.val < b.val ){ 
1104                                return -1; 
1105
1106                            if ( a.val > b.val ){ 
1107                                return 1; 
1108
1109                            return 0; 
1110
1111                        function sumObjectsByKey(...objs) { 
1112                            return objs.reduce((a, b) => { 
1113                                for (let k in b) { 
1114                                    if (b.hasOwnProperty(k)) 
1115                                        a[k] = (a[k] || 0) + b[k]; 
1116
1117                                return a; 
1118                            }, {}); 
1119
1120                        //select años 
1121                        var selectAny=document.getElementById("select_any"); 
1122                        selectAny.addEventListener('change', 
1123                            function(){ 
1124                                console.log(selectAny) 
1125                                any=Object.keys(objData[0]).find(i=>{return(i=='año'||i=='any'||i=='year')}) 
1126                                var t=dataOriginal.filter((e)=>{return e[any]==selectAny.value}) 
1127                                var amb=t.filter(x => x['${ambitoterritorial}']===selectAmbitoTerr.value ) 
1128                                if(amb!=undefined && amb.length>0){ 
1129                                    t=amb 
1130
1131                                let b= _.groupBy(t, selectCategory.value);  //  repartiment modal n1 
1132                                var p=[]; 
1133                                var v={} 
1134                                for (var key in b) { 
1135                                    var val={type:key,'data':(b[key])}; 
1136 
1137                                    p.push(val) 
1138
1139                                var data1=p 
1140 
1141                                data1.forEach((val)=>{ 
1142                                    val.data.forEach(d=>{ 
1143                                        d[valor]=d[valor].replace(',','.'); 
1144                                    }) 
1145                                }) 
1146 
1147                                Bars(data1,'category',valor) 
1148
1149
1150 
1151                        //Select category 
1152                        var selectCategory=document.getElementById("category"); 
1153                        selectCategory.addEventListener('change', 
1154                            function(){ 
1155                                var selectAny=document.getElementById("select_any"); 
1156                                console.log(selectAny) 
1157                                var t=dataOriginal.filter((e)=>{return e[año]==selectAny.value}) 
1158 
1159                                if(selectAmbitoTerr.value){ 
1160                                    var a=t.filter(x => x['${ambitoterritorial}']===selectAmbitoTerr.value ) 
1161                                    t=a 
1162
1163 
1164                                let b= _.groupBy(t, selectCategory.value);  //  repartiment modal n1 
1165                                var p=[]; 
1166                                var v={} 
1167                                for (var key in b) { 
1168                                    var val={type:key,'data':(b[key])}; 
1169 
1170                                    p.push(val) 
1171
1172                                var data1=p 
1173 
1174                                Bars(data1,'category',valor) 
1175
1176
1177                        //select ambito territorial 
1178                        var selectAmbitoTerr=document.getElementById("select_ambit_territorial"); 
1179                        selectAmbitoTerr.addEventListener('change', 
1180                            function(){ 
1181                                console.log(selectAmbitoTerr) 
1182                                var t=dataOriginal.filter((e)=>{return e[año]==selectAny.value}) 
1183                                b=t.filter(x => x['${ambitoterritorial}']===selectAmbitoTerr.value ) 
1184 
1185                                let b2= _.groupBy(b, selectCategory.value);  //  repartiment modal n1 
1186                                var p=[]; 
1187                                var v={} 
1188                                for (var key in b2) { 
1189                                    var val={type:key,'data':(b2[key])}; 
1190 
1191                                    p.push(val) 
1192
1193                                var data1=p 
1194 
1195                                data1.forEach((val)=>{ 
1196                                    val.data.forEach(d=>{ 
1197                                        d[valor]=d[valor].replace(',','.'); 
1198                                    }) 
1199                                }) 
1200 
1201                                Bars(data1,categoria_valor.value,valor) 
1202
1203
1204 
1205                        function  convertMonth(data){ 
1206                            if(data[mes]=='1'){ 
1207                                data[mes]='${enero}' 
1208
1209                            if(data[mes]=='2'){ 
1210                                data[mes]='${febrero}' 
1211
1212                            if(data[mes]=='3'){ 
1213                                data[mes]='${marzo}' 
1214
1215                            if(data[mes]=='4'){ 
1216                                data[mes]='${abril}' 
1217
1218                            if(data[mes]=='5'){ 
1219                                data[mes]='${mayo}' 
1220
1221                            if(data[mes]=='6'){ 
1222                                data[mes]='${junio}' 
1223
1224                            if(data[mes]=='7'){ 
1225                                data[mes]='${julio}' 
1226
1227                            if(data[mes]=='8'){ 
1228                                data[mes]='${agosto}' 
1229
1230                            if(data[mes]=='9'){ 
1231                                data[mes]='${septiembre}' 
1232
1233                            if(data[mes]=='10'){ 
1234                                data[mes]='${octubre}' 
1235
1236                            if(data[mes]=='11'){ 
1237                                data[mes]='${noviembre}' 
1238
1239                            if(data[mes]=='12'){ 
1240                                data[mes]='${diciembre}' 
1241
1242
1243                        function convertKey(data,oldName,newName) { 
1244 
1245                            data[newName] = data[oldName]; 
1246                            if(newName!=oldName){ 
1247                                delete data[oldName]; 
1248
1249
1250                        function downloadCSV (data2) { 
1251                            let data = data2 
1252                            var titulo="${Título.getData()}"+'.csv' 
1253                            let result = data; 
1254 
1255                            var blob = new Blob(["\uFEFF"+csv], { 
1256                                type: 'text/csv; charset=utf-18', 
1257                                name: titulo 
1258                            }); 
1259 
1260 
1261                            saveAs(blob, titulo); 
1262
1263                        //export dataTable and view table 
1264 
1265                        var viewDataTable=document.getElementById("viewDataTable"); 
1266                        viewDataTable.addEventListener('click', 
1267                            function(){ 
1268                                var chartdata=document.getElementById("chartdata"); 
1269                                if(chartdata.style.height==''){ 
1270                                    viewDataTable.textContent='${ocultar_tabla_datos}' 
1271                                    chartdata.style.height='200px' 
1272                                    chartdata.style.display='' 
1273 
1274                                }else if(chartdata.style.height='auto'){ 
1275                                    chartdata.style.height='' 
1276                                    chartdata.style.display='none' 
1277                                    viewDataTable.textContent='${tabla_de_datos}' 
1278
1279 
1280                                var data = csv 
1281 
1282                                var lines = data.split("\n"), 
1283                                    output = [], 
1284                                    i; 
1285                                for (i = 0; i < lines.length; i++) 
1286                                    output.push("<tr><td>" + lines[i].split(";").join("</td><td>") + "</td></tr>"); 
1287                                output = "<table class='table table-striped table-hover table-sm'>" + output.join("") + "</table>"; 
1288 
1289 
1290                                var div = document.getElementById('chartdata'); 
1291                                div.innerHTML = output; 
1292                                div.className="tableStyle" 
1293 
1294                            }) 
1295                        var exportTable=document.getElementById("exportAsCSV"); 
1296                        exportTable.addEventListener('click', 
1297                            function(){ 
1298                                downloadCSV(csv) 
1299                                /*myChart.map((mychart, index) => { 
1300                                mychart.exporting.export("csv"); 
1301                              }); */ 
1302
1303
1304 
1305                    </script> 
1306 
1307                </#if> 
1308            </#if> 
1309        </#if> 
1310 
1311    </#list> 
1312</#if> 

Vols reportar una incidència en les dades?

Si creus que hi ha informació incorrecta o dades equivocades, pots reportar la incidència perquè l’equip de l’OMC la revisi i procedeixi a la correcció de la mateixa.

Informar incidència

Copiat

 
Et pot interessar

Publicador de continguts