1var aDependencias = [ 2 { path: "componentes/biinegi/extjs/css/theme-crisp-all.css?v=c25062019_1", type: "css", active: true }, 3 { path: "componentes/biinegi/styles/cuadros.min.css", type: "css", active: true }, 4 { path: "estilos/bootstrap/bootstrap.min.css", type: "css", active: false }, 5 { path: "componentes/biinegi/rtTables/rtTables.css?v=c25062019_1", type: "css", active: true }, 6 { path: "componentes/biinegi/catalogoHerramientas.min.js", type: "js", active: true}, 7 { path: "componentes/biinegi/extjs/js/ext-all.js?v=c25062019_1", type: "js", active: true }, 8 { path: "componentes/biinegi/rtTables/rtTables.js?v=c25062019_1", type: "js", active: true } 9]; 10const extension_api_cuadros = ""; 11// variable para los cuadros que entran en el nuevo llamado a API MetadatoIndicador/ (v2) 12var aCuadrosNuevoMetodoPost = [1, 2, 3, 6, 7, 8, 14, 12, 13,17]; 13//var aCuadrosNuevoMetodoPost = []; 14 /** 15 * @description Metodo encargado de traducir al idioma seleccionado 16 * @param {*} parametros 17 * @param {*} texto 18 * @returns texto - en el idioma seleccionado 19 * @created 12-11-2021 20 */ 21 var getTraductorCuadro = function(parametros, texto){ 22 var aTextosEs = ["Exportar como","Exportar como PDF","Exportar como PNG","Opciones","Entidad federativa","Municipio","Localidad","Ubicación geográfica","Tipo de localidad habitada","Es cabecera municipal","Cabecera municipal","Instituto Nacional de EstadÃstica y GeografÃa","México en Cifras","Localidades","Fecha de consulta","Exportar","de","en adelante","Alta","Baja","Moderada","Coeficiente de variación (CV) en el rango de:","Estimación: Las estimaciones que aparecen en este cuadro están coloreadas de acuerdo con su nivel de precisión, en Alta, Moderada y Baja, tomando como referencia el coeficiente de variación CV (%).","LÃmite: Intervalo de confianza al 90%.","Una precisión Baja requiere un uso cauteloso de la estimación en el que se analicen las causas de la alta variabilidad y se consideren otros indicadores de precisión y confiabilidad, como el intervalo de confianza.","Interpretación","Coeficiente de variación en el rango de","La información que aparece en este cuadro está coloreada de acuerdo con el nivel de cobertura de la variable de diseño (%) usada para seleccionar la muestra, en Alta, Moderada y Baja. Una cobertura Baja requiere un uso cauteloso de la información.","Cobertura de la variable de diseño en el rango de","menor a","Una cobertura Baja requiere un uso cauteloso de la información","Interpretación"]; 23 var aTextosEn = ["Export as","Export as PDF","Export as PNG","Options","Federal entity","Municipality","Location","Geographic location","Type of inhabited locality","It's municipal head","Municipal head","National Institute of Statistic and Geography","Mexico in Numbers","Localities","Query date","Download","of","onwards","High","Low","Moderated","Coefficient of variation (CV) in the range of:","Estimate: The estimates shown in this table are colored according to their level of precision, in High, Moderate and Low, taking as reference the coefficient of variation CV (%).","Limit: 90% confidence interval.","Low precision requires a cautious use of estimation in which the causes of high variability are analyzed and other indicators of precision and reliability, such as the confidence interval, are considered.","Interpretation","Coefficient of variation in the range of","The information in this table is colored according to the level of coverage of the design variable (%) used to select the sample, into High, Moderate and Low. Low coverage requires a cautious use of the information.","Coverage of the design variable in the range of","less than","Low coverage requires cautious use of information","Interpretation"]; 24 // var posTexto = aTextosEs.indexOf(texto) 25 26 // return (parametros.idioma == "es")? aTextosEs[posTexto] : aTextosEn[posTexto] 27 // return (parametros.idioma == "es")? aTextosEs.filter((e,idx) => { return texto === e? index : -1})[0] : aTextosEn[posTexto] 28 var posTexto = aTextosEs.findIndex((e) => { return e === texto}) 29 // console.log(posTexto); 30 if(parametros.idioma == "es"){ 31 return aTextosEs[posTexto] 32 } else { 33 return aTextosEn[posTexto] 34 35 } 36} 37 38// Objeto gestor de Cobertura para cuadro #8 39// fecha 17-11-2022 40var oCriteriosCobertura = { 41 check: function(data){ 42 var oCob = data.coverage_design && data.coverage_design != null? data.coverage_design[0] : null; 43 return oCob; 44 }, 45 getColor: function(valor, oCobertura){ 46 var valorNumerico = parseFloat(valor); 47 // if(valorNumerico >= oCobertura.LIMITE_INFERIOR && valorNumerico <= oCobertura.LIMITE_SUPERIOR){ 48 if(valorNumerico != "" && valorNumerico != null){ 49 return oCobertura.COLOR; 50 } 51 return ""; 52 } 53} 54 55// Objeto gestor de datos de precision para cuadro #precision 56// fecha 14-02-2023 57var oCriteriosPrecision = { 58 check: function(data){ 59 var oCob = data.precision_rule && data.precision_rule != null? data.precision_rule : null; 60 return oCob; 61 }, 62 getColorTooltip: function(valor, oPrecision, parametros){ 63 // console.log(valor) 64 // console.log(oPrecision) 65 66 var valorNumerico = parseFloat(valor); 67 var oRangoAlta = oPrecision.filter((r) => {return r.descripcion === "Alta"})[0]; 68 var oRangoModerada = oPrecision.filter((r) => {return r.descripcion === "Moderada"})[0]; 69 var oRangoBaja = oPrecision.filter((r) => {return r.descripcion === "Baja"})[0]; 70 71 if(oRangoAlta.descripcion === "Alta" && valorNumerico >= parseInt(oRangoAlta.limite_inferior) && valorNumerico < parseInt(oRangoAlta.limite_superior)){ // Alta 72 return {color:oRangoAlta.color, tooltip:getTraductorCuadro(p
72arametros, "Alta")+": "+ getTraductorCuadro(parametros, "Coeficiente de variación en el rango de") +" ("+oRangoAlta.limite_inferior+"%, "+oRangoAlta.limite_superior+"%)"}; 73 74 } else if(oRangoModerada.descripcion === "Moderada" && valorNumerico >= parseInt(oRangoModerada.limite_inferior) && valorNumerico < parseInt(oRangoModerada.limite_superior)){ // Moderada 75 return {color:oRangoModerada.color, tooltip:getTraductorCuadro(parametros, "Moderada")+": "+ getTraductorCuadro(parametros, "Coeficiente de variación en el rango de") +" ("+oRangoModerada.limite_inferior+"%, "+oRangoModerada.limite_superior+"%)"}; 76 77 } else if(oRangoBaja.descripcion === "Baja" && valorNumerico >= parseInt(oRangoBaja.limite_inferior) && valorNumerico <= parseInt(oRangoBaja.limite_superior)){ // Baja 78 return {color:oRangoBaja.color, tooltip:getTraductorCuadro(parametros, "Baja")+": "+ getTraductorCuadro(parametros, "Coeficiente de variación en el rango de") +" ("+oRangoBaja.limite_inferior+"%, "+oRangoBaja.limite_superior+"%)"}; 79 } 80 return "transparent"; 81 }, 82 getLimites: function(oPrecision){ 83 var oRangoAlta = oPrecision.filter((r) => {return r.descripcion === "Alta"})[0]; 84 var oRangoModerada = oPrecision.filter((r) => {return r.descripcion === "Moderada"})[0]; 85 var oRangoBaja = oPrecision.filter((r) => {return r.descripcion === "Baja"})[0]; 86 return { 87 Alta:oRangoAlta, 88 Moderada:oRangoModerada, 89 Baja:oRangoBaja, 90 } 91 } 92} 93 94//////////// OBJETO MESES PARA LA CONVERSION DE PERIODOS DE NUMERO A STRING 95//////////// Agregado: 27-04-2018 01:27 pm 96//////////// Autor: @rovalx 97var oMESES = { 98 listEs: ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"], 99 listEn: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "Octuber", "November", "December"], 100 getMesNombre: function (mesNumero, idioma) { 101 var mes = ((typeof mesNumero === "string") ? parseInt(mesNumero) : mesNumero); 102 if (idioma === undefined || idioma === "es") { 103 return this.listEs[mesNumero - 1]; 104 } else { 105 return this.listEn[mesNumero - 1]; 106 } 107 }, 108 getMesNombreCorto: function (mesNumero, idioma) { 109 var mes = ((typeof mesNumero === "string") ? parseInt(mesNumero) : mesNumero); 110 if (idioma === undefined || idioma === "es") { 111 return (mesNumero !== undefined) ? this.listEs[mesNumero - 1].substr(0, 3) : ""; 112 } else { 113 return (mesNumero !== undefined) ? this.listEn[mesNumero - 1].substr(0, 3) : ""; 114 } 115 }, 116 getFormatoPeriodo: function (periodo, frecuencia, idioma, formato) { // formato = [1 = largo, 2 = corto] 117 var ft = ""; 118 var formato = formato === undefined ? 1 : formato; 119 if (frecuencia === "Trimestral" || frecuencia === "Quarterly") { 120 var anio = periodo.split("/")[0]; 121 var mes = periodo.split("/")[1]; 122 123 switch (mes) { 124 case "01": ft = (formato === 1) ? anio + " 1T" : "1T"; break; 125 case "02": ft = (formato === 1) ? anio + " 2T" : "2T"; break; 126 case "03": ft = (formato === 1) ? anio + " 3T" : "3T"; break; 127 case "04": ft = (formato === 1) ? anio + " 4T" : "4T"; break; 128 } 129 } else if (frecuencia === "Bienal" || frecuencia === "No establecida" 130 || frecuencia === "Biennial" || frecuencia === "Not established") { // ES UN AÃO 131 ft = periodo; 132 133 } else if (frecuencia === "Mensual" || frecuencia === "Monthly") { 134 var anio = periodo.split("/")[0]; 135 var mes = this.getMesNombreCorto(periodo.split("/")[1], idioma); 136 ft = (formato === 1) ? (anio + " " + mes) : mes; 137 138 } else if (frecuencia === "PerÃodo único") { // tal cual biene 139 ft = periodo; 140 } else if (frecuencia === "Anual" || frecuencia === "Quinquenal" || frecuencia == "Decenal" || frecuencia == "Decennial" 141 || frecuencia === "Annual" || frecuencia === "Quinquennial") { 142 ft = periodo; 143 } else if (frecuencia == "Quincenal" || frecuencia === "Biweekly") { // llega quincena en formato AAAA/mm/quincena > 2017/02/01 (primer quincena) 144 var anio = (periodo.indexOf("/") !== -1) ? periodo.split("/")[0] : periodo; 145 var mes = (periodo.indexOf("/") !== -1) ? parseInt(periodo.split("/")[1]) : ""; 146 var quincena = (periodo.indexOf("/") !== -1) ? periodo.split("/")[2] : ""; 147 var m = "", q = ""; 148 if (periodo.split("/")[1] !== undefined) { 149 if (idioma === undefined || idioma === "es") { 150 m = (mes !== undefined) ? this.listEs[mes - 1].substr(0, 3) : ""; 151 } else { 152 m = (mes !== undefined) ? this.listEn[mes - 1].substr(0, 3) : ""; 153 } 154 } 155 switch (quincena) { 156 case "01": q = ((idioma === undefined || idioma === "es") ? "Q" : "H") + "1"; break; 157 case "02": q = ((idioma === undefined || idioma === "es") ? "Q" : "H") + "2"; break; 158 default: q = ""; break; 159 } 160 ft = (anio + " " + m + " " + q); 161 162 /**ESO ES POR SI EL AJUSTE DE SERGIO SI APLICA, EL LO VA A REVISAR (15/5/2025) 163 else if (frecuencia == "Quincenal" || frecuencia === "Biweekly") { // llega quincena en formato AAAA/quincena > 2024/01 (primer quincena) 164 var anio = (periodo.indexOf("/") !== -1) ? periodo.split("/")[0] : periodo; 165 var quincena = (periodo.indexOf("/") !== -1) ? parseInt(periodo.split("/")[1]) : ""; 166 // var quincena = (periodo.indexOf("/") !== -1) ? periodo.split("/")[2] : ""; 167 var m = "", q = ""; 168 if (periodo.split("/")[1] !== undefined) { 169 if (idioma === undefined || idioma === "es") { 170 m = (mes !== undefined) ? this.listEs[mes - 1].substring(0, 3) : ""; 171 } else { 172 m = (mes !== undefined) ? this.listEn[mes - 1].substring(0, 3) : ""; 173 } 174 } 175 // switch (quincena) { 176 // case "01": q = ((idioma === undefined || idioma === "es") ? "Q" : "H") + "1"; break; 177 // case "02": q = ((idioma === undefined || idioma === "es") ? "Q" : "H") + "2"; break; 178 // default: q = ""; break; 179 // } 180 ft = (anio + " " + quincena + "-"); 181 if(quincena !== undefined && quincena !== null && quincena !== ""){ 182 ft = (anio + " " + quincena + ((idioma === undefined || idioma === "es") ? "Q" : "H")); 183 } 184 185 } 186 */ 187 188 189 } else { // otro default 190 ft = periodo; 191 } 192 return ft; 193 } 194} 195function getDateF2() { 196 var today = new Date(); 197 var dd = today.getDate(); 198 var mm = today.getMonth() + 1; //January is 0! 199 var yyyy = today.getFullYear(); 200 Number.prototype.padLeft = function (base, chr) { 201 var len = (String(base || 10).length - String(this).length) + 1; 202 return len > 0 ? new Array(len).join(chr || '0') + this : this; 203 } 204 var hh = today.getHours().padLeft(); 205 var nn = today.getMinutes().padLeft(); 206 var ss = today.getSeconds().padLeft(); 207 208 if (dd < 10) { 209 dd = '0' + dd 210 } 211 if (mm < 10) { 212 mm = '0' + mm 213 } 214 var today = yyyy +""+ dd +""+ mm +""+ hh + nn + ss; 215 var todayFormat = dd +"/"+mm+"/"+yyyy+" "+hh+":"+nn+":"+ss 216 217 return {today,todayFormat}; 218 219} 220/** 221 * Metodo que registra los eventos del componente
222 * @param nombre_componente // Nombre del componente 223 * @param caso // tipo de gráfica / cuadro / vista turista 224 * @param parametros // parametros de configuracion del componente 225 */ 226window.INEGIAnalytics = window.INEGIAnalytics === null || window.INEGIAnalytics === undefined? {registro: function(nombre_evento, caso, parametros){ 227 if(typeof gtag == 'function'){ 228 gtag('event', nombre_evento, { 229 'caso': caso, 230 'parametros': JSON.stringify(parametros), 231 'url': window.location.href 232 }); 233 } 234}} : window.INEGIAnalytics; 235/// <summary> Invoca componente de cuadro. </summary> 236/// 237/// <remarks> ARMANDO.ORTIZV, 23/11/2016. </remarks> 238/// 239/// <param name="parametros"> Objeto de parametros de javascript. </param> 240/// <param name="contenedorCuadro"> Nombre del elemento contenedor. </param> 241/// 242/// <returns> . </returns> 243CuadroComponente.prototype.GeneraCuadro = function (parametros, contenedorCuadro) { 244 //this.CallService(parametros, contenedorCuadro); 245 // ultima modificación: 19-03-2019 se añade cargador dinamico de recursos / librerias css y js 246 configura(null).init(); 247 INEGIAnalytics.registro("BI_componente_cuadros", parametros.tipoCuadro, parametros) 248 249 // API_V = "v1_3"; // borrar demo apra pruebas del cambio de catalogoareageografica 250 var _this = this; 251 if (typeof Mura === "function" && Mura !== undefined) { 252 var fUrls = []; 253 var fUrlsCss = []; 254 var scripts = document.getElementsByTagName('head')[0]; 255 256 function scriptLoaded(name){ 257 let aHead = scripts.children; 258 let loaded = false; 259 for(var x= 0; x < aHead.length; x++){ 260 if(aHead[x].src !== undefined){ 261 if(aHead[x].src.indexOf(name) > -1){ loaded = true; break;} //else { loaded = false; break;} 262 } 263 } 264 return loaded; 265 } 266 for (var x = 0; x < aDependencias.length; x++) { 267 if (aDependencias[x].active) { 268 if(aDependencias[x].type === "js"){ 269 if(aDependencias[x].path.indexOf("ext-all.js") > -1){ // si se esta invocando un cuadro que utiliza extjs 270 if(parametros.gc && parametros.gc !== undefined){ // para los casos del # 2 y del #7 que pueden ser cuadros normales o de extjs 271 // console.log("> Carga libreria extall") 272 fUrls.push(C_dominioBuscador + aDependencias[x].path) 273 } 274 } else { 275 var nombre = aDependencias[x].path.split("/")[aDependencias[x].path.split("/").length-1]; 276 if(scriptLoaded(nombre) === false){ 277 fUrls.push(C_dominioBuscador + aDependencias[x].path) 278 } 279 } 280 } else { 281 fUrlsCss.push(C_dominioBuscador + aDependencias[x].path) 282 } 283 } 284 } 285 Mura.loader().loadcss(fUrlsCss); // Carga los recursos css del componente 286 Mura.loader() 287 .loadjs(fUrls, 288 function () { 289 _this.CallService(parametros, contenedorCuadro); 290 291 } 292 ) 293 } else { 294 this.CallService(parametros, contenedorCuadro); 295 296 } 297 298 } 299 300 /// <summary> Carga parametros desde la Url de la pagina. </summary> 301 /// 302 /// <remarks> ARMANDO.ORTIZV, 23/11/2016. </remarks> 303 /// 304 /// <returns> . </returns> 305 CuadroComponente.prototype.LeeURL = function () { 306 var parametros = this.LeerValores(); 307 return parametros; 308 } 309 $('.dropdown.keep-open').on({ 310 "shown.bs.dropdown": function () { this.closable = false; }, 311 "click": function () { this.closable = true; }, 312 "hide.bs.dropdown": function () { return this.closable; } 313 }); 314 315 /// <summary> Cambia periodos del cuadro cuando cambian los combos de periodos. </summary> 316 /// 317 /// <remarks> ARMANDO.ORTIZV, 23/11/2016. </remarks> 318 /// 319 /// <param name="cdata"> Configuracion del cuadro en JSON. </param> 320 /// <param name="container"> Elemento contenedor. </param> 321 /// 322 /// <returns> . </returns> 323 changeComboCuadroEventCuadroComponente = function (cdata, container) { 324 cdata.pi = document.getElementById("cmbPI" + container).value; 325 cdata.pf = document.getElementById("cmbPF" + container).value; 326 if (parseInt(cdata.pi) <= parseInt(cdata.pf)) { 327 cdata.mcch = "true"; 328 var cdChange = new CuadroComponente(); 329 cdChange.GeneraCuadro(cdata, container); 330 } 331 else { 332 var mensajeAlerta = (cdata.lang == "en") ? "Last year must be same or greater than first year" : "El último año debe ser igual o mayor que el primero"; 333 window.alert(mensajeAlerta); 334 } 335 336 } 337 338 /// <summary> Cambia periodo del cuadro cuando cambia el filtro. </summary> 339 /// 340 /// <remarks> jose.valles, 09/04/2018. </remarks> 341 /// 342 /// <param name="cdata"> Configuracion del cuadro en JSON. </param> 343 /// <param name="container"> Elemento contenedor. </param> 344 /// 345 /// <returns> . </returns> 346 eventChangeFiltroCuadro = function (cdata, container) { 347 cdata.pf = document.getElementById("cmbPeriodoFiltro" + container).value; 348 cdata.pi = document.getElementById("cmbPeriodoFiltro" + container).value; 349 //cdata.mcch = "true"; 350 var cdChange = new CuadroComponente(); 351 cdChange.GeneraCuadro(cdata, container); 352 } 353 354 /// <summary> Definicion de la clase. </summary> 355 /// 356 /// <remaarks> ARMANDO.ORTIZV, 23/11/2016. </remaarks> 357 /// 358 /// <returns> . </returns> 359 function CuadroComponente() { 360 var fecha = ""; 361 /// <summary> Version y cambios del componentes. </summary> 362 /// 363 /// <remarks> ARMANDO.ORTIZV, 23/11/2016. </remarks> 364 /// 365 /// <returns> . </returns> 366 About = function () { 367 fecha = "29.05.2017"; 368 modificacion = "23.09.2026"; 369 penultimocambio = "[Corrección] SCITEL para el grupo 1 y 3 las claves de las caracteristicas tenian espacio al final de la cadena, se aplica una limpieza de espacios vacios usando trim()"; 370 ultimocambio = "[Ajuste] - Cuadro precisión por el caso de Población total, se cambia el texto temporalmente de 'LÃmite: Intervalo de confianza al 95%.' por 'LÃmite: Intervalo de confianza al 90%.'. Se pretende hacer dinámico"; 371 } 372 373 /// <summary> Implementa busqueda en un array. </summary> 374 /// 375 /// <remarks> ARMANDO.ORTIZV, 23/11/2016. </remarks> 376 /// 377 /// <param name="obj"> Objeto buscado. </param> 378 /// <param name="start"> Indice de busqueda. </param> 379 /// 380 /// <returns> . </returns> 381 Array.prototype.indexOf = function (obj, start) { 382 for (var i = (start || 0), j = this.length; i < j; i++) { 383 if (this[i] === obj) { return i; } 384 } 385 return -1; 386 } 387 388 /// <summary> Filtra un objeto por atributo en un array de objetos. </summary> 389 /// 390 /// <remarks> ARMANDO.ORTIZV, 23/11/2016. </remarks> 391 /// 392 /// <param name="fun"> Propiedad buscada en el filtro. </param> 393 /// 394 /// <returns> . </returns> 395 Array.prototype.filter = function (fun /*, thisp */) { 396 "use strict"; 397 398 if (this === void 0 || this === null) 399 throw new TypeError(); 400 401 var t = Object(this); 402 var len = t.length >>> 0; 403 if (typeof fun !== "function") 404 throw new TypeError(); 405 406 var res = []; 407 var thisp = arguments[1]; 408 for (var i = 0; i < len; i++) { 409 if (i in t) { 410 var val = t[i]; // in case fun mutates this 411 if (fun.call(thisp, val, i, t)) 412 res.push(val); 413 } 414 } 415 416 return res; 417 }; 418 419 /// <summary> Obtiene la cadena de parametros que tiene la URL. </summary> 420 var QueryString = function () { 421 var query_string = {}; 422 var query = window.location.search.substring(1); 423 var vars = query.split("&"); 424 for (var i = 0; i < vars.length; i++) { 425 var pair = vars[i].split("="); 426 // If first entry with this name 427 if (typeof query_string[pair[0]] === "undefined") { 428 query_string[pair[0]] = pair[1]; 429 // If second entry with this name 430 } else if (typeof query_string[pair[0]] === "string") { 431 var arr = [query_string[pair[0]], pair[1]]; 432 query_string[pair[0]] = arr; 433 // If third or later entry with this name 434 } else { 435 query_string[pair[0]].push(pair[1]); 436 } 437 } 438 return query_string; 439 }(); 440 441 //Polyfill after for IE 9+ (Agregado: 09-10-2020) 442 (function(x){ 443 var o=x.prototype; 444 o.after||(o.after=function(){var e,m=arguments,l=m.length,i=0,t=this,p=t.parentNode,n=Node,s=String,d=document;if(p!==null){while(i<l){((e=m[i]) instanceof n)?(((t=t.nextSibling )!==null)?p.insertBefore(e,t):p.appendChild(e)):p.appendChild(d.createTextNode(s(e)));++i;}}}); 445 }(Element)); 446 447 /// <summary> Agrega elemento TBody en una tabla generada dinamicamente. </summary> 448 /// 449 /// <remarks> ARMANDO.ORTIZV, 23/11/2016. </remarks> 450 /// 451 /// <param name="tbody"> Elemento tbody. </param> 452 /// <param name="html"> Html del cuerpo de la tabla. </param> 453 /// 454 /// <returns> . </returns> 455 function setTBodyInnerHTML(tbody, html) { 456 var temp = tbody.ownerDocument.createElement('div'); 457 temp.innerHTML = '<table>' + html + '</table>'; 458 459 tbody.parentNode.replaceChild(temp.firstChild.firstChild, tbody); 460 } 461 /** 462 * revisaHerramienta: Verificacion de indicadores x herramienta 463 * @param parametros [parametros.herr] 464 * @modificacion 25-07-2024 465 */ 466 this.herramienta = null; 467 this.revisaHerramienta = function(parametros, callback){ 468 if(API_V === "v1_3" && parametros.tematica !== "0" && parametros.tematica !== "null" && parametros.tematica !== null && parametros.tematica !== ""){ // Solo aplica cuando tematica diferente de 0 y api == 1.3 469 if(typeof catalogoHerramientas !== "undefined"){ 470 // 2 maneras de configurar la herramienta 471 // 1 - usando el parametro "herr" asignando el valor de la herramienta 472 // 2 - Dejando que el componente en automatico lo determine 473 var h = parametros.herr; 474 var ubicacionComponente = ""; 475 var nombreHerramienta = ""; 476 aListaHerramientas = catalogoHerramientas; 477 /* aListaHerramientas = [ 478 {id:205, nombre:"areasgeograficas"}, // mexico en cifras 479 {id:6, nombre:"indicadores"}, // banco de indicadores 480 {id:406, nombre:"temas"} // temas 481 ] */ 482 var localhost = window.location.hostname.indexOf("localhost"); // original 483 484 if(localhost === -1){ // si no es localhost 485 486 ubicacionComponente = window.location.pathname.split("/"); // original 487 /// >>> Posibilidades esperadas segun la url 488 //  ['', 'temas', 'estructura', ''] 489 //  ['', 'app', 'indicadores', ''] 490 //  ['', 'app', 'areasgeograficas', ''] 491 492 if(h === "" || h === "null" || h === null){ // si no se paso parámetro herr desde
492configuración, obtiene herramienta segun la url donde se encuentre 493 494 switch(ubicacionComponente[1]){ 495 case "temas": 496 case "temas3": 497 nombreHerramienta = ubicacionComponente[1] 498 break; 499 default: 500 nombreHerramienta = ""; 501 break; 502 // case "app": 503 // nombreHerramienta = ubicacionComponente[2] 504 // break; 505 } 506 if(nombreHerramienta === ""){ // significa que aun no esta activa para validación y pasa normal 507 this.herramienta = {validar:false}; 508 509 } else { 510 this.herramienta = aListaHerramientas.find(function(d){ 511 return d.nombre.includes(nombreHerramienta); 512 }) 513 if(this.herramienta === undefined) this.herramienta = {validar:false}; 514 } 515 // lo busca segun la url en la que se encuentra 516 517 } else { // de lo contrario busca en la lista con el parámetro herr 518 519 this.herramienta = aListaHerramientas.find(function(d){ 520 return d.id === parseInt(h); 521 }) 522 } 523 // si no se definio ninguna herramienta entonces lanza un mensaje de error 524 // if(this.herramienta === undefined) { console.error("[Para cuadro #"+ parametros.tipoCuadro +" - id:"+ parametros.contenedorCuadro +"] La herramienta no se encontro en el catalogo o no existe"); return;} 525 526 // si si existe la herramienta en el catalogo pero validar = false entonces se lo salta ya que no aplica por el momento para esa aplicación 527 if(this.herramienta.validar){ 528 var promesa = this.requestHerramienta(parametros, this.herramienta, "POST") 529 promesa.then((response) => { 530 return response.json() 531 }).then((data) => { 532 var IndicadoresHerramientasAplica = data.find((e) => { 533 return e.aplica === false; 534 }) 535 // si existe por lo menos un indicador que no aplica, entonces detenemos la ejecucion y mostramos mensaje en pantalla 536 if(IndicadoresHerramientasAplica !== undefined){ 537 var lblMensaje = document.getElementById("lblMensaje" + parametros.contenedorCuadro); 538 OcultaCarga(parametros); 539 lblMensaje.innerHTML = "No hay datos para mostrar"; 540 console.group("No se puede mostrar el cuadro por que 1 o mas indicadores no aplican para la herramienta: "+this.herramienta.id) 541 console.log(data) 542 console.groupEnd() 543 lblMensaje.style.display = ""; 544 if(parametros.callback !== null) parametros.callback() 545 } else { 546 // en caso contrario continuamos normal 547 callback() 548 } 549 }) 550 } else { 551 callback(); 552 } 553 // Request API 554 555 } else { 556 console.info("> verifica Herramienta en Localhost") 557
558 if(h === "null" || h === null || h === "") h = 0; // si no se paso el parámetro de herr 559 560 if(h > 0){ // si h llega con un valor diferente de 0 561 562 // busca la herramienta dentro de la lista catalogo de herramientas 563 this.herramienta = aListaHerramientas.find(function(d){ 564 return d.id === parseInt(h); 565 }) 566 if(this.herramienta === undefined) { console.error("[Para cuadro #"+ parametros.tipoCuadro +" - id:"+ parametros.contenedorCuadro +"] La herramienta no se encontro en el catalogo o no existe"); return;} 567 568 // si si existe la herramienta en el catalogo pero validar = false entonces se lo salta ya que no aplica por el momento para esa aplicación 569 if(!this.herramienta.validar){ 570 // realiza la petición GET 571 var promesa = this.requestHerramienta(parametros, this.herramienta, "GET") 572 promesa.then((response) => { 573 return response.json() 574 }).then((data) => { 575 // validamos si algun indicador no aplica y detenemos la ejecucion mostrando un mensje en pantalla 576 var IndicadoresHerramientasAplica = data.find((e) => { 577 return e.aplica === false; 578 }) 579 // si existe por lo menos un indicador que no aplica, entonces detenemos la ejecucion y mostramos mensaje en pantalla 580 if(IndicadoresHerramientasAplica !== undefined){ 581 var lblMensaje = document.getElementById("lblMensaje" + parametros.contenedorCuadro); 582 OcultaCarga(parametros); 583 lblMensaje.innerHTML = "No hay datos para mostrar"; 584 console.group("No se puede mostrar el cuadro por que 1 o mas indicadores no aplican para la herramienta: "+this.herramienta.id) 585 console.log("Cuadro #"+parametros.tipoCuadro+" id:"+parametros.contenedorCuadro) 586 console.log(data) 587 console.groupEnd() 588 lblMensaje.style.display = ""; 589 if(parametros.callback !== null) parametros.callback() 590 } else { 591 callback() 592 } 593 }) 594 } else { 595 callback() 596 } 597 } else { // solo en localhost y h === 0 entonces se brinca la verificacion de indicadores 598 callback(); 599 } 600 601 } 602 } else { 603 callback(); 604 } 605 } else { // si el API_V < 1.3 entonces no realiza verificación de indicadores por herramienta 606 callback() 607 } 608 } 609 // Llamado al Api de ValidaIndicadorxHerramientaGET / ValidaIndicadorxHerramienta 610 this.requestHerramienta = function(parametros, h, method){ 611 612 if(typeof parametros.indicadorDepurado === "object"){ 613 // sIndicadores = parametros.indicadorDepurado.map((i) => { return i.indicador; }).join(",") 614 sIndicadores = parametros.indicadorDepurado.filter((i) => { return i.tematica !== 0; }).map((i) => { return i.indicador; }).join(",") 615 616 } else { 617 sIndicadores = parametros.indicadorDepurado; 618 } 619 var direccionServicio = C_direccionServicio_V + "_" + API_V.toLowerCase() + extension_api_cuadros; 620 var url = ""; 621 if(method === "GET"){ 622 url = direccionServicio + "/ValidaIndicadorxHerramientaGET/"+sIndicadores+"/"+ h.id +"/"+parametros.tematica+"/json/"+parametros.token 623 return fetch(url,{method:"GET"}, function(d){ return d}) 624 625 } else { // POST 626 url = direccionServicio + "/ValidaIndicadorxHerramienta" 627 var bodyParametros = { 628 "indicadores": sIndicadores 629 ,"herramienta": h.id 630 ,"tematica": parametros.tematica 631 ,"formato": "json" 632 ,"token": parametros.token 633 } 634 return fetch(url,{method:"POST",body:JSON.stringify(bodyParametros),headers:{"Content-type":"application/json; charset=UTF-8"}}, function(d){ return d}) 635 } 636 } 637 638 /// <summary> Lee objeto de parametros e inicializa todas las variables. </summary> 639 /// 640 /// <remarks> ARMANDO.ORTIZV, 23/11/2016. </remarks> 641 /// 642 /// <param name="parametrosExternos"> Objeto de parametros externos. </param> 643 /// 644 /// <returns> . </returns> 645 this.CargarParametros = function (parametrosExternos) { 646 647 var parametros = {}; 648 parametros.indicator = !Array.isArray(parametrosExternos.ind) ? decodeURIComponent(EvaluaParametro(parametrosExternos.ind, "")) : parametrosExternos.ind; 649 parametros.areaGeografica = decodeURIComponent(EvaluaParametro(parametrosExternos.ag, "0")); 650 parametros.tipoCuadro = decodeURIComponent(EvaluaParametro(parametrosExternos.tc, "")); 651 652 653 parametros.nombreCorto = decodeURIComponent(EvaluaParametro(parametrosExternos.mnc, "null"));
654 // 26-10-2018 3:31 pm ( Propiedad original de Grafica componente pero se ajusta para cuadro cuando se utilice en vista turista) 655 parametros.nombresCategoriasFijas = decodeURIComponent(EvaluaParametro(parametrosExternos.nca, "")); 656 parametros.titulo = decodeURIComponent(EvaluaParametro(parametrosExternos.t, "")); 657 658 // parametros.notaParametro = decodeURIComponent(EvaluaParametro(parametrosExternos.nc, "")); 659 660 parametros.notaParametro = decodeURIComponent(EvaluaParametro(parametrosExternos.na, "")); 661 parametros.muestraNota = decodeURIComponent(EvaluaParametro(parametrosExternos.mn, "true")); 662 parametros.muestraFuente = decodeURIComponent(EvaluaParametro(parametrosExternos.mf, "true")); 663 664 665 // parametros.muestraShare = decodeURIComponent(EvaluaParametro(parametrosExternos.sh, "0")); 666 667 parametros.colorHeader = decodeURIComponent(EvaluaParametro(parametrosExternos.ch, "white")); 668 parametros.titulosColumnas = decodeURIComponent(EvaluaParametro(parametrosExternos.tcl, ""));
669 parametros.fechaInicio = decodeURIComponent(EvaluaParametro(parametrosExternos.pi, "null")); 670 parametros.fechaFin = decodeURIComponent(EvaluaParametro(parametrosExternos.pf, "null")); 671 parametros.subtitulo = decodeURIComponent(EvaluaParametro(parametrosExternos.st, "")); 672 parametros.subtituloSegundo = decodeURIComponent(EvaluaParametro(parametrosExternos.st2, "")); 673 parametros.tituloColumnaPrincipal = decodeURIComponent(EvaluaParametro(parametrosExternos.tcp, "")); 674 parametros.mostrarUnidad = decodeURIComponent(EvaluaParametro(parametrosExternos.mu, "false")); 675 parametros.estiloCuadro = decodeURIComponent(EvaluaParametro(parametrosExternos.ec, "1")); 676 parametros.datoOportunoParametro = decodeURIComponent(EvaluaParametro(parametrosExternos.dop, "null")); 677 parametros.mostrarFuentePersonalizada = decodeURIComponent(EvaluaParametro(parametrosExternos.mfp, "")); 678 parametros.cantidadPeriodos = decodeURIComponent(EvaluaParametro(parametrosExternos.cnp, "0")); 679 parametros.tabInd = decodeURIComponent(EvaluaParametro(parametrosExternos.ti, 5000)); 680 parametros.mostrarCifraEstatus = decodeURIComponent(EvaluaParametro(parametrosExternos.mce, "false")); 681 parametros.idioma = decodeURIComponent(EvaluaParametro(parametrosExternos.lang, "es")); 682 parametros.orden = decodeURIComponent(EvaluaParametro(parametrosExternos.ord, "null")); 683 parametros.mostrarCombosPeriodos = decodeURIComponent(EvaluaParametro(parametrosExternos.mcp, "false")); 684 parametros.mostrarCombosChange = decodeURIComponent(EvaluaParametro(parametrosExternos.mcch, "false")); 685 parametros.mostrarFiltroPeriodo = decodeURIComponent(EvaluaParametro(parametrosExternos.mfpu, "false")); // agregado el 09-04-2018 1:06 pm 686 parametros.mostrarSiglaExcepcion = decodeURIComponent(EvaluaParametro(parametrosExternos.mse, "false")); 687 parametros.condicionNota = decodeURIComponent(EvaluaParametro(parametrosExternos.cnt, "ambas")); 688 parametros.textoOriginal = decodeURIComponent(EvaluaParametro(parametrosExternos.to, "false")); 689 parametros.omitevalorseriecero = decodeURIComponent(EvaluaParametro(parametrosExternos.oc, "false")); 690 parametros.grid_configuracion = EvaluaParametro(parametrosExternos.gc, null); 691 parametros.herramientas = EvaluaParametro(parametrosExternos.tools, ""); // valores: "bus|pag|ord|inf" agregado: 20-sept-2018 692 parametros.D3Enabled = decodeURIComponent(EvaluaParametro(parametrosExternos.d3, "false")); // agregado 21-01-2019 para la conexion con SDMX solamente un caso especifico 693 parametros.pivotear = decodeURIComponent(EvaluaParametro(parametrosExternos.piv, "false")); // solo para el caso 7 con agrupacion de indicadores con texto fijo 694 parametros.tema = decodeURIComponent(EvaluaParametro(parametrosExternos.tema, "")); // parametro para el caso de SDMX con d3 (D3Enabled); TEMA 695 parametros.fue = decodeURIComponent(EvaluaParametro(parametrosExternos.fue, "")); // parametro para el caso de SDMX con d3 (D3Enabled); FUENTE 696 parametros.ni = decodeURIComponent(EvaluaParametro(parametrosExternos.ni, "")); // parametro para el caso de SDMX con d3 (D3Enabled); NOTAS 697 parametros.obj = decodeURIComponent(EvaluaParametro(parametrosExternos.obj, "")); // parametro para el caso de SDMX con d3 (D3Enabled); OBJETIVO ODS 698 parametros.met = decodeURIComponent(EvaluaParametro(parametrosExternos.met, "")); // parametro para el caso de SDMX con d3 (D3Enabled); META ODS 699 parametros.frec = decodeURIComponent(EvaluaParametro(parametrosExternos.frec, "")); // parametro para el caso de SDMX con d3 (D3Enabled); FRECUENCIA ODS 700 parametros.desc = decodeURIComponent(EvaluaParametro(parametrosExternos.desc, "")); // parametro para el caso de SDMX con d3 (D3Enabled); DESCRIPCION INDICADOR ODS 701 parametros.callback = parametrosExternos.callback? parametrosExternos.callback : null; 702 parametros.tematica = decodeURIComponent(EvaluaParametro(parametrosExternos.tematica, "")); // Solo API V2 - Tematica para todos los metodos del api (agregado 30 abril 2019) 703 parametros.secc = decodeURIComponent(EvaluaParametro(parametrosExternos.secc, "1")); // 05-08-2019 Secciones / cuadro 18 / localidades // 1 = los 2 primeros cuadros, 2 = el resto de información, 3, 4, 5 704 parametros.modoVisualizacionLocalidades = decodeURIComponent(EvaluaParametro(parametrosExternos.mvloc, "1")); // 13-05-2020 cuadro 18 / mvloc = 1 (secciones colapsables), mvloc = 2 (pestañas navegables) 705 parametros.areaLocalidad = EvaluaParametro(parametrosExternos.arealoc, null); // 05-07-2024 cuadro 18 / area localidad mexico para ficha localidad de mexico en cifras 706 parametros.periodoLocalidad = EvaluaParametro(parametrosExternos.periodoloc, null); // 05-07-2024 cuadro 18 / periodo localidad mexico para ficha localidad de mexico en cifras 707 parametros.versionLocalidad = EvaluaParametro(parametrosExternos.versionloc, null); // 05-07-2024 cuadro 18 / version localidad mexico para ficha localidad de mexico en cifras 708 parametros.herr = decodeURIComponent(EvaluaParametro(parametrosExternos.herr, null)); // 09-08-2023 id herramienta opcional para setHerramienta 709 //parametros.idTema = decodeURIComponent(EvaluaParametro(parametrosExternos.idtema, null)); // DEPRECATED DATE 14-02-2023 ----- creado 15-06-2021 cuadro precision / identificador del tema a validar en datos de precision y colorear por default es null 710 parametros.mostrarBotonExportacion = EvaluaParametro(parametrosExternos.mbe, true); //28-06-2022 Boton exportación mbe = true (activar) / mbe = false (
710desactivar) 711 parametros.areaSeleccionada = EvaluaParametro(parametrosExternos.areaSeleccionada, undefined) // 30-01-2025 cuadro 13v2 - entidad seleccionada por parámetro usado por el Buscador 712 parametros.caracteristicas = EvaluaParametro(parametrosExternos.cara, null) // 11-02-2026 CaracterÃsticas de localidades (indicadores) para SCITEL grupo 3 713 return parametros; 714 } 715 716 /// <summary> Lee parametros desde la url e inicializa todas las variables. </summary> 717 /// 718 /// <remarks> ARMANDO.ORTIZV, 23/11/2016. </remarks> 719 /// 720 /// <returns> . </returns> 721 this.LeerValores = function () { 722 var parametros = {}; 723 parametros.indicator = decodeURIComponent(EvaluaParametro(QueryString.ind, "")); 724 parametros.areaGeografica = decodeURIComponent(EvaluaParametro(QueryString.ag, "0"));// (hdAreaGeografica.value == "") ? "0" : hdAreaGeografica.value; 725 parametros.tipoCuadro = decodeURIComponent(EvaluaParametro(QueryString.tc, "")); 726 727 parametros.nombreCorto = decodeURIComponent(EvaluaParametro(QueryString.mnc, "null")); //(hdNombreCorto.value == "") ? "null" : hdNombreCorto.value; 728 // 26-10-2018 3:31 pm ( Propiedad original de Grafica componente pero se ajusta para cuadro cuando se utilice en vista turista) 729 parametros.nombresCategoriasFijas = decodeURIComponent(EvaluaParametro(QueryString.nca, "")); 730 731 parametros.titulo = decodeURIComponent(EvaluaParametro(QueryString.t, "")); 732 parametros.notaParametro = decodeURIComponent(EvaluaParametro(QueryString.na, "")); 733 parametros.muestraNota = decodeURIComponent(EvaluaParametro(QueryString.mn, "true")); 734 parametros.muestraFuente = decodeURIComponent(EvaluaParametro(QueryString.mf, "true")); 735 736 // parametros.muestraShare = decodeURIComponent(EvaluaParametro(QueryString.sh, "0")); 737 parametros.colorHeader = decodeURIComponent(EvaluaParametro(QueryString.ch, "")); 738 parametros.titulosColumnas = decodeURIComponent(EvaluaParametro(QueryString.tcl, ""));
739 parametros.fechaInicio = decodeURIComponent(EvaluaParametro(QueryString.pi, "null")); 740 parametros.fechaFin = decodeURIComponent(EvaluaParametro(QueryString.pf, "null")); 741 parametros.subtitulo = decodeURIComponent(EvaluaParametro(QueryString.st, "")); 742 parametros.subtituloSegundo = decodeURIComponent(EvaluaParametro(QueryString.st2, "")); 743 parametros.tituloColumnaPrincipal = decodeURIComponent(EvaluaParametro(QueryString.tcp, "")); 744 parametros.mostrarUnidad = decodeURIComponent(EvaluaParametro(QueryString.mu, "false")); 745 parametros.estiloCuadro = decodeURIComponent(EvaluaParametro(QueryString.ec, "1")); 746 parametros.datoOportunoParametro = decodeURIComponent(EvaluaParametro(QueryString.dop, "null")); 747 parametros.mostrarFuentePersonalizada = decodeURIComponent(EvaluaParametro(QueryString.mfp, "")); 748 parametros.cantidadPeriodos = decodeURIComponent(EvaluaParametro(QueryString.cnp, "0")); 749 parametros.tabInd = decodeURIComponent(EvaluaParametro(QueryString.ti, 5000)); 750 parametros.mostrarCifraEstatus = decodeURIComponent(EvaluaParametro(QueryString.mce, "false")); 751 parametros.idioma = decodeURIComponent(EvaluaParametro(QueryString.lang, "es")); 752 parametros.orden = decodeURIComponent(EvaluaParametro(QueryString.ord, "null")); 753 parametros.mostrarCombosPeriodos = decodeURIComponent(EvaluaParametro(QueryString.mcp, "false")); 754 parametros.mostrarFiltroPeriodo = decodeURIComponent(EvaluaParametro(QueryString.mfpu, "false")); // agregado el 09-04-2018 1:06 pm 755 parametros.mostrarCombosChange = decodeURIComponent(EvaluaParametro(QueryString.mcch, "false")); 756 parametros.mostrarSiglaExcepcion = decodeURIComponent(EvaluaParametro(QueryString.mse, "false")); 757 parametros.condicionNota = decodeURIComponent(EvaluaParametro(QueryString.cnt, "ambas")); 758 parametros.textoOriginal = decodeURIComponent(EvaluaParametro(QueryString.to, "false")); 759 parametros.omitevalorseriecero = decodeURIComponent(EvaluaParametro(QueryString.oc, "false")); 760 parametros.grid_configuracion = EvaluaParametro(parametrosExternos.gc, null); 761 parametros.D3Enabled = EvaluaParametro(parametrosExternos.d3, "false"); 762 parametros.pivotear = EvaluaParametro(parametrosExternos.piv, "false"); 763 parametros.tema = EvaluaParametro(parametrosExternos.tema, ""); 764 parametros.fue = EvaluaParametro(parametrosExternos.fue, ""); 765 parametros.ni = EvaluaParametro(parametrosExternos.ni, ""); 766 parametros.obj = EvaluaParametro(parametrosExternos.obj, ""); 767 parametros.met = EvaluaParametro(parametrosExternos.met, ""); 768 parametros.frec = EvaluaParametro(parametrosExternos.frec, ""); 769 parametros.desc = EvaluaParametro(parametrosExternos.desc, ""); 770 parametros.tematica = EvaluaParametro(parametrosExternos.tematica, ""); // Solo API v2 - Tematica para todos los metodos del api (agregado 30/04/2019) 771 parametros.secc = EvaluaParametro(parametrosExternos.secc, "1"); // 05-08-2019 cuadro 18 / secciones / 1 = 2 primeros cuadros, 2 = el restos de la información 772 parametros.modoVisualizacionLocalidades = EvaluaParametro(parametrosExternos.mvloc, "1"); // 13-05-2020 cuadro 18 / mvloc = 1 (secciones colapsables), mvloc = 2 (pestañas navegables) 773 parametros.desdeURL = true; 774 parametros.callback = parametrosExternos.callback? parametrosExternos.callback : null; 775 parametros.mostrarBotonExportacion = EvaluaParametro(QueryString.mbe, true); // 28-06-2022 Mostrar boton exportacion mbe = true / false 776 parametros.herr = EvaluaParametro(parametrosExternos.herr, null); // 09-08-2023 id herramienta opcional para setHerramienta 777 parametros.areaLocalidad = EvaluaParametro(parametrosExternos.arealoc, null); // 05-07-2024 cuadro 18 / area localidad mexico para ficha localidad de mexico en cifras 778 parametros.periodoLocalidad = EvaluaParametro(parametrosExternos.periodoloc, null); // 05-07-2024 cuadro 18 / periodo localidad mexico para ficha localidad de mexico en cifras 779 parametros.versionLocalidad = EvaluaParametro(parametrosExternos.versionloc, null); // 05-07-2024 cuadro 18 / version localidad mexico para ficha localidad de mexico en cifras
780 parametros.areaSeleccionada = EvaluaParametro(parametrosExternos.areaSeleccionada, undefined) // 30-01-2025 cuadro 13v2 - entidad seleccionada por parámetro usado por el Buscador 781 782 // se deja de usar idtema para datos de precisión hoy 14-02-2023 783 //parametros.idTema = EvaluaParametro(parametrosExternos.idtema, null); // 15-06-2021 cuadro precision / Identificador de tema para validar los datos de precision y colorear 784 785 return parametros; 786 } 787 788 /// <summary> Evalua los parametros y determina si los indicadores son de cuadro compuesto. </summary> 789 /// 790 /// <remarks> ARMANDO.ORTIZV, 23/11/2016. </remarks> 791 /// 792 /// <param name="indicadorTipo"> Tipo de indicador. </param> 793 /// <param name="tipoCuadro"> Tipo de cuadro. </param> 794 /// 795 /// <returns> . </returns> 796 this.EvaluaCondicionCuadro = function (indicadorTipo, tipoCuadro, parametros) { 797 let indicator = parametros.indicator; 798 var condicionCuadro = ""; 799 if (indicadorTipo == "b" && tipoCuadro == 1 || tipoCuadro == "4") { 800 //indicadorDepurado = indicadorValorCompuesto.todosLosIndicadores; 801 condicionCuadro = "CuadroGruposA"; 802 } 803 //if (tipoCuadro == "6" || tipoCuadro == "7" || (tipoCuadro == "12" && !isFinite(String(indicadorTipo)))) { 804 if (tipoCuadro == "6" || tipoCuadro == "7" || tipoCuadro == "14") { 805 condicionCuadro = "CuadroGruposB"; 806 // Esta validacio se agrega para el cuadro 7 cuando solo es un indicador pero que desde api trae los nombres de las datos verticales 807 // Ejemplo: "741927" 808 // 9.11.2025 809 if(tipoCuadro === "7" && indicator.indexOf("|") === -1 && indicator.indexOf("-") === -1){ 810 condicionCuadro = "CuadroNormal"; 811 } 812 } 813 if (condicionCuadro == "") 814 condicionCuadro = "CuadroNormal"; 815 if (tipoCuadro == "10") 816 condicionCuadro = "CuadroTituloAgrupado"; 817 if (tipoCuadro == "13" || tipoCuadro == "13v2") { 818 if (isFinite(String(indicadorTipo)) == true) { 819 condicionCuadro = "CuadroFichaResumen"; 820 } else { 821 condicionCuadro = "CuadroFichaResumenCompuesta"; 822 } 823 } 824 if (tipoCuadro == "12") { 825 // if (!isFinite(String(indicadorTipo))) { 826 condicionCuadro = "Cuadro12"; 827 // } else { 828 // condicionCuadro = "CuadroNormal"; 829 // } 830 } 831 //console.log(indicadorTipo) 832 if(tipoCuadro === "20"){ // cuadro #20 agregado: 30-05-2019 833 condicionCuadro = "IndicadorAgrupadoB"; 834 } 835 if(tipoCuadro === "scitel") condicionCuadro = tipoCuadro; 836 // console.log("Indicador Tipo: " + indicadorTipo + " Tipo ducadro: " + tipoCuadro + " condicion Cuadro:" + condicionCuadro); 837 return condicionCuadro; 838 } 839 840 /// <summary> Transfoma el formato anterior de area geografica en el nuevo de 5 digitos para municipales. </summary> 841 /// 842 /// <remarks> ARMANDO.ORTIZV, 23/11/2016. </remarks> 843 /// 844 /// <param name="area"> Clave de area geografica. </param> 845 /// 846 /// <returns> . </returns> 847 function FormatoAnteriorArea(area) { 848 849 var areaNueva = area; 850 var listaAreas = []; 851 var listaMunicipios = []; 852 var cadenaArea = ""; 853 // se valida si el área geográfica trae desglose
854 // Formato: desglose | clave(s) de áreas geográficas separadas por coma 855 // Ejemplo: 1|0 => desglose todos los paÃses, 1|0216 => un pais en especifico, 1|0216,0217,0218 => varios paÃses en especifico 856 // No valido: 0|0 por que es para nacional todas las entidades del paÃs 857 const refexAgeo = /^[1-9]\|(\d+)(,\d+)*$/; 858 if(refexAgeo.test(area)){ 859 areaNueva = area.replaceAll("|","_"); 860 861 } else if (area.indexOf("'") > 1 || area.indexOf("|") > -1) { 862 863 listaAreas = area.split("'"); 864 for (var i = 0; i < listaAreas.length; i++) { 865 if (listaAreas[i].indexOf("|") > -1 && listaAreas[i] !== "0|0") { 866 var strEntidad = listaAreas[i].split("|")[0]; 867 var strMunicipios = listaAreas[i].split("|")[1]; 868 listaMunicipios = strMunicipios.split(","); 869 for (var j = 0; j < listaMunicipios.length; j++) { 870 var nuevaArea = AgregarCeros(strEntidad, 2) + AgregarCeros(listaMunicipios[j], 3); 871 cadenaArea += "," + nuevaArea; 872 } 873 } else { 874 cadenaArea = "00"; 875 } 876 } 877 areaNueva = cadenaArea.replace(",", ""); 878 } else if (area === "entidades") { 879 areaNueva = "01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32"; 880 } 881 return areaNueva; 882 } 883 // Formatea valor numero de string a numero con separadores de miles "," -> Ejemplo 300000.00 -> 300,000.00 884 // agregado el dÃa 11-02-2021 885 // modificado 14-02-2021 886 function formatoNumeroMiles(n) { 887 var _n; 888 // Validacion si el valor llega con separador de miles en string y punto decimal, ademas si no hay valor se le asigna 0.00 por default 889 if(n !== ""){ 890 if(n.indexOf(",") > -1) n = n.replace(/,/g,"") 891 if(n.indexOf(".") > -1){ 892 _n = n.split(".") 893 n = _n[0] +"."+ _n[1].substr(0,2); 894 } 895 } else { 896 n = "0.00"; 897 } 898 899 n = n.replace(/,/g, ""); 900 var s = n.split(".")[1]; 901 (s) 902 ? s = "." + s 903 : n.indexOf(".") >= 0 904 ? s = "." 905 : s = ""; 906 n = n.split(".")[0]; 907 while (n.length > 3) { 908 s = "," + n.substr(n.length - 3, 3) + s; 909 n = n.substr(0, n.length - 3); 910 } 911 return n + s; 912 } 913 914 915 /// <summary> Genera plantilla e inicializa el componente. </summary> 916 /// 917 /// <remarks> ARMANDO.ORTIZV, 23/11/2016. </remarks> 918 /// 919 /// <param name="parametros"> Objeto de configuracion de parametros. </param> 920 /// <param name="contenedorCuadro"> Nombre del contenedor. </param> 921 /// 922 /// <returns> . </returns> 923 this.CallService = function (parametros, contenedorCuadro) { 924 // parametros que se incializan internamente 925 // configura(null).init(); 926 var parametrosOrig = {}; 927 if (parametros.mcp == "true" || parametros.mfpu === "true") 928 parametrosOrig = parametros; 929 if (!parametros.desdeURL) 930 parametros = this.CargarParametros(parametros); 931 parametros.isLocalhost = window.location.hostname.indexOf("localhost") !== -1 ? true : false; // permite saber si se esta ejecutando en localhost (return true/false) 932 933 parametros.areaGeografica = FormatoAnteriorArea(parametros.areaGeografica); 934 // parametros.areaGeografica = parametros.areaGeografica.replace(/-/g, "'"); 935 parametros.contenedorCuadro = contenedorCuadro;
936 parametros.dominioCuadro = C_dominioBuscador; 937 var ariaLabel = "Cuadro de información"; // etiqueta para el cuadro 938 //10.1.32.127 939 //if (window.location.href.indexOf("http://internetpwww.inegi.org.mx/temas/") > -1 || window.location.href.indexOf("http://w-webinterpre1/temas/") > -1) 940 // parametros.direccionServicio = C_direccionServicioMan; 941 //else 942 parametros.direccionServicio = C_direccionServicio + extension_api_cuadros; 943 parametros.subdominioIngles = location.hostname.indexOf("en") > -1? "en." : ""; 944 // --------------------TEST------------ 945 //parametros.direccionServicio = "http://localhost:3782/API.svc"; 946 947 948 parametros.indicadorValorCompuesto = {}; 949 950 var _this = this; 951 952 parametros.token = "563cbaa8-58bb-fef8-6763-1f1dae318f99"; 953 parametros.esOportuno = "null"; 954 parametros.formatoAreaGeografica = (parametros.areaGeografica === "entidades") ? "0|0" : "null"; 955 parametros.indicadorDepurado = ""; 956 parametros.filtraPeriodos = false; 957 if (parametros.mostrarCombosPeriodos == "true") 958 parametros.filtraPeriodos = ValidaCasosFiltraPeriodo(parametros); 959 960 parametros.condicionCuadro = ""; 961 parametros.tipoFooter = _this.EvaluaFooter(parametros.muestraNota, parametros.muestraFuente); 962 var dummyHeader = ""; 963 if (parametros.tipoCuadro == "7" || parametros.tipoCuadro == "6" || parametros.tipoCuadro == "14") 964 dummyHeader = '<thead id="dummyHeader' + contenedorCuadro + '"></thead>'; 965 var combosHtml = ""; 966 if (parametros.filtraPeriodos) { 967 968 combosHtml = '<div id="divCmbPeriodos' + contenedorCuadro + '" style="width:100%; padding-right:15px; padding-left:15px;"><div class="row">' 969 + '<div class="col-md-12 col-sm-12 col-xs-12" style="padding:4px;"> ' 970 + '<table class="pull-left"><tr>' 971 + '<td>' 972 + '<label> Periodo desde: </label>' 973 + '</td><td>' 974 + '<select id="cmbPI' + contenedorCuadro + '" class="form-control text-right"></select>' 975 + '</td>' 976 + '<td>' 977 + '<label> hasta: </label>' 978 + '</td><td>' 979 + '<select id="cmbPF' + contenedorCuadro + '" class="form-control text-right"></select>' 980 + '</td>' 981 + '</tr></table>' 982 + '</div>' 983 + '</div></div>' 984 + '<div id="hideConf' + contenedorCuadro + '" style="display:none;">' + JSON.stringify(parametrosOrig) + '</div>' 985 986 } else if (parametros.mostrarFiltroPeriodo === "true") { // Un combo filtro por periodo (agregado 09-04-2018 1:06 pm) 987 combosHtml = '<div id="divCmbPeriodos' + contenedorCuadro + '" style="width:100%; padding-right:15px; padding-left:15px;"><div class="row">' 988 + '<div class="col-md-12 col-sm-12 col-xs-12"> ' 989 + '<table style="float:left"><tr>' 990 + '<td>' 991 + '<label>Periodo:</label> ' 992 + '</td><td>' 993 + '<select id="cmbPeriodoFiltro' + contenedorCuadro + '" class="form-control text-right"></select>' 994 + '</td>' 995 + '<td>' 996 + '</tr></table>' 997 + '</div>' 998 + '</div></div>' 999 + '<div id="hideConf' + contenedorCuadro + '" style="display:none;">' + JSON.stringify(parametrosOrig) + '</div>' 1000 } 1001 1002 //add class to sticky header tables 1003 var clsStickyHeader = ""; 1004 //if (parametros.tipoCuadro === "14" || parametros.tipoCuadro === "7") { 1005 // clsStickyHeader = "sticky-header"; 1006 //} 1007 var contenedor = document.getElementById(contenedorCuadro); 1008 contenedor.innerHTML = ""; 1009 contenedor.innerHTML += ' <label id="lblMensaje' + contenedorCuadro + '" style="height:1px;display:none;width:100%;"></label>'; 1010 contenedor.innerHTML += ' <div id="divCargaCuadro' + contenedorCuadro + '" style="height:100px;" >' 1011 + ' <img src="/img/cargando.gif" style="display: block; margin: 0 auto; " /> ' 1012 1013 //+ ' <img src="' + parametros.dominioCuadro + '/sistemas/componentes/biinegi/grafica/tree/img/carga.gif" style="display: block; margin: 0 auto; " /> ' 1014 //+' <label style="display: block; margin: 0 auto; text-align:center"> Cargando Información...</label>' 1015 + '</div>' 1016 + combosHtml; 1017 1018 contenedor.innerHTML += '<table class="TablaEnc" id="TableHeader' + contenedorCuadro + '" ><tbody><tr id="RowHeader' + contenedorCuadro + '">' 1019 //contenedor.innerHTML += tableCombos; 1020 1021 + '<th id="CellHeaderTitle' + contenedorCuadro + '" class="encabezado" style="width:100%; display:none" ></th>' 1022 // + '<th id="CellHeaderShare' + contenedorCuadro + '" class="encabezado" align="right" style="width:10%;display:none">
1022<input type="image" name="btnShare" id="btnShare' + contenedorCuadro + '" data-toggle="modal" data-target="#myModal' + contenedorCuadro + '" src="" style="visibility: visible;"></th>' 1023 + '</tr></tbody></table>' 1024 + '<table id="TableEspacio' + contenedorCuadro + '" style="height: 5px"><tr><td></td></tr></table>' 1025 + '<div id="divDatos' + contenedorCuadro + '" style="width: 100%; padding: 1px;" class="table-responsive table-responsive-ignoreborder" data-pattern="priority-columns" tabindex="'+parametros.tabInd+'" aria-label="'+ ariaLabel +'">' 1026 + ' <table id="tableStat' + contenedorCuadro + '" class="table table-small-font table-bordered table-striped ' + clsStickyHeader + '" style="width: 100%; float: left; ">' + dummyHeader + '<tbody id="dummyBody' + contenedorCuadro + '"></tbody></table></div>'; 1027 // + ((parametros.tipoCuadro != "errorbar")? ' <table id="tableStat' + contenedorCuadro + '" class="table table-small-font table-bordered table-striped ' + clsStickyHeader + '" style="width: 100%; float: left; ">' + dummyHeader + '<tbody id="dummyBody' + contenedorCuadro + '"></tbody></table></div>' : ''); 1028 //+ ' <table id="tableNota'+contenedorCuadro+'" style="width: 100%;"><tr><td></td></tr></table>' 1029 //+ ' <table id="tableFuentes'+contenedorCuadro+'" style="width: 100%;"><tr><td></td></tr></table>' 1030 if (parametros.tipoFooter != "noFooter") { 1031 contenedor.innerHTML += _this.FooterGrafica(parametros.tipoFooter, contenedorCuadro, parametros); 1032 } 1033 /* contenedor.innerHTML += '</div>' 1034 + '<div id="myModal' + contenedorCuadro + '" class="modal fade" tabindex="-1" role="dialog" aria-hidden="true">' 1035 + ' <div class="modal-dialog">' 1036 + ' <div class="modal-content">' 1037 + ' <div class="modal-header">' 1038 + ' <table width="100%">' 1039 + ' <tr> <td align="left" width="80%">' 1040 + ' <p>Banco de Información INEGI</p> </td>' 1041 + ' <td align="right" width="20%">' 1042 + ' <button type="button" class="btn bt btn-default" data-dismiss="modal" aria-hidden="true">Cerrar</button></td>' 1043 + ' </tr> </table> </div>' 1044 + ' <div class="modal-body">' 1045 + ' <table id="TableShare' + contenedorCuadro + '" BorderWidth="0" CellPadding="0" CellSpacing="0" runat="server">' 1046 + ' <tr> <th id="TableWiget"' + contenedorCuadro + '></th>' 1047 + ' <th> <p>Agregue este <i>widget</i> a su página Web</p>' 1048 + ' <p style="text-align: justify">' 1049 + ' Descripción: Obtiene los indicadores económicos y sus datos actualizados al momento de la consulta. Se puede obtener mayor información del indicador al darle clic en su vÃnculo.</p>' 1050 + ' <p class="text-left">' 1051 + ' <br /> Seleccione, copie y pegue este código en su página web' 1052 + ' <textarea id="TACodeWidget' + contenedorCuadro + '" style="font-size: 8pt; width: 100%;" rows="10" cols="35" runat="server"></textarea> </p>' 1053 + ' </th> </tr> </table> </div> </div> </div> </div>' */ 1054 1055 if (parametros.indicator != "" || (parametros.indicator === "" && parametros.tipoCuadro === "scitel")) { 1056 var lblMensaje = document.getElementById("lblMensaje" + contenedorCuadro); 1057 lblMensaje.innerHTML = ""; 1058 lblMensaje.style.display = "none"; 1059 /* if (parametros.muestraShare == "1") 1060 document.getElementById("btnShare" + contenedorCuadro).style.visibility = "visible"; */ 1061 if (parametros.tipoCuadro == "4") 1062 parametros.areaGeografica = "00000"; 1063 parametros.indicadorTipo = Array.isArray(parametros.indicator) ? parametros.indicator : parametros.indicator.charAt(0);
1064 parametros.condicionCuadro = _this.EvaluaCondicionCuadro(parametros.indicadorTipo, parametros.tipoCuadro, parametros); 1065 switch (parametros.condicionCuadro) { 1066 case "CuadroGruposA": 1067 parametros.indicadorValorCompuesto = IndicadorCompuesto(parametros.indicator); 1068 parametros.indicadorDepurado = parametros.indicadorValorCompuesto.todosLosIndicadores; 1069 break; 1070 case "CuadroGruposB": 1071 parametros.indicadorValorCompuesto = IndicadorCompuestoB(parametros.indicator); 1072 parametros.indicadorDepurado = parametros.indicadorValorCompuesto.todosLosIndicadores; 1073 break; 1074 case "CuadroGruposC": 1075 parametros.indicadorValorCompuesto = IndicadorCompuestoC(parametros.indicator); 1076 parametros.indicadorDepurado = parametros.indicadorValorCompuesto.todosLosIndicadores; 1077 case "Cuadro12": /// exclusivo para procesar los indicadores de cuadro 12 - Mex Cifras 1078 parametros.indicadorValorCompuesto = IndicadorCompuestoCuadro12(parametros.indicator); 1079 parametros.indicadorDepurado = parametros.indicadorValorCompuesto.todosIndicadores; 1080 break; 1081 case "CuadroNormal": 1082 parametros.indicadorDepurado = parametros.indicator; 1083 break; 1084 case "CuadroFichaResumen": 1085 parametros.indicadorDepurado = parametros.indicator; 1086 break; 1087 case "CuadroFichaResumenCompuesta": //con indicador compuesto 1088 parametros.indicadorValorCompuesto = IndicadorUnicoCompuesto(parametros.indicator); 1089 parametros.indicadorDepurado = parametros.indicadorValorCompuesto.indicadorDepurado; 1090 break; 1091 case "IndicadorAgrupadoB": // cuadro #20 Agregado: 30-05-2019 1092 parametros.indicadorValorCompuesto = IndicadorAgrupadoB(parametros.indicator); 1093 parametros.indicadorDepurado = parametros.indicadorValorCompuesto.todosLosIndicadores; 1094 break; 1095 case "scitel": // cuadro #scitel Agregado: 12-07-2025 1096 let aMergedIndCara = []; 1097 // console.log("debug scitel") 1098 // Si llegan caracteristicas de la localidad unir con el arreglo de indicadores 1099 if(parametros.caracteristicas !== null){ 1100 aMergedIndCara = [...parametros.caracteristicas, ...parametros.indicator]; 1101 parametros.indicator = aMergedIndCara; 1102 } 1103 1104 parametros.indicadorValorCompuesto = parametros.indicator; 1105 // todos los indicadores sin repetir 1106 parametros.indicadorDepurado = parametros.indicator.map(i => i.indicador); 1107 let aIndicadores = []; 1108 parametros.indicator.forEach((i, idx) => { 1109 let iInd = parseInt(i.indicador); 1110 if(aIndicadores.indexOf(iInd) === -1) aIndicadores.push(iInd) 1111 }) 1112 parametros.indicadorDepurado = aIndicadores; 1113 // obtiene todos los temas sin repetir 1114 // debug scitel 1115 let aTemas = []; 1116 parametros.indicator.forEach((i, idx) => { 1117 let iTema = parseInt(i.tema); 1118 // if(aTemas.indexOf(iTema) === -1) aTemas.push({tema:i.tema, nombre:i.nombreTema}) 1119 if(aTemas.find((t) => {return parseInt(t.tema) === iTema}) === undefined) aTemas.push({tema:i.tema, nombre:i.nombreTema}) 1120 }) 1121 // console.log("------") 1122 parametros.temaDepurado = aTemas; 1123 break; 1124 default: 1125 break; 1126 } 1127 if (parametros.mostrarCombosPeriodos == "true" || parametros.mostrarFiltroPeriodo == "true") { 1128 if (ValidaCasosFiltraPeriodo(parametros)) { 1129 ConsultaFrecuenciaPeriodos(parametros, contenedorCuadro); 1130 } 1131 else {
1132 // irACuadro(parametros, contenedorCuadro); 1133 this.revisaHerramienta(parametros, () => { 1134 irACuadro(parametros, contenedorCuadro); 1135 }); 1136 } 1137 } else 1138 // irACuadro(parametros, contenedorCuadro); 1139 this.revisaHerramienta(parametros, () => { 1140 irACuadro(parametros, contenedorCuadro); 1141 }); 1142 // inicia ir al cuadro 1143 //switch (parametros.condicionCuadro) { 1144 // case "CuadroGruposA": 1145 // parametros.indicadorValorCompuesto = IndicadorCompuesto(parametros.indicator); 1146 // parametros.indicadorDepurado = parametros.indicadorValorCompuesto.todosLosIndicadores; 1147 // break; 1148 // case "CuadroGruposB": 1149 // parametros.indicadorValorCompuesto = IndicadorCompuestoB(parametros.indicator); 1150 // parametros.indicadorDepurado = parametros.indicadorValorCompuesto.todosLosIndicadores; 1151 // break; 1152 // case "CuadroNormal": 1153 // parametros.indicadorDepurado = parametros.indicator; 1154 // break; 1155 // default: 1156 // break; 1157 //} 1158 //switch (parametros.tipoCuadro) { 1159 // case "6": 1160 // parametros.esOportuno = "1"; 1161 // break; 1162 // case "3": 1163 // parametros.esOportuno = "1"; 1164 // break; 1165 // default: 1166 // parametros.esOportuno = parametros.datoOportunoParametro; 1167 // break; 1168 //} 1169 1170 1171 //if (parametros.indicadorDepurado.length < 200) { 1172 // $.getJSON(parametros.direccionServicio + '/ValorIndicador/' + parametros.indicadorDepurado + "/" + parametros.areaGeografica + '/null/' + parametros.idioma + '/null/null/3/' + parametros.orden + '/' + parametros.nombreCorto + '/' + parametros.esOportuno + '/' + parametros.fe
1172chaInicio + '/' + parametros.fechaFin + "/" + parametros.formatoAreaGeografica + '/json/563cbaa8-58bb-fef8-6763-1f1dae318f99?callback=?', null, function (data) { 1173 // switch (parametros.condicionCuadro) { 1174 // case "CuadroGruposA": 1175 // CasoCompuesto(data, parametros); 1176 // break; 1177 1178 // default: 1179 // CasosCuadro(data, parametros); 1180 // break; 1181 // } 1182 // }); 1183 //} 1184 //else { 1185 // ConsultaPostIndicadores(parametros); 1186 //} 1187 // fin ir al cuadro 1188 } else if(parametros.tipoCuadro === "18"){ // localidades #18 1189 irACuadro(parametros, contenedorCuadro); 1190 // this.revisaHerramienta(parametros, () => { 1191 // irACuadro(parametros, contenedorCuadro); 1192 // }); 1193 } else { 1194 var lblMensaje = document.getElementById("lblMensaje" + parametros.contenedorCuadro); 1195 OcultaCarga(parametros); 1196 lblMensaje.innerHTML = "No se proporcionaron parametros para generar el cuadro"; 1197 lblMensaje.style.display = ""; 1198 var TableHeader = document.getElementById("TableHeader" + contenedorCuadro); 1199 TableHeader.style.display = "none"; 1200 1201 } 1202 } 1203 1204 /// <summary> Determina que casos de cuadro pueden implementar filtros de periodos. </summary> 1205 /// 1206 /// <remarks> ARMANDO.ORTIZV, 23/11/2016. </remarks> 1207 /// 1208 /// <param name="parametros"> The parametros. </param> 1209 /// 1210 /// <returns> . </returns> 1211 function ValidaCasosFiltraPeriodo(parametros) { 1212 var filtraPeriodos = false; 1213 switch (parametros.tipoCuadro) { 1214 case '1': 1215 case '2': 1216 case '6'://nuevo modificacion:09-04-2018 11:17 (solo un periodo) 1217 case '5': 1218 case '7': 1219 case '8': 1220 case 'precision': 1221 case 'precision2': 1222 case 'precision3': 1223 filtraPeriodos = true; 1224 break; 1225 default: 1226 filtraPeriodos = false; 1227 break; 1228 } 1229 return filtraPeriodos; 1230 } 1231 1232 /// <summary> Consulta periodicidad. </summary> 1233 /// 1234 /// <remarks> ARMANDO.ORTIZV, 23/11/2016. </remarks> 1235 /// 1236 /// <param name="parametros"> Objeto de configuracion de parametros. </param> 1237 /// <param name="contenedor"> Nombre del contenedor. </param> 1238 /// 1239 /// <returns> . </returns> 1240 function ConsultaFrecuenciaPeriodos(parametros, contenedor) { 1241 if (parametros.mostrarFiltroPeriodo === "true") { // si true: se muestra el combo por periodo pero solamente 1242 //anual 1243 parametros.ocurrencias = 10; 1244 ConsultaPeriodos(parametros, contenedor); 1245 } else { 1246 var dirMetodo = '/CatalogoFrecuencias/' + parametros.areaGeografica + '/' + parametros.idioma + '/null/null/' + parametros.indicadorDepurado + '/json/' + parametros.token; 1247 $.getJSON(parametros.direccionServicio + dirMetodo + "?callback=?", null, function (data) { 1248 ValidaFrecuenciaPeriodos(data, parametros, contenedor); 1249 }); 1250 } 1251 } 1252 1253 /// <summary> Obtiene la cantidad de ocurrencias por periodicidad. </summary> 1254 /// 1255 /// <remarks> ARMANDO.ORTIZV, 23/11/2016. </remarks> 1256 /// 1257 /// <param name="data"> Datos de la periodicidad en formato JSON. </param> 1258 /// <param name="parametros"> Objeto de parametros de configuracion. </param> 1259 /// <param name="contenedor">
1259 Nombre del contenedor. </param> 1260 /// 1261 /// <returns> . </returns> 1262 function ValidaFrecuenciaPeriodos(data, parametros, contenedor) { 1263 if (data.ErrorCode == undefined) { 1264 switch (data[0].NOMBRE_FRECUENCIA) { 1265 case 'Anual': 1266 parametros.ocurrencias = 10; 1267 break; 1268 case 'Mensual': 1269 parametros.ocurrencias = 2; 1270 break; 1271 case 'Trimestral': 1272 parametros.ocurrencias = 3; 1273 break; 1274 case 'Quincenal': 1275 parametros.ocurrencias = 2; 1276 break; 1277 case 'Quinquenal': 1278 parametros.ocurrencias = 10; 1279 break; 1280 default: 1281 break; 1282 } 1283 ConsultaPeriodos(parametros, contenedor); 1284 } 1285 else { 1286 console.log(data); 1287 } 1288 } 1289 1290 function ConsultaPeriodos(parametros, contenedor) { 1291 var dirMetodo = ""; 1292 var tematica = ""; 1293 var direccion = parametros.direccionServicio; 1294 if (API_V == "v1_2") { // si esta habilitado el uso del api v2 1295 tematica = (parametros.tematica != "" ? parametros.tematica + "/" : "null/"); 1296 direccion = C_direccionServicio_V + "_" + API_V.toLowerCase() + "/"; 1297 } else if(API_V == "v1_1"){ 1298 // No se hace nada 1299 } else { // API VERSION 3 FINAL 1300 tematica = (parametros.tematica != "" ? parametros.tematica + "/" : "undefined/"); 1301 direccion = C_direccionServicio_V + "_" + API_V.toLowerCase() + "/"; 1302 } 1303 if (parametros.indicadorDepurado.length > 200) { 1304 //Parche temporal para hacer la peticion con solo 21 indicadores si llegasen a ser demasiados (agregado: 11-04-2018 2:39) hacer metodo en api para POST 1305 var aIndicadores = parametros.indicadorDepurado.split(","); 1306 var sTmpIndicadores = "", aTmpIndicadores = []; 1307 for (var x = 0; x < aIndicadores.length; x++) { 1308 if (x < 22) aTmpIndicadores.push(aIndicadores[x]); 1309 } 1310 var indicadorDepurado = aTmpIndicadores.join(","); 1311 dirMetodo = 'PeriodoA/' + parametros.areaGeografica + '/null/null/' + parametros.idioma + '/0/0/' + indicadorDepurado + '/null/null/null/' + tematica +'json/' + parametros.token; 1312 } else { 1313 dirMetodo = 'PeriodoA/' + parametros.areaGeografica + '/null/null/' + parametros.idioma + '/0/0/' + parametros.indicadorDepurado + '/null/null/null/' + tematica +'json/' + parametros.token; 1314 } 1315 1316 1317 $.getJSON(direccion + dirMetodo + "?callback=?", null, function (data) { 1318 if (parametros.mostrarFiltroPeriodo === "true") { 1319 CalculaLimiteFiltroPeriodo(data, parametros, contenedor); 1320 } else { 1321 CalculaLimitePeriodos(data, parametros, contenedor); 1322 } 1323 }); 1324 } 1325 1326 /// <summary> Coloca combos de inicio y fin de los periodos, fija la cantidad de periodos mostrados. </summary> 1327 /// 1328 /// <remarks> ARMANDO.ORTIZV, 23/11/2016. </remarks> 1329 /// 1330 /// <param name="data"> Datos de los años de consulta en JSON. </param> 1331 /// <param name="parametros"> Objeto de parametros de configuracion. </param> 1332 /// <param name="contenedor"> Nombre del contenedor. </param> 1333 /// 1334 /// <returns> . </returns> 1335 function CalculaLimitePeriodos(data, parametros, contenedor) { 1336 if (data.ErrorCode == undefined) { 1337 var ultimoPeriodo = parseInt(data[data.length - 1]); 1338 var periodoPrimero = parseInt(data[0]); 1339 var indexPeriodo = data.length - parametros.ocurrencias; 1340 if (indexPeriodo >= 0) { 1341 periodoPrimero = parseInt(data[indexPeriodo]) 1342 var cmbPIitem = document.getElementById("cmbPI" + contenedor); 1343 var cmbPFitem = document.getElementById("cmbPF" + contenedor); 1344
1345 fillcomboperiods(data, cmbPIitem, periodoPrimero.toString()); 1346 fillcomboperiods(data, cmbPFitem, ultimoPeriodo.toString()); 1347 if (parametros.mostrarCombosChange == "false") { 1348 parametros.fechaInicio = periodoPrimero; 1349 parametros.fechaFin = ultimoPeriodo; 1350 } 1351 else { 1352 cmbPIitem.value = parametros.fechaInicio; 1353 cmbPFitem.value = parametros.fechaFin; 1354 } 1355 var hiddenConfig = JSON.parse(document.getElementById('hideConf' + contenedor).innerHTML); 1356 cmbPIitem.onchange = function () { 1357 changeComboCuadroEventCuadroComponente(hiddenConfig, contenedor); 1358 } 1359 1360 cmbPFitem.onchange = function () { 1361 changeComboCuadroEventCuadroComponente(hiddenConfig, contenedor); 1362 } 1363 1364 } 1365 else { 1366 document.getElementById("divCmbPeriodos" + contenedor).style.display = "none"; 1367 } 1368 irACuadro(parametros, contenedor); 1369 // $(".dropdown-toggle").dropdown(); 1370 } 1371 else { 1372 console.log(data); 1373 } 1374 } 1375 1376 /// <summary> Coloca el filtro - combo con el minimo y maximo periodo. </summary> 1377 /// 1378 /// <remarks> jose.valles, 09/04/2018. </remarks> 1379 /// 1380 /// <param name="data"> Datos de los años de consulta en JSON. </param> 1381 /// <param name="parametros"> Objeto de parametros de configuracion. </param> 1382 /// <param name="contenedor"> Nombre del contenedor. </param> 1383 /// 1384 /// <returns> . </returns> 1385 function CalculaLimiteFiltroPeriodo(data, parametros, contenedor) { 1386 if (data.ErrorCode == undefined) { 1387 var ultimoPeriodo = parseInt(data[data.length - 1]); 1388 //var periodoPrimero = parseInt(data[0]); 1389 //console.log(parametros.ocurrencias); 1390 //var indexPeriodo = parametros.ocurrencias -data.length; 1391 //if (indexPeriodo >= 0) { 1392 periodoPrimero = parseInt(data[0]) 1393 var cmbPeriodoFiltro = document.getElementById("cmbPeriodoFiltro" + contenedor); 1394 fillcomboperiods(data, cmbPeriodoFiltro, ultimoPeriodo.toString()); 1395 //if (parametros.mostrarCombosChange == "false") {
1396 // parametros.fechaInicio = periodoPrimero; 1397 // parametros.fechaFin = ultimoPeriodo; 1398 //} 1399 // else { 1400 if (parametros.fechaFin !== "null") { 1401 cmbPeriodoFiltro.value = parametros.fechaFin; 1402 } else { 1403 cmbPeriodoFiltro.value = ultimoPeriodo; 1404 } 1405 //} 1406 var hiddenConfig = JSON.parse(document.getElementById('hideConf' + contenedor).innerHTML); 1407 cmbPeriodoFiltro.onchange = function () { 1408 eventChangeFiltroCuadro(hiddenConfig, contenedor); 1409 } 1410 1411 //} 1412 //else { 1413 // document.getElementById("divCmbPeriodos" + contenedor).style.display = "none"; 1414 //} 1415 irACuadro(parametros, contenedor); 1416 // $(".dropdown-toggle").dropdown(); 1417 } 1418 else { 1419 console.log(data); 1420 } 1421 } 1422 1423 /// <summary> Dibuja combos de periods. </summary> 1424 /// 1425 /// <remarks> ARMANDO.ORTIZV, 23/11/2016. </remarks> 1426 /// 1427 /// <param name="data"> Datos de periodos en JSON. </param> 1428 /// <param name="combo"> Objeto combobox. </param> 1429 /// <param name="valorSeleccionado"> Valor seleccionado. </param> 1430 /// 1431 /// <returns> . </returns> 1432 function fillcomboperiods(data, combo, valorSeleccionado) { 1433 1434 for (var i = 0; i < data.length; i++) { 1435 generateitemscombo(combo, data[i], data[i]); 1436 if (data[i] === valorSeleccionado) { 1437 combo.selectedIndex = i; 1438 } 1439 } 1440 } 1441 1442 /// <summary> Agrega elementos option al combobox. </summary> 1443 /// 1444 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 1445 /// 1446 /// <param name="select"> Combobox de html. </param> 1447 /// <param name="textValue"> Texto del valor. </param> 1448 /// <param name="valValue"> Valor. </param> 1449 /// 1450 /// <returns> . </returns> 1451 function generateitemscombo(select, textValue, valValue) { 1452 var option = document.createElement('option'); 1453 option.text = textValue; 1454 option.value = valValue; 1455 // option.setAttribute("Ver_Tema", ver_tema); 1456 select.appendChild(option, 0); 1457 } 1458 1459 /// <summary> Consulta valores del cuadro por HTTP GET o POST. </summary> 1460 /// 1461 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 1462 /// 1463 /// <param name="parametros"> Objeto de parametros de configuracion. </param> 1464 /// <param name="contenedor"> Contenedor del componente. </param> 1465 /// 1466 /// <returns> . </returns> 1467 function irACuadro(parametros, contenedor) { 1468 1469 switch (parametros.tipoCuadro) { 1470 case "2": 1471 if (parametros.orden == "ai") { 1472 parametros.typeChart = 5; 1473 } 1474 break; 1475 case "1": // Validacion de tc 1 para ultimo periodo (agregado: 19-08-2019) 1476 case "6":
1477 if (parametros.fechaInicio !== "null" && parametros.fechaFin !== "null") { 1478 parametros.esOportuno = "null"; 1479 } else { 1480 parametros.esOportuno = "1"; 1481 if(parametros.tipoCuadro === "1" && parametros.orden == "null"){ 1482 parametros.orden = "n"; 1483 } 1484 } 1485 break; 1486 case "12": 1487 parametros.esOportuno = "1"; 1488 break; 1489 case "3": 1490 case "21": 1491 parametros.esOportuno = "1"; 1492 if (parametros.datoOportunoParametro == 0) { 1493 parametros.datoOportunoParametro = "null"; 1494 parametros.esOportuno = "null"; 1495 } 1496 break; 1497 case "14": 1498 case "15": 1499 parametros.typeChart = 3; 1500 parametros.orden = "af" 1501 break; 1502 case "precision": 1503 parametros.esOportuno = "null"; 1504 break; 1505 case "precision2": 1506 case "precision3": 1507 parametros.esOportuno = "1"; 1508 break; 1509 default: 1510 parametros.esOportuno = parametros.datoOportunoParametro; 1511 break; 1512 } 1513 if (parametros.datoOportunoParametro != "null") { 1514 parametros.esOportuno = parametros.datoOportunoParametro; 1515 } 1516 if (parametros.tipoCuadro == "8" && parametros.D3Enabled === "true") { // 21-01-2019 cuadro 8 D3 enabled llamada a sdmx 1517 1518 var periodos = (parametros.periodoInicio === "null" || parametros.periodoInicio === undefined) ? "" : '?startPeriod=' + parametros.fe
1518chaInicio + '-01-01&endPeriod=' + parametros.fechaFin + '-01-01' 1519 var notas = parametros.ni; 1520 var url = ""; 1521 if(parametros.indicadorDepurado.indexOf("ODS") > -1){ // DATOS DE LA ODS (agregado: 11 abril 2019) 1522 //parametros para desarrollo sustentable 1523 var objetivo = parametros.obj; 1524 var meta = parametros.met; 1525 var submeta = parametros.indicadorDepurado; 1526 var area = parametros.areaGeografica; 1527 var frecuencia = parametros.frec; 1528 var descripcion = parametros.desc; 1529 var fuente = parametros.fue; 1530 url = "http://10.200.3.98/intraDisseminationNSIService/rest/data/TN1,DF_ODS_ZERO_HUNGER_GOAL_2_1,1.0/"+objetivo+"."+meta+"."+submeta+"."+area+"."+frecuencia+"."+descripcion+"."+fuente+".."; 1531 // url = "http://10.200.3.98/intraDisseminationNSIService/rest/data/TN1,DF_ODS_ZERO_HUNGER_GOAL_2_1,1.0/ODS0020.ODS00200005.ODS002000050030.00....."; 1532 } else { // DATOS DE SDMX 1533 url = C_dominioBuscador + 'app/api/indicadores/desarrolladores/sdmx/rest/data/INEGI,BISE,1.0/' + parametros.indicadorDepurado + '..' + notas + '.' + parametros.fue + '.' + parametros.areaGeografica + '.' + parametros.tema + "" + periodos; 1534 } 1535 $.ajax({
1536 url: url, 1537 jsonpCallback: 'callback', 1538 headers: { 1539 "Accept": "application/json", 1540 "Accept-Language": "es-ES" 1541 } 1542 }).done(function (data) { 1543 CasosCuadro(data, parametros); 1544 }); 1545 1546 1547 } else if (parametros.tipoCuadro == "13v2" || parametros.tipoCuadro == "13" || parametros.tipoCuadro == "16") { // solo para el cuadro 13: ficha resumen para area geografica 1548 var objDatosGeograficos = {}; 1549 // consulta detalles areaGeografica por area geografica 1550 var direccionServicio = parametros.direccionServicio; 1551 var tematica = ""; 1552 if (API_V == "v1_2") { 1553 tematica = (parametros.tematica != "" ? parametros.tematica + "/" : "null/"); 1554 direccionServicio = C_direccionServicio_V + "_" + API_V.toLowerCase() + "/"; 1555 } else if(API_V == "v1_1"){ 1556 // No se hace nada 1557 } else { // API VERSION 3 FINAL 1558 tematica = (parametros.tematica != "" ? parametros.tematica + "/" : "undefined/"); 1559 direccionServicio = C_direccionServicio_V + "_" + API_V.toLowerCase() + "/"; 1560 } 1561 1562 if(parametros.tipoCuadro == "13v2"){ // por lo pronto solo se omite el llamado a MetadatoIndicador por que no usa los datos 1563 var metodoVersionAreaGeografica = "CatalogoAreaGeograficaV3"; 1564 var desgloseGeografico = "null"; 1565 tematica = "6/"; 1566 var dirAreaGeo = direccionServicio + 'API.svc/'+ metodoVersionAreaGeografica +'/' + parametros.areaGeografica + '/null/null/'+ desgloseGeografico +'/' + tematica +'1/json/' + parametros.token; 1567 1568 var objDatosGeograficos = {}; 1569 $.getJSON(dirAreaGeo, function (dataArea) { 1570 var aGN = parametros.areaGeografica; 1571 1572 var urlBase = C_direccionServicio.split("/app")[0]+"/"; 1573 if(aGN != "00" && aGN != "0"){ 1574 var ageoTempoEUM = ""; 1575 1576 if (aGN.length == 2) { 1577 ageoTempoEUM = aGN; 1578 } else { 1579 var ageoTempoSiguentes = aGN.length >= 8 ? aGN.substring(6, 8) : ""; 1580 var ageoTempoSiguentes1 = aGN.length == 12 ? aGN.substring(9, 12) : ""; 1581 ageoTempoEUM = ageoTempoSiguentes + ageoTempoSiguentes1; 1582 1583 if(ageoTempoEUM == ""){ 1584 ageoTempoEUM = aGN; 1585 } 1586 } 1587 // Actualización: 05-feb-2021 1588 // Descripción: El config hace la concatenacion del idioma al resto de la url del api. 1589 //México en cifras - informacion de localidades 1590 // Fecha: 01-03-2023 1591 CatemlLocalidades(urlBase, objDatosGeograficos, [], dataArea, parametros, ageoTempoEUM); 1592 1593 } else { 1594 // peticion para obtener el valor del primer objeto para nacional 1595 // dato corresponde a municipio y demarcaciones territoriales 1596 // modificado: 18-04-2023 1597 // fetch(urlBase+"app/api/cateml/catuniAPI/ObtenerFecCorMun/",{method:"GET",mode:"no-cors", headers:{"Content-Type": "application/json"}}) 1598 getFechaReferenciaActualizacion(function(aFecCorMun){ 1599 1600 // objDatosGeograficos.indicator = []; 1601 $.extend(objDatosGeograficos, dataArea[0], {demarcaciones_territoriales:aFecCorMun[0].valor,referencia_actualizacion:aFecCorMun[0].nombre}); 1602 CasosCuadro(objDatosGeograficos, parametros); 1603 1604 }) 1605 1606 } 1607 }); 1608 } else { 1609 1610 var dirIndicador = direccionServicio + 'API.svc/MetadatoIndicador/' + parametros.idioma + '/' + parametros.indicadorDepurado + '/' + parametros.areaGeografica + '/null/null/null/' + tematica +'json/' + parametros.token; 1611 $.getJSON(dirIndicador, function (dataIndicador) { 1612 if (dataIndicador.ErrorCode !== undefined) { 1613 OcultaCarga(parametros);
1614 MostrarMensajeErrorCuadro(parametros.contenedorCuadro, dataIndicador.ErrorCode, dataIndicador.ErrorInfo); 1615 } else { 1616 // consulta detalles areaGeografica por area geografica 1617 var metodoVersionAreaGeografica = "CatalogoAreaGeograficaV3"; 1618 // var desgloseGeografico = 3; 1619 var desgloseGeografico = "null"; 1620 tematica = "6/"; 1621 var dirAreaGeo = direccionServicio + 'API.svc/'+ metodoVersionAreaGeografica +'/' + parametros.areaGeografica + '/null/null/'+ desgloseGeografico +'/' + tematica +'1/json/' + parametros.token; 1622 1623 var objDatosGeograficos = {}; 1624 $.getJSON(dirAreaGeo, function (dataArea) { 1625 var aGN = parametros.areaGeografica; 1626 1627 var urlBase = C_direccionServicio.split("/app")[0]+"/"; 1628 if(aGN != "00" && aGN != "0"){ 1629 // if (aGN != "00" && aGN != "0" && aGN != "0700") { 1630 var ageoTempoEUM = ""; 1631 1632 if (aGN.length == 2) { 1633 ageoTempoEUM = aGN; 1634 } else { 1635 var ageoTempoSiguentes = aGN.length >= 8 ? aGN.substring(6, 8) : ""; 1636 var ageoTempoSiguentes1 = aGN.length == 12 ? aGN.substring(9, 12) : ""; 1637 ageoTempoEUM = ageoTempoSiguentes + ageoTempoSiguentes1; 1638 1639 if(ageoTempoEUM == ""){ 1640 ageoTempoEUM = aGN; 1641 } 1642 } 1643 // Actualización: 05-feb-2021 1644 // Descripción: El config hace la concatenacion del idioma al resto de la url del api. 1645 //México en cifras - informacion de localidades 1646 // Fecha: 01-03-2023 1647 CatemlLocalidades(urlBase, objDatosGeograficos, dataIndicador, dataArea, parametros, ageoTempoEUM); 1648 1649 } else { 1650 // peticion para obtener el valor del primer objeto para nacional 1651 // dato corresponde a municipio y demarcaciones territoriales 1652 // modificado: 18-04-2023 1653 // fetch(urlBase+"app/api/cateml/catuniAPI/ObtenerFecCorMun/",{method:"GET",mode:"no-cors", headers:{"Content-Type": "application/json"}}) 1654 getFechaReferenciaActualizacion(function(aFecCorMun){ 1655 1656 objDatosGeograficos.indicator = dataIndicador; 1657 $.extend(objDatosGeograficos, dataArea[0], {demarcaciones_territoriales:aFecCorMun[0].valor,referencia_actualizacion:aFecCorMun[0].nombre}); 1658 CasosCuadro(objDatosGeograficos, parametros); 1659 1660 }) 1661 1662 } 1663 }); 1664 } 1665 }); 1666 } 1667 1668 } else if(parametros.tipoCuadro === "18"){ // Caso para cuadros localidades (mexico en cifras) #18 informacion de localidades 1669 1670 /* var urlLocalidades = C_dominioBuscador + "app/api/indicadores/internalocalidades_V1_1/datosLocalidadTema?cvegeo="+parametros.areaGeografica; 1671 var data = []; 1672 $.getJSON(urlLocalidades, function (data) { 1673 data.dLocalidades = data; 1674 CasosCuadro(data, parametros); 1675 }); */ 1676 1677 // Validar el area geografica para saber si es la nueva clave o si es la anterior 1678 var aGN = parametros.areaGeografica; 1679 var ageoTempoEUM = ""; 1680 if(parametros.areaGeografica.length === 12){ 1681 var ageoTempoSiguentes = aGN.substring(6, 8); 1682 var ageoTempoSiguentes1 = aGN.substring(9, 12); 1683 ageoTempoEUM = ageoTempoSiguentes + ageoTempoSiguentes1; 1684 } else { 1685 ageoTempoEUM = parametros.areaGeografica; 1686 } 1687 // url localidades datos Un arreglo V3
1688 var urlLocalidades = C_dominioBuscador + "app/api/indicadores/internalocalidades_V1_1/datosLocalidadTema?cvegeo=" + ageoTempoEUM; 1689 if(parametros.periodoLocalidad !== null && parametros.versionLocalidad !== null && C_dominioBuscador.indexOf("desarrollowww") !== -1){ 1690 var periodoLoc = parametros.periodoLocalidad 1691 var versionLoc = parametros.versionLocalidad 1692 urlLocalidades = C_dominioBuscador + "app/api/indicadores/internalocalidades_V1_1/DatosReporteLoc5000_2020_pt2?areageo="+ageoTempoEUM+"&edicion="+periodoLoc+"&version="+versionLoc 1693 } 1694 $.getJSON(urlLocalidades, function (dataLoc) { 1695 //obtener catalogo de temas 1696 if(C_dominioBuscador.indexOf("desarrollowww") === -1){ 1697 CasosCuadro(dataLoc, parametros); 1698 } else { 1699 1700 var urlCatalogoTemas = C_dominioBuscador + "app/api/indicadores/internalocalidades_V1_1/CatalogoTemas"; 1701 $.getJSON(urlCatalogoTemas, function(catTemasLoc){ 1702 parametros.catalogoTemasLocalidad = catTemasLoc; 1703 CasosCuadro(dataLoc, parametros); 1704 }) 1705 } 1706 }).fail((e) => { 1707 var msg = parametros.idioma === "es"? "No hay información para esta área geográfica" : "There's not information for this geographic area"; 1708 parametros.error = {code:"500", msg:msg, error:"Object reference not set to an instance of an object...", url:urlLocalidades} 1709 document.getElementById("divCargaCuadro"+parametros.contenedorCuadro).style.display = "none"; 1710 var lblMensaje = document.getElementById("lblMensaje" + parametros.contenedorCuadro); 1711 lblMensaje.innerHTML = parametros.error.msg; 1712 lblMensaje.style.display = "block"; 1713 if(parametros.callback !== null) parametros.callback(parametros) 1714 // return false; 1715 }); 1716 // CasosCuadro(dataLocalidades, parametros) 1717 } else if(parametros.tipoCuadro === "12"){ // Agregado 09-03-2023 1718 // console.log(">> iraCuadro -> GetDatosValorIndicadorCuadro12") 1719 GetDatosValorIndicadorCuadro12(parametros); 1720 1721 } else if(parametros.tipoCuadro === "scitel"){ // Agregado 12-07-2025 Cuadros datos SCITEL 1722 getIndicadoresValorScitel(parametros) 1723 } else { 1724 if (parametros.indicadorDepurado.length < 200) { 1725 var typeChart = (parametros.typeChart !== undefined) ? parametros.typeChart : (parametros.tipoCuadro === "12" ? 4 : 3); 1726 //var typeChart = 3; 1727 //console.log(parametros.direccionServicio + '/ValorIndicador/' + parametros.indicadorDepurado + "/" + parametros.areaGeografica + '/null/' + parametros.idioma + '/null/null/' + typeChart + '/' + parametros.orden + '/' + parametros.nombreCorto + '/' + parametros.esOportuno + '/' + parametros.fe
1727chaInicio + '/' + parametros.fechaFin + "/" + parametros.formatoAreaGeografica + '/json/563cbaa8-58bb-fef8-6763-1f1dae318f99'); 1728 var direccionServicio = parametros.direccionServicio; 1729 var _tematica = ""; 1730 if (API_V == "v1_2") { 1731 _tematica = (parametros.tematica != "" ? parametros.tematica + "/" : "null/"); 1732 direccionServicio = C_direccionServicio_V + "_" + API_V.toLowerCase()+"/"; 1733 // console.debug(_tematica); 1734 } else if(API_V == "v1_1"){ 1735 // No se hace nada 1736 } else { // API VERSION 3 FINAL 1737 _tematica = (parametros.tematica != "" ? parametros.tematica + "/" : "undefined/"); 1738 direccionServicio = C_direccionServicio_V + "_" + API_V.toLowerCase(); 1739 } 1740 direccionServicio = direccionServicio + extension_api_cuadros 1741 1742 var urlRequest = direccionServicio + '/ValorIndicador/' + parametros.indicadorDepurado + "/" + parametros.areaGeografica + '/null/' + parametros.idioma + '/null/null/' + typeChart + '/' + parametros.orden + '/' + (parametros.nombreCorto == "true" ? 1 : 0) + '/' + parametros.esOportuno + '/' + parametros.fe
1742chaInicio + '/' + parametros.fechaFin + "/" + parametros.formatoAreaGeografica + '/' + _tematica +'json/563cbaa8-58bb-fef8-6763-1f1dae318f99'; 1743 $.getJSON(urlRequest + "?callback=?", null, function (data) { 1744 parametros.listaExcepciones = data.exceptions; 1745 switch (parametros.condicionCuadro) { 1746 case "CuadroGruposA": 1747 CasoCompuesto(data, parametros); 1748 break; 1749 1750 default: 1751 CasosCuadro(data, parametros); 1752 break; 1753 } 1754 }); 1755 } 1756 else { 1757 ConsultaPostIndicadores(parametros); 1758 } 1759 } 1760 } 1761 /** 1762 * Método para obtener y pintar el cuadro de datos SCITEL 2025 1763 * @created 12-07-2025 1764 * @param {*} parametros 1765 */ 1766 function getIndicadoresValorScitel(parametros){ 1767 // debug scitel 1768 const grupo = parametros.indicadorValorCompuesto[0].grupo; 1769 parametros.grupoArbolScitel = grupo; 1770 // obtnemos y concatenamos los temas en un string 1771 let sTemas = parametros.temaDepurado.length > 0 ? parametros.temaDepurado.map(tema => tema.tema).join(",") : null; 1772 1773 let bodyParametros = JSON.stringify({ 1774 // tema:parametros.temaDepurado.join(","), 1775 tema:sTemas, // Si es un tema si se manda, si son varios temas enviar null 1776 // periodo: grupo === "2" || grupo === 2 ? parametros.versionLocalidad : parametros.versionlocalidad, 1777 periodo: parametros.versionLocalidad, 1778 areageo:parametros.areaGeografica, 1779 version:parametros.versionLocalidad, 1780 indicadores:parametros.indicadorDepurado.join(","), // se envian los indicadores separados por coma 1781 formato:"json", 1782 token:parametros.token 1783 }); 1784 1785 // Validamos para saber si estamos en localhost y poder ejecutar el llamado o usar un objeto de datos fijo 1786 if(!parametros.isLocalhost){ 1787 // solo si es grupo 1 del arbol de temas 1788 let urlScitel = C_direccionServicio + extension_api_cuadros + "IndicadoresValorScitel"; 1789 1790 if(grupo === "2" || grupo === 2){ // si es grupo 2 del arbol de temas 1791 urlScitel = C_direccionServicio + extension_api_cuadros + "IndicadoresValorAGEBMZAScitel"; 1792 1793 } else if(grupo === "3" || grupo === 3){ 1794 urlScitel = C_direccionServicio + extension_api_cuadros + "IndicadoresValorScitel"; 1795 } 1796 console.log(JSON.parse(bodyParametros)); 1797 1798 //Arma y ejecuta la peticion POST a IndicadoresValorScitel 1799 $.ajax({
1800 method: "POST", 1801 url: urlScitel, 1802 contentType: "application/json", 1803 dataType: "json", 1804 data: bodyParametros, 1805 success: function (data) { 1806 CasosCuadro(data, parametros); 1807 }, 1808 error: function (jqXHR, textStatus, errorThrown) { 1809 console.log(textStatus, errorThrown); 1810 } 1811 }); 1812 1813 } else { 1814 1815 // SCITEL DATOS ESTÃTICOS: PRUEBAS CUANDO ES LOCALHOST YA QUE LOS POST NO FUNCIONAN 1816 // UTILIZAMOS UN OBJETO DE DATOS FIJO SIMULANDO LA RESPUESTA DEL API 1817 // Y CONTINUAMOS EL PROCESO 1818 console.log(">> Test scitel localhost"); 1819 // console.log("Si grupo 2") 1820 // const pathArchivo = "scripts/IndicadoresValorAGEBMZAScitel.json"; 1821 console.log("Si grupo 1,3"); 1822 const pathArchivo = "scripts/IndicadoresValorScitel.json"; 1823 let data = []; 1824 $.getJSON(pathArchivo, function (d) { 1825 data = d; 1826 }).error(function (error) { 1827 console.log(error); 1828 console.log("ERROR AL LEER EL JSON") 1829 }).done(function () { 1830 CasosCuadro(data, parametros) 1831 }); 1832 } 1833 } 1834 /** 1835 * Metodo para obtener la fecha de actualización de catalogo unico de claves geoestadisticas 1836 * llamado aplicado para nacional, entidades y municipios 1837 * modificado: 02-05-2023 1838 * @param {*} cb 1839 */ 1840 function getFechaReferenciaActualizacion(cb){ 1841 var urlBase = C_direccionServicio.split("/app")[0]+"/"; 1842 // produccion 1843 return fetch(urlBase+"app/api/cateml/catuniAPI/ObtenerFecCorMun/",{method:"GET",headers:{"Content-Type": "application/json"}}).then(function(response){ 1844 return response.json() 1845 }).then(function(aRefAct){ 1846 cb(aRefAct) 1847 }) 1848 // localhost 1849 // var aRefAct = [ 1850 // { 1851 // "mapa": null, 1852 // "te": null, 1853 // "cve_ent": null, 1854 // "nom_ent": null, 1855 // "nom_abr": null, 1856 // "cve_cap": null, 1857 // "nom_cap": null, 1858 // "fecha_act": null, 1859 // "descrip": null, 1860 // "cod_act": null, 1861 // "evidencia": null, 1862 // "cve_ent_act": null, 1863 // "nom_ent_act": null, 1864 // "z1": null, 1865 // "z119": null, 1866 // "z2": null, 1867 // "z3": null, 1868 // "contador": "56", 1869 // "nombre": "01/05/2023 12:00:00 a. m.", 1870 // "valor": "2475" 1871 // } 1872 // ] 1873 // cb(aRefAct) 1874 } 1875 /** 1876 * Metodo para proceso de obtener datos ValorIndicador para el cuadro #12 1877 * App. Mexico en cifras 1878 * Fecha: 09-03-2023 1879 * @param {*} parametros 1880 */ 1881 function GetDatosValorIndicadorCuadro12(parametros){ 1882 var numTematicas = parametros.indicadorValorCompuesto.todasTematicas.length; 1883 var aTematicas = parametros.indicadorValorCompuesto.todasTematicas; 1884 var aIndicadores = parametros.indicadorDepurado; 1885 var typeChart = 4; 1886 var direccionServicio = parametros.direccionServicio; 1887 var _tematica = ""; 1888 1889 if (API_V == "v1_2") { 1890 _tematica = (parametros.tematica != "" ? parametros.tematica + "/" : "null/"); 1891 direccionServicio = C_direccionServicio_V + "_" + API_V.toLowerCase()+"/"; 1892 } else if(API_V == "v1_1"){ 1893 // No se hace nada 1894 } else { // API VERSION 3 FINAL 1895 _tematica = (parametros.tematica != "" ? parametros.tematica + "/" : "undefined/"); 1896 direccionServicio = C_direccionServicio_V + "_" + API_V.toLowerCase(); 1897 } 1898 1899 direccionServicio = direccionServicio + extension_api_cuadros; 1900 if (parametros.indicadorDepurado.length <= 10) { 1901 1902 // console.log(">> FETCH METODO GET VALORINDICADOR " + parametros.tipoCuadro) 1903 var urlRequest = direccionServicio + '/ValorIndicador/$indicadores/' + parametros.areaGeografica + '/null/' + parametros.idioma + '/null/null/' + typeChart + '/' + parametros.orden + '/' + (parametros.nombreCorto == "true" ? 1 : 0) + '/' + parametros.esOportuno + '/' + parametros.fe
1903chaInicio + '/' + parametros.fechaFin + "/" + parametros.formatoAreaGeografica + '/$tematica/json/563cbaa8-58bb-fef8-6763-1f1dae318f99'; 1904 var aPromesas = [] 1905 for(var x = 0; x < numTematicas; x++){ 1906 _tematica = aTematicas[x]; 1907 var sIndicadores = aIndicadores.filter(function(i){ return i.tematica === aTematicas[x];}) 1908 sIndicadores = sIndicadores.map(function(i){ return i.indicador;}).join(","); 1909 var url = urlRequest.replaceAll("$indicadores", sIndicadores); 1910 url = url.replaceAll("$tematica", _tematica); 1911 var promesa = fetch(url,{method:"GET"},function(d){ return d}) 1912 aPromesas.push(promesa) 1913 } 1914 1915 if(aPromesas.length > 0){ 1916 Promise.all(aPromesas) 1917 .then(function(responses){ 1918 return Promise.all(responses.map(function(response){return response.json();})) 1919 }) 1920 .then(function(data){ 1921 var allData = data[0]; 1922 parametros.listaExcepciones = data.exceptions; 1923 data.forEach(function(d,idx) { 1924 // var aValue = allData.value; 1925 if(idx > 0){ 1926 // aValue = [...aValue,...d.value] 1927 var tmpValue = [...allData.value, ...d.value] 1928 var tmpDecimalFormat = [...allData.valueDecimalFormat, ...d.valueDecimalFormat] 1929 var tmpFrecuenciaLabel = [...allData.dimension.freq.category.label, ...d.dimension.freq.category.label]; 1930 var tmpFrecuenciaIndex = [...allData.dimension.freq.category.index, ...d.dimension.freq.category.index]; 1931 var tmpPeriodsCategoryIndex = [...allData.dimension.periods.category.index, ...d.dimension.periods.category.index]; 1932 var tmpPeriodsCategoryLabel = [...allData.dimension.periods.category.label, ...d.dimension.periods.category.label]; 1933 var tmpUnitCategoryIndex = [...allData.dimension.unit.category.index, ...d.dimension.unit.category.index]; 1934 var tmpUnitCategoryLabel = [...allData.dimension.unit.category.label, ...d.dimension.unit.category.label]; 1935 var tmpIndicatorIndex = [...allData.dimension.indicator.category.index, ...d.dimension.indicator.category.index]; 1936 var tmpIndicadorLabel = [...allData.dimension.indicator.category.label, ...d.dimension.indicator.category.label]; 1937 1938 allData.value = tmpValue; 1939 allData.valueDecimalFormat = tmpDecimalFormat; 1940 allData.dimension.freq.category.label = tmpFrecuenciaLabel; 1941 allData.dimension.freq.category.index = tmpFrecuenciaIndex; 1942 allData.dimension.periods.category.index = tmpPeriodsCategoryIndex; 1943 allData.dimension.periods.category.label = tmpPeriodsCategoryLabel; 1944 allData.dimension.unit.category.index = tmpUnitCategoryIndex; 1945 allData.dimension.unit.category.label = tmpUnitCategoryLabel; 1946 allData.dimension.indicator.category.index = tmpIndicatorIndex; 1947 allData.dimension.indicator.category.label = tmpIndicadorLabel; 1948 } 1949 }); 1950 CasosCuadro(allData, parametros); 1951 }) 1952 .catch(function(error){ 1953 console.log(error); 1954 }) 1955 } 1956 } else { 1957 // ConsultaPostIndicadores(parametros); 1958 1959 // console.log(">> FETCH METODO POST VALORINDICADOR " + parametros.tipoCuadro) 1960 var url = direccionServicio + '/ValorIndicador'; 1961 var aPromesas = [] 1962 var bodyParametros = {}; 1963 for(var x = 0; x < numTematicas; x++){ 1964 _tematica = aTematicas[x]; 1965 var sIndicadores = aIndicadores.filter(function(i){ return i.tematica === aTematicas[x];}) 1966 sIndicadores = sIndicadores.map(function(i){ return i.indicador;}).join(","); 1967 1968 bodyParametros.tematica = _tematica 1969 bodyParametros.indicador = sIndicadores;
1970 bodyParametros.areaGeografica = parametros.areaGeografica 1971 bodyParametros.tema = "null"; 1972 bodyParametros.idioma = parametros.idioma; 1973 bodyParametros.programa_ciclo = "null"; // 28/07/2021 cambio de nombre fuente por programa_ciclo y solo en metodo POST 1974 bodyParametros.periodos = "null"; 1975 bodyParametros.typeChart = typeChart; 1976 bodyParametros.orden = parametros.orden; 1977 bodyParametros.nombreCorto = (parametros.nombreCorto == "true") ? 1 : 0; 1978 bodyParametros.esOportuno = parametros.esOportuno; 1979 bodyParametros.fechaInicio = parametros.fechaInicio; 1980 bodyParametros.fechaFin = parametros.fechaFin; 1981 bodyParametros.formato = "json"; 1982 bodyParametros.token = "563cbaa8-58bb-fef8-6763-1f1dae318f99"; 1983 bodyParametros.nomenclaturaEntidad = parametros.formatoAreaGeografica; 1984 var promesa = fetch(url,{method:"POST",body:JSON.stringify(bodyParametros),headers:{"Content-type":"application/json; charset=UTF-8"}}, function(d){ return d}) 1985 aPromesas.push(promesa) 1986 } 1987 // Ejecuta todas las promesas acumuladas por tematica e indicadores 1988 if(aPromesas.length > 0){ 1989 Promise.all(aPromesas) 1990 .then(function(responses){ 1991 return Promise.all(responses.map(function(response){return response.json();})) 1992 }) 1993 .then(function(data){ 1994 var allData = data[0]; 1995 parametros.listaExcepciones = data.exceptions; 1996 data.forEach(function(d,idx) { 1997 // var aValue = allData.value; 1998 if(idx > 0){ 1999 // aValue = [...aValue,...d.value] 2000 var tmpValue = [...allData.value, ...d.value] 2001 var tmpDecimalFormat = [...allData.valueDecimalFormat, ...d.valueDecimalFormat] 2002 var tmpFrecuenciaLabel = [...allData.dimension.freq.category.label, ...d.dimension.freq.category.label]; 2003 var tmpFrecuenciaIndex = [...allData.dimension.freq.category.index, ...d.dimension.freq.category.index]; 2004 var tmpPeriodsCategoryIndex = [...allData.dimension.periods.category.index, ...d.dimension.periods.category.index]; 2005 var tmpPeriodsCategoryLabel = [...allData.dimension.periods.category.label, ...d.dimension.periods.category.label]; 2006 var tmpUnitCategoryIndex = [...allData.dimension.unit.category.index, ...d.dimension.unit.category.index]; 2007 var tmpUnitCategoryLabel = [...allData.dimension.unit.category.label, ...d.dimension.unit.category.label]; 2008 var tmpIndicatorIndex = [...allData.dimension.indicator.category.index, ...d.dimension.indicator.category.index]; 2009 var tmpIndicadorLabel = [...allData.dimension.indicator.category.label, ...d.dimension.indicator.category.label]; 2010 2011 allData.value = tmpValue; 2012 allData.valueDecimalFormat = tmpDecimalFormat; 2013 allData.dimension.freq.category.label = tmpFrecuenciaLabel; 2014 allData.dimension.freq.category.index = tmpFrecuenciaIndex; 2015 allData.dimension.periods.category.index = tmpPeriodsCategoryIndex; 2016 allData.dimension.periods.category.label = tmpPeriodsCategoryLabel; 2017 allData.dimension.unit.category.index = tmpUnitCategoryIndex; 2018 allData.dimension.unit.category.label = tmpUnitCategoryLabel; 2019 allData.dimension.indicator.category.index = tmpIndicatorIndex; 2020 allData.dimension.indicator.category.label = tmpIndicadorLabel; 2021 } 2022 }); 2023 CasosCuadro(allData, parametros); 2024 }) 2025 .catch(function(error){ 2026 console.log(error); 2027 }) 2028 } 2029 2030 } 2031 } 2032 /** 2033 * Descripcion: Funcion aislada para App México en cifras - informacion de localidades - caso #13v2 2034 * Nuevo conteo de municipios (por nuevo llamado a api inegi.org.mx/app/api/cateml/area/01) 2035 * Uso de: data.dataMunicipios) 2036 * Fecha: 01-03-2023 2037 * @param {*} urlBase 2038 * @param {*} datoIndicador 2039 * @param {*} dataArea 2040 * @param {*} parametros 2041 */ 2042 function CatemlLocalidades(urlBase, objDatosGeograficos, dataIndicador, dataArea, parametros, ageoTempoEUM){ 2043 // Metodo para obtener la fecha de actualización de catalogo unico de claves geoestadisticas
2044 getFechaReferenciaActualizacion(function(aFecCorMun){ 2045 2046 // var dataCoordenadas = { 2047 // "type": "FeatureCollection", 2048 // "features": [ 2049 // { 2050 // "type": "Feature", 2051 // "properties": { 2052 // "cve_ent": "03", 2053 // "cve_mun": "002", 2054 // "nom_mun": "Mulegé", 2055 // "count": 615 2056 // }, 2057 // "geometry": { 2058 // "type": "LineString", 2059 // "coordinates": [ 2060 // [ 2061 // "26°24'21.60\" N", 2062 // "115°13'26.40\" W" 2063 // ], 2064 // [ 2065 // "28°00'00.00\" N", 2066 // "111°25'26.40\" W" 2067 // ] 2068 // ] 2069 // } 2070 // } 2071 // ] 2072 // } 2073 2074 // // para testing local 2075 // objDatosGeograficos.indicator = dataIndicador; 2076 // if(ageoTempoEUM.length !== 6){ 2077 // $.extend(objDatosGeograficos, dataArea[0], dataCoordenadas.features[0].geometry,{HIJOS:dataCoordenadas.features[0].properties.count,referencia_actualizacion:aFecCorMun[0].nombre}); 2078 // } else { 2079 // $.extend(objDatosGeograficos, dataArea[0], dataCoordenadas.features[0].geometry,{referencia_actualizacion:aFecCorMun[0].nombre}); 2080 // } 2081 // CasosCuadro(objDatosGeograficos, parametros); 2082 2083 var dirCoordenadas = urlBase + 'app/api/cateml/Json/ageo/' + ageoTempoEUM; 2084 $.getJSON(dirCoordenadas, function (dataCoordenadas) { 2085 objDatosGeograficos.indicator = dataIndicador; 2086 if(ageoTempoEUM.length !== 6){ 2087 $.extend(objDatosGeograficos, dataArea[0], dataCoordenadas.features[0].geometry,{HIJOS:dataCoordenadas.features[0].properties.count, referencia_actualizacion:aFecCorMun[0].nombre}); 2088 CasosCuadro(objDatosGeograficos, parametros); 2089 } else { 2090 $.extend(objDatosGeograficos, dataArea[0], dataCoordenadas.features[0].geometry,{referencia_actualizacion:aFecCorMun[0].nombre}); 2091 CasosCuadro(objDatosGeograficos, parametros); 2092 } 2093 }); 2094 }) 2095 } 2096 /** 2097 * METADATO PARA CUADRO #12 2098 * Mexico en cifras 2099 * multiples tematicas para varios indicadores 2100 * fecha: 13-03-2023 2101 * @param {*} parametros 2102 * @param {*} data 2103 * @returns 2104 */ 2105 function ConsultaMetaIndicador12(parametros, data, callback) { 2106 /* console.log(parametros) 2107 console.log(data); */ 2108 2109 var direccionServicio = parametros.direccionServicio; 2110 var tematica = ""; 2111 if (API_V == "v1_2") { 2112 tematica = (parametros.tematica != "" ? parametros.tematica + "/" : "null/"); 2113 direccionServicio = C_direccionServicio_V + "_" + API_V.toLowerCase()+"/"; 2114 } else if(API_V == "v1_1"){ 2115 // No se hace nada 2116 } else { // API VERSION 3 FINAL 2117 tematica = (parametros.tematica != "" ? parametros.tematica + "/" : "undefined/"); 2118 direccionServicio = C_direccionServicio_V + "_" + API_V.toLowerCase() + "/"; 2119 } 2120 2121 direccionServicio = direccionServicio + extension_api_cuadros; 2122 2123 var dirServicio = direccionServicio + '/MetadatoIndicador';
2124 var periodos = data.dimension.periods.category.label; 2125 var primerPeriodo = (parametros.fechaInicio === null) ? null : parametros.fechaInicio; 2126 var ultimoPeriodo = (parametros.fechaFin === null) ? null : parametros.fechaFin; 2127 var periodo = data.dimension.freq.category.label[0].Value; 2128 2129 var numTematicas = parametros.indicadorValorCompuesto.todasTematicas.length; 2130 var aTematicas = parametros.indicadorValorCompuesto.todasTematicas; 2131 var aIndicadores = parametros.indicadorDepurado; 2132 2133 var metaRequestPromise = null; 2134 if (parametros.indicadorDepurado.length <= 10) { 2135 var dirMetaDatos = "";//dirServicio + "/" + parametros.idioma + '/$indicadores/' + parametros.areaGeografica + '/' + ultimoPeriodo + '/null/$tematica/json/' + parametros.token; 2136 // if (aCuadrosNuevoMetodoPost.indexOf(parseInt(parametros.tipoCuadro)) > -1) { // nuevo metodo metadatoindicador GET 2137 //comparar primer posicion con ultima para determinar cual es el orden de los periodos 2138 var perUno = parseInt(periodos[0].Value.split("/")[0]) 2139 var perDos = parseInt(periodos[periodos.length-1].Value.split("/")[0]) 2140 2141 if(perUno < perDos){ 2142 primerPeriodo = periodos[0].Value; 2143 ultimoPeriodo = periodos[periodos.length-1].Value; 2144 2145 } else if(perUno > perDos){ 2146 primerPeriodo = periodos[periodos.length-1].Value; 2147 ultimoPeriodo = periodos[0].Value 2148 2149 } else { // si son iguales -> comprar meses si es que tiene 2150 if(periodos[0].Value.indexOf("/") > -1){ // traen meses: 2019/05 2151 var mesUno = parseInt(periodos[0].Value.split("/")[1]); 2152 var mesDos = parseInt(periodos[periodos.length-1].Value.split("/")[1]); 2153 if(mesUno < mesDos){ 2154 primerPeriodo = periodos[0].Value; 2155 ultimoPeriodo = periodos[periodos.length-1].Value 2156 } else { 2157 primerPeriodo = periodos[periodos.length-1].Value 2158 ultimoPeriodo = periodos[0].Value; 2159 } 2160 } else { 2161 primerPeriodo = periodos[periodos.length-1].Value; 2162 ultimoPeriodo = periodos[0].Value 2163 } 2164 2165 } 2166 primerPeriodo = (primerPeriodo.indexOf("/") > -1? primerPeriodo.replaceAll("/","_") : primerPeriodo) 2167 ultimoPeriodo = (ultimoPeriodo.indexOf("/") > -1? ultimoPeriodo.replaceAll("/","_") : ultimoPeriodo+"_12"); 2168 dirMetaDatos = dirServicio + '/' + parametros.idioma + '/$indicadores/' + parametros.areaGeografica + '/' + primerPeriodo + '/' + ultimoPeriodo + '/null/$tematica/json/' + parametros.token; 2169 // } 2170 2171 2172 // metaRequestPromise = $.getJSON(dirMetaDatos + "?callback=?", null).then(function (data) { return data; }); 2173 // promesas 2174 /* var numTematicas = parametros.indicadorValorCompuesto.todasTematicas.length; 2175 var aTematicas = parametros.indicadorValorCompuesto.todasTematicas; 2176 var aIndicadores = parametros.indicadorDepurado; */ 2177 var aPromesas = [] 2178 for(var x = 0; x < numTematicas; x++){ 2179 _tematica = aTematicas[x]; 2180 var sIndicadores = aIndicadores.filter(function(i){ return i.tematica === aTematicas[x];}) 2181 sIndicadores = sIndicadores.map(function(i){ return i.indicador;}).join(","); 2182 var url = dirMetaDatos.replaceAll("$indicadores", sIndicadores); 2183 url = url.replaceAll("$tematica", _tematica); 2184 var promesa = fetch(url, function(d){ return d}) 2185 aPromesas.push(promesa) 2186 } 2187 2188 if(aPromesas.length > 0){ 2189 Promise.all(aPromesas).then(function(responses){ 2190 return Promise.all(responses.map(function(response){return response.json();})) 2191 }) 2192 .then(function(data){ 2193 // console.log(data); 2194 var allDataMetadato = data[0]; 2195 parametros.listaExcepciones = data.exceptions; 2196 data.forEach(function(d,idx) { 2197 // var aValue = allDataMetadato.value; 2198 if(idx > 0){ 2199 // aValue = [...aValue,...d.value] 2200 if(d.CIFRAS_ESTATUS !== null){ 2201 var tmpCIFRAS_ESTATUS = [...allDataMetadato.CIFRAS_ESTATUS, ...d.CIFRAS_ESTATUS] 2202 allDataMetadato.CIFRAS_ESTATUS = tmpCIFRAS_ESTATUS; 2203 } 2204 if(d.FUENTES !== null){ 2205 var tmpFUENTES = [...allDataMetadato.FUENTES, ...d.FUENTES] 2206 allDataMetadato.FUENTES = tmpFUENTES; 2207 } 2208 if(d.NOTAS !== null){ 2209 var tmpNOTAS = [...allDataMetadato.NOTAS, ...d.NOTAS] 2210 allDataMetadato.NOTAS = tmpNOTAS; 2211 } 2212 2213 2214 } 2215 }); 2216 callback(allDataMetadato) 2217 }) 2218 .catch(function(error){ 2219 console.log(error); 2220 }) 2221 2222 } 2223 } else { 2224 2225 primerPeriodo = periodos[0].Value.indexOf("/") > -1 ? replaceAll("/", "_", periodos[0].Value) : periodos[0].Value; 2226 ultimoPeriodo = periodos[periodos.length - 1].Value.indexOf("/") > -1 ? replaceAll("/", "_", periodos[periodos.length - 1].Value) : periodos[periodos.length - 1].Value; 2227 ultimoPeriodo = (ultimoPeriodo.indexOf(primerPeriodo) > -1) ? ultimoPeriodo.split("_")[0] + "_12" : ultimoPeriodo; // si el año del periodo es el mismo en los 2 2228 // si el periodo es anual solo de enviarse el año sin periodo 2229 if (periodo == "Anual") { 2230 primerPeriodo = primerPeriodo.split("_")[0]; 2231 ultimoPeriodo = ultimoPeriodo.split("_")[0]; 2232 } 2233 2234 // valida las fechas 2235 const comparaPeriodos = esMenor(primerPeriodo, ultimoPeriodo); 2236 if (comparaPeriodos === false) { 2237 primerPeriodo = ultimoPeriodo; 2238 ultimoPeriodo = primerPeriodo; 2239 } 2240 2241 var url = direccionServicio + 'MetadatoIndicadorV2'; 2242 var aPromesas = [] 2243 var bodyParametros = {}; 2244 for(var x = 0; x < numTematicas; x++){ 2245 _tematica = aTematicas[x]; 2246 var sIndicadores = aIndicadores.filter(function(i){ return i.tematica === aTematicas[x];}) 2247 sIndicadores = sIndicadores.map(function(i){ return i.indicador;}).join(","); 2248 2249 bodyParametros.tematica = _tematica 2250 bodyParametros.indicador = sIndicadores;
2251 bodyParametros.areaGeografica = parametros.areaGeografica 2252 bodyParametros.idioma = parametros.idioma; 2253 bodyParametros.periodoinicial = primerPeriodo; 2254 bodyParametros.periodofinal = ultimoPeriodo; 2255 bodyParametros.formato = "json"; 2256 bodyParametros.mostrarGenerica = "null"; 2257 bodyParametros.token = "563cbaa8-58bb-fef8-6763-1f1dae318f99"; 2258 // console.log(url) 2259 // console.log(bodyParametros) 2260 var promesa = fetch(url,{method:"POST",body:JSON.stringify(bodyParametros),headers:{"Content-type":"application/json; charset=UTF-8"}}, function(d){ return d}) 2261 aPromesas.push(promesa) 2262 } 2263 // Ejecuta todas las promesas acumuladas por tematica e indicadores 2264 if(aPromesas.length > 0){ 2265 2266 Promise.all(aPromesas) 2267 .then(function(responses){ 2268 return Promise.all(responses.map(function(response){return response.json();})) 2269 }) 2270 .then(function(data){ 2271 // console.log(data); 2272 var allDataMetadato = data[0]; 2273 parametros.listaExcepciones = data.exceptions; 2274 data.forEach(function(d,idx) { 2275 // var aValue = allDataMetadato.value; 2276 if(idx > 0){ 2277 // aValue = [...aValue,...d.value] 2278 if(d.CIFRAS_ESTATUS !== null){ 2279 var tmpCIFRAS_ESTATUS = [...allDataMetadato.CIFRAS_ESTATUS, ...d.CIFRAS_ESTATUS] 2280 allDataMetadato.CIFRAS_ESTATUS = tmpCIFRAS_ESTATUS; 2281 } 2282 if(d.FUENTES !== null){ 2283 var tmpFUENTES = [...allDataMetadato.FUENTES, ...d.FUENTES] 2284 allDataMetadato.FUENTES = tmpFUENTES; 2285 } 2286 if(d.NOTAS !== null){ 2287 var tmpNOTAS = [...allDataMetadato.NOTAS, ...d.NOTAS] 2288 allDataMetadato.NOTAS = tmpNOTAS; 2289 } 2290 2291 2292 } 2293 }); 2294 callback(allDataMetadato) 2295 2296 }) 2297 .catch(function(error){ 2298 console.log(error); 2299 }) 2300 } 2301 } 2302 2303 } 2304 function esMenor(fecha1, fecha2){ 2305 // Función para normalizar la fecha a YYYY-MM-DD 2306 const normalizarFecha = (fecha) => { 2307 const partes = fecha.split('_'); 2308 const anio = partes[0]; 2309 const mes = partes[1] || '01'; // Si no hay mes, usar enero 2310 const dia = partes.length === 2 ? '01' : partes[2] || '01'; // Si es YYYY_MM, usar primer dÃa 2311 return new Date(`${anio}-${mes.padStart(2, '0')}-${dia.padStart(2, '0')}`); 2312 }; 2313 2314 const date1 = normalizarFecha(fecha1); 2315 const date2 = normalizarFecha(fecha2); 2316 2317 if (date1 < date2) return true; 2318 if (date1 > date2) return false; 2319 return true; 2320 } 2321 2322 /// <summary> Obtiene los metadato indicador solo por el estatis cifra. </summary> 2323 /// 2324 /// <remarks> @rovalx, 27/02/2018. </remarks> 2325 /// <remarks> Utilizado actualmente solo para cuadro #12 </remarks> 2326 /// 2327 function ConsultaMetaIndicador(parametros, data) { 2328 var direccionServicio = parametros.direccionServicio; 2329 var tematica = ""; 2330 if (API_V == "v1_2") { 2331 tematica = (parametros.tematica != "" ? parametros.tematica + "/" : "null/"); 2332 direccionServicio = C_direccionServicio_V + "_" + API_V.toLowerCase()+"/"; 2333 } else if(API_V == "v1_1"){ 2334 // No se hace nada 2335 } else { // API VERSION 3 FINAL 2336 tematica = (parametros.tematica != "" ? parametros.tematica + "/" : "undefined/"); 2337 direccionServicio = C_direccionServicio_V + "_" + API_V.toLowerCase() + "/"; 2338 } 2339 2340 direccionServicio = direccionServicio + extension_api_cuadros; 2341 2342 var dirServicio = direccionServicio + 'MetadatoIndicador';
2343 var periodos = data.dimension.periods.category.label; 2344 var primerPeriodo = (parametros.fechaInicio === null) ? null : parametros.fechaInicio; 2345 var ultimoPeriodo = (parametros.fechaFin === null) ? null : parametros.fechaFin; 2346 var periodo = data.dimension.freq.category.label[0].Value; 2347 2348 var metaRequestPromise = null; 2349 if (parametros.indicadorDepurado.length < 200) { 2350 var dirMetaDatos = dirServicio + "/" + parametros.idioma + '/' + parametros.indicadorDepurado + '/' + parametros.areaGeografica + '/' + ultimoPeriodo + '/null/' + tematica +'json/' + parametros.token; 2351 // if (aCuadrosNuevoMetodoPost.indexOf(parseInt(parametros.tipoCuadro)) > -1) { // nuevo metodo metadatoindicador GET 2352 //comparar primer posicion con ultima para determinar cual es el orden de los periodos 2353 var perUno = parseInt(periodos[0].Value.split("/")[0]) 2354 var perDos = parseInt(periodos[periodos.length-1].Value.split("/")[0]) 2355 2356 if(perUno < perDos){ 2357 primerPeriodo = periodos[0].Value; 2358 ultimoPeriodo = periodos[periodos.length-1].Value; 2359 2360 } else if(perUno > perDos){ 2361 primerPeriodo = periodos[periodos.length-1].Value; 2362 ultimoPeriodo = periodos[0].Value 2363 2364 } else { // si son iguales -> comprar meses si es que tiene 2365 if(periodos[0].Value.indexOf("/") > -1){ // traen meses: 2019/05 2366 var mesUno = parseInt(periodos[0].Value.split("/")[1]); 2367 var mesDos = parseInt(periodos[periodos.length-1].Value.split("/")[1]); 2368 if(mesUno < mesDos){ 2369 primerPeriodo = periodos[0].Value; 2370 ultimoPeriodo = periodos[periodos.length-1].Value 2371 } else { 2372 primerPeriodo = periodos[periodos.length-1].Value 2373 ultimoPeriodo = periodos[0].Value; 2374 } 2375 } else { 2376 primerPeriodo = periodos[periodos.length-1].Value; 2377 ultimoPeriodo = periodos[0].Value 2378 } 2379 2380 } 2381 primerPeriodo = (primerPeriodo.indexOf("/") > -1? primerPeriodo.replaceAll("/","_") : primerPeriodo) 2382 ultimoPeriodo = (ultimoPeriodo.indexOf("/") > -1? ultimoPeriodo.replaceAll("/","_") : ultimoPeriodo+"_12"); 2383 dirMetaDatos = dirServicio + '/' + parametros.idioma + '/' + parametros.indicadorDepurado + '/' + parametros.areaGeografica + '/' + primerPeriodo + '/' + ultimoPeriodo + '/null/' + tematica +'json/' + parametros.token; 2384 // } 2385 // si el periodo es anual solo de enviarse el año sin periodo 2386 /* if (periodo == "Anual") { 2387 primerPeriodo = primerPeriodo.split("_")[0]; 2388 ultimoPeriodo = ultimoPeriodo.split("_")[0]; 2389 } */ 2390 2391 metaRequestPromise = $.getJSON(dirMetaDatos + "?callback=?", null).then(function (data) { return data; }); 2392 } else { 2393 if (aCuadrosNuevoMetodoPost.indexOf(parseInt(parametros.tipoCuadro)) > -1) { // nuevo metodo metadatoindicador POST 2394 primerPeriodo = periodos[0].Value.indexOf("/") > -1 ? replaceAll("/", "_", periodos[0].Value) : periodos[0].Value; 2395 ultimoPeriodo = periodos[periodos.length - 1].Value.indexOf("/") > -1 ? replaceAll("/", "_", periodos[periodos.length - 1].Value) : periodos[periodos.length - 1].Value; 2396 ultimoPeriodo = (ultimoPeriodo.indexOf(primerPeriodo) > -1) ? ultimoPeriodo.split("_")[0] + "_12" : ultimoPeriodo; // si el año del periodo es el mismo en los 2 2397 // si el periodo es anual solo de enviarse el año sin periodo 2398 if (periodo == "Anual") { 2399 primerPeriodo = primerPeriodo.split("_")[0]; 2400 ultimoPeriodo = ultimoPeriodo.split("_")[0]; 2401 } 2402 dirServicio = direccionServicio + '/MetadatoIndicadorV2'; 2403 var datosServicio = { 2404 idioma: parametros.idioma, 2405 indicador: parametros.indicadorDepurado, 2406 areaGeografica: parametros.areaGeografica, 2407 periodoinicial: primerPeriodo, 2408 periodofinal: ultimoPeriodo, 2409 mostrarGenerica: "null", 2410 formato: "json", 2411 token: parametros.token 2412 } 2413 if (tematica != "") { 2414 datosServicio.tematica = tematica.replace("/",""); 2415 } 2416 } else { 2417 var datosServicio = { 2418 idioma: parametros.idioma, 2419 indicador: parametros.indicadorDepurado, 2420 areaGeografica: parametros.areaGeografica, 2421 periodo: ultimoPeriodo, 2422 mostrarGenerica: "null", 2423 formato: "json", 2424 token: parametros.token 2425 } 2426 if (tematica != "") { 2427 datosServicio.tematica = tematica.replace("/",""); 2428 } 2429 } 2430 var datoSend = JSON.stringify(datosServicio); 2431 var _this = this; 2432 var tipo = "POST"; 2433 metaRequestPromise = $.ajax({
2434 // type: tipo, 2435 method: tipo, 2436 url: dirServicio, 2437 contentType: "application/json", 2438 dataType: "json", 2439 data: datoSend, 2440 // processData: true 2441 }).then(function (data) { return data; }); 2442 } 2443 return metaRequestPromise; 2444 2445 } 2446 2447 /// <summary> Convierte el formato de area geografica anterior en el nuevo de 2 digitos por entidad y 3 por municipio. </summary> 2448 /// 2449 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 2450 /// 2451 /// <param name="areaGeografica"> Clave de area geografica. </param> 2452 /// 2453 /// <returns> . </returns> 2454 function ConvierteAreaGeografica(areaGeografica) { 2455 var areaFormateada = "" 2456 if (areaGeografica.indexOf("|") > -1) { 2457 var entidadV = areaGeografica.split("|")[0]; 2458 if (entidadV == undefined) 2459 entidadV = "0"; 2460 var municipioV = (areaGeografica).toString().split("|")[1]; 2461 if (municipioV == undefined) 2462 municipioV = "0"; 2463 areaFormateada = AgregarCeros(entidadV, 2) + AgregarCeros(municipioV, 3); 2464 } 2465 else 2466 areaFormateada = areaGeografica; 2467 return areaFormateada; 2468 } 2469 2470 /// <summary> Despliega un mensaje de error en el contenedor cuando falla alguna consulta. </summary> 2471 /// 2472 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 2473 /// 2474 /// <param name="contenedor"> Contenedor del componente. </param> 2475 /// <param name="errorCode"> Codigo de error. </param> 2476 /// <param name="errorInfo"> Informacion que describe el error. </param> 2477 /// 2478 /// <returns> . </returns> 2479 function MostrarMensajeErrorCuadro(contenedor, errorCode, errorInfo) { 2480 document.getElementById("lblMensaje" + contenedor).style.display = "inline"; 2481 document.getElementById("TableHeader" + contenedor).style.display = "none"; 2482 if (errorCode == "110" || errorCode == "503") 2483 document.getElementById("lblMensaje" + contenedor).innerHTML = "Ocurrió un error inesperado, favor de intentar más tarde"; 2484 else 2485 document.getElementById("lblMensaje" + contenedor).innerHTML = errorInfo; 2486 } 2487 2488 /// <summary> Consulta de valores por HTTP POST, se invoca cuando se consultan varias series y se sobrepasa la 2489 /// longitud maxima de url. </summary> 2490 /// 2491 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 2492 /// 2493 /// <param name="parametros"> Objeto de parametros de configuracion. </param> 2494 /// 2495 /// <returns> . </returns> 2496 function ConsultaPostIndicadores(parametros) { 2497 var direccionServicio = parametros.direccionServicio; 2498 var typeChart = (parametros.tipoCuadro === "12" ? 4 : 3); 2499 // parametros.direccionServicio + '/ValorIndicador/' + parametros.indicadorDepurado + "/" + parametros.areaGeografica + '/null/es/null/null/3/null/' + parametros.nombreCorto + '/' + parametros.esOportuno + '/' + parametros.fe
2499chaInicio + '/' + parametros.fechaFin + "/" + parametros.formatoAreaGeografica + '/json/563cbaa8-58bb-fef8-6763-1f1dae318f99?callback=?', null, function (data) { var direccionServicio = parametros.direccionServicio; 2500 // var tematica = ""; 2501 if (API_V == "v1_2") { 2502 parametros.tematica = (parametros.tematica != "" ? parametros.tematica + "/" : "null/"); 2503 direccionServicio = C_direccionServicio_V + "_" + API_V.toLowerCase() + "/"; 2504 } else if(API_V == "v1_1"){ 2505 // No se hace nada 2506 parametros.tematica = ""; 2507 } else { // API VERSION 3 FINAL 2508 parametros.tematica = (parametros.tematica != "" ? parametros.tematica : "undefined"); 2509 direccionServicio = C_direccionServicio_V + "_" + API_V.toLowerCase() + "/"; 2510 } 2511 direccionServicio = direccionServicio + extension_api_cuadros; 2512 // console.log(tematica); 2513 2514 var bdireccionServicio = direccionServicio + '/ValorIndicador'; 2515 var dataGraf = DataCuadro(parametros.indicadorDepurado, 2516 parametros.areaGeografica, 2517 "null", 2518 parametros.idioma, 2519 "null", 2520 "null", 2521 typeChart, 2522 parametros.orden, parametros.nombreCorto, parametros.esOportuno, parametros.fe
2522chaInicio, 2523 parametros.fechaFin, 2524 parametros.formatoAreaGeografica 2525 , "json", "563cbaa8-58bb-fef8-6763-1f1dae318f99", parametros.tematica 2526 ); 2527 // var _this = this; 2528 var tipo = "POST"; 2529 $.ajax({ 2530 method: tipo, 2531 url: bdireccionServicio, 2532 contentType: "application/json", 2533 dataType: "json", 2534 data: dataGraf, 2535 success: function (data) { 2536 parametros.listaExcepciones = data.exceptions; 2537 switch (parametros.condicionCuadro) { 2538 case "CuadroGruposA": 2539 CasoCompuesto(data, parametros); 2540 break; 2541 default: 2542 CasosCuadro(data, parametros); 2543 break; 2544 2545 } 2546 }, 2547 error: function (jqXHR, textStatus, errorThrown) { 2548 console.log(textStatus, errorThrown); 2549 } 2550 }); 2551 2552 } 2553 2554 /// <summary> Consulta de datos por HTTP GET. </summary> 2555 /// 2556 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 2557 /// 2558 /// <param name="indicador"> Clave de indicador. </param> 2559 /// <param name="areaGeografica"> Clave de area geografica. </param> 2560 /// <param name="tema"> Clave de tema. </param> 2561 /// <param name="idioma"> Idioma de consulta. </param> 2562 /// <param name="fuente"> Clave de fuente. </param> 2563 /// <param name="periodos"> Periodos. </param> 2564 /// <param name="typeChart"> Tipo de cuadro. </param> 2565 /// <param name="orden"> Orden ascendente o descendente. </param> 2566 /// <param name="nombreCorto"> Muestra nombre corto de los indicadores. </param> 2567 /// <param name="esOportuno"> Muestra valor oportuno. </param> 2568 /// <param name="fechaInicio"> Fecha de inicio de la consulta. </param> 2569 /// <param name="fechaFin"> Fecha de fin de la consulta. </param> 2570 /// <param name="formatoArea"> Muestra nombre abreviado de area geografica. </param> 2571 /// <param name="formato"> Formato xml o JSON. </param> 2572 /// <param name="token"> Clave token de autenticacion. </param> 2573 /// 2574 /// <returns> . </returns> 2575 function DataCuadro(indicador, areaGeografica, tema, idioma, fuente, periodos, typeChart, orden, nombreCorto, esOportuno, fechaInicio, fechaFin, formatoArea, formato, token, tematica) { 2576 var datos = {}; 2577 datos.indicador = indicador; 2578 datos.areaGeografica = areaGeografica; 2579 datos.tema = tema; 2580 datos.idioma = idioma; 2581 // datos.fuente = fuente; 2582 datos.programa_ciclo = fuente; // 28/07/2021 cambio de nombre fuente por programa_ciclo y solo en metodo POST 2583 datos.periodos = periodos; 2584 datos.typeChart = typeChart; 2585 datos.orden = orden; 2586 datos.nombreCorto = (nombreCorto == "true") ? 1 : 0; 2587 datos.esOportuno = esOportuno; 2588 datos.fechaInicio = fechaInicio; 2589 datos.fechaFin = fechaFin; 2590 datos.formato = formato; 2591 datos.token = token; 2592 datos.nomenclaturaEntidad = formatoArea; 2593 datos.tematica = tematica 2594 //this.toJsonString = function () { return JSON.stringify(this); }; 2595 return JSON.stringify(datos); 2596 2597 } 2598 2599 /// <summary> Identifica que tipo de plantilla se dibuja bajo el cuadro. </summary> 2600 /// 2601 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 2602 /// 2603 /// <param name="muestraNota"> Mostrar nota. </param> 2604 /// <param name="muestraFuente"> Mostrar fuente. </param> 2605 /// <param name="fuentePorParametro"> Valor de fuente por parametro. </param> 2606 /// 2607 /// <returns> . </returns> 2608 this.EvaluaFooter = function (muestraNota, muestraFuente, fuentePorParametro) { 2609 var condicionFooter = "ambosFooter"; 2610 // aov checar nota parametro 2611 //if (muestraNota == "true" && muestraFuente == "true") { 2612 // condicionFooter = "ambosFooter"; 2613 //} 2614 //if (muestraNota == "true" && muestraFuente != "true") { 2615 // condicionFooter = "footerNota"; 2616 //} 2617 //if (muestraNota != "true" && muestraFuente == "true") { 2618 // condicionFooter = "fuenteFooter"; 2619 //} 2620 //if (muestraNota != "true" && muestraFuente != "true") { 2621 // condicionFooter = "noFooter"; 2622 //} 2623 2624 return condicionFooter; 2625 } 2626 2627 /// <summary> Dibuja plantilla de notas y fuentes. </summary> 2628 /// 2629 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 2630 /// 2631 /// <param name="footer"> Tipo de plantilla. </param> 2632 /// <param name="sufijo">
2632 Nombre del contenedor. </param> 2633 /// <param name="parametros"> Objeto de parametros de configuracion. </param> 2634 /// 2635 /// <returns> . </returns> 2636 this.FooterGrafica = function (footer, sufijo, parametros) { 2637 var htmlFooter = ""; 2638 var tabIndex = parametros.tabInd; // agregado 14/oct/2020 solamente al contenedor de fuentes y llamadas 2639 tabIndex++; 2640 if (footer != "noFooter") { 2641 htmlFooter += '<div id="divFuentes' + sufijo + '" style= "height:15%;width:100%; overflow-y: auto; display:' + MostrarAreaMetadatos(footer) + ';" tabindex="'+ tabIndex +'">'; 2642 // if (footer == "footerNota" || footer == "ambosFooter") { 2643 if (parametros.muestraNota == "true" || parametros.notaParametro != "" || parametros.mostrarCifraEstatus === "true" || parametros.mostrarSiglaExcepcion === "true") 2644 htmlFooter += ' <table id="tableTitleNotas' + sufijo + '"></table>'; 2645 } 2646 if (parametros.mostrarSiglaExcepcion == "true") { 2647 htmlFooter += ' <table id="tableExceptions' + sufijo + '" style="vertical-align:left!Important;text-align:left !Important"></table>'; 2648 } 2649 //SNM 15.06.2018 cambio de posición solicitd -Nuevo sitio [94] 2650 if (parametros.mostrarCifraEstatus == "true") { 2651 // htmlFooter += ' <table id="tableTitleCifras' + sufijo + '"></table>'; 2652 htmlFooter += ' <table id="tableCifras' + sufijo + '"></table>'; 2653 } 2654 2655 //SNM 15.06.2018 Se saco de la condicion de arriba para que aprezca despues de los estatus - Nuevo sitio [94] 2656 if (footer != "noFooter") { 2657 htmlFooter += ' <table id="tableNota' + sufijo + '" style="vertical-align:left!Important;text-align:left !Important"></table>'; 2658 } 2659 2660 2661 if (parametros.muestraFuente == "true" || parametros.fuentePorParametro != "") { 2662 htmlFooter += ' <table id="tableTitleFuentes' + sufijo + '"></table>'; 2663 htmlFooter += ' <table id="tableFuentes' + sufijo + '" style="vertical-align:left!Important;text-align:left !Important"></table>' 2664 } 2665 2666 if (parametros.mostrarSiglaExcepcion == "true") { 2667 htmlFooter += ' <table id="tableSiglas' + sufijo + '"></table>'; 2668 } 2669 // Para mostrar la leyenda con los colores e informacion segun las condiciones del archivo json para coeficiente de variacion en datos de precision (Añadido 15-06-2021) 2670 // Para datos de Cobertura (cobertura de diseño) para cuadro #8 (Añadido 14-12-2022) 2671 // Ahora solo se valida por el tipo de cuadro: precision, idtema queda obsoleto (14-02-2023) 2672 // if((parametros.tipoCuadro === "precision" && parametros.idtema != "null") || (parametros.tipoCuadro === "8")){ 2673 if(parametros.tipoCuadro === "precision" || parametros.tipoCuadro === "8"){ 2674 var idTipoCuadro = "divReglasPrecision" + sufijo; 2675 htmlFooter += '<div id="'+ idTipoCuadro + sufijo +'">' 2676 +'<table id="tableReglasPrecision'+ sufijo +'" style="line-height:1.5"></table></div>' 2677 +'<div id="divReglasPrecisionExport'+ sufijo +'" style="display:none" informacion_extra="0">' 2678 +'<table id="tableReglasPrecisionExportNotas'+ sufijo +'" style="line-height:1.5"></table>' 2679 +'<table id="tableReglasPrecisionExport'+ sufijo +'" style="line-height:1.5"></table>' 2680 +'</div>'; 2681 } 2682 2683 htmlFooter += '</div>'; 2684 return htmlFooter; 2685 } 2686 2687 /// <summary> Muestra u oculta metadatos. </summary> 2688 /// 2689 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 2690 /// 2691 /// <param name="tipoFooter"> Tipo de footer. </param> 2692 /// 2693 /// <returns> . </returns> 2694 function MostrarAreaMetadatos(tipoFooter) { 2695 var display = "block"; 2696 if (tipoFooter == "noFooter") 2697 display = "none";
2698 return display; 2699 } 2700 2701 /// <summary> Obtiene el valor de un parametro por nombre, si no existe asigna un valor default. </summary> 2702 /// 2703 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 2704 /// 2705 /// <param name="valorEvaluando"> Valor evaluado. </param> 2706 /// <param name="valorDefault"> Valor por default. </param> 2707 /// 2708 /// <returns> . </returns> 2709 function EvaluaParametro(valorEvaluando, valorDefault) { 2710 var valorReturn = valorEvaluando; 2711 if (valorEvaluando == null) 2712 valorReturn = valorDefault; 2713 if (valorEvaluando == undefined) 2714 valorReturn = valorDefault; 2715 return valorReturn; 2716 } 2717 2718 /// <summary> Oculta animacion de carga. </summary> 2719 /// 2720 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 2721 /// 2722 /// <param name="parametros"> Objeto de parametros de configuracion. </param> 2723 /// 2724 /// <returns> . </returns> 2725 function OcultaCarga(parametros) { 2726 document.getElementById("divCargaCuadro" + parametros.contenedorCuadro).style.display = "none"; 2727 } 2728 2729 /// <summary> Agrega ceros a la izquierda para un valor numerico. </summary> 2730 /// 2731 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 2732 /// 2733 /// <param name="valor"> Valor numerico. </param> 2734 /// <param name="cantidadCeros"> Cantidad de ceros. </param> 2735 /// 2736 /// <returns> . </returns> 2737 function AgregarCeros(valor, cantidadCeros) { 2738 var result = valor; 2739 switch (cantidadCeros) { 2740 case 2: 2741 if (parseInt(valor) < 10) 2742 result = "0" + valor; 2743 break; 2744 case 3: 2745 if (parseInt(valor) < 10) 2746 result = "00" + valor; 2747 if (parseInt(valor) > 10 && parseInt(valor) > 100) 2748 result = "00" + valor; 2749 2750 break; 2751 default: 2752 break; 2753 2754 } 2755 2756 return result; 2757 } 2758 2759 /// <summary> Genera cabecera de la tabla con un solo nivel. </summary> 2760 /// 2761 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 2762 /// 2763 /// <param name="label"> Texto de columna principal. </param> 2764 /// <param name="cantidadColumnas"> Cantidad de columnas. </param> 2765 /// <param name="titulosColumnas"> Titulos de columnas. </param> 2766 /// <param name="parametros"> Objeto de parametros de configuracion. </param> 2767 /// 2768 /// <returns> . </returns> 2769 function DibujaCabeceraUnNivelGenerico(label, cantidadColumnas, titulosColumnas, parametros, periodos) { 2770 var cabeceras = ""; 2771 var labelColumnas = ""; 2772 var aPeriodos = periodos || [] 2773 2774 if (parametros.tipoCuadro == "6" || parametros.tipoCuadro == "21") { 2775 if (titulosColumnas.indexOf("|") !== -1 || titulosColumnas.indexOf("-") !== -1) { // si el formato es agrupado ejemplo: [Grupo1-col1,col2,col3|Grupo2-col4,col5|...] (cuado 2: 13-04-2018 10:30 T[65]) 2776 cabeceras += '<tr>' 2777 //columna principal (1) 2778 if (label.indexOf(",") !== -1) { 2779 labelColumnas = label.split(","); 2780 cabeceras += '<tr>' 2781 for (var x = 0; x < labelColumnas.length; x++) { 2782 cabeceras += '<th class ="Th" bgcolor="#DDD" rowspan="2">' + labelColumnas[x] + '</th>'; 2783 } 2784 } else { 2785 cabeceras = '<tr><th class ="Th" bgcolor="#DDD" rowspan="2">' + label + '</th>'; 2786 } 2787 //titulos de grupos principales 2788 // tituloGrupo puede tener 3 valores: (agregado: 28-09-2
2788020) parametro tcl 2789 // 1 - Si en el parametro se indica vacio sera igual a vacio 2790 // 2 - Si en el parametro se indica $periodo sera igual a periodo que regresen los datos 2791 // 3 - Si en el parametro se indica con un texto sera igual a ese texto especificado. 2792 var grupos = titulosColumnas.split("|"); 2793 var tituloGrupo = ""; 2794 for (var x = 0; x < grupos.length; x++) { 2795 var totalGrupo = (grupos[x].split("-")[1]).split(",").length; 2796 if(grupos[x].split("-")[0].indexOf("$periodo") > -1){ 2797 tituloGrupo = periodos[0].Value; 2798 } else if(grupos[x].split("-")[0] === ""){ 2799 tituloGrupo = ""; 2800 } else { 2801 tituloGrupo = grupos[x].split("-")[0]; 2802 } 2803 cabeceras += '<th class ="Th" bgcolor="#DDD" colspan="' + totalGrupo + '">' + tituloGrupo + '</th>'; 2804 } 2805 cabeceras += '</tr><tr>'; 2806 //titulos columnas secundarias (datos) 2807 for (var a = 0; a < grupos.length; a++) { // ciclo para grupos 2808 var columnas = (grupos[a].split("-")[1]).split(","); // Ejemplo: Grupo1-col1,col2... 2809 for (var b = 0; b < columnas.length; b++) { // ciclo para columnas secundarias 2810 var tituloColumma = columnas[b]; 2811 cabeceras += '<th class ="Th" bgcolor="#DDD" >' + tituloColumma + '</th>'; 2812 } 2813 } 2814 2815 2816 cabeceras += '</tr><tr>'; 2817 } else { 2818 var listaTitulosColumnas = titulosColumnas.split(","); 2819 if (label.indexOf(",") !== -1) { 2820 labelColumnas = label.split(","); 2821 cabeceras += '<tr>' 2822 for (var x = 0; x < labelColumnas.length; x++) { 2823 cabeceras += '<th class ="Th" bgcolor="#DDD" >' + labelColumnas[x] + '</td>'; 2824 } 2825 } else { 2826 cabeceras = '<tr><th class ="Th" bgcolor="#DDD" >' + label + '</td>'; 2827 } 2828 for (var i = 0; i < cantidadColumnas; i++) { 2829 var textoTituloColumna = ""; // aov va a cambiar segun el caso 2830 if (titulosColumnas.split(",")[i] != undefined) 2831 textoTituloColumna = titulosColumnas.split(",")[i]; 2832 cabeceras += '<th class ="Th" bgcolor="#DDD">' + textoTituloColumna + '</th>'; 2833 } 2834 cabeceras += '</tr><tr>'; 2835 } 2836 } 2837 2838 return cabeceras; 2839 } 2840 2841 /// <summary> Dibuja renglones con identacion y/o negritas. </summary> 2842 /// 2843 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 2844 /// 2845 /// <param name="texto"> Texto del renglon. </param> 2846 /// <param name="pintaBold"> Pintar en negritas. </param> 2847 /// <param name="identacion"> Espacios de identacion. </param> 2848 /// <param name="descripcionOriginal"> Descripcion original. </param> 2849 /// <param name="descripcionParametro"> Descripcion por parametro. </param> 2850 /// <param name="indiceColor"> Indice de color para tableado. </param> 2851 /// 2852 /// <returns> . </returns> 2853 function FormatoRenglonTipo7(texto, pintaBold, identacion, descripcionOriginal, descripcionParametro, indiceColor) { 2854 var textoFormateado = texto; 2855 //SNM 09.08.2017 Se divide el texto cuando hay dos titulos separador ° 2856 var columna1 = ""; 2857 var columna2 = ""; 2858 if (descripcionParametro.indexOf("°") > 0) { 2859 var splittituloGrupo = descripcionParametro.split("°"); 2860 columna1 = "<th "; 2861 columna2 = "<th "; 2862 2863 if (pintaBold) { 2864 textoFormateado = textoFormateado.replace(/class="Td"/g, 'class="TdB"'); 2865 columna1 += "class='TdInicioB'>"; 2866 columna2 += "class='TdInicioB'>"; 2867 } 2868 else { 2869 columna1 += "class='TdInicio'>"; 2870 columna2 += "class='TdInicio'>" 2871 } 2872 2873 2874 if (identacion != undefined && identacion != "") { 2875 columna1 += '<div style="padding-left:' + IndentacionPadding(identacion) + 'px;" >' + splittituloGrupo[0] + '</div>'; 2876 columna2 += '<div style="padding-left:' + IndentacionPadding(identacion) + 'px;" >' + splittituloGrupo[1] + '</div>'; 2877 } 2878 else { 2879 columna1 += splittituloGrupo[0] + '</th>' 2880 columna2 += splittituloGrupo[1] + '</th>' 2881 } 2882 2883 //var inicio = descripcionOriginal.indexOf("<th"); 2884 var fin = texto.indexOf("/th>"); 2885 textoFormateado = columna1 + columna2 + texto.substring(fin + 4); 2886 } 2887 else { 2888 if (pintaBold) { 2889 textoFormateado = textoFormateado.replace(/class="Td"/g, 'class="TdB"'); 2890 textoFormateado = textoFormateado.replace(/class="TdInicio"/g, 'class="TdInicioB"'); 2891 } 2892 if (identacion != undefined && identacion != "") { 2893 descripcionParametro = '<div style="padding-left:' + IndentacionPadding(identacion) + 'px;" >' + descripcionParametro + '</div>'; 2894 } 2895 textoFormateado = textoFormateado.replace(descripcionOriginal, descripcionParametro); 2896 } 2897 2898 /* 2899 var textoFormateado = texto; 2900 if (pintaBold) { 2901 textoFormateado = textoFormateado.replace(/class="Td"/g, 'class="TdB"'); 2902 textoFormateado = textoFormateado.replace(/class="TdInicio"/g, 'class="TdInicioB"'); 2903 } 2904 if (identacion != undefined && identacion != "") { 2905 descripcionParametro = '<div style="padding-left:' + IndentacionPadding(identacion) + 'px;" >' + descripcionParametro + '</div>'; 2906 } 2907 // textoFormateado = replaceAll(descripcionOriginal, descripcionParametro, textoFormateado); 2908 textoFormateado = textoFormateado.replace(descripcionOriginal, descripcionParametro); 2909 2910 //textoFormateado = replaceAll('bgcolor="white"', 'bgcolor="' + ColorRenglon(indiceColor) + '"', textoFormateado); 2911 */ 2912 return textoFormateado; 2913 } 2914 2915 /// <summary> Calcula pixeles por nivel de identacion. </summary> 2916 /// 2917 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 2918 /// 2919 /// <param name="identacion"> Nivel de identacion. </param> 2920 /// 2921 /// <returns> . </returns> 2922 function IndentacionPadding(identacion) { 2923 var cantidadPad = 10; 2924 cantidadPad *= identacion; 2925 return cantidadPad; 2926 } 2927 2928 /// <summary> Reemplaza todas las ocurrencias de un texto dentro de una cadena. </summary> 2929 /// 2930 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 2931 /// 2932 /// <param name="find"> Texto buscado. </param> 2933 /// <param name="replace"> Valor que reemplaza el texto. </param> 2934 /// <param name="str"> Cadena procesada. </param> 2935 /// 2936 /// <returns> . </returns> 2937 function replaceAll(find, replace, str) { 2938 return str.replace(new RegExp(find, 'g'), replace); 2939 } 2940 2941 /// <summary> Identifica casos de cuadro y procede a sus respectivos tratamientos. </summary> 2942 /// 2943 /// <remarks> Robert, 11/11/2019. </remarks> 2944 /// 2945 /// <param name="data"> Datos de indicadores en formato JSON. </param> 2946 /// <param name="parametros"> Objeto de parametros de configuracion. </param> 2947 /// 2948 /// <returns> . </returns> 2949 function CasosCuadro(data, parametros) { 2950 2951 if (data.ErrorCode != undefined) { 2952 OcultaCarga(parametros);
2953 MostrarMensajeErrorCuadro(parametros.contenedorCuadro, data.ErrorCode, data.ErrorInfo); 2954 } 2955 else { 2956 this.ValoresCuadro = data; 2957 parametros.tipoCuadro = (parametros.D3Enabled === "true") ? "8sdmx" : parametros.tipoCuadro; 2958 if(parametros.tipoCuadro != "18") DibujaTitulo(parametros); 2959 switch (parametros.tipoCuadro) { 2960 case "1": 2961 DibujaCuadroTipo1(data, parametros); 2962 break; 2963 case "2": 2964 if (parametros.grid_configuracion === null) { 2965 if (parametros.mostrarCifraEstatus === "true") { 2966 var promesaMetaIndicador = ConsultaMetaIndicador(parametros, data); 2967 $.when(promesaMetaIndicador).done(function (dataMetaIndicador) { 2968 data.CIFRAS_ESTATUS = dataMetaIndicador.CIFRAS_ESTATUS; 2969 DibujaCuadroTipo2(data, parametros); 2970 PintaConsultaMetaDatos(dataMetaIndicador, parametros, data); 2971 }); 2972 } else { 2973 DibujaCuadroTipo2(data, parametros); 2974 } 2975 } else { 2976 if (parametros.mostrarCifraEstatus === "true") { // si se requiere mostrar letra en encabezado periodos entonces realiza la petición 2977 var promesaMetaIndicador = ConsultaMetaIndicador(parametros, data); 2978 $.when(promesaMetaIndicador).done(function (dataMetaIndicador) { 2979 data.CIFRAS_ESTATUS = dataMetaIndicador.CIFRAS_ESTATUS; 2980 // data.NOTAS = dataMetaIndicador.NOTAS; 2981 DibujaCuadroTipo2_New(data, parametros); 2982 PintaConsultaMetaDatos(dataMetaIndicador, parametros, data); 2983 }); 2984 } else { 2985 data.CIFRAS_ESTATUS = []; 2986 DibujaCuadroTipo2_New(data, parametros); 2987 } 2988 } 2989 break; 2990 case "3": 2991 DibujaCuadroTipo3(data, parametros); 2992 break; 2993 case "4": 2994 DibujaCuadroTipoTrimestre(data, parametros); 2995 break; 2996 case "6": 2997 DibujaCuadroTipo6Compuesto(data, parametros); 2998 break; 2999 case "7": 3000 if (parametros.grid_configuracion === null) { 3001 3002 var promesaMetaIndicador = ConsultaMetaIndicador(parametros, data); 3003 $.when(promesaMetaIndicador).done(function (dataMetaIndicador) { 3004 data.CIFRAS_ESTATUS = dataMetaIndicador.CIFRAS_ESTATUS === undefined ? [] : dataMetaIndicador.CIFRAS_ESTATUS; 3005 data.NOTAS = dataMetaIndicador.NOTAS; 3006 DibujaCuadroTipo7(data, parametros); 3007 PintaConsultaMetaDatos(dataMetaIndicador, parametros, data); 3008 }); 3009 } else { 3010 //DibujaCuadroTipo7_New(data, parametros); 3011 var promesaMetaIndicador = ConsultaMetaIndicador(parametros, data); 3012 $.when(promesaMetaIndicador).done(function (dataMetaIndicador) { 3013 data.CIFRAS_ESTATUS = dataMetaIndicador.CIFRA
3013S_ESTATUS === undefined ? [] : dataMetaIndicador.CIFRAS_ESTATUS; 3014 data.NOTAS = dataMetaIndicador.NOTAS; 3015 DibujaCuadroTipo7_New(data, parametros); 3016 PintaConsultaMetaDatos(dataMetaIndicador, parametros, data); 3017 }); 3018 } 3019 //DibujaCuadroTipo7Prioridad(data, parametros); 3020 break; 3021 case "8": 3022 // Modificacion para que consulta los datos de los metadatos antes de dibujar el cuadro 3023 // modificacion: 10-04-2018 10:00 am 3024 var promesaMetaIndicador = ConsultaMetaIndicador(parametros, data); 3025 $.when(promesaMetaIndicador).done(function (dataMetaIndicador) { 3026 data.UNIDAD_MEDIDA = dataMetaIndicador.UNIDAD_MEDIDA; 3027 data.FACTOR = dataMetaIndicador.FACTOR; 3028 data.CIFRAS_ESTATUS = dataMetaIndicador.CIFRAS_ESTATUS === undefined ? [] : dataMetaIndicador.CIFRAS_ESTATUS; 3029 data.NOTAS = dataMetaIndicador.NOTAS; 3030 DibujaCuadroTipo8(data, parametros); 3031 PintaConsultaMetaDatos(dataMetaIndicador, parametros, data); 3032 }); 3033 break; 3034 case "8sdmx": 3035 DibujaCuadroTipo8SDMX(data, parametros); 3036 break; 3037 case "9": 3038 DibujaCuadroTipo9(data, parametros); 3039 break; 3040 case "10": 3041 DibujaCuadroTipo9(data, parametros); 3042 break; 3043 case "11": 3044 DibujaCuadroTipo11(data, parametros); 3045 break; 3046 case "12": 3047 var promesaMetaIndicador = ConsultaMetaIndicador12(parametros, data, function(dataMetaIndicador){ 3048 data.CIFRAS_ESTATUS = dataMetaIndicador.CIFRAS_ESTATUS; 3049 data.FUENTES = dataMetaIndicador.FUENTES; 3050 data.NOTAS = dataMetaIndicador.NOTAS; 3051 // Si llegan notas entonces buscamos las repeticiones por cada sigla para poder contar el numero de veces que se repite; 3052 if(data.NOTAS.length > 0){ 3053 // function contarSigla(letraBuscar){ 3054 // const numRepeticiones = data.NOTAS.filter((n) => { 3055 // return n.SIGLA === letraBuscar? 1 : 0 3056 // }).length; 3057 // if(numRepeticiones > 1){ 3058 // let i = 1; 3059 // data.NOTAS.forEach((n, idx) => { 3060 // if(n.SIGLA === letraBuscar) data.NOTAS[idx].diferenciador = i++ 3061 // }) 3062 // } 3063 // } 3064 let tempNotas = data.NOTAS.map((N) => { N._SIGLA = N.SIGLA; return N;}); 3065 // tempNotas.forEach((n) => { contarSigla(n.SIGLA); }) 3066 3067 //NUEVA ASIGNACION DE SIGLAS 3068 let tempSigLetra = ""; 3069 for (let idx = 0; idx < tempNotas.length; idx++) { 3070 let actual = tempNotas[idx]._SIGLA.charCodeAt(0) 3071 let siguiente = tempNotas[idx+1]?._SIGLA == undefined? tempNotas[idx]._SIGLA.charCodeAt(0) : tempNotas[idx+1]?._SIGLA.charCodeAt(0) 3072 3073 if(actual > siguiente){ 3074 if(tempSigLetra == "" ){ 3075 tempSigLetra = String.fromCharCode(tempNotas[idx]._SIGLA.charCodeAt(0)+1); 3076 tempNotas[idx+1]._SIGLA = tempSigLetra; 3077 tempSigLetra = "" 3078 } 3079 } else { 3080 if(tempSigLetra !== "") { 3081 tempNotas[idx]._SIGLA = tempSigLetra 3082 tempSigLetra = ""; 3083 } 3084 } 3085 } 3086 data.NOTAS = tempNotas 3087 3088 } 3089 3090 // return; 3091 PintaConsultaMetaDatos(dataMetaIndicador, parametros, data); 3092 DibujaCuadroTipo12_2023(data, parametros); 3093 // DibujaCuadroTipo12_New(data, parametros); 3094 }); 3095 break; 3096 case "13": 3097 DibujaCuadroTipo13V2_New(data, parametros); // para el nuevo formato de areas geograficas + api v2 (10/07/2019) 3098 break; 3099 case "13v2": 3100 DibujaCuadroTipo13V3_New(data, parametros); // para el nuevo formato de areas geograficas + api v2 (10/07/2019) 3101 break; 3102 case "14": // derivado del cuadro 7 (periodos + columna anual por cada uno) (modificacion: 6-mar-2018 9:00 am) 3103 //var promesaValorIndicadoresAnual = ConsultaValorIndicadoresAnual(parametros); 3104 //$.when(promesaValorIndicadoresAnual).done(function (dataValorIndicadoresAnual) { 3105 // console.log(dataValorIndicadoresAnual); 3106 // if (dataValorIndicadoresAnual.ErrorCode) { 3107 // throw "Aviso: no se encontraron datos para IA"; 3108 // } else { 3109 // data.indicadoresAnuales = dataValorIndicadoresAnual; 3110 DibujaCuadroTipo14(data, parametros); 3111 //} 3112 //}); 3113 break 3114 case "15": 3115 DibujaCuadroTipo15_New(data, parametros); 3116 break; 3117 case "16": 3118 DibujaCuadroTipo16(data, parametros); 3119 break; 3120 case "17": // Agregado el 28/03/2019 3121 if (parametros.mostrarCifraEstatus === "true") { 3122 var promesaMetaIndicador = ConsultaMetaIndicador(parametros, data); 3123 $.when(promesaMetaIndicador).done(function (dataMetaIndicador) { 3124 data.CIFRAS_ESTATUS = dataMetaIndicador.CIFRA
3124S_ESTATUS; 3125 DibujaCuadroTipo17(data, parametros); 3126 PintaConsultaMetaDatos(dataMetaIndicador, parametros, data); 3127 }); 3128 } else { 3129 DibujaCuadroTipo17(data, parametros); 3130 } 3131 break; 3132 case "18": // Cuadro para localidades #18 - infoLocalidad 3133 // DibujaCuadroTipo18_LocalidadesV3(data, parametros); // es el que se esta modificando 3134 // actualizacion del metodo 05-07-2024 3135 // con datos nuevos y de SCITEL 3136 // parametros nuevos: periodo y version 3137 3138 if(parametros.periodoLocalidad !== null && parametros.versionLocalidad !== null){ 3139 DibujaCuadroTipo18_LocalidadesV4_2024(data, parametros, function(){ 3140 DibujaDatosSITEL(data, parametros) 3141 }); // con parametro dis = display = [1,2] 3142 } else { 3143 DibujaCuadroTipo18_LocalidadesV4(data, parametros); // con parametro dis = display = [1,2] 3144 } 3145 break; 3146 case "precision": 3147 // modificado el 14-02-2023 3148 if (parametros.mostrarCifraEstatus === "true") { 3149 var promesaMetaIndicador = ConsultaMetaIndicador(parametros, data); 3150 $.when(promesaMetaIndicador).done(function (dataMetaIndicador) { 3151 data.CIFRAS_ESTATUS = dataMetaIndicador.CIFRAS_ESTATUS; 3152 DibujaCuadroTipoPrecision(data, parametros); 3153 PintaConsultaMetaDatos(dataMetaIndicador, parametros, data); 3154 }); 3155 } else { 3156 DibujaCuadroTipoPrecision(data, parametros); 3157 BuscaMetaDatos(parametros, data); 3158 } 3159 break; 3160 /* case "precision": 3161 // modificado el 15-06-2021 3162 // DEPRECATED DATE: 14-02-2023 3163 checkReglasDatosPrecision(parametros, data, function(datos){ 3164 data = datos; // reemplazamos el objeto con el que regresa el callback con los datos de precision incluidos 3165 if (parametros.mostrarCifraEstatus === "true") { 3166 var promesaMetaIndicador = ConsultaMetaIndicador(parametros, data); 3167 $.when(promesaMetaIndicador).done(function (dataMetaIndicador) { 3168 data.CIFRAS_ESTATUS = dataMetaIndicador.CIFRAS_ESTATUS; 3169 DibujaCuadroTipoPrecision(data, parametros); 3170 PintaConsultaMetaDatos(dataMetaIndicador, parametros, data); 3171 }); 3172 } else { 3173 DibujaCuadroTipoPrecision(data, parametros); 3174 BuscaMetaDatos(parametros, data); 3175 } 3176 }); 3177 break; */ 3178 case "precision2": 3179 case "precision3": 3180 if (parametros.mostrarCifraEstatus === "true") { 3181 var promesaMetaIndicador = ConsultaMetaIndicador(parametros, data); 3182 $.when(promesaMetaIndicador).done(function (dataMetaIndicador) { 3183 data.CIFRAS_ESTATUS = dataMetaIndicador.CIFRA
3183S_ESTATUS; 3184 DibujaCuadroTipoPrecisionV2(data, parametros); 3185 PintaConsultaMetaDatos(dataMetaIndicador, parametros, data); 3186 }); 3187 } else { 3188 DibujaCuadroTipoPrecisionV2(data, parametros); 3189 } 3190 break; 3191 case "20": // (28-05-2019) varios indicadores / 1 area geografica / 1 periodo o ultimo periodo 3192 DibujaCuadroTipo20(data, parametros); 3193 3194 case "21": // (12-11-2019) regiones - un indicador / varias regiones / un periodo 3195 if (parametros.mostrarCifraEstatus === "true") { 3196 var promesaMetaIndicador = ConsultaMetaIndicador(parametros, data); 3197 $.when(promesaMetaIndicador).done(function (dataMetaIndicador) { 3198 data.CIFRAS_ESTATUS = dataMetaIndicador.CIFRAS_ESTATUS; 3199 DibujaCuadroTipo21(data, parametros); 3200 PintaConsultaMetaDatos(dataMetaIndicador, parametros, data); 3201 }); 3202 } else { 3203 DibujaCuadroTipo21(data, parametros); 3204 } 3205 break; 3206 case "scitel": // Informacion de SCITEL agregado: 12/7/2025 3207 DibujaCuadroTipoScitel(data, parametros); 3208 break; 3209 default: 3210 break; 3211 } 3212 //-------------------------- 3213 OcultaCarga(parametros); 3214 // Se agrega la validación para que no busque metadatos del caso cuadro scitel (12-07-2025) 3215 if (parametros.D3Enabled === "false" && parametros.tipoCuadro !== "scitel") { // solo cuadro 8 y que tengan activo el parametro d3 3216 if (parametros.tipoCuadro !== "13v2" && parametros.tipoCuadro !== "13" && parametros.tipoCuadro !== "12" && parametros.tipoCuadro !== "8" && parametros.tipoCuadro !== "2" && parametros.tipoCuadro !== "7" && parametros.tipoCuadro !== "17" && parametros.tipoCuadro !== "precision" && parametros.tipoCuadro !== "precision2023" && parametros.tipoCuadro !== "precision2" && parametros.tipoCuadro !== "precision3" && parametros.tipoCuadro !== "18" && parametros.tipoCuadro !== "21") { 3217 BuscaMetaDatos(parametros, data); 3218 } else { 3219 if (parametros.tipoCuadro === "2" && parametros.mostrarCifraEstatus == "false") { 3220 BuscaMetaDatos(parametros, data); 3221 } 3222 } 3223 } 3224 } 3225 3226 } 3227 /** 3228 * @Descripción OBTIENE LOS DATOS DE SITEL 3229 * @creado 13.3.2025 3230 * @param {*} data 3231 * @param {*} parametros 3232 */ 3233 function DibujaDatosSITEL(datos, parametros){ 3234 // console.log(parametros) 3235 // let ag = parametros.areaLocalidad; 3236 let areaGeo = parametros.areaLocalidad; 3237 let periodo = parametros.periodoLocalidad 3238 let ent, mpio, loc = ""; 3239 // let areaGeo = "/700/"; 3240 3241 // if(ag.length === 2 || ag.length == "00"){ // estatal 3242 // areaGeo += Number(ag)+"/"; 3243 3244 // } else if(ag.length === 5){ // municipio 3245 // ent = Number(ag.substring(0,2)); 3246 // mpio = Number(ag.substring(2,ag.length)); 3247 // areaGeo += ent+"/"+mpio+"/" 3248 3249 // } else if(ag.length === 9){ // localidad 3250 // ent = Number(ag.substring(0,2)); 3251 // mpio = Number(ag.substring(2,5)); 3252 // loc = Number(ag.substring(5,9)) 3253 // areaGeo += ent+"/"+mpio+"/"+loc+"/" 3254 3255 // } 3256 //mensaje cargando 3257 let divLoading = document.createElement("div");
3258 divLoading.innerHTML = "Cargando datos SCITEL..." 3259 divLoading.classList.add("mt-4") 3260 divLoading.style.textAlign= "center" 3261 divLoading.style.fontWeight= "bold" 3262 divLoading.style.fontSize= "15px" 3263 document.querySelector("#"+parametros.contenedorCuadro).append(divLoading) 3264 3265 const postDatosSitel = () => { 3266 url = C_direccionServicio + "IndicadoresSitel" 3267 var bodyParametros = { 3268 "periodo": periodo === "null"? "2020" : periodo, 3269 "areageo": areaGeo, 3270 "formato": "json", 3271 "token": parametros.token 3272 } 3273 const response = fetch(url,{method:"POST",body:JSON.stringify(bodyParametros),headers:{"Content-type":"application/json; charset=UTF-8"}}, function(d){ return d}) 3274 response 3275 .then(resp => { 3276 if (!resp.ok) { 3277 throw Error(resp.status); 3278 } 3279 return resp.json(); 3280 3281 }).then(resp => { 3282 3283 let DIVTABLE = document.createElement("div") 3284 let TITULO = document.createElement("h5") 3285 TITULO.innerHTML = "Información de SCITEL (datos en bruto)" 3286 TITULO.classList.add("mt-4") 3287 DIVTABLE.id = "divDatosSitel_"+parametros.contenedorCuadro 3288 3289 if(resp.ErrorCode){ 3290 DIVTABLE.innerHTML = "No hay datos" 3291 document.querySelector("#"+parametros.contenedorCuadro).append(TITULO) 3292 document.querySelector("#"+parametros.contenedorCuadro).append(DIVTABLE) 3293 3294 } else { 3295 3296 let datos = JSON.parse(resp) 3297 let TABLE = document.createElement("table") 3298 DIVTABLE.style.height = "450px"; 3299 DIVTABLE.style.overflowX = "auto"; 3300 DIVTABLE.style.overflowY = "auto"; 3301 TABLE.classList.add("table","table-bordered","table-responsive") 3302 let THEAD = document.createElement("thead") 3303 let TBODY = document.createElement("tbody") 3304 let TR = document.createElement("tr") 3305 let TH = document.createElement("th") 3306 let TD = document.createElement("td") 3307 TABLE.append(THEAD); 3308 TABLE.append(TBODY); 3309 DIVTABLE.append(TABLE); 3310 document.querySelector("#"+parametros.contenedorCuadro).append(TITULO) 3311 document.querySelector("#"+parametros.contenedorCuadro).append(DIVTABLE) 3312 3313 // COLUMNAS 3314 let aPropiedades = Object.keys(datos[0]) 3315 let trCols = TR.cloneNode(true); 3316 3317 aPropiedades.forEach((c, idx) => { 3318 let th = TH.cloneNode(true); 3319 th.innerHTML = c; 3320 trCols.append(th); 3321 }) 3322 THEAD.append(trCols); 3323 3324 //DATOS / RENGLONES 3325 for(var i = 0; i < datos.length; i++){ 3326 let aTR = TR.cloneNode(true); 3327 let aValues = Object.values(datos[i]); 3328 aValues.forEach((v, idxv) => { 3329 let td = TD.cloneNode(true); 3330 td.innerHTML = v === null? "null" : v; 3331 aTR.append(td); 3332 }) 3333 TBODY.append(aTR); 3334 } 3335 } 3336 divLoading.remove() 3337 3338 }) 3339 3340 } 3341 postDatosSitel(); 3342 } 3343 /** 3344 * Metodo encargado de validar los datos de precision con reglas condicionales para colorear los valores en el cuadro. 3345 * Se omite idtema y archivo de reglas json. (14-02-2023) 3346 * Se usaran las reglas que llegan de la API en precision_rule (14-02-2023) 3347 * @param {*} parametros 3348 * @param {*} datos 3349 * @param {*} callback 3350 * @created 15-06-2021 3351 */ 3352 function checkReglasDatosPrecision(parametros, datos, callback){ 3353 3354 // obsoleta: probablemente no se necesite una funcion como esta 3355 if(parametros.idTema !== "null"){ // si el idTema es diferente a null entonces continua con la validacion de datos 3356 var https = window.location.protocol.indexOf("https:") > -1? "https" : "http"; 3357 var aTemas, oTema; 3358 if(window.location.href.indexOf("localhost") > -1){ 3359 pathArchivo = "./scripts/reglasDatosPrecision.json"; 3360 } else { 3361 pathArchivo = window.location.origin +"/componentes/biinegi/reglasDatosPrecision.json"; 3362 } 3363 $.getJSON(pathArchivo, function (data) { 3364 aTemas = data.temas; 3365 3366 // con el idtema de los parametros buscaremos el tema para extraer las condiciones del json 3367 oTema = aTemas.filter(function(tema, idx){ 3368 return tema.idTema == parametros.idTema; 3369 })[0] 3370 3371 }).error(function (error) { 3372 console.log(error); 3373 console.error("Error: No se pudo leer el archivo json.") 3374 3375 }).done(function () { 3376 // guardamos el tema y condiciones en el objeto datos principal y lo regresamos en el callback 3377 datos.precitionRules = oTema; 3378 callback(datos); 3379 }) 3380 } else { // si el idTema es null continua sin validar y construye el cuadro sin validaciones. 3381 callback(datos) 3382 } 3383 } 3384 //function ConsultaValorIndicadoresAnual(parametros) { 3385 // var indicadoresAnuales = []; 3386 // //separamos los ultimos indicadores de cada grupo (son los anuales) 3387 // $.each(parametros.indicadorValorCompuesto.grupos, function (idx, item) { 3388 // indicadoresAnuales.push(item.indicadores[item.indicadores.length - 1]); 3389 // }); 3390 // var promesaRequestValorIndicadores = null; 3391 // if (parametros.indicadorDepurado.length < 200) { 3392 // //var typeChart = 3; 3393 // console.log(parametros.direccionServicio + '/ValorIndicador/' + indicadoresAnuales.join(",") + "/" + parametros.areaGeografica + '/null/' + parametros.idioma + '/null/null/3/' + parametros.orden + '/' + parametros.nombreCorto + '/null/' + parametros.fe
3393chaInicio + '/' + parametros.fechaFin + "/" + parametros.formatoAreaGeografica + '/json/563cbaa8-58bb-fef8-6763-1f1dae318f99?callback=?'); 3394 // //console.log(parametros.direccionServicio + '/ValorIndicador/' + parametros.indicadorDepurado + "/" + parametros.areaGeografica + '/null/' + parametros.idioma + '/null/null/' + typeChart + '/' + parametros.orden + '/' + parametros.nombreCorto + '/' + parametros.esOportuno + '/' + parametros.fechaInicio + '/' + parametros.fechaFin + "/" + parametros.formatoAreaGeografica + '/json/563cbaa8-58bb-fef8-6763-1f1dae318f99'); 3395 // promesaRequestValorIndicadores = $.ajax({ 3396 // url: parametros.direccionServicio + '/ValorIndicador/' + indicadoresAnuales.join(",") + "/" + parametros.areaGeografica + '/null/' + parametros.idioma + '/null/null/3/' + parametros.orden + '/' + parametros.nombreCorto + '/' + parametros.esOportuno + '/' + parametros.fechaInicio + '/' + parametros.fechaFin + "/" + parametros.formatoAreaGeografica + '/json/563cbaa8-58bb-fef8-6763-1f1dae318f99?callback=?', 3397 // dataType: "json" 3398 // }).then(function (data) { return data; }); 3399 // } else { 3400 // // parametros.direccionServicio + '/ValorIndicador/' + parametros.indicadorDepurado + "/" + parametros.areaGeografica + '/null/es/null/null/3/null/' + parametros.nombreCorto + '/' + parametros.esOportuno + '/' + parametros.fe
3400chaInicio + '/' + parametros.fechaFin + "/" + parametros.formatoAreaGeografica + '/json/563cbaa8-58bb-fef8-6763-1f1dae318f99?callback=?', null, function (data) { 3401 // var bdireccionServicio = parametros.direccionServicio + '/ValorIndicador'; 3402 // var dataGraf = DataCuadro(parametros.indicadorDepurado, 3403 // parametros.areaGeografica, 3404 // "null", 3405 // parametros.idioma, 3406 // "null", 3407 // "null", 3408 // 3, 3409 // parametros.orden, parametros.nombreCorto, null, parametros.fechaInicio, 3410 // parametros.fechaFin, 3411 // parametros.formatoAreaGeografica 3412 // , "json", "563cbaa8-58bb-fef8-6763-1f1dae318f99"); 3413 3414 // var _this = this; 3415 // var tipo = "post"; 3416 // promesaRequestValorIndicadores = $.ajax({ 3417 // type: tipo, 3418 // url: bdireccionServicio, 3419 // contentType: "application/json; charset=utf-8", 3420 // dataType: "json", 3421 // data: dataGraf, 3422 // processData: true 3423 // }).then(function (data) { 3424 // return data; 3425 // }); 3426 // } 3427 // return promesaRequestValorIndicadores; 3428 //} 3429 3430 /// <summary> Dibuja cuadro de indicador compuesto. </summary> 3431 /// 3432 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 3433 /// 3434 /// <param name="data"> Datos de indicadores en formato JSON. </param> 3435 /// <param name="parametros"> Objeto de parametros de configuracion. </param> 3436 /// 3437 /// <returns> . </returns> 3438 function CasoCompuesto(data, parametros) { 3439 if (data.ErrorCode != undefined) { 3440 OcultaCarga(parametros); 3441 MostrarMensajeErrorCuadro(parametros.contenedorCuadro, data.ErrorCode, data.ErrorInfo); 3442 } 3443 else { 3444 DibujaTitulo(parametros); 3445 DibujaCuadroTipo1Compuesto(data, parametros); 3446 OcultaCarga(parametros); 3447 BuscaMetaDatos(parametros, data); 3448 } 3449 3450 } 3451 3452 /// <summary> Coloca un div con un titulo sobre el cuadro. </summary> 3453 /// 3454 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 3455 /// 3456 /// <param name="parametros"> Objeto de parametros de configuracion. </param> 3457 /// 3458 /// <returns> . </returns> 3459 function DibujaTitulo(parametros) { 3460 var tableHeader = document.getElementById("TableHeader" + parametros.contenedorCuadro); 3461 var tableEspacio = document.getElementById("TableEspacio" + parametros.contenedorCuadro); 3462 3463 // tableHeader.style["background-color"] = "#"+colorHeader; 3464 // var btnShare = document.getElementById("btnShare" + parametros.contenedorCuadro); 3465 var cellHeaderTitle = document.getElementById("CellHeaderTitle" + parametros.contenedorCuadro); 3466 // var cellShare = document.getElementById("CellHeaderShare" + parametros.contenedorCuadro); 3467 3468 var RowHeader = document.getElementById("RowHeader" + parametros.contenedorCuadro); 3469 // btnShare.style.visibility = "visible"; 3470 var pintarElTitulo = true; 3471 if (parametros.titulo == "") { 3472 pintarElTitulo = false; 3473 } 3474 // if (parametros.titulo == "" && parametros.muestraShare == "0") { 3475 if (!pintarElTitulo) { 3476 cellHeaderTitle.style.display = "none"; 3477 // cellShare.style.display = "none"; 3478 //cellHeaderTitle.className = ""; 3479 tableHeader.style.height = "0px"; 3480 // btnShare.style.visibility = "hidden"; 3481 3482 RowHeader.style.display = "none"; 3483 tableHeader.style.height = "0px"; 3484 } 3485 else //if (parametros.titulo != "" || parametros.muestraShare != "0") { 3486 { 3487 cellHeaderTitle.style.display = ""; 3488 /* btnShare.style.display = ""; */ 3489 var textoTitulo = parametros.titulo; 3490 3491 cellHeaderTitle.innerHTML += '<span class="encabezado">' + parametros.titulo + '<br></span>'; 3492 if (parametros.subtitulo) 3493 cellHeaderTitle.innerHTML += '<span class="subtitleCuadro">' + parametros.subtitulo + '<br></span>'; 3494 if (parametros.subtituloSegundo) 3495 cellHeaderTitle.innerHTML += '<span class="subtitleCuadro2">' + parametros.subtituloSegundo + '</span>'; 3496 /* if (parametros.muestraShare == "0" || parametros.muestraShare == "") { 3497 btnShare.style.visibility = "hidden"; 3498 } */ 3499 /* if (parametros.muestraShare == "1") { 3500 btnShare.style.display = ""; 3501 cellShare.style.display = ""; 3502 btnShare.style.visibility = "visible"; 3503 } */ 3504 } 3505 } 3506 3507 /// <summary> Dibuja cabecera de años y periodos a 2 niveles. </summary> 3508 /// 3509 /// <remarks> SERGIO.NIETO, 24/11/2016. </remarks> 3510 /// 3511 /// <param name="label"> Titulo de la columna principal. </param> 3512 /// <param name="cantidadColumnas"> Cantidad de columnas. </param> 3513 /// <param name="listaAnios"> Lista de años. </param> 3514 /// <param name="contenedor"> Contenedor del componente. </param> 3515 /// <param name="listaPeridosObj"> Lista de periodos visibles. </param> 3516 /// 3517 /// <returns>SNM 08.08.2017 se cambio para dividir concepto en dos columnas si es el caso</returns> 3518 function DibujaCabeceraTipo7(label, cantidadColumnas, listaAnios, parametros, listaPeridosObj) { 3519 var contenedor = parametros.contenedorCuadro; 3520 var cabeceras = ""; 3521 if (label.indexOf("|") > 0) { 3522 var spittitle = ""; 3523 spittitle = label.split("|"); 3524 var rowspan = (listaAnios.length > 0) ? "2" : "0"; // modificacion para validar si llevan anios entonces el rowspan se queda como estaba con valor de 2 (modificacion 20/feb/2018) 3525 cabeceras = '<tr><th class ="Th" bgcolor="#DDD" id="columnaTituloSuperior' + contenedor + '" rowspan="' + rows
3525pan + '" nowrap>' + spittitle[0] + '</th>'; 3526 cabeceras += '<th class="Th" bgcolor="#DDD" id="columnaTituloSuperior' + contenedor + '" rowspan="' + rowspan + '" >' + spittitle[1] + '</th>' 3527 } 3528 else { 3529 cabeceras = '<tr><th class ="Th" bgcolor="#DDD" id="columnaTituloSuperior' + contenedor + '" rowspan="2" >' + label + '</th>'; 3530 } 3531 3532 if (listaAnios.length > 0) { // validacmos si llegan años por columna 3533 if (parametros.tipoCuadro === "14") { 3534 if (parametros.titulosColumnas !== "") { 3535 var columnasNombres = parametros.titulosColumnas.split(","); 3536 for (var i = 0; i < columnasNombres.length; i++) { 3537 var cantidadColumnas = 13; 3538 cabeceras += '<th class ="Th" id="tdAnio' + contenedor + "_col" + i + '" bgcolor="#DDD" colspan ="' + cantidadColumnas + '">' + columnasNombres[i] + ' </th>'; 3539 } 3540 } else { 3541 for (var i = 0; i < listaAnios.length; i++) { 3542 if (listaAnios[i] == listaPeridosObj[i].year) 3543 cantidadColumnas = listaPeridosObj[i].visibles.length; 3544 3545 cabeceras += '<th class ="Th" id="tdAnio' + contenedor + listaAnios[i] + '" bgcolor="#DDD" colspan ="' + cantidadColumnas + '">' + listaAnios[i] + ' </th>'; 3546 } 3547 } 3548 } else { 3549 for (var i = 0; i < listaAnios.length; i++) { 3550 if (listaAnios[i] == listaPeridosObj[i].year) 3551 cantidadColumnas = listaPeridosObj[i].visibles.length; 3552 3553 cabeceras += '<th class ="Th" id="tdAnio' + contenedor + listaAnios[i] + '" bgcolor="#DDD" colspan ="' + cantidadColumnas + '">' + listaAnios[i] + ' </th>'; 3554 } 3555 } 3556 3557 cabeceras += "</tr>"; 3558 } 3559 return cabeceras; 3560 } 3561 3562 /// <summary> Dibuja cabecera de años. </summary> 3563 /// 3564 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 3565 /// 3566 /// <param name="label"> Titulo de la columna principal. </param> 3567 /// <param name="cantidadColumnas"> Cantidad de columnas. </param> 3568 /// <param name="listaAnios"> Lista de años. </param> 3569 /// <param name="contenedor"> Contenedor del componente. </param> 3570 /// <param name="listaPeridosObj"> Lista de periodos visibles. </param> 3571 /// 3572 /// <returns> . </returns> 3573 function DibujaCabeceraTipo9(label, cantidadColumnas, listaAnios, contenedor, listaPeridosObj) { 3574 3575 var cabeceras = '<tr><th class ="Th" bgcolor="#DDD" id="columnaTituloSuperior' + contenedor + '" rowspan="2" >' + label + '</th>'; 3576 for (var i = 0; i < listaAnios.length; i++) { 3577 if (listaAnios[i] == listaPeridosObj[i].year) 3578 cantidadColumnas = listaPeridosObj[i].visibles.length; 3579 cabeceras += '<th class ="Th" id="tdAnio' + contenedor + listaAnios[i] + '" bgcolor="#DDD" colspan ="' + cantidadColumnas + '">' + listaAnios[i] + ' </th>'; 3580 // identificar periodo de trimestral (3 totales) y anual (1 total) 3581 cabeceras += '<th class ="Th" bgcolor="#DDD" rowspan="2" >Total</th>'; 3582 } 3583 cabeceras += "</tr>"; 3584 return cabeceras; 3585 } 3586 3587 /// <summary> Agrupa años y subperiodos, identifica si no se muestran todos los subperiodos. </summary> 3588 /// 3589 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 3590 /// 3591 /// <param name="listaAnios"> Lista de años. </param> 3592 /// <param name="peridosVisibles"> Lista de periodos visibles. </param> 3593 /// 3594 /// <returns> . </returns>
3595 function ObtienePeriodosVisbles(listaAnios, peridosVisibles) { 3596 var listaPeriodosObj = []; 3597 for (var i = 0; i < listaAnios.length; i++) { 3598 var periodoObj = {}; 3599 periodoObj["year"] = listaAnios[i]; 3600 var listaVisibles = []; 3601 for (var j = 0; j < peridosVisibles.length; j++) { 3602 3603 if (peridosVisibles[j].indexOf(listaAnios[i]) > -1) { 3604 listaVisibles.push(peridosVisibles[j]); 3605 } 3606 } 3607 periodoObj["visibles"] = listaVisibles; 3608 listaPeriodosObj.push(periodoObj); 3609 } 3610 return listaPeriodosObj; 3611 } 3612 3613 /// <summary> Obtiene la cantidad de columnas que abarca un año desplegado por encima de los subperiodos </summary> 3614 /// 3615 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 3616 /// 3617 /// <param name="listaAnios"> Lista de años. </param> 3618 /// <param name="peridosVisibles"> Lista de periodos visibles. </param> 3619 /// <param name="contenedor"> Contenedor del componente. </param> 3620 /// 3621 /// <returns> . </returns> 3622 function AjustaColspanCabeceraTipo7(listaAnios, peridosVisibles, contenedor) { 3623 var listaPeriodosObj = ObtienePeriodosVisbles(listaAnios, peridosVisibles); 3624 for (var i = 0; i < listaPeriodosObj.length; i++) { 3625 //var cabeceraOculta = document.getElementById("tdAnio" + contenedor + listaPeriodosObj[i].year); 3626 //cabeceraOculta["colspan"] = listaPeriodosObj[i].visibles.length; 3627 if (listaPeriodosObj[i].visibles.length > 0) 3628 document.getElementById("tdAnio" + contenedor + listaPeriodosObj[i].year)["colspan"] = listaPeriodosObj[i].visibles.length; 3629 else 3630 //document.getElementById("tdAnio" + contenedor + listaPeriodosObj[i].year).style.visibility = "hidden"; 3631 document.getElementById("tdAnio" + contenedor + listaPeriodosObj[i].year).style.display = "none"; 3632 // console.log("tdAnio" + contenedor + listaPeriodosObj[i].year); 3633 } 3634 3635 } 3636 3637 /// <summary> Dibuja cabecera de la tabla, si tiene 2 niveles la primer celda se extiende 2 renglones. </summary> 3638 /// 3639 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 3640 /// 3641 /// <param name="label"> Titulo de la columna principal. </param> 3642 /// <param name="cantidadColumnas"> Cantidad de columnas. </param> 3643 /// <param name="renglones"> Cantidad de renglones de la cabecera. </param> 3644 /// <param name="contenedorCuadro"> Contenedor del componente. </param> 3645 /// 3646 /// <returns> . </returns> 3647 function DibujaCabecera(label, cantidadColumnas, renglones, contenedorCuadro, parametros) { 3648 var parametros = parametros || null; 3649 var cabeceras = '<tr><th class ="Th" bgcolor="#DDD" id="columnaTituloSuperior" rowspan="' + renglones + '" >' + label + '</td>'; 3650 if (parametros !== null && parametros.tipoCuadro == "17") { 3651 cabeceras += '<th class ="Th" id="tdPeriodo1_' + contenedorCuadro + '" bgcolor="#DDD" colspan ="4">valPeriodo1_' + contenedorCuadro + '</th>'; 3652 cabeceras += '<th class ="Th" id="tdPeriodo2_' + contenedorCuadro + '" bgcolor="#DDD" colspan ="4">valPeriodo2_' + contenedorCuadro + '</th></tr>'; 3653 } else { 3654 if (renglones > 1) 3655 cabeceras += '<th class ="Th" id="tdUnidad' + contenedorCuadro + '" bgcolor="#DDD" colspan ="' + cantidadColumnas + '"> </th></tr><tr>'; 3656 } 3657 return cabeceras; 3658 } 3659 3660 /// <summary> Cambia descripciones de columnas por las que se mandan por parametro. </summary> 3661 /// 3662 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 3663 /// 3664 /// <param name="titulosColumnas"> Titulos de columnas separados por coma. </param> 3665 /// <param name="valorDefault"> Nombre default de la columna. </param> 3666 /// <param name="indiceColumna"> Indice de la columna. </param> 3667 /// 3668 /// <returns> . </returns> 3669 function PintaTitulosColumnas(titulosColumnas, valorDefault, indiceColumna) { 3670 var valorTitulo = valorDefault; 3671 if (titulosColumnas.split(",")[indiceColumna] != undefined && titulosColumnas.split(",")[indiceColumna] != "") 3672 valorTitulo = titulosColumnas.split(",")[indiceColumna]; 3673 return valorTitulo; 3674 } 3675 3676 /// <summary> Dibuja cuadro tipo 1, varios indicadores por varios periodos por un area geografica. </summary> 3677 /// 3678 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 3679 /// 3680 /// <param name="data"> Valores de indicador en JSON. </param> 3681 /// <param name="parametros"> Objeto de parametros en JSON. </param> 3682 /// 3683 /// <returns> . </returns> 3684 function DibujaCuadroTipo1(data, parametros) { 3685 var tablaInterna = ""; 3686 var arrayLenght = data.length; 3687 var contadorcolumnas = 1; 3688 var indexValue = 0;
3689 var saltoPeriodos = data.dimension.periods.category.label.length; 3690 var arrayPeriodos = data.dimension.periods.category.label; 3691 // var cabeceras = DibujaCabecera(data.dimension.indicator.label, arrayPeriodos.length, 2, parametros.contenedorCuadro); 3692 var cabeceras = DibujaCabecera((parametros.idioma === "es"? "Indicador" : "Indicator"), arrayPeriodos.length, 2, parametros.contenedorCuadro); 3693 3694 var aIndicadorDepurado = parametros.indicadorDepurado.indexOf(",") > -1? parametros.indicadorDepurado.split(",") : parametros.indicadorDepurado; 3695 3696 // cabeceras con o sin titulo por parametro 3697 var indiceColumna = 0; 3698 $.each(arrayPeriodos, function (key, val) { 3699 //if (indexValue == (saltoPeriodos * contadorcolumnas - 1)) { 3700 valorColumna = PintaTitulosColumnas(parametros.titulosColumnas, val.Value, indiceColumna++); 3701 cabeceras += '<th class ="Th" bgcolor="#DDD" >' + valorColumna + '</th>'; 3702 contadorcolumnas++; 3703 //} 3704 //indexValue++; 3705 }); 3706 cabeceras += "</tr>"; 3707 tablaInterna += cabeceras; 3708 var datos = data.value; 3709 indexValue = 0; 3710 var renglones = ""; 3711 var arrayIndicadores = data.dimension.indicator.category.label; 3712 3713 var listaRenglones = []; 3714 indexValue = 0; 3715 var contRenglones = 0; 3716 var indicadoresNombreCorto = []; 3717 // console.log(indicadoresNombreCorto.reverse().shift()); 3718 // 16/04/2020 rep05_2020 3719 if (parametros.nombreCorto == "true" && parametros.nombresCategoriasFijas !== "") { 3720 if (parametros.nombresCategoriasFijas.indexOf('°') > -1) { 3721 indicadoresNombreCorto = parametros.nombresCategoriasFijas.replace(new RegExp('°', 'g'), ''); 3722 indicadoresNombreCorto = indicadoresNombreCorto.split("|"); 3723 } else { 3724 indicadoresNombreCorto = parametros.nombresCategoriasFijas.split("|"); 3725 } 3726 } 3727 3728 // invertimos el arreglo de nombres por que de algun modo llega invertido y no coinciden los datos cuando se arman 3729 //indicadoresNombreCorto.reverse().shift() 3730 // console.log(arrayIndicadores) 3731 // console.log(indicadoresNombreCorto) 3732 // console.log(parametros.indicadorDepurado) 3733 3734 for (var i = 0; i < arrayIndicadores.length; i++) { 3735 var bgColor = "white"; 3736 //if (i % 2 == 0) { 3737 // var bgColor = "#EFEFEF"; 3738 //} 3739 var oRenglon = {}; 3740 oRenglon["indicador"] = arrayIndicadores[i].Key.replace("I_", ""); 3741 var value = arrayIndicadores[i].Value; 3742 if (indicadoresNombreCorto.length > 0) { 3743 // value = indicadoresNombreCorto[i]; 3744 var indicadorOrden = ""; 3745 for(var s = 0; s < aIndicadorDepurado.length; s++){ 3746 if(aIndicadorDepurado[s] === arrayIndicadores[i].Key.replace("I_", "")){ 3747 value = indicadoresNombreCorto[s]; 3748 break; 3749 } 3750 } 3751 3752 } 3753 oRenglon["contenido"] = '<td class="TdInicio" id="td_indicador_' + arrayIndicadores[i].Key.replace("I_", "") + '" >' + value + '</td>'; 3754 3755 renglones += '<tr><td class="TdInicio" id="td_indicador_' + arrayIndicadores[i].Key.replace("I_", "") + '" >' + arrayIndicadores[i].Value + '</td>'; 3756 // contadorcolumnas = 0; 3757 $.each(arrayPeriodos, function (key, val) { 3758 3759 //indexValue = saltoPeriodos * contadorcolumnas + i; 3760 indexValue = contRenglones; 3761 renglones += '<td class="Td" >' + datos[indexValue] + '</td>'; 3762 3763 oRenglon["contenido"] += '<td class="Td" >' + datos[indexValue] + '</td>'; 3764 contRenglones++; 3765 // contadorcolumnas++; 3766 indexValue++; 3767 }); 3768 3769 renglones += '</tr>'; 3770 listaRenglones.push(oRenglon); 3771 } 3772 // tablaInterna += renglones; 3773 //console.log(listaRenglones); 3774 var todosLosIndicadoresPorParametro = parametros.indicadorDepurado.split(","); 3775 if(parametros.orden === "n"){ 3776 var todosLosIndicadoresPorParametro = arrayIndicadores.map((ind) => { 3777 return ind.Key.replaceAll("I_", ""); 3778 }) 3779 } 3780 //console.log(todosLosIndicadoresPorParametro); 3781 for (var i = 0; i < todosLosIndicadoresPorParametro.length; i++) { 3782 bgColor = "white"; 3783 //if (i % 2 == 0) { 3784 // bgColor = "#EFEFEF"; 3785 //} 3786 // console.log("> " + todosLosIndicadoresPorParametro[i]) 3787 var objIndicador = listaRenglones.filter(function (objIndicador) { 3788 //console.log(objIndicador.indicador +"==="+ todosLosIndicadoresPorParametro[i]) 3789 return objIndicador.indicador === todosLosIndicadoresPorParametro[i]; 3790 })[0]; 3791 //console.log(objIndicador); 3792 //console.log("------------------") 3793 3794 if (objIndicador != undefined) { 3795 var valorRenglon = objIndicador.contenido; //replaceAll("white",bgColor,objIndicador.contenido); 3796 tablaInterna += "<tr>" + valorRenglon + "</tr>"; 3797 } 3798 } 3799 ReemplazaTabla(tablaInterna, parametros); 3800 } 3801 3802 /// <summary> Dibuja cuadro tipo 1 compuesto, incluye grupos de indicadores que corresponden a una descripcion </summary> 3803 /// 3804 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 3805 /// 3806 /// <param name="data"> Valores de indicador en JSON. </param> 3807 /// <param name="parametros"> Objeto de parametros en JSON. </param> 3808 /// 3809 /// <returns> . </returns> 3810 function DibujaCuadroTipo1Compuesto(data, parametros) { 3811 3812 //var tableStat = document.getElementById("tableStat"+ parametros.contenedorCuadro); 3813 //tableStat.style.width = "100%"; 3814 var tablaInterna = ""; 3815 var arrayLenght = data.length; 3816
3817 var arrayPeriodos = data.dimension.periods.category.label; 3818 var cabeceras = DibujaCabecera(data.dimension.indicator.label, arrayPeriodos.length, 1, parametros.contenedorCuadro); 3819 var listaTitulos = parametros.titulosColumnas.split(","); 3820 var contadorTitulos = 0; 3821 $.each(arrayPeriodos, function (key, val) { 3822 var tituloColPeriodo = val.Value; 3823 if (listaTitulos[contadorTitulos] != undefined && listaTitulos[contadorTitulos] != "") 3824 tituloColPeriodo = listaTitulos[contadorTitulos]; 3825 cabeceras += '<th class ="Th" bgcolor="#DDD" >' + tituloColPeriodo + '</th>'; 3826 contadorTitulos++; 3827 }); 3828 cabeceras += "</tr>"; 3829 tablaInterna += cabeceras; 3830 var datos = data.value; 3831 var indexValue = 0; 3832 var renglones = ""; 3833 var arrayIndicadores = data.dimension.indicator.category.label; 3834 var tablaDatos = []; 3835 3836 3837 // llena datos transformados en un modelo de tabla 3838 for (var i = 0; i < arrayIndicadores.length; i++) { 3839 var renglonDatos = {}; 3840 renglonDatos["indicator"] = arrayIndicadores[i].Key; 3841 renglonDatos["descripcion"] = arrayIndicadores[i].Value; 3842 var valoresIndicador = []; 3843 $.each(arrayPeriodos, function (key, val) { 3844 valoresIndicador.push(datos[indexValue]); 3845 indexValue++; 3846 }); 3847 renglonDatos["valoresIndicador"] = valoresIndicador; 3848 tablaDatos.push(renglonDatos); 3849 } 3850 3851 var bgColor = "white"; 3852 if (i % 2 == 0) { 3853 bgColor = "#EFEFEF"; 3854 } 3855 3856 // busca indicator "principal" y lo pinta en la tabla 3857 var indiceRenglon = 0; 3858 var obj = tablaDatos.filter(function (obj) { 3859 return obj.indicator === "I_" + parametros.indicadorValorCompuesto.principal; 3860 })[0]; 3861 renglones += PintaRenglonTablaGrupos('<b>', '</b>', obj, ColorRenglon(indiceRenglon++), ""); 3862 3863 // busca "grupos" pinta su encabezado 3864 var colSpanValue = arrayPeriodos.length + 1; 3865 var contadorTitulosGrupos = 0; 3866 $.each(parametros.indicadorValorCompuesto.grupos, function (key, valGroup) { 3867 renglones += '<tr><td class="TdInicio" id="tdTituloGrupo' + contadorTitulosGrupos + '" bgcolor="' + ColorRenglon(indiceRenglon++) + '" colspan="' + colSpanValue + '"><b>' + valGroup.titulo + '</b></td></tr>'; 3868 contadorTitulosGrupos++; 3869 $.each(valGroup.indicadores, function (key, valGroupInd) { 3870 obj = tablaDatos.filter(function (obj) { 3871 return obj.indicator === "I_" + valGroupInd; 3872 })[0]; 3873 if (obj != undefined) 3874 renglones += PintaRenglonTablaGrupos("", "", obj, ColorRenglon(indiceRenglon++), " "); 3875 }); 3876 }); 3877 3878 tablaInterna += renglones; 3879 // BuscaMetaDatos(); 3880 ReemplazaTabla(tablaInterna, parametros); 3881 } 3882 3883 /// <summary> Dibuja cuadro tipo 2, un indicador por varios periodos por varias areas geograficas. </summary> 3884 /// 3885 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 3886 /// 3887 /// <param name="data"> Valores de indicador en JSON. </param> 3888 /// <param name="parametros"> Objeto de parametros en JSON. </param> 3889 /// 3890 /// <returns> . </returns> 3891 function DibujaCuadroTipo2(data, parametros) { 3892 3893 //var tableStat = document.getElementById("tableStat"+ parametros.contenedorCuadro); 3894 //tableStat.style.width = "100%"; 3895 var totalIndicadores = (parametros.indicadorDepurado.indexOf(",") === -1) ? 1 : parametros.indicadorDepurado.split(",").length; 3896 if (totalIndicadores === 1) { // SOLO PARA 1 INDICADOR 3897 3898 var tablaInterna = ""; 3899 var arrayLenght = data.length; 3900 //var cabeceras = '<tr><th class ="Th" bgcolor="#DDD" > Entidad </th>';
3901 var arrayPeriodos = data.dimension.periods.category.label; 3902 var tituloPrincipal = (parametros.tituloColumnaPrincipal != "") ? parametros.tituloColumnaPrincipal : (parametros.idioma === "es"? "Entidad" : "Entity"); 3903 var cabeceras = DibujaCabecera(tituloPrincipal, arrayPeriodos.length, 2, parametros.contenedorCuadro); 3904 var indiceColumna = 0; 3905 var frecuencia = data.dimension.freq.category.label[0].Value; 3906 var valorColumna = ""; 3907 3908 $.each(arrayPeriodos, function (key, val) { 3909 //datos del periodo para el formato de las columnas 3910 3911 valorColumna = PintaTitulosColumnas(parametros.titulosColumnas, val.Value, indiceColumna++); 3912 3913 if (val.Value.indexOf("/") !== -1 && parametros.titulosColumnas == "") { 3914 valorColumna = oMESES.getFormatoPeriodo(val.Value, frecuencia, parametros.idioma, 2); 3915 } 3916 // console.log(valorColumna) 3917 cabeceras += '<th class ="Th" bgcolor="#DDD" id="tdAnio' + parametros.contenedorCuadro + val.Value + '" data-periodo="'+val.Value+'">' + valorColumna + '</td>'; 3918 3919 }); 3920 cabeceras += "</tr>"; 3921 tablaInterna += cabeceras; 3922 var datos = data.value; 3923 var indexValue = 0; 3924 var renglones = ""; 3925 var arrayIndicadores = data.dimension.indicator.category.label; 3926 var arrayAreas = data.dimension.state.category.label; 3927 var totalColumnas = data.dimension.periods.category.label; 3928 3929 for (var i = 0; i < arrayAreas.length; i++) { 3930 var bgColor = "white"; 3931 if (i % 2 == 0) { 3932 var bgColor = "#EFEFEF"; 3933 } 3934 renglones += '<tr><td class="TdInicio notranslate" >' + arrayAreas[i].Value.toString().split("-")[0] + '</td>'; 3935 3936 $.each(arrayPeriodos, function (key, val) { 3937 if (datos[indexValue] === "") { 3938 3939 renglones += '<td class="Td" > --- </td>'; 3940 } else { 3941 renglones += '<td class="Td" >' + datos[indexValue] + '</td>'; 3942 } 3943 indexValue++; 3944 }); 3945 3946 renglones += '</tr>'; 3947 } 3948 tablaInterna += renglones; 3949 ReemplazaTabla(tablaInterna, parametros); 3950 3951 } else { // SOLO PARA 2 INDICADORES (TRIMESTRALES, ANUAL) agregado: 17-04-2018 3952 var tablaInterna = ""; 3953 var arrayPeriodos = data.dimension.periods.category.label; 3954 var tituloPrincipal = (parametros.tituloColumnaPrincipal != "") ? parametros.tituloColumnaPrincipal : "Entidad"; 3955 var cabeceras = DibujaCabecera(tituloPrincipal, arrayPeriodos.length, 2, parametros.contenedorCuadro); 3956 var indiceColumna = 0; 3957 var aCifras = data.CIFRAS_ESTATUS; 3958 3959 arrayPeriodos.sort(function compare(n1, n2) { 3960 var per1 = n1.Value.indexOf("/") > -1 ? parseInt(n1.Value.split("/")[1]) : 13; 3961 var per2 = n2.Value.indexOf("/") > -1 ? parseInt(n2.Value.split("/")[1]) : 13; 3962 var anio1 = n1.Value.indexOf("/") > -1 ? parseInt(n1.Value.split("/")[0]) : parseInt(n1.Value); 3963 var anio2 = n2.Value.indexOf("/") > -1 ? parseInt(n2.Value.split("/")[0]) : parseInt(n2.Value); 3964 if (anio1 > anio2) { 3965 return -1; 3966 } else if (anio1 < anio2) { 3967 3968 return 1; 3969 } else { 3970 if (per1 > per2) 3971 return 1; 3972 if (per1 < per2) 3973 return -1; 3974 else 3975 return -1; 3976 } 3977 }); 3978 $.each(arrayPeriodos, function (key, val) { 3979 var cifraSelected = ""; 3980 // if (aCifras !== undefined && aCifras.length > 0) { // si hay datos en cifras estatus 3981 //var cifraEstatusPeriodo = aCifras.filter(function (c) { 3982 // console.log(c.periodos + " == " + val.Value); 3983 // return c.periodos.indexOf(val.Value) > -1; 3984 //}); 3985 //console.log(cifraEstatusPeriodo) 3986 //if (cifraEstatusPeriodo.length > 0) { 3987 // cifraSelected = "<sup>" + cifraEstatusPeriodo[0].letra.replace("/", "") + "</sup>"; 3988 //} 3989 //aCifras.forEach(function (c, idx) { 3990 // cifraSelected = ""; 3991 // if (c.periodos === val.Value) { 3992 // cifraSelected = "<sup>" + c.letra.replace("/", "") + "</sup>"; 3993 // // return true; 3994 // } 3995 //}); 3996 //} 3997 var valorColumna = PintaTitulosColumnas(parametros.titulosColumnas, val.Value, indiceColumna++); 3998 // para el formato de el titulo de la columna 3999 /* if (val.Value.indexOf("/") !== -1) { 4000 valorColumna = oMESES.getFormatoPeriodo(valorColumna, frecuencia, parametros.idioma, 2); 4001 } */ 4002 cabeceras += '<th class ="Th" bgcolor="#DDD" data-periodo="' + val.Value + '" id="tdAnio' + parametros.contenedorCuadro + val.Value + '">' + valorColumna + '</td>'; 4003 4004 }); 4005 cabeceras += "</tr>"; 4006 //tablaInterna += cabeceras; 4007 var encabezado = cabeceras; 4008 //var cabeceras2 = "<thead>" + cabeceras + "</thead>"; 4009 var datos = data.value; 4010 var indexValue = 0; 4011 var renglones = ""; 4012 var arrayIndicadores = data.dimension.indicator.category.label; 4013 var arrayAreas = data.dimension.state.category.label;
4014 var totalColumnas = data.dimension.periods.category.label; 4015 4016 var aPeriodos = data.dimension.periods.category.label; 4017 if (arrayPeriodos[arrayPeriodos.length - 1].Value.indexOf("/") === -1) { // Significa que el primero es el anual 4018 var periodo = arrayPeriodos.shift() 4019 arrayPeriodos.push(periodo); 4020 //LLENAR DATOS 4021 var incAnual = ((datos.length) / 2) - 5; // Control para encontrar los datos anuales cada 5 posiciones por como llegan en el arreglo de datos 4022 datos.shift();//borramos el primer espacio en blanco del arreglo de datos 4023 } 4024 for (var i = 0; i < arrayAreas.length; i++) { 4025 var bgColor = "white"; 4026 if (i % 2 == 0) { 4027 var bgColor = "#EFEFEF"; 4028 } 4029 renglones += '<tr><td class="TdInicio notranslate" >' + arrayAreas[i].Value.toString().split("-")[0] + '</td>'; 4030 for (var j = 0; j < arrayPeriodos.length; j++) { 4031 if (j === 4) { 4032 if (incAnual > 0) { 4033 renglones += '<td class="Td" > ' + datos[(j + incAnual)] + '</td>'; 4034 incAnual += 5; 4035 } else { 4036 renglones += '<td class="Td" >' + datos[indexValue] + '</td>'; 4037 } 4038 } else { 4039 renglones += '<td class="Td" >' + datos[indexValue] + '</td>'; 4040 } 4041 indexValue++; 4042 } 4043 renglones += '</tr>'; 4044 } 4045 //tablaInterna += renglones; 4046 var cuerpo = renglones; 4047 //ReemplazaTablaConEncabezado(renglones, cabeceras, parametros); 4048 //ReemplazaTabla(tablaInterna, parametros); 4049 ReemplazaTabla2018(encabezado, cuerpo, parametros); 4050 //FijaEncabezadoTabla(parametros); 4051 } 4052 } 4053 4054 /// <summary> Dibuja cuadro tipo 3, varios indicadores por varias areas geograficas por un periodo </summary> 4055 /// 4056 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 4057 /// 4058 /// <param name="data"> Valores de indicador en JSON. </param> 4059 /// <param name="parametros"> Objeto de parametros en JSON. </param> 4060 /// 4061 /// <returns> . </returns> 4062 function DibujaCuadroTipo3(data, parametros) { 4063 4064 //var tableStat = document.getElementById("tableStat"+ parametros.contenedorCuadro); 4065 var tablaInterna = ""; 4066 var arrayLenght = data.length; 4067 var contadorcolumnas = 1; 4068 var saltoPeriodos = data.dimension.periods.category.label.length; 4069 var todosLosIndicadoresPorParametro = parametros.indicadorDepurado.split(","); 4070 4071 var arrayPeriodos = data.dimension.periods.category.label; 4072 var arrayIndicadores = data.dimension.indicator.category.label; 4073 var cabeceras = DibujaCabecera((parametros.idioma === "es"? "Entidad Federativa" : "Federal Entity"), arrayIndicadores.length, 1, parametros.contenedorCuadro); 4074 var periodoUltimo = ""; 4075 var listaCabeceras = []; 4076 if (parametros.titulosColumnas != "") { 4077 var titulosCol = parametros.titulosColumnas.split(","); 4078 for (var i = 0; i < titulosCol.length; i++) { 4079 cabeceras += '<th class ="Th" bgcolor="#DDD" id="columnaIndicador_' + todosLosIndicadoresPorParametro[i] + '" >' + titulosCol[i] + '</th>'; 4080 var cabeceraPorIndicador = {}; 4081 cabeceraPorIndicador["indicador"] = todosLosIndicadoresPorParametro[i]; 4082 cabeceraPorIndicador["contenido"] = '<th class ="Th" bgcolor="#DDD" id="columnaIndicador_' + todosLosIndicadoresPorParametro[i] + '" >' + titulosCol[i] + '</th>'; 4083 listaCabeceras.push(cabeceraPorIndicador); 4084 } 4085 } 4086 else { 4087 $.each(arrayIndicadores, function (key, val) { 4088 cabeceras += '<th class ="Th" bgcolor="#DDD" id="columnaIndicador_' + val.Key + '" >' + val.Value + '</th>'; 4089 var cabeceraPorIndicador = {}; 4090 cabeceraPorIndicador["indicador"] = val.Key.toString().replace("I_", ""); 4091 cabeceraPorIndicador["contenido"] = '<th class ="Th" bgcolor="#DDD" id="columnaIndicador_' + val.Key + '" >' + val.Value + '</th>'; 4092 listaCabeceras.push(cabeceraPorIndicador); 4093 }); 4094 } 4095 4096 cabeceras += "</tr>"; 4097 4098 var datos = data.value; 4099 var indexValue = 0; 4100 var renglones = ""; 4101 var arrayAreas = data.dimension.state.category.label; 4102 var saltoAreas = arrayAreas.length; 4103 var indexIndicador = 0; 4104 var listaRenglonesAreas = []; 4105 var listaColumnasIndicadores = [] 4106 var valorNombreRenglon = ""; 4107 for (var i = 0; i < arrayAreas.length; i++) { 4108 var bgColor = "white"; 4109 if (i % 2 == 0) { 4110 var bgColor = "#EFEFEF"; 4111 } 4112 if (arrayAreas[i].Value.indexOf("Estatal") > -1) { 4113 valorNombreRenglon = arrayAreas[i].Value.toString().split("-")[0] 4114 } else { 4115 if (arrayAreas[i].Value.toString().split("-")[0] !== arrayAreas[i].Value.toString().split("-")[1]) { 4116 valorNombreRenglon = arrayAreas[i].Value.toString().split("-")[1] + '<br /><small style="color:#b5b5b5">' + arrayAreas[i].Value.toString().split("-")[0] + '</small>'; 4117 } else { 4118 valorNombreRenglon = arrayAreas[i].Value.toString().split("-")[1]; 4119 } 4120 } 4121 renglones += '<tr><td class="TdInicio notranslate" >' + valorNombreRenglon + '</td>'; 4122 listaRenglonesAreas.push('<td class="TdInicio notranslate" >' + valorNombreRenglon + '</td>'); 4123 $.each(arrayIndicadores, function (key, valInd) { 4124 var columnaIndicador = {}; 4125 columnaIndicador["indicador"] = valInd.Key.replace("I_", ""); 4126 columnaIndicador["renglones"] = []; 4127 listaColumnasIndicadores.push(columnaIndicador); 4128 }); 4129 contadorcolumnas = 0; 4130 $.each(arrayIndicadores, function (key, valInd) { 4131 indexValue = i + saltoPeriodos - 1 + (contadorcolumnas * saltoAreas); 4132 renglones += '<td class="Td" >' + datos[indexValue] + '</td>'; 4133 listaColumnasIndicadores[contadorcolumnas].renglones.push('<td class="Td" >' + datos[indexValue] + '</td>'); 4134 contadorcolumnas++; 4135 }); 4136 renglones += '</tr>'; 4137 } 4138 4139
4140 // columnas reordenadas 4141 var cabecerasReorden = DibujaCabecera((parametros.idioma === "es"? "Entidad" : "Entity"), arrayIndicadores.length, 1, parametros.contenedorCuadro); 4142 for (var i = 0; i < todosLosIndicadoresPorParametro.length; i++) { 4143 var objIndicador = listaCabeceras.filter(function (objIndicador) { 4144 return objIndicador.indicador === todosLosIndicadoresPorParametro[i]; 4145 })[0]; 4146 4147 if (objIndicador != undefined) { 4148 cabecerasReorden += objIndicador.contenido; 4149 } 4150 } 4151 cabecerasReorden += "</tr>"; 4152 cabeceras = cabecerasReorden; 4153 4154 4155 var renglonesReordenados = ""; 4156 for (var n = 0; n < arrayAreas.length; n++) { 4157 renglonesReordenados += "<tr>"; 4158 renglonesReordenados += listaRenglonesAreas[n] 4159 for (var i = 0; i < todosLosIndicadoresPorParametro.length; i++) { 4160 var objIndicador = listaColumnasIndicadores.filter(function (objIndicador) { 4161 return objIndicador.indicador === todosLosIndicadoresPorParametro[i]; 4162 })[0]; 4163 4164 if (objIndicador != undefined) { 4165 renglonesReordenados += objIndicador.renglones[n]; 4166 } 4167 } 4168 renglonesReordenados += "</tr>"; 4169 } 4170 //tablaInterna += renglonesReordenados +"</tbody>"; 4171 var cuerpo = renglonesReordenados; 4172 ReemplazaTabla2018(cabeceras, cuerpo, parametros); 4173 agregaHerramientasTabla(parametros); 4174 } 4175 4176 /// <summary> Dibuja cuadro tipo 3, varios indicadores por varias areas geograficas por un periodo </summary> 4177 /// 4178 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 4179 /// 4180 /// <param name="data"> Valores de indicador en JSON. </param> 4181 /// <param name="parametros"> Objeto de parametros en JSON. </param> 4182 /// 4183 /// <returns> . </returns> 4184 function DibujaCuadroTipo21(data, parametros) { 4185 //var tableStat = document.getElementById("tableStat"+ parametros.contenedorCuadro); 4186 var tablaInterna = ""; 4187 // var titulosColumnas = parametros.titulosColumnas === ""? parametros.titulosColumnas : "Columna 1, Columna 2"; 4188 var arrayLenght = data.length; 4189 var contadorcolumnas = 1; 4190 var saltoPeriodos = data.dimension.periods.category.label.length; 4191 var todosLosIndicadoresPorParametro = parametros.indicadorDepurado.split(","); 4192 4193 var arrayPeriodos = data.dimension.periods.category.label; 4194 var arrayIndicadores = data.dimension.indicator.category.label; 4195 var cabeceras = ""; 4196 4197 var periodoUltimo = ""; 4198 var listaCabeceras = []; 4199 if (parametros.titulosColumnas != "") { 4200 var titulosCol = parametros.titulosColumnas.split(","); 4201 for (var i = 0; i < titulosCol.length; i++) { 4202 cabeceras += '<th class ="Th" bgcolor="#DDD" id="columnaIndicador_' + todosLosIndicadoresPorParametro[i] + '" >' + titulosCol[i] + '</th>'; 4203 var cabeceraPorIndicador = {}; 4204 cabeceraPorIndicador["indicador"] = todosLosIndicadoresPorParametro[i]; 4205 cabeceraPorIndicador["contenido"] = '<th class ="Th" bgcolor="#DDD" id="columnaIndicador_' + todosLosIndicadoresPorParametro[i] + '" >' + titulosCol[i] + '</th>'; 4206 listaCabeceras.push(cabeceraPorIndicador); 4207 } 4208 } 4209 else { 4210 $.each(arrayIndicadores, function (key, val) { 4211 cabeceras += '<th class ="Th" bgcolor="#DDD" id="columnaIndicador_' + val.Key + '" >' + val.Value + '</th>'; 4212 var cabeceraPorIndicador = {}; 4213 cabeceraPorIndicador["indicador"] = val.Key.toString().replace("I_", ""); 4214 cabeceraPorIndicador["contenido"] = '<th class ="Th" bgcolor="#DDD" id="columnaIndicador_' + val.Key + '" >' + val.Value + '</th>'; 4215 listaCabeceras.push(cabeceraPorIndicador); 4216 }); 4217 } 4218 4219 cabeceras += "</tr>"; 4220 4221 var datos = data.value; 4222 var indexValue = 0; 4223 var renglones = ""; 4224 var arrayAreas = data.dimension.state.category.label; 4225 var saltoAreas = arrayAreas.length; 4226 var indexIndicador = 0; 4227 var listaRenglonesAreas = []; 4228 var listaColumnasIndicadores = [] 4229 var valorNombreRenglon = ""; 4230 for (var i = 0; i < arrayAreas.length; i++) { 4231 var bgColor = "white"; 4232 if (i % 2 == 0) { 4233 var bgColor = "#EFEFEF"; 4234 } 4235 valorNombreRenglon = arrayAreas[i].Value.toString().split("-")[0] 4236 4237 renglones += '<tr><td class="TdInicio notranslate" >' + valorNombreRenglon + '</td>'; 4238 listaRenglonesAreas.push('<td class="TdInicio notranslate" >' + valorNombreRenglon + '</td>'); 4239 $.each(arrayIndicadores, function (key, valInd) { 4240 var columnaIndicador = {}; 4241 columnaIndicador["indicador"] = valInd.Key.replace("I_", ""); 4242 columnaIndicador["renglones"] = []; 4243 listaColumnasIndicadores.push(columnaIndicador); 4244 }); 4245 contadorcolumnas = 0; 4246 $.each(arrayIndicadores, function (key, valInd) { 4247 indexValue = i + saltoPeriodos - 1 + (contadorcolumnas * saltoAreas); 4248 renglones += '<td class="Td" >' + datos[indexValue] + '</td>'; 4249 listaColumnasIndicadores[contadorcolumnas].renglones.push('<td class="Td" >' + datos[indexValue] + '</td>'); 4250 contadorcolumnas++; 4251 }); 4252 renglones += '</tr>'; 4253 } 4254 4255
4256 // columnas reordenadas 4257 var cabecerasReorden = DibujaCabecera((parametros.tituloColumnaPrincipal != "" ? parametros.tituloColumnaPrincipal : "Region"), arrayIndicadores.length, 1, parametros.contenedorCuadro); 4258 for (var i = 0; i < todosLosIndicadoresPorParametro.length; i++) { 4259 var objIndicador = listaCabeceras.filter(function (objIndicador) { 4260 return objIndicador.indicador === todosLosIndicadoresPorParametro[i]; 4261 })[0]; 4262 4263 if (objIndicador != undefined) { 4264 cabecerasReorden += objIndicador.contenido; 4265 } 4266 } 4267 cabecerasReorden += "</tr>"; 4268 cabeceras = cabecerasReorden; 4269 4270 4271 var renglonesReordenados = ""; 4272 for (var n = 0; n < arrayAreas.length; n++) { 4273 renglonesReordenados += "<tr>"; 4274 renglonesReordenados += listaRenglonesAreas[n] 4275 for (var i = 0; i < todosLosIndicadoresPorParametro.length; i++) { 4276 var objIndicador = listaColumnasIndicadores.filter(function (objIndicador) { 4277 return objIndicador.indicador === todosLosIndicadoresPorParametro[i]; 4278 })[0]; 4279 4280 if (objIndicador != undefined) { 4281 renglonesReordenados += objIndicador.renglones[n]; 4282 } 4283 } 4284 renglonesReordenados += "</tr>"; 4285 } 4286 //tablaInterna += renglonesReordenados +"</tbody>"; 4287 var cuerpo = renglonesReordenados; 4288 ReemplazaTabla2018(cabeceras, cuerpo, parametros); 4289 agregaHerramientasTabla(parametros); 4290 } 4291 /** 4292 * Caso cuadro SCITEL 2025 4293 * Descripción: utiliza el árbol desarrollador por Mariel para poder llamar este caso de "scitel" 4294 * Agregado: 21/7/2025 4295 */ 4296 function DibujaCuadroTipoScitel(data, parametros){ 4297 let esNumeroValido = /^-?\d+(\.\d+)?$/; 4298 let INTLFormat = Intl.NumberFormat('es-MX',{style:'decimal'}); 4299 // Define elementos de la tabla 4300 // contenedor tabla 4301 let CONTAINERTABLE = document.getElementById("divDatos" + parametros.contenedorCuadro); 4302 CONTAINERTABLE.innerHTML = ""; 4303 var TABLE = document.createElement("table"); 4304 TABLE.className = 'table table-small-font table-bordered table-striped estiloCuadro2'; 4305 var tHead = TABLE.createTHead(); 4306 var tBody = TABLE.createTBody(); 4307 var tRowBody = tBody.insertRow(); 4308 4309 if(data.length > 0 && data[0].clave_valor.length > 0){ 4310 // var TABLE = document.createElement("table"); 4311 // TABLE.className = 'table table-small-font table-bordered table-striped estiloCuadro2'; 4312 // var tHead = TABLE.createTHead(); 4313 // var tBody = TABLE.createTBody(); 4314 // var tRowBody = tBody.insertRow(); 4315 const grupo = parametros.grupoArbolScitel; 4316 const aDatosArbolTemas = parametros.indicadorValorCompuesto; 4317 const aTemasClaves = parametros.temaDepurado; 4318 // const oAreaGeografica = data[0].area_geografica; 4319 const oIndicadoresTemas = data[0].clave_valor; 4320 //recorremos los temas para imprimir los titulos que permitiran agrupar los indicadores con su valor 4321 // console.log("grupo: ", grupo) 4322 // console.log("data") 4323 // console.log(data) 4324 console.log("aDatosArbolTemas: COLUMNAS") 4325 console.log(aDatosArbolTemas) 4326 // console.log("aTemasClaves") 4327 // console.log(aTemasClaves) 4328 console.log("oIndicadoresTemas") 4329 console.log(oIndicadoresTemas) 4330 4331 if(grupo === "1" || grupo === "3"){ 4332 // debugger;
4333 aTemasClaves.forEach((t, idx) => { 4334 let clave = parseInt(t.tema); 4335 let oTema = aDatosArbolTemas.find((arbol, idxt) => parseInt(arbol.tema) === clave); 4336 let newTituloTema = document.createElement("th"); 4337 newTituloTema.colSpan = "3"; 4338 newTituloTema.className = "Th"; 4339 var TITULOTEMA = document.createElement("div"); 4340 TITULOTEMA.style.fontWeight = "bold"; 4341 let rowTituloTema = tRowBody.cloneNode(true) 4342 TITULOTEMA.innerHTML = oTema.nombreTema 4343 newTituloTema.appendChild(TITULOTEMA); 4344 rowTituloTema.appendChild(newTituloTema); 4345 tBody.appendChild(rowTituloTema) 4346 4347 // armar la tabla de datos 4348 aDatosArbolTemas.forEach((indicador, idxi) => { 4349 // console.log(clave) 4350 if(clave === parseInt(indicador.tema)){ 4351 let row = tRowBody.cloneNode(true); 4352 // let tdClaveIndicador = document.createElement("td"); 4353 let tdNombreIndicador = document.createElement("td"); 4354 let tdValor = document.createElement("td"); 4355 tdValor.style.textAlign = "right"; 4356 // console.log(oIndicadoresTemas) 4357 // console.log( indicador.clave, typeof indicador.clave); 4358 let oTema = oIndicadoresTemas.find((ind_tema, idxt) => { 4359 return ind_tema.claves.trim() === indicador.clave.trim(); 4360 }); 4361 4362 // Si existe el indicador o caracteristica pero no existe en los datos que regresa el API 4363 if(oTema === undefined){ 4364 // tdClaveIndicador.textContent = indicador.clave 4365 tdNombreIndicador.textContent = indicador.nombre 4366 tdValor.textContent = ""; 4367 // Si existe el indicador o caracteristica y si regresa dato del API entonces continua normal 4368 } else { 4369 4370 // tdClaveIndicador.textContent = indicador.clave 4371 tdNombreIndicador.textContent = indicador.nombre 4372 // tdValor.textContent = formatoDecimalesResultado(oTema.valor, 1) 4373 if(esNumeroValido.test(oTema.valor)){ 4374 tdValor.textContent = INTLFormat.format(oTema.valor) 4375 } else { 4376 tdValor.textContent = oTema.valor; 4377 } 4378 } 4379 // inserta el dato en el row de la tabla 4380 // row.appendChild(tdClaveIndicador) 4381 row.appendChild(tdNombreIndicador) 4382 row.appendChild(tdValor) 4383 tBody.appendChild(row) 4384 4385 } 4386 }) 4387 TABLE.appendChild(tBody); 4388 }) 4389 CONTAINERTABLE.appendChild(TABLE) 4390 4391 } else { //para el grupo 2 con AGEB MANZANA 4392 4393 const aColumnasBase = ["Localidad","Clave de AGEB","Clave de la manzana"]; 4394 /** 4395 * Recorremos los aTemasClaves para agrupar los cuadros por tema seleccionados. 4396 */
4397 // aTemasClaves.forEach((temaclave) => { 4398 // definicion de elementos de cada tabla 4399 var TABLE = document.createElement("table"); 4400 TABLE.id = "scitel_tabla_";+parametros.tipoCuadro 4401 // TABLE.className = 'table table-bordered table-hover table-responsive '; 4402 TABLE.className = 'table table-small-font table-bordered table-striped estiloCuadro2'; 4403 var tHead = TABLE.createTHead(); 4404 var tBody = TABLE.createTBody(); 4405 4406 // let h4Titulo = document.createElement("h4"); 4407 // h4Titulo.textContent = temaclave.nombre 4408 // CONTAINERTABLE.appendChild(h4Titulo) 4409 4410 // Creamos el encabezado, columnas: Lolcalidad, Clave AGEB, Clave MZA, indicadores... 4411 let tr = document.createElement("tr");
4412 aColumnasBase.forEach((colbase) => { 4413 let thCol = document.createElement("th"); 4414 thCol.classList.add("Th") 4415 thCol.textContent = colbase; 4416 tr.appendChild(thCol); 4417 tHead.appendChild(tr) 4418 }) 4419 // Agregamos los indicadores a la tabla enseguida de las columnas base, esto dependen de la seleccion del arbol de temas: aDatosArbolTemas 4420 aDatosArbolTemas.forEach((temaIndicador) => { 4421 // if(temaclave.tema === temaIndicador.tema ){ 4422 let thCol = document.createElement("th"); 4423 thCol.classList.add("Th") 4424 thCol.textContent = temaIndicador.nombre; 4425 tr.appendChild(thCol); 4426 tHead.appendChild(tr) 4427 // } 4428 }) 4429 4430 /** 4431 * Reglas de pintado de datos en la tabla para los primeros 2 registros 4432 * 1. Si area_geografica llega "010010001 Aguascalientes" => Total de la localidad urbana 4433 * 2. Si areag_geografica llega "AGEB 0017" (sin MZA) => Total AGEB urbana 4434 * Para el resto de los datos: 4435 * 3. Todos los que tienen AGEB y MZA (Ejem: area_geografica === "AGEB 0017 MZA 001") => Localidad seleccionada 4436 * 4437 */ 4438 4439 let area = ""; 4440 let areaOriginal = ""; 4441 let ageb = "", mza = ""; 4442 data.forEach((d, idx) => { 4443 if(d.area_geografica !== ""){ 4444 let fila = document.createElement("tr"); 4445 if(areaOriginal === "") { 4446 // area = d.area_geografica.split(" ")[1] // asignamos la primer columna que es el nombre de la localidad 4447 area = d.area_geografica // asignamos tal cual la primer columna que es el nombre de la localidad 4448 areaOriginal = area; 4449 if(d.area_geografica.indexOf("AGEB") === -1 && d.area_geografica.indexOf("MZA") === -1){ 4450 area = "Total de la localidad urbana" 4451 } 4452 4453 } else { // descomponemos el contenido en: AGEB y MANZANA y area con nombre original 4454 if(d.area_geografica.indexOf("AGEB") !== -1 && d.area_geografica.indexOf("MZA") === -1){ 4455 area = "Total AGEB urbana" 4456 ageb = d.area_geografica.split(" ")[1] 4457 mza = ""; 4458 } else if(d.area_geografica.indexOf("AGEB") !== -1 && d.area_geografica.indexOf("MZA") !== -1){ 4459 // AGEB Y MANZANA 4460 ageb = d.area_geografica.split(" ")[1] 4461 mza = d.area_geografica.split("MZA")[1] 4462 area = areaOriginal; 4463 4464 } else { 4465 // nombre de las areas cuando tienen mza y ageb 4466 area = areaOriginal; 4467 } 4468 4469 } 4470 // columna area 4471 let tdArea = document.createElement("td"); tdArea.classList.add("TdInicioV"); tdArea.textContent = area; 4472 fila.appendChild(tdArea); 4473 // columna ageb
4474 let tdAgeb = document.createElement("td"); tdAgeb.classList.add("TdV"); tdAgeb.textContent = ageb; 4475 fila.appendChild(tdAgeb); 4476 // columna manzana 4477 let tdMza = document.createElement("td"); tdMza.classList.add("TdV"); tdMza.textContent = mza; 4478 fila.appendChild(tdMza); 4479 4480 // agregamos los valores (clave_valor) al resto de la fila para cada columna de indicadores 4481 let aIndicadores = d.clave_valor; 4482 aIndicadores.forEach((indicador) => { 4483 let td = document.createElement("td"); 4484 td.classList.add("TdV"); 4485 if(indicador.valor === ""){ 4486 td.textContent = "*"; 4487 td.style.color = "#d71d2a"; 4488 } else { 4489 if(esNumeroValido.test(indicador.valor)){ 4490 td.textContent = INTLFormat.format(indicador.valor); 4491 } else { 4492 td.textContent = indicador.valor; 4493 } 4494 } 4495 fila.appendChild(td); 4496 }) 4497 // agregamos la fila al cuerpo de la tabla 4498 tBody.appendChild(fila) 4499 4500 } 4501 }); 4502 4503 4504 // Agregamos las tablas al contenedor principal 4505 TABLE.appendChild(tHead) 4506 TABLE.appendChild(tBody) 4507 CONTAINERTABLE.appendChild(TABLE) 4508 4509 } 4510 // Render table 4511 } else { 4512 let emptyData = document.createElement("td"); 4513 emptyData.colSpan = "3"; 4514 // emptyData.className = "bg-primary"; 4515 console.warn("indicadores arbol: ", parametros.indicadorValorCompuesto) 4516 console.warn("temas: ", parametros.temaDepurado) 4517 console.warn("respuesta de IndicadoresValorScitel: ", data) 4518 emptyData.textContent = "No se encontraron datos relacionados."; 4519 let trEmptyData = tRowBody.cloneNode(true) 4520 trEmptyData.appendChild(emptyData) 4521 TABLE.appendChild(trEmptyData) 4522 CONTAINERTABLE.appendChild(TABLE) 4523 4524 } 4525 $("#tableStat" + parametros.contenedorCuadro).hide(); 4526 $("#TableEspacio" + parametros.contenedorCuadro).hide(); 4527 } 4528 4529 /// <summary> Separa el indicador principal y agrupa indicadores por descripciones </summary> 4530 /// 4531 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 4532 /// 4533 /// <param name="indicadorValor"> Parametro de indicadores con descripciones. </param> 4534 /// 4535 /// <returns> . </returns> 4536 function IndicadorCompuesto(indicadorValor) { 4537 var indCompuesto = {}; 4538 var grupos = indicadorValor.split("|"); 4539 indCompuesto["principal"] = grupos[0].split("-")[1]; 4540 var listaIndicadores = [] 4541 var todosLosIndicadores = ""; 4542 var indicadoresGrupo = []; 4543 todosLosIndicadores += indCompuesto["principal"]; 4544 //listaIndicadores.push(indCompuesto["principal"]); 4545 var listaIndicadoresGrupoInterna = indCompuesto["principal"].split(","); 4546 for (var i = 0; i < listaIndicadoresGrupoInterna.length; i++) { 4547 if (listaIndicadoresGrupoInterna[i] != "0") 4548 todosLosIndicadores += "," + listaIndicadoresGrupoInterna[i]; 4549 } 4550 4551 $.each(grupos, function (key, val) { 4552 var grupo = {}; 4553 var indicadorBold = val.split("-")[0]; 4554 if (indicadorBold != "b") { 4555 grupo["titulo"] = indicadorBold; 4556 var listaInterna = val.split("-")[1]; 4557 var listaIndicadoresGrupoInterna = listaInterna.split(","); 4558 for (var i = 0; i < listaIndicadoresGrupoInterna.length; i++) { 4559 if (listaIndicadoresGrupoInterna[i] != "0") 4560 todosLosIndicadores += "," + listaIndicadoresGrupoInterna[i]; 4561 } 4562 4563 4564 var indicadoresPorGrupo = []; 4565 $.each(listaInterna.split(","), function (key, val1) { 4566 indicadoresPorGrupo.push(val1); 4567 }); 4568 grupo["indicadores"] = indicadoresPorGrupo; 4569 indicadoresGrupo.push(grupo); 4570 } 4571 }); 4572 4573 indCompuesto["grupos"] = indicadoresGrupo; 4574 indCompuesto["todosLosIndicadores"] = todosLosIndicadores;
4575 indCompuesto["listaIndicadores"] = listaIndicadores; 4576 return indCompuesto; 4577 } 4578 /** 4579 * 4580 * @param {*} string 4581 * @returns boleano 4582 * @description Verifica si una cdena son solo numeros 4583 */ 4584 function checkOnlyNumbers(string){ 4585 var onlyNumbersExp = /^[0-9\,]*$/; 4586 return onlyNumbersExp.test(string) 4587 } 4588 /// <summary> Agrupa indicadores y descripciones, identifica parametros de negritas e identacion. </summary> 4589 /// 4590 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 4591 /// 4592 /// <param name="indicadorValor"> Parametro de indicadores con descripciones. </param> 4593 /// 4594 /// <returns> . </returns> 4595 function IndicadorCompuestoB(indicadorValor) { 4596 var indCompuesto = {}; 4597 var grupos = indicadorValor.split("|"); 4598 indCompuesto["principal"] = grupos[0].split("-")[1]; 4599 var listaIndicadores = [] 4600 var todosLosIndicadores = ""; 4601 var indicadoresGrupo = []; 4602 //todosLosIndicadores += indCompuesto["principal"]; 4603 //listaIndicadores.push(indCompuesto["principal"]); 4604 $.each(grupos, function (key, val) { 4605 var grupo = {}; 4606 // En caso de que llegue guion medio con dos textos juntos entonces modificar el val 4607 // 14-09-2023 4608 var validaSegundoSplit = val.split("-"); 4609 if(validaSegundoSplit.length > 2){ 4610 if(!checkOnlyNumbers(validaSegundoSplit[1])){ 4611 var nVal = validaSegundoSplit.slice(2,validaSegundoSplit.length) // genera una copia del arreglo original pero solo con los indicadores 4612 nVal.unshift(validaSegundoSplit[0]+" "+validaSegundoSplit[1]) // se inserta la cadena concatenada al arreglo de indicadores 4613 val = nVal.join("-"); // se une por guines el texto y el indicador como originalmente se encontraba 4614 } 4615 } 4616 var descripcionRenglon = val.split("-")[0]; 4617 4618 // grupo["titulo"] = descripcionRenglon.replace("ggg", "-"); 4619 grupo["titulo"] = replaceAll("ggg", "-", descripcionRenglon); 4620 var listaInterna = val.split("-")[1]; 4621 var listaIndicadoresGrupoInterna = listaInterna.split(","); 4622 for (var i = 0; i < listaIndicadoresGrupoInterna.length; i++) { 4623 if (listaIndicadoresGrupoInterna[i] != "0") 4624 4625 todosLosIndicadores += "," + listaIndicadoresGrupoInterna[i]; 4626 } 4627 4628 4629 var indicadoresPorGrupo = []; 4630 $.each(listaInterna.split(","), function (key, val1) { 4631 indicadoresPorGrupo.push(val1); 4632 }); 4633 grupo["indicadores"] = indicadoresPorGrupo; 4634 var ponerBold = (val.split("-")[2] == undefined) ? "" : val.split("-")[2]; 4635 grupo["pintaBold"] = false; 4636 if (ponerBold == "b") 4637 grupo["pintaBold"] = true; 4638 if (ponerBold.indexOf("i") > -1) { 4639 var identacion = parseInt(ponerBold.replace("i", "")); 4640 grupo["identacion"] = identacion; 4641 } 4642 var identacionParametro = (val.split("-")[3] == undefined) ? "" : val.split("-")[3]; 4643 if (identacionParametro.indexOf("i") > -1) { 4644 var identacion = parseInt(identacionParametro.replace("i", "")); 4645 grupo["identacion"] = identacion; 4646 } 4647 4648 indicadoresGrupo.push(grupo); 4649 4650 }); 4651 indCompuesto["maximaCantidadPorGrupo"] = indicadoresGrupo[0].indicadores.length; 4652 indCompuesto["grupos"] = indicadoresGrupo; 4653 indCompuesto["todosLosIndicadores"] = todosLosIndicadores.replace(",", ""); 4654 indCompuesto["listaIndicadores"] = listaIndicadores;
4655 return indCompuesto; 4656 } 4657 4658 /// <summary> Agrupa indicadores y descripciones, identifica parametros con y sin texto. </summary> 4659 /// 4660 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 4661 /// 4662 /// <param name="indicadorValor"> Parametro de indicadores con descripciones. </param> 4663 /// 4664 /// <returns> . </returns> 4665 function IndicadorCompuestoC(indicadorValor) { 4666 var indCompuesto = {}; 4667 var grupos = indicadorValor.split("|"); 4668 indCompuesto["principal"] = grupos[0].split("-")[1]; 4669 var listaIndicadores = [] 4670 var todosLosIndicadores = ""; 4671 var indicadoresGrupo = []; 4672 var agrupamiento = false; 4673 $.each(grupos, function (key, val) { 4674 var grupo = {}; 4675 var descripcionRenglon = (val.indexOf("-") !== -1) ? val.split("-")[0] : val; 4676 4677 grupo["titulo"] = replaceAll("ggg", "-", descripcionRenglon); 4678 //obtiene el listado interno de indicadores 4679 4680 if (val.indexOf(",") !== -1) { 4681 //console.log(val.split("-")); 4682 var listaInterna = (val.indexOf("-") !== -1) ? val.split("-")[1] : val; 4683 4684 var listaIndicadoresGrupoInterna = listaInterna.split(","); 4685 4686 if (!isNaN(listaIndicadoresGrupoInterna[0])) { // si en la posicion 0 esta un "b" o "i.." no es numerico entonces lo ignora por que solo deben ser indicadores 4687 for (var i = 0; i < listaIndicadoresGrupoInterna.length; i++) { 4688 if (listaIndicadoresGrupoInterna[i] != "0") { 4689 todosLosIndicadores += "," + listaIndicadoresGrupoInterna[i]; 4690 } 4691 } 4692 var indicadoresPorGrupo = []; 4693 $.each(listaInterna.split(","), function (key, val1) { 4694 indicadoresPorGrupo.push(val1); 4695 }); 4696 } 4697 4698 } else { 4699 agrupamiento = true; 4700 } 4701 4702 grupo["indicadores"] = indicadoresPorGrupo; 4703 //texto en negritas 4704 if (agrupamiento) { 4705 grupo['titulo'] = (val.indexOf("-b") !== -1) ? "<b>" + grupo['titulo'] + "</b>" : grupo['titulo']; 4706 } else { 4707 grupo['titulo'] = (val.indexOf("-b") !== -1) ? "<b>" + grupo['titulo'] + "</b>" : grupo['titulo']; 4708 } 4709 //indentacion 4710 var spacesAdded = ""; 4711 if (val.indexOf("-i") !== -1) { 4712 var indentacion = val.split("-i"); 4713 var totalSpaces = parseInt(indentacion[1]); 4714 switch (totalSpaces) { 4715 case 1: strSpaces = " "; break; 4716 case 2: strSpaces = "  "; break; 4717 case 3: strSpaces = "   "; break; 4718 case 4: strSpaces = "    "; break; 4719 case 5: strSpaces = "     "; break; 4720 default: strSpaces = ""; break; 4721 } 4722 spacesAdded = strSpaces; 4723 grupo['titulo'] = strSpaces + grupo['titulo']; 4724 } 4725 // texto fijo para cifras desestacionalizadas con parametro: -cd 4726 if (val.indexOf("-cd") !== -1) { 4727 var texto = val.indexOf("-cd:") !== -1 ? val.split("-cd:")[1] : val; 4728 grupo['cd'] = "<br />" + spacesAdded + "<small style=\'font-style:italic;font-size:11px;color:#737373;\'>" + texto + "</small>"; 4729 } else { 4730 grupo['cd'] = ""; 4731 } 4732 //añade a el arreglo final que regresara 4733 indicadoresGrupo.push(grupo); 4734 4735 }); 4736 indCompuesto["agrupamiento"] = agrupamiento; // saber si los indicadores tienen un agrupamiento por renglones 4737 indCompuesto["maximaCantidadPorGrupo"] = indicadoresGrupo[1].indicadores ? indicadoresGrupo[1].indicadores.length : 0; 4738 indCompuesto["grupos"] = indicadoresGrupo; 4739 indCompuesto["todosLosIndicadores"] = todosLosIndicadores.replace(",", ""); 4740 indCompuesto["listaIndicadores"] = listaIndicadores;
4741 return indCompuesto; 4742 } 4743 /** 4744 * Metodo para el procesamiento de parametro "ind" 4745 * Formato: nombreindicador-indicador1_tematica-indicador2_tematica-b-cd:textonota|...nombreindicador...etc 4746 * Fecha: 10-03-2023 4747 * @param {*} indicadorValor 4748 * @returns 4749 */ 4750 function IndicadorCompuestoCuadro12(indicadorValor) { 4751 // console.log(">> IndicadorCompuestoCuadro12 -> procesamiento de parametro ind") 4752 var aIndicadoresGrupos = {}; 4753 var aTematicas = []; // todas las tematicas diferentes; 4754 var aIndicadoresTematica = [] 4755 var aIndicadoresInfo = [] 4756 var aGruposPipe = indicadorValor.indexOf("|") > -1? indicadorValor.split("|") : indicadorValor.split(","); 4757 var conFormato = null; 4758 //FORMATO: 4759 // | -> separa grupos indicadores 4760 // - 4761 // _ -> _tematica 4762 // , -> indicador_tematica 4763 // b -> negrita 4764 // cd: ->descripcion 4765 // i -> indentacion 4766 if(indicadorValor.indexOf("|") > -1){ 4767 // console.log(indicadorValor); 4768 conFormato = true; 4769 4770 $.each(aGruposPipe, function (idx, g) { 4771 var strSpaces = ""; 4772 var totalSpaces = 0; 4773 var oIndicador = {}; 4774 var tituloIndicador = g.split("-")[0]; 4775 var espaciado = ""; 4776 4777 /* if (g.indexOf(",") > -1) { 4778 tituloIndicador = (g.indexOf("-b") > -1) ? "<b>" + tituloIndicador + "</b>" : tituloIndicador; 4779 } */ 4780 tituloIndicador = (g.indexOf("-b") > -1) ? "<b>" + tituloIndicador + "</b>" : tituloIndicador; 4781 4782 if (g.indexOf("-i") !== -1) { 4783 var indentacion = g.split("-i"); 4784 totalSpaces = parseInt(indentacion[1]); 4785 switch (totalSpaces) { 4786 case 1: strSpaces = " "; break; 4787 case 2: strSpaces = "  "; break; 4788 case 3: strSpaces = "   "; break; 4789 case 4: strSpaces = "    "; break; 4790 case 5: strSpaces = "     "; break; 4791 default: strSpaces = ""; break; 4792 } 4793 // tituloIndicador = tituloIndicador; 4794 } 4795 // obtener descripcion y espaciado como el titulo 4796 var cd = ""; 4797 if (g.indexOf("-cd") !== -1) { 4798 var texto = g.indexOf("-cd:") !== -1 ? g.split("-cd:")[1] : g; 4799 cd = strSpaces + "<small style=\'font-style:italic;font-size:11px;color:#737373;\'>" + texto + "</small>"; 4800 } 4801 4802 // Tratamiento de indicadores 4803 if(g.indexOf("-") > -1){ 4804 var aIndicadores = g.split("-")[1] !== "b" ? g.split("-")[1].split(",") : null; 4805 if(aIndicadores !== null){ 4806 oIndicador.indicadores = []; 4807 oIndicador.tematicas = [];
4808 aIndicadores.forEach(i => { 4809 var indicadorTematica = i.split("_") // indicador_tm 4810 var tm = indicadorTematica[1] !== undefined? parseInt(indicadorTematica[1]) : -1 4811 oIndicador.indicadores.push(parseInt(indicadorTematica[0])) 4812 oIndicador.tematicas.push(tm) 4813 // se llena el arreglo de indicadores-tematica 4814 if(tm !== -1) aIndicadoresTematica.push({indicador:indicadorTematica[0], tematica:tm}) 4815 // se llena arreglo de todas las tematicas diferentes 4816 if(tm !== -1 && aTematicas.indexOf(tm) === -1){ 4817 aTematicas.push(parseInt(tm)) 4818 } 4819 // llenar arreglo de todos los indicadores 4820 4821 }); 4822 } 4823 oIndicador.titulo = tituloIndicador 4824 oIndicador.cd = cd; 4825 4826 } 4827 oIndicador.espacios = totalSpaces 4828 //añade a el arreglo final que regresara 4829 aIndicadoresInfo.push(oIndicador) 4830 // console.log(aIndicadoresInfo); 4831 4832 }); 4833 4834 } else { 4835 conFormato = false; 4836 $.each(aGruposPipe, function (idx, g) { 4837 var oIndicador={indicadores:[],tematicas:[]}; 4838 var indicadorTematica = g.split("_") // indicador_tm 4839 var indicadorSolo = indicadorTematica[0].indexOf("-") > -1? indicadorTematica[0].split("-")[1] : indicadorTematica[0]; 4840 var titulo = indicadorTematica[0].indexOf("-") > -1? indicadorTematica[0].split("-")[0] : ""; 4841 var tm = indicadorTematica[1] !== undefined? parseInt(indicadorTematica[1]) : -1 4842 oIndicador.indicadores.push(parseInt(indicadorSolo)) 4843 oIndicador.tematicas.push(tm) 4844 oIndicador.titulo = titulo; 4845 // se llena el arreglo de indicadores-tematica 4846 if(tm !== -1) aIndicadoresTematica.push({indicador:indicadorSolo, tematica:tm}) 4847 // se llena arreglo de todas las tematicas diferentes 4848 if(tm !== -1 && aTematicas.indexOf(tm) === -1){ 4849 aTematicas.push(parseInt(tm)) 4850 } 4851 4852 aIndicadoresInfo.push(oIndicador) 4853 }) 4854 } 4855 4856 aIndicadoresGrupos.indicadores = aIndicadoresInfo; 4857 aIndicadoresGrupos.todasTematicas = aTematicas; 4858 aIndicadoresGrupos.todosIndicadores = aIndicadoresTematica; 4859 aIndicadoresGrupos.conFormato = conFormato; // indica si los indicadores pasados por parametro llegan con texto y formato -i -b -cd, si no entonces es false 4860 return aIndicadoresGrupos; 4861 } 4862 //Para cuadro #20 4863 // Formato de indicadores (parametro: ind: "b|Menores de 1 año-6207079575,6207079576|1 a 4 años-6207079532,6207079533|...") 4864 // ind:"b|titulo indicador-indicador1,indicador2|tituloindicador-indicador3,indicador4|..."; 4865 function IndicadorAgrupadoB(indicadorValor) { 4866 var indCompuesto = {}; 4867 var grupos = indicadorValor.split("|"); 4868 var listaIndicadores = [] 4869 var todosLosIndicadores = ""; 4870 var indicadoresGrupo = []; 4871 var maximaCantidadPorGrupo = 0; 4872 var esPrincipal = true; 4873 var contarGrupos = 0; 4874 $.each(grupos, function (key, val) { 4875 4876 var grupo = {}; 4877 var indicadorBold = val.split("-")[0]; 4878 //if ((indicadorBold != "b" || !esPrincipal)) { 4879 if (contarGrupos != 0) { 4880 esPrincipal = false; 4881 grupo["titulo"] = indicadorBold.replace("ggg", "
4881-"); 4882 var listaInterna = val.split("-")[1]; 4883 todosLosIndicadores += "" + listaInterna + ","; 4884 if (listaInterna.split(",").length > maximaCantidadPorGrupo) 4885 maximaCantidadPorGrupo = listaInterna.split(",").length; 4886 var indicadoresPorGrupo = []; 4887 $.each(listaInterna.split(","), function (key, val1) { 4888 indicadoresPorGrupo.push(val1); 4889 }); 4890 grupo["indicadores"] = indicadoresPorGrupo; 4891 indicadoresGrupo.push(grupo); 4892 } 4893 contarGrupos++; 4894 }); 4895 4896 4897 indCompuesto["maximaCantidadPorGrupo"] = maximaCantidadPorGrupo; 4898 indCompuesto["grupos"] = indicadoresGrupo; 4899 indCompuesto["todosLosIndicadores"] = todosLosIndicadores.substring(0, todosLosIndicadores.length - 1); 4900 indCompuesto["listaIndicadores"] = listaIndicadores; 4901 return indCompuesto; 4902 } 4903 4904 /// <summary> Coloca titulos por grupos de indicadores. </summary> 4905 /// 4906 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 4907 /// 4908 /// <param name="indicadorValor"> Parametro de indicadores con descripciones. </param> 4909 /// 4910 /// <returns> . </returns> 4911 function IndicadorTituloAgrupado(indicadorValor) { 4912 var listaTitulosGrupos = indicadorValor.split("|"); 4913 var listaGrupos = []; 4914 var indicadorDepurado = ""; 4915 for (var i = 0; i < listaTitulosGrupos.length; i++) { 4916 var nuevoGrupo = {}; 4917 var listaNiveles = listaTitulosGrupos[i].split("'"); 4918 if (listaNiveles.length < 2) 4919 console.log("debe llevar titulo del grupo y titulos del siguiente nivel " + listaTitulosGrupos[i]); 4920 nuevoGrupo["tituloGrupo"] = listaNiveles[0]; 4921 nuevoGrupo["listaIndicadores"] = []; 4922 var titulosNivel2 = listaNiveles[1].split("^"); 4923 for (var j = 0; j < titulosNivel2.length; j++) { 4924 var tituloConIndicador = titulosNivel2.split("-"); 4925 var nuevoIndicador = {}; 4926 nuevoIndicador["titulo"] = tituloConIndicador[0]; 4927 nuevoIndicador["indicador"] = tituloConIndicador[1]; 4928 if (indicadorDepurado != "") 4929 indicadorDepurado += ","; 4930 indicadorDepurado += tituloConIndicador[1]; 4931 } 4932 } 4933 } 4934 4935 function IndicadorUnicoCompuesto(indicadorValor) { 4936 4937 //split partes indicador 4938 var indicadorCompuesto = {}; 4939 var indicador_final = indicadorValor.split("-")[0]; // nombre del indicador 4940 // si el texto ira en formato bold / negritas 4941 if (indicadorValor.indexOf("-b") !== -1) { 4942 indicadorCompuesto['indicador'] = "<b>" + indicador_final + "</b>"; 4943 } 4944 indicadorCompuesto['indicadorDepurado'] = indicadorValor.split("-")[1]; 4945 4946 return indicadorCompuesto; 4947 } 4948 4949 /// <summary> Dibuja cuadro tipo 6 compuesto, varios indicadores por un indicador por un area geografica, 4950 /// maneja grupos de indicadores por descripcion, cada renglon puede llevar negrita o identacion. </summary> 4951 /// 4952 /// <remarks> SERGIO.NIETO, 24/11/2016. </remarks> 4953 /// <param name="data"> Valores de indicador en JSON. </param> 4954 /// <param name="parametros"> Objeto de parametros en JSON. </param> 4955 /// <returns>SNM 08.08.2017 Se agrega nombre de columna si no llega por parametro. </returns> 4956 function DibujaCuadroTipo6Compuesto(data, parametros) { 4957 var tableStat = document.getElementById("tableStat" + parametros.contenedorCuadro); 4958 // tableStat.style.width = "100%"; 4959 var tablaInterna = ""; 4960 // var arrayLenght = data.length;
4961 var aPeriodos = data.dimension.periods.category.label; 4962 //var cabeceras = '<tr><th class ="Th" bgcolor="#DDD" >' + data.dimension.indicator.label + '</th>'; 4963 var tcPrincipal = (parametros.tituloColumnaPrincipal == "") ? "Concepto" : parametros.tituloColumnaPrincipal; 4964 //SNM 08.08.2017 Se agrega nombre de columna si no llega por parametro. 4965 if (parametros.titulosColumnas == "") { 4966 for (var i = 0; data.dimension.periods.category.label.length > i; ++i) { 4967 if (i != 0) { 4968 parametros.titulosColumnas += ","; 4969 } 4970 parametros.titulosColumnas += data.dimension.periods.category.label[i].Value; 4971 } 4972 } 4973 // var cabeceras = DibujaCabeceraUnNivelGenerico(tcPrincipal, parametros.indicadorValorCompuesto.maximaCantidadPorGrupo, parametros.titulosColumnas, parametros); 4974 var cabeceras = DibujaCabeceraUnNivelGenerico(tcPrincipal, parametros.indicadorValorCompuesto.maximaCantidadPorGrupo, parametros.titulosColumnas, parametros, aPeriodos); 4975 var arrayPeriodos = data.dimension.periods.category.label; 4976 4977 //tablaInterna += cabeceras; 4978 var datos = data.value; 4979 var indexValue = 0; 4980 var renglones = ""; 4981 var arrayIndicadores = data.dimension.indicator.category.label; 4982 var tablaDatos = []; 4983 4984 // llena datos transformados en un modelo de tabla 4985 for (var i = 0; i < arrayIndicadores.length; i++) { 4986 var renglonDatos = {}; 4987 renglonDatos["indicator"] = arrayIndicadores[i].Key; 4988 renglonDatos["descripcion"] = arrayIndicadores[i].Value; 4989 var valoresIndicador = []; 4990 $.each(arrayPeriodos, function (key, val) { 4991 valoresIndicador.push(datos[indexValue]); 4992 indexValue++; 4993 }); 4994 renglonDatos["valoresIndicador"] = valoresIndicador; 4995 tablaDatos.push(renglonDatos); 4996 } 4997 4998 var bgColor = "white"; 4999 5000 5001 // busca indicator "principal" y lo pinta en la tabla 5002 var indiceRenglon = 0; 5003 var transalateText = ""; 5004 var classTranslate = "" 5005 if (parametros.textoOriginal == "true") { 5006 transalateText = " notranslate "; 5007 classTranslate = ' class ="notranslate"' 5008 } 5009 5010 // busca "grupos" pinta su encabezado 5011 $.each(parametros.indicadorValorCompuesto.grupos, function (key, valGroup) { 5012 var boldInicio = ""; 5013 var boldFin = ""; 5014 var tdColumnas = ""; 5015 if (valGroup.titulo.indexOf("°") !== -1) { // si llegan 2 columnas separados por ° 5016 var aColumnasPrincipales = valGroup.titulo.split("°"); 5017 for (var x = 0; x < aColumnasPrincipales.length; x++) { 5018 var valDescripcionRenglon = aColumnasPrincipales[x]; 5019 if (valGroup.pintaBold) { 5020 aColumnasPrincipales[x] = '<b>' + aColumnasPrincipales[x] + '</b>'; 5021 boldInicio = "<b>"; 5022 boldFin = "</b>" 5023 } 5024 bgColor = ColorRenglon(indiceRenglon++); 5025 tdColumnas += '<td class="TdInicio' + transalateText + '" ><div ' + classTranslate + ' style="padding-left:' + IndentacionPadding(valGroup.identacion) + 'px;">' + aColumnasPrincipales[x] + '</div></td>'; 5026 } 5027 5028 renglones += '<tr>' + tdColumnas; 5029 5030 } else { 5031 var valDescripcionRenglon = valGroup.titulo; 5032 if (valGroup.pintaBold) { 5033 valDescripcionRenglon = '<b>' + valGroup.titulo + '</b>'; 5034 boldInicio = "<b>"; 5035 boldFin = "</b>" 5036 } 5037 bgColor = ColorRenglon(indiceRenglon++); 5038 tdColumnas += '<td class="TdInicio' + transalateText + '" ><div ' + classTranslate + ' style="padding-left:' + IndentacionPadding(valGroup.identacion) + 'px;">' + valDescripcionRenglon + '</div></td>'; 5039 renglones += '<tr>' + tdColumnas; 5040 } 5041 $.each(valGroup.indicadores, function (key, valGroupInd) { 5042 var obj2 = tablaDatos.filter(function (obj) { 5043 return obj.indicator === "I_" + valGroupInd; 5044 })[0]; 5045 if (typeof obj2 !== "undefined") { 5046 renglones += PintaRenglonTablaGruposB(boldInicio, boldFin, obj2, bgColor, parametros); 5047 } else { 5048 if (parametros.omitevalorseriecero == 'true') { 5049 renglones += '<td remove="true" class="Td" > </td>'; 5050 } else { 5051 renglones += '<td class="Td"><span style="display:none">-</span></td>'; 5052 } 5053 } 5054 5055 }); 5056 5057 renglones += '</tr>'; 5058 }); 5059 5060 // tablaInterna += renglones; 5061 tablaInterna += renglones; 5062 //var div = document.createElement("div"); 5063 //div.innerHTML = "<table><tbody>" + tablaInterna + "</tbody></table>"; 5064 //tableStat.appendChild(div.firstChild.tBodies[0]); 5065 ReemplazaTablaConEncabezado(tablaInterna, cabeceras, parametros); 5066 5067 //Elimina filas con datos vacios, que no traen ni 0 5068 if (parseInt($($("#tableStat" + parametros.contenedorCuadro).children()[1]).children().length) > 0) { 5069 $($("#tableStat" + parametros.contenedorCuadro).children()[1]).children().each(function (a, b) { 5070 if ($($(b).children()[1]).text().trim() === "") { 5071 $($(b)[0]).remove(); 5072 } 5073 }); 5074 } 5075 } 5076 5077 /** 5078 * Descripción: 5079 * Dibuja cuadro tipo 7 - Un indicador "741927" y regresa todas las entidades con varios periodos 5080 * Dibuja cuadro tipo 7 - Varios indicadores "Nombre entidad-clave_indicador|Nombre entidad 2-clave_indicador|..." 5081 * @modificado 9.11.2025 5082 * @param {*} data 5083 * @param {*} parametros 5084 */ 5085 function DibujaCuadroTipo7(data, parametros) { 5086 document.getElementById(parametros.contenedorCuadro).style.width = "100%"; 5087 document.getElementById("divDatos" + parametros.contenedorCuadro).style["overflow-x"] = "auto"; 5088 var tablaInterna = ""; 5089 var cabeceras = "";
5090 var arrayPeriodos = data.dimension.periods.category.label; 5091 var arrayIndicadores = data.dimension.indicator.category.label; 5092 var saltoPeriodos = arrayPeriodos.length; 5093 var listaAnios = []; 5094 var listaSubperiodos = []; 5095 var frecuencia = data.dimension.freq.category.label[0].Value; 5096 5097 if (parametros.pivotear === "false") { 5098 5099 // Si solo es un indicador 5100 // 9.11.2025 5101 if(arrayIndicadores.length === 1){ 5102 5103 // Arma los encabezados del cuadro ------------------------------- 5104 $.each(arrayPeriodos, function (key, val) { 5105 if (val.Value.indexOf("/") > -1) { 5106 var periodoCortado = val.Value.split("/")[0]; 5107 var subPeriodo = val.Value.split("/")[1]; 5108 if (listaAnios.indexOf(periodoCortado) == -1) { 5109 listaAnios.push(periodoCortado); 5110 } 5111 if (subPeriodo != undefined) { 5112 if (listaSubperiodos.indexOf(parseInt(subPeriodo)) == -1) { 5113 listaSubperiodos.push(parseInt(subPeriodo)); 5114 } 5115 } 5116 } 5117 }); 5118 5119 var columnasOcultas = 0 5120 if (parametros.cantidadPeriodos != "0") { 5121 columnasOcultas = arrayPeriodos.length - parseInt(parametros.cantidadPeriodos); 5122 if (columnasOcultas < 0) 5123 columnasOcultas = 0; 5124 } 5125 5126 var cantidadPorGrupo = Math.max.apply(null, listaSubperiodos); 5127 if (cantidadPorGrupo == undefined) 5128 cantidadPorGrupo = 1; 5129 var tcPrincipal = (parametros.tituloColumnaPrincipal == "") ? "Denominación" : parametros.tituloColumnaPrincipal; 5130 var periodosVisibles = []; 5131 for (var i = 0; i < arrayPeriodos.length; i++) { 5132 if (i >= columnasOcultas) { 5133 periodosVisibles.push(arrayPeriodos[i].Value); 5134 } 5135 } 5136 // console.log(periodosVisibles); 5137 var listaPeriodosObj = ObtienePeriodosVisbles(listaAnios, periodosVisibles); 5138 //SNM 08.08.2017 cambio de variable parametros.contenedorCuadro por parametros para dividir cabecera compuesta 5139 //cabeceras = DibujaCabeceraTipo7(tcPrincipal, cantidadPorGrupo, listaAnios, parametros.contenedorCuadro, listaPeriodosObj); 5140 cabeceras = DibujaCabeceraTipo7(tcPrincipal, cantidadPorGrupo, listaAnios, parametros, listaPeriodosObj); 5141 // console.log(cabeceras); 5142 var indiceColumna = 0; 5143 //console.log(arrayPeriodos) 5144 $.each(arrayPeriodos, function (key, val) { 5145 var estiloOculto = ""; 5146 if (indiceColumna < columnasOcultas) { 5147 estiloOculto = 'style="display:none;"'; 5148 } 5149 var valorColumna = PintaTitulosColumnas(parametros.titulosColumnas, val.Value, indiceColumna++); 5150 if (val.Value.indexOf("/") !== -1) { 5151 valorColumna = oMESES.getFormatoPeriodo(val.Value, frecuencia, parametros.idioma, 2); 5152 } 5153 // se añadio data-p4140eriodo con el periodo sin formato para poder buscarlo en la cabecera y compararlo con los datos de cifras estatus 5154 cabeceras += '<th class ="Th" id="tdAnio' + parametros.contenedorCuadro + valorColumna + '" bgcolor="#DDD" ' + estiloOculto + ' data-periodo="' + val.Value + '">' + valorColumna + '</th>'; 5155 }); 5156 5157 var contadorcolumnas = 0; 5158 var indexValue = 0; 5159 cabeceras += "<tr>"; 5160 cabeceras += "</tr>"; 5161 5162 // Arma filas del datos del cuadro ----------------------- 5163 // tablaInterna += cabeceras; 5164 var datos = data.value; 5165 var indexValue = 0; 5166 var renglones = ""; 5167 var arrayIndicadores = data.dimension.indicator.category.label; 5168 var arrayAreas = data.dimension.state.category.label;
5169 // var totalColumnas = data.dimension.periods.category.label; 5170 5171 for (var i = 0; i < arrayAreas.length; i++) { 5172 5173 renglones += '<tr><td class="TdInicio notranslate" >' + arrayAreas[i].Value.toString().split("-")[0] + '</td>'; 5174 5175 $.each(arrayPeriodos, function (key, val) { 5176 if (datos[indexValue] === "") { 5177 5178 renglones += '<td class="Td" > --- </td>'; 5179 } else { 5180 renglones += '<td class="Td" >' + datos[indexValue] + '</td>'; 5181 } 5182 indexValue++; 5183 }); 5184 5185 renglones += '</tr>'; 5186 } 5187 tablaInterna += renglones; 5188 // ReemplazaTabla(tablaInterna, parametros); 5189 5190 } else { 5191 5192 $.each(arrayPeriodos, function (key, val) { 5193 if (val.Value.indexOf("/") > -1) { 5194 var periodoCortado = val.Value.split("/")[0]; 5195 var subPeriodo = val.Value.split("/")[1]; 5196 if (listaAnios.indexOf(periodoCortado) == -1) { 5197 listaAnios.push(periodoCortado); 5198 } 5199 if (subPeriodo != undefined) { 5200 if (listaSubperiodos.indexOf(parseInt(subPeriodo)) == -1) { 5201 listaSubperiodos.push(parseInt(subPeriodo)); 5202 } 5203 } 5204 } 5205 }); 5206 5207 var columnasOcultas = 0 5208 if (parametros.cantidadPeriodos != "0") { 5209 columnasOcultas = arrayPeriodos.length - parseInt(parametros.cantidadPeriodos); 5210 if (columnasOcultas < 0) 5211 columnasOcultas = 0; 5212 } 5213 5214 var cantidadPorGrupo = Math.max.apply(null, listaSubperiodos); 5215 if (cantidadPorGrupo == undefined) 5216 cantidadPorGrupo = 1; 5217 var tcPrincipal = (parametros.tituloColumnaPrincipal == "") ? "Denominación" : parametros.tituloColumnaPrincipal; 5218 var periodosVisibles = []; 5219 for (var i = 0; i < arrayPeriodos.length; i++) { 5220 if (i >= columnasOcultas) { 5221 periodosVisibles.push(arrayPeriodos[i].Value); 5222 } 5223 } 5224 // console.log(periodosVisibles); 5225 var listaPeriodosObj = ObtienePeriodosVisbles(listaAnios, periodosVisibles); 5226 //SNM 08.08.2017 cambio de variable parametros.contenedorCuadro por parametros para dividir cabecera compuesta 5227 //cabeceras = DibujaCabeceraTipo7(tcPrincipal, cantidadPorGrupo, listaAnios, parametros.contenedorCuadro, listaPeriodosObj); 5228 cabeceras = DibujaCabeceraTipo7(tcPrincipal, cantidadPorGrupo, listaAnios, parametros, listaPeriodosObj); 5229 // console.log(cabeceras); 5230 var indiceColumna = 0; 5231 //console.log(arrayPeriodos) 5232 $.each(arrayPeriodos, function (key, val) { 5233 var estiloOculto = ""; 5234 if (indiceColumna < columnasOcultas) { 5235 estiloOculto = 'style="display:none;"'; 5236 } 5237 var valorColumna = PintaTitulosColumnas(parametros.titulosColumnas, val.Value, indiceColumna++); 5238 if (val.Value.indexOf("/") !== -1) { 5239 valorColumna = oMESES.getFormatoPeriodo(val.Value, frecuencia, parametros.idioma, 2); 5240 } 5241 // se añadio data-p4140eriodo con el periodo sin formato para poder buscarlo en la cabecera y compararlo con los datos de cifras estatus 5242 cabeceras += '<th class ="Th" id="tdAnio' + parametros.contenedorCuadro + valorColumna + '" bgcolor="#DDD" ' + estiloOculto + ' data-periodo="' + val.Value + '">' + valorColumna + '</th>'; 5243 }); 5244 5245 var contadorcolumnas = 0; 5246 var indexValue = 0; 5247 cabeceras += "<tr>"; 5248 5249 cabeceras += "</tr>"; 5250 5251 // tablaInterna += cabeceras; 5252 5253 var transalateText = ""; 5254 if (parametros.textoOriginal == "true") 5255 transalateText = " notranslate " 5256 var renglones = ""; 5257 var valores = data.value; 5258 var bgColor = "white"; 5259 var listaRenglones = []; 5260 for (var i = 0; i < arrayIndicadores.length; i++) { 5261 valDescripcionRenglon = arrayIndicadores[i].Value; 5262 // bgColor = ColorRenglon(i); 5263 var itemRenglon = {}; 5264 itemRenglon["indicador"] = arrayIndicadores[i].Key.replace("I_", ""); 5265 itemRenglon["descripcion"] = valDescripcionRenglon; 5266 itemRenglon["texto"] = '<th class="TdInicio' + transalateText + '" >' + valDescripcionRenglon + '</th>'; 5267 5268 var estiloOculto = ''; 5269 for (var p = 0; p < arrayPeriodos.length; p++) { 5270 estiloOculto = ""; 5271 if (p < columnasOcultas) 5272 estiloOculto = 'style="display:none;"'; 5273 indexValue = p + saltoPeriodos * i; 5274 if (indexValue < valores.length) { 5275 itemRenglon["texto"] += '<td class="Td" ' + estiloOculto + '>
5275' + valores[indexValue] + ' </td>'; 5276 // renglones += '<td class="Td" >' + valores[indexValue]+ ' </td>'; 5277 } 5278 } 5279 listaRenglones.push(itemRenglon); 5280 renglones += "</tr>"; 5281 } 5282 5283 var indiceColor = 0; 5284 $.each(parametros.indicadorValorCompuesto.grupos, function (key, valGroup) { 5285 5286 tablaInterna += "<tr>"; 5287 var obj2 = listaRenglones.filter(function (obj) { 5288 return obj.indicador === valGroup.indicadores[0]; 5289 })[0]; 5290 if (obj2 != undefined) { 5291 tablaInterna += FormatoRenglonTipo7(obj2.texto, valGroup.pintaBold, valGroup.identacion, obj2.descripcion, valGroup.titulo, indiceColor); // obj2.texto.replace(/class="Td"/g, 'class="TdB"').replace(obj2.descripcion,valGroup.); 5292 } 5293 else { 5294 var textoBlanco = ""; 5295 var itemRenglonBlanco = {}; 5296 itemRenglonBlanco["indicador"] = ""; 5297 var tituloGrupo = (valGroup.titulo == "_") ? " " : valGroup.titulo; 5298 itemRenglonBlanco["descripcion"] = tituloGrupo; 5299 5300 5301 itemRenglonBlanco["texto"] = '<th class="TdInicio" >' + tituloGrupo + '</th>'; 5302 5303 for (var p = 0; p < arrayPeriodos.length; p++) { 5304 itemRenglonBlanco["texto"] += '<td class="Td" > </td>'; 5305 } 5306 5307 tablaInterna += FormatoRenglonTipo7(itemRenglonBlanco.texto, valGroup.pintaBold, valGroup.identacion, itemRenglonBlanco.descripcion, tituloGrupo, indiceColor); 5308 } 5309 5310 indiceColor++; 5311 tablaInterna += "</tr>"; 5312 }); 5313 } 5314 } else { 5315 $.each(arrayPeriodos, function (key, val) { 5316 if (val.Value.indexOf("/") > -1) { 5317 var periodoCortado = val.Value.split("/")[0]; 5318 var subPeriodo = val.Value.split("/")[1]; 5319 if (listaAnios.indexOf(periodoCortado) == -1) { 5320 listaAnios.push(periodoCortado); 5321 } 5322 if (subPeriodo != undefined) { 5323 if (listaSubperiodos.indexOf(parseInt(subPeriodo)) == -1) { 5324 listaSubperiodos.push(parseInt(subPeriodo)); 5325 } 5326 } 5327 } 5328 }); 5329 5330 5331 //dibujado y calculo de columans 5332 var cantidadPorGrupo = Math.max.apply(null, listaSubperiodos); 5333 if (cantidadPorGrupo == undefined) 5334 cantidadPorGrupo = 1; 5335 var tcPrincipal = (parametros.tituloColumnaPrincipal == "") ? "Denominación" : parametros.tituloColumnaPrincipal; 5336 var periodosVisibles = []; 5337 for (var i = 0; i < arrayPeriodos.length; i++) { 5338 if (i >= columnasOcultas) { 5339 periodosVisibles.push(arrayPeriodos[i].Value); 5340 } 5341 } 5342 5343 var listaPeriodosObj = ObtienePeriodosVisbles(listaAnios, periodosVisibles); 5344 cabeceras = DibujaCabeceraTipo7(tcPrincipal, cantidadPorGrupo, 1, parametros, listaPeriodosObj); 5345 var indiceColumna = 0; 5346 5347 $.each(arrayPeriodos, function (key, val) { 5348 var estiloOculto = ""; 5349 if (indiceColumna < columnasOcultas) { 5350 estiloOculto = 'style="display:none;"'; 5351 } 5352 var valorColumna = PintaTitulosColumnas(parametros.titulosColumnas, val.Value, indiceColumna++); 5353 if (val.Value.indexOf("/") !== -1) { 5354 valorColumna = oMESES.getFormatoPeriodo(val.Value, frecuencia, parametros.idioma, 2); 5355 } 5356 // se añadio data-p4140eriodo con el periodo sin formato para poder buscarlo en la cabecera y compararlo con los datos de cifras estatus 5357 cabeceras += '<th class ="Th" id="tdAnio' + parametros.contenedorCuadro + valorColumna + '" bgcolor="#DDD" ' + estiloOculto + ' data-periodo="' + val.Value + '">' + valorColumna + '</th>'; 5358 }); 5359 5360 var contadorcolumnas = 0; 5361 var indexValue = 0; 5362 cabeceras += "<tr>"; 5363 5364 cabeceras += "</tr>"; 5365 5366 indiceColor++; 5367 tablaInterna += "</tr>"; 5368 var renglones = ""; 5369 var valores = data.value; 5370 var bgColor = "white"; 5371 var listaRenglones = []; 5372 var indiceColor = 0; 5373 var aIndicadoresIndex = data.dimension.indicator.category.index; 5374 // console.log(parametros) 5375 $.each(parametros.indicadorValorCompuesto.grupos, function (key, valGroup) { 5376 5377 tablaInterna += "<tr>"; 5378 var textoBlanco = ""; 5379 var itemRenglonBlanco = {}; 5380 itemRenglonBlanco["indicador"] = ""; 5381 var tituloGrupo = (valGroup.titulo == "_") ? " " : valGroup.titulo; 5382 itemRenglonBlanco["descripcion"] = tituloGrupo; 5383 5384 5385 itemRenglonBlanco["texto"] = '<th class="TdInicio" >' + tituloGrupo + '</th>'; 5386 5387 for (var p = 0; p < arrayPeriodos.length; p++) { 5388 itemRenglonBlanco["texto"] += '<td class="Td" > </td>'; 5389 } 5390 tablaInterna += FormatoRenglonTipo7(itemRenglonBlanco.texto, "true", valGroup.identacion, itemRenglonBlanco.descripcion, tituloGrupo, indiceColor); 5391 5392 tablaInterna += "</tr>"; 5393 //indicadores datos de api 5394 var aIndicadoresGrupo = valGroup.indicadores;
5395 for (var x = 0; x < aIndicadoresGrupo.length; x++) { 5396 tablaInterna += "<tr>"; 5397 var indicador = aIndicadoresGrupo[x]; //indicador que pertenece al grupo de indicadores 5398 //console.log(indicador); 5399 var oIndicador = arrayIndicadores.filter(function (ind) { 5400 return ind.Key === ("I_" + indicador).toString(); 5401 })[0]; 5402 if (oIndicador !== undefined) { 5403 var posIndicador = aIndicadoresIndex.indexOf(oIndicador.Key); 5404 // console.log(oIndicador); 5405 // var nombreIndicador = oIndicador.Value.split(">")[oIndicador.Value.split(">").length - 1].split(".")[oIndicador.Value.split(">")[oIndicador.Value.split(">").length - 1].split(".").length - 2]; 5406 var nombreIndicador = oIndicador.Value.split(">")[oIndicador.Value.split(">").length-1]; // Agregado el 15/dic/2020 5407 var itemRenglonBlanco = {}; 5408 itemRenglonBlanco["descripcion"] = nombreIndicador; 5409 itemRenglonBlanco["texto"] = '<th class="TdInicio" >' + " " + nombreIndicador + '</th>'; 5410 itemRenglonBlanco['texto'] += '<td class="Td">' + valores[posIndicador] + ' </td>'; 5411 tablaInterna += FormatoRenglonTipo7(itemRenglonBlanco.texto, "", "", itemRenglonBlanco.descripcion, nombreIndicador, indiceColor); 5412 5413 } 5414 indiceColor++; 5415 tablaInterna += "</tr>"; 5416 } 5417 }); 5418 5419 } 5420 ReemplazaTablaConEncabezado(tablaInterna, cabeceras, parametros); 5421 AjustaColspanCabeceraTipo7(listaAnios, periodosVisibles, parametros.contenedorCuadro); 5422 //FijaEncabezadoTabla(parametros); 5423 5424 } 5425 5426 /// <summary> Dibuja cuadro tipo derivado del 7 (14) con ultimo periodo + columna anual varios indicadores por varios periodos por un area geografica 5427 /// maneja grupos de indicadores por descripcion y sus datos por periodo, cada renglon puede llevar negrita o identacion. </summary> 5428 /// 5429 /// <remarks> @ROVALX, 05/03/2018. </remarks> 5430 /// 5431 /// <param name="data"> Valores de indicador en JSON. </param> 5432 /// <param name="parametros"> Objeto de parametros en JSON. </param> 5433 /// 5434 /// <returns> . </returns> 5435 function DibujaCuadroTipo14(data, parametros) { 5436 //console.log(parametros); 5437 //console.log(data); 5438 //var aMeses = ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic']; 5439 document.getElementById(parametros.contenedorCuadro).style.width = "100%"; 5440 document.getElementById("divDatos" + parametros.contenedorCuadro).style["overflow-x"] = "auto"; 5441 var tablaInterna = ""; 5442 var cabeceras = ""; 5443 var arrayPeriodos = data.dimension.periods.category.label; 5444 //var arrayIndicadores = data.dimension.indicator.category.label; 5445 var arrayIndicadores = parametros.indicadorDepurado.split(","); 5446 var saltoPeriodos = arrayPeriodos.length * 2; 5447 var listaAnios = []; 5448 var listaSubperiodos = []; 5449 var datosAnuales = data.indicadoresAnuales; 5450 var indicadoresPorGrupo = parametros.indicadorValorCompuesto.maximaCantidadPorGrupo; // total indicadores x grupo 5451 // ordenamiento: 2017-1....2017-12...2017...2016-1....2016-12...2016 5452 5453 //arrayPeriodos.sort(function compare(n1, n2) { 5454 // var per1 = n1.Value.indexOf("/") > -1 ? parseInt(n1.Value.split("/")[1]) : 13; 5455 // var per2 = n2.Value.indexOf("/") > -1 ? parseInt(n2.Value.split("/")[1]) : 13; 5456 // var anio1 = n1.Value.indexOf("/") > -1 ? parseInt(n1.Value.split("/")[0]) : parseInt(n1.Value); 5457 // var anio2 = n2.Value.indexOf("/") > -1 ? parseInt(n2.Value.split("/")[0]) : parseInt(n2.Value); 5458 // if (anio1 > anio2) { 5459 // return -1; 5460 // } else if (anio1 < anio2) { 5461 5462 // return 1; 5463 // } else { 5464 // if (per1 < per2) 5465 // return -1; 5466 // if (per1 > per2) 5467 // return 1; 5468 // else 5469 // return -1; 5470 // } 5471 //}); 5472 if (indicadoresPorGrupo === 4) { 5473 arrayPeriodos = arrayPeriodos.concat(arrayPeriodos); 5474 var nKey = 1; 5475 var nArrayPeriodos = []; 5476 $.each(arrayPeriodos, function (index, periodo) { 5477 if (index > 12) { 5478 var anual = periodo.Value.split("/"); 5479 if (parseInt(anual[1]) === 13) { 5480 arrayPeriodos[index].Value = periodo.Value.replace("/13", "");
5481 arrayPeriodos[index].Periodo = periodo.Value.replace("/13", ""); 5482 } 5483 if (periodo.Value.indexOf("/") !== -1) { 5484 Value = (parseInt(periodo.Value.split("/")[0]) + 1) + "/" + periodo.Value.split("/")[1]; 5485 } else { 5486 var Value = (parseInt(periodo.Value) + 1).toString(); 5487 } 5488 var per = { Key: "P" + nKey, Periodo: periodo.Value, Value: Value }; 5489 nArrayPeriodos.push(per); 5490 5491 } else { 5492 periodo.Periodo = periodo.Value; 5493 nArrayPeriodos.push(periodo); 5494 } 5495 nKey++; 5496 }); 5497 arrayPeriodos = nArrayPeriodos; 5498 } 5499 $.each(arrayPeriodos, function (key, val) { 5500 //if (val.Value.indexOf("/") > -1) { 5501 var anual = parseInt(val.Value.split("/")[1]); 5502 //if (anual === 13) { 5503 // arrayPeriodos[key]['Texto'] = "Anual"; 5504 //} else { 5505 //asigna nombre a mostrar en cabecera para mensuales 5506 var periodoCortado = val.Value.split("/")[0]; 5507 var subPeriodo = val.Value.split("/")[1]; 5508 //arrayPeriodos[key]['Texto'] = aMeses[parseInt(subPeriodo)]; 5509 arrayPeriodos[key]['Texto'] = (subPeriodo !== undefined && subPeriodo !== "13") ? oMESES.getMesNombreCorto(parseInt(subPeriodo), parametros.idioma) : parseInt(subPeriodo); 5510 5511 if (listaAnios.indexOf(periodoCortado) == -1) { 5512 listaAnios.push(periodoCortado); 5513 } 5514 if (subPeriodo != undefined) { 5515 if (listaSubperiodos.indexOf(parseInt(subPeriodo)) == -1) { 5516 listaSubperiodos.push(parseInt(subPeriodo)); 5517 } 5518 } 5519 // } 5520 //} else { 5521 // //asigna nombre a mostrar en cabecera para anuales 5522 // arrayPeriodos[key]['Texto'] = "AnualX"; 5523 //} 5524 }); 5525 5526 var columnasOcultas = 0 5527 if (parametros.cantidadPeriodos != "0") { 5528 columnasOcultas = arrayPeriodos.length - parseInt(parametros.cantidadPeriodos); 5529 if (columnasOcultas < 0) 5530 columnasOcultas = 0; 5531 } 5532 var cantidadPorGrupo = Math.max.apply(null, listaSubperiodos); 5533 if (cantidadPorGrupo == undefined) 5534 cantidadPorGrupo = 1; 5535 var tcPrincipal = (parametros.tituloColumnaPrincipal == "") ? "Denominación" : parametros.tituloColumnaPrincipal; 5536 var periodosVisibles = []; 5537 for (var i = 0; i < arrayPeriodos.length; i++) { 5538 if (i >= columnasOcultas) { 5539 periodosVisibles.push(arrayPeriodos[i].Value); 5540 } 5541 } 5542 var listaPeriodosObj = ObtienePeriodosVisbles(listaAnios, periodosVisibles); 5543 //cabecera principal de AÃOS no de meses-años 5544 cabeceras = DibujaCabeceraTipo7(tcPrincipal, cantidadPorGrupo, listaAnios, parametros, listaPeriodosObj); 5545 5546 var indiceColumna = 0; 5547 //crea cabeceras de meses-años 5548 cabeceras += "<tr>"; 5549 $.each(arrayPeriodos, function (key, val) { 5550 var estiloOculto = ""; 5551 if (indiceColumna < columnasOcultas) { 5552 estiloOculto = 'style="display:none;"'; 5553 } 5554 var valorColumna = val.Value;//PintaTitulosColumnas(parametros.titulosColumnas, val.Value, indiceColumna++); 5555 var textoColumna = ""; 5556 if (valorColumna.indexOf("/") !== -1) { 5557 //textoColumna = aMeses[parseInt(valorColumna.split("/")[1]) - 1]; 5558 var per = valorColumna.split("/")[1]; 5559 textoColumna = (per !== undefined && per !== "13") ? oMESES.getMesNombreCorto(parseInt(per), parametros.idioma) : "Anual_" + per; 5560 cabeceras += '<th class="Th" id="tdAnio' + parametros.contenedorCuadro + valorColumna + '" bgcolor="#DDD" ' + estiloOculto + ' >' + textoColumna + '</th>'; 5561 5562 } else { 5563 textoColumna = "Anual"; 5564 cabeceras += '<th class="Th" id="tdAnio' + parametros.contenedorCuadro + valorColumna + '" bgcolor="#DDD" ' + estiloOculto + ' >' + textoColumna + "_" + (parseInt(key) + 1) + '</th>'; 5565 } 5566 5567 }); 5568 5569 var contadorcolumnas = 0; 5570 var indexValue = 0; 5571 cabeceras += "<tr>"; 5572 // traduccion 5573 var transalateText = ""; 5574 if (parametros.textoOriginal == "true") 5575 transalateText = " notranslate " 5576 var renglones = ""; 5577 var valores = data.value; 5578 var bgColor = "white"; 5579 var listaRenglones = [];
5580 var aPeriodosData = data.dimension.periods.category; 5581 5582 for (var i = 0; i < arrayIndicadores.length; i++) { 5583 valDescripcionRenglon = "Titulox";//arrayIndicadores[i].Value; 5584 var indicadorAnual = arrayIndicadores[i];//arrayIndicadores[i].Key; 5585 var itemRenglon = {}; 5586 itemRenglon["indicador"] = arrayIndicadores[i];//arrayIndicadores[i].Key.replace("I_", ""); 5587 itemRenglon["descripcion"] = valDescripcionRenglon; 5588 itemRenglon["texto"] = '<th class="TdInicio' + transalateText + '" >' + valDescripcionRenglon + '</th>'; 5589 var estiloOculto = ''; 5590 var aValores = []; 5591 //recorre periodos 5592 var inc = 0; 5593 //for (var p = arrayPeriodos.length - 1; p >= 0; p--) { 5594 for (var p = 0; p < arrayPeriodos.length; p++) { 5595 var oPeriodoPos = parseInt(arrayPeriodos[p].Key.replace("P", "")) - 1; 5596 indexValue = oPeriodoPos + saltoPeriodos * i; 5597 aValores.push({ valor: valores[indexValue], periodo: arrayPeriodos[p].Value }); 5598 inc++; 5599 } 5600 itemRenglon["valores"] = aValores; 5601 listaRenglones.push(itemRenglon); // console.log(itemRenglon); 5602 // renglones += "</tr>"; 5603 } 5604 //Permite cambiar la cabecera para los anuales colocando el formato MesInicial-UltimoMesConDato 5605 var aValores = data.value; 5606 var posMesDato = 12; //posicion ultimo dato por variacion 5607 for (var i = 0; i < 12; i++) { 5608 if (aValores[i] === "") { 5609 posMesDato = i - 1; 5610 break; 5611 } 5612 } 5613 //var mesConUltimoDato = aMeses[parseInt(listaRenglones[0].valores[posMesDato].periodo.split("/")[1] - 1)]; 5614 var mesConUltimoDato = oMESES.getMesNombreCorto(listaRenglones[0].valores[posMesDato].periodo.split("/")[1], parametros.idioma); 5615 //console.log("mesConUltimoDato); 5616 //console.log(mesConUltimoDato); 5617 // var cabecerasFormatoAnual = cabeceras.replace(/Anual_13|Anual_26/gi, oMESES.getMesNombreCorto(1, parametros.idioma) + "-" + (mesConUltimoDato === "Ene" ? "Dic" : mesConUltimoDato)); 5618 var cabecerasFormatoAnual = cabeceras.replace(/Anual_13|Anual_26/gi, oMESES.getMesNombreCorto(1, parametros.idioma) + "-" + (posMesDato === 12 ? "Dic" : mesConUltimoDato)); 5619 cabeceras = cabecerasFormatoAnual; 5620 5621 // > renglones + columnas + valores 5622 var indiceColor = 0; 5623 $.each(parametros.indicadorValorCompuesto.grupos, function (key, valGroup) { 5624 var indiceColor = 0; 5625 var mergeData = {}; 5626 mergeData = listaRenglones[key]; 5627 for (var m = 0; m < mergeData.valores.length; m++) { 5628 mergeData.texto += '<td class="Td" >' + mergeData.valores[m].valor + ' </td>'; 5629 } 5630 tablaInterna += "<tr>"; 5631 tablaInterna += FormatoRenglonTipo7(mergeData.texto, valGroup.pintaBold, valGroup.identacion, mergeData.descripcion, valGroup.titulo, indiceColor); // obj2.texto.replace(/class="Td"/g, 'class="TdB"').replace(obj2.descripcion,valGroup.); 5632 indiceColor++; 5633 tablaInterna += "</tr>"; 5634 5635 }); 5636 5637 ReemplazaTablaConEncabezado(tablaInterna, cabeceras, parametros); 5638 AjustaColspanCabeceraTipo7(listaAnios, periodosVisibles, parametros.contenedorCuadro); 5639 FijaEncabezadoTabla(parametros); 5640 } 5641 5642 /// <summary> Dibuja cuadro tipo 8. Un indicador por un area geografica por varios periodos </summary> 5643 /// 5644 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 5645 /// 5646 /// <param name="data"> Valores de indicador en JSON. </param> 5647 /// <param name="parametros"> Objeto de parametros en JSON. </param> 5648 /// 5649 /// <returns> . </returns> 5650 function DibujaCuadroTipo8(data, parametros) { 5651 //var aMeses = ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', '
5651Septiembre', 'Octubre', 'Noviembre', 'Diciembre']; 5652 //if (parametros.idioma === "en") aMeses = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'Octuber', 'November', 'December']; 5653 if (data.ErrorCode == undefined) { 5654 //"keywords" 5655 //"tableSortPeriodos" 5656 //console.log("CUADRO 8") 5657 var oCobertura = oCriteriosCobertura.check(data); 5658 var bgColorCobertura = ""; 5659 var aCifras = data.CIFRAS_ESTATUS; 5660 var arrayPeriodos = data.dimension.periods.category.label; 5661 var valores = data.value; 5662 var tabla = ''; 5663 var titleCol1 = (parametros.idioma == "es") ? "Periodo" : "Period"; 5664 var titleCol2 = (parametros.idioma == "es") ? "Valor" : "Value"; 5665 var frecuencia = data.dimension.freq.category.label[0].Value; // frecuencia para determinar si llega en trimestral, mensual o anual 5666 5667 if (parametros.tituloColumnaPrincipal != "") titleCol1 = parametros.tituloColumnaPrincipal; 5668 if (parametros.titulosColumnas != "") titleCol2 = parametros.titulosColumnas; 5669 5670 tabla += '<tr><th class ="Th" bgcolor="#DDD">' + titleCol1 + '</th><th class ="Th" bgcolor="#DDD" id="tdValorUnidad_' + parametros.contenedorCuadro + '">' + titleCol2 + ' </th></tr>'; 5671 // tabla += '<tbody>'; 5672 if (parametros.orden !== null && parametros.orden === "n") { // ordenamiento alfanumerico 5673 var letraTmp = ""; 5674 for (var i = arrayPeriodos.length - 1; i >= 0; i--) { 5675 var bgColor = "white"; 5676 if (i % 2 == 0) { 5677 bgColor = "#EFEFEF"; 5678 } 5679 if (parametros.mostrarCifraEstatus === "true") { 5680 var perCifra = arrayPeriodos[i].Value; 5681 //var cifraEstatusPeriodo = aCifras.filter(function (cifra) { 5682 // return cifra.periodos.indexOf(perCifra) !== -1; 5683 //}); 5684 //if (cifraEstatusPeriodo.length > 0) { 5685 // arrayPeriodos[i].Value = arrayPeriodos[i].Value + "<sup>" + cifraEstatusPeriodo[0].letra.replace("/", "") + "</sup>"; 5686 //} 5687 /* for (var y = 0; y < aCifras.length; y++) { 5688 if (aCifras[y].periodo_corto === perCifra) { 5689 letraTmp = '<sup style="display:inline-block;font-size:9px;">' + aCifras[y].letra.replace("/", "") + "</sup>"; 5690 if (listaCifras[y].letra === "D") { 5691 letraTmp = ""; 5692 } 5693 } 5694 } */ 5695 for (var y = 0; y < aCifras.length; y++) { 5696 // agregado 01-09-2023 | Para que coloca solo en el periodo que sea igual 5697 if(frecuencia.toLowerCase() === "mensual"){ 5698 if (aCifras[y].periodo_corto === periodo) { 5699 // console.log(">> "+aCifras[y].periodo_corto, periodo); 5700 5701 letraTmp = '<sup style="display:inline-block;font-size:9px;">' + aCifras[y].letra.replace("/", "") + "</sup>"; 5702 if (aCifras[y].letra === "D") { 5703 letraTmp = ""; 5704 } 5705 } 5706 } else { 5707 if (aCifras[y].periodo_corto === periodo) { 5708 5709 letraTmp = '<sup style="display:inline-block;font-size:9px;">' + aCifras[y].letra.replace("/", "") + "</sup>"; 5710 if (aCifras[y].letra === "D") { 5711 letraTmp = ""; 5712 } 5713 } 5714 } 5715 } 5716 arrayPeriodos[i].Value = arrayPeriodos[i].Value + "<sup>" + letraTmp + "</sup>"; 5717 // si encontro cifras estatus para el indicador 5718 5719 } 5720 5721 tabla += '<tr><td class="TdInicioV" >' + arrayPeriodos[i].Value + '</td><td class="TdV" >' + valores[i] + '</td></tr>'; 5722 } 5723 } else { // sin el parametro de orden (null) 5724 5725 var letraTmp = ""; 5726 for (var i = 0; i < arrayPeriodos.length; i++) { 5727 var bgColor = "white"; 5728 if (i % 2 == 0) { 5729 bgColor = "#EFEFEF"; 5730 } 5731 var periodo = arrayPeriodos[i].Value; 5732 //if (parametros.mostrarCifraEstatus === "true") { 5733 // var perCifra = arrayPeriodos[i].Value; 5734 // var cifraEstatusPeriodo = aCifras.filter(function (cifra) { 5735 // return cifra.periodos.indexOf(perCifra) > -1; 5736 // });
5737 // // si encontro cifras estatus para el indicador 5738 // if (cifraEstatusPeriodo.length > 0) { 5739 // //console.log(periodo) 5740 // arrayPeriodos[i].Value = periodo + "<sup>" + cifraEstatusPeriodo[0].letra.replace("/", "") + "</sup>"; 5741 // } 5742 //} 5743 if (parametros.mostrarCifraEstatus === "true") { 5744 // for (var y = 0; y < aCifras.length; y++) { 5745 // if (aCifras[y].periodo_corto === periodo) { 5746 5747 // letraTmp = '<sup style="display:inline-block;font-size:9px;">' + aCifras[y].letra.replace("/", "") + "</sup>"; 5748 // if (aCifras[y].letra === "D") { 5749 // letraTmp = ""; 5750 // } 5751 // } 5752 // } 5753 letraTmp = ""; 5754 for (var y = 0; y < aCifras.length; y++) { 5755 // agregado 01-09-2023 | Para que coloca solo en el periodo que sea igual 5756 if(frecuencia.toLowerCase() === "mensual"){ 5757 if (aCifras[y].periodo_corto === periodo) { 5758 // console.log(">> "+aCifras[y].periodo_corto, periodo); 5759 5760 letraTmp = '<sup style="display:inline-block;font-size:9px;">' + aCifras[y].letra.replace("/", "") + "</sup>"; 5761 if (aCifras[y].letra === "D") { 5762 letraTmp = ""; 5763 } 5764 } 5765 } else { 5766 if (aCifras[y].periodo_corto === periodo) { 5767 5768 letraTmp = '<sup style="display:inline-block;font-size:9px;">' + aCifras[y].letra.replace("/", "") + "</sup>"; 5769 if (aCifras[y].letra === "D") { 5770 letraTmp = ""; 5771 } 5772 } 5773 } 5774 } 5775 5776 } 5777 // Si tiene cobertura aplica el color correspondiente segun el valor y criterio 5778 if(oCobertura != null){ 5779 var hexColor = oCriteriosCobertura.getColor(valores[i], oCobertura); 5780 if(hexColor != ""){ 5781 bgColorCobertura = "background-color:"+hexColor; 5782 } 5783 } 5784 // console.log("debug: FRECUENCIA QUINCENAL") 5785 // console.log(arrayPeriodos[i].Value, frecuencia) 5786 periodo = oMESES.getFormatoPeriodo(arrayPeriodos[i].Value, frecuencia, parametros.idioma, 1); 5787 tabla += '<tr><td class="TdInicioV" >' + periodo + " " + letraTmp + '</td><td class="TdV" style="'+bgColorCobertura+'" >' + valores[i] + '</td></tr>'; 5788 } 5789 } 5790 ReemplazaTabla(tabla, parametros); 5791 } 5792 } 5793 5794 /** 5795 * Cuadro 8 - SDMX con parametro activo d3 = D3Enabled = true 5796 * @param {any} data 5797 * @param {any} parametros 5798 */ 5799 function DibujaCuadroTipo8SDMX(data, parametros) { 5800 //creacion y definicion de las variables de los datos de sdmx 5801 var series = data.dataSets[0].series; 5802 var propiedadesSeries = Object.keys(series); 5803 var aValores = [], aPeriodos = []; 5804 var indicadorNombre = data.structure.dimensions.series[0].values[0].name; 5805 var indicador = data.structure.dimensions.series[0].values[0].id; 5806 var periodos = data.structure.dimensions.observation[0].values; 5807 5808 // armado de estructura de datos para el cuadro 5809 for (var x = 0; x < propiedadesSeries.length; x++) { 5810 var o = series[propiedadesSeries[x]].observations; 5811 var propiedadesValores = Object.keys(o); 5812 5813 for (var c = 0; c < propiedadesValores.length; c++) { 5814 var values = o[propiedadesValores[c]]; 5815 aValores.push(values[0]); 5816 } 5817 } 5818 // periodos 5819 for (var l = 0; l < periodos.length; l++) { 5820 aPeriodos.push(periodos[l].name); 5821 } 5822 5823 //creacion de la estructura de la tabla HEADER 5824 var TABLA = ""; 5825 var HEAD = document.createElement("thead"); 5826 var BODY = document.createElement("tbody"); 5827 5828 //columnas 5829 var aColumnas = ["Periodo", "Porcentaje"]; 5830 var tr = document.createElement("tr"); 5831 for (var x = 0; x < aColumnas.length; x++) { 5832 var th = document.createElement("th"); 5833 th.innerHTML = aColumnas[x]; 5834 th.className = "Th"; 5835 tr.appendChild(th); 5836 } 5837 HEAD.appendChild(tr); 5838 5839 //datos renglones 5840 for (var x = 0; x < aValores.length; x++) { 5841 var tr = document.createElement("tr") 5842 var td = document.createElement("td"); 5843 var valor = formatoDecimalesResultado(aValores[x], 1); 5844 td.innerHTML = aPeriodos[x]; 5845 tr.appendChild(td); 5846 var td = document.createElement("td"); 5847 td.innerHTML = valor; 5848 tr.appendChild(td); 5849 BODY.appendChild(tr) 5850 } 5851 TABLA = HEAD.innerHTML + BODY.innerHTML; 5852 ReemplazaTabla(TABLA, parametros); 5853 5854 //console.log(data); 5855 //return; 5856 //var aCifras = data.CIFRAS_ESTATUS;
5857 //var arrayPeriodos = data.dimension.periods.category.label; 5858 //var valores = data.value; 5859 //var tabla = ''; 5860 //var titleCol1 = (parametros.idioma == "es") ? "Periodo" : "Period"; 5861 //var titleCol2 = (parametros.idioma == "es") ? "Valor" : "Value"; 5862 //var frecuencia = data.dimension.freq.category.label[0].Value; // frecuencia para determinar si llega en trimestral, mensual o anual 5863 5864 //if (parametros.tituloColumnaPrincipal != "") 5865 // titleCol1 = parametros.tituloColumnaPrincipal; 5866 //if (parametros.titulosColumnas != "") 5867 // titleCol2 = parametros.titulosColumnas; 5868 //tabla += '<tr><th class ="Th" bgcolor="#DDD">' + titleCol1 + '</th><th class ="Th" bgcolor="#DDD" id="tdValorUnidad_' + parametros.contenedorCuadro + '">' + titleCol2 + ' </th></tr>'; 5869 //// tabla += '<tbody>'; 5870 //if (parametros.orden !== null && parametros.orden === "n") { // ordenamiento alfanumerico 5871 // var letraTmp = ""; 5872 // for (var i = arrayPeriodos.length - 1; i >= 0; i--) { 5873 // var bgColor = "white"; 5874 // if (i % 2 == 0) { 5875 // bgColor = "#EFEFEF"; 5876 // } 5877 // if (parametros.mostrarCifraEstatus === "true") { 5878 // var perCifra = arrayPeriodos[i].Value; 5879 // //var cifraEstatusPeriodo = aCifras.filter(function (cifra) { 5880 // // return cifra.periodos.indexOf(perCifra) !== -1; 5881 // //}); 5882 // //if (cifraEstatusPeriodo.length > 0) { 5883 // // arrayPeriodos[i].Value = arrayPeriodos[i].Value + "<sup>" + cifraEstatusPeriodo[0].letra.replace("/", "") + "</sup>"; 5884 // //} 5885 // for (var y = 0; y < aCifras.length; y++) { 5886 // if (aCifras[y].periodo_corto === perCifra) { 5887 // letraTmp = '<sup style="display:inline-block;font-size:9px;">' + aCifras[y].letra.replace("/", "") + "</sup>"; 5888 // if (listaCifras[y].letra === "D") { 5889 // letraTmp = ""; 5890 // } 5891 // } 5892 // } 5893 // arrayPeriodos[i].Value = arrayPeriodos[i].Value + "<sup>" + letraTmp + "</sup>"; 5894 // // si encontro cifras estatus para el indicador 5895 5896 // } 5897 5898 // tabla += '<tr><td class="TdInicioV" >' + arrayPeriodos[i].Value + '</td><td class="TdV" >' + valores[i] + '</td></tr>'; 5899 // } 5900 //} else { // sin el parametro de orden (null) 5901 // var letraTmp = ""; 5902 // for (var i = 0; i < arrayPeriodos.length; i++) { 5903 // var bgColor = "white"; 5904 // if (i % 2 == 0) { 5905 // bgColor = "#EFEFEF"; 5906 // } 5907 // var periodo = arrayPeriodos[i].Value; 5908 // //if (parametros.mostrarCifraEstatus === "true") { 5909 // // var perCifra = arrayPeriodos[i].Value; 5910 // // var cifraEstatusPeriodo = aCifras.filter(function (cifra) { 5911 // // return cifra.periodos.indexOf(perCifra) > -1; 5912 // // }); 5913 // // // si encontro cifras estatus para el indicador 5914 // // if (cifraEstatusPeriodo.length > 0) { 5915 // // //console.log(periodo) 5916 // // arrayPeriodos[i].Value = periodo + "<sup>" + cifraEstatusPeriodo[0].letra.replace("/", "") + "</sup>"; 5917 // // } 5918 // //} 5919 // if (parametros.mostrarCifraEstatus === "true") { 5920 // for (var y = 0; y < aCifras.length; y++) { 5921 // if (aCifras[y].periodo_corto === periodo) { 5922 5923 // letraTmp = '<sup style="display:inline-block;font-size:9px;">' + aCifras[y].letra.replace("/", "") + "</sup>"; 5924 // if (aCifras[y].letra === "D") { 5925 // letraTmp = ""; 5926 // } 5927 // } 5928 // } 5929 // } 5930 // periodo = oMESES.getFormatoPeriodo(arrayPeriodos[i].Value, frecuencia, parametros.idioma, 1); 5931 // tabla += '<tr><td class="TdInicioV" >' + periodo + " " + letraTmp + '</td><td class="TdV" >' + valores[i] + '</td></tr>'; 5932 // } 5933 //} 5934 //ReemplazaTabla(tabla, parametros); 5935 5936 } 5937 5938 /// <summary> Dibuja cuadro tipo 9. </summary> 5939 /// 5940 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 5941 /// 5942 /// <param name="data"> Valores de indicador en JSON. </param> 5943 /// <param name="parametros"> Objeto de parametros en JSON. </param> 5944 /// 5945 /// <returns> . </returns> 5946 function DibujaCuadroTipo9(data, parametros) { 5947 if (data.ErrorCode == undefined) {
5948 var arrayPeriodos = data.dimension.periods.category.label; 5949 var arrayAreas = data.dimension.state.category.label; 5950 var arrayDatos = data.value; 5951 // pinta cabecera por periodos (posiblemente cambie) 5952 var listaAnios = []; 5953 var listaSubperiodos = []; 5954 $.each(arrayPeriodos, function (key, val) { 5955 if (val.Value.indexOf("/") > -1) { 5956 var periodoCortado = val.Value.split("/")[0]; 5957 var subPeriodo = val.Value.split("/")[1]; 5958 if (listaAnios.indexOf(periodoCortado) == -1) { 5959 listaAnios.push(periodoCortado); 5960 } 5961 if (subPeriodo != undefined) { 5962 if (listaSubperiodos.indexOf(parseInt(subPeriodo)) == -1) { 5963 listaSubperiodos.push(parseInt(subPeriodo)); 5964 } 5965 } 5966 } 5967 }); 5968 var indiceColumna = 0; 5969 var columnasOcultas = 0 5970 if (parametros.cantidadPeriodos != "0") { 5971 columnasOcultas = arrayPeriodos.length - parseInt(parametros.cantidadPeriodos); 5972 if (columnasOcultas < 0) 5973 columnasOcultas = 0; 5974 } 5975 5976 var cantidadPorGrupo = Math.max.apply(null, listaSubperiodos); 5977 if (cantidadPorGrupo == undefined) 5978 cantidadPorGrupo = 1; 5979 var tcPrincipal = (parametros.tituloColumnaPrincipal == "") ? "Denominación" : parametros.tituloColumnaPrincipal; 5980 var periodosVisibles = []; 5981 for (var i = 0; i < arrayPeriodos.length; i++) { 5982 if (i >= columnasOcultas) { 5983 periodosVisibles.push(arrayPeriodos[i].Value); 5984 } 5985 } 5986 var listaPeriodosObj = ObtienePeriodosVisbles(listaAnios, periodosVisibles); 5987 cabeceras = DibujaCabeceraTipo9(tcPrincipal, cantidadPorGrupo, listaAnios, parametros.contenedorCuadro, listaPeriodosObj); 5988 5989 $.each(arrayPeriodos, function (key, val) { 5990 var estiloOculto = ""; 5991 if (indiceColumna < columnasOcultas) { 5992 estiloOculto = 'style="display:none;"'; 5993 } 5994 5995 5996 var valorColumna = PintaTitulosColumnas(parametros.titulosColumnas, val.Value, indiceColumna++); 5997 cabeceras += '<th class ="Th" bgcolor="#DDD" ' + estiloOculto + ' >' + valorColumna + '</th>'; 5998 }); 5999 // fin pinta cabecera periodos 6000 6001 var tabla = cabeceras; 6002 var iniciaPeriodos = 0; 6003 var periodoAnterior = arrayPeriodos[0].Value.split("/")[0]; 6004 for (var i = 0; i < arrayAreas.length; i++) { 6005 tabla += "<tr>" + "<td>" + arrayAreas[i].Value.split("-")[0] + "</td>"; 6006 iniciaPeriodos = i * 10; 6007 var sumaTotal = 0; 6008 6009 for (var j = 0; j < arrayPeriodos.length; j++) { 6010 var periodoRecorriendo = arrayPeriodos[j].Value.split("/")[0]; 6011 if (periodoRecorriendo != periodoAnterior) { 6012 var cantDecimales = obtieneCantidadDecimales(arrayDatos[0]); 6013 tabla += "<td>" + formatoDecimalesResultado(sumaTotal, cantDecimales) + " </td>"; 6014 //tabla += "<td>" + sumaTotal + " </td>"; 6015 sumaTotal = parseFloat(0); 6016 periodoAnterior = periodoRecorriendo; 6017 } 6018 6019 var valorPintado = arrayDatos[i + j] 6020 tabla += "<td>" + valorPintado + "</td>" 6021 6022 if (valorPintado != null && valorPintado != undefined && !isNaN(valorPintado)) 6023 sumaTotal += parseFloat(valorPintado); 6024 6025 6026 } 6027 //tabla += "<td>" + sumaTotal + "</td>"; 6028 tabla += "<td>" + formatoDecimalesResultado(sumaTotal, cantDecimales) + "</td>"; 6029 tabla += "</tr>"; 6030 } 6031 6032 } 6033 6034 ReemplazaTabla(tabla, parametros); 6035 } 6036 6037 /// <summary> Dibuja cuadro tipo 11, varios indicadores por varias areas geograficas por un periodo. </summary> 6038 /// 6039 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 6040 /// 6041 /// <param name="data"> Valores de indicador en JSON. </param> 6042 /// <param name="parametros"> Objeto de parametros en JSON. </param> 6043 /// 6044 /// <returns> . </returns> 6045 function DibujaCuadroTipo11(data, parametros) { 6046 if (data.ErrorCode == undefined) { 6047 6048 var arrayIndicadores = data.dimension.indicator.category.label;
6049 var arrayPeriodos = data.dimension.periods.category.label; 6050 var valores = data.value; 6051 var tabla = ''; 6052 6053 tabla += '<tr><th class ="Th" bgcolor="#DDD">Periodo</th>' 6054 for (var i = 0; i < arrayIndicadores.length; i++) { 6055 tabla += '<th class ="Th" bgcolor="#DDD" > ' + arrayIndicadores[i].Value + '</th>'; 6056 } 6057 tabla += '</tr>'; 6058 6059 //<th class ="Th" bgcolor="#DDD" id="tdValorUnidad_' + parametros.contenedorCuadro + '">Valor </th></tr>'; 6060 // tabla += '<tbody>'; 6061 var indice = 0; 6062 6063 for (var i = 0; i < arrayPeriodos.length; i++) { 6064 var bgColor = "white"; 6065 6066 if (i % 2 == 0) { 6067 bgColor = "#EFEFEF"; 6068 } 6069 tabla += '<tr><td class="TdInicioV" >' + arrayPeriodos[i].Value + '</td>'; 6070 for (var j = 0; j < arrayIndicadores.length; j++) { 6071 indice = j * arrayPeriodos.length + i; 6072 tabla += '<td class="TdV" >' + valores[indice] + '</td>'; 6073 6074 // indice++; 6075 } 6076 tabla += '</tr>'; 6077 6078 } 6079 6080 ReemplazaTabla(tabla, parametros); 6081 } 6082 } 6083 6084 /// <summary> Obtiene cantidad decimales por cada valor del array. </summary> 6085 /// 6086 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 6087 /// 6088 /// <param name="valor"> Valor numerico del array. </param> 6089 /// 6090 /// <returns> . </returns> 6091 function obtieneCantidadDecimales(valor) { 6092 var cantidadDecimales = 0; 6093 6094 var valorArray = valor.split("."); 6095 if (valorArray.length > 1) { 6096 if (!isNaN(valorArray[1])) 6097 cantidadDecimales = valorArray[1].length; 6098 } 6099 6100 return cantidadDecimales; 6101 } 6102 6103 /// <summary> Ajusta el formato de decimales del valor mostrado. </summary> 6104 /// 6105 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 6106 /// 6107 /// <param name="valor"> Valor numerico. </param> 6108 /// <param name="cantidadDecimales"> Cantidad de decimales. </param> 6109 /// 6110 /// <returns> . </returns> 6111 function formatoDecimalesResultado(valor, cantidadDecimales) { 6112 return parseFloat(Math.round(valor * 100) / 100).toFixed(cantidadDecimales); 6113 } 6114 6115 /// <summary> Consulta de metadato por HTTP POST. </summary> 6116 /// 6117 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 6118 /// 6119 /// <param name="dirGdirMetaDatosrafica"> Direccion del servicio. </param> 6120 /// <param name="indicadorServicio"> Clave de indicador. </param> 6121 /// <param name="areaGeograficaM"> Clave area geografica. </param> 6122 /// <param name="parametros"> Objeto de parametros de configuracion. </param> 6123 /// 6124 /// <returns> . </returns> 6125 function MetadatoPorPOST(dirGdirMetaDatosrafica, indicadorServicio, areaGeograficaM, parametros, dataValores) { 6126 6127 var datosServicio = { 6128 idioma: parametros.idioma, 6129 indicador: indicadorServicio, 6130 areaGeografica: areaGeograficaM, 6131 periodo: parametros.ultimoPeriodoV, 6132 mostrarGenerica: "null", 6133 formato: "json", 6134 token: parametros.token 6135 } 6136 if (API_V == "v1_2") { // api v2 6137 datosServicio.tematica = (parametros.tematica != "" ? parametros.tematica : "null"); 6138 } else if(API_V == "v1_1"){ 6139 // No se hace nada 6140 } else { // API VERSION 3 FINAL 6141 datosServicio.tematica = (parametros.tematica != "" ? parametros.tematica : "undefined"); 6142 } 6143 6144 var datoSend = JSON.stringify(datosServicio); 6145 var _this = this; 6146 var tipo = "POST"; 6147 $.ajax({
6148 // type: tipo, 6149 method: tipo, 6150 url: dirGdirMetaDatosrafica, 6151 contentType: "application/json", 6152 dataType: "json", 6153 data: datoSend, 6154 // processData: true, 6155 success: function (data) { 6156 PintaConsultaMetaDatos(data, parametros, dataValores); 6157 }, 6158 error: function (jqXHR, textStatus, errorThrown) { 6159 console.log(textStatus, errorThrown); 6160 // window.alert(jqXHR.responseText); 6161 } 6162 6163 }); 6164 } 6165 6166 /// 6167 /// 6168 /// 6169 function MetadatoPorPOSTv2(dirGdirMetaDatosrafica, indicadorServicio, areaGeograficaM, parametros, dataValores) { 6170 6171 var datosServicio = { 6172 idioma: parametros.idioma, 6173 indicador: indicadorServicio, 6174 areaGeografica: areaGeograficaM, 6175 //periodo: parametros.ultimoPeriodoV, 6176 mostrarGenerica: "null", 6177 periodoinicial: parametros.primerPeriodoV === null ? "null" : parametros.primerPeriodoV, 6178 periodofinal: parametros.ultimoPeriodoV === null ? "null" : parametros.ultimoPeriodoV , 6179 formato: "json", 6180 token: parametros.token 6181 } 6182 if (API_V == "v1_2") { // api v2 6183 datosServicio.tematica = (parametros.tematica != "" ? parametros.tematica : "null"); 6184 } else if(API_V == "v1_1"){ 6185 // No se hace nada 6186 } else { // API VERSION 3 FINAL 6187 datosServicio.tematica = (parametros.tematica != "" ? parametros.tematica : "undefined"); 6188 } 6189 6190 var datoSend = JSON.stringify(datosServicio); 6191 var _this = this; 6192 var tipo = "POST"; 6193 $.ajax({
6194 // type: tipo, 6195 method: tipo, 6196 url: dirGdirMetaDatosrafica, 6197 contentType: "application/json", 6198 dataType: "json", 6199 data: datoSend, 6200 // processData: true, 6201 success: function (data) { 6202 PintaConsultaMetaDatos(data, parametros, dataValores); 6203 }, 6204 error: function (jqXHR, textStatus, errorThrown) { 6205 console.log(textStatus, errorThrown); 6206 // window.alert(jqXHR.responseText); 6207 } 6208 6209 }); 6210 } 6211 6212 /// <summary> Consulta de metadatos por HTTP GET. </summary> 6213 /// 6214 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 6215 /// 6216 /// <param name="parametros"> Objeto de parametros de configuracion. </param> 6217 /// 6218 /// <returns> . </returns> 6219 function BuscaMetaDatos(parametros, dataValores) { 6220 //if (parametros.tipoFooter != "noFooter") 6221 //{ 6222 var dataValores = dataValores || null; // si no llegan los valores consultas de valorindicador 6223 var areaGeograficaM = "" 6224 if (parametros.areaGeografica.indexOf("|") > -1) { 6225 var entidadV = parametros.areaGeografica.split("|")[0]; 6226 if (entidadV == undefined) 6227 entidadV = "0"; 6228 var municipioV = (parametros.areaGeografica).toString().split("|")[1]; 6229 if (municipioV == undefined) 6230 municipioV = "0"; 6231 6232 areaGeograficaM = AgregarCeros(entidadV, 2) + AgregarCeros(municipioV, 3); 6233 6234 } 6235 else 6236 areaGeograficaM = parametros.areaGeografica; 6237 6238 var indicadorID = parametros.indicator; 6239 if (parametros.indicadorTipo == "b") { 6240 indicadorID = parametros.indicadorValorCompuesto.todosLosIndicadores; 6241 // indicadorID = parametros.indicadorValorCompuesto.todosLosIndicadores; 6242 } 6243 if (parametros.tipoCuadro == "6" || parametros.tipoCuadro == "7" || parametros.tipoCuadro == "14") 6244 indicadorID = parametros.indicadorValorCompuesto.todosLosIndicadores; 6245 6246 if (parametros.tipoCuadro == "12" && parametros.indicadorValorCompuesto.todosLosIndicadores) 6247 indicadorID = parametros.indicadorValorCompuesto.todosLosIndicadores; 6248 //if (parametros.tipoCuadro == "7") 6249 // indicadorID = parametros.indicadorValorCompuesto.todosLosIndicadores;
6250 //var ultimoPeriodo = (parametros.fechaFin === null) ? null : parametros.fechaFin; 6251 6252 var ultimoPeriodo = ""; 6253 var primerPeriodo = ""; 6254 var periodos = dataValores.dimension.periods.category.label; 6255 if (parametros.fechaFin == null || parametros.fechaFin == "null") { 6256 6257 if (periodos.length > 1) { 6258 periodos.sort(function compare(n1, n2) { 6259 var per1 = n1.Value.indexOf("/") > -1 ? parseInt(n1.Value.split("/")[1]) : 13; 6260 var per2 = n2.Value.indexOf("/") > -1 ? parseInt(n2.Value.split("/")[1]) : 13; 6261 var anio1 = n1.Value.indexOf("/") > -1 ? parseInt(n1.Value.split("/")[0]) : parseInt(n1.Value); 6262 var anio2 = n2.Value.indexOf("/") > -1 ? parseInt(n2.Value.split("/")[0]) : parseInt(n2.Value); 6263 if (anio1 > anio2) { 6264 return -1; 6265 } else if (anio1 < anio2) { 6266 6267 return 1; 6268 } else { 6269 if (per1 < per2) 6270 return 1; 6271 if (per1 > per2) 6272 return -1; 6273 else 6274 return -1; 6275 } 6276 }); 6277 ultimoPeriodo = periodos[periodos.length - 1].Value.indexOf("/") > -1 ? periodos[periodos.length - 1].Value.split("/")[0] : periodos[periodos.length - 1].Value; 6278 } else { 6279 ultimoPeriodo = periodos[0].Value.indexOf("/") > -1 ? periodos[0].Value.split("/")[0] : periodos[0].Value; 6280 } 6281 6282 } else {
6283 ultimoPeriodo = parametros.fechaFin + "_12"; 6284 primerPeriodo = parametros.fechaInicio !== "null" ? parametros.fechaInicio + "_01" : null; 6285 } 6286 6287 // Cuando la primerPeriodo es null y el ultimoPeriodo si trae valor 6288 // const comparaPeriodos = esMenor(primerPeriodo, ultimoPeriodo); 6289 // if (primerPeriodo === null && ultimoPeriodo !== null) { 6290 // primerPeriodo = ultimoPeriodo; 6291 // ultimoPeriodo = primerPeriodo; 6292 // } 6293 // si el periodo es anual solo de enviarse el año sin periodo 6294 if (dataValores.dimension.freq.category.label[0].Value == "Anual") { 6295 primerPeriodo = primerPeriodo.split("_")[0]; 6296 ultimoPeriodo = ultimoPeriodo.split("_")[0]; 6297 } 6298 var direccion = parametros.direccionServicio + extension_api_cuadros; 6299 var tematica = ""; 6300 if (API_V == "v1_2") { 6301 direccion = C_direccionServicio_V + "_" + API_V.toLowerCase();; 6302 tematica = (parametros.tematica != "" ? parametros.tematica + "/" : "null/"); 6303 } else if(API_V == "v1_1"){ 6304 // No se hace nada 6305 } else { // API VERSION 3 FINAL 6306 direccion = C_direccionServicio_V + "_" + API_V.toLowerCase() + "/"; 6307 tematica = (parametros.tematica != "" ? parametros.tematica + "/" : "undefined/"); 6308 } 6309 direccion = direccion + extension_api_cuadros 6310 var dirMetaDatos = direccion + '/MetadatoIndicador/' + parametros.idioma + '/' + indicadorID + '/' + areaGeograficaM + '/' + ultimoPeriodo + '/null/null/'+ tematica +'json/' + parametros.token; 6311 6312 if (aCuadrosNuevoMetodoPost.indexOf(parseInt(parametros.tipoCuadro)) > -1) { // Casos cuadros para nuevo metodo POST 6313 if (parametros.esOportuno == "1") { 6314 primerPeriodo = periodos[0].Value; 6315 primerPeriodo = primerPeriodo.indexOf("/") > -1 ? replaceAll("/", "_", primerPeriodo) : primerPeriodo; 6316 ultimoPeriodo = (primerPeriodo.indexOf("_") > -1) ? primerPeriodo.split("_")[0] + "_12" : primerPeriodo; 6317 6318 } else { 6319 if (ultimoPeriodo != "" && primerPeriodo != "") { 6320 //console.log(primerPeriodo, ultimoPeriodo) 6321 } else { 6322 ultimoPeriodo = periodos[0].Value.indexOf("/") > -1 ? replaceAll("/", "_", periodos[0].Value) : periodos[0].Value; 6323 primerPeriodo = periodos[periodos.length - 1].Value.indexOf("/") > -1 ? replaceAll("/", "_", periodos[periodos.length - 1].Value) : periodos[periodos.length - 1].Value; 6324 ultimoPeriodo = (ultimoPeriodo.indexOf(primerPeriodo) > -1) ? ultimoPeriodo.split("_")[0] + "_12" : ultimoPeriodo; // si el año del periodo es el mismo en los 2 6325 ultimoPeriodo = ultimoPeriodo.indexOf("_") > -1 ? ultimoPeriodo : ultimoPeriodo + "_12"; 6326 // console.log(periodos) 6327 6328 //primerPeriodo = periodos[0].Value.indexOf("/") > -1 ? periodos[0].Value.replace("/", "_") : periodos[0].Value; 6329 //ultimoPeriodo = periodos[periodos.length - 1].Value.indexOf("/") > -1 ? periodos[periodos.length - 1].Value.replace("/", "_") : periodos[periodos.length - 1].Value; 6330 //ultimoPeriodo = (ultimoPeriodo.indexOf(primerPeriodo) > -1) ? ultimoPeriodo.split("_")[0] + "_12" : ultimoPeriodo; // si el año del periodo es el mismo en los 2 6331 //ultimoPeriodo = ultimoPeriodo.indexOf("_") > -1 ? ultimoPeriodo : ultimoPeriodo + "_12"; 6332 } 6333 } 6334 dirMetaDatos = direccion + '/MetadatoIndicador/' + parametros.idioma + '/' + indicadorID + '/' + areaGeograficaM + '/' + primerPeriodo + '/' + ultimoPeriodo + '/null/' + tematica + 'json/' + parametros.token; 6335 //console.log(parametros.tipoCuadro) 6336 } 6337 if (indicadorID.length < 200) { 6338 $.getJSON(dirMetaDatos + "?callback=?", null, function (data) { 6339 PintaConsultaMetaDatos(data, parametros, dataValores); 6340 }); 6341 } 6342 else { 6343 parametros.ultimoPeriodoV = ultimoPeriodo; 6344 parametros.primerPeriodoV = primerPeriodo; 6345 if (aCuadrosNuevoMetodoPost.indexOf(parseInt(parametros.tipoCuadro)) > -1) { 6346 MetadatoPorPOSTv2(direccion + '/MetadatoIndicadorV2', indicadorID, areaGeograficaM, parametros, dataValores); 6347 } else { 6348 MetadatoPorPOST(direccion + '/MetadatoIndicador', indicadorID, areaGeograficaM, parametros, dataValores); 6349 } 6350 } 6351 6352 //} 6353 6354 } 6355 6356 /// <summary> Decodifica texto en UTF-8 </summary> 6357 /// 6358 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 6359 /// 6360 /// <param name="s"> Texto original. </param> 6361 /// 6362 /// <returns> . </returns> 6363 function decode_utf8(s) { 6364 return decodeURIComponent(escape(s)); 6365 } 6366 6367 /// <summary> Dibuja metadatos debajo de la tabla, despliega cifras, notas y fuentes. </summary> 6368 /// 6369 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 6370 /// 6371 /// <param name="data"> Informacion de metadatos en formato JSON. </param> 6372 /// <param name="parametros"> Objeto de parametros de configuracion. </param> 6373 /// 6374 /// <returns> . </returns> 6375 function PintaConsultaMetaDatos(data, parametros, dataValores) { 6376 var dataValores = dataValores || null; 6377 if (data.ErrorCode == undefined) { 6378 var tituloPrincipalFuente = " Fuente:"; 6379 if (parametros.idioma == "en") tituloPrincipalFuente = " Source:"; 6380 var tituloPrincipalNotas = " Notas y Llamadas:"; 6381 if (parametros.idioma == "en") tituloPrincipalNotas = " Notes and Footnotes:"; 6382 // tituloPrincipalNotas = " Notes and Calls:"; 6383 var listaFuentes = data.FUENTES; 6384 var tableFuentes = document.getElementById("tableFuentes" + parametros.contenedorCuadro); 6385 var listaNotas = data.NOTAS; 6386 var tableExceptions = document.getElementById("tableExceptions" + parametros.contenedorCuadro); 6387 var tableNotas = document.getElementById("tableNota" + parametros.contenedorCuadro); 6388 var contRenglon = 0; 6389 var tableTitleNotas = document.getElementById("tableTitleNotas" + parametros.contenedorCuadro); 6390 var tableTitleFuentes = document.getElementById("tableTitleFuentes" + parametros.contenedorCuadro); 6391 var listaCifras = data.CIFRAS_ESTATUS; 6392 var tableCifras = document.getElementById("tableCifras" + parametros.contenedorCuadro); 6393 var listaExcepciones = parametros.listaExcepciones ?? []; 6394 var tablaSiglas = document.getElementById("tableSiglas" + parametros.contenedorCuadro); 6395 var tableReglasPrecision = document.getElementById("tableReglasPrecision"+ parametros.contenedorCuadro) 6396 var tableReglasPrecisionExport = document.getElementById("tableReglasPrecisionExport"+ parametros.contenedorCuadro) 6397 var tableReglasPrecisionExportNotas = document.getElementById("tableReglasPrecisionExportNotas"+ parametros.contenedorCuadro) 6398 var divReglasPrecisionExport = document.getElementById("divReglasPrecisionExport"+parametros.contenedorCuadro); 6399 var tabInd = parametros.tabInd; 6400 6401 var footersPintados = 0; 6402 var fuentesPintadas = 0; 6403 var pintarLasNotas = true; 6404 if (listaNotas == undefined) { 6405 if (listaFuentes == undefined) 6406 pintarLasNotas = false; 6407 else { 6408 if (listaFuentes.length == 0) 6409 pintarLasNotas = false; 6410 } 6411 } 6412 if (listaFuentes == undefined) { 6413 if (listaNotas == undefined) 6414 pintarLasNotas = false; 6415 else { 6416 if (listaNotas.length == 0) 6417 pintarLasNotas = false; 6418 } 6419 } 6420 if (parametros.notaParametro != "") 6421 pintarLasNotas = true; 6422 6423 if (pintarLasNotas) { 6424 6425 }
6426 // Siglas de excepciones (Actualización 27.11.2025) 6427 if (parametros.mostrarSiglaExcepcion === "true" || parametros.mostrarSiglaExcepcion === true) { 6428 if (listaExcepciones != null && listaExcepciones[0]?.abbreviation !== "") { 6429 for (var i = 0; i < listaExcepciones.length; i++) { 6430 var renglon2 = tableExceptions.insertRow(-1); 6431 var cell1 = renglon2.insertCell(0); 6432 // tabAux++; 6433 // cell1.innerHTML = "<span class='pie cn_pre' tabIndex='" + tabInd + "'>" + listaExcepciones[i].abbreviation + " " + listaExcepciones[i].description + "</span>"; 6434 cell1.innerHTML = "<span class='pie cn_pre'>" + listaExcepciones[i].abbreviation + " " + listaExcepciones[i].description + "</span>"; 6435 } 6436 } 6437 } 6438 // Coloca el titulo 6439 6440 if ((parametros.muestraNota == "true" && listaNotas.length > 0) || parametros.notaParametro != "" || (parametros.mostrarCifraEstatus == "true" && listaCifras.length > 0) || listaExcepciones.length > 0) { 6441 if(tableTitleNotas){ 6442 var renglon0 = tableTitleNotas.insertRow(-1); 6443 var cell0 = renglon0.insertCell(0); 6444 // cell0.innerHTML = "<span class='pie' tabIndex='" + tabInd + "'>" + tituloPrincipalNotas + "</span>"; 6445 cell0.innerHTML = "<span class='pie'>" + tituloPrincipalNotas + "</span>"; 6446 } 6447 } 6448 6449 //ta 6450 // fin notas 6451 if (parametros.notaParametro != "") { 6452 if (parametros.condicionNota == "ambas" || parametros.condicionNota == "adicional") { 6453 footersPintados++; 6454 var renglon = tableNotas.insertRow(-1); 6455 var cell0 = renglon.insertCell(0); 6456 // cell0.innerHTML = "<span class='pie' tabIndex='" + tabAux + "'>" + parametros.notaParametro + "</span>"; 6457 cell0.innerHTML = "<span class='pie'>" + parametros.notaParametro + "</span>"; 6458 } 6459 } 6460 // var tabAux = tabInd; 6461 // notas 6462 var notasPintadas = 0; 6463 var listaSiglasInd = [] 6464 if (parametros.muestraNota == "true") { 6465 var notasDistintas = []; 6466 //inicio notas bd 6467 if (parametros.condicionNota == "ambas" || parametros.condicionNota == "bd") { 6468 var aPeriodosData = dataValores.dimension.periods.category.label; 6469 if (listaNotas != null) { 6470 // Ajuste 01/09/2025 6471 //Elimina notas donde NOTA este repetida. 6472 // Se genera un nuevo arreglo y luego se sobreescribe el original 6473 // let aNotasUnicas = []; 6474 // let nListaNotas = []; 6475 // listaNotas.forEach((n, idx) => { 6476 // if(aNotasUnicas.indexOf(n.NOTA.trim()) === -1){ 6477 // aNotasUnicas.push(n.NOTA); 6478 // nListaNotas.push(n)}; 6479 // }) 6480 // listaNotas = nListaNotas; 6481 6482 if (listaNotas.length > 0) { 6483 for (var i = contRenglon; i < listaNotas.length; i++) { 6484 if (notasDistintas.indexOf(listaNotas[i].NOTA) === -1) { 6485 notasDistintas.push(listaNotas[i].NOTA); 6486 var renglon = tableNotas.insertRow(-1); 6487 var cell1 = renglon.insertCell(0); 6488 var notaOriginal = ""; 6489 try { 6490 notaOriginal = decode_utf8(listaNotas[i].NOTA); 6491 } 6492 catch (e) { 6493 notaOriginal = listaNotas[i].NOTA; 6494 } 6495 var textoNota = ""; 6496 if ((notaOriginal.indexOf("La suma de los parciales") === -1 && parametros.tipoCuadro === "12") || parametros.tipoCuadro !== "12") { // ocultar nota solo para cuadro 12 6497 // textoNota = (listaNotas[i].SIGLA == null) ? notaOriginal : "<sup style='font-size:11px'><b>" + listaNotas[i].SIGLA +(listaNotas[i].diferenciador !== undefined? "("+listaNotas[i].diferenciador+")" : "") + "/</b></sup> " + notaOriginal; 6498 textoNota = (listaNotas[i].SIGLA == null) ? notaOriginal : "<sup style='font-size:11px'><b>" + (listaNotas[i]._SIGLA ? listaNotas[i]._SIGLA : listaNotas[i].SIGLA) + "/</b></sup> " + notaOriginal; 6499 if (listaNotas.length == 1) { 6500 var indicadorTipo = parametros.indicator.charAt(0);
6501 if (indicadorTipo != "b") { 6502 textoNota = "a/ " + notaOriginal; 6503 PintaSiglaEnEncabezado(parametros.tipoCuadro, "a", ""); 6504 } 6505 } 6506 // nota general 1 indicador ( PERIODO = 0 && num indicadores = 1) 6507 // nota general > 1 indicador (PERIODO = 0 && num indicadores > 1) 6508 // modificacion 13/ago/2018 6509 if (( 6510 listaNotas[i].PERIODO === "0" || 6511 listaNotas[i].PERIODO === "0 - " || 6512 listaNotas[i].PERIODO === "/") || 6513 (parametros.indicadorDepurado.length === 1 || aPeriodosData.length === 1)) { 6514 if (parametros.tipoCuadro !== "12") 6515 textoNota = listaNotas[i].NOTA; 6516 } 6517 // tabAux++; 6518 // cell1.innerHTML = "<span class='pie' tabIndex='" + tabAux + "'>" + textoNota + "</span>"; 6519 cell1.innerHTML = "<span class='pie'>" + textoNota + "</span>"; 6520 notasPintadas++; 6521 } 6522 } 6523 } 6524 //if (notasPintadas > 0) { 6525 // var renglon = tableTitleNotas.insertRow(-1); 6526 // var cell0 = renglon.insertCell(0); 6527 // cell0.innerHTML = "<span class='pie' tabIndex='" + tabInd + "'>" + tituloPrincipalNotas + "</span>"; 6528 footersPintados++; 6529 //} 6530 } 6531 } 6532 } 6533 // fin notas bd 6534 if (data.INDICADORES_CON_SIGLA != undefined) { 6535 6536 var indicadorTipo = parametros.indicator.charAt(0);
6537 var pintarEnCabecera = PintaNotaUnIndicador(parametros.tipoCuadro, data.INDICADORES_CON_SIGLA, parametros.indicadorDepurado, pintarEnCabecera, indicadorTipo); 6538 6539 if (pintarEnCabecera) { 6540 for (var i = 0; i < data.INDICADORES_CON_SIGLA.length; i++) { 6541 if (listaSiglasInd.indexOf(data.INDICADORES_CON_SIGLA[i].SIGLA) == -1) { 6542 listaSiglasInd.push(data.INDICADORES_CON_SIGLA[i].SIGLA); 6543 PintaSiglaEnEncabezado(parametros.tipoCuadro, data.INDICADORES_CON_SIGLA[i].SIGLA, data.INDICADORES_CON_SIGLA[i].INDICADOR); 6544 6545 } 6546 } 6547 } 6548 6549 } 6550 } 6551 // cifras 6552 /* tabInd = tabAux + 1; 6553 tabAux = tabInd; */ 6554 if (parametros.mostrarCifraEstatus == "true" || parametros.mostrarCifraEstatus == true) { 6555 borraTabla(tableCifras); 6556 6557 if (listaCifras != null) { 6558 if (aCuadrosNuevoMetodoPost.indexOf(parseInt(parametros.tipoCuadro)) === -1) { // si el cuadro no aplica aun al nuevo metodo post v2 6559 var aPeriodosData = dataValores.dimension.periods.category.label; 6560 //if (aPeriodosData.length > 1) { 6561 //listaCifras.reverse(); 6562 var aCifrasPintadas = []; 6563 // console.log(aPeriodosData); 6564 for (var i = contRenglon; i < listaCifras.length; i++) { 6565 if (listaCifras[i].descripcion != "" && listaCifras[i].descripcion != null) { 6566 if (listaCifras[i].letra !== null && listaCifras[i].letra !== "D") { 6567 //if (parametros.tipoCuadro === "2" && dataValores !== null) { 6568 6569 var searchedPeriod = aPeriodosData.filter(function (p) { 6570 return p.Value === listaCifras[i].periodos; 6571 }); 6572 var strDescripcion = (listaCifras[i].descripcion.split(" a partir")[0]); 6573 if (strDescripcion.indexOf("preliminar") > -1) { 6574 strDescripcion = listaCifras[i].descripcion.split(" a partir")[0].replace("preliminar", "preliminares"); 6575 } 6576 if (strDescripcion.indexOf("revisada") > -1) { 6577 strDescripcion = listaCifras[i].descripcion.split(" a partir")[0].replace("revisada", "revisadas"); 6578 } 6579 if (strDescripcion.indexOf("revisadass") > -1) { 6580 strDescripcion = strDescripcion.replace("revisadass", "revisadas"); 6581 } 6582 strDescripcion = strDescripcion.replace("preliminareses", "preliminares"); 6583 if (searchedPeriod.length > 0) { 6584 6585 var renglon2 = tableCifras.insertRow(-1); 6586 var cell2 = renglon2.insertCell(0); 6587 // tabAux++; 6588 //var formato = (listaCifras[i].periodos.indexOf("/") !== -1) ? oMESES.getFormatoPeriodo(listaCifras[i].periodos, dataValores.dimension.freq.category.label[0].Value, parametros.idioma, 1) : listaCifras[i].periodos; 6589 //var strDescripcion = listaCifras[i].descripcion.split(listaCifras[i].periodos)[0] + " " + formato; 6590 if (aCifrasPintadas.indexOf(strDescripcion) === -1) { // evitar repetir los estatus 6591 aCifrasPintadas.push(strDescripcion); 6592 6593 if (parametros.esOportuno === "1") { 6594 // cell2.innerHTML = "<span class='pie' tabIndex='" + tabAux + "'>" + strDescripcion + "</span>"; 6595 cell2.innerHTML = "<span class='pie'>" + strDescripcion + "</span>"; 6596 } else { 6597 if (aPeriodosData.length == 1) { 6598 // cell2.innerHTML = "<span class='pie' tabIndex='" + tabAux + "'>" + strDescripcion + "</span>"; 6599 cell2.innerHTML = "<span class='pie'>" + strDescripcion + "</span>"; 6600 } else { 6601 // cell2.innerHTML = "<span class='pie' tabIndex='" + tabAux + "'><sup>" + listaCifras[i].letra.replace("/", "") + "</sup> " + strDescripcion + "</span>"; 6602 cell2.innerHTML = "<span class='pie'><sup>" + listaCifras[i].letra.replace("/", "") + "</sup> " + strDescripcion + "</span>"; 6603 } 6604 } 6605 } 6606 } else { 6607 if (aCifrasPintadas.indexOf(strDescripcion) === -1) { // evitar repetir los estatus 6608 aCifrasPintadas.push(strDescripcion); 6609 6610 if (parametros.esOportuno === "1") { 6611 if ((listaCifras.length - 1) === i) { 6612 var renglon2 = tableCifras.insertRow(-1); 6613 var cell2 = renglon2.insertCell(0); 6614 // tabAux++; 6615 // cell2.innerHTML = "<span class='pie' tabIndex='" + tabAux + "'>" + strDescripcion + "</span>"; 6616 cell2.innerHTML = "<span class='pie'>" + strDescripcion + "</span>"; 6617 } 6618 } else { 6619 6620 var renglon2 = tableCifras.insertRow(-1); 6621 var cell2 = renglon2.insertCell(0); 6622 // tabAux++; 6623 if (aPeriodosData.length == 1) { 6624 6625 var addCifra = aPeriodosData.filter(function (periodo) { 6626 return periodo.Value === listaCifras[i].periodos; 6627 }); 6628 if (addCifra.length > 0) { 6629 // cell2.innerHTML = "<span class='pie' tabIndex='" + tabAux + "'>" + strDescripcion + "</span>"; 6630 cell2.innerHTML = "<span class='pie'>" + strDescripcion + "</span>"; 6631 } 6632 } else { 6633 // cell2.innerHTML = "<span class='pie' tabIndex='" + tabAux + "'><sup>" + listaCifras[i].letra.replace("/", "") + "</sup> " + strDescripcion + "</span>"; 6634 cell2.innerHTML = "<span class='pie'><sup>" + listaCifras[i].letra.replace("/", "") + "</sup> " + strDescripcion + "</span>"; 6635 } 6636 } 6637 } else { 6638 //ocultar titulo de notas y fuentes 6639 // agregado 04052020 6640 if ($("#tableTitleNotas"+parametros.contenedorCuadro).find("tbody").children().length == 1) { 6641 $("#tableTitleNotas"+parametros.contenedorCuadro).remove() 6642 } 6643 } 6644 } 6645 6646 } 6647 //} 6648 // fuentesPintadas++; 6649 } 6650 } 6651 6652 } else { // cuadros que aplican al nuevo metodo post (03-08-2018) ultima modificacion 21 agosto 2018 6653 //console.log("> Cifras estatus nuevo metodo"); 6654 var aPeriodosData = dataValores.dimension.peri
6654ods.category.label; 6655 var frecuencia = dataValores.dimension.freq.category.label[0].Value; 6656 var aNoRepatEstatus = []; 6657 var cifrasPintadasSinD = []; // para validar y saber si ocultar el titulo de notas y llamadas 6658 for (var i = contRenglon; i < listaCifras.length; i++) { 6659 if (listaCifras[i].descripcion != "" && listaCifras[i].descripcion != null) { 6660 var strDescripcion = ""; 6661 //var renglon2 = tableCifras.insertRow(-1); 6662 //var cell2 = renglon2.insertCell(0); 6663 //cell2.className = "CellNote"; 6664 //tabAux++; 6665 6666 // console.log(console.log(listaCifras[i]); 6667 if(parametros.idioma == "es"){ 6668 // var strDescripcion = (listaCifras[i].descripcion.split(" a partir")[0]); 6669 // if (strDescripcion.indexOf("preliminar") > -1) { 6670 // strDescripcion = listaCifras[i].descripcion.split(" a partir")[0].replace("preliminar", "preliminares"); 6671 // } 6672 // if (strDescripcion.indexOf("revisada") > -1) { 6673 // strDescripcion = listaCifras[i].descripcion.split(" a partir")[0].replace("revisada", "revisadas"); 6674 // } 6675 // if (strDescripcion.indexOf("revisadass") > -1) { 6676 // strDescripcion = strDescripcion.replace("revisadass", "revisadas"); 6677 // } 6678 // strDescripcion = strDescripcion.replace("preliminareses", "preliminares"); 6679 if (listaCifras[i].descripcion.toLowerCase().indexOf("preliminar") > -1) { 6680 strDescripcion = "Cifras preliminares"; 6681 } 6682 if (listaCifras[i].descripcion.toLowerCase().indexOf("revisada") > -1) { 6683 strDescripcion = "Cifras revisadas"; 6684 } 6685 if (listaCifras[i].descripcion.toLowerCase().indexOf("oportuna") > -1) { 6686 strDescripcion = "Cifras oportunas"; 6687 } 6688 if (listaCifras[i].descripcion.toLowerCase().indexOf("estimada") > -1) { 6689 strDescripcion = "Cifras estimadas"; 6690 } 6691 if (listaCifras[i].descripcion.toLowerCase().indexOf("ajustada") > -1) { 6692 strDescripcion = "Cifras ajustadas"; 6693 } 6694 } else { 6695 strDescripcion = (listaCifras[i].descripcion.split(" a partir")[0]); 6696 if (strDescripcion.indexOf("preliminary") > -1) { 6697 strDescripcion = listaCifras[i].descripcion.split(" a partir")[0].replace("preliminary", "preliminares"); 6698 } 6699 if (strDescripcion.indexOf("preliminary figures") > -1) { 6700 strDescripcion = listaCifras[i].descripcion.split(" a partir")[0].replace("preliminary figures", "preliminares"); 6701 } 6702 if (listaCifras[i].descripcion.search(/Preliminary/) > -1 || listaCifras[i].descripcion.search(/Preliminary figures/) > -1) { 6703 strDescripcion = listaCifras[i].descripcion; 6704 } 6705 if (listaCifras[i].descripcion.search(/Reviewed/) > -1 || listaCifras[i].descripcion.search(/Reviewed figures/) > -1) { 6706 strDescripcion = listaCifras[i].descripcion; 6707 } 6708 6709 if (listaCifras[i].descripcion.search(/Timely/) > -1 || listaCifras[i].descripcion.search(/Timely figures/) > -1) { 6710 strDescripcion = listaCifras[i].descripcion; 6711 } 6712 if (listaCifras[i].descripcion.search(/Estimated/) > -1 || listaCifras[i].descripcion.search(/Estimated figures/) > -1) { 6713 strDescripcion = listaCifras[i].descripcion; 6714 } 6715 if (listaCifras[i].descripcion.search(/Adjusted/) > -1 || listaCifras[i].descripcion.search(/Adjusted figures/) > -1) { 6716 strDescripcion = listaCifras[i].descripcion; 6717 } 6718 } 6719 if (parametros.mostrarEstatusPeriodo === "true" || 6720 listaCifras.length > 1 || 6721 aPeriodosData.length > 1 6722 ) {// ultima modificacion:16-04-2018 1:24 pm 6723 6724 var letra = listaCifras[i].letra.split("/")[0]; 6725 if (aNoRepatEstatus.indexOf(letra) === -1) { 6726 // tabAux++; 6727 aNoRepatEstatus.push(letra); 6728 if (letra !== "D") { 6729 var renglon2 = tableCifras.insertRow(-1); 6730 var cell2 = renglon2.insertCell(0); 6731 cell2.className = "CellNote"; 6732 // cell2.innerHTML = "<span class='pie' tabIndex ='" + tabAux + "'><sup>" + letra + "</sup> " + strDescripcion + "</span>"; 6733 cell2.innerHTML = "<span class='pie'><sup>" + letra + "</sup> " + strDescripcion + "</span>"; 6734 cifrasPintadasSinD.push(listaCifras[i]); 6735 } 6736 } 6737 } else if (parametros.esOportuno === "1") { 6738 // tabAux++; 6739 if ((listaCifras.length - 1) === i) { 6740 var letra = (listaCifras[i].letra !== undefined || listaCifras[i].letra !== null) ? listaCifras[i].letra.split("/")[0] : ""; 6741 if (letra !== "D") { 6742 var renglon2 = tableCifras.insertRow(-1); 6743 var cell2 = renglon2.insertCell(0); 6744 cell2.className = "CellNote"; 6745 // cell2.innerHTML = "<span class='pie' tabIndex ='" + tabAux + "'>" + strDescripcion + "</span>"; 6746 cell2.innerHTML = "<span class='pie'>" + strDescripcion + "</span>"; 6747 cifrasPintadasSinD.push(listaCifras[i]); 6748 } 6749 } 6750 } else { 6751 var letra = (listaCifras[i].letra !== undefined || listaCifras[i].letra !== null) ? listaCifras[i].letra.split("/")[0] : ""; 6752 if (letra !== "D") { 6753 var renglon2 = tableCifras.insertRow(-1); 6754 var cell2 = renglon2.insertCell(0); 6755 cell2.className = "CellNote"; 6756 // cell2.innerHTML = "<span class='pie' tabIndex ='" + tabAux + "'>" + strDescripcion + "</span>"; 6757 cell2.innerHTML = "<span class='pie'>" + strDescripcion + "</span>"; 6758 cifrasPintadasSinD.push(listaCifras[i]); 6759 } 6760 } 6761 } 6762 } 6763 if (cifrasPintadasSinD.length == 0 && $(tableNotas).find("tbody").children().length == 0) { 6764 $(tableTitleNotas).remove() 6765 } 6766 //if (listaExcepciones.length == 0 && cifrasPintadasSinD.length == 0 && listaNotas.length == 0) { 6767 // $(tableTitleNotas).css({ display: "none" }); 6768 //} 6769 } 6770 } 6771 } 6772 6773 6774 // fin cifras 6775 /* tabInd = tabAux + 1; 6776 tabAux = tabInd; */ 6777 6778 // fuentes 6779 var fuentesDistintas1 = []; 6780 if (parametros.muestraFuente == "true") 6781 if (parametros.mostrarFuentePersonalizada != "") { 6782 var renglon2 = tableFuentes.insertRow(-1); 6783 var cell2 = renglon2.insertCell(0); 6784 var textoFuente = parametros.mostrarFuentePersonalizada.split("|")[0]; 6785 var urlFuente = parametros.mostrarFuentePersonalizada.split("|")[1]; 6786 if (urlFuente != undefined) 6787 textoFuente = "<a href='" + urlFuente + "'>" + parametros.mostrarFuentePersonalizada.split("|")[0] + "</a>" 6788 // tabAux++; 6789 // cell2.innerHTML = "<span class='pie' tabIndex='" + tabAux + "'>" + textoFuente + "</span>"; 6790 cell2.innerHTML = "<span class='pie'>" + textoFuente + "</span>"; 6791 fuentesPintadas++; 6792 } 6793 else { 6794 if (listaFuentes != null) { 6795 if (listaFuentes.length > 0) { 6796 // Si hay fuentes, se ordenan por periodo de menor a mayor 6797 if (listaFuentes.length > 1) { 6798 listaFuentes.sort(function (n1, n2) { 6799 var p1 = n1.PERIODO.indexOf("-") ? parseInt(n1.PERIODO.split("-")[0]) : parseInt(n1.PERIODO); 6800 var p2 = n2.PERIODO.indexOf("-") ? parseInt(n2.PERIODO.split("-")[0]) : parseInt(n2.PERIODO); 6801 6802 return p1 - p2; 6803 }); 6804 } 6805 for (var i = contRenglon; i < listaFuentes.length; i++) { 6806 if (listaFuentes[i].NOMBRE_FUENTE != "" && listaFuentes[i].NOMBRE_FUENTE != null) { 6807 if (fuentesDistintas1.indexOf(listaFuentes[i].NOMBRE_FUENTE) < 0) { 6808 fuentesDistintas1.push(listaFuentes[i].NOMBRE_FUENTE) 6809 var urlFuente = EvaluaParametro(l
6809istaFuentes[i].URL_PROYECTO, ""); 6810 var fuenteOriginal = ""; 6811 try { 6812 fuenteOriginal = decode_utf8(listaFuentes[i].NOMBRE_FUENTE); 6813 } 6814 catch (err) { 6815 fuenteOriginal = listaFuentes[i].NOMBRE_FUENTE; 6816 } 6817 var textoFuente = fuenteOriginal; 6818 if (urlFuente != "" && urlFuente != null) 6819 textoFuente = "<a href='" + urlFuente + "'>" + fuenteOriginal + "</a>" 6820 6821 6822 var renglon2 = tableFuentes.insertRow(-1); 6823 var cell2 = renglon2.insertCell(0); 6824 // tabAux++; 6825 // cell2.innerHTML = "<span class='pie' tabIndex='" + tabAux + "'>" + textoFuente + "</span>"; 6826 cell2.innerHTML = "<span class='pie'>" + textoFuente + "</span>"; 6827 fuentesPintadas++; 6828 } 6829 } 6830 } 6831 6832 } 6833 } 6834 } 6835 if (fuentesPintadas > 0) { 6836 var renglon = tableTitleFuentes.insertRow(-1); 6837 var cell1 = renglon.insertCell(0); 6838 // cell1.innerHTML = "<span class='pie' tabIndex='" + tabInd + "'>" + tituloPrincipalFuente + "</span>"; 6839 cell1.innerHTML = "<span class='pie'>" + tituloPrincipalFuente + "</span>"; 6840 footersPintados++; 6841 // tabAux++; 6842 /* tabInd = tabAux + 1; 6843 tabAux = tabInd; */ 6844 } 6845 //fin fuentes 6846 // bInd = tabAux + 1; 6847 //tabAux = tabInd; 6848 // fin siglas de excepciones 6849 // SiglasGrupoA(parametros); 6850 SiglasTipo7(parametros, listaCifras, dataValores); 6851 6852 var tdUnidad = document.getElementById("tdUnidad" + parametros.contenedorCuadro); 6853 if (tdUnidad != undefined && data.NOMBRE_UNIDAD != null) { 6854 // [29-09-2021] se agrega el dato FACTOR e la UNIDAD DE MEDIDA para nombre de columna en los cuadros que manejan la columna tdUnidad... 6855 var sFactor = data.FACTOR !== undefined && data.FACTOR != null? data.FACTOR +" "+ getTraductorCuadro(parametros,"de")+" " : ""; 6856 tdUnidad.innerHTML += sFactor + data.NOMBRE_UNIDAD; 6857 } 6858 6859 var tdUnidadValor = document.getElementById("tdValorUnidad_" + parametros.contenedorCuadro); 6860 if (tdUnidadValor != undefined && parametros.titulosColumnas == "" && data.NOMBRE_UNIDAD != null) { 6861 6862 tdUnidadValor.innerHTML = (data.FACTOR !== undefined && data.FACTOR != null? data.FACTOR +" "+ getTraductorCuadro(parametros,"de")+" "+data.NOMBRE_UNIDAD : data.NOMBRE_UNIDAD); 6863 // si el valor es un "." entonces eliminar para dejar vacia la columnas (15-02-2023) 6864 if(tdUnidadValor.innerHTML === "."){ 6865 tdUnidadValor.innerHTML = ""; 6866 } 6867 } 6868 6869 // Mostrar leyenda de colores para datos de precision (cuadro #precision) 6870 // Agregado: 15-06-2021 6871 // Modificado: 05-07-2023 (Actualizacion dinamica de reglas por API) 6872 var oTieneDatosPrecision = oCriteriosPrecision.check(dataValores); 6873 if(parametros.tipoCuadro === "precision" && oTieneDatosPrecision !== null){ 6874 borraTabla(tableReglasPrecision); 6875 borraTabla(tableReglasPrecisionExportNotas); 6876 borraTabla(tableReglasPrecisionExport); 6877 var oLimitesPrecision = oCriteriosPrecision.getLimites(oTieneDatosPrecision); 6878 divReglasPrecisionExport.setAttribute("informacion_extra",1); 6879 tableReglasPrecision.style.borderCollapse = "inherit"; 6880 var renglon = tableReglasPrecision.insertRow(); 6881 var cell0 = renglon.insertCell(0); 6882 cell0.colSpan = 2 6883 var textoNotas1 = getTraductorCuadro(p
6883arametros, "Estimación: Las estimaciones que aparecen en este cuadro están coloreadas de acuerdo con su nivel de precisión, en Alta, Moderada y Baja, tomando como referencia el coeficiente de variación CV (%)."); 6884 var textoNotas2 = getTraductorCuadro(parametros, "LÃmite: Intervalo de confianza al 90%."); 6885 6886 cell0.innerHTML = '<tr>' 6887 +'<td colspan="2" style="font-size:10px;padding:6px 0">' 6888 +'<span class="pie">' 6889 +'<div>'+ textoNotas1 +'</div>' 6890 +'<div>' + textoNotas2 + '</div>' 6891 +'<div><br /></div>' 6892 +'</span>' 6893 +'</td>' 6894 +'</tr>' 6895 6896 var renglon1 = tableReglasPrecision.insertRow(); 6897 var cell1 = renglon1.insertCell(0); 6898 cell1.colSpan = 2 6899 cell1.innerHTML = '<span class="pie">'+ getTraductorCuadro(parametros, "Coeficiente de variación (CV) en el rango de:") +'</span>' 6900 6901 var renglon2 = tableReglasPrecision.insertRow(); 6902 var cell12 = renglon2.insertCell(0); 6903 var cell22 = renglon2.insertCell(0); 6904 cell22.innerHTML = '<table><tbody><tr><td style="background-color: '+ oLimitesPrecision.Alta.color +'; border: 0.5px solid rgb(220, 220, 220); min-width:20px;width: 20px; height: 16px;"></td></tr></tbody></table>' 6905 cell12.innerHTML = '<span class="pie"> '+ getTraductorCuadro(parametros, "Alta")+' ('+ oLimitesPrecision.Alta.limite_inferior +'%, '+ oLimitesPrecision.Alta.limite_superior +'%)</span>' 6906 6907 var renglon3 = tableReglasPrecision.insertRow(); 6908 var cell13 = renglon3.insertCell(0); 6909 var cell23 = renglon3.insertCell(0); 6910 cell23.innerHTML = '<table><tbody><tr><td style="background-color: '+ oLimitesPrecision.Moderada.color +'; border: 0.5px solid rgb(220, 220, 220); min-width:20px; width: 20px; height: 16px;"></td></tr></tbody></table>' 6911 cell13.innerHTML = '<span class="pie"> '+ getTraductorCuadro(parametros, "Moderada")+' ('+ oLimitesPrecision.Moderada.limite_inferior +'%, '+ oLimitesPrecision.Moderada.limite_superior +'%)</span>' 6912 6913 var renglon4 = tableReglasPrecision.insertRow(); 6914 var cell14 = renglon4.insertCell(0); 6915 var cell24 = renglon4.insertCell(0); 6916 cell24.style.verticalAlign = "top"; 6917 cell24.innerHTML = '<table><tbody><tr><td style="background-color: '+ oLimitesPrecision.Baja.color +'; border: 0.5px solid rgb(220, 220, 220); min-width:20px; width: 20px; height: 16px;"></td></tr></tbody></table>' 6918 cell14.innerHTML = '<span class="pie"> '+ getTraductorCuadro(parametros, "Baja")+' '+ oLimitesPrecision.Baja.limite_inferior +'% '+ getTraductorCuadro(parametros, "en adelante")+'. '+ getTraductorCuadro(parametros, "Una precisión Baja requiere un uso cauteloso de la estimación en el que se analicen las causas de la alta variabilidad y se consideren otros indicadores de precisión y confiabilidad, como el intervalo de confianza.") +'</span>' 6919 6920 // Exportacion de la tabla de datos para cobertura 6921 6922 tableReglasPrecisionExportNotas.innerHTML = '<tr>' 6923 +'<td colspan="2" style="font-size:10px;padding:6px 0">' 6924 +'<span class="pie">' 6925 +'<div>
6925'+ getTraductorCuadro(parametros, "Estimación: Las estimaciones que aparecen en este cuadro están coloreadas de acuerdo con su nivel de precisión, en Alta, Moderada y Baja, tomando como referencia el coeficiente de variación CV (%).") +'</div>' 6926 +'<div>' + getTraductorCuadro(parametros, "LÃmite: Intervalo de confianza al 90%.") + '</div>' 6927 +'</span>' 6928 +'</td>' 6929 +'</tr>' 6930 6931 tableReglasPrecisionExport.setAttribute("informacion_extra","1") 6932 tableReglasPrecisionExport.setAttribute("border","1") 6933 tableReglasPrecisionExport.style.width = "60%"; 6934 tableReglasPrecisionExport.innerHTML = '<tr>' 6935 +'<td style="text-align:center;font-weight:700;font-size:10px">'+ getTraductorCuadro(parametros, "Coeficiente de variación (CV) en el rango de:") +'</td>' 6936 +'<td style="text-align:center;font-weight:700;font-size:10px">'+ getTraductorCuadro(parametros, "Interpretación") +'</td>' 6937 +'</tr>' 6938 +'<tr>' 6939 +'<td style="background-color:#fff;color:#000;width:30%;height:30px;font-size:10px;text-align:center;vertical-align:middle">('+ oLimitesPrecision.Alta.limite_inferior +'%, '+ oLimitesPrecision.Alta.limite_superior +'%)</td>' 6940 +'<td style="font-size:10px;vertical-align:middle">' 6941 +'<span class="">'+ getTraductorCuadro(parametros, "Alta")+'</span>' 6942 +'</td>' 6943 +'</tr>' 6944 +'<tr>' 6945 +'<td style="background-color:#ffea00;color:#000;width:30%;height:30px;font-size:10px;text-align:center;vertical-align:middle">('+ oLimitesPrecision.Moderada.limite_inferior +'%, '+ oLimitesPrecision.Moderada.limite_superior +'%)</td>' 6946 +'<td style="font-size:10px;vertical-align:middle">' 6947 +'<span class="">'+ getTraductorCuadro(parametros, "Moderada")+'</span>' 6948 +'</td>' 6949 +'</tr>' 6950 +'<tr>' 6951 +'<td style="background-color:#ff5400;color:#000;width:30%;height:100px;font-size:10px;text-align:center;vertical-align:middle">'+ getTraductorCuadro(parametros, "Baja")+' '+ oLimitesPrecision.Baja.limite_inferior +'% '+ getTraductorCuadro(parametros, "en adelante")+'</td>' 6952 +'<td style="font-size:10px;vertical-align:middle">' 6953 +'<span class="">'+ getTraductorCuadro(parametros, "Una precisión Baja requiere un uso cauteloso de la estimación en el que se analicen las causas de la alta variabilidad y se consideren otros indicadores de precisión y confiabilidad, como el intervalo de confianza.") +'</span>' 6954 +'</td>' 6955 +'</tr>' 6956 6957 } 6958 // 17-11-2022 6959 // Para el cuadro 8 siempre y cuando tenga Cobertura 6960 // Pinta las descripcion de colores fijas bajo las notas 6961 var oTieneCobertura = oCriteriosCobertura.check(dataValores) 6962 if(oTieneCobertura != null && parametros.tipoCuadro === "8"){ 6963 var limiteInferior = oTieneCobertura.LIMITE_INFERIOR; 6964 var limiteSuperior = oTieneCobertura.LIMITE_SUPERIOR; 6965 borraTabla(tableReglasPrecision); 6966 borraTabla(tableReglasPrecisionExportNotas); 6967 borraTabla(tableReglasPrecisionExport); 6968 divReglasPrecisionExport.setAttribute("informacion_extra",1); 6969 tableReglasPrecision.style.borderCollapse = "inherit"; 6970 6971 var renglon = tableReglasPrecision.insertRow(); 6972 var cell0 = renglon.insertCell(0); 6973 cell0.colSpan = 2 6974 /* cell0.innerHTML = '<tr>' 6975 +'<td colspan="2" style="font-size:10px;padding:6px 0">' 6976 +'<span class="pie">' 6977 +'<div>a/ Las estimaciones que aparecen en este cuadro están coloreadas de acuerdo con su nivel de precisión, en Alta, Moderada y Baja, tomando como referencia el coeficie
6977nte de variación CV (%).</div>' 6978 +'<div>b/ Intervalo de confianza al 90%.</div>' 6979 +'<div><br /></div>' 6980 +'</span>' 6981 +'</td>' 6982 +'</tr>' */ 6983 cell0.innerHTML = '<tr>' 6984 +'<td colspan="2" style="font-size:10px;padding:6px 0">' 6985 +'<span class="pie">' 6986 +'<div>'+ getTraductorCuadro(parametros, "La información que aparece en este cuadro está coloreada de acuerdo con el nivel de cobertura de la variable de diseño (%) usada para seleccionar la muestra, en Alta, Moderada y Baja. Una cobertura Baja requiere un uso cauteloso de la información."); +'</div>' 6987 +'<div><br /></div>' 6988 +'</span>' 6989 +'</td>' 6990 +'</tr>' 6991 var renglon1 = tableReglasPrecision.insertRow(); 6992 var cell1 = renglon1.insertCell(0); 6993 cell1.colSpan = 2 6994 cell1.innerHTML = '<span class="pie">'+ getTraductorCuadro(parametros,"Cobertura de la variable de diseño en el rango de") +':</span>' 6995 6996 var renglon2 = tableReglasPrecision.insertRow(); 6997 var cell12 = renglon2.insertCell(0); 6998 var cell22 = renglon2.insertCell(0); 6999 cell22.innerHTML = '<table><tbody><tr><td style="background-color: rgb(255, 255, 255); border: 0.5px solid rgb(220, 220, 220); width: 50px; height: 16px;"></td></tr></tbody></table>' 7000 cell12.innerHTML = '<span class="pie"> '+ getTraductorCuadro(parametros, "Alta") +' (0%, '+ limiteInferior +'%)</span>' 7001 7002 var renglon3 = tableReglasPrecision.insertRow(); 7003 var cell13 = renglon3.insertCell(0); 7004 var cell23 = renglon3.insertCell(0); 7005 cell23.innerHTML = '<table><tbody><tr><td style="background-color: rgb(255, 234, 0); border: 0.5px solid rgb(220, 220, 220); width: 50px; height: 16px;"></td></tr></tbody></table>' 7006 cell13.innerHTML = '<span class="pie"> '+ getTraductorCuadro(parametros, "Moderada") +' ('+ limiteInferior +'%, '+ limiteSuperior +'%)</span>' 7007 7008 var renglon4 = tableReglasPrecision.insertRow(); 7009 var cell14 = renglon4.insertCell(0); 7010 var cell24 = renglon4.insertCell(0); 7011 cell24.innerHTML = '<table><tbody><tr><td style="background-color: rgb(255, 84, 0); border: 0.5px solid rgb(220, 220, 220); width: 50px; height: 16px;"></td></tr></tbody></table>' 7012 cell14.innerHTML = '<span class="pie"> ' + getTraductorCuadro(parametros, "Baja") + ' '+ getTraductorCuadro(parametros, "menor a") +' '+ limiteSuperior +'% '+ getTraductorCuadro(parametros, "en adelante") +'. '+ getTraductorCuadro(parametros, "Una cobertura Baja requiere un uso cauteloso de la información") +'.</span>' 7013 7014 // Exportacion de la tabla de datos para cobertura 7015 7016 tableReglasPrecisionExportNotas.innerHTML = '<tr>' 7017 +'<td colspan="2" style="font-size:10px;padding:6px 0">' 7018 +'<span class="pie">' 7019 +'<div>'+ getTraductorCuadro(parametros, "La información que aparece en este cuadro está coloreada de acuerdo con el nivel de cobertura de la variable de diseño (%) usada para seleccionar la muestra, en Alta, Moderada y Baja. Una cobertura Baja requiere un uso cauteloso de la información."); +'</div>' 7020 +'<div><br /></div>' 7021 +'</span>' 7022 +'</td>' 7023 +'</tr>' 7024 7025 tableReglasPrecisionExport.setAttribute("informacion_extra","1") 7026 tableReglasPrecisionExport.setAttribute("border","1") 7027 tableReglasPrecisionExport.style.width = "60%"; 7028 tableReglasPrecisionExport.innerHTML = '<tr>' 7029 +'<td style="text-align:center;font-weight:700;font-size:10px">
7029'+ getTraductorCuadro(parametros,"Cobertura de la variable de diseño en el rango de") +'</td>' 7030 +'<td style="text-align:center;font-weight:700;font-size:10px">'+ getTraductorCuadro(parametros, "Interpretación") + '</td>' 7031 +'</tr>' 7032 +'<tr>' 7033 +'<td style="background-color:#fff;color:#000;width:30%;height:30px;font-size:10px;text-align:center;vertical-align:middle">(0%, '+ limiteInferior +'%)</td>' 7034 +'<td style="font-size:10px;vertical-align:middle">' 7035 +'<span class="">'+ getTraductorCuadro(parametros,"Alta") +'</span>' 7036 +'</td>' 7037 +'</tr>' 7038 +'<tr>' 7039 +'<td style="background-color:#ffea00;color:#000;width:30%;height:30px;font-size:10px;text-align:center;vertical-align:middle">('+ limiteInferior +'%, '+ limiteSuperior +'%)</td>' 7040 +'<td style="font-size:10px;vertical-align:middle">' 7041 +'<span class="">'+ getTraductorCuadro(parametros,"Moderada") +'</span>' 7042 +'</td>' 7043 +'</tr>' 7044 +'<tr>' 7045 +'<td style="background-color:#ff5400;color:#000;width:30%;height:100px;font-size:10px;text-align:center;vertical-align:middle">'+ getTraductorCuadro(parametros, "Baja") +' '+ getTraductorCuadro(parametros, "menor a") +' '+ limiteSuperior +'% '+ getTraductorCuadro(parametros, "en adelante") +'</td>' 7046 +'<td style="font-size:10px;vertical-align:middle">' 7047 +'<span class="">'+ getTraductorCuadro(parametros, "Una cobertura Baja requiere un uso cauteloso de la información") +'.</span>' 7048 +'</td>' 7049 +'</tr>' 7050 } 7051 7052 } 7053 else { 7054 console.log("error"); 7055 console.log(data); 7056 } 7057 parametros.datos = null; 7058 if(parametros.callback && typeof parametros.callback == "function"){ parametros.callback(parametros.contenedorCuadro, (this.ValoresCuadro !== undefined? this.ValoresCuadro : {}));} 7059 } 7060 function SiglasTipo7(parametros, listaCifras, data) { 7061 var periodos = data.dimension.periods.category.label || 0; 7062 if ((parametros.tipoCuadro == "7" || parametros.tipoCuadro == "2" || parametros.tipoCuadro == "14" || parametros.tipoCuadro == "17") && listaCifras != null && parametros.grid_configuracion == undefined) { 7063 if (listaCifras.length > 0) { 7064 if (aCuadrosNuevoMetodoPost.indexOf(parseInt(parametros.tipoCuadro)) === -1) { 7065 // if (parametros.tipoCuadro == "7") { 7066 if (periodos.length > 1) { // si llegaron mas de 1 periodo desde valorindicador 7067 var letra = ""; 7068 var elements = document.getElementById("tableStat" + parametros.contenedorCuadro).tHead.children[0].children; 7069 var letraTmp = ""; 7070 if (elements.length > 2) { // la primer columna no cuenta 7071 for (var x = 0; x < elements.length; x++) { 7072 var th = elements[x]; 7073 for (var y = 0; y < listaCifras.length; y++) { 7074 if (listaCifras[y].periodos == th.innerHTML) { 7075 letraTmp = "<sup>" + listaCifras[y].letra.replace("/", "") + "</sup>"; 7076 } 7077 } 7078 th.innerHTML = th.innerHTML + " " + letraTmp; 7079 } 7080 } 7081 } 7082 } else { // aplicar siglas con el nuevo formato en datos del api MetadatoIndicador/ 7083 if (parametros.tipoCuadro === "14") { 7084 if (periodos.length > 1) { // si llegaron mas de 1 periodo desde valorindicador 7085 var letra = ""; // ultima modificacion 21 ago 2018 (pintado de letras cuados 2 y 7 (sin extjs)) 7086 //var elements = document.getElementById("tableStat" + parametros.contenedorCuadro).tHead.children[].children; 7087 var elements = $("#tableStat" + parametros.contenedorCuadro).prev().find("table thead").children().eq(1).children();
7088 var row = $("#tableStat" + parametros.contenedorCuadro + " tbody").children().eq(0).children(); 7089 //console.log(row[0].innerHTML); 7090 var letraTmp = "", letraTmp2 = "", c = 0, html = ""; 7091 7092 if (elements.length > 2) { // la primer columna no cuenta 7093 for (var x = 0; x < elements.length; x++) { 7094 var th = elements[x]; 7095 var mes = th.innerHTML; 7096 c = x; 7097 html = th.innerHTML.indexOf("-") > -1 ? th.innerHTML.split("-").join("<br />") : th.innerHTML; 7098 letraPrev = ""; 7099 //console.log(listaCifras) 7100 for (var y = 0; y < listaCifras.length; y++) { 7101 if (row[c + 1].innerHTML != " ") { 7102 if (listaCifras[y].periodos.split(" ")[1] === mes || mes.indexOf("-") > -1) { 7103 letraTmp = '<sup style="display:inline-block;font-size:9px;">' + listaCifras[y].letra.replace("/", "") + "</sup>"; 7104 if (listaCifras[y].letra === "D") { 7105 letraTmp = ""; 7106 } 7107 } 7108 } else { 7109 letraTmp = ""; 7110 } 7111 } 7112 th.innerHTML = '<div style="white-space:nowrap;">' + html + letraTmp + '</div>'; 7113 } 7114 } 7115 } 7116 } else { 7117 7118 if (periodos.length > 1) { // si llegaron mas de 1 periodo desde valorindicador 7119 var frecuencia = data.dimension.freq.category.label[0].Value; 7120 var letra = ""; // ultima modificacion 21 ago 2018 (pintado de letras cuados 2 y 7 (sin extjs)) 7121 var elements = null; 7122 if (frecuencia === "Anual" || frecuencia === "No establecida" || frecuencia === "Annual" || frecuencia === "Not established") { 7123 if (document.getElementById("tableStat" + parametros.contenedorCuadro).tHead !== null) { 7124 elements = document.getElementById("tableStat" + parametros.contenedorCuadro).tHead.children[0].children; 7125 } else { 7126 elements = document.getElementById("tableStat" + parametros.contenedorCuadro).children[0].children[1]; 7127 } 7128 7129 } else if (frecuencia === "Trimestral" || frecuencia === "Mensual" || frecuencia === "Monthly" || frecuencia === "Quarterly") { 7130 if (document.getElementById("tableStat" + parametros.contenedorCuadro).tHead !== null) { 7131 elements = document.getElementById("tableStat" + parametros.contenedorCuadro).tHead.children[1].children; 7132 } else { 7133 elements = document.getElementById("tableStat" + parametros.contenedorCuadro).children[0].children[1]; 7134 7135 } 7136 7137 } else if (frecuencia === "Bienal" || frecuencia == "Biennial") { 7138 elements = document.getElementById("tableStat" + parametros.contenedorCuadro).tBodies[0].children; 7139 } 7140 var letraTmp = ""; 7141 if (elements && elements.length > 2 && (frecuencia !== "Bienal" || frecuencia != "Biennial")) { // la primer columna no cuenta 7142 for (var x = 0; x < elements.length; x++) { 7143 var th = elements[x]; 7144 7145 for (var y = 0; y < listaCifras.length; y++) { 7146 //console.log(listaCifras[y].periodos + " === " + th.getAttribute("data-periodo")) 7147 if (listaCifras[y].periodo_corto === th.getAttribute("data-periodo") || listaCifras[y].periodo_corto === th.innerHTML) { 7148 if (listaCifras[y].letra !== "D") { 7149 letraTmp = "<sup>" + listaCifras[y].letra.replace("/", "") + "</sup>"; 7150 } else letraTmp = ""; 7151 } 7152 } 7153 th.innerHTML = th.innerHTML + " " + letraTmp; 7154 } 7155 } else if (frecuencia === "Bienal" || frecuencia == "Biennial") { // por el momento solo aplica para la frecuencia Bienal (17.10.2018) 7156 var elem = elements[1].children; 7157 for (var x = 0; x < elem.length; x++) { 7158 var th = elem[x]; 7159 for (var y = 0; y < listaCifras.length; y++) { 7160 if (th.innerHTML.indexOf(listaCifras[y].periodo_corto) > -1) { 7161 if (listaCifras[y].letra !== "D") { 7162 th.innerHTML += "<sup>" + listaCifras[y].letra.replace("/", "") + "</sup>"; 7163 } 7164 } 7165 } 7166 } 7167 } else if (frecuencia === "Trimestral" || frecuencia === "Quarterly") { // por el momento solo aplica para la frecuencia Bienal (17.10.2018) 7168 var elem = elements.children; 7169 // console.log(elem); 7170 for (var x = 0; x < elem.length; x++) { 7171 var th = elem[x]; 7172 for (var y = 0; y < listaCifras.length; y++) { 7173 // console.log(listaCifras[y].periodo_corto +" === "+ th.getAttribute("data-periodo") +"||"+ listaCifras[y].periodo_corto +"==="+ th.innerHTML) 7174 if (listaCifras[y].periodo_corto === th.getAttribute("data-periodo") || listaCifras[y].periodo_corto === th.innerHTML) { 7175 if (listaCifras[y].letra !== "D") { 7176 if(th.innerHTML.indexOf("<sup>") == -1){ 7177 letraTmp = "<sup>" + listaCifras[y].letra.replace("/", "") + "</sup>"; 7178 } 7179 } else letraTmp = ""; 7180 } 7181 } 7182 th.innerHTML = th.innerHTML + " " + letraTmp; 7183 } 7184 } 7185 } 7186 } 7187 } 7188 } 7189 } 7190 } 7191 // Borra tablas de fuentes, notas y cifras 7192 function borraTabla(table) { 7193 if (table != undefined) 7194 while (table.rows.length > 0) { 7195 table.deleteRow(0); 7196 } 7197 } 7198 7199 /// <summary> Genera siglas del caso compuesto </summary> 7200 /// 7201 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 7202 /// 7203 /// <param name="parametros"> Objeto de parametros de configuracion. </param> 7204 /// 7205 /// <returns> . </returns> 7206 function SiglasGrupoA(parametros) { 7207 var indicadorTipo = parametros.indicator.charAt(0);
7208 if (indicadorTipo == "b" && parametros.tipoCuadro == "1") { 7209 7210 var contarGrupos = 0; 7211 var contarIndices = 0; 7212 $.each(parametros.indicadorValorCompuesto.grupos, function (key, valGroup) { 7213 contarGrupos++; 7214 if (valGroup.titulo.indexOf("/a") > -1) { 7215 document.getElementById("tdTituloGrupo" + contarIndices).innerHTML = "<b>" + valGroup.titulo.replace("/a", "") + "</b>"; 7216 contarIndices++; 7217 } 7218 }); 7219 //if (contarIndices == contarGrupos) 7220 // PintaSiglaEnEncabezado(parametros.tipoCuadro, "a", ""); 7221 } 7222 } 7223 7224 /// <summary> Pinta notas y coloca siglas en cabeceras. </summary> 7225 /// 7226 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 7227 /// 7228 /// <param name="tipoCuadro"> Tipo de cuadro. </param> 7229 /// <param name="listaNotasPorIndicador"> Lista de notas por indicador. </param> 7230 /// <param name="todosLosIndicadoresPorParametro"> Parametro de indicadores sin descripciones. </param> 7231 /// <param name="pintarEnCabecera"> Mostrar en la cabecera. </param> 7232 /// <param name="indicadorTipo"> Tipo de indicador (normal o compuesto). </param> 7233 /// 7234 /// <returns> . </returns> 7235 function PintaNotaUnIndicador(tipoCuadro, listaNotasPorIndicador, todosLosIndicadoresPorParametro, pintarEnCabecera, indicadorTipo) { 7236 pintarEnCabecera = true; 7237 //var indicadorTipo = todosLosIndicadoresPorParametro.charAt(0); 7238 if (tipoCuadro == "1" && indicadorTipo != "b") { 7239 var listaNotas = []; 7240 var indicadoresConNota = ""; 7241 if (listaNotasPorIndicador != undefined && listaNotasPorIndicador != null) { 7242 for (var i = 0; i < listaNotasPorIndicador.length; i++) { 7243 if (indicadoresConNota.indexOf(listaNotasPorIndicador[i].INDICADOR) == -1) { 7244 if (i > 0) 7245 indicadoresConNota += ","; 7246 indicadoresConNota += listaNotasPorIndicador[i].INDICADOR; 7247 } 7248 } 7249 if (indicadoresConNota.split(",").length != todosLosIndicadoresPorParametro.split(",").length && indicadoresConNota != "") { 7250 pintarEnCabecera = false; 7251 for (var i = 0; i < listaNotasPorIndicador.length; i++) { 7252 PintaSiglaEnRenglon(tipoCuadro, listaNotasPorIndicador[i].SIGLA, listaNotasPorIndicador[i].INDICADOR); 7253 } 7254 } 7255 } 7256 7257 } 7258 return pintarEnCabecera; 7259 } 7260 7261 /// <summary> Coloca siglas junto a descpripcion del renglon. </summary> 7262 /// 7263 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 7264 /// 7265 /// <param name="tipoCuadro"> Tipo de cuadro. </param> 7266 /// <param name="sigla"> Valor de sigla. </param> 7267 /// <param name="indicador"> Clave de indicador. </param> 7268 /// 7269 /// <returns> . </returns> 7270 function PintaSiglaEnRenglon(tipoCuadro, sigla, indicador) { 7271 var indicadorTipo = indicador.charAt(0);
7272 if (tipoCuadro == "1") { 7273 //columnaTituloSuperior 7274 var columnaTitulo = document.getElementById("td_indicador_" + indicador); 7275 columnaTitulo.innerHTML += " <sup>/" + sigla + "</sup> "; 7276 } 7277 7278 7279 } 7280 7281 /// <summary> Pinta sigla en la descripcion de la columna. </summary> 7282 /// 7283 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 7284 /// 7285 /// <param name="tipoCuadro"> Tipo de cuadro. </param> 7286 /// <param name="sigla"> Valor de sigla. </param> 7287 /// <param name="indicador"> Clave de indicador. </param> 7288 /// 7289 /// <returns> . </returns> 7290 function PintaSiglaEnEncabezado(tipoCuadro, sigla, indicador) { 7291 if (tipoCuadro == "1") { 7292 //columnaTituloSuperior 7293 var columnaTitulo = document.getElementById("columnaTituloSuperior"); 7294 columnaTitulo.innerHTML += " <sup>/" + sigla + "</sup> "; 7295 } 7296 if (tipoCuadro == "3") { 7297 var columnaTitulo = document.getElementById("columnaIndicador_I_" + indicador); 7298 if (columnaTitulo != undefined) 7299 columnaTitulo.innerHTML += " /" + sigla; 7300 } 7301 7302 } 7303 7304 /// <summary> Separa la tabla dinamicamente en un header y tbody para que se ajuste a estilos que manejan 7305 /// este formato de tabla. </summary> 7306 /// 7307 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 7308 /// 7309 /// <param name="tablaInterna"> Valor del cuerpo de la tabla. </param> 7310 /// <param name="parametros"> Objeto de parametros de configuracion. </param> 7311 /// 7312 /// <returns> . </returns> 7313 function ReemplazaTabla(tablaInterna, parametros) { 7314 var tableStat = document.getElementById("tableStat" + parametros.contenedorCuadro); 7315 var div = document.createElement("div"); 7316 var primerBody = document.getElementById("dummyBody" + parametros.contenedorCuadro); 7317 tableStat.removeChild(primerBody); 7318 div.innerHTML = "<table><tbody>" + tablaInterna + "</tbody></table>"; 7319 tableStat.appendChild(div.firstChild.tBodies[0]); 7320 if (parametros.estiloCuadro == "2") { 7321 tableStat.className = tableStat.className + "estiloCuadro2"; 7322 } 7323 } 7324 // para el caso 3 7325 function ReemplazaTabla2018(headerTabla, tablaInterna, parametros) { 7326 var tableStat = document.getElementById("tableStat" + parametros.contenedorCuadro); 7327 var div = document.createElement("div"); 7328 var div2 = document.createElement("div"); 7329 var primerBody = document.getElementById("dummyBody" + parametros.contenedorCuadro); 7330 tableStat.removeChild(primerBody); 7331 div.innerHTML = "<table><tbody>" + tablaInterna + "</tbody></table>"; 7332 div2.innerHTML = "<table><thead>" + headerTabla + "</thead></table>"; 7333 tableStat.appendChild(div2.firstChild.tHead); 7334 tableStat.appendChild(div.firstChild.tBodies[0]); 7335 if (parametros.estiloCuadro == "2") { 7336 tableStat.className = tableStat.className + "estiloCuadro2"; 7337 } 7338 } 7339 7340 // reemplaza tabla v2: cuadros sin header y tbody 7341 function ReemplazaTablav2(tablaInterna, parametros) { 7342 var tableStat = document.getElementById("tableStat" + parametros.contenedorCuadro); 7343 var div = document.createElement("div"); 7344 var primerBody = document.getElementById("dummyBody" + parametros.contenedorCuadro); 7345 tableStat.removeChild(primerBody); 7346 div.innerHTML = "<table>" + tablaInterna + "</table>"; 7347 tableStat.appendChild(div.firstChild); 7348 //tableStat.appendChild(div.firstChild.tBodies[0]); 7349 if (parametros.estiloCuadro == "2") { 7350 tableStat.className = tableStat.className + "estiloCuadro2"; 7351 } 7352 } 7353 7354 /// <summary> Separa la tabla dinamicamente en un header personalizado y tbody para que se ajuste a estilos que manejan 7355 /// este formato de tabla. </summary> 7356 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 7357 /// 7358 /// <param name="tablaInterna"> Valor del cuerpo de la tabla. </param> 7359 /// <param name="headerTabla"> Valor del header de la tabla. </param> 7360 /// <param name="parametros"> Objeto de parametros de configuracion. </param> 7361 /// 7362 /// <returns> . </returns> 7363 function ReemplazaTablaConEncabezado(tablaInterna, headerTabla, parametros) { 7364 var tableStat = document.getElementById("tableStat" + parametros.contenedorCuadro); 7365 var div = document.createElement("div"); 7366 var div2 = document.createElement("div"); 7367 var primerBody = document.getElementById("dummyBody" + parametros.contenedorCuadro); 7368 tableStat.removeChild(primerBody); 7369 var primerHeader = document.getElementById("dummyHeader" + parametros.contenedorCuadro) 7370 tableStat.removeChild(primerHeader); 7371 div.innerHTML = "<table><tbody>" + tablaInterna + "</tbody></table>"; 7372 div2.innerHTML = "<table><thead>" + headerTabla + "</thead></table>"; 7373 // div.innerHTML = "<table><thead>"+headerTabla+"</thead><tbody>" + tablaInterna + "</tbody></table>"; 7374 tableStat.appendChild(div2.firstChild.tHead); 7375 tableStat.appendChild(div.firstChild.tBodies[0]); 7376 if (parametros.estiloCuadro == "2" || parametros.estiloCuadro == "7") { 7377 tableStat.className = tableStat.className + "estiloCuadro2"; 7378 } 7379 //if (parametros.tipoCuadro == "7" || parametros.tipoCuadro == "14" || parametros.tipoCuadro == "6") { 7380 if (parametros.tipoCuadro == "14") { 7381 //tableStat.className = tableStat.className + " stickTable"; 7382 tableStat.className = tableStat.className + " sticky-header"; 7383 } 7384 //console.log(tableStat); 7385 /** 7386 * Omite valores cero en series, solo para cuadros tipo 6 (mejora 30/oct/2017) 7387 */ 7388 if (parametros.omitevalorseriecero == "true" && parametros.tipoCuadro == "6") { 7389 $("#tableStatc1").find("tbody").eq(0).children().each(function (e) { 7390 if ($(this).children().eq(1).attr("remove")) { 7391 $(this).children().eq(1).parent().remove(); 7392 } 7393 }); 7394 } 7395 } 7396 7397 /// <summary> Genera tableado de renglones en blanco y gris. </summary> 7398 /// 7399 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 7400 /// 7401 /// <param name="indice"> Indice del renglon. </param> 7402 /// 7403 /// <returns> . </returns> 7404 function ColorRenglon(indice) { 7405 var bgColor = "white"; 7406 if (indice % 2 == 0) { 7407 bgColor = "#EFEFEF"; 7408 } 7409 return bgColor; 7410 } 7411 7412 /// <summary> Coloca identacion y negrita en tabla de indicadores compuestos </summary> 7413 /// 7414 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 7415 /// 7416 /// <param name="boldAbrir"> Abre etiqueta de negrita. </param> 7417 /// <param name="boldCerrar"> Cierra etiqueta de negrita. </param> 7418 /// <param name="indicadorObj"> Objeto de grupo de indicadores. </param> 7419 /// <param name="bgColor"> Color de fondo. </param> 7420 /// <param name="espacio"> Espacio de identacion. </param> 7421 /// 7422 /// <returns> . </returns> 7423 function PintaRenglonTablaGrupos(boldAbrir, boldCerrar, indicadorObj, bgColor, espacio) { 7424 var renglones = ""; 7425 var padd = 0; 7426 if (espacio != "") 7427 padd = 1; 7428 //renglones += '<tr><td class="TdInicio" >' + boldAbrir + espacio + indicadorObj.descripcion + boldCerrar + '</td>'; 7429 renglones += '<tr><td class="TdInicio" ><div style="padding-left:' + IndentacionPadding(padd) + 'px;">' + boldAbrir + indicadorObj.descripcion + boldCerrar + '</div></td>'; 7430 7431 //var listaTitulos = titulosCol.split(","); 7432 7433 $.each(indicadorObj.valoresIndicador, function (key, val) { 7434 var valorRenglon = val; 7435 //if (listaTitulos[contadorTitulos] != undefined) 7436 // valorRenglon = listaTitulos[contadorTitulos]; 7437 renglones += '<td class="Td" >' + boldAbrir + valorRenglon + boldCerrar + '</td>'; 7438 }); 7439 renglones += "</tr>"; 7440 return renglones; 7441 } 7442 7443 /// <summary> Coloca identacion y negrita en tabla de indicadores compuestos tipo B</summary> 7444 /// 7445 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 7446 /// 7447 /// <param name="boldAbrir"> Abre etiqueta de negrita. </param> 7448 /// <param name="boldCerrar"> Cierra etiqueta de negrita. </param> 7449 /// <param name="indicadorObj"> Objeto de grupo de indicadores. </param> 7450 /// <param name="bgColor"> Color de fondo. </param> 7451 /// <param name="parametros"> Objeto de parametros de configuracion. </param> 7452 /// 7453 /// <returns> . </returns> 7454 function PintaRenglonTablaGruposB(boldAbrir, boldCerrar, indicadorObj, bgColor, parametros) { 7455 var renglones = ""; 7456 7457 $.each(indicadorObj.valoresIndicador, function (key, val) { 7458 7459 renglones += '<td class="Td" >' + boldAbrir + val + boldCerrar + '</td>'; 7460 }); 7461 7462 return renglones; 7463 } 7464 7465 /// <summary> Dibuja renglones del cuadro. </summary> 7466 /// 7467 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 7468 /// 7469 /// <param name="data"> Valores de indicadores en formato JSON. </param> 7470 /// <param name="parametros"> Objeto de parametros de configuracion. </param> 7471 /// 7472 /// <returns> . </returns> 7473 function DibujaCuadro(data, parametros) { 7474 var CellHeaderTitle = document.getElementById("CellHeaderTitle" + parametros.contenedorCuadro); 7475 CellHeaderTitle.innerText = data.label; 7476 // var tableStat = document.getElementById("tableStat"+ parametros.contenedorCuadro); 7477 var tablaInterna = ""; 7478 var arrayLenght = data.length; 7479 7480 var cabeceras = '<tr><th class ="Th" bgcolor="#DDD" >' + data.dimension.indicator.label + '</td>'; 7481
7482 var arrayPeriodos = data.dimension.periods.category.label; 7483 $.each(arrayPeriodos, function (key, val) { 7484 cabeceras += '<th class ="Th" bgcolor="#DDD" >' + val.Value + '</td>'; 7485 }); 7486 cabeceras += "</tr>"; 7487 tablaInterna += cabeceras; 7488 var datos = data.value; 7489 var indexValue = 0; 7490 var renglones = ""; 7491 var arrayIndicadores = data.dimension.indicator.category.label; 7492 7493 for (var i = 0; i < arrayIndicadores.length; i++) { 7494 var bgColor = "white"; 7495 if (i % 2 == 0) { 7496 var bgColor = "#EFEFEF"; 7497 } 7498 renglones += '<tr><td class="TdInicio" >' + arrayIndicadores[i].Value + '</td>'; 7499 7500 $.each(arrayPeriodos, function (key, val) { 7501 renglones += '<td class="Td" >' + datos[indexValue] + '</td>'; 7502 indexValue++; 7503 }); 7504 7505 renglones += '</tr>'; 7506 } 7507 7508 tablaInterna += renglones; 7509 ReemplazaTabla(tablaInterna, parametros); 7510 } 7511 7512 /// <summary> Dibuja cuadro tipo trimestre. </summary> 7513 /// 7514 /// <remarks> ARMANDO.ORTIZV, 24/11/2016. </remarks> 7515 /// 7516 /// <param name="data"> Valores de indicadores en formato JSON. </param> 7517 /// <param name="parametros"> Objeto de parametros de configuracion. </param> 7518 /// 7519 /// <returns> . </returns> 7520 function DibujaCuadroTipoTrimestre(data, parametros) { 7521 var CellHeaderTitle = document.getElementById("CellHeaderTitle" + parametros.contenedorCuadro); 7522 CellHeaderTitle.innerText = data.label; 7523 //var tableStat = document.getElementById("tableStat"+ parametros.contenedorCuadro); 7524 //tableStat.style.width = "100%"; 7525 var tablaInterna = ""; 7526 var arrayLenght = data.length; 7527 7528 var contadorcolumnas = 1; 7529 var indexValue = 0; 7530 var saltoPeriodos = data.dimension.periods.category.label.length; 7531 var arrayPeriodos = data.dimension.periods.category.label; 7532 var subPeriodos = []; 7533 var listaAnios = []; 7534 $.each(arrayPeriodos, function (key, val) { 7535 var subperiodo = parseFloat(val.Value.toString().split("/")[1]); 7536 if (subPeriodos.indexOf(subperiodo) < 0) 7537 subPeriodos.push(subperiodo); 7538 var periodoAnio = val.Value.toString().split("/")[0]; 7539 if (listaAnios.indexOf(periodoAnio) < 0) { 7540 listaAnios.push(periodoAnio); 7541 } 7542 }); 7543 7544 var cabeceras = DibujaCabecera(data.dimension.indicator.label, subPeriodos.length, 2, parametros.contenedorCuadro); 7545 7546 7547 var cantidadSubperiodos = Math.max.apply(Math, subPeriodos); 7548 7549 $.each(subPeriodos, function (key, val) { 7550 cabeceras += '<th class ="Th" bgcolor="#DDD" >' + val + '</th>'; 7551 contadorcolumnas++; 7552 indexValue++; 7553 }); 7554 7555 cabeceras += "</tr>"; 7556 tablaInterna += cabeceras; 7557 7558 var datos = data.value; 7559 indexValue = 0; 7560 var renglones = ""; 7561 var arrayIndicadores = data.dimension.indicator.category.label; 7562 7563 contadorcolumnas = 0; 7564 var columnaActual = contadorcolumnas; 7565 7566 for (var i = 0; i < arrayPeriodos.length; i++) { 7567 var bgColor = ColorRenglon(contadorcolumnas); 7568 7569 if (i == 0) 7570 renglones += '<tr>' + '<td class="TdInicio" >' + listaAnios[contadorcolumnas++] + '</td>'; 7571 7572 if (i % cantidadSubperiodos == 0 && i != 0) 7573 renglones += '</tr><tr>' + '<td class="TdInicio" >' + listaAnios[contadorcolumnas++] + '</td>'; 7574 7575 bgColor = ColorRenglon(contadorcolumnas - 1); 7576 renglones += '<td class="Td" >' + datos[i] + '</td>'; 7577 7578 } 7579 renglones += "</tr>"; 7580 7581 tablaInterna += renglones; 7582 ReemplazaTabla(tablaInterna, parametros); 7583 } 7584 7585 /*=========================================================== 7586 = CUADRO #2 GRID EXTJS - 21 Marzo 2018 = 7587 ===========================================================*/ 7588 function DibujaCuadroTipo2_New(data, parametros) { 7589 // var aMeses = ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', '
7589Septiembre', 'Octubre', 'Noviembre', 'Diciembre']; 7590 var aDataPeriodos = data.dimension.periods.category; // contiene => [label, index] 7591 var aDataIndicadores = data.dimension.indicator.category; // contiene => [label, index] 7592 var aDataAreas = data.dimension.state.category; // contiene => [label, index] 7593 var aValores = data.value; 7594 var datos_tabla = [], columnas_tabla = []; // datos renglones 7595 var totalColumnasPeriodos = (aDataIndicadores.label.length * aDataPeriodos.label.length); // total de columnas totales que se generaran 7596 var aCifrasEstatus = data.CIFRAS_ESTATUS; 7597 var titulosEcabezados = parametros.titulosColumnas; 7598 // Columna1 principal 7599 var contColumna = 0; 7600 columnas_tabla.push({ 7601 title: (parametros.tituloColumnaPrincipal !== "") ? parametros.tituloColumnaPrincipal : "Entidades Federativas", 7602 width: 250, 7603 dataIndex: "col" + contColumna, 7604 fix: false, 7605 renderer: true 7606 }); 7607 contColumna++; 7608 // Columnas indicadores y columnas (subcolumnas ) periodos 7609 $.each(aDataIndicadores.label, function (idx, indicador) { 7610 var nTitulo = ""; 7611 var titulo = ""; 7612 if (titulosEcabezados === "") { 7613 titulo = indicador.Value; 7614 } else { 7615 var aTitulosEncabezados = titulosEcabezados.split(","); 7616 7617 titulo = aTitulosEncabezados[idx]; 7618 } 7619 var lenString = titulo.length; 7620 var totalSpaces = titulo.split(" ").length - 1; 7621 var aString = titulo.split(" "); 7622 // if (lenString > 40) { 7623 for (var s = 0; s < aString.length; s++) { 7624 var salto = " "; 7625 if (s == Math.floor(totalSpaces / 2)) { salto = "<br />" } 7626 nTitulo += salto + aString[s]; 7627 } 7628 7629 //} else { 7630 // nTitulo = indicador.Value; 7631 //} 7632 7633 var oColumna = { 7634 title: nTitulo, 7635 width: 160, 7636 dataIndex: "col" + contColumna, 7637 fix: false, 7638 ind: indicador.Key.split("I_")[1], 7639 renderer: true 7640 }; 7641 var oSubColumnas = []; 7642 $.each(aDataPeriodos.label, function (idx2, periodo) { 7643 oSubColumnas.push({ 7644 title: periodo.Value, 7645 width: 150, 7646 dataIndex: "scol" + contColumna, 7647 subColumns: [] 7648 }); 7649 contColumna++; 7650 }); 7651 oColumna.subColumns = oSubColumnas; 7652 columnas_tabla.push(oColumna); 7653 }); 7654 // Mostrar cifra estatus de un periodo especifico ------------------ mce = mostrarCifraEstatus 7655 if (parametros.mostrarCifraEstatus === "true") { 7656 var tmpPeriodo = "0"; 7657 $.each(columnas_tabla, function (index, col) { 7658 var indicador = col.ind; 7659 if (indicador !== undefined) { 7660 var existenCifrasIndicador = aCifrasEstatus.filter(function (cifra) { 7661 return cifra.indicadores.indexOf(indicador) !== -1; 7662 }); 7663 // si encontro cifras estatus para el indicador 7664 if (existenCifrasIndicador.length > 0) { 7665 var tCI = existenCifrasIndicador.length - 1; 7666 if (col.subColumns && col.subColumns.length > 0) { 7667 //console.log("> DEMO") 7668 $.each(col.subColumns, function (idx, scol) { 7669 // verifica si el periodo se encuentra en las cifras estatus (si es igual o mayor al de metadato cifras estatus) 7670 if (aCuadrosNuevoMetodoPost.indexOf(parseInt(parametros.tipoCuadro)) > -1) { 7671 var existenCifraPeriodo = aCifrasEstatus.filter(function (cifra) { 7672 return cifra.periodo_corto.indexOf(scol.title) > -1; 7673 }); 7674 if (existenCifraPeriodo.length > 0) { 7675 if (existenCifraPeriodo[0].letra !== null) { 7676 columnas_tabla[index].subColumns[idx].title = scol.title + "<sup>" + existenCifraPeriodo[0].letra.replace("/", "") + "</sup>"; 7677 } else { 7678 columnas_tabla[index].subColumns[idx].title = scol.title; 7679 } 7680 } 7681 } else { 7682 var existenCifraPeriodo = aCifrasEstatus.filter(function (cifra) { 7683 return cifra.periodos.indexOf(scol.title) > -1; 7684 }); 7685 if (existenCifraPeriodo.length > 0) { 7686 if (existenCifraPeriodo[0].letra !== null) { 7687 columnas_tabla[index].subColumns[idx].title = scol.title + "<sup>" + existenCifraPeriodo[0].letra.replace("/", "") + "</sup>"; 7688 } else { 7689 columnas_tabla[index].subColumns[idx].title = scol.title; 7690 } 7691 } 7692 } 7693 }); 7694 } 7695 } 7696 } 7697 }); 7698 } 7699 /// Llenado de renglones 7700 var totalValores = aValores.length; 7701 $.each(aDataAreas.label, function (index, area) { 7702 var oRenglon = {}; 7703 $.extend(oRenglon, JSON.parse('{"col0":"' + area.Value.split("-")[0] + '"}')); 7704 for (var i = 0; i < totalColumnasPeriodos; i++) { 7705 var indexValue = i + totalColumnasPeriodos * index; 7706 //console.log("i:" + i + " area:" + index, " => ", indexValue + " ( " + aValores[indexValue] + ")"); 7707 $.extend(oRenglon, JSON.parse('{"scol' + (i + 1) + '":"' + aValores[indexValue] + '"}')); 7708 } 7709 datos_tabla.push(oRenglon); 7710 }); 7711 7712 //Recibir configuracion de altura y estilos del grid 7713 var TABLA = new GridComponent(); 7714 TABLA.render(columnas_tabla, datos_tabla, parametros); 7715 } 7716 7717 /*=========================================================== 7718 = CUADRO #7 GRID EXTJS - 6 Octubre 2017 = 7719 ===========================================================*/ 7720 function DibujaCuadroTipo7_New(data, parametros) { 7721 //var aMeses = ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', '
7721Septiembre', 'Octubre', 'Noviembre', 'Diciembre']; 7722 var tablaInterna = ""; 7723 var cabeceras = ""; 7724 var arrayPeriodos = data.dimension.periods.category.label; 7725 var frecuencia = data.dimension.freq.category.label[0].Value; 7726 var aCifras = data.CIFRAS_ESTATUS; 7727 7728 //nuevos metodos de extraccion para columnas 7729 $.each(arrayPeriodos, function (key, periodo) { 7730 var anio = periodo.Value.split("/"); 7731 arrayPeriodos[key].a = anio[0]; 7732 if (anio[1] !== undefined) { // si no existe el mes o la posicion 1 en el arreglo de peridos 7733 arrayPeriodos[key].m = anio[1]; 7734 } 7735 }); 7736 7737 var listaAnios = []; 7738 $.each(arrayPeriodos, function (key, item) { 7739 if (listaAnios.indexOf(item.a) == -1) { 7740 listaAnios.push(item.a); 7741 } 7742 }); 7743 7744 var listaPeriodosObj = []; 7745 $.each(listaAnios, function (key, anio) { 7746 var objPer = { a: anio, meses: [] }; 7747 $.each(arrayPeriodos, function (keyp, periodo) { 7748 if (objPer.a == periodo.a && periodo.m !== undefined) { 7749 objPer.meses.push(periodo); 7750 } 7751 }); 7752 listaPeriodosObj.push(objPer); 7753 }); 7754 7755 //ARMADO DE COLUMNAS DEL GRID ///////////////////////////////////////////////////////////////// 7756 //COLUMNA PRINCIPAL 7757 var columnas_tabla = []; 7758 var aDataIndexesColumnasPrincipal = ["first", "second", "third"]; 7759 var aTitulosColumnas = parametros.titulosColumnas != "" ? parametros.titulosColumnas.split(",") : []; 7760 7761 if (parametros.tituloColumnaPrincipal.indexOf("|") != -1 && parametros.tituloColumnaPrincipal !== "") { // si se encuentra un pipe |, hay mas de una columna 7762 var aColumnasPrincipal = parametros.tituloColumnaPrincipal.split("|"); 7763 var totalColumnasPrincipal = aColumnasPrincipal.length; 7764 7765 for (var x = 0; x < totalColumnasPrincipal; x++) { 7766 columnas_tabla.push({ 7767 title: aColumnasPrincipal[x], 7768 width: 250, 7769 dataIndex: aDataIndexesColumnasPrincipal[x], 7770 fix: false, 7771 renderer: true 7772 }); 7773 } 7774 } else { // si llega vacio o no llega por default es una columna fija 7775 7776 columnas_tabla.push({ 7777 title: (parametros.tituloColumnaPrincipal == "") ? "Denominación" : parametros.tituloColumnaPrincipal, 7778 width: 250, 7779 dataIndex: 'first', 7780 fix: false, 7781 }); 7782 } 7783 7784 // COLUMNAS SECUNDARIAS Y AGRUPACIONES 7785 $.each(listaPeriodosObj, function (key, periodo) { 7786 //add column nivel 1 7787 var defColumna = { 7788 title: periodo.a, 7789 dataIndex: periodo.a, 7790 subColumns: [] 7791 } 7792 var totalChildren = periodo.meses ? periodo.meses.length : 0; 7793 if (totalChildren > 0) { 7794 var columnasChildren = periodo.meses; 7795 var letraTmp = ""; 7796 $.each(columnasChildren, function (keym, mes) { 7797 var titleCol = ""; 7798 if (aTitulosColumnas.length > 0) { 7799 titleCol = aTitulosColumnas[keym]; 7800 } else { 7801 // titleCol = aMeses[parseInt(mes.m) - 1]; 7802 titleCol = oMESES.getFormatoPeriodo(mes.Value, frecuencia, parametros.idioma, 2); 7803 if (aCifras.length > 0) { 7804 for (var c = 0; c < aCifras.length; c++) { 7805 if (aCifras[c].periodo_corto === mes.Value) { 7806 if (aCifras[c].letra !== "D") { 7807 letraTmp = aCifras[c].letra; 7808 } else letraTmp = ""; 7809 } 7810 } 7811 titleCol = titleCol + "<sup>" + letraTmp + "</sup>"; 7812 } 7813 } 7814 defColumna.subColumns.push({ 7815 title: titleCol, 7816 width: 150, 7817 dataIndex: mes.Key + '_' + mes.a, 7818 subColumns: [] 7819 }); 7820 }); 7821 } 7822 columnas_tabla.push(defColumna); 7823 }); 7824 7825 // arrayIndicadores y parametros.indicadorValorCompuesto.grupos 7826 var arrayIndicadores = data.dimension.indicator.category.label; 7827 var saltoPeriodos = arrayPeriodos.length; 7828 var arrIndicadoresFinales = []; 7829 $.each(arrayIndicadores, function (key, item) { 7830 var indicador_separated = (item.Key).split("_"); 7831 var indR = parametros.indicadorValorCompuesto.grupos.find(function (o, index) { 7832 return o.indicadores.indexOf(indicador_separated[1]) !== -1; 7833 }); 7834 var indicadorMerged = $.extend(item, indR) 7835 arrIndicadoresFinales.push(indicadorMerged); 7836 }); 7837 //ARMADO DEL ARREGLO DE RENGLONES DE COLUMNA PRINCIPAL CON DATOS ///////////////////////////////////////////////////////////////// 7838 var aDatosTablaFinal = []; 7839 var valores = data.value; //valores por renglon 7840 var totalPeriodos = arrayPeriodos.length; 7841 var indicadores = parametros.indicator.split("|"); 7842 var totalIndicadores = indicadores.length; 7843 7844 $.each(arrIndicadoresFinales, function (key, item) { 7845 var aRenglon = []; 7846 // Si columnas principal llegan varias separadas por "°" 7847 if (parametros.tituloColumnaPrincipal.indexOf("|") !== -1) { 7848 var valorColumnaRenglon = item.titulo.split("°"); //[string] => [col1, col2] 7849 7850 for (var cr = 0; cr < totalColumnasPrincipal; cr++) { 7851 var datoColumnaPrincipal = ""; 7852 datoColumnaPrincipal = valorColumnaRenglon[cr]; 7853 7854 //Object.assign(item, JSON.parse('{"' + aDataIndexesColumnasPrincipal[cr] + '":"' + (datoColumnaPrincipal ? datoColumnaPrincipal : "") + '"}')); // columnas principales con opciones dataIndex:valor 7855 $.extend(item, JSON.parse('{"' + aDataIndexesColumnasPrincipal[cr] + '":"' + (datoColumnaPrincipal ? datoColumnaPrincipal : "") + '"}')); // columnas principales con opciones dataIndex:valor 7856 } 7857 7858 // para cuando columna principal solamente es una columna 7859 } else { 7860 //Object.assign(item, JSON.parse('{"' + aDataIndexesColumnasPrincipal[0] + '":"' + item.titulo + '"}')); // primer columna con su dataIndex:valor 7861 $.extend(item, JSON.parse('{"' + aDataIndexesColumnasPrincipal[0] + '":"' + item.titulo + '"}')); // primer columna con su dataIndex:valor 7862 } 7863 7864 for (var p = 0; p < totalPeriodos; p++) { // aqui genera los objetos que iran en cada fila dataIndex:valor segun el numero de periodos (columnas) 7865 var indexValue = p + saltoPeriodos * key; 7866 7867 dataIndex = (arrayPeriodos[p].m) ? arrayPeriodos[p].Key + '_' + arrayPeriodos[p].a : arrayPeriodos[p].a; 7868 //console.log(p + " + " + saltoPeriodos + " * " + key + " = " + indexValue + " valor [ " + valores[indexValue] + "] "); 7869 //Object.assign(item, JSON.parse('{"' + dataIndex + '":"' + valores[indexValue] + '"}')); 7870 $.extend(item, JSON.parse('{"' + dataIndex + '":"' + valores[indexValue] + '"}')); 7871 7872 } 7873 //console.log("Salto filas segun periodos a mostrar ---------------->"); 7874 aDatosTablaFinal.push(item); // inserta en arreglo de datos 7875 }); 7876 7877 if (parametros.tituloColumnaPrincipal.indexOf("|") !== -1) { // ORDENAR SI LLEGAN MAS DE 1 COLUMNA PRINCIPAL 7878 for (var x = 0; x < totalIndicadores; x++) { 7879 7880 var ind = indicadores[x].split("-"); // [col2] => [indicador, id, bold] 7881 var indicador_txt = ind[0]; // nombre del indicador 7882 var colsIndicador = indicador_txt.split("°"); 7883 var indicador_id = ind[1]; // id indicador 7884 var feature = ind[2]; // fuente bold, indentacion, nada 7885 7886 var item = arrIndicadoresFinales.find(function (objInd, index) { 7887 return objInd.indicadores.indexOf(indicador_id) != -1; 7888 }); 7889 //console.log(item); 7890 7891 //recorre las columnas principales 7892 for (var cr = 0; cr < totalColumnasPrincipal; cr++) { 7893 //aDataIndexesColumnasPrincipal[cr] 7894 var valColumna = ""; 7895 colsIndicador[cr] = (colsIndicador[cr] !== undefined) ? colsIndicador[cr].replace(/ggg/g, "-") : ""; // reemplaza ggg > - en columnas principales 7896 if (feature == "b") { 7897 valColumna = "<b>" + colsIndicador[cr] + "</b>"; 7898 } else if (feature.indexOf("i") != -1) { 7899 var totalSpaces = parseInt(feature.replace("i", "")); 7900 switch (totalSpaces) { 7901 case 1: strSpaces = " "; break; 7902 case 2: strSpaces = "  "; break; 7903 case 3: strSpaces = "   "; break; 7904 case 4: strSpaces = "    "; break; 7905 case 5: strSpaces = "     "; break; 7906 default: strSpaces = ""; break; 7907 } 7908 valColumna = strSpaces + colsIndicador[cr]; 7909 } 7910 //Object.assign(item, JSON.parse('{"' + aDataIndexesColumnasPrincipal[cr] + '":"' + valColumna + '"}')); 7911 $.extend(item, JSON.parse('{"' + aDataIndexesColumnasPrincipal[cr] + '":"' + valColumna + '"}')); 7912 } 7913 //console.log(item); 7914 aDatosTablaFinal.push(item); 7915 } 7916 7917 } else { 7918 for (var x = 0; x < totalIndicadores; x++) { 7919 7920 var ind = indicadores[x].split("-"); // [col2] => [indicador, id, bold] 7921 var indicador_txt = ind[0]; // nombre del indicador 7922 var colsIndicador = indicador_txt.split("°"); 7923 var indicador_id = ind[1]; // id indicador 7924 var feature = ind[2]; // fuente bold, indentacion, nada 7925 7926 var item = arrIndicadoresFinales.find(function (objInd, index) { 7927 return objInd.indicadores.indexOf(indicador_id) != -1; 7928 }); 7929 if (item.pintaBold) { 7930 item.first = "<b>" + item.first + "</b>"; 7931 } 7932 if (item.identacion && item.identacion > 0) { 7933 var strSpaces = ""; 7934 switch (parseInt(item.identacion)) { 7935 case 1: strSpaces = " "; break; 7936 case 2: strSpaces = "  "; break; 7937 case 3: strSpaces = "   "; break; 7938 case 4: strSpaces = "    "; break; 7939 case 5: strSpaces = "     "; break; 7940 default: strSpaces = ""; break; 7941 } 7942 7943 item.first = strSpaces + item.first; 7944 } 7945 aDatosTablaFinal.push(item); 7946 } 7947 //Aqui recorrer para pintar bold cada columa de cada row 7948 } 7949 //Recibir configuracion de altura y estilos del grid 7950 var TABLA = new GridComponent(); 7951 TABLA.render(columnas_tabla, aDatosTablaFinal, parametros); 7952 } 7953 7954 /*=========================================================== 7955 = CUADRO #12 GRID EXTJS - 4 Diciembre 2017 = 7956 = Ultima modificación: 07-11-2025 = 7957 ===========================================================*/ 7958 function DibujaCuadroTipo12_2023(data, parametros) { 7959 var idioma = parametros.idioma; 7960 var aMeses = ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', '
7960Septiembre', 'Octubre', 'Noviembre', 'Diciembre']; 7961 if (idioma === "en") aMeses = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'Octuber', 'November', 'December']; 7962 var datos_tabla = []; 7963 var aDefaultColumnas = (idioma === "es") ? ["Concepto", "Dato"] : ["Concept", "Data"]; 7964 var dataValores = data.value; 7965 // var tValores = data.value.length; 7966 var indexFrecuencia = data.dimension.freq.category.index; // arreglo de indices de frecuencias 7967 var dataFrecuencia = data.dimension.freq.category.label; //arreglo de valores de frecuencias 7968 var indexFactor = data.dimension.factor.category.index; //arreglo de valores de factor 7969 var dataFactor = data.dimension.factor.category.label; 7970 var indexUnidadMedida = data.dimension.unit.category.index; 7971 var dataUnidadMedida = data.dimension.unit.category.label; //arreglo de valores de unidad de medida 7972 // var gruposIndicadores = parametros.indicadorValorCompuesto.grupos; // grupo de indicadores de params 7973 // var agrupamiento = parametros.agrupamiento = parametros.indicadorValorCompuesto.agrupamiento; 7974 var aCifraEstatus = data.CIFRAS_ESTATUS; 7975 var aNotas = data.NOTAS; 7976 7977 //ARMADO DE COLUMNAS DEL GRID ///////////////////////////////////////////////////////////////// 7978 var columnas_tabla = []; 7979 var aTitulosColumnas = parametros.titulosColumnas != "" ? parametros.titulosColumnas.split(",") : []; 7980 var totalColumnas = 0; var aColumnas = null; 7981 7982 if (aTitulosColumnas.length > 0) { // nombres de columnas si llegan en parametro 7983 totalColumnas = aTitulosColumnas.length; 7984 aColumnas = aTitulosColumnas; 7985 7986 for (var x = 0; x < totalColumnas; x++) { 7987 columnas_tabla.push({ 7988 title: aTitulosColumnas[x], 7989 width: 250, 7990 dataIndex: "col" + x, 7991 fix: false, 7992 }); 7993 } 7994 } else { // columnas por default 7995 //depende el numero de indicadores que tiene un indicador 7996 if (typeof defaultColumnas === "undefined") { 7997 //throw "Los titulos de las columnas no estan definidas para cuadro " + parametros.tipoCuadro + " con ID: " + parametros.contenedorCuadro; return false; 7998 defaultColumnas = aDefaultColumnas; 7999 } 8000 totalColumnas = defaultColumnas.length; 8001 aColumnas = defaultColumnas; 8002 8003 for (var x = 0; x < totalColumnas; x++) { 8004 columnas_tabla.push({ 8005 title: defaultColumnas[x], 8006 width: 250, 8007 dataIndex: "col" + x, 8008 fix: false, 8009 }); 8010 } 8011 } 8012 /// ----> Columnas del cuadro 8013 var aIndicadores = []; 8014 // var periodo = data.dimension.periods.category.label[0].Value.split("/")[0]; 8015 8016 aIndicadores = parametros.indicadorValorCompuesto.indicadores; 8017 var conFormato = parametros.indicadorValorCompuesto.conFormato; 8018 // agregado: 21/08/2026 8019 // Descripción: aplicaba un pop() sin tener un por que 8020 // data.dimension.indicator.category.label.pop(); 8021 var dataIndicadores = data.dimension.indicator.category.label; // arreglo de indicadores, respuesta de peticion
8022 var dataPeriodos = data.dimension.periods.category; // periodos en index y label 8023 //titulo indicadores primera columna del cuadro 8024 if (conFormato) { 8025 var textoAgrupamiento = ""; 8026 $.each(aIndicadores, function (key, item) { 8027 var objRenglon = item; 8028 if (item.indicadores == undefined) { 8029 textoAgrupamiento = item.titulo; 8030 } 8031 8032 $.extend(objRenglon, JSON.parse('{"' + "col0" + '":"' + item.titulo + '"}')); 8033 item.cd = item.cd !== undefined ? item.cd : ""; // para el texto Cifras desestacionalizadas 8034 datos_tabla.push(objRenglon); 8035 }); 8036 } else { 8037 $.each(dataIndicadores, function (key, item) { 8038 var objRenglon = item; 8039 // busca algun titulo directo en el parametro de ind 8040 var oIndicadorTitulo = aIndicadores.filter(function(i){ 8041 return "I_"+i.indicadores[0] === item.Key && i.titulo !== "" 8042 })[0] 8043 item.Value = oIndicadorTitulo !== undefined? oIndicadorTitulo.titulo : item.Value; 8044 $.extend(objRenglon, JSON.parse('{"' + "col0" + '":"' + item.Value + '"}')); 8045 datos_tabla.push(objRenglon); 8046 }); 8047 } 8048 /// LLENADO DE DATOS (RENGLONES INDICADOR-VALOR) 8049 /// ----> LLenado de indicadores_valores de la matriz de valores usando formula JSON-Stat 8050 var indicadores_valores = []; 8051 var contenidoValor = ""; 8052 $.each(dataIndicadores, function (index, indicador) { 8053 var valor = dataValores[index]; 8054 var periodo = dataPeriodos.index[index]; 8055 // ------ Concatena unidad medida, periodicidad y periodo al titulo de cada titulo de indicador en columna 0 8056 // obtiene index de frecuencia y unidad de medida para la posicion y obtiene dato de labels segun posicion obtenida previamente 8057 var valFrecuencia = dataFrecuencia.filter(function (obj) { 8058 return obj.Key === indexFrecuencia[index]; 8059 }); 8060 // console.log("en Desarrollo: en espera del ajuste de sergio") 8061 var valFactor = dataFactor.filter(function (obj) { 8062 return obj.Key === indexFactor[index]; 8063 }); 8064 var vFactor = valFactor.length > 0 && valFactor[0].Value !== null? valFactor[0].Value+" de " : ""; 8065 8066 // console.log(dataUnidadMedida); 8067 var valUnidad = dataUnidadMedida.filter(function (obj) { 8068 return obj.Key === indexUnidadMedida[index]; 8069 }); 8070 // console.log(dataUnidadMedida) 8071 /// Consulta y obtiene las cifras estatus de cada indicador si las tiene 8072 var formatoCifraEstatus = ""; 8073 if (aCifraEstatus != undefined && aCifraEstatus.length > 0) { 8074 var cifraEstatusDeIndicador = aCifraEstatus.filter(function (cifraestatus) { 8075 var indicador_buscar = indicador.Key.split("I_")[1]; 8076 return cifraestatus.indicadores.indexOf(indicador_buscar) !== -1; 8077 }); 8078 // recorre cada grupo de cifras estatus encontradas y les da formato para integrarlas a la celda del indicador en la tabla 8079 if (cifraEstatusDeIndicador.length > 0) { 8080 var desc = cifraEstatusDeIndicador[cifraEstatusDeIndicador.length - 1]['descripcion'].split("a partir de")[0]; 8081 formatoCifraEstatus = "<div style=\'font-style:italic;font-size:9px;color:#9b9b9b;\'>" + desc + "</div>"; 8082 } 8083 } 8084 // hasta aqui el proceso de cifras estatus para cada indicador 8085 8086 /// >----- Obtiene la sigla (s) que le corresponden a un indicador (busca del grupo de indicadores de notas dentro del grupo de indicadores que se estan recorriendo) 8087 var siglas = ""; 8088 if(parametros.muestraNota === "true"){ 8089 var aSiglasIndicador = []; 8090 var match = aNotas.filter(function (j) { 8091 var aIndicadores = j.INDICADOR.split(","); 8092 return aIndicadores.indexOf(indicador.Key.split("I_")[1].toString()) !== -1; 8093 }); 8094 if (match.length > 0) {
8095 match.forEach(function (m) { 8096 if (aSiglasIndicador.indexOf(m.SIGLA) === -1){ 8097 aSiglasIndicador.push(m._SIGLA ? m._SIGLA : m.SIGLA); 8098 } 8099 }); 8100 } 8101 if (aSiglasIndicador.length > 0) { 8102 siglas = " <sup>" + aSiglasIndicador.join("/ ") + "/</sup>"; 8103 } 8104 } 8105 /// <----- Fin Obtiene la sigla (s) que le corresponden a un indicador (busca del grupo de indicadores de notas dentro del grupo de indicadores que se estan recorriendo) 8106 // var contenidoValor = '<center>' + (valor + (totalColumnas > 1 ? siglas : "")) + '<div style=\'font-size:9px;color:#6b6a6a;\'>(' + valUnidad[0].Value + ')</div>' + formatoCifraEstatus + '</center>'; 8107 var contenidoValor = '<center>' + (valor + siglas) + '<div style=\'font-size:9px;color:#6b6a6a;\'>(' + vFactor +" "+ valUnidad[0].Value + ')</div>' + formatoCifraEstatus + '</center>'; 8108 //periodo con formato segun frecuencia 8109 var formato_periodo = ""; 8110 if (valFrecuencia[0].Value === "Anual") { // Anual 8111 formato_periodo = periodo; 8112 } else if (valFrecuencia[0].Value === "Mensual") { // Mensual 8113 var mes = periodo.split("/")[1]; 8114 //formato_periodo = aMeses[parseInt(mes) - 1].substr(0, 3); 8115 formato_periodo = oMESES.getMesNombreCorto(parseInt(mes), parametros.idioma); 8116 8117 } else if (valFrecuencia[0].Value === "Trimestral") { // Trimestral 8118 var mes = parseInt(periodo.split("/")[1]); // 03, 12 8119 if (mes == 1) { // trimestre 1 8120 formato_periodo = "1T"; 8121 } else if (mes == 2) { // trimestre 2 8122 formato_periodo = "2T"; 8123 } else if (mes == 3) { // trimestre 3 8124 formato_periodo = "3T"; 8125 } else { // trimestre 4 8126 formato_periodo = "4T"; 8127 } 8128 8129 } else { // otros 8130 formato_periodo = ""; 8131 } 8132 8133 formato_periodo = (periodo.split("/")[0] !== formato_periodo) ? (periodo.split("/")[0] + " " + formato_periodo) : periodo.split("/")[0]; 8134 indicadores_valores.push({ indicador: indicador.Key, valor: contenidoValor, periodo: formato_periodo, unidad: valUnidad[0].Value, frecuencia: valFrecuencia[0].Value }); 8135 }); 8136 8137 /// ----> Cruce de aIndicadores finales con indicadores_valores 8138 if (aIndicadores !== undefined && conFormato) { 8139 //solo indicadores agrupados por | 8140 $.each(aIndicadores, function (index, item) { 8141 8142 /// ----- Obtiene el grupo array de indicadores por cada uno para recorrerlos y buscar su dato valor en indicadores_valores 8143 // console.log(item.indicadores) 8144 if (item.indicadores !== undefined) { 8145 8146 //buscar un indicador > 0 como referencia para colocar el periodo y la frecuencia en el titulo (columna 0 8147 var indicadorBuscar = item.indicadores.find(function (ind) { 8148 return parseInt(ind) > 0; 8149 }); 8150 // console.log(indicadorBuscar) 8151 var oFrecUnidad = indicadores_valores.filter(function (obj) { 8152 return obj.indicador === "I_" + indicadorBuscar; 8153 }); 8154 var tituloIndicador = item.titulo; 8155 var spaces = item.espacios; 8156 8157 if (oFrecUnidad.length > 0) { 8158 tituloIndicador = '<div style=\\"margin-left:'+spaces+'em;\\">'+item.titulo + ', (' + oFrecUnidad[0].frecuencia + ') ' + oFrecUnidad[0].periodo+'</div>'; 8159 8160 } else { 8161 // Aqui cae en caso de que el indicador no tenia ningun valor, sin embargo debe respetar y colocarlo tal cual se especifica. 8162 tituloIndicador = '<div style=\\"margin-left:'+spaces+'em;\\">'+item.titulo+'</div>'; 8163 } 8164 tituloIndicador += aIndicadores[index].cd; 8165 $.extend(aIndicadores[index], JSON.parse('{"' + "col0" + '":"' + tituloIndicador + '"}')); 8166 8167 var arrayIndicadores = item.indicadores;
8168 $.each(arrayIndicadores, function (idx, ind) { 8169 var oIndValores = indicadores_valores.filter(function (obj) { 8170 return obj.indicador === "I_" + ind; 8171 }); 8172 8173 var valor = oIndValores[0] ? oIndValores[0].valor : "-"; 8174 $.extend(aIndicadores[index], JSON.parse('{"' + "col" + (idx + 1) + '":"' + valor + '"}')); 8175 }); 8176 } else { 8177 var spaces = item.espacios; 8178 // subtexto cifras desestacionalizadas (-cd) 8179 item.titulo += item.cd; 8180 var tituloIndicador = '<div style=\\"margin-left:'+spaces+'em;\\">'+item.titulo +'</div>'; 8181 $.extend(aIndicadores[index], JSON.parse('{"' + "col0" + '":"' + tituloIndicador + '"}')); 8182 } 8183 }); 8184 8185 } else { 8186 //solo para indicadores sin agrupar y separados por coma 8187 $.each(dataIndicadores, function (index, ind) { 8188 // console.log(ind) 8189 // var siglas = ""; 8190 // var aSiglasIndicador = [];
8191 // //item.indicadores.forEach(function (i) { 8192 // var match = aNotas.filter(function (j) { 8193 // var aIndicadores = j.INDICADOR.split(","); 8194 // return aIndicadores.indexOf(ind.Key.split("I_")[1].toString()) !== -1; 8195 // }); 8196 // if (match.length > 0) { 8197 // match.forEach(function (m) { 8198 // if (aSiglasIndicador.indexOf(m.SIGLA) === -1){ 8199 // aSiglasIndicador.push(m.SIGLA + (m.diferenciador !== undefined? "("+m.diferenciador+")" : "")); 8200 // } 8201 // }); 8202 // } 8203 // //}); 8204 // if (aSiglasIndicador.length > 0) { 8205 // siglas = " <sup><b>" + aSiglasIndicador.join("/ ") + "/</b></sup>"; 8206 // } 8207 var oindvalores = indicadores_valores.filter(function (obj) { 8208 return obj.indicador === ind.Key; 8209 }); 8210 8211 var oFrecUnidad = indicadores_valores.filter(function (obj) { 8212 return obj.indicador === ind.Key; 8213 }); 8214 var tituloIndicador = ind.Value; 8215 if (oFrecUnidad.length > 0) { 8216 tituloIndicador = ind.Value + ", (" + oFrecUnidad[0].frecuencia + ") " + oFrecUnidad[0].periodo; 8217 } 8218 tituloIndicador = tituloIndicador; 8219 8220 var valor = oindvalores[0] ? oindvalores[0].valor : "-"; 8221 $.extend(dataIndicadores[index], JSON.parse('{"' + "col0" + '":"' + tituloIndicador + '"}')); //columna 0 8222 $.extend(dataIndicadores[index], JSON.parse('{"col1":"' + valor + '"}')); 8223 }); 8224 aIndicadores = dataIndicadores; 8225 } 8226 //parametros.grid_configuracion.hide_columns = []; 8227 // envuelve notas en un box 8228 $("#divFuentes" + parametros.contenedorCuadro).css({ "backgroundColor": "#eaf3f3", "padding": "6px 8px", "margin": "6px 1px 6px 1px", "borderRadius": "2px", "display": "none" }); 8229 //$("#divFuentes" + parametros.contenedorCuadro).addClass("collapsed"); 8230 8231 //adding event toggle notas/fuentes //////////////////////////////////////////////////////////////////////////////// 8232 var toggleTarget = "divFuentes" + parametros.contenedorCuadro; 8233 var aToggle = document.createElement("a"); 8234 aToggle.innerHTML = (idioma === "es") ? "Mostrar llamadas" : "Show calls"; 8235 aToggle.id = "linkToggle_" + parametros.contenedorCuadro; 8236 aToggle.style = "cursor:pointer;"; 8237 $(aToggle).insertBefore("#" + toggleTarget); 8238 $(document).ready(function () { 8239 $("#" + aToggle.id).click(function () { 8240 var linkEl = this; 8241 $("#divFuentes" + parametros.contenedorCuadro).slideToggle("fast", function () { 8242 if ($(this).is(":visible")) { 8243 $(linkEl).html((idioma === "es") ? "Ocultar llamadas" : "Hide calls"); 8244 } else { 8245 $(linkEl).html((idioma === "es") ? "Mostrar llamadas" : "Show calls"); 8246 } 8247 }); 8248 }); 8249 }); 8250 8251 //Recibir configuracion de altura y estilos del grid 8252 var TABLA = new GridComponent(); 8253 // estilos header border blanco 8254 parametros.grid_configuracion.header_css = "background:#DDD;font-weight:bold;border-color:#fff;"; 8255 TABLA.render(columnas_tabla, datos_tabla, parametros); 8256 } 8257 /* 8258 * YA NO SE UTILIZA PARA EL CUADRO #12 8259 */ 8260 function DibujaCuadroTipo12_New(data, parametros) { 8261 8262 var idioma = parametros.idioma; 8263 var aMeses = ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', '
8263Septiembre', 'Octubre', 'Noviembre', 'Diciembre']; 8264 if (idioma === "en") aMeses = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'Octuber', 'November', 'December']; 8265 var datos_tabla = []; 8266 var aDefaultColumnas = (idioma === "es") ? ["Concepto", "Dato"] : ["Concept", "Data"]; 8267 var dataValores = data.value; 8268 // var tValores = data.value.length; 8269 var indexFrecuencia = data.dimension.freq.category.index; // arreglo de indices de frecuencias 8270 var dataFrecuencia = data.dimension.freq.category.label; //arreglo de valores de frecuencias 8271 var indexUnidadMedida = data.dimension.unit.category.index; 8272 var dataUnidadMedida = data.dimension.unit.category.label; //arreglo de valores de unidad de medida 8273 // var gruposIndicadores = parametros.indicadorValorCompuesto.grupos; // grupo de indicadores de params 8274 // var agrupamiento = parametros.agrupamiento = parametros.indicadorValorCompuesto.agrupamiento; 8275 var aCifraEstatus = data.CIFRAS_ESTATUS; 8276 var aNotas = data.NOTAS; 8277 8278 //ARMADO DE COLUMNAS DEL GRID ///////////////////////////////////////////////////////////////// 8279 var columnas_tabla = []; 8280 var aTitulosColumnas = parametros.titulosColumnas != "" ? parametros.titulosColumnas.split(",") : []; 8281 var totalColumnas = 0; var aColumnas = null; 8282 8283 if (aTitulosColumnas.length > 0) { // nombres de columnas si llegan en parametro 8284 totalColumnas = aTitulosColumnas.length; 8285 aColumnas = aTitulosColumnas; 8286 8287 for (var x = 0; x < totalColumnas; x++) { 8288 columnas_tabla.push({ 8289 title: aTitulosColumnas[x], 8290 width: 250, 8291 dataIndex: "col" + x, 8292 fix: false, 8293 }); 8294 } 8295 } else { // columnas por default 8296 //depende el numero de indicadores que tiene un indicador 8297 if (typeof defaultColumnas === "undefined") { 8298 //throw "Los titulos de las columnas no estan definidas para cuadro " + parametros.tipoCuadro + " con ID: " + parametros.contenedorCuadro; return false; 8299 defaultColumnas = aDefaultColumnas; 8300 } 8301 totalColumnas = defaultColumnas.length; 8302 aColumnas = defaultColumnas; 8303 8304 for (var x = 0; x < totalColumnas; x++) { 8305 columnas_tabla.push({ 8306 title: defaultColumnas[x], 8307 width: 250, 8308 dataIndex: "col" + x, 8309 fix: false, 8310 }); 8311 } 8312 } 8313 /// ----> Columnas del cuadro 8314 var aIndicadores = []; 8315 var periodo = data.dimension.periods.category.label[0].Value.split("/")[0]; 8316 8317 aIndicadores = parametros.indicadorValorCompuesto.grupos; 8318 var dataIndicadores = data.dimension.indicator.category.label; // arreglo de indicadores, respuesta de peticion 8319 var dataPeriodos = data.dimension.periods.category; // periodos en index y label 8320 //titulo indicadores primera columna del cuadro 8321 if (parametros.indicadorValorCompuesto.grupos) { 8322 var textoAgrupamiento = ""; 8323 $.each(aIndicadores, function (key, item) { 8324 var objRenglon = item; 8325 if (item.indicadores == undefined) { 8326 textoAgrupamiento = item.titulo; 8327 } 8328 $.extend(objRenglon, JSON.parse('{"' + "col0" + '":"' + item.titulo + '"}')); 8329 item.cd = item.cd !== undefined ? item.cd : ""; // para el texto Cifras desestacionalizadas 8330 datos_tabla.push(objRenglon); 8331 }); 8332 } else { 8333 $.each(dataIndicadores, function (key, item) { 8334 var objRenglon = item; 8335 $.extend(objRenglon, JSON.parse('{"' + "col0" + '":"' + item.Value + '"}')); 8336 datos_tabla.push(objRenglon); 8337 }); 8338 } 8339 /// LLENADO DE DATOS (RENGLONES INDICADOR-VALOR) 8340 /// ---->
8340 LLenado de indicadores_valores de la matriz de valores usando formula JSON-Stat 8341 var indicadores_valores = []; 8342 var contenidoValor = ""; 8343 $.each(dataIndicadores, function (index, indicador) { 8344 var valor = dataValores[index]; 8345 var periodo = dataPeriodos.index[index]; 8346 // ------ Concatena unidad medida, periodicidad y periodo al titulo de cada titulo de indicador en columna 0 8347 // obtiene index de frecuencia y unidad de medida para la posicion y obtiene dato de labels segun posicion obtenida previamente 8348 var valFrecuencia = dataFrecuencia.filter(function (obj) { 8349 return obj.Key === indexFrecuencia[index]; 8350 }); 8351 var valUnidad = dataUnidadMedida.filter(function (obj) { 8352 return obj.Key === indexUnidadMedida[index]; 8353 }); 8354 /// Consulta y obtiene las cifras estatus de cada indicador si las tiene 8355 var formatoCifraEstatus = ""; 8356 if (aCifraEstatus != undefined && aCifraEstatus.length > 0) { 8357 var cifraEstatusDeIndicador = aCifraEstatus.filter(function (cifraestatus) { 8358 var indicador_buscar = indicador.Key.split("I_")[1]; 8359 return cifraestatus.indicadores.indexOf(indicador_buscar) !== -1; 8360 }); 8361 // recorre cada grupo de cifras estatus encontradas y les da formato para integrarlas a la celda del indicador en la tabla 8362 if (cifraEstatusDeIndicador.length > 0) { 8363 var desc = cifraEstatusDeIndicador[cifraEstatusDeIndicador.length - 1]['descripcion'].split("a partir de")[0]; 8364 formatoCifraEstatus = "<div style=\'font-style:italic;font-size:9px;color:#9b9b9b;\'>" + desc + "</div>"; 8365 } 8366 } 8367 // hasta aqui el proceso de cifras estatus para cada indicador 8368 8369 /// >----- Obtiene la sigla (s) que le corresponden a un indicador (busca del grupo de indicadores de notas dentro del grupo de indicadores que se estan recorriendo) 8370 var siglas = ""; 8371 var aSiglasIndicador = [];
8372 //item.indicadores.forEach(function (i) { 8373 var match = aNotas.filter(function (j) { 8374 var aIndicadores = j.INDICADOR.split(","); 8375 return aIndicadores.indexOf(indicador.Key.split("I_")[1].toString()) !== -1; 8376 }); 8377 if (match.length > 0) { 8378 match.forEach(function (m) { 8379 if (aSiglasIndicador.indexOf(m.SIGLA) === -1) 8380 aSiglasIndicador.push(m.SIGLA); 8381 }); 8382 } 8383 //}); 8384 if (aSiglasIndicador.length > 0) { 8385 siglas = " <sup>" + aSiglasIndicador.join("/ ") + "/</sup>"; 8386 } 8387 /// <----- Fin Obtiene la sigla (s) que le corresponden a un indicador (busca del grupo de indicadores de notas dentro del grupo de indicadores que se estan recorriendo) 8388 var contenidoValor = '<center>' + (valor + (totalColumnas > 2 ? siglas : "")) + '<div style=\'font-size:9px;color:#6b6a6a;\'>(' + valUnidad[0].Value + ')</div>' + formatoCifraEstatus + '</center>'; 8389 //periodo con formato segun frecuencia 8390 var formato_periodo = ""; 8391 if (valFrecuencia[0].Value === "Anual") { // Anual 8392 formato_periodo = periodo; 8393 } else if (valFrecuencia[0].Value === "Mensual") { // Mensual 8394 var mes = periodo.split("/")[1]; 8395 //formato_periodo = aMeses[parseInt(mes) - 1].substr(0, 3); 8396 formato_periodo = oMESES.getMesNombreCorto(parseInt(mes), parametros.idioma); 8397 8398 } else if (valFrecuencia[0].Value === "Trimestral") { // Trimestral 8399 var mes = parseInt(periodo.split("/")[1]); // 03, 12 8400 if (mes == 1) { // trimestre 1 8401 formato_periodo = "1T"; 8402 } else if (mes == 2) { // trimestre 2 8403 formato_periodo = "2T"; 8404 } else if (mes == 3) { // trimestre 3 8405 formato_periodo = "3T"; 8406 } else { // trimestre 4 8407 formato_periodo = "4T"; 8408 } 8409 8410 } else { // otros 8411 formato_periodo = ""; 8412 } 8413 8414 formato_periodo = (periodo.split("/")[0] !== formato_periodo) ? (periodo.split("/")[0] + " " + formato_periodo) : periodo.split("/")[0]; 8415 indicadores_valores.push({ indicador: indicador.Key, valor: contenidoValor, periodo: formato_periodo, unidad: valUnidad[0].Value, frecuencia: valFrecuencia[0].Value }); 8416 }); 8417 8418 /// ----> Cruce de aIndicadores finales con indicadores_valores 8419 if (aIndicadores !== undefined) { 8420 //solo indicadores agrupados por | 8421 $.each(aIndicadores, function (index, item) { 8422 8423 /// ----- Obtiene el grupo array de indicadores por cada uno para recorrerlos y buscar su dato valor en indicadores_valores 8424 if (item.indicadores !== undefined) { 8425 //buscar un indicador > 0 como referencia para colocar el periodo y la frecuencia en el titulo (columna 0 8426 var indicadorBuscar = item.indicadores.find(function (ind) { 8427 return parseInt(ind) > 0; 8428 }); 8429 var oFrecUnidad = indicadores_valores.filter(function (obj) { 8430 return obj.indicador === "I_" + indicadorBuscar; 8431 }); 8432 var tituloIndicador = item.titulo; 8433 8434 if (oFrecUnidad.length > 0) { 8435 tituloIndicador = item.titulo + ", (" + oFrecUnidad[0].frecuencia + ") " + oFrecUnidad[0].periodo; 8436 } 8437 tituloIndicador += aIndicadores[index].cd; 8438 $.extend(aIndicadores[index], JSON.parse('{"' + "col0" + '":"' + tituloIndicador + '"}')); 8439 8440 var arrayIndicadores = item.indicadores;
8441 $.each(arrayIndicadores, function (idx, ind) { 8442 var oIndValores = indicadores_valores.filter(function (obj) { 8443 return obj.indicador === "I_" + ind; 8444 }); 8445 8446 var valor = oIndValores[0] ? oIndValores[0].valor : "-"; 8447 $.extend(aIndicadores[index], JSON.parse('{"' + "col" + (idx + 1) + '":"' + valor + '"}')); 8448 }); 8449 } else { 8450 // subtexto cifras desestacionalizadas (-cd) 8451 item.titulo += item.cd; 8452 $.extend(aIndicadores[index], JSON.parse('{"' + "col0" + '":"' + item.titulo + '"}')); 8453 } 8454 }); 8455 } else { 8456 //solo para indicadores sin agrupar y separados por coma 8457 $.each(dataIndicadores, function (index, ind) { 8458 var siglas = ""; 8459 var aSiglasIndicador = [];
8460 //item.indicadores.forEach(function (i) { 8461 var match = aNotas.filter(function (j) { 8462 var aIndicadores = j.INDICADOR.split(","); 8463 return aIndicadores.indexOf(ind.Key.split("I_")[1].toString()) !== -1; 8464 }); 8465 if (match.length > 0) { 8466 match.forEach(function (m) { 8467 if (aSiglasIndicador.indexOf(m.SIGLA) === -1) 8468 aSiglasIndicador.push(m.SIGLA); 8469 }); 8470 } 8471 //}); 8472 if (aSiglasIndicador.length > 0) { 8473 siglas = " <sup><b>" + aSiglasIndicador.join("/ ") + "/</b></sup>"; 8474 } 8475 var oindvalores = indicadores_valores.filter(function (obj) { 8476 return obj.indicador === ind.Key; 8477 }); 8478 8479 var oFrecUnidad = indicadores_valores.filter(function (obj) { 8480 return obj.indicador === ind.Key; 8481 }); 8482 var tituloIndicador = ind.Value; 8483 if (oFrecUnidad.length > 0) { 8484 tituloIndicador = ind.Value + ", (" + oFrecUnidad[0].frecuencia + ") " + oFrecUnidad[0].periodo; 8485 } 8486 8487 tituloIndicador = tituloIndicador + siglas; 8488 8489 var valor = oindvalores[0] ? oindvalores[0].valor : "-"; 8490 $.extend(dataIndicadores[index], JSON.parse('{"' + "col0" + '":"' + tituloIndicador + '"}')); //columna 0 8491 $.extend(dataIndicadores[index], JSON.parse('{"col1":"' + valor + '"}')); 8492 }); 8493 aIndicadores = dataIndicadores; 8494 } 8495 //parametros.grid_configuracion.hide_columns = []; 8496 // envuelve notas en un box 8497 $("#divFuentes" + parametros.contenedorCuadro).css({ "backgroundColor": "#eaf3f3", "padding": "6px 8px", "margin": "6px 1px 6px 1px", "borderRadius": "2px", "display": "none" }); 8498 //$("#divFuentes" + parametros.contenedorCuadro).addClass("collapsed"); 8499 8500 //adding event toggle notas/fuentes //////////////////////////////////////////////////////////////////////////////// 8501 var toggleTarget = "divFuentes" + parametros.contenedorCuadro; 8502 var aToggle = document.createElement("a"); 8503 aToggle.innerHTML = (idioma === "es") ? "Mostrar llamadas" : "Show calls"; 8504 aToggle.id = "linkToggle_" + parametros.contenedorCuadro; 8505 aToggle.style = "cursor:pointer;"; 8506 $(aToggle).insertBefore("#" + toggleTarget); 8507 $(document).ready(function () { 8508 $("#" + aToggle.id).click(function () { 8509 var linkEl = this; 8510 $("#divFuentes" + parametros.contenedorCuadro).slideToggle("fast", function () { 8511 if ($(this).is(":visible")) { 8512 $(linkEl).html((idioma === "es") ? "Ocultar llamadas" : "Hide calls"); 8513 } else { 8514 $(linkEl).html((idioma === "es") ? "Mostrar llamadas" : "Show calls"); 8515 } 8516 }); 8517 }); 8518 }); 8519 8520 //Recibir configuracion de altura y estilos del grid 8521 var TABLA = new GridComponent(); 8522 // estilos header border blanco 8523 parametros.grid_configuracion.header_css = "background:#DDD;font-weight:bold;border-color:#fff;"; 8524 TABLA.render(columnas_tabla, datos_tabla, parametros); 8525 } 8526 /*===========================================================
8527 = FICHA RESUMEN #13 GRID EXTJS - 12 Diciembre 2017 = 8528 ===========================================================*/ 8529 function DibujaCuadroTipo13_New(data, parametros) { 8530 //armar tabla 8531 //traduccion 8532 var idioma = parametros.idioma; 8533 var titulo1 = "Capital", titulo2 = "Coordenadas"; titulo3 = "Entidades &area", titulo4 = "Superficie"; 8534 if (idioma === "en") { 8535 titulo2 = "Coordinates"; 8536 titulo3 = "Number of &area"; 8537 titulo4 = "Area"; 8538 } 8539 var TABLE = document.createElement("table"); 8540 TABLE.className = 'table table-bordered table-hover table-responsive'; 8541 var tBody = (!BROWSER.ie()) ? TABLE.createTBody() : document.createElement("tbody"); 8542 var tRowBody = (!BROWSER.ie()) ? tBody.insertRow() : document.createElement("tr"); 8543 8544 if (BROWSER.ie) { 8545 //tBody.appendChild(tRowBody); 8546 //TABLE.appendChild(tBody) 8547 } 8548 8549 var styleHeaders = 'background:#ddd;font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",Helvetica,Arial,"Lucida Grande",sans-serif;border:1px solid #fff;border-top:1px solid #c8c8c8;border-left:1px solid #c8c8c8;border-right:1px solid #c8c8c8;'; 8550 var styleGeneral = "border:1px solid #c8c8c8;"; 8551 //cel Capital 8552 //var cellHeader = document.createElement("th"); 8553 //cellHeader.innerHTML = titulo1; 8554 //cellHeader.style = styleHeaders; 8555 //tRowBody.appendChild(cellHeader); 8556 //var cell = document.createElement("td"); 8557 //cell.style = styleGeneral; 8558 //cell.innerHTML = data.Nombre; 8559 //tRowBody.appendChild(cell); 8560 8561 8562 if (BROWSER.ie) { 8563 tBody.appendChild(tRowBody); 8564 TABLE.appendChild(tBody) 8565 } 8566 8567 //cel Coordenadas 8568 if(data.hasOwnProperty("coordinates")){ 8569 8570 var cellHeader = document.createElement("th"); 8571 cellHeader.innerHTML = titulo2; 8572 tRowBody.appendChild(cellHeader); 8573 cellHeader.style = styleHeaders + "border-bottom:1px solid #c8c8c8;border-top:1px solid #c8c8c8;"; 8574 var cell = document.createElement("td"); 8575 var latitud = "", longitud = ""; 8576 if(data.coordinates.length == 2){ 8577 var lat1_grados = data.coordinates[0][0].split("°")[0]; 8578 var lat1_decimales = (data.coordinates[0][0].split("'")[0]).split("°")[1]; 8579 var lat1_minutos = data.coordinates[0][0].split("'")[1]; 8580 var lat2_grados = data.coordinates[1][0].split("°")[0]; 8581 var lat2_decimales = (data.coordinates[1][0].split("'")[0]).split("°")[1]; 8582 var lat2_minutos = data.coordinates[1][0].split("'")[1]; 8583 8584 var lon1_grados = data.coordinates[0][1].split("°")[0]; 8585 var lon1_decimales = (data.coordinates[0][1].split("'")[0]).split("°")[1]; 8586 var lon1_minutos = data.coordinates[0][1].split("'")[1]; 8587 var lon2_grados = data.coordinates[1][1].split("°")[0]; 8588 var lon2_decimales = (data.coordinates[1][1].split("'")[0]).split("°")[1]; 8589 var lon2_minutos = data.coordinates[1][1].split("'")[1]; 8590 var styleSpan = "width:23px;text-align:right;display:inline-block;"; 8591 var styleSpan2 = "width:60px;text-align:right;display:inline-block;"; 8592 latitud = '<span style="width:80px;display:inline-block;">Latitud</span><span style="' + styleSpan + 'width:35px !important;">' + lat1_grados + '°</span><span style="' + styleSpan + '">' + lat1_decimales + '\'</span><span style="' + styleSpan2 + '">' + lat1_minutos + '"</span> <span style="' + styleSpan + 'width:35px !important;">' + lat2_grados + '°</span><span style="' + styleSpan + '">' + lat2_decimales + '\'</span><span style="' + styleSpan2 + '">
8592' + lat2_minutos +'"</span>'; 8593 longitud = '<span style="width:80px;display:inline-block;">Longitud</span><span style="' + styleSpan + 'width:35px !important;">' + lon1_grados + '°</span><span style="' + styleSpan + '">' + lon1_decimales + '\'</span><span style="' + styleSpan2 + '">' + lon1_minutos + '"</span> <span style="' + styleSpan + 'width:35px !important;">' + lon2_grados + '°</span><span style="' + styleSpan + '">' + lon2_decimales + '\'</span><span style="' + styleSpan2 + '">' + lon2_minutos + '"</span>'; 8594 // latitud = "Latitud " + data.coordinates[0][0] + " " + data.coordinates[1][0]; 8595 // longitud = "Longitud "+data.coordinates[0][1].replace("-", "") + " " + data.coordinates[1][1].replace("-", ""); 8596 } else { 8597 latitud = data.coordinates[0] + " " + data.coordinates[1].replace("-",""); 8598 8599 } 8600 //var latitud = parseFloat(data.LATITUD_GRADOS1).toFixed(0) + "° " + (data.LATITUD_MINUTOS1 == "" || data.LATITUD_MINUTOS1 == "0" ? "" : data.LATITUD_MINUTOS1 + "'") + " " + parseFloat(data.LATITUD_GRADOS2).toFixed(0) + "° " + (data.LATITUD_MINUTOS2 == "" || data.LATITUD_MINUTOS2 == '0' ? "" : data.LATITUD_MINUTOS2 + "'") + " N"; 8601 // var longitud = parseFloat(data.LONGITUD_GRADOS1).toFixed(0) + "° " + (data.LONGITUD_MINUTOS1 == "" || data.LONGITUD_MINUTOS1 == "0" ? "" : data.LONGITUD_MINUTOS1 + "'") + " " + parseFloat(data.LONGITUD_GRADOS2).toFixed(0) + "° " + (data.LONGITUD_MINUTOS2 == "" || data.LONGITUD_MINUTOS2 == '0' ? "" : data.LONGITUD_MINUTOS2 + "'") + " O"; 8602 cell.innerHTML = latitud + "<br />" + longitud; 8603 tRowBody.appendChild(cell); 8604 } 8605 var tRowBody = (!BROWSER.ie()) ? tBody.insertRow() : document.createElement("tr"); 8606 8607 //cel Numero de municipios / entidades 8608 var cellHeader = document.createElement("th"); 8609 //var area = (parametros.areaGeografica == "00" ? (idioma === "en" ? "States" : "Federativas") : (idioma === "en" ? "Municipalities" : "Municipios")); 8610 var area = (parametros.areaGeografica == "00" ? (idioma === "en" ? "Federal Entities" : "Entidades Federativas") : (idioma === "en" ? "Municipalities" : "Municipios")); 8611 //cellHeader.innerHTML = titulo3.replace("&area", area); 8612 cellHeader.innerHTML = area; 8613 cellHeader.style = styleHeaders + "border-bottom:1px solid #c8c8c8;"; 8614 tRowBody.appendChild(cellHeader); 8615 8616 var cell = document.createElement("td"); 8617 //cell.setAttribute("colspan", 3) 8618 cell.style.width = "50%"; 8619 if (data.Municipio.length > 1) { 8620 var cont = 0; 8621 $.each(data.Municipio, function (key, mpio) { 8622 if (mpio.Municipio !== "000" && mpio.Municipio !== "901" && mpio.Municipio !== "902" && mpio.Municipio !== "996" && mpio.Municipio !== "997" && mpio.Municipio !== "998" && mpio.Municipio !== "999") { 8623 ++cont; 8624 } 8625 }); 8626 } 8627 cell.innerHTML = data.Municipio.length > 1 ? cont : 32; 8628 tRowBody.appendChild(cell); 8629 8630 8631 //cel indicador 8632 //var cellHeader = document.createElement("th"); 8633 //cellHeader.innerHTML = titulo4; 8634 //tRowBody.appendChild(cellHeader); 8635 //cellHeader.style = styleHeaders; 8636 //var cell = document.createElement("td"); 8637 //arma estructura 8638 //var texto_unidad_medida = (data.indicator.NOMBRE_UNIDAD) ? " (" + data.indicator.NOMBRE_UNIDAD + ")" : "";
8639 //var texto_periodicidad = (data.indicator.NOMBRE_FRECUENCIA) ? ", (" + data.indicator.NOMBRE_FRECUENCIA + ")" : ""; 8640 //var texto_anio = (data.indicator.CIFRAS_ESTATUS.length == 1) ? data.indicator.CIFRAS_ESTATUS[0].periodos : ""; 8641 //var nombre_indicador = Object.getOwnPropertyNames(parametros.indicadorValorCompuesto).length > 0 ? parametros.indicadorValorCompuesto.indicador : data.indicator.NOMBRE_INDICADOR; 8642 //texto_anio = texto_anio.split("/")[0]; 8643 8644 //var texto_mostrar = texto_unidad_medida + texto_periodicidad + " " + texto_anio; 8645 //cell.innerHTML = nombre_indicador + texto_mostrar; 8646 //tRowBody.appendChild(cell); 8647 8648 // estilos 8649 if (BROWSER.ie) { 8650 tBody.appendChild(tRowBody); 8651 TABLE.appendChild(tBody) 8652 } 8653 8654 document.getElementById("divDatos" + parametros.contenedorCuadro).appendChild(TABLE); 8655 $("#tableStat" + parametros.contenedorCuadro).hide(); 8656 $("#TableEspacio" + parametros.contenedorCuadro).hide(); 8657 } 8658 /*=========================================================== 8659 = FICHA RESUMEN #13 V3 - 08 Nov 2019 = 8660 = MEXICO EN CIFRAS - V3 API metodo CatalogoAreaGeograficav3/ (EN USO ACTUAL) = 8661 ===========================================================*/ 8662 function DibujaCuadroTipo13V3_New(data, parametros) {
8663 /* objEntidadSeleccionadaMC = { 8664 "cveMpio": "01003", 8665 "cveEnt": "01", 8666 "mpio": "Calvillo", 8667 "ent": "Aguascalientes" 8668 }; */ 8669 //variable global con datos principales de las entidades seleccionadas desde el combo de entidades 8670 // var objEntidadSeleccionadaMC = {cveMpio: '00', cveEnt: '00', mpio: '', ent: 'Estados Unidos Mexicanos'} 8671 var objEntidadSeleccionada = (typeof objEntidadSeleccionadaMC === "undefined")? {cveMpio:"n/d",cveEnt:"n/d", mpio:"",ent:""} : objEntidadSeleccionadaMC ; 8672 if((parametros.areaSeleccionada !== undefined) && typeof objEntidadSeleccionadaMC === "undefined") objEntidadSeleccionada = parametros.areaSeleccionada; 8673 8674 //traduccion 8675 var idioma = parametros.idioma; 8676 var UL = document.createElement("ul"); 8677 UL.id = "ulCardLocalidad_" + parametros.contenedorCuadro; 8678 UL.style.paddingLeft = "0px"; 8679 var LI = document.createElement("li"); LI.style.display = "block"; LI.style.width = "100%"; 8680 var SPAN = document.createElement("span"); 8681 8682 var titulo1 = "Capital", titulo2 = "Coordenadas"; titulo3 = "Entidades &area", titulo4 = "Superficie"; 8683 if (idioma === "en") { 8684 titulo2 = "Coordinates"; 8685 titulo3 = "Number of &area"; 8686 titulo4 = "Area"; 8687 } 8688 8689 var styleHeaders = 'background:#ddd;font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",Helvetica,Arial,"Lucida Grande",sans-serif;border:1px solid #fff;border-top:1px solid #c8c8c8;border-left:1px solid #c8c8c8;border-right:1px solid #c8c8c8;'; 8690 var styleGeneral = "border:1px solid #c8c8c8;"; 8691 8692 // Entidad y municipio 8693 var LIEntidad = LI.cloneNode(true); 8694 var SpanEntidad = SPAN.cloneNode(true); 8695 SpanEntidad.style.fontWeight = "bold"; 8696 SpanEntidad.style.padding = "0px 10px 0px 0px"; 8697 SpanEntidad.style.display = "inline-block"; 8698 SpanEntidad.className = "cls-block-loc"; 8699 SpanEntidad.style.width = "40%"; 8700 if(parametros.areaGeografica === "00" || parametros.areaGeografica === "0"){ 8701 // if(parametros.areaGeografica === "00" || parametros.areaGeografica === "0700"){ 8702 SpanEntidad.innerHTML = (parametros.idioma == "es"? "Nación:" : "Country:"); 8703 } else { 8704 SpanEntidad.innerHTML = (parametros.idioma == "es"? "Entidad federativa:" : "Federal entity:"); 8705 } 8706 LIEntidad.appendChild(SpanEntidad); 8707 8708 var SpanEntidadValor = SPAN.cloneNode(true); 8709 SpanEntidadValor.style.display = "inline-block"; 8710 SpanEntidadValor.style.width = "60%";
8711 // if(objEntidadSeleccionada.mpio !== "" || objEntidadSeleccionada.cveEnt === "00"){ 8712 // crea link 8713 var link = document.createElement("a") 8714 link.setAttribute("href", C_dominioBuscador+"app/areasgeograficas?ag=" + objEntidadSeleccionada.cveEnt); 8715 link.setAttribute("target","_blank"); 8716 // link.innerHTML = objEntidadSeleccionada.cveEnt +" "+ objEntidadSeleccionada.ent 8717 link.innerHTML = objEntidadSeleccionada.ent +" ("+objEntidadSeleccionada.cveEnt+")" 8718 SpanEntidadValor.append(link) 8719 // } else if(objEntidadSeleccionada.cveEnt === "00"){ 8720 // SpanEntidadValor.innerHTML = objEntidadSeleccionada.ent; 8721 // } else { 8722 // SpanEntidadValor.innerHTML = objEntidadSeleccionada.ent +" ("+objEntidadSeleccionada.cveEnt+")" 8723 // } 8724 LIEntidad.appendChild(SpanEntidadValor); 8725 8726 UL.appendChild(LIEntidad) 8727
8728 if(objEntidadSeleccionada.mpio !== ""){ 8729 var LIMpio = LI.cloneNode(true); 8730 var SpanMpio = SPAN.cloneNode(true); 8731 SpanMpio.style.fontWeight = "bold"; 8732 SpanMpio.style.padding = "0px 10px 0px 0px"; 8733 SpanMpio.style.display = "inline-block"; 8734 SpanMpio.style.width = "40%"; 8735 SpanMpio.className = "cls-block-loc"; 8736 SpanMpio.innerHTML = (parametros.idioma == "es"? "Municipio:" : "Municipality:"); 8737 LIMpio.appendChild(SpanMpio); 8738 8739 var SpanMpioValor = SPAN.cloneNode(true); 8740 SpanMpioValor.style.display = "inline-block"; 8741 SpanMpioValor.style.width = "60%"; 8742 // SpanMpioValor.innerHTML = objEntidadSeleccionada.cveMpio +" "+ objEntidadSeleccionada.mpio; 8743 var link = document.createElement("a") 8744 link.setAttribute("href", C_dominioBuscador+"app/areasgeograficas?ag=" + objEntidadSeleccionad
8744a.cveMpio); 8745 link.setAttribute("target","_blank"); 8746 // link.innerHTML = objEntidadSeleccionada.cveMpio +" "+ objEntidadSeleccionada.mpio 8747 link.innerHTML = objEntidadSeleccionada.mpio +" ("+ objEntidadSeleccionada.cveMpio +")" 8748 SpanMpioValor.append(link) 8749 LIMpio.appendChild(SpanMpioValor); 8750 8751 UL.appendChild(LIMpio) 8752 } 8753 8754 //cel Coordenadas 8755 if(data.hasOwnProperty("coordinates")){ 8756 var SpanCoorTitulo = SPAN.cloneNode(true); 8757 SpanCoorTitulo.innerHTML = (parametros.idioma == "es"? "Coordenadas:" : "Coordinates:"); 8758 SpanCoorTitulo.style.fontWeight = "bold"; 8759 SpanCoorTitulo.style.padding = "0px 10px 0px 0px"; 8760 SpanCoorTitulo.style.display = "inline-block"; 8761 SpanCoorTitulo.style.verticalAlign = "top"; 8762 SpanCoorTitulo.style.width = "40%"; 8763 SpanCoorTitulo.className = "cls-block-loc"; 8764 8765 var latitud = "", longitud = ""; 8766 if(data.coordinates.length == 2){ 8767 var lat1_grados = data.coordinates[0][0].split("°")[0]; 8768 var lat1_decimales = (data.coordinates[0][0].split("'")[0]).split("°")[1]; 8769 var lat1_minutos = data.coordinates[0][0].split("'")[1]; 8770 var lat2_grados = data.coordinates[1][0].split("°")[0]; 8771 var lat2_decimales = (data.coordinates[1][0].split("'")[0]).split("°")[1]; 8772 var lat2_minutos = data.coordinates[1][0].split("'")[1]; 8773 8774 var lon1_grados = data.coordinates[0][1].split("°")[0]; 8775 var lon1_decimales = (data.coordinates[0][1].split("'")[0]).split("°")[1]; 8776 var lon1_minutos = data.coordinates[0][1].split("'")[1]; 8777 var lon2_grados = data.coordinates[1][1].split("°")[0]; 8778 var lon2_decimales = (data.coordinates[1][1].split("'")[0]).split("°")[1]; 8779 var lon2_minutos = data.coordinates[1][1].split("'")[1]; 8780 var styleSpan = "text-align:right;display:inline-block;"; 8781 var styleSpan2 = "text-align:right;display:inline-block;"; 8782 //idioma textos 8783 var latitudTitle = (parametros.idioma === "en")? "Latitude" : "Latitud"; 8784 var longitudTitle = (parametros.idioma === "en")? "Longitude" : "Longitud"; 8785 latitud = '<span style="width:auto;display:inline-block;padding-right:6px">'+ latitudTitle +'</span><span style="' + styleSpan + '">' + lat1_grados + '°</span><span style="' + styleSpan + '">' + lat1_decimales + '\'</span><span style="' + styleSpan2 + '">' + lat1_minutos + '</span> <span style="' + styleSpan + '">' + lat2_grados + '°</span><span style="' + styleSpan + '">' + lat2_decimales + '\'</span><span style="' + styleSpan2 + '">' + lat2_minutos +'</span>'; 8786 longitud = '<span style="width:auto;display:inline-block;padding-right:6px">'+ longitudTitle +'</span><span style="' + styleSpan + '">' + lon1_grados + '°</span><span style="' + styleSpan + '">' + lon1_decimales + '\'</span><span style="' + styleSpan2 + '">' + lon1_minutos + '</span> <span style="' + styleSpan + '">' + lon2_grados + '°</span><span style="' + styleSpan + '">' + lon2_decimales + '\'</span><span style="' + styleSpan2 + '">' + lon2_minutos + '</span>'; 8787 } else { 8788 latitud = data.coordinates[0] + " " + data.coordinates[1].replace("-",""); 8789 8790 } 8791 var SpanCoorValores = SPAN.cloneNode(true); 8792 SpanCoorValores.style.display = "inline-block"; 8793 SpanCoorValores.style.width = "60%"; 8794 SpanCoorValores.innerHTML = longitud + ",<br /> " + latitud; 8795 var LICoor = LI.cloneNode(true); 8796 LICoor.appendChild(SpanCoorTitulo); 8797 LICoor.appendChild(SpanCoorValores); 8798 UL.appendChild(LICoor); 8799 } 8800 8801 //celda para conteo Numero de municipios / entidades / localidades 8802 var INTLFormat = Intl.NumberFormat('es-MX',{style:'decimal'}); 8803 var cont = 0; 8804 if(data.AREAS_GEOGRAFICAS_DEPENDIENTES !== null || parametros.areaGeografica.length === 5){ 8805 8806 var LIArea = LI.cloneNode(true); 8807 var SpanAreaTitulo = SPAN.cloneNode(true); 8808 SpanAreaTitulo.style.display = "inline-block"; 8809 SpanAreaTitulo.style.width = "40%"; 8810 SpanAreaTitulo.className = "cls-block-loc"; 8811 SpanAreaTitulo.style.fontWeight = "bold"; 8812 SpanAreaTitulo.style.padding = "0px 10px 0px 0px"; 8813 8814 var SpanAreaValor = SPAN.cloneNode(true); 8815 SpanAreaValor.style.display = "inline-block"; 8816 SpanAreaValor.style.width = "60%"; 8817 if(parametros.areaGeografica === "09"){ 8818 SpanAreaTitulo.innerHTML = (idioma === "en" ? "Territorial districts:" : "Demarcaciones territoriales:"); 8819 } else { 8820 SpanAreaTitulo.innerHTML = ((parametros.areaGeografica === "0" || parametros.areaGeografica === "00") ? (idioma === "en" ? "Federal entities:" : "Entidades federativas:") : ((parametros.areaGeografica.length === 5)? (idioma === "en" ? "Locations:" : "Localidades:") : (idioma === "en" ? "Municipalities:" : "Municipios:"))); 8821 // SpanAreaTitulo.innerHTML = ((parametros.areaGeografica == "0700" || parametros.areaGeografica == "00") ? (idioma === "en" ? "Federal entities:" : "Entidades federativas:") : ((parametros.areaGeografica.length === 5)? (idioma === "en" ? "Locations:" : "Localidades:") : (idioma === "en" ? "Municipalities:" : "Municipios:"))); 8822 } 8823 LIArea.appendChild(SpanAreaTitulo); 8824 // Finalmente se queda el conteo de municipios (por llamado a api inegi.org.mx/app/api/cateml/json/ageo/01) 8825 // Uso de: data.HIJOS) 8826 // Fecha: 02-03-2023 8827 SpanAreaValor.innerHTML= INTLFormat.format(data.HIJOS); 8828 LIArea.appendChild(SpanAreaValor); 8829 UL.appendChild(LIArea); 8830 } 8831 8832 // para nacional coloca las demarcaciones territoriales 8833 // agregado: 18-04-2023 8834 // ID:687 8835 if(parametros.areaGeografica === "0" || parametros.areaGeografica === "00"){ 8836 // if(parametros.areaGeografica === "0700" || parametros.areaGeografica === "00"){ 8837 var LIArea = LI.cloneNode(true); 8838 var SpanAreaTitulo = SPAN.cloneNode(true); 8839 SpanAreaTitulo.style.display = "inline-block"; 8840 SpanAreaTitulo.style.width = "40%"; 8841 SpanAreaTitulo.className = "cls-block-loc"; 8842 SpanAreaTitulo.style.fontWeight = "bold"; 8843 SpanAreaTitulo.style.padding = "0px 10px 0px 0px"; 8844 8845 var SpanAreaValor = SPAN.cloneNode(true); 8846 SpanAreaValor.style.display = "inline-block"; 8847 SpanAreaValor.style.width = "60%"; 8848 SpanAreaTitulo.innerHTML = (idioma === "en" ? "Municipalities and territorial districts:" : "Municipios y demarcaciones territoriales:"); 8849 LIArea.appendChild(SpanAreaTitulo); 8850 // Finalmente se queda el conteo de municipios (por llamado a api inegi.org.mx/app/api/cateml/json/ageo/01) 8851 // Uso de: data.HIJOS) 8852 // Fecha: 02-03-2023 8853 SpanAreaValor.innerHTML= INTLFormat.format(data.demarcaciones_territoriales); 8854 LIArea.appendChild(SpanAreaValor); 8855 UL.appendChild(LIArea); 8856 } 8857 // Fecha de referencia de actualizacion del catalogo unico de claves geoestadisticas 8858 // Agregado: 28-04-2023 8859 if(data.referencia_actualizacion !== undefined) { 8860 var LIReferencia = LI.cloneNode(true); 8861 var SpanReferenciaTitulo = SPAN.cloneNode(true); 8862 SpanReferenciaTitulo.style.display = "inline-block"; 8863 SpanReferenciaTitulo.style.width = "40%"; 8864 SpanReferenciaTitulo.className = "cls-block-loc"; 8865 SpanReferenciaTitulo.style.fontWeight = "bold"; 8866 SpanReferenciaTitulo.style.padding = "0px 10px 0px 0px"; 8867 8868 var SpanReferenciaValor = SPAN.cloneNode(true); 8869 SpanReferenciaValor.style.display = "inline-block"; 8870 SpanReferenciaValor.style.width = "60%"; 8871 SpanReferenciaTitulo.innerHTML = (idioma === "en" ? "Upd
8871ate reference:" : "Referencia de actualización:"); 8872 LIReferencia.appendChild(SpanReferenciaTitulo); 8873 8874 SpanReferenciaValor.innerHTML= data.referencia_actualizacion.split(" ")[0]; 8875 LIReferencia.appendChild(SpanReferenciaValor); 8876 UL.appendChild(LIReferencia); 8877 } 8878 8879 document.getElementById("divDatos" + parametros.contenedorCuadro).appendChild(UL); 8880 8881 $(window).resize(function(e){ 8882 var widthWindow = document.body.clientWidth; 8883 if(widthWindow >= 480){ 8884 $("#ulCardLocalidad_" + parametros.contenedorCuadro).find(".cls-block-loc").css({width:"40%"}); 8885 8886 } else { 8887 $("#ulCardLocalidad_" + parametros.contenedorCuadro).find(".cls-block-loc").css({width:"auto"}); 8888 8889 } 8890 }) 8891 var widthWindow = document.body.clientWidth; 8892 if(widthWindow >= 510){ 8893 $("#ulCardLocalidad_" + parametros.contenedorCuadro).find(".cls-block-loc").css({width:"40%"}); 8894 8895 } else { 8896 $("#ulCardLocalidad_" + parametros.contenedorCuadro).find(".cls-block-loc").css({width:"auto"}); 8897 8898 } 8899 $("#tableStat" + parametros.contenedorCuadro).hide(); 8900 $("#TableEspacio" + parametros.contenedorCuadro).hide(); 8901 } 8902 /*=========================================================== 8903 = FICHA RESUMEN #13 V2 GRID EXTJS - 10 Jul 2019 = 8904 = MEXICO EN CIFRAS - V2 API metodo CatalogoAreaGeograficav2/ = 8905 ===========================================================*/ 8906 function DibujaCuadroTipo13V2_New(data, parametros) { 8907 // console.log("demo") 8908 //armar tabla 8909 //traduccion 8910 var idioma = parametros.idioma; 8911 var titulo1 = "Capital", titulo2 = "Coordenadas"; titulo3 = "Entidades &area", titulo4 = "Superficie"; 8912 if (idioma === "en") { 8913 titulo2 = "Coordinates"; 8914 titulo3 = "Number of &area"; 8915 titulo4 = "Area"; 8916 } 8917 var TABLE = document.createElement("table"); 8918 TABLE.className = 'table table-bordered table-hover table-responsive'; 8919 var tBody = (!BROWSER.ie()) ? TABLE.createTBody() : document.createElement("tbody"); 8920 var tRowBody = (!BROWSER.ie()) ? tBody.insertRow() : document.createElement("tr"); 8921 8922 var styleHeaders = 'background:#ddd;font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",Helvetica,Arial,"Lucida Grande",sans-serif;border:1px solid #fff;border-top:1px solid #c8c8c8;border-left:1px solid #c8c8c8;border-right:1px solid #c8c8c8;'; 8923 var styleGeneral = "border:1px solid #c8c8c8;"; 8924 //cel Capital 8925 //var cellHeader = document.createElement("th"); 8926 //cellHeader.innerHTML = titulo1; 8927 //cellHeader.style = styleHeaders; 8928 //tRowBody.appendChild(cellHeader); 8929 //var cell = document.createElement("td"); 8930 //cell.style = styleGeneral; 8931 //cell.innerHTML = data.Nombre; 8932 //tRowBody.appendChild(cell); 8933 8934 if (BROWSER.ie) { 8935 tBody.appendChild(tRowBody); 8936 TABLE.appendChild(tBody) 8937 } 8938 8939 //cel Coordenadas 8940 if(data.hasOwnProperty("coordinates")){ 8941 8942 var cellHeader = document.createElement("th"); 8943 cellHeader.innerHTML = titulo2; 8944 tRowBody.appendChild(cellHeader); 8945 cellHeader.style = styleHeaders + "border-bottom:1px solid #c8c8c8;border-top:1px solid #c8c8c8;"; 8946 var cell = document.createElement("td"); 8947 var latitud = "", longitud = ""; 8948 if(data.coordinates.length == 2){ 8949 var lat1_grados = data.coordinates[0][0].split("°")[0]; 8950 var lat1_decimales = (data.coordinates[0][0].split("'")[0]).split("°")[1]; 8951 var lat1_minutos = data.coordinates[0][0].split("'")[1]; 8952 var lat2_grados = data.coordinates[1][0].split("°")[0]; 8953 var lat2_decimales = (data.coordinates[1][0].split("'")[0]).split("°")[1]; 8954 var lat2_minutos = data.coordinates[1][0].split("'")[1]; 8955 8956 var lon1_grados = data.coordinates[0][1].split("°")[0]; 8957 var lon1_decimales = (data.coordinates[0][1].split("'")[0]).split("°")[1]; 8958 var lon1_minutos = data.coordinates[0][1].split("'")[1]; 8959 var lon2_grados = data.coordinates[1][1].split("°")[0]; 8960 var lon2_decimales = (data.coordinates[1][1].split("'")[0]).split("°")[1]; 8961 var lon2_minutos = data.coordinates[1][1].split("'")[1]; 8962 var styleSpan = "text-align:right;display:inline-block;"; 8963 var styleSpan2 = "text-align:right;display:inline-block;"; 8964 //idioma textos 8965 var latitudTitle = (parametros.idioma === "en")? "Latitude" : "Latitud"; 8966 var longitudTitle = (parametros.idioma === "en")? "Longitude" : "Longitud"; 8967 latitud = '<span style="width:80px;display:inline-block;">'+ latitudTitle +'</span><span style="' + styleSpan + '">' + lat1_grados + '°</span><span style="' + styleSpan + '">' + lat1_decimales + '\'</span><span style="' + styleSpan2 + '">' + lat1_minutos + '</span> <span style="' + styleSpan + '">' + lat2_grados + '°</span><span style="' + styleSpan + '">' + lat2_decimales + '\'</span><span style="' + styleSpan2 + '">' + lat2_minutos +'</span>'; 8968 longitud = '<span style="width:80px;display:inline-block;">'+ longitudTitle +'</span><span style="' + styleSpan + '">' + lon1_grados + '°</span><span style="' + styleSpan + '">' + lon1_decimales + '\'</span><span style="' + styleSpan2 + '">' + lon1_minutos + '</span> <span style="' + styleSpan + '">' + lon2_grados + '°</span><span style="' + styleSpan + '">' + lon2_decimales + '\'</span><span style="' + styleSpan2 + '">' + lon2_minutos + '</span>'; 8969 // latitud = "Latitud " + data.coordinates[0][0] + " " + data.coordinates[1][0]; 8970 // longitud = "Longitud "+data.coordinates[0][1].replace("-", "") + " " + data.coordinates[1][1].replace("-", ""); 8971 } else { 8972 latitud = data.coordinates[0] + " " + data.coordinates[1].replace("-",""); 8973 8974 } 8975 //var latitud = parseFloat(data.LATITUD_GRADOS1).toFixed(0) + "° " + (data.LATITUD_MINUTOS1 == "" || data.LATITUD_MINUTOS1 == "0" ? "" : data.LATITUD_MINUTOS1 + "'") + " " + parseFloat(data.LATITUD_GRADOS2).toFixed(0) + "° " + (data.LATITUD_MINUTOS2 == "" || data.LATITUD_MINUTOS2 == '0' ? "" : data.LATITUD_MINUTOS2 + "'") + " N"; 8976 // var longitud = parseFloat(data.LONGITUD_GRADOS1).toFixed(0) + "° " + (data.LONGITUD_MINUTOS1 == "" || data.LONGITUD_MINUTOS1 == "0" ? "" : data.LONGITUD_MINUTOS1 + "'") + " " + parseFloat(data.LONGITUD_GRADOS2).toFixed(0) + "° " + (data.LONGITUD_MINUTOS2 == "" || data.LONGITUD_MINUTOS2 == '0' ? "" : data.LONGITUD_MINUTOS2 + "'") + " O"; 8977 cell.innerHTML = longitud + "<br />" + latitud; 8978 tRowBody.appendChild(cell); 8979 } 8980 var tRowBody = (!BROWSER.ie()) ? tBody.insertRow() : document.createElement("tr"); 8981 8982 //cel Numero de municipios / entidades 8983 // if(data.TOTAL_AREAS !== null){ 8984 var cont = 0; 8985 if(data.AREAS_GEOGRAFICAS_DEPENDIENTES !== null){ 8986 var cellHeader = document.createElement("th"); 8987 //var area = (parametros.areaGeografica == "00" ? (idioma === "en" ? "States" : "Federativas") : (idioma === "en" ? "Municipalities" : "Municipios")); 8988 var area = ((parametros.areaGeografica == "0700" || parametros.areaGeografica == "00") ? (idioma === "en" ? "Federal Entities" : "Entidades Federativas") : (idioma === "en" ? "Municipalities" : "Municipios")); 8989 //cellHeader.innerHTML = titulo3.replace("&area", area); 8990 cellHeader.innerHTML = area; 8991 cellHeader.style = styleHeaders + "border-bottom:1px solid #c8c8c8;"; 8992 tRowBody.appendChild(cellHeader); 8993 8994 var cell = document.createElement("td"); 8995 //cell.setAttribute("colspan", 3) 8996 cell.style.width = "50%"; 8997 // cell.innerHTML = data.TOTAL_AREAS; 8998 $.each(data.AREAS_GEOGRAFICAS_DEPENDIENTES, function (key, mpio) { 8999 /* if (mpio.UBICACION_GEOGRAFICA !== 2516 && 9000 mpio.UBICACION_GEOGRAFICA !== 2594 && 9001 mpio.UBICACION_GEOGRAFICA !== 2884 && 9002 mpio.UBICACION_GEOGRAFICA !== 3274) { */ 9003 ++cont; 9004 // } 9005 }); 9006 cell.innerHTML = data.AREAS_GEOGRAFICAS_DEPENDIENTES.length > 0 ? cont : 32; 9007 tRowBody.appendChild(cell); 9008 } 9009 /* if (data.AREAS_GEOGRAFICAS_DEPENDIENTES != null && data.AREAS_GEOGRAFICAS_DEPENDIENTES.length > 1) { 9010 var cont = 0; 9011 $.each(data.AREAS_GEOGRAFICAS_DEPENDIENTES, function (key, mpio) { 9012 if (mpio.UBICACION_GEOGRAFICA !== "2516" && 9013 mpio.UBICACION_GEOGRAFICA !== "2594" && 9014 mpio.UBICACION_GEOGRAFICA !== "2884" && 9015 mpio.UBICACION_GEOGRAFICA !== "3274") { 9016 ++cont; 9017 } 9018 }); 9019 cell.innerHTML = data.AREAS_GEOGRAFICAS_DEPENDIENTES.length > 1 ? cont : 32; 9020 tRowBody.appendChild(cell); 9021 } */ 9022 9023 // estilos 9024 if (BROWSER.ie) { 9025 tBody.appendChild(tRowBody); 9026 TABLE.appendChild(tBody) 9027 } 9028 TABLE.style.width = "99.9%"; 9029 9030 document.getElementById("divDatos" + parametros.contenedorCuadro).appendChild(TABLE); 9031 $("#tableStat" + parametros.contenedorCuadro).hide(); 9032 $("#TableEspacio" + parametros.contenedorCuadro).hide(); 9033 } 9034 9035 /*=========================================================== 9036 = CUADRO #15 GRID EXTJS - 5 Abril 2018 = 9037 = Ultima modificación: 5-4-2018 = 9038 ===========================================================*/ 9039 function DibujaCuadroTipo15_New(data, parametros) { 9040 var idioma = parametros.idioma; 9041 //var aMeses = ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', '
9041Septiembre', 'Octubre', 'Noviembre', 'Diciembre']; 9042 //if (idioma === "en") aMeses = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'Octuber', 'November', 'December']; 9043 var datos_tabla = []; 9044 var columnas_tabla = []; 9045 var aDefaultColumnas = ["Periodo"]; 9046 var dataValores = data.value; 9047 var agrupamiento = parametros.agrupamiento = parametros.indicadorValorCompuesto.agrupamiento; 9048 var dataPeriodos = data.dimension.periods.category; 9049 var totalPeriodos = data.dimension.periods.category.index.length; 9050 9051 9052 //ARMADO DE COLUMNAS DEL GRID ///////////////////////////////////////////////////////////////// 9053 9054 // Columna principal titulo 9055 for (var x = 0; x < aDefaultColumnas.length; x++) { 9056 columnas_tabla.push({ 9057 title: aDefaultColumnas[x], 9058 width: 250, 9059 dataIndex: "col" + x, 9060 fix: false, 9061 }); 9062 } 9063 // ARMADO DE COLUMNAS MESES Y LA ANUAL 9064 var aPeriodos = dataPeriodos.label;
9065 var aAniosRenglones = []; 9066 var aMesesColumnas = []; 9067 var colIncremento = columnas_tabla.length; 9068 $.each(aPeriodos, function (index, periodo) { 9069 var anio = periodo.Value.split("/")[0]; 9070 if (aAniosRenglones.indexOf(anio) === -1) { 9071 aAniosRenglones.push(anio); 9072 } 9073 9074 var mes = periodo.Value.split("/")[1]; 9075 if (aMesesColumnas.indexOf(mes) === -1) { 9076 var mesNombre = (mes === "13") ? "Anual" : oMESES.getMesNombreCorto(parseInt(mes), parametros.idioma);//aMeses[parseInt(mes) - 1]; 9077 aMesesColumnas.push(mes); 9078 columnas_tabla.push({ 9079 title: mesNombre, 9080 width: 250, 9081 dataIndex: "col" + colIncremento, 9082 fix: false, 9083 }); 9084 colIncremento++; 9085 } 9086 aPeriodos[index].anio = anio; 9087 aPeriodos[index].mes = mes; 9088 }); 9089 // ARMADO DE DATOS DE COLUMNA 0 (NOMBRES DE PERIODOS / AÃOS) 9090 var valor = ""; 9091 $.each(aAniosRenglones, function (index, anio) { 9092 var objRenglon = JSON.parse('{"' + "col0" + '":"' + anio + '"}'); 9093 var col = 1; 9094 9095 $.each(aMesesColumnas, function (indexP, mes) { 9096 valor = "-"; 9097 var oPeriodo = dataPeriodos.label.filter(function (o) { 9098 return o.Value === (anio + "/" + mes); 9099 })[0]; 9100 //if (oPeriodo !== undefined) { 9101 // console.log(oPeriodo); 9102 // var posicion = dataPeriodos.index.indexOf(oPeriodo.Key); 9103 // console.log(posicion); 9104 // valor = dataValores[posicion]; 9105 // console.log("-------") 9106 //} 9107 //$.extend(objRenglon, JSON.parse('{"' + "col" + parseInt(col) + '":"' + valor + '"}')); 9108 col++; 9109 }); 9110 datos_tabla.push(objRenglon); 9111 }); 9112 9113 //aIndicadores = parametros.indicadorValorCompuesto.grupos; 9114 //var dataIndicadores = data.dimension.indicator.category.label; // arreglo de indicadores, respuesta de peticion 9115 //var dataPeriodos = data.dimension.periods.category; // periodos en index y label 9116 ////titulo indicadores primera columna del cuadro 9117 //if (parametros.indicadorValorCompuesto.grupos) { 9118 // var textoAgrupamiento = ""; 9119 // $.each(aIndicadores, function (key, item) { 9120 // var objRenglon = item; 9121 // if (item.indicadores == undefined) { 9122 // textoAgrupamiento = item.titulo; 9123 // } 9124 // $.extend(objRenglon, JSON.parse('{"' + "col0" + '":"' + item.titulo + '"}')); 9125 // datos_tabla.push(objRenglon); 9126 // }); 9127 //} else { 9128 // $.each(dataIndicadores, function (key, item) { 9129 // var objRenglon = item; 9130 // $.extend(objRenglon, JSON.parse('{"' + "col0" + '":"' + item.Value + '"}')); 9131 // datos_tabla.push(objRenglon); 9132 // }); 9133 //} 9134 /// LLENADO DE DATOS (RENGLONES INDICADOR-VALOR) 9135 /// ----> LLenado de indicadores_valores de la matriz de valores usando formula JSON-Stat 9136 var indicadores_valores = []; 9137 9138 9139 9140 9141 //parametros.grid_configuracion.hide_columns = []; 9142 // envuelve notas en un box 9143 $("#divFuentes" + parametros.contenedorCuadro).css({ "backgroundColor": "#eaf3f3", "padding": "6px 8px", "margin": "6px 1px 6px 1px", "borderRadius": "2px", "display": "none" }); 9144 //$("#divFuentes" + parametros.contenedorCuadro).addClass("collapsed"); 9145 9146 //adding event toggle notas/fuentes //////////////////////////////////////////////////////////////////////////////// 9147 var toggleTarget = "divFuentes" + parametros.contenedorCuadro; 9148 var aToggle = document.createElement("a"); 9149 aToggle.innerHTML = "Mostrar Notas / Fuentes"; 9150 aToggle.id = "linkToggle_" + parametros.contenedorCuadro; 9151 aToggle.style = "cursor:pointer;"; 9152 $(aToggle).insertBefore("#" + toggleTarget); 9153 $(document).ready(function () { 9154 $("#" + aToggle.id).click(function () { 9155 var linkEl = this; 9156 $("#divFuentes" + parametros.contenedorCuadro).slideToggle("fast", function () { 9157 if ($(this).is(":visible")) { 9158 $(linkEl).html("Ocultar Notas / Fuentes"); 9159 } else { 9160 $(linkEl).html("Mostrar Notas / Fuentes"); 9161 } 9162 }); 9163 }); 9164 }); 9165 9166 //Recibir configuracion de altura y estilos del grid 9167 var TABLA = new GridComponent(); 9168 TABLA.render(columnas_tabla, datos_tabla, parametros); 9169 } 9170 /*=========================================================== 9171 = FICHA INFORMACON LOCALIDAD #16 HTML PURO - 14 Diciembre 2018 = 9172 ===========================================================*/ 9173 function DibujaCuadroTipo16(data, parametros) { 9174 var aTitulos = []; 9175 var idioma = parametros.idioma; 9176 if (idioma == "es") { 9177 aTitulos = ["Identificación geoestadÃstica", "Clave de Identidad federativa", "Entidad federativa", "Clave de municipio", "Municipio", "Clave de localidad", "Localidad", "Tipificación", "Tipo de Localidad habitada", "Es cabecera municipal", "Cabecera municipal", "Ubicación geográfica", "Latitud norte", "Latitud oeste", "Altitud"]; 9178 } else { 9179 aTitulos = ["Geostatistical identification", "State Entity Code", "State Entity", "Municipality code", "Municipality", "Code Locality", "Locality", "Typification", "Type of inhabited locality", "It is municipal head", "Municipal head", "Geographic location", "North Latitude", "West Latitude", "Altitude"]; 9180 } 9181 9182 var TABLE = document.createElement("table"); 9183 TABLE.className = 'table table-bordered table-responsive'; 9184 var tBody = (!BROWSER.ie()) ? TABLE.createTBody() : document.createElement("tbody"); 9185 var tRowBody = (!BROWSER.ie()) ? tBody.insertRow() : document.createElement("tr"); 9186 9187 var styleHeaders = 'width:30%;background:#f1f1f1;font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",Helvetica,Arial,"Lucida Grande",sans-serif;border:1px solid #fff;border-top:1px solid #c8c8c8;border-left:1px solid #c8c8c8;border-right:1px solid #c8c8c8;'; 9188 var styleGeneral = "border:1px solid #c8c8c8;"; 9189 var styleCaptions = 'background:#ddd;font-weight:bold;'; 9190 9191 if (BROWSER.ie) { 9192 tBody.appendChild(tRowBody); 9193 TABLE.appendChild(tBody) 9194 } 9195 9196 //CAPTION 1 9197 var cellCaption = document.createElement("th"); 9198 cellCaption.innerHTML = aTitulos[0]; 9199 cellCaption.colSpan = 3; 9200 cellCaption.style = styleCaptions; 9201 tRowBody.appendChild(cellCaption); 9202 9203 // ROW DATA 1 9204 var tRowBody = (!BROWSER.ie()) ? tBody.insertRow() : document.createElement("tr"); 9205 var cellHeader = document.createElement("th"); 9206 cellHeader.innerHTML = aTitulos[1]; 9207 cellHeader.colSpan = 1; 9208 tRowBody.appendChild(cellHeader); 9209 9210 cellHeader.style = styleHeaders + "border-bottom:1px solid #c8c8c8;border-top:1px solid #c8c8c8;"; 9211 var cell = document.createElement("td"); 9212 cell.innerHTML = "Valor"; 9213 tRowBody.appendChild(cell); 9214 9215 if (BROWSER.ie) { 9216 tBody.appendChild(tRowBody); 9217 TABLE.appendChild(tBody) 9218 } 9219 9220 // ROW DATA 2 9221 var tRowBody = (!BROWSER.ie()) ? tBody.insertRow() : document.createElement("tr"); 9222 var cellHeader = document.createElement("th"); 9223 cellHeader.innerHTML = aTitulos[2]; 9224 cellHeader.colSpan = 1; 9225 tRowBody.appendChild(cellHeader); 9226 9227 cellHeader.style = styleHeaders + "border-bottom:1px solid #c8c8c8;border-top:1px solid #c8c8c8;"; 9228 var cell = document.createElement("td"); 9229 cell.innerHTML = "Valor"; 9230 tRowBody.appendChild(cell); 9231 9232 if (BROWSER.ie) { 9233 tBody.appendChild(tRowBody); 9234 TABLE.appendChild(tBody) 9235 } 9236 // ROW DATA 3 9237 var tRowBody = (!BROWSER.ie()) ? tBody.insertRow() : document.createElement("tr"); 9238 var cellHeader = document.createElement("th"); 9239 cellHeader.innerHTML = aTitulos[3]; 9240 cellHeader.colSpan = 1; 9241 tRowBody.appendChild(cellHeader); 9242 9243 cellHeader.style = styleHeaders + "border-bottom:1px solid #c8c8c8;border-top:1px solid #c8c8c8;"; 9244 var cell = document.createElement("td"); 9245 cell.innerHTML = "Valor"; 9246 tRowBody.appendChild(cell); 9247 9248 if (BROWSER.ie) { 9249 tBody.appendChild(tRowBody); 9250 TABLE.appendChild(tBody) 9251 } 9252 9253 // ROW DATA 4 9254 var tRowBody = (!BROWSER.ie()) ? tBody.insertRow() : document.createElement("tr"); 9255 var cellHeader = document.createElement("th"); 9256 cellHeader.innerHTML = aTitulos[4]; 9257 cellHeader.colSpan = 1; 9258 tRowBody.appendChild(cellHeader); 9259 9260 cellHeader.style = styleHeaders + "border-bottom:1px solid #c8c8c8;border-top:1px solid #c8c8c8;"; 9261 var cell = document.createElement("td"); 9262 cell.innerHTML = "Valor"; 9263 tRowBody.appendChild(cell); 9264 9265 if (BROWSER.ie) { 9266 tBody.appendChild(tRowBody); 9267 TABLE.appendChild(tBody) 9268 } 9269 9270 // ROW DATA 5 9271 var tRowBody = (!BROWSER.ie()) ? tBody.insertRow() : document.createElement("tr"); 9272 var cellHeader = document.createElement("th"); 9273 cellHeader.innerHTML = aTitulos[5]; 9274 cellHeader.colSpan = 1; 9275 tRowBody.appendChild(cellHeader); 9276 9277 cellHeader.style = styleHeaders + "border-bottom:1px solid #c8c8c8;border-top:1px solid #c8c8c8;"; 9278 var cell = document.createElement("td"); 9279 cell.innerHTML = "Valor"; 9280 tRowBody.appendChild(cell); 9281 9282 if (BROWSER.ie) { 9283 tBody.appendChild(tRowBody); 9284 TABLE.appendChild(tBody) 9285 } 9286 9287 // ROW DATA 5 9288 var tRowBody = (!BROWSER.ie()) ? tBody.insertRow() : document.createElement("tr"); 9289 var cellHeader = document.createElement("th"); 9290 cellHeader.innerHTML = aTitulos[6]; 9291 cellHeader.colSpan = 1; 9292 tRowBody.appendChild(cellHeader); 9293 9294 cellHeader.style = styleHeaders + "border-bottom:1px solid #c8c8c8;border-top:1px solid #c8c8c8;"; 9295 var cell = document.createElement("td"); 9296 cell.innerHTML = "Valor"; 9297 tRowBody.appendChild(cell); 9298 9299 if (BROWSER.ie) { 9300 tBody.appendChild(tRowBody); 9301 TABLE.appendChild(tBody) 9302 } 9303 9304 //CAPTION 2 9305 var tRowBody = (!BROWSER.ie()) ? tBody.insertRow() : document.createElement("tr"); 9306 var cellCaption = document.createElement("th"); 9307 cellCaption.innerHTML = aTitulos[7]; 9308 cellCaption.colSpan = 3; 9309 cellCaption.style = styleCaptions; 9310 tRowBody.appendChild(cellCaption); 9311 if (BROWSER.ie) { 9312 tBody.appendChild(tRowBody); 9313 TABLE.appendChild(tBody) 9314 } 9315 9316 // ROW DATA 6 9317 var tRowBody = (!BROWSER.ie()) ? tBody.insertRow() : document.createElement("tr"); 9318 var cellHeader = document.createElement("th"); 9319 cellHeader.innerHTML = aTitulos[8]; 9320 cellHeader.colSpan = 1; 9321 tRowBody.appendChild(cellHeader); 9322 9323 cellHeader.style = styleHeaders + "border-bottom:1px solid #c8c8c8;border-top:1px solid #c8c8c8;"; 9324 var cell = document.createElement("td"); 9325 cell.innerHTML = "Valor"; 9326 tRowBody.appendChild(cell); 9327 9328 if (BROWSER.ie) { 9329 tBody.appendChild(tRowBody); 9330 TABLE.appendChild(tBody) 9331 } 9332 9333 // ROW DATA 7 9334 var tRowBody = (!BROWSER.ie()) ? tBody.insertRow() : document.createElement("tr"); 9335 var cellHeader = document.createElement("th"); 9336 cellHeader.innerHTML = aTitulos[9]; 9337 cellHeader.colSpan = 1; 9338 tRowBody.appendChild(cellHeader); 9339 9340 cellHeader.style = styleHeaders + "border-bottom:1px solid #c8c8c8;border-top:1px solid #c8c8c8;"; 9341 var cell = document.createElement("td"); 9342 cell.innerHTML = "Valor"; 9343 tRowBody.appendChild(cell); 9344 9345 if (BROWSER.ie) { 9346 tBody.appendChild(tRowBody); 9347 TABLE.appendChild(tBody) 9348 } 9349 // ROW DATA 8 9350 var tRowBody = (!BROWSER.ie()) ? tBody.insertRow() : document.createElement("tr"); 9351 var cellHeader = document.createElement("th"); 9352 cellHeader.innerHTML = aTitulos[10]; 9353 cellHeader.colSpan = 1; 9354 tRowBody.appendChild(cellHeader); 9355 9356 cellHeader.style = styleHeaders + "border-bottom:1px solid #c8c8c8;border-top:1px solid #c8c8c8;"; 9357 var cell = document.createElement("td"); 9358 cell.innerHTML = "Valor"; 9359 tRowBody.appendChild(cell); 9360 9361 if (BROWSER.ie) { 9362 tBody.appendChild(tRowBody); 9363 TABLE.appendChild(tBody) 9364 } 9365 9366 //CAPTION 3 9367 var tRowBody = (!BROWSER.ie()) ? tBody.insertRow() : document.createElement("tr"); 9368 var cellCaption = document.createElement("th"); 9369 cel
9369lCaption.innerHTML = aTitulos[11]; 9370 cellCaption.colSpan = 3; 9371 cellCaption.style = styleCaptions; 9372 tRowBody.appendChild(cellCaption); 9373 if (BROWSER.ie) { 9374 tBody.appendChild(tRowBody); 9375 TABLE.appendChild(tBody) 9376 } 9377 9378 // ROW DATA 9 9379 var tRowBody = (!BROWSER.ie()) ? tBody.insertRow() : document.createElement("tr"); 9380 var cellHeader = document.createElement("th"); 9381 cellHeader.innerHTML = aTitulos[12]; 9382 cellHeader.colSpan = 1; 9383 tRowBody.appendChild(cellHeader); 9384 9385 cellHeader.style = styleHeaders + "border-bottom:1px solid #c8c8c8;border-top:1px solid #c8c8c8;"; 9386 var cell = document.createElement("td"); 9387 cell.innerHTML = "Valor"; 9388 tRowBody.appendChild(cell); 9389 9390 if (BROWSER.ie) { 9391 tBody.appendChild(tRowBody); 9392 TABLE.appendChild(tBody) 9393 } 9394 9395 // ROW DATA 10 9396 var tRowBody = (!BROWSER.ie()) ? tBody.insertRow() : document.createElement("tr"); 9397 var cellHeader = document.createElement("th"); 9398 cellHeader.innerHTML = aTitulos[13]; 9399 cellHeader.colSpan = 1; 9400 tRowBody.appendChild(cellHeader); 9401 9402 cellHeader.style = styleHeaders + "border-bottom:1px solid #c8c8c8;border-top:1px solid #c8c8c8;"; 9403 var cell = document.createElement("td"); 9404 cell.innerHTML = "Valor"; 9405 tRowBody.appendChild(cell); 9406 9407 if (BROWSER.ie) { 9408 tBody.appendChild(tRowBody); 9409 TABLE.appendChild(tBody) 9410 } 9411 9412 // ROW DATA 11 9413 var tRowBody = (!BROWSER.ie()) ? tBody.insertRow() : document.createElement("tr"); 9414 var cellHeader = document.createElement("th"); 9415 cellHeader.innerHTML = aTitulos[14]; 9416 cellHeader.colSpan = 1; 9417 tRowBody.appendChild(cellHeader); 9418 9419 cellHeader.style = styleHeaders + "border-bottom:1px solid #c8c8c8;border-top:1px solid #c8c8c8;"; 9420 var cell = document.createElement("td"); 9421 cell.innerHTML = "Valor"; 9422 tRowBody.appendChild(cell); 9423 9424 if (BROWSER.ie) { 9425 tBody.appendChild(tRowBody); 9426 TABLE.appendChild(tBody) 9427 } 9428 9429 9430 document.getElementById("divDatos" + parametros.contenedorCuadro).appendChild(TABLE); 9431 $("#tableStat" + parametros.contenedorCuadro).hide(); 9432 $("#TableEspacio" + parametros.contenedorCuadro).hide(); 9433 } 9434 /// <summary> Dibuja cuadro tipo 17, un indicador 2 ultimos periodos por todas las areas geograficas. </summary> 9435 /// 9436 /// <remarks> robert, 28/03/2019. </remarks> 9437 /// 9438 /// Cuadro 17 por entidades federativas en vertical y agrupados por periodo (cada periodo contiene las columnas de los 4 trimestres) 9439 /// 9440 function DibujaCuadroTipo17(data, parametros) { 9441 9442 var tablaInterna = ""; 9443 var arrayLenght = data.length; 9444 var arrayPeriodos = data.dimension.periods.category.label; 9445 var tituloPrincipal = (parametros.tituloColumnaPrincipal != "") ? parametros.tituloColumnaPrincipal : (parametros.idioma === "en"? "Entity" : "Entidad"); 9446 var cabeceras = DibujaCabecera(tituloPrincipal, arrayPeriodos.length, 2, parametros.contenedorCuadro, parametros); 9447 var indiceColumna = 0; 9448 var frecuencia = data.dimension.freq.category.label[0]["Value"]; 9449 var arrPeriodos = []; 9450 $.each(arrayPeriodos, function (key, val) { 9451 var valorColumna = PintaTitulosColumnas(parametros.titulosColumnas, val.Value, indiceColumna++); 9452 var anio = val.Value.split("/")[0]; 9453 if (arrPeriodos.indexOf(anio) === -1) { 9454 arrPeriodos.push(anio); 9455 } 9456 //var mes = val.Value.split("/")[1]; 9457 var formatoValor = oMESES.getFormatoPeriodo(val.Value, frecuencia, parametros.idioma, 2); 9458 cabeceras += '<th class ="Th" bgcolor="#DDD" id="tdAnio' + parametros.contenedorCuadro + val.Value + '" data-periodo="' + val.Value + '">' + formatoValor + '</td>'; 9459 }); 9460 var tPeriodos = arrPeriodos.length 9461 for(var x = 1; x <= tPeriodos; x++) { 9462 var idReplace = "valPeriodo" + x + "_" + parametros.contenedorCuadro; 9463 cabeceras = cabeceras.replace(idReplace, arrPeriodos[x-1]
9463); 9464 } 9465 cabeceras += "</tr>"; 9466 tablaInterna += cabeceras; 9467 var datos = data.value; 9468 var indexValue = 0; 9469 var renglones = ""; 9470 var arrayIndicadores = data.dimension.indicator.category.label; 9471 var arrayAreas = data.dimension.state.category.label; 9472 var totalColumnas = data.dimension.periods.category.label; 9473 9474 for (var i = 0; i < arrayAreas.length; i++) { 9475 var bgColor = "white"; 9476 if (i % 2 == 0) { 9477 var bgColor = "#EFEFEF"; 9478 } 9479 renglones += '<tr><td class="TdInicio notranslate" >' + arrayAreas[i].Value.toString().split("-")[0] + '</td>'; 9480 9481 $.each(arrayPeriodos, function (key, val) { 9482 if (datos[indexValue] === "") { 9483 9484 renglones += '<td class="Td" > --- </td>'; 9485 } else { 9486 renglones += '<td class="Td" >' + datos[indexValue] + '</td>'; 9487 } 9488 indexValue++; 9489 }); 9490 9491 renglones += '</tr>'; 9492 } 9493 tablaInterna += renglones; 9494 ReemplazaTabla(tablaInterna, parametros); 9495 9496 } 9497 9498 /** 9499 * LOCALIDADES VERSION UN ARRAY COMPLETO ORDENADO V4 9500 * Presentacon en pestañas navegable y secciones colapsables 9501 * Cuadro #18 - Datos de la localidad (metodo: datosLocalidadTema/) 9502 * parametro que acompaña a este cuadro: 9503 * - mvloc = modoVisualizacionLocalidades valores:[1,2] 9504 * @param data 9505 * @param parametros 9506 */ 9507 /* const dataLocalidades = [ 9508 { 9509 "descripcion": "Clave de entidad federativa", 9510 "valor": "01", 9511 "tema": 1, 9512 "desc_tema": "Información localidad" 9513 }, 9514 { 9515 "descripcion": "Entidad federativa", 9516 "valor": "Aguascalientes", 9517 "tema": 1, 9518 "desc_tema": "Información localidad" 9519 }, 9520 { 9521 "descripcion": "Clave de municipio", 9522 "valor": "003", 9523 "tema": 1, 9524 "desc_tema": "Información localidad" 9525 }, 9526 { 9527 "descripcion": "Municipio", 9528 "valor": "Calvillo", 9529 "tema": 1, 9530 "desc_tema": "Información localidad" 9531 }, 9532 { 9533 "descripcion": "Clave de localidad", 9534 "valor": "0289", 9535 "tema": 1, 9536 "desc_tema": "Información localidad" 9537 }, 9538 { 9539 "descripcion": "Localidad", 9540 "valor": "El Llano (El Llano de San Rafael)", 9541 "tema": 1, 9542 "desc_tema": "Información localidad" 9543 }, 9544 { 9545 "descripcion": "Frijol", 9546 "valor": "No", 9547 "tema": 8, 9548 "desc_tema": "Abasto de alimentos" 9549 }, 9550 { 9551 "descripcion": "MaÃz", 9552 "valor": "No", 9553 "tema": 8, 9554 "desc_tema": "Abasto de alimentos" 9555 }, 9556 { 9557 "descripcion": "Tortillas", 9558 "valor": "No", 9559 "tema": 8, 9560 "desc_tema": "Abasto de alimentos" 9561 }, 9562 { 9563 "descripcion": "Pan", 9564 "valor": "No", 9565 "tema": 8, 9566 "desc_tema": "Abasto de alimentos" 9567 }, 9568 { 9569 "descripcion": "Arroz", 9570 "valor": "No", 9571 "tema": 8, 9572 "desc_tema": "Abasto de alimentos" 9573 }, 9574 { 9575 "descripcion": "Leche", 9576 "valor": "No", 9577 "tema": 8, 9578 "desc_tema": "Abasto de alimentos" 9579 }, 9580 { 9581 "descripcion": "Huevo", 9582 "valor": "No", 9583 "tema": 8, 9584 "desc_tema": "Abasto de alimentos" 9585 }, 9586 { 9587 "descripcion": "Carne de res o de puerco", 9588 "valor": "No", 9589 "tema": 8, 9590 "desc_tema": "Abasto de alimentos" 9591 }, 9592 { 9593 "descripcion": "Pollo", 9594 "valor": "No", 9595 "tema": 8, 9596 "desc_tema": "Abasto de alimentos" 9597 }, 9598 { 9599 "descripcion": "Pescado fresco", 9600 "valor": "No", 9601 "tema": 8, 9602 "desc_tema": "Abasto de alimentos" 9603 }, 9604 { 9605 "descripcion": "Frutas y verduras", 9606 "valor": "No", 9607 "tema": 8, 9608 "desc_tema": "Abasto de alimentos" 9609 }, 9610 { 9611 "descripcion": "Lugar de trabajo de los habitantes", 9612 "valor": "En otra localidad", 9613 "tema": 13, 9614 "desc_tema": "Actividad económica" 9615 }, 9616 { 9617 "descripcion": "Cultivo de algún producto para venta", 9618 "valor": "*", 9619 "tema": 13, 9620 "desc_tema": "Actividad económica" 9621 }, 9622 { 9623 "descripcion": "Cultivo de algún producto para consumo familiar", 9624 "valor": "*", 9625 "tema": 13, 9626 "desc_tema": "Actividad económica" 9627 }, 9628 { 9629 "descripcion": "No se realiza la actividad de cultivo de algún producto ", 9630 "valor": "SÃ", 9631 "tema": 13, 9632 "desc_tema": "Actividad económica" 9633 }, 9634 { 9635 "descripcion": "CrÃa o explotación de animales para venta", 9636 "valor": "*", 9637 "tema": 13, 9638 "desc_tema": "Actividad económica" 9639 }, 9640 { 9641 "descripcion": "CrÃa o explotación de animales para consumo familiar", 9642 "valor": "SÃ", 9643 "tema": 13, 9644 "desc_tema": "Actividad económica" 9645 }, 9646 { 9647 "descripcion": "No se realiza la actividad de crÃa o explotación de animales", 9648 "valor": "*", 9649 "tema": 13, 9650 "desc_tema": "Actividad económica" 9651 }, 9652 { 9653 "descripcion": "Explotación de minas para venta", 9654 "valor": "*", 9655 "tema": 13, 9656 "desc_tema": "Actividad económica" 9657 }, 9658 { 9659 "descripcion": "Explotación de minas para consumo familiar", 9660 "valor": "*", 9661 "tema": 13, 9662 "desc_tema": "Actividad económica" 9663 }, 9664 { 9665 "descripcion": "No se realiza la actividad de explotación de minas para consumo familiar", 9666 "valor": "SÃ", 9667 "tema": 13, 9668 "desc_tema": "Actividad económica" 9669 }, 9670 { 9671 "descripcion": "Cortan o siembran árboles para venta", 9672 "valor": "*", 9673 "tema": 13, 9674 "desc_tema": "Actividad económica" 9675 }, 9676 { 9677 "descripcion": "Cortan o siembran árboles para consumo familiar", 9678 "valor": "*", 9679 "tema": 13, 9680 "desc_tema": "Actividad económica" 9681 }, 9682 { 9683 "descripcion": "No se realiza la actividad de cortar o sembrar árboles", 9684 "valor": "SÃ", 9685 "tema": 13, 9686 "desc_tema": "Actividad económica" 9687 }, 9688 { 9689 "descripcion": "Recolección de hierbas o plantas para venta", 9690 "valor": "*", 9691 "tema": 13, 9692 "desc_tema": "Actividad económica" 9693 }, 9694 { 9695 "descripcion": "Recolección de hierbas o plantas para consumo familiar", 9696 "valor": "*", 9697 "tema": 13, 9698 "desc_tema": "Actividad económica" 9699 }, 9700 { 9701 "descripcion": "No se realiza la actividad de recolección de hierbas o plantas ", 9702 "valor": "SÃ", 9703 "tema": 13, 9704 "desc_tema": "Actividad económica" 9705 }, 9706 { 9707 "descripcion": "Pesca o caza de animales para venta", 9708 "valor": "*", 9709 "tema": 13, 9710 "desc_tema": "Actividad económica" 9711 }, 9712 { 9713 "descripcion": "Pesca o caza de animales para consumo familiar", 9714 "valor": "*", 9715 "tema": 13, 9716 "desc_tema": "Actividad económica" 9717 }, 9718 { 9719 "descripcion": "No se realiza la actividad de pesca o caza de animales", 9720 "valor": "SÃ", 9721 "tema": 13, 9722 "desc_tema": "Actividad económica" 9723 }, 9724 { 9725 "descripcion": "Elaboración de artesanÃas para venta", 9726 "valor": "*", 9727 "tema": 13, 9728 "desc_tema": "Actividad económica" 9729 }, 9730 { 9731 "descripcion": "Elaboración de artesanÃas para consumo familiar", 9732 "valor": "*", 9733 "tema": 13, 9734 "desc_tema": "Actividad económica" 9735 }, 9736 { 9737 "descripcion": "No se realiza la actividad de elaboración de artesanÃas", 9738 "valor": "SÃ", 9739 "tema": 13, 9740 "desc_tema": "Actividad económica" 9741 }, 9742 { 9743 "descripcion": "Se realiza otra actividad económica para venta", 9744 "valor": "*", 9745 "tema": 13, 9746 "desc_tema": "Actividad económica" 9747 }, 9748 { 9749 "descripcion": "Se realiza otra actividad económica para consumo familiar", 9750 "valor": "*", 9751 "tema": 13, 9752 "desc_tema": "Actividad económica" 9753 }, 9754 { 9755 "descripcion": "No se realiza otra actividad económica", 9756 "valor": "SÃ", 9757 "tema": 13, 9758 "desc_tema": "Actividad económica" 9759 }, 9760 { 9761 "descripcion": "Actividades económicas (otra descripción) - Clave", 9762 "valor": "*", 9763 "tema": 13, 9764 "desc_tema": "Actividad económica" 9765 }, 9766 { 9767 "descripcion": "Principal actividad económica", 9768 "valor": "Crianza de animales", 9769 "tema": 13, 9770 "desc_tema": "Actividad económica" 9771 }, 9772 { 9773 "descripcion": "Principal actividad económica (Otra) - Clave", 9774 "valor": "*", 9775 "tema": 13, 9776 "desc_tema": "Actividad económica" 9777 }, 9778 { 9779 "descripcion": "Producto principal - Clave1", 9780 "valor": "Conejo", 9781 "tema": 13, 9782 "desc_tema": "Actividad económica" 9783 }, 9784 { 9785 "descripcion": "Producto principal - Clave2", 9786 "valor": "Pollo", 9787 "tema": 13, 9788 "desc_tema": "Actividad económica" 9789 }, 9790 { 9791 "descripcion": "Producto principal - Clave3", 9792 "valor": "*", 9793 "tema": 13, 9794 "desc_tema": "Actividad económica" 9795 }, 9796 { 9797 "descripcion": "Abastecimiento de agua entubada", 9798 "valor": "No hay agua entubada", 9799 "tema": 4, 9800 "desc_tema": "Agua entubada" 9801 }, 9802 { 9803 "descripcion": "Cobertura de agua entubada", 9804 "valor": "*", 9805 "tema": 4, 9806 "desc_tema": "Agua entubada" 9807 }, 9808 { 9809 "descripcion": "Fuente de abastecimiento de agua entubada", 9810 "valor": "*", 9811 "tema": 4, 9812 "desc_tema": "Agua entubada" 9813 }, 9814 { 9815 "descripcion": "Fuente de abastecimiento de agua entubada (otra fuente) - Clave", 9816 "valor": "*", 9817 "tema": 4, 9818 "desc_tema": "Agua entubada" 9819 }, 9820 { 9821 "descripcion": "Disponibilidad de alumbrado público en la localidad", 9822 "valor": "SÃ", 9823 "tema": 6, 9824 "desc_tema": "Alumbrado público" 9825 }, 9826 { 9827 "descripcion": "Fuente de energÃa eléctrica del alumbrado", 9828 "valor": "Comisión Federal de Electricidad (CFE)", 9829 "tema": 6, 9830 "desc_tema": "Alumbrado público" 9831 }, 9832 { 9833 "descripcion": "Fuente de energÃa eléctrica del alumbrado (otra) - Clave", 9834 "valor": "*", 9835 "tema": 6, 9836 "desc_tema": "Alumbrado público" 9837 }, 9838 { 9839 "descripcion": "Cobertura del alumbrado público", 9840 "valor": "toda la localidad?", 9841 "tema": 6, 9842 "desc_tema": "Alumbrado público" 9843 }, 9844 { 9845 "descripcion": "Autoridades municipales", 9846 "valor": "6", 9847 "tema": 14, 9848 "desc_tema": "Aspectos sociales" 9849 }, 9850 { 9851 "descripcion": "Autoridades municipales (otra) - Clave", 9852 "valor": "*", 9853 "tema": 14, 9854 "desc_tema": "Aspectos sociales" 9855 }, 9856 { 9857 "descripcion": "Comisariado ejidal o de bienes comunales", 9858 "valor": "No", 9859 "tema": 14, 9860 "desc_tema": "Aspectos sociales" 9861 }, 9862 { 9863 "descripcion": "Autoridad indÃgena", 9864 "valor": "No", 9865 "tema": 14, 9866 "desc_tema": "Aspectos sociales" 9867 }, 9868 { 9869 "descripcion": "Autoridad tradicional", 9870 "valor": "No", 9871 "tema": 14, 9872 "desc_tema": "Aspectos sociales" 9873 }, 9874 { 9875 "descripcion": "PolicÃa local", 9876 "valor": "No", 9877 "tema": 14, 9878 "desc_tema": "Aspectos sociales" 9879 }, 9880 { 9881 "descripcion": "Conflictos sociales por propiedad de la tierra", 9882 "valor": "No", 9883 "tema": 14, 9884 "desc_tema": "Aspectos sociales" 9885 }, 9886 { 9887 "descripcion": "Conflictos sociales por preferencias religiosas", 9888 "valor": "No", 9889 "tema": 14, 9890 "desc_tema": "Aspectos sociales" 9891 }, 9892 { 9893 "descripcion": "Conflictos sociales por preferencias electorales", 9894 "valor": "No", 9895 "tema": 14, 9896 "desc_tema": "Aspectos sociales" 9897 }, 9898 { 9899 "descripcion": "Conflictos sociales por delincuencia", 9900 "valor": "No", 9901 "tema": 14, 9902 "desc_tema": "Aspectos sociales" 9903 }, 9904 { 9905 "descripcion": "Conflictos sociales por alcoholismo y drogadicción", 9906 "valor": "No", 9907 "tema": 14, 9908 "desc_tema": "Aspectos sociales" 9909 }, 9910 { 9911 "descripcion": "Otros conflictos sociales", 9912 "valor": "No", 9913 "tema": 14, 9914 "desc_tema": "Aspectos sociales" 9915 }, 9916 { 9917 "descripcion": "Conflictos sociales (otro descripción) - clave", 9918 "valor": "*", 9919 "tema": 14, 9920 "desc_tema": "Aspectos sociales" 9921 }, 9922 { 9923 "descripcion": "Daños por sequÃa", 9924 "valor": "No", 9925 "tema": 14, 9926 "desc_tema": "Aspectos sociales" 9927 }, 9928 { 9929 "descripcion": "Daños por helada o granizada", 9930 "valor": "No", 9931 "tema": 14, 9932 "desc_tema": "Aspectos sociales" 9933 }, 9934 { 9935 "descripcion": "Daños por inundación o desbordamiento", 9936 "valor": "No", 9937 "tema": 14, 9938 "desc_tema": "Aspectos sociales" 9939
9939 }, 9940 { 9941 "descripcion": "Daños por incendio forestal", 9942 "valor": "No", 9943 "tema": 14, 9944 "desc_tema": "Aspectos sociales" 9945 }, 9946 { 9947 "descripcion": "Daños por temblor", 9948 "valor": "No", 9949 "tema": 14, 9950 "desc_tema": "Aspectos sociales" 9951 }, 9952 { 9953 "descripcion": "Daños por ciclón o huracán", 9954 "valor": "No", 9955 "tema": 14, 9956 "desc_tema": "Aspectos sociales" 9957 }, 9958 { 9959 "descripcion": "Daños por otro fenómeno natural", 9960 "valor": "No", 9961 "tema": 14, 9962 "desc_tema": "Aspectos sociales" 9963 }, 9964 { 9965 "descripcion": "Daños por fenómenos naturales (otro descripción) - clave", 9966 "valor": "*", 9967 "tema": 14, 9968 "desc_tema": "Aspectos sociales" 9969 }, 9970 { 9971 "descripcion": "Contaminación por humos, polvos o gases provenientes de industrias", 9972 "valor": "No", 9973 "tema": 14, 9974 "desc_tema": "Aspectos sociales" 9975 }, 9976 { 9977 "descripcion": "Contaminación por humos o gases de vehÃculos de motor", 9978 "valor": "No", 9979 "tema": 14, 9980 "desc_tema": "Aspectos sociales" 9981 }, 9982 { 9983 "descripcion": "Contaminación por malos olores provenientes de granjas, empresas vecinas o de un basurero", 9984 "valor": "No", 9985 "tema": 14, 9986 "desc_tema": "Aspectos sociales" 9987 }, 9988 { 9989 "descripcion": "Contaminación por música o ruido excesivo en los alrededores", 9990 "valor": "No", 9991 "tema": 14, 9992 "desc_tema": "Aspectos sociales" 9993 }, 9994 { 9995 "descripcion": "Contaminación por lÃquidos industriales o combustible del transporte acuático en rÃos, lagos, canales o estanques", 9996 "valor": "No", 9997 "tema": 14, 9998 "desc_tema": "Aspectos sociales" 9999 }, 10000 { 10001 "descripcion": "Contaminación por aguas negras del drenaje depositadas en rÃos, lagos, canales o estanques", 10002 "valor": "No", 10003 "tema": 14, 10004 "desc_tema": "Aspectos sociales" 10005 }, 10006 { 10007 "descripcion": "Contaminación por basura acumulada en rÃos, lagos, canales o estanques", 10008 "valor": "No", 10009 "tema": 14, 10010 "desc_tema": "Aspectos sociales" 10011 }, 10012 { 10013 "descripcion": "Contaminación por lÃquidos industriales, pesticidas o aguas negras depositadas en terrenos", 10014 "valor": "No", 10015 "tema": 14, 10016 "desc_tema": "Aspectos sociales" 10017 }, 10018 { 10019 "descripcion": "Contaminación por basura acumulada en terrenos al aire libre", 10020 "valor": "No", 10021 "tema": 14, 10022 "desc_tema": "Aspectos sociales" 10023 }, 10024 { 10025 "descripcion": "Contaminación por plagas en cultivos, árboles o animales", 10026 "valor": "No", 10027 "tema": 14, 10028 "desc_tema": "Aspectos sociales" 10029 }, 10030 { 10031 "descripcion": "Otro tipo de contaminación", 10032 "valor": "No", 10033 "tema": 14, 10034 "desc_tema": "Aspectos sociales" 10035 }, 10036 { 10037 "descripcion": "Riesgos por contaminación ambiental (otro desc.) - clave", 10038 "valor": "*", 10039 "tema": 14, 10040 "desc_tema": "Aspectos sociales" 10041 }, 10042 { 10043 "descripcion": "Condición de habla de alguna lengua indÃgena en la localidad", 10044 "valor": "No", 10045 "tema": 14, 10046 "desc_tema": "Aspectos sociales" 10047 }, 10048 { 10049 "descripcion": "Nombre de la lengua indÃgena", 10050 "valor": "*", 10051 "tema": 14, 10052 "desc_tema": "Aspectos sociales" 10053 }, 10054 { 10055 "descripcion": "Uso de la lengua indÃgena en la escuela", 10056 "valor": "*", 10057 "tema": 14, 10058 "desc_tema": "Aspectos sociales" 10059 }, 10060 { 10061 "descripcion": "Uso de la lengua indÃgena en la iglesia", 10062 "valor": "*", 10063 "tema": 14, 10064 "desc_tema": "Aspectos sociales" 10065 }, 10066 { 10067 "descripcion": "Uso de la lengua indÃgena en festividades", 10068 "valor": "*", 10069 "tema": 14, 10070 "desc_tema": "Aspectos sociales" 10071 }, 10072 { 10073 "descripcion": "Uso de la lengua indÃgena para comerciar", 10074 "valor": "*", 10075 "tema": 14, 10076 "desc_tema": "Aspectos sociales" 10077 }, 10078 {
10079 "descripcion": "Uso de la lengua indÃgena con familiares y vecinos", 10080 "valor": "*", 10081 "tema": 14, 10082 "desc_tema": "Aspectos sociales" 10083 }, 10084 { 10085 "descripcion": "Uso de la lengua indÃgena en el hogar", 10086 "valor": "*", 10087 "tema": 14, 10088 "desc_tema": "Aspectos sociales" 10089 }, 10090 { 10091 "descripcion": "Problema principal declarado por el informante", 10092 "valor": "Carencia de agua y mala calidad", 10093 "tema": 14, 10094 "desc_tema": "Aspectos sociales" 10095 }, 10096 { 10097 "descripcion": "Problema principal declarado por el informante (otro descripción) - Clave", 10098 "valor": "*", 10099 "tema": 14, 10100 "desc_tema": "Aspectos sociales" 10101 }, 10102 { 10103 "descripcion": "CaracterÃsticas de la población", 10104 "valor": "Total", 10105 "tema": 4, 10106 "desc_tema": "CaracterÃsticas de la población" 10107 }, 10108 { 10109 "descripcion": "De 0 a 14 años <sup>b/</sup>", 10110 "valor": "5", 10111 "tema": 4, 10112 "desc_tema": "CaracterÃsticas de la población" 10113 }, 10114 { 10115 "descripcion": "De 15 a 29 años <sup>a/</sup>", 10116 "valor": "36", 10117 "tema": 4, 10118 "desc_tema": "CaracterÃsticas de la población" 10119 }, 10120 { 10121 "descripcion": "De 15 a 64 años <sup>b/</sup>", 10122 "valor": "18", 10123 "tema": 4, 10124 "desc_tema": "CaracterÃsticas de la población" 10125 }, 10126 { 10127 "descripcion": "De 30 a 59 años <sup>a/</sup>", 10128 "valor": "30", 10129 "tema": 4, 10130 "desc_tema": "CaracterÃsticas de la población" 10131 }, 10132 { 10133 "descripcion": "De 60 y más años <sup>b/</sup>", 10134 "valor": "2", 10135 "tema": 4, 10136 "desc_tema": "CaracterÃsticas de la población" 10137 }, 10138 { 10139 "descripcion": "De 65 y más años <sup>b/</sup>", 10140 "valor": "1", 10141 "tema": 4, 10142 "desc_tema": "CaracterÃsticas de la población" 10143 }, 10144 { 10145 "descripcion": "Con discapacidad <sup>b/</sup>", 10146 "valor": "1", 10147 "tema": 4, 10148 "desc_tema": "CaracterÃsticas de la población" 10149 }, 10150 { 10151 "descripcion": "NOTA", 10152 "valor": "Fecha de actualización: <sup>a/</sup>2015 <br>       <sup>b/</sup>2020<br>Fuente(s): <br> Censos y Conteos de Población y Vivienda 2010 <br> Encuesta Intercensal 2015 <br> Censos y Conteos de Población y Vivienda 2020", 10153 "tema": 4, 10154 "desc_tema": "CaracterÃsticas de la población" 10155 }, 10156 { 10157 "descripcion": "CaracterÃsticas de las viviendas", 10158 "valor": "Total", 10159 "tema": 3, 10160 "desc_tema": "CaracterÃsticas de las viviendas" 10161 }, 10162 { 10163 "descripcion": "Particulares <sup>b/</sup>", 10164 "valor": "6", 10165 "tema": 3, 10166 "desc_tema": "CaracterÃsticas de las viviendas" 10167 }, 10168 { 10169 "descripcion": "Habitadas <sup>b/</sup>", 10170 "valor": "6", 10171 "tema": 3, 10172 "desc_tema": "CaracterÃsticas de las viviendas" 10173 }, 10174 { 10175 "descripcion": "Particulares habitadas <sup>b/</sup>", 10176 "valor": "6", 10177 "tema": 3, 10178 "desc_tema": "CaracterÃsticas de las viviendas" 10179 }, 10180 { 10181 "descripcion": "Particulares no habitadas <sup>a/</sup>", 10182 "valor": "0", 10183 "tema": 3, 10184 "desc_tema": "CaracterÃsticas de las viviendas" 10185 }, 10186 { 10187 "descripcion": "Con recubrimiento de piso <sup>b/</sup>", 10188 "valor": "6", 10189 "tema": 3, 10190 "desc_tema": "CaracterÃsticas de las viviendas" 10191 }, 10192 { 10193 "descripcion": "Con energÃa eléctrica <sup>b/</sup>", 10194 "valor": "6", 10195 "tema": 3, 10196 "desc_tema": "CaracterÃsticas de las viviendas" 10197 }, 10198 { 10199 "descripcion": "Con agua entubada <sup>b/</sup>", 10200 "valor": "4", 10201 "tema": 3, 10202 "desc_tema": "CaracterÃsticas de las viviendas" 10203 }, 10204 { 10205 "descripcion": "Con drenaje <sup>b/</sup>", 10206 "valor": "6", 10207 "tema": 3, 10208 "desc_tema": "CaracterÃsticas de las viviendas" 10209 }, 10210 { 10211 "descripcion": "Con servicio sanitario <sup>b/</sup>", 10212 "valor": "6", 10213 "tema": 3, 10214 "desc_tema": "CaracterÃsticas de las viviendas" 10215 }, 10216 { 10217 "descripcion": "Con 3 o más ocupantes por cuarto <sup>a/</sup>", 10218 "valor": "18", 10219 "tema": 3, 10220 "desc_tema": "CaracterÃsticas de las viviendas" 10221 }, 10222 { 10223 "descripcion": "NOTA", 10224 "valor": "Fecha de actualización: <sup>a/</sup>2015 <br>       <sup>b/</sup>2020<br>Fuente(s): <br> Censos y Conteos de Población y Vivienda 2010 <br> Encuesta Intercensal 2015 <br> Censos y Conteos de Población y Vivienda 2020", 10225 "tema": 3, 10226 "desc_tema": "CaracterÃsticas de las viviendas" 10227 }, 10228 { 10229 "descripcion": "Comedor comunitario del gobierno del estado", 10230 "valor": "No", 10231 "tema": 10, 10232 "desc_tema": "Comedor comunitario" 10233 }, 10234 { 10235 "descripcion": "Comedor comunitario del gobierno municipal", 10236 "valor": "No", 10237 "tema": 10, 10238 "desc_tema": "Comedor comunitario" 10239 }, 10240 { 10241 "descripcion": "Comedor comunitario de organización no gubernamental", 10242 "valor": "No", 10243 "tema": 10, 10244 "desc_tema": "Comedor comunitario" 10245 }, 10246 { 10247 "descripcion": "Otros servicios de comedor popular o público", 10248 "valor": "No", 10249 "tema": 10, 10250 "desc_tema": "Comedor comunitario" 10251 }, 10252 { 10253 "descripcion": "Comedor comunitario (otros descripción) - Clave", 10254 "valor": "*", 10255 "tema": 10, 10256 "desc_tema": "Comedor comunitario" 10257 }, 10258 { 10259 "descripcion": "Clave de identificación geográfica", 10260 "valor": " (0100302890064800)", 10261 "tema": 1, 10262 "desc_tema": "Identificación geoestadÃstica" 10263 }, 10264 { 10265 "descripcion": "Clave de entidad federativa", 10266 "valor": "1", 10267 "tema": 1, 10268 "desc_tema": "Identificación geoestadÃstica" 10269 }, 10270 { 10271 "descripcion": "Nombre de la entidad federativa", 10272 "valor": "Aguascalientes", 10273 "tema": 1, 10274 "desc_tema": "Identificación geoestadÃstica" 10275 }, 10276 { 10277 "descripcion": "Clave de municipio o demarcación territorial", 10278 "valor": "3", 10279 "tema": 1, 10280 "desc_tema": "Identificación geoestadÃstica" 10281 }, 10282 { 10283 "descripcion": "Municipio o demarcación territorial", 10284 "valor": "Calvillo", 10285 "tema": 1, 10286 "desc_tema": "Identificación geoestadÃstica" 10287 }, 10288 { 10289 "descripcion": "Clave de localidad", 10290 "valor": "289",
10291 "tema": 1, 10292 "desc_tema": "Identificación geoestadÃstica" 10293 }, 10294 { 10295 "descripcion": "Nombre de localidad", 10296 "valor": "El Llano (El Llano de San Rafael)", 10297 "tema": 1, 10298 "desc_tema": "Identificación geoestadÃstica" 10299 }, 10300 { 10301 "descripcion": "AGEB", 10302 "valor": "64", 10303 "tema": 1, 10304 "desc_tema": "Identificación geoestadÃstica" 10305 }, 10306 { 10307 "descripcion": "Clave de la Cabecera Municipal", 10308 "valor": "No", 10309 "tema": 1, 10310 "desc_tema": "Identificación geoestadÃstica" 10311 }, 10312 { 10313 "descripcion": "Nombre de la Cabecera Municipal", 10314 "valor": "Calvillo (01 003 0001)", 10315 "tema": 1, 10316 "desc_tema": "Identificación geoestadÃstica" 10317 }, 10318 { 10319 "descripcion": "Longitud", 10320 "valor": "102°42'41.048 W", 10321 "tema": 1, 10322 "desc_tema": "Identificación geoestadÃstica" 10323 }, 10324 { 10325 "descripcion": "Latitud", 10326 "valor": "21°51'06.609 N", 10327 "tema": 1, 10328 "desc_tema": "Identificación geoestadÃstica" 10329 }, 10330 { 10331 "descripcion": "Altitud", 10332 "valor": "1,652 metros sobre el nivel del mar", 10333 "tema": 1, 10334 "desc_tema": "Identificación geoestadÃstica" 10335 }, 10336 { 10337 "descripcion": "NOTA", 10338 "valor": "Sin dato debido a que se levantó cuestionario parcial", 10339 "tema": 1, 10340 "desc_tema": "Identificación geoestadÃstica" 10341 }, 10342 { 10343 "descripcion": "Condición de amanzanamiento", 10344 "valor": "No", 10345 "tema": 7, 10346 "desc_tema": "Infraestructura y equipamiento" 10347 }, 10348 { 10349 "descripcion": "Recubrimiento en calles", 10350 "valor": "*", 10351 "tema": 7, 10352 "desc_tema": "Infraestructura y equipamiento" 10353 }, 10354 { 10355 "descripcion": "Banquetas en las vialidades", 10356 "valor": "*", 10357 "tema": 7, 10358 "desc_tema": "Infraestructura y equipamiento" 10359 }, 10360 { 10361 "descripcion": "Plaza o jardÃn público", 10362 "valor": "No", 10363 "tema": 7, 10364 "desc_tema": "Infraestructura y equipamiento" 10365 }, 10366 { 10367 "descripcion": "Cancha deportiva", 10368 "valor": "No", 10369 "tema": 7, 10370 "desc_tema": "Infraestructura y equipamiento" 10371 }, 10372 { 10373 "descripcion": "Parque con juegos infantiles", 10374 "valor": "No", 10375 "tema": 7, 10376 "desc_tema": "Infraestructura y equipamiento" 10377 }, 10378 { 10379 "descripcion": "Biblioteca", 10380 "valor": "No", 10381 "tema": 7, 10382 "desc_tema": "Infraestructura y equipamiento" 10383 }, 10384 { 10385 "descripcion": "Casa de la cultura", 10386 "valor": "No", 10387 "tema": 7, 10388 "desc_tema": "Infraestructura y equipamiento" 10389 }, 10390 { 10391 "descripcion": "Salón de usos múltiples", 10392 "valor": "No", 10393 "tema": 7, 10394 "desc_tema": "Infraestructura y equipamiento" 10395 }, 10396 { 10397 "descripcion": "Disponibilidad de red pública de drenaje en la localidad", 10398 "valor": "No", 10399 "tema": 5, 10400 "desc_tema": "Saneamiento" 10401 }, 10402 { 10403 "descripcion": "Cobertura del drenaje público", 10404 "valor": "*", 10405 "tema": 5, 10406 "desc_tema": "Saneamiento" 10407 }, 10408 { 10409 "descripcion": "Destino del drenaje", 10410 "valor": "*", 10411 "tema": 5, 10412 "desc_tema": "Saneamiento" 10413 }, 10414 { 10415 "descripcion": "Destino del drenaje (otro) - Clave", 10416 "valor": "*", 10417 "tema": 5, 10418 "desc_tema": "Saneamiento" 10419 }, 10420 { 10421 "descripcion": "Limpieza de áreas públicas", 10422 "valor": "No", 10423 "tema": 5, 10424 "desc_tema": "Saneamiento" 10425 }, 10426 { 10427 "descripcion": "Recolección de basura domiciliaria", 10428 "valor": "SÃ", 10429 "tema": 5, 10430 "desc_tema": "Saneamiento" 10431 }, 10432 { 10433 "descripcion": "Destino de la basura", 10434 "valor": "Centro de transferencia o acopio", 10435 "tema": 5, 10436 "desc_tema": "Saneamiento" 10437 }, 10438 { 10439 "descripcion": "Destino de la basura (otro) - Clave", 10440 "valor": "*", 10441 "tema": 5, 10442 "desc_tema": "Saneamiento" 10443 }, 10444 { 10445 "descripcion": "Tianguis", 10446 "valor": "No", 10447 "tema": 9, 10448 "desc_tema": "Servicios de comercio" 10449 }, 10450 { 10451 "descripcion": "Tienda de abarrotes", 10452 "valor": "No", 10453 "tema": 9, 10454 "desc_tema": "Servicios de comercio" 10455 }, 10456 { 10457 "descripcion": "Tienda SEGALMEX-DICONSA", 10458 "valor": "No", 10459 "tema": 9, 10460 "desc_tema": "Servicios de comercio" 10461 }, 10462 { 10463 "descripcion": "LecherÃa SEGALMEX-LICONSA", 10464 "valor": "No", 10465 "tema": 9, 10466 "desc_tema": "Servicios de comercio" 10467 }, 10468 { 10469 "descripcion": "Farmacia", 10470 "valor": "No", 10471 "tema": 9, 10472 "desc_tema": "Servicios de comercio" 10473 }, 10474 { 10475 "descripcion": "PapelerÃa", 10476 "valor": "No", 10477 "tema": 9, 10478 "desc_tema": "Servicios de comercio" 10479 }, 10480 { 10481 "descripcion": "FerreterÃa o tlapalerÃa", 10482 "valor": "No", 10483 "tema": 9, 10484 "desc_tema": "Servicios de comercio" 10485 }, 10486 { 10487 "descripcion": "Tienda de ropa o calzado", 10488 "valor": "No", 10489 "tema": 9, 10490 "desc_tema": "Servicios de comercio" 10491 }, 10492 { 10493 "descripcion": "Tienda de loza o utensilios caseros", 10494 "valor": "No", 10495 "tema": 9, 10496 "desc_tema": "Servicios de comercio" 10497 }, 10498 { 10499 "descripcion": "Tienda de muebles o aparatos electrodomésticos", 10500 "valor": "No", 10501 "tema": 9, 10502 "desc_tema": "Servicios de comercio" 10503 }, 10504 { 10505 "descripcion": "Tienda de materiales de construcción", 10506 "valor": "No", 10507 "tema": 9, 10508 "desc_tema": "Servicios de comercio" 10509 }, 10510 { 10511 "descripcion": "Venta de gas", 10512 "valor": "No", 10513 "tema": 9, 10514 "desc_tema": "Servicios de comercio" 10515 }, 10516 { 10517 "descripcion": "ClÃnica o centro de salud", 10518 "valor": "No", 10519 "tema": 11, 10520 "desc_tema": "Servicios o agentes de salud" 10521 }, 10522 { 10523 "descripcion": "Consultorio o médico particular",
10524 "valor": "No", 10525 "tema": 11, 10526 "desc_tema": "Servicios o agentes de salud" 10527 }, 10528 { 10529 "descripcion": "Partera(o) o comadrón(a)", 10530 "valor": "No", 10531 "tema": 11, 10532 "desc_tema": "Servicios o agentes de salud" 10533 }, 10534 { 10535 "descripcion": "Brigada móvil o caravana de salud", 10536 "valor": "No", 10537 "tema": 11, 10538 "desc_tema": "Servicios o agentes de salud" 10539 }, 10540 { 10541 "descripcion": "Promotor(a) de salud", 10542 "valor": "No", 10543 "tema": 11, 10544 "desc_tema": "Servicios o agentes de salud" 10545 }, 10546 { 10547 "descripcion": "Curandera(o)", 10548 "valor": "No", 10549 "tema": 11, 10550 "desc_tema": "Servicios o agentes de salud" 10551 }, 10552 { 10553 "descripcion": "Teléfono público", 10554 "valor": "No", 10555 "tema": 12, 10556 "desc_tema": "Telecomunicaciones" 10557 }, 10558 { 10559 "descripcion": "Internet público", 10560 "valor": "No", 10561 "tema": 12, 10562 "desc_tema": "Telecomunicaciones" 10563 }, 10564 { 10565 "descripcion": "Teléfono celular", 10566 "valor": "SÃ", 10567 "tema": 12, 10568 "desc_tema": "Telecomunicaciones" 10569 }, 10570 { 10571 "descripcion": "Televisión abierta", 10572 "valor": "SÃ", 10573 "tema": 12, 10574 "desc_tema": "Telecomunicaciones" 10575 }, 10576 { 10577 "descripcion": "Televisión de paga", 10578 "valor": "SÃ", 10579 "tema": 12, 10580 "desc_tema": "Telecomunicaciones" 10581 }, 10582 { 10583 "descripcion": "Servicio de envÃo y recepción de dinero", 10584 "valor": "No", 10585 "tema": 12, 10586 "desc_tema": "Telecomunicaciones" 10587 }, 10588 { 10589 "descripcion": "Tipo de localidad habitada", 10590 "valor": "CaserÃo", 10591 "tema": 2, 10592 "desc_tema": "Tipificación" 10593 }, 10594 { 10595 "descripcion": "Tipo de localidad habitada (otro tipo) - Clave", 10596 "valor": "*", 10597 "tema": 2, 10598 "desc_tema": "Tipificación" 10599 }, 10600 { 10601 "descripcion": "Transporte público", 10602 "valor": "No", 10603 "tema": 3, 10604 "desc_tema": "Transporte público" 10605 }, 10606 { 10607 "descripcion": "Autobús o camión", 10608 "valor": "No", 10609 "tema": 3, 10610 "desc_tema": "Transporte público" 10611 }, 10612 { 10613 "descripcion": "Micro, combi o taxi colectivo", 10614 "valor": "*", 10615 "tema": 3, 10616 "desc_tema": "Transporte público" 10617 }, 10618 { 10619 "descripcion": "Camión de redilas o troca", 10620 "valor": "*", 10621 "tema": 3, 10622 "desc_tema": "Transporte público" 10623 }, 10624 { 10625 "descripcion": "Taxi libre o de sitio", 10626 "valor": "*", 10627 "tema": 3, 10628 "desc_tema": "Transporte público" 10629 }, 10630 { 10631 "descripcion": "Bicitaxi o mototaxi", 10632 "valor": "*", 10633 "tema": 3, 10634 "desc_tema": "Transporte público" 10635 }, 10636 { 10637 "descripcion": "Barco, panga o lancha colectiva", 10638 "valor": "*", 10639 "tema": 3, 10640 "desc_tema": "Transporte público" 10641 }, 10642 { 10643 "descripcion": "Autobús o camión directo a la cabecera municipal", 10644 "valor": "*", 10645 "tema": 3, 10646 "desc_tema": "Transporte público" 10647 }, 10648 { 10649 "descripcion": "Micro, combi o taxi colectivo directo a la cabecera municipal", 10650 "valor": "*", 10651 "tema": 3, 10652 "desc_tema": "Transporte público" 10653 }, 10654 { 10655 "descripcion": "Camión de redilas o troca directo a la cabecera municipal", 10656 "valor": "*", 10657 "tema": 3, 10658 "desc_tema": "Transporte público" 10659 }, 10660 { 10661 "descripcion": "Taxi libre o sitio directo a la cabecera municipal", 10662 "valor": "*", 10663 "tema": 3, 10664 "desc_tema": "Transporte público" 10665 }, 10666 { 10667 "descripcion": "Bicitaxi o mototaxi directo a la cabecera municipal", 10668 "valor": "*", 10669 "tema": 3, 10670 "desc_tema": "Transporte público" 10671 }, 10672 { 10673 "descripcion": "Barco, panga o lancha colectiva directo a la cabecera municipal", 10674 "valor": "*", 10675 "tema": 3, 10676 "desc_tema": "Transporte público" 10677 }, 10678 { 10679 "descripcion": "Transporte público principal a la cabecera municipal", 10680 "valor": "*", 10681 "tema": 3, 10682 "desc_tema": "Transporte público" 10683 }, 10684 { 10685 "descripcion": "Frecuencia de salidas del transporte a la cabecera municipal", 10686 "valor": "*", 10687 "tema": 3, 10688 "desc_tema": "Transporte público" 10689 }, 10690 { 10691 "descripcion": "Tiempo de traslado a la cabecera municipal (minutos)", 10692 "valor": "*", 10693 "tema": 3, 10694 "desc_tema": "Transporte público" 10695 } 10696 ]; */ 10697 10698 function DibujaCuadroTipo18_LocalidadesV4(data, parametros) { 10699 var contenedorCuadro = parametros.contenedorCuadro; 10700 if ($("#divDatos" + contenedorCuadro)) { 10701 $("#divDatos" + contenedorCuadro).empty(); 10702 } 10703 if(parametros.mostrarBotonExportacion){ 10704 var divExportacion = document.createElement("div"); 10705 divExportacion.className = "col-sm-12 col-md-12 col-xs-12 pull-right"; 10706 divExportacion.style.textAlign = "right"; 10707 divExportacion.style.marginTop = "10px"; 10708 $("#divDatos" + contenedorCuadro).append(divExportacion); 10709 10710 var buttonExportacion = document.createElement("button"); 10711 buttonExportacion.type = "button"; 10712 buttonExportacion.className = "btn dropdown-toggle cls-tooltip"; 10713 buttonExportacion.setAttribute("data-toggle","dropdown"); 10714 buttonExportacion.style.backgroundColor = "#fff" 10715 buttonExportacion.style.borderColor = "#dcdcdc" 10716 // tooltip 10717 buttonExportacion.setAttribute("aria-haspopup",true); 10718 buttonExportacion.setAttribute("data-placement","left"); 10719 buttonExportacion.setAttribute("data-original-title",getTraductorCuadro(p
10719arametros, "Exportar")); 10720 10721 var spanExportacion = document.createElement("span"); 10722 var spanCaret = spanExportacion.cloneNode(true); 10723 spanCaret.className = "caret" 10724 spanExportacion.style.paddingRight = "4px"; 10725 spanExportacion.style.fontSize = "18px"; 10726 spanExportacion.className = "inegi-descarga"; 10727 spanExportacion.setAttribute("aria-hidden",true); 10728 buttonExportacion.append(spanExportacion); 10729 buttonExportacion.append(spanCaret); 10730 10731 var ulExportacion = document.createElement("ul"); 10732 ulExportacion.className = "dropdown-menu"; 10733 ulExportacion.setAttribute("role","menu"); 10734 ulExportacion.style.minWidth = "100px"; 10735 10736 var liExportacion = document.createElement("li"); 10737 var liLabel = liExportacion.cloneNode(true); 10738 var btnDescargaXls = document.createElement("a"); 10739 btnDescargaXls.id = "btnDescargaXls_"+contenedorCuadro; 10740 btnDescargaXls.style.display = "block"; 10741 btnDescargaXls.style.cursor = "pointer"; 10742 btnDescargaXls.style.padding = "3px 6px"; 10743 // btnDescargaXls.setAttribute("title","Exporta información localidades en XLS") 10744 btnDescargaXls.addEventListener("click", function(e){ 10745 e.stopPropagation(); 10746 exportXLSLocalidades(parametros, data) 10747 }) 10748 var imgIconDescargaXLS = document.createElement("img"); 10749 imgIconDescargaXLS.src = C_dominio_seguro +'img/ico/ico_XLS.png'; 10750 btnDescargaXls.append(imgIconDescargaXLS); 10751 10752 var labelSubtitle = document.createElement("div"); 10753 labelSubtitle.textContent = getTraductorCuadro(parametros, "Exportar como")+":"; 10754 labelSubtitle.style.fontWeight = "bold"; 10755 labelSubtitle.style.padding = "0 6px"; 10756 labelSubtitle.style.width = "auto"; 10757 liLabel.append(labelSubtitle) 10758 10759 liExportacion.append(btnDescargaXls); 10760 ulExportacion.append(liLabel); 10761 ulExportacion.append(liExportacion) 10762 divExportacion.append(ulExportacion); 10763 divExportacion.append(buttonExportacion); 10764 } 10765 10766 // estructuras de datos 10767 var idioma = parametros.idioma; 10768 //elementos HTML para el armado de las secciones 10769 var LOC_CONTAINER = document.createElement("div"); // contenedor principal de localidades 10770 document.getElementById("divDatos" + parametros.contenedorCuadro).appendChild(LOC_CONTAINER); 10771 10772 // validacion sino llega ningun dato entonces coloca el nensaje "Sin datos" 10773 if (data.length === 0) { 10774 10775 var divNodatos = document.createElement("div"); 10776 divNodatos.innerHTML = (idioma === "es"? "No se encontraron resultados" : "No found results"); 10777 LOC_CONTAINER.appendChild(divNodatos); 10778 10779 } else { 10780 if(parametros.modoVisualizacionLocalidades === "1"){ // Ver en secciones colapsables 10781 var UL = document.createElement("ul"); 10782 var LI = document.createElement("li"); 10783 var SPAN = document.createElement("span"); 10784 SPAN.style.display = "inline-block"; 10785 SPAN.style.verticalAlign = "middle"; 10786 var DIV = document.createElement("div"); 10787 DIV.style.paddingTop = "8px"; 10788 var TABLE = document.createElement("table"); TABLE.className = 'table table-bordered table-responsive table-striped'; 10789 TABLE.style.width = "auto"; 10790 TABLE.style.margin = "0 25px"; 10791 var TR = document.createElement("tr"); 10792 var TD = document.createElement("td"); 10793 var TH = document.createElement("th"); 10794 // console.log(data); 10795 10796 // tema 1 infolocalidad 10797 var ulInfo = null; 10798 var cAgrupador = 0; 10799 var tmpInfoLocalidad = null;
10800 var divContainerInformacionLocalidad = DIV.cloneNode(true); 10801 10802 // temsa 5 loc5000 10803 var ulIdentificacion = null; 10804 var clavesPath = ""; 10805 var tmpLocUbicacionGeografica = []; 10806 10807 if(parametros.secc.indexOf("1") > -1){ // Solamente para tema = 1 y 2 (informacion de localidad) 10808 var d = data.filter(function(item, idx){ 10809 return item.tema === 1 || item.tema === 5; 10810 }) 10811 var _UlInformacionLocalidad = tplInformacionLocalidad(d, UL, parametros); 10812 divContainerInformacionLocalidad.appendChild(_UlInformacionLocalidad); // agrega la lista UL con todos los items al div contenedor de informacion localidad 10813 LOC_CONTAINER.appendChild(divContainerInformacionLocalidad); // agrega el div contenedor al contenedor donde estan todos los elementos 10814 } 10815 // var notaFinal = false; 10816 /* data.map(function(tema, index){ // recorre el arreglo completo de datos 10817 if(parametros.secc.indexOf("1") > -1){ 10818 if(tema.tema === 1){ 10819 // seccion infoLocalidad ------------------------------------------------ 10820 if(ulInfo == null){ 10821 ulInfo = UL.cloneNode(true); 10822 ulInfo.className = "cls-ulInfoLocalidad"; 10823 // ulInfo.style.border = "1px solid #cecece"; 10824 ulInfo.style.padding = "0px"; 10825 ulInfo.style.marginBottom = "0px"; 10826 ulInfo.style.listStyleType = "none"; 10827 } 10828 if (tema.descripcion.indexOf("Clave de entidad federativa") > -1 || tema.descripcion.indexOf("Clave de municipio") > -1){ 10829 clavesPath = clavesPath + tema.valor; 10830 } 10831 10832 if(cAgrupador == 0){ 10833 tmpInfoLocalidad = tema; 10834 cAgrupador++; 10835 } else { 10836 cAgrupador = 0; 10837 var liInfo = LI.cloneNode(true); 10838 var span = SPAN.cloneNode(true); 10839 // span.innerHTML = getTraductorCuadro(parametros, tema.descripcion) +":"; 10840 span.innerHTML = tema.descripcion +":"; 10841 // span.style.width = "50%"; 10842 span.style.padding = "0px 0px"; 10843 span.style.fontWeight = "600"; 10844 span.className = "cls-block-loc"; 10845 span.style.width = "40%"; 10846 liInfo.appendChild(span); 10847 var span = SPAN.cloneNode(true); 10848 span.style.width = "60%"; 10849 var a = document.createElement("a"); 10850 if (tmpInfoLocalidad.descripcion.indexOf("localidad") === -1) { 10851 a.setAttribute("href", C_dominioBuscador + "app/areasgeograficas?ag=" + clavesPath); 10852 a.setAttribute("target","_blank"); 10853 a.style.cursor = "pointer"; 10854 // console.log(tema) 10855 // console.log(clavesPath); 10856 a.innerHTML = (tema.descripcion === "Municipio") ? clavesPath + " " + tema.valor : tmpInfoLocalidad.valor + " " + tema.valor; 10857 span.appendChild(a); 10858 } else { 10859 span.innerHTML = (tema.descripcion === "Localidad") ? clavesPath + tmpInfoLocalidad.valor + " " + tema.valor : tmpInfoLocalidad.valor + " " + tema.valor; 10860 } 10861 10862 liInfo.appendChild(span); 10863 ulInfo.appendChild(liInfo); 10864 } 10865 divContainerInformacionLocalidad.appendChild(ulInfo) 10866 // LOC_CONTAINER.appendChild(ulInfo); 10867 10868 } else if(tema.tema === 1 && tema.descripcion !== "NOTA"){ 10869 // console.log(tema) 10870 // seccion identificacion (en loc5000)------------------------------------------------ 10871 if(ulIdentificacion == null){ 10872 ulIdentificacion = UL.cloneNode(true); 10873 ulIdentificacion.className = "cls-ulInfoLocalidad"; 10874 // ulIdentificacion.style.border = "1px solid #cecece"; 10875 ulIdentificacion.style.padding = "0px"; 10876 ulIdentificacion.style.listStyleType = "none"; 10877 } 10878 if(tema.descripcion === "TITULO"){ 10879 10880 } else { 10881 10882 var liInfo = LI.cloneNode(true); 10883 var span = SPAN.cloneNode(true); 10884 if(tema.descripcion.indexOf("Latitud") > -1 || tema.descripcion.indexOf("Longitud") > -1 || tema.descripcion.indexOf("Altitud") > -1){ 10885 tmpLocUbicacionGeografica.push(tema); 10886 if(tmpLocUbicacionGeografica.length === 3){ // si no es coordenada grografica el proceso es normal 10887 var valor = "Longitud "+tmpLocUbicacionGeografica[1].valor +", Latitud "+tmpLocUbicacionGeografica[0].valor +", Altitud "+tmpLocUbicacionGeografica[2].valor; 10888 span.innerHTML = "Ubicación geográfica:"; 10889 span.style.padding = "0px 0px"; 10890 span.style.verticalAlign = "top"; 10891 span.style.fontWeight = "600"; 10892 span.className = "cls-block-loc"; 10893 span.style.width = "40%"; 10894 liInfo.appendChild(span); 10895 var span = SPAN.cloneNode(true); 10896 span.innerHTML = valor; 10897 span.style.width = "60%"; 10898 liInfo.appendChild(span); 10899 ulIdentificacion.appendChild(liInfo); 10900 } 10901 } else { 10902 span.innerHTML = tema.descripcion +":"; 10903 // span.style.width = "50%"; 10904 span.style.padding = "0px 0px"; 10905 span.style.fontWeight = "600"; 10906 span.className = "cls-block-loc"; 10907 span.style.width = "40%"; 10908 liInfo.appendChild(span); 10909 var span = SPAN.cloneNode(true); 10910 span.style.width = "60%"; 10911 if(tema.descripcion.indexOf("Cabecera municipal") > -1){ 10912 cveLoc = tema.valor.substring(tema.valor.indexOf("(") + 1, tema.valor.length-1); 10913 var a = document.createElement("a"); 10914 a.setAttribute("href", C_dominioBuscad
10914or+"app/areasgeograficas?ag=" + cveLoc); 10915 a.setAttribute("target","_blank"); 10916 a.style.cursor = "pointer"; 10917 //invierte valor 10918 var valor = tema.valor; 10919 if(valor.indexOf("(") > -1){ 10920 var valor1 = tema.valor.substring(0, tema.valor.indexOf('(')-1); 10921 var valor2 = tema.valor.substring(tema.valor.indexOf('('), tema.valor.length); 10922 valor = valor2.replace("(","").replace(")","") + " " + valor1; 10923 } 10924 a.innerHTML = valor; 10925 span.appendChild(a); 10926 } else { 10927 span.innerHTML = tema.valor; 10928 } 10929 liInfo.appendChild(span); 10930 ulIdentificacion.appendChild(liInfo); 10931 } 10932 10933 } 10934 divContainerInformacionLocalidad.appendChild(ulIdentificacion); 10935 } 10936 LOC_CONTAINER.appendChild(divContainerInformacionLocalidad); 10937 } 10938 }); */ 10939 10940 //viviendas 10941 var containerViviendas = null; 10942 var tableViviendas = null 10943 var theadViviendas = null; 10944 var tbodyViviendas = null; 10945 10946 //poblacion 10947 var containerPoblacion = null; 10948 var tablePoblacion = null; 10949 var theadPoblacion = null; 10950 var tbodyPoblacion = null; 10951 10952 //urbano 10953 var containerUrbano = null; 10954 var tableUrbano = null; 10955 var theadUrbano = null; 10956 var tbodyUrbano = null; 10957 var isHeader = 0; // variable de control, 0 = es encabezado 0+ son datos (solo para el cuadro en datos urbanos) 10958 10959 // temas mayores al 5 10960 var temaTmp = 0; 10961 var containerUl = null; 10962 var ulLoc5000 = null; 10963 10964 //arreglo de notas vivienda, poblacion, entorno urbano 10965 var arrNotasVivienda = []; 10966 var arrNotasPoblacion = []; 10967 var arrNotasEntornoUrbano = []; 10968 var spanNotaLoc5000 = ""; 10969 10970 data.forEach(function(tema, index){ // recorre el arreglo completo de datos 10971 10972 // if(parametros.secc.indexOf("2") > -1){ 10973 var contViviendaCoL = 0; 10974 // seccion vivienda ------------------------------------------------ 10975 if(tema.tema === 3){ 10976 // console.log(tema); 10977 if(containerViviendas === null){ 10978 containerViviendas = DIV.cloneNode(true); 10979 tableViviendas = TABLE.cloneNode(true); 10980 tableViviendas.id = "tableViviendas"; 10981 tableViviendas.style.display = "none"; 10982 tableViviendas.style.marginTop = "10px"; 10983 theadViviendas = document.createElement("thead"); 10984 tbodyViviendas = document.createElement("tbody"); 10985 10986 var divTituloViviendas = DIV.cloneNode(true); 10987 divTituloViviendas.innerHTML = '<i id="iViviendas" style="font-size:10px;color:#bb0026;vertical-align:middle;padding-right:6px"><span class="inegi-nav-desp enest_t"></span></i>CaracterÃsticas de las viviendas'; 10988 divTituloViviendas.style.padding = "0 0 0 10px"; 10989 divTituloViviendas.style.cursor = "pointer"; 10990 divTituloViviendas.onclick = function (e) { 10991 $("#tableViviendas").toggle(); 10992 $(".spanVivienda").toggle(); 10993 if ($("#iViviendas").html() == '<span class="inegi-nav-desp enest_t"></span>') { 10994 $("#iViviendas").html('<span class="inegi-nav-despa enest_t"></span>') 10995 } else { 10996 $("#iViviendas").html('<span class="inegi-nav-desp enest_t"></span>'); 10997 } 10998 } 10999 containerViviendas.appendChild(divTituloViviendas); 11000 } 11001 11002 if(tema.valor === "Total"){ 11003 var tr = TR.cloneNode(true); 11004 var th = TH.cloneNode(true); 11005 th.innerHTML = "Viviendas"; 11006 th.className = "Th" 11007 tr.appendChild(th); 11008 var th = TH.cloneNode(true); 11009 th.className = "Th" 11010 th.innerHTML = tema.valor; 11011 tr.appendChild(th); 11012 theadViviendas.appendChild(tr); 11013 11014 } else if(tema.descripcion === "NOTA") { 11015 var spanNota = DIV.cloneNode(true); 11016 spanNota.innerHTML = tema.valor; 11017 spanNota.style.fontSize = "11px"; 11018 // spanNota.id = "spanVivienda"; 11019 spanNota.className = "spanVivienda"; 11020 spanNota.style.display = "none"; 11021 spanNota.style.margin = "0 25px"; 11022 11023 } else { 11024 var tr = TR.cloneNode(true); 11025 var td = TD.cloneNode(true); 11026 td.innerHTML = tema.descripcion; 11027 td.style.width = "auto"; 11028 tr.appendChild(td); 11029 var td = TD.cloneNode(true); 11030 td.innerHTML = tema.valor; 11031 td.className = "TdV" 11032 tr.appendChild(td); 11033 tbodyViviendas.appendChild(tr) 11034 } 11035 tableViviendas.appendChild(theadViviendas); 11036 tableViviendas.appendChild(tbodyViviendas); 11037 11038 containerViviendas.appendChild(tableViviendas); 11039 if(spanNota) { 11040 arrNotasVivienda.push(spanNota) 11041 } 11042 if(parametros.secc.indexOf("2") === -1){ 11043 containerViviendas.style.display = "none"; 11044 } 11045 LOC_CONTAINER.appendChild(containerViviendas); 11046 } 11047 // } 11048 11049 // if(parametros.secc.indexOf("3") > -1){ 11050 // seccion poblacion ------------------------------------------------ 11051 if(tema.tema === 4){ 11052 if(containerPoblacion === null){ 11053 containerPoblacion = DIV.cloneNode(true); 11054 tablePoblacion = TABLE.cloneNode(true); 11055 theadPoblacion = document.createElement("thead"); 11056 tbodyPoblacion = document.createElement("tbody"); 11057 tablePoblacion.id = "tablePoblacion"; 11058 tablePoblacion.style.display = "none"; 11059 tablePoblacion.style.marginTop = "10px"; 11060 11061 var divTituloPoblacion = DIV.cloneNode(true); 11062 divTituloPoblacion.innerHTML = '<i id="iPoblacion" style="font-size:10px;color:#bb0026;vertical-align:middle;padding-right:6px"><span class="inegi-nav-desp enest_t"></span></i>CaracterÃsticas de la población'; 11063 divTituloPoblacion.style.padding = "0 0 0 10px"; 11064 divTituloPoblacion.style.cursor = "pointer"; 11065 divTituloPoblacion.onclick = function (e) { 11066 $("#tablePoblacion").toggle(); 11067 $(".spanPoblacion").toggle(); 11068 if ($("#iPoblacion").html() == '<span class="inegi-nav-desp enest_t"></span>') { 11069 $("#iPoblacion").html('<span class="enest_t inegi-nav-despa"></span>') 11070 } else { 11071 $("#iPoblacion").html('<span class="inegi-nav-desp enest_t"></span>'); 11072 } 11073 } 11074 containerPoblacion.appendChild(divTituloPoblacion); 11075 } 11076 11077 if(tema.valor === "Total"){ 11078 var tr = TR.cloneNode(true); 11079 var th = TH.cloneNode(true); 11080 th.innerHTML = "Población"; 11081 th.className = "Th" 11082 tr.appendChild(th); 11083 var th = TH.cloneNode(true); 11084 th.className = "Th" 11085 th.innerHTML = tema.valor; 11086 tr.appendChild(th); 11087 theadPoblacion.appendChild(tr); 11088 11089 } else if(tema.descripcion === "NOTA") { 11090 var spanNotaP = DIV.cloneNode(true); 11091 spanNotaP.innerHTML = tema.valor; 11092 spanNotaP.style.fontSize = "11px"; 11093 spanNotaP.className = "spanPoblacion"; 11094 spanNotaP.style.display = "none"; 11095 spanNotaP.style.margin = "0 25px"; 11096 } else { 11097 var tr = TR.cloneNode(true); 11098 var td = TD.cloneNode(true); 11099 td.innerHTML = tema.descripcion; 11100 tr.appendChild(td); 11101 var td = TD.cloneNode(true); 11102 td.innerHTML = tema.valor; 11103 td.className = "TdV"; 11104 tr.appendChild(td); 11105 tbodyPoblacion.appendChild(tr) 11106 } 11107 tablePoblacion.appendChild(theadPoblacion); 11108 tablePoblacion.appendChild(tbodyPoblacion); 11109 11110 containerPoblacion.appendChild(tablePoblacion); 11111 if(spanNotaP){ 11112 arrNotasPoblacion.push(spanNotaP); 11113 } 11114 if(parametros.secc.indexOf("3") === -1){ 11115 containerPoblacion.style.display = "none"; 11116 } 11117 LOC_CONTAINER.appendChild(containerPoblacion); 11118 } 11119 // } 11120 11121 // if (parametros.secc.indexOf("4") > -1) { 11122 // seccion entorno urbano ------------------------------------------------ 11123 if(tema.tema === 2){ 11124 11125 if(containerUrbano === null){
11126 containerUrbano = DIV.cloneNode(true); 11127 tableUrbano = TABLE.cloneNode(true); 11128 theadUrbano = document.createElement("thead"); 11129 tbodyUrbano = document.createElement("tbody"); 11130 tableUrbano.id = "tableUrbano"; 11131 tableUrbano.style.display = "none"; 11132 tableUrbano.style.marginTop = "10px"; 11133 11134 11135 var divTituloUrbano = DIV.cloneNode(true); 11136 divTituloUrbano.innerHTML = '<i id="iUrbano" style="font-size:10px;color:#bb0026;vertical-align:middle;padding-right:6px"><span class="inegi-nav-desp enest_t"></span></i>Entorno Urbano'; 11137 divTituloUrbano.style.padding = "0 0 0 10px"; 11138 divTituloUrbano.style.cursor = "pointer"; 11139 11140 divTituloUrbano.onclick = function (e) { 11141 $("#tableUrbano").toggle(); 11142 $(".spanUrbano").toggle(); 11143 if ($("#iUrbano").html() == '<span class="inegi-nav-desp enest_t"></span>') { 11144 $("#iUrbano").html('<span class="enest_t inegi-nav-despa"></span>') 11145 } else { 11146 $("#iUrbano").html('<span class="inegi-nav-desp enest_t"></span>'); 11147 } 11148 } 11149 containerUrbano.appendChild(divTituloUrbano); 11150 } 11151 11152 if(isHeader == 0){ 11153 var tr = TR.cloneNode(true); 11154 var th = TH.cloneNode(true); 11155 th.innerHTML = tema.descripcion; 11156 th.className = "Th" 11157 tr.appendChild(th); 11158 for(var c = 0; c < tema.valor.length; c++){ 11159 11160 var th = TH.cloneNode(true); 11161 th.className = "Th" 11162 th.innerHTML = tema.valor[c];
11163 tr.appendChild(th); 11164 } 11165 theadUrbano.append(tr); 11166 isHeader++; 11167 11168 } else if(tema.descripcion === "NOTA") { 11169 var spanNotaU = DIV.cloneNode(true) 11170 spanNotaU.innerHTML = tema.valor[0]; 11171 spanNotaU.style.fontSize = "11px"; 11172 spanNotaU.className = "spanUrbano"; 11173 spanNotaU.style.display = "none"; 11174 spanNotaU.style.margin = "0 25px"; 11175 } else { 11176 var tr = TR.cloneNode(true); 11177 var td = TD.cloneNode(true); 11178 td.innerHTML = tema.descripcion; 11179 tr.appendChild(td); 11180 for(var c = 0; c < tema.valor.length; c++){ 11181 var td = TD.cloneNode(true); 11182 td.innerHTML = tema.valor[c];
11183 td.className = "TdV"; 11184 tr.appendChild(td); 11185 } 11186 tbodyUrbano.appendChild(tr) 11187 } 11188 tableUrbano.appendChild(theadUrbano); 11189 tableUrbano.appendChild(tbodyUrbano); 11190 11191 containerUrbano.appendChild(tableUrbano); 11192 if(spanNotaU){ 11193 // containerUrbano.appendChild(spanNotaU); 11194 arrNotasEntornoUrbano.push(spanNotaU); 11195 } 11196 if(parametros.secc.indexOf("4") === -1){ 11197 containerUrbano.style.display = "none"; 11198 } 11199 LOC_CONTAINER.appendChild(containerUrbano); 11200 } 11201 // } 11202 11203 // if(parametros.secc.indexOf("5") > -1){ 11204 // seccion Loc5000 ------------------------------------------------ 11205 if(tema.tema > 5 ){ 11206 if(temaTmp !== tema.tema){ 11207 // if(tema.descripcion !== "NOTA"){ 11208 temaTmp = tema.tema; 11209 // crear lista para nuevo tema 11210 containerUl = DIV.cloneNode(true); 11211 ulLoc5000 = UL.cloneNode(true); 11212 ulLoc5000.className = "list-group"; 11213 ulLoc5000.style.padding = "0px"; 11214 ulLoc5000.style.width = "90%";//"67%"; // para las listas fichas un width acncho fijo 11215 ulLoc5000.style.margin = "10px 0 0 25px"; 11216 ulLoc5000.style.listStyleType = "none"; 11217 ulLoc5000.id = "listTema"+ tema.tema; 11218 ulLoc5000.style.display = "none"; 11219 // area titulo 11220 var divTituloUl = DIV.cloneNode(true); 11221 divTituloUl.innerHTML = '<i id="iLoc_' + tema.tema +'" style="font-size:10px;color:#bb0026;vertical-align:middle;padding-right:6px"><span class="inegi-nav-desp enest_t"></span></i>' + tema.desc_tema; 11222 divTituloUl.style.padding = "0 0 0 10px"; 11223 divTituloUl.style.cursor = "pointer"; 11224 divTituloUl.onclick = function (e) { 11225 var t = $(this).find("i")[0].id.split("iLoc_")[1]; 11226 $("#listTema" + t).toggle(); 11227 if ($("#iLoc_" + t).html() == '<span class="inegi-nav-desp enest_t"></span>') { 11228 $("#iLoc_" + t).html('<span class="inegi-nav-despa enest_t"></span>') 11229 } else { 11230 $("#iLoc_" + t).html('<span class="inegi-nav-desp enest_t"></span>'); 11231 } 11232 } 11233 containerUl.appendChild(divTituloUl); 11234 11235 } 11236 if(tema.descripcion === "TITULO"){ 11237 var liInfo = LI.cloneNode(true); 11238 liInfo.style.backgroundColor = "#f9f9f9"; 11239 liInfo.style.color = "#157fcc"; 11240 liInfo.style.padding = "4px 0"; 11241 liInfo.style.paddingLeft = "10px;" 11242 liInfo.className = "cls-title"; 11243 var span = SPAN.cloneNode(true); 11244 span.style.fontWeight = "bold"; 11245 span.innerHTML = tema.valor; 11246 span.style.padding = "0px 10px"; 11247 liInfo.appendChild(span); 11248 11249 ulLoc5000.appendChild(liInfo); 11250 containerUl.appendChild(ulLoc5000); 11251 LOC_CONTAINER.appendChild(containerUl); 11252 11253 } else if(tema.descripcion === "NOTA"){ 11254 spanNotaLoc5000 = DIV.cloneNode(true); 11255 spanNotaLoc5000.innerHTML = "* "+tema.valor; 11256 11257 spanNotaLoc5000.style.fontSize = "11px"; 11258 $(ulLoc5000).append(spanNotaLoc5000) 11259 11260 } else { 11261 var liInfo = LI.cloneNode(true); 11262 liInfo.className = "list-group-item"; 11263 liInfo.style.borderLeft = "0"; 11264 liInfo.style.borderRight = "0"; 11265 liInfo.style.padding = "4px 15px"; 11266 var span = SPAN.cloneNode(true); 11267 span.innerHTML = "  "+ tema.descripcion+":"; 11268 span.style.fontWeight = "bold"; 11269 span.style.padding = "0px 10px"; 11270 liInfo.appendChild(span); 11271 var span = SPAN.cloneNode(true); 11272 span.innerHTML = tema.valor; 11273 liInfo.appendChild(span); 11274 11275 ulLoc5000.appendChild(liInfo); 11276 containerUl.appendChild(ulLoc5000); 11277 if(parametros.secc.indexOf("5") === -1){ 11278 containerUl.style.display = "none"; 11279 } 11280 LOC_CONTAINER.appendChild(containerUl); 11281 } 11282 } 11283 // } 11284 //nota al pie del contenido 11285 });
11285 // termina el forEach 11286 11287 //inserta notas correspondientes a entorno urbano 11288 if(arrNotasEntornoUrbano.length > 0){ 11289 for(var n = 0; n < arrNotasEntornoUrbano.length; n++){ 11290 tableUrbano.after(arrNotasEntornoUrbano[n]); 11291 } 11292 } 11293 //inserta notas correspondientes a viviendas 11294 if(arrNotasVivienda.length > 0){ 11295 for(var n = 0; n < arrNotasVivienda.length; n++){ 11296 tableViviendas.after(arrNotasVivienda[n]); 11297 } 11298 } 11299 //inserta notas correspondientes a población 11300 if(arrNotasPoblacion.length > 0){ 11301 for(var n = 0; n < arrNotasPoblacion.length; n++){ 11302 tablePoblacion.after(arrNotasPoblacion[n]); 11303 } 11304 } 11305 11306 $(window).resize(function(e){ 11307 var widthWindow = document.body.clientWidth; 11308 if(widthWindow >= 480){ 11309 $(".cls-ulInfoLocalidad").find(".cls-block-loc").css({width:"40%"}); 11310 11311 } else { 11312 $(".cls-ulInfoLocalidad").find(".cls-block-loc").css({width:"auto"}); 11313 11314 } 11315 }) 11316 var widthWindow = document.body.clientWidth; 11317 if(widthWindow >= 510){ 11318 $(".cls-ulInfoLocalidad").find(".cls-block-loc").css({width:"40%"}); 11319 11320 } else { 11321 $(".cls-ulInfoLocalidad").find(".cls-block-loc").css({width:"auto"}); 11322 11323 } 11324 } else if(parametros.modoVisualizacionLocalidades == "2") { // ver en pestañas navegables 11325 11326 /// ----------- ESTRUCTURA DE DATOS ------------------ 11327 var tmpTema = ""; // guardar el tema temporalmente 11328 var aTemas = []; // nuevo almacen del tema y sus datos 11329 var aDatosTema = [] // guarda todos los datos por tema 11330 11331 // -- recordar que el tema: 1 y 2 comparten datos parecidos. 11332 var index = null; 11333 var oD = {}; 11334 var l = false; 11335 data.map(function(t) { 11336 if(tmpTema != t.tema){ // si el tmpTema es diferente al de la ctual posición, se asigna el nuevo a tmpTema y guarda el objeto tema 11337 aDatosTema = [];// limpiamos para volver a llenar dependiendo del tema nuevo que se esta leyendo 11338 tmpTema = t.tema; 11339 l = false 11340 if(tmpTema > 5) l = true; 11341 // -- Generamos un arreglo de temas principales (Nuestras pestañas) 11342 aTemas.push({tema_id:t.tema, tema:t.desc_tema,loc5000:l,datos:[]}); 11343 index = aTemas.length-1; 11344 11345 } // else {// si el tema es igual al anterior (tmpTema) no guarda el objeto tema, pero si guarda los datos en el tema 11346 oD = {descripcion:t.descripcion,valor:t.valor} 11347 aDatosTema.push(oD); 11348 aTemas[index].datos = aDatosTema; 11349 11350 }); 11351 11352 // si existe el tema 2 fusionar arreglo de datos con el tema 1 11353 /* var temasCompartidos = aTemas.filter(function(t, index){ 11354 t.index = index; 11355 return t.tema_id === 0; 11356 })[0]; */ 11357 var temasCompartidos = aTemas.filter(function(t, index){ 11358 t.index = index; 11359 return t.tema_id === 1 || t.tema_id === 5; 11360 }); 11361 var aTemasFinal = []; 11362 var aIndexesIngore = []; 11363 if(temasCompartidos !== undefined && temasCompartidos.length > 1){ 11364 for(var x = 0; x < temasCompartidos.length; x++){ 11365 if(x > 0){ 11366 var aTemaDatosCombinado = aTemas[0].datos.concat(temasCompartidos[x].datos); 11367 aTemas[0].datos = aTemaDatosCombinado; 11368 aIndexesIngore.push(temasCompartidos[x].index) 11369 } 11370 } 11371 // pasamos a nuevo arreglos los datos finales 11372 aTemasFinal = aTemas.filter(function(tema, idx) { 11373 return aIndexesIngore.indexOf(tema.index) == -1; 11374 }) 11375 } else { 11376 aTemasFinal = aTemas; 11377 } 11378 11379 /// ----------- ARMADO DEL COMPONENTE PESTAÃAS ------------------ 11380 11381 var divCarruselTemas = document.createElement("div"); 11382 divCarruselTemas.id = "divCarouselTemas_" + parametros.contenedorCuadro; 11383 LOC_CONTAINER.appendChild(divCarruselTemas); 11384 // new carouselTemas(divCarruselTemas.id, aTemas, parametros.secc).render() 11385 new carouselTemas(divCarruselTemas.id, aTemasFinal, parametros.secc, parametros).render() 11386 11387 } 11388 } 11389 11390 //document.getElementById("divDatos" + parametros.contenedorCuadro).appendChild(LOC_CONTAINER); 11391 $("#tableStat" + parametros.contenedorCuadro).hide(); 11392 $("#TableEspacio" + parametros.contenedorCuadro).hide(); 11393 $("#divCargaCuadro" + parametros.contenedorCuadro).hide(); 11394 $(".clsHover").hover(function(){ 11395 $(this).css("background-color", "#ececec"); 11396 }, function(){ 11397 $(this).css("background-color", "#f9f7f7"); 11398 }); 11399 $(".cls-tooltip").tooltip(); 11400 } 11401 // Con datos actualizados de SCITEL 11402 // fecha: 10-07-2024 11403 function DibujaCuadroTipo18_LocalidadesV4_2024(data, parametros, callback) { 11404 var INTLFormat = Intl.NumberFormat('es-MX',{style:'decimal'}); 11405 var contenedorCuadro = parametros.contenedorCuadro; 11406 var catalogoTemasLocalidad = parametros.catalogoTemasLocalidad; 11407 // se guarda este valor para poder saber cuando llega periodo y version 11408 parametros.conVersionPeriodoLocalidad = (parametros.periodoLocalidad !== null && parametros.versionLocalidad !== null ? true : false);
11409 // var dataOrdenadoPorTema = data.sort((a,b) => { 11410 // if(a.tema < b.tema) return -1 11411 // if(a.tema > b.tema) return 1 11412 // if(a.orden < b.orden) return -1 11413 // if(a.orden > b.orden) return 1 11414 // return 0; 11415 // }) 11416 // data = dataOrdenadoPorTema 11417 // console.log(data) 11418 11419 if ($("#divDatos" + contenedorCuadro)) { 11420 $("#divDatos" + contenedorCuadro).empty(); 11421 } 11422 if(parametros.mostrarBotonExportacion && data.length > 0){ 11423 var divExportacion = document.createElement("div"); 11424 divExportacion.className = "col-sm-12 col-md-12 col-xs-12 pull-right"; 11425 divExportacion.style.textAlign = "right"; 11426 divExportacion.style.marginTop = "10px"; 11427 $("#divDatos" + contenedorCuadro).append(divExportacion); 11428 11429 var buttonExportacion = document.createElement("button"); 11430 buttonExportacion.type = "button"; 11431 buttonExportacion.className = "btn dropdown-toggle cls-tooltip"; 11432 buttonExportacion.setAttribute("data-toggle","dropdown"); 11433 buttonExportacion.style.backgroundColor = "#fff" 11434 buttonExportacion.style.borderColor = "#dcdcdc" 11435 // tooltip 11436 buttonExportacion.setAttribute("aria-haspopup",true); 11437 buttonExportacion.setAttribute("data-placement","left"); 11438 buttonExportacion.setAttribute("data-original-title",getTraductorCuadro(parametros, "Exportar")); 11439 11440 var spanExportacion = document.createElement("span"); 11441 var spanCaret = spanExportacion.cloneNode(true); 11442 spanCaret.className = "caret" 11443 spanExportacion.style.paddingRight = "4px"; 11444 spanExportacion.style.fontSize = "18px"; 11445 spanExportacion.className = "inegi-descarga"; 11446 spanExportacion.setAttribute("aria-hidden",true); 11447 buttonExportacion.append(spanExportacion); 11448 buttonExportacion.append(spanCaret); 11449 11450 var ulExportacion = document.createElement("ul"); 11451 ulExportacion.className = "dropdown-menu"; 11452 ulExportacion.setAttribute("role","menu"); 11453 ulExportacion.style.minWidth = "100px"; 11454 11455 var liExportacion = document.createElement("li"); 11456 var liLabel = liExportacion.cloneNode(true); 11457 var btnDescargaXls = document.createElement("a"); 11458 btnDescargaXls.id = "btnDescargaXls_"+contenedorCuadro; 11459 btnDescargaXls.style.display = "block"; 11460 btnDescargaXls.style.cursor = "pointer"; 11461 btnDescargaXls.style.padding = "3px 6px"; 11462 // btnDescargaXls.setAttribute("title","Exporta información localidades en XLS") 11463 btnDescargaXls.addEventListener("click", function(e){ 11464 e.stopPropagation(); 11465 exportXLSLocalidades(parametros, data) 11466 }) 11467 var imgIconDescargaXLS = document.createElement("img"); 11468 imgIconDescargaXLS.src = C_dominio_seguro +'img/ico/ico_XLS.png'; 11469 btnDescargaXls.append(imgIconDescargaXLS); 11470 11471 var labelSubtitle = document.createElement("div"); 11472 labelSubtitle.textContent = getTraductorCuadro(parametros, "Exportar como")+":"; 11473 labelSubtitle.style.fontWeight = "bold"; 11474 labelSubtitle.style.padding = "0 6px"; 11475 labelSubtitle.style.width = "auto"; 11476 liLabel.append(labelSubtitle) 11477 11478 liExportacion.append(btnDescargaXls); 11479 ulExportacion.append(liLabel); 11480 ulExportacion.append(liExportacion) 11481 divExportacion.append(ulExportacion); 11482 divExportacion.append(buttonExportacion); 11483 } 11484 11485 // estructuras de datos 11486 var idioma = parametros.idioma; 11487 //elementos HTML para el armado de las secciones 11488 var LOC_CONTAINER = document.createElement("div"); // contenedor principal de localidades 11489 document.getElementById("divDatos" + parametros.contenedorCuadro).appendChild(LOC_CONTAINER); 11490 11491 // validacion sino llega ningun dato entonces coloca el nensaje "Sin datos" 11492 if (data.length === 0) { 11493 11494 var divNodatos = document.createElement("div"); 11495 divNodatos.innerHTML = (idioma === "es"? "No se encontraron resultados" : "No found results"); 11496 LOC_CONTAINER.appendChild(divNodatos); 11497 11498 } else { 11499 if(parametros.modoVisualizacionLocalidades === "1"){ // Ver en secciones colapsables 11500 var DETAILS = document.createElement("details"); 11501 var SUMMARY = document.createElement("summary"); 11502 var UL = document.createElement("ul"); 11503 var LI = document.createElement("li"); 11504 var SPAN = document.createElement("span"); 11505 SPAN.style.display = "inline-block"; 11506 SPAN.style.verticalAlign = "middle"; 11507 var DIV = document.createElement("div"); 11508 DIV.style.paddingTop = "8px"; 11509 var TABLE = document.createElement("table"); TABLE.className = 'table table-bordered table-responsive table-striped'; 11510 TABLE.style.width = "auto"; 11511 TABLE.style.margin = "0 25px"; 11512 var TR = document.createElement("tr"); 11513 var TD = document.createElement("td"); 11514 var TH = document.createElement("th"); 11515 // console.log(data); 11516 11517 // tema 1 infolocalidad 11518 var ulInfo = null; 11519 var cAgrupador = 0; 11520 var tmpInfoLocalidad = null;
11521 var divContainerInformacionLocalidad = DIV.cloneNode(true); 11522 11523 // temsa 5 loc5000 11524 var ulIdentificacion = null; 11525 var clavesPath = ""; 11526 var tmpLocUbicacionGeografica = []; 11527 11528 if(parametros.secc.indexOf("1") > -1){ // Solamente para tema = 1 y 2 (informacion de localidad) 11529 var d = data.filter(function(item, idx){ 11530 return item.tema === 1 || item.tema === 5; 11531 }) 11532 var _UlInformacionLocalidad = tplInformacionLocalidad(d, UL, parametros); 11533 divContainerInformacionLocalidad.appendChild(_UlInformacionLocalidad); // agrega la lista UL con todos los items al div contenedor de informacion localidad 11534 LOC_CONTAINER.appendChild(divContainerInformacionLocalidad); // agrega el div contenedor al contenedor donde estan todos los elementos 11535 } 11536 11537 //viviendas 11538 var containerViviendas = null; 11539 var tableViviendas = null 11540 var theadViviendas = null; 11541 var tbodyViviendas = null; 11542 11543 //poblacion 11544 var containerPoblacion = null; 11545 var tablePoblacion = null; 11546 var theadPoblacion = null; 11547 var tbodyPoblacion = null; 11548 11549 //urbano 11550 var containerUrbano = null; 11551 var tableUrbano = null; 11552 var theadUrbano = null; 11553 var tbodyUrbano = null; 11554 var isHeader = 0; // variable de control, 0 = es encabezado 0+ son datos (solo para el cuadro en datos urbanos) 11555 11556 // temas mayores al 5 11557 var temaTmp = 0; 11558 var containerUl = null; 11559 var ulLoc5000 = null; 11560 11561 //arreglo de notas vivienda, poblacion, entorno urbano 11562 var arrNotasVivienda = []; 11563 var arrNotasPoblacion = []; 11564 var arrNotasEntornoUrbano = []; 11565 var spanNotaLoc5000 = ""; 11566 11567 data.forEach(function(tema, index){ // recorre el arreglo completo de datos 11568 11569 // if(parametros.secc.indexOf("2") > -1){ 11570 var contViviendaCoL = 0; 11571 // seccion vivienda ------------------------------------------------ 11572 if(tema.tema === 3){ 11573 // console.log(tema); 11574 if(containerViviendas === null){ 11575 containerViviendas = DIV.cloneNode(true); 11576 tableViviendas = TABLE.cloneNode(true); 11577 tableViviendas.id = "tableViviendas"; 11578 tableViviendas.style.display = "none"; 11579 tableViviendas.style.marginTop = "10px"; 11580 theadViviendas = document.createElement("thead"); 11581 tbodyViviendas = document.createElement("tbody"); 11582 11583 var divTituloViviendas = DIV.cloneNode(true); 11584 divTituloViviendas.innerHTML = '<i id="iViviendas" style="font-size:10px;color:#bb0026;vertical-align:middle;padding-right:6px"><span class="inegi-nav-desp enest_t"></span></i>CaracterÃsticas de las viviendas'; 11585 divTituloViviendas.style.padding = "0 0 0 10px"; 11586 divTituloViviendas.style.cursor = "pointer"; 11587 divTituloViviendas.onclick = function (e) { 11588 $("#tableViviendas").toggle(); 11589 $(".spanVivienda").toggle(); 11590 if ($("#iViviendas").html() == '<span class="inegi-nav-desp enest_t"></span>') { 11591 $("#iViviendas").html('<span class="inegi-nav-despa enest_t"></span>') 11592 } else { 11593 $("#iViviendas").html('<span class="inegi-nav-desp enest_t"></span>'); 11594 } 11595 } 11596 containerViviendas.appendChild(divTituloViviendas); 11597 } 11598 11599 if(tema.valor === "Total"){ 11600 var tr = TR.cloneNode(true); 11601 var th = TH.cloneNode(true); 11602 th.innerHTML = "Viviendas"; 11603 th.className = "Th" 11604 tr.appendChild(th); 11605 var th = TH.cloneNode(true); 11606 th.className = "Th" 11607 th.innerHTML = tema.valor; 11608 tr.appendChild(th); 11609 theadViviendas.appendChild(tr); 11610 11611 } else if(tema.descripcion === "NOTA") { 11612 var spanNota = DIV.cloneNode(true); 11613 spanNota.innerHTML = tema.valor; 11614 spanNota.style.fontSize = "11px"; 11615 // spanNota.id = "spanVivienda"; 11616 spanNota.className = "spanVivienda"; 11617 spanNota.style.display = "none"; 11618 spanNota.style.margin = "0 25px"; 11619 11620 } else { 11621 var tr = TR.cloneNode(true); 11622 var td = TD.cloneNode(true); 11623 td.innerHTML = tema.descripcion; 11624 td.style.width = "auto"; 11625 tr.appendChild(td); 11626 var td = TD.cloneNode(true); 11627 td.innerHTML = tema.valor; 11628 td.className = "TdV" 11629 tr.appendChild(td); 11630 tbodyViviendas.appendChild(tr) 11631 } 11632 tableViviendas.appendChild(theadViviendas); 11633 tableViviendas.appendChild(tbodyViviendas); 11634 11635 containerViviendas.appendChild(tableViviendas); 11636 if(spanNota) { 11637 arrNotasVivienda.push(spanNota) 11638 } 11639 if(parametros.secc.indexOf("2") === -1){ 11640 containerViviendas.style.display = "none"; 11641 } 11642 LOC_CONTAINER.appendChild(containerViviendas); 11643 } 11644 // } 11645 11646 // if(parametros.secc.indexOf("3") > -1){ 11647 // seccion poblacion ------------------------------------------------ 11648 if(tema.tema === 4){ 11649 if(containerPoblacion === null){ 11650 containerPoblacion = DIV.cloneNode(true); 11651 tablePoblacion = TABLE.cloneNode(true); 11652 theadPoblacion = document.createElement("thead"); 11653 tbodyPoblacion = document.createElement("tbody"); 11654 tablePoblacion.id = "tablePoblacion"; 11655 tablePoblacion.style.display = "none"; 11656 tablePoblacion.style.marginTop = "10px"; 11657 11658 var divTituloPoblacion = DIV.cloneNode(true); 11659 divTituloPoblacion.innerHTML = '<i id="iPoblacion" style="font-size:10px;color:#bb0026;vertical-align:middle;padding-right:6px"><span class="inegi-nav-desp enest_t"></span></i>CaracterÃsticas de la población'; 11660 divTituloPoblacion.style.padding = "0 0 0 10px"; 11661 divTituloPoblacion.style.cursor = "pointer"; 11662 divTituloPoblacion.onclick = function (e) { 11663 $("#tablePoblacion").toggle(); 11664 $(".spanPoblacion").toggle(); 11665 if ($("#iPoblacion").html() == '<span class="inegi-nav-desp enest_t"></span>') { 11666 $("#iPoblacion").html('<span class="enest_t inegi-nav-despa"></span>') 11667 } else { 11668 $("#iPoblacion").html('<span class="inegi-nav-desp enest_t"></span>'); 11669 } 11670 } 11671 containerPoblacion.appendChild(divTituloPoblacion); 11672 } 11673 11674 if(tema.valor === "Total"){ 11675 var tr = TR.cloneNode(true); 11676 var th = TH.cloneNode(true); 11677 th.innerHTML = "Población"; 11678 th.className = "Th" 11679 tr.appendChild(th); 11680 var th = TH.cloneNode(true); 11681 th.className = "Th" 11682 th.innerHTML = tema.valor; 11683 tr.appendChild(th); 11684 theadPoblacion.appendChild(tr); 11685 11686 } else if(tema.descripcion === "NOTA") { 11687 var spanNotaP = DIV.cloneNode(true); 11688 spanNotaP.innerHTML = tema.valor; 11689 spanNotaP.style.fontSize = "11px"; 11690 spanNotaP.className = "spanPoblacion"; 11691 spanNotaP.style.display = "none"; 11692 spanNotaP.style.margin = "0 25px"; 11693 } else { 11694 var tr = TR.cloneNode(true); 11695 var td = TD.cloneNode(true); 11696 td.innerHTML = tema.descripcion; 11697 tr.appendChild(td); 11698 var td = TD.cloneNode(true); 11699 td.innerHTML = tema.valor; 11700 td.className = "TdV"; 11701 tr.appendChild(td); 11702 tbodyPoblacion.appendChild(tr) 11703 } 11704 tablePoblacion.appendChild(theadPoblacion); 11705 tablePoblacion.appendChild(tbodyPoblacion); 11706 11707 containerPoblacion.appendChild(tablePoblacion); 11708 if(spanNotaP){ 11709 arrNotasPoblacion.push(spanNotaP); 11710 } 11711 if(parametros.secc.indexOf("3") === -1){ 11712 containerPoblacion.style.display = "none"; 11713 } 11714 LOC_CONTAINER.appendChild(containerPoblacion); 11715 } 11716 // } 11717 11718 // if (parametros.secc.indexOf("4") > -1) { 11719 // seccion entorno urbano ------------------------------------------------ 11720 if(tema.tema === 2){ 11721 11722 if(containerUrbano === null){
11723 containerUrbano = DIV.cloneNode(true); 11724 tableUrbano = TABLE.cloneNode(true); 11725 theadUrbano = document.createElement("thead"); 11726 tbodyUrbano = document.createElement("tbody"); 11727 tableUrbano.id = "tableUrbano"; 11728 tableUrbano.style.display = "none"; 11729 tableUrbano.style.marginTop = "10px"; 11730 11731 11732 var divTituloUrbano = DIV.cloneNode(true); 11733 divTituloUrbano.innerHTML = '<i id="iUrbano" style="font-size:10px;color:#bb0026;vertical-align:middle;padding-right:6px"><span class="inegi-nav-desp enest_t"></span></i>Entorno Urbano'; 11734 divTituloUrbano.style.padding = "0 0 0 10px"; 11735 divTituloUrbano.style.cursor = "pointer"; 11736 11737 divTituloUrbano.onclick = function (e) { 11738 $("#tableUrbano").toggle(); 11739 $(".spanUrbano").toggle(); 11740 if ($("#iUrbano").html() == '<span class="inegi-nav-desp enest_t"></span>') { 11741 $("#iUrbano").html('<span class="enest_t inegi-nav-despa"></span>') 11742 } else { 11743 $("#iUrbano").html('<span class="inegi-nav-desp enest_t"></span>'); 11744 } 11745 } 11746 containerUrbano.appendChild(divTituloUrbano); 11747 } 11748 11749 if(isHeader == 0){ 11750 var tr = TR.cloneNode(true); 11751 var th = TH.cloneNode(true); 11752 th.innerHTML = tema.descripcion; 11753 th.className = "Th" 11754 tr.appendChild(th); 11755 for(var c = 0; c < tema.valor.length; c++){ 11756 11757 var th = TH.cloneNode(true); 11758 th.className = "Th" 11759 th.innerHTML = tema.valor[c];
11760 tr.appendChild(th); 11761 } 11762 theadUrbano.append(tr); 11763 isHeader++; 11764 11765 } else if(tema.descripcion === "NOTA") { 11766 var spanNotaU = DIV.cloneNode(true) 11767 spanNotaU.innerHTML = tema.valor[0]; 11768 spanNotaU.style.fontSize = "11px"; 11769 spanNotaU.className = "spanUrbano"; 11770 spanNotaU.style.display = "none"; 11771 spanNotaU.style.margin = "0 25px"; 11772 } else { 11773 var tr = TR.cloneNode(true); 11774 var td = TD.cloneNode(true); 11775 td.innerHTML = tema.descripcion; 11776 tr.appendChild(td); 11777 for(var c = 0; c < tema.valor.length; c++){ 11778 var td = TD.cloneNode(true); 11779 td.innerHTML = tema.valor[c];
11780 td.className = "TdV"; 11781 tr.appendChild(td); 11782 } 11783 tbodyUrbano.appendChild(tr) 11784 } 11785 tableUrbano.appendChild(theadUrbano); 11786 tableUrbano.appendChild(tbodyUrbano); 11787 11788 containerUrbano.appendChild(tableUrbano); 11789 if(spanNotaU){ 11790 // containerUrbano.appendChild(spanNotaU); 11791 arrNotasEntornoUrbano.push(spanNotaU); 11792 } 11793 if(parametros.secc.indexOf("4") === -1){ 11794 containerUrbano.style.display = "none"; 11795 } 11796 LOC_CONTAINER.appendChild(containerUrbano); 11797 } 11798 // } 11799 11800 // if(parametros.secc.indexOf("5") > -1){ 11801 // seccion Loc5000 ------------------------------------------------ 11802 if(tema.tema > 5 ){ 11803 // if(temaTmp !== tema.tema && tema.descripcion !== "TITULO" && tema.descripcion !== "NOTA" && !tema.descripcion.includes("Fuente")){ 11804 if(temaTmp !== tema.tema){ 11805 // if(tema.descripcion !== "NOTA"){ 11806 temaTmp = tema.tema; 11807 // crear lista para nuevo tema 11808 containerUl = DIV.cloneNode(true); 11809 ulLoc5000 = UL.cloneNode(true); 11810 ulLoc5000.className = "list-group"; 11811 ulLoc5000.style.padding = "0px"; 11812 ulLoc5000.style.width = "90%";//"67%"; // para las listas fichas un width acncho fijo 11813 ulLoc5000.style.margin = "10px 0 0 25px"; 11814 ulLoc5000.style.listStyleType = "none"; 11815 ulLoc5000.id = "listTema"+ tema.tema; 11816 ulLoc5000.style.display = "none"; 11817 // area titulo 11818 var divTituloUl = DIV.cloneNode(true); 11819 divTituloUl.innerHTML = '<i id="iLoc_' + tema.tema +'" style="font-size:10px;color:#bb0026;vertical-align:middle;padding-right:6px"><span class="inegi-nav-desp enest_t"></span></i>' + tema.desc_tema; 11820 divTituloUl.style.padding = "0 0 0 10px"; 11821 divTituloUl.style.cursor = "pointer"; 11822 divTituloUl.onclick = function (e) { 11823 var t = $(this).find("i")[0].id.split("iLoc_")[1]; 11824 $("#listTema" + t).toggle(); 11825 if ($("#iLoc_" + t).html() == '<span class="inegi-nav-desp enest_t"></span>') { 11826 $("#iLoc_" + t).html('<span class="inegi-nav-despa enest_t"></span>') 11827 } else { 11828 $("#iLoc_" + t).html('<span class="inegi-nav-desp enest_t"></span>'); 11829 } 11830 } 11831 containerUl.appendChild(divTituloUl); 11832 11833 } 11834 if(tema.descripcion === "TITULO"){ 11835 var liInfo = LI.cloneNode(true); 11836 liInfo.style.backgroundColor = "#f9f9f9"; 11837 liInfo.style.color = "#157fcc"; 11838 liInfo.style.padding = "4px 0"; 11839 liInfo.style.paddingLeft = "10px;" 11840 liInfo.className = "cls-title"; 11841 var span = SPAN.cloneNode(true); 11842 span.style.fontWeight = "bold"; 11843 span.innerHTML = tema.valor; 11844 span.style.padding = "0px 10px"; 11845 liInfo.appendChild(span); 11846 11847 ulLoc5000.appendChild(liInfo); 11848 containerUl.appendChild(ulLoc5000); 11849 LOC_CONTAINER.appendChild(containerUl); 11850 11851 } else if(tema.descripcion === "NOTA"){ 11852 spanNotaLoc5000 = DIV.cloneNode(true); 11853 spanNotaLoc5000.innerHTML = "* "+tema.valor; 11854 11855 spanNotaLoc5000.style.fontSize = "11px"; 11856 $(ulLoc5000).append(spanNotaLoc5000) 11857 11858 } else { 11859 var liInfo = LI.cloneNode(true); 11860 liInfo.className = "list-group-item"; 11861 liInfo.style.borderLeft = "0"; 11862 liInfo.style.borderRight = "0"; 11863 liInfo.style.padding = "4px 15px"; 11864 var span = SPAN.cloneNode(true); 11865 span.innerHTML = "  "+ tema.descripcion+":"; 11866 span.style.fontWeight = "bold"; 11867 span.style.padding = "0px 10px"; 11868 liInfo.appendChild(span); 11869 var span = SPAN.cloneNode(true); 11870 span.innerHTML = tema.valor; 11871 liInfo.appendChild(span); 11872 11873 ulLoc5000.appendChild(liInfo); 11874 containerUl.appendChild(ulLoc5000); 11875 if(parametros.secc.indexOf("5") === -1){ 11876 containerUl.style.display = "none"; 11877 } 11878 LOC_CONTAINER.appendChild(containerUl); 11879 } 11880 11881 // if(data[index+1] !== undefined && data[index].tema !== data[index+1].tema){ 11882 11883 // let details = DETAILS.cloneNode(true); 11884 // details.setAttribute("open","open") 11885 // details.className = ""; details.style.padding = "0px"; 11886 // details.style.backgroundColor = "#f9f9f9"; 11887 // let divItems = UL.cloneNode(true); 11888 // divItems.classList.add("list-group") 11889 // divItems.style.minHeight = "300px" 11890 // divItems.style.maxHeight = "300px" 11891 // divItems.style.overflowY = "auto" 11892 // let summary = SUMMARY.cloneNode(true); 11893 // summary.style.backgroundColor = "#f9f9f9"; summary.style.color = "#157fcc"; summary.style.padding = "4px 0"; summary.style.paddingLeft = "10px;"; summary.className = "cls-title"; summary.style.cursor = "pointer"; 11894 11895 // var btnRequest = document.createElement("button"); 11896 // btnRequest.className = "btn btn-sm";
11896 btnRequest.innerHTML = "mostrar información"; 11897 11898 // btnRequest.addEventListener("click", (e) => { 11899 // e.preventDefault() 11900 // btnRequest.innerHTML = "Cargando..." 11901 // btnRequest.classList.add("disabled") 11902 // requestSCITEL(parametros.areaLocalidad, parametros.periodoLocalidad, tema.tema, (scitelDatos) => { 11903 // //SCITEL 11904 // console.log(scitelDatos) 11905 // if(scitelDatos !== null){ 11906 11907 // scitelDatos.forEach(ind => { 11908 // const nombre_indicador = ind.nombre; 11909 // const valor_indicador = ind.valor === null? "<small>Sin dato</small>" : INTLFormat.format(ind.valor); 11910 // const frecuencia_indicador = ind.desC_FREC; 11911 11912 // let liItem = LI.cloneNode(true); 11913 // liItem.classList.add("py-1") 11914 // liItem.style.padding = "4px 53px" 11915 // liItem.innerHTML = '<span class="d-inline"><strong>'+nombre_indicador+' ('+frecuencia_indicador+'):</strong></span> <span class="d-inline">'+ valor_indicador+'</span>' 11916 11917 // divItems.appendChild(liItem) 11918 // }); 11919 // details.appendChild(divItems) 11920 11921 // // bloquear boton 11922 // btnRequest.remove() 11923 // summary.style.display = "list-item"; 11924 11925 // } 11926 // }) 11927 // }) 11928 11929 11930 // var spanScitel = SPAN.cloneNode(true); 11931 // spanScitel.style.fontWeight = "bold"; 11932 // spanScitel.style.padding = "0px 10px"; 11933 11934 // summary.appendChild(spanScitel); 11935 // summary.appendChild(btnRequest); 11936 11937 // spanScitel.innerHTML = 'SCITEL'; 11938 // details.appendChild(summary) 11939 11940 // ulLoc5000.insertBefore(details, spanNotaLoc5000) 11941 11942 11943 11944 // } 11945 11946 } 11947 // } 11948 //nota al pie del contenido 11949 }); // termina el forEach 11950 11951 //inserta notas correspondientes a entorno urbano 11952 if(arrNotasEntornoUrbano.length > 0){ 11953 for(var n = 0; n < arrNotasEntornoUrbano.length; n++){ 11954 tableUrbano.after(arrNotasEntornoUrbano[n]); 11955 } 11956 } 11957 //inserta notas correspondientes a viviendas 11958 if(arrNotasVivienda.length > 0){ 11959 for(var n = 0; n < arrNotasVivienda.length; n++){ 11960 tableViviendas.after(arrNotasVivienda[n]); 11961 } 11962 } 11963 //inserta notas correspondientes a población 11964 if(arrNotasPoblacion.length > 0){ 11965 for(var n = 0; n < arrNotasPoblacion.length; n++){ 11966 tablePoblacion.after(arrNotasPoblacion[n]); 11967 } 11968 } 11969 11970 $(window).resize(function(e){
11971 var widthWindow = document.body.clientWidth; 11972 if(widthWindow >= 480){ 11973 $(".cls-ulInfoLocalidad").find(".cls-block-loc").css({width:"40%"}); 11974 11975 } else { 11976 $(".cls-ulInfoLocalidad").find(".cls-block-loc").css({width:"auto"}); 11977 11978 } 11979 }) 11980 var widthWindow = document.body.clientWidth; 11981 if(widthWindow >= 510){ 11982 $(".cls-ulInfoLocalidad").find(".cls-block-loc").css({width:"40%"}); 11983 11984 } else { 11985 $(".cls-ulInfoLocalidad").find(".cls-block-loc").css({width:"auto"}); 11986 11987 } 11988 11989 // TEMAS Y DATOS SCITEL 11990 // 30-07-2024 11991 if(catalogoTemasLocalidad.length > 0){ 11992 11993 //TITULO SECCION 11994 var tituloTemasLocalidad = DIV.cloneNode(false); 11995 tituloTemasLocalidad.innerHTML = "<strong>Información SCITEL</strong>"; 11996 tituloTemasLocalidad.style.backgroundColor = "#f1f1f1" 11997 tituloTemasLocalidad.style.padding = "8px 8px" 11998 tituloTemasLocalidad.style.marginTop = "10px" 11999 LOC_CONTAINER.appendChild(tituloTemasLocalidad); 12000 12001 // insertar titulo SCITEL 12002 catalogoTemasLocalidad.forEach((temaLocalidad) => { 12003 let divItemsLocalidad = UL.cloneNode(true); 12004 divItemsLocalidad.classList.add("list-group") 12005 divItemsLocalidad.id = "listTemaLoc"+temaLocalidad.id_tema; 12006 divItemsLocalidad.style.padding = "4px 53px" 12007 12008 12009 var divTituloTemaLoc = DIV.cloneNode(true); 12010 divTituloTemaLoc.innerHTML = '<i id="iTemaLoc_' + temaLocalidad.id_tema +'" style="font-size:10px;color:#bb0026;vertical-align:middle;padding-right:6px"><span class="inegi-nav-desp enest_t"></span></i>' + temaLocalidad.nombre; 12011 divTituloTemaLoc.style.padding = "8px 0 0 10px"; 12012 divTituloTemaLoc.style.cursor = "pointer"; 12013 12014 divTituloTemaLoc.onclick = function (e) { 12015 var t = $(this).find("i")[0].id.split("iTemaLoc_")[1]; 12016 $("#listTemaLoc" + t).toggle(); 12017 if ($("#iTemaLoc_" + t).html() == '<span class="inegi-nav-desp enest_t"></span>') { 12018 $("#iTemaLoc_" + t).html('<span class="inegi-nav-despa enest_t"></span>') 12019 if(!divTituloTemaLoc.getAttribute("loaded")){ 12020 divTituloTemaLoc.setAttribute("loaded",true) 12021 let liLoaded = LI.cloneNode(true); 12022 liLoaded.innerHTML = "Cargando..."; 12023 divItemsLocalidad.appendChild(liLoaded) 12024 divTituloTemaLoc.appendChild(divItemsLocalidad) 12025 // PETICION Y VALIDAR QUE YA SE CARGARON LOS DATOS 12026 requestSCITEL(parametros.areaLocalidad, parametros.periodoLocalidad, temaLocalidad.id_tema, (scitelDatos) => { 12027 //SCITEL 12028 if(scitelDatos !== null && scitelDatos.length > 0){ 12029 scitelDatos.forEach(ind => { 12030 const nombre_indicador = ind.nombre; 12031 const valor_indicador = ind.valor === null? "<small>Sin dato</small>" : INTLFormat.format(ind.valor); 12032 const frecuencia_indicador = ind.desC_FREC; 12033 let liItem = LI.cloneNode(true); 12034 liItem.classList.add("list-group-item") 12035 liItem.style.padding = "4px 15px" 12036 liItem.style.borderLeft = 0 12037 liItem.style.borderRight = 0 12038 liItem.innerHTML = '<span class="d-inline"><strong>'+nombre_indicador+' ('+frecuencia_indicador+'):</strong></span> <span class="d-inline">'+ valor_indicador+'</span>' 12039 divItemsLocalidad.appendChild(liItem) 12040 }); 12041 12042 } else { 12043 let liItem = LI.cloneNode(true); 12044 // liItem.classList.add("list-group-item") 12045 liItem.innerHTML = '<i>Sin datos</i>' 12046 divItemsLocalidad.appendChild(liItem) 12047 } 12048 divTituloTemaLoc.appendChild(divItemsLocalidad) 12049 liLoaded.style.display = "none"; 12050 12051 }) 12052 } 12053 } else { 12054 $("#iTemaLoc_" + t).html('<span class="inegi-nav-desp enest_t"></span>'); 12055 } 12056 } 12057 LOC_CONTAINER.appendChild(divTituloTemaLoc); 12058 }) 12059 } 12060 12061 } else if(parametros.modoVisualizacionLocalidades == "2") { // ver en pestañas navegables 12062 12063 /// ----------- ESTRUCTURA DE DATOS ------------------ 12064 var tmpTema = ""; // guardar el tema temporalmente 12065 var aTemas = []; // nuevo almacen del tema y sus datos 12066 var aDatosTema = [] // guarda todos los datos por tema 12067 12068 // -- recordar que el tema: 1 y 2 comparten datos parecidos. 12069 var index = null; 12070 var oD = {}; 12071 var l = false; 12072 data.map(function(t) { 12073 if(tmpTema != t.tema){ // si el tmpTema es diferente al de la ctual posición, se asigna el nuevo a tmpTema y guarda el objeto tema 12074 aDatosTema = [];// limpiamos para volver a llenar dependiendo del tema nuevo que se esta leyendo 12075 tmpTema = t.tema; 12076 l = false 12077 if(tmpTema > 5) l = true; 12078 // -- Generamos un arreglo de temas principales (Nuestras pestañas) 12079 aTemas.push({tema_id:t.tema, tema:t.desc_tema,loc5000:l,datos:[]}); 12080 index = aTemas.length-1; 12081 12082 } // else {// si el tema es igual al anterior (tmpTema) no guarda el objeto tema, pero si guarda los datos en el tema 12083 oD = {descripcion:t.descripcion,valor:t.valor} 12084 aDatosTema.push(oD); 12085 aTemas[index].datos = aDatosTema; 12086 12087 }); 12088 12089 // si existe el tema 2 fusionar arreglo de datos con el tema 1 12090 /* var temasCompartidos = aTemas.filter(function(t, index){ 12091 t.index = index; 12092 return t.tema_id === 0; 12093 })[0]; */ 12094 var temasCompartidos = aTemas.filter(function(t, index){ 12095 t.index = index; 12096 return t.tema_id === 1 || t.tema_id === 5; 12097 }); 12098 var aTemasFinal = []; 12099 var aIndexesIngore = []; 12100 if(temasCompartidos !== undefined && temasCompartidos.length > 1){ 12101 for(var x = 0; x < temasCompartidos.length; x++){ 12102 if(x > 0){ 12103 var aTemaDatosCombinado = aTemas[0].datos.concat(temasCompartidos[x].datos); 12104 aTemas[0].datos = aTemaDatosCombinado; 12105 aIndexesIngore.push(temasCompartidos[x].index) 12106 } 12107 } 12108 // pasamos a nuevo arreglos los datos finales 12109 aTemasFinal = aTemas.filter(function(tema, idx) { 12110 return aIndexesIngore.indexOf(tema.index) == -1; 12111 }) 12112 } else { 12113 aTemasFinal = aTemas; 12114 } 12115 12116 /// ----------- ARMADO DEL COMPONENTE PESTAÃAS ------------------ 12117 12118 var divCarruselTemas = document.createElement("div"); 12119 divCarruselTemas.id = "divCarouselTemas_" + parametros.contenedorCuadro; 12120 LOC_CONTAINER.appendChild(divCarruselTemas); 12121 // new carouselTemas(divCarruselTemas.id, aTemas, parametros.secc).render() 12122 new carouselTemas(divCarruselTemas.id, aTemasFinal, parametros.secc, parametros).render() 12123 12124 } 12125 } 12126 12127 //callback 12128 callback(); 12129 12130 //document.getElementById("divDatos" + parametros.contenedorCuadro).appendChild(LOC_CONTAINER); 12131 $("#tableStat" + parametros.contenedorCuadro).hide(); 12132 $("#TableEspacio" + parametros.contenedorCuadro).hide(); 12133 $("#divCargaCuadro" + parametros.contenedorCuadro).hide(); 12134 $(".clsHover").hover(function(){ 12135 $(this).css("background-color", "#ececec"); 12136 }, function(){ 12137 $(this).css("background-color", "#f9f7f7"); 12138 }); 12139 $(".cls-tooltip").tooltip(); 12140 } 12141 /** 12142 * Petición para obtener los datos de SCITEL por tema/periodo/area 12143 * @param {*} area 12144 * @param {*} periodo 12145 * @param {*} tema 12146 * @param {*} cb 12147 * @returns 12148 */ 12149 function requestSCITEL(area, periodo, tema, cb){ 12150 if(area !== null && periodo !== null && tema !== null){ 12151 // tema = "123"; 12152 // periodo = "2020";
12153 $.getJSON(C_dominioBuscador+"app/api/indicadores/internalocalidades_v1_1/DatosIndicadoresSCITEL?tema="+tema+"&periodo="+periodo+"&areageo="+area, function (data) { 12154 cb(data) 12155 }) 12156 } else { 12157 cb(null) 12158 } 12159 } 12160 12161 /** 12162 * Exportacion XLS de datos localidades (México en cifras) 12163 * fecha: 17-09-2021 12164 * @param {*} data 12165 * @param {*} parametros 12166 */ 12167 function exportXLSLocalidades(parametros, data) { 12168 12169 var tableDataType = 'data:application/vnd.ms-excel;base64,'; 12170 var template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>' 12171 var base64 = function (s) { return window.btoa(unescape(encodeURIComponent(s))) } 12172 var format = function (s, c) { return s.replace(/{(\w+)}/g, function (m, p) { return c[p]; }) } 12173 12174 var htmlContenido = document.getElementById("divDatos"+parametros.contenedorCuadro); 12175 var nodosContenido = htmlContenido.childNodes[1].childNodes; 12176 var totalNodosContenido = nodosContenido.length; 12177 var divContenido = document.createElement("div"); 12178 var table = document.createElement("table"); 12179 var tr = document.createElement("tr"); 12180 var th = document.createElement("th"); 12181 var td = document.createElement("td"); 12182 12183 // info localidad 12184 var tableInfo = table.cloneNode(true); 12185 tableInfo.style.fontFamily = "Arial"; 12186 tableInfo.style.fontSize = "13px"; 12187 tableInfo.append(tr.cloneNode(true)); 12188 12189 var infoParte1 = nodosContenido.item(0).childNodes.item(0) 12190 var infoParte2 = nodosContenido.item(0).childNodes.item(1) 12191 12192 for(var i = 0; i < infoParte1.childNodes.length; i++){ 12193 var aTexto = infoParte1.childNodes[i].textContent.split(":"); 12194 trInfo = tr.cloneNode(true); 12195 thInfo = th.cloneNode(true); 12196 thInfo.colSpan = 2 12197 thInfo.style.textAlign = "right"; 12198 thInfo.style.backgroundColor = "#dfdfdf"; 12199 thInfo.textContent = aTexto[0] 12200 tdInfo = td.cloneNode(true); 12201 tdInfo.colSpan = 4 12202 tdInfo.textContent = aTexto[1] 12203 12204 trInfo.append(thInfo) 12205 trInfo.append(tdInfo) 12206 tableInfo.append(trInfo) 12207 } 12208 if(infoParte2 !== null){ 12209 for(var i = 0; i < infoParte2.childNodes.length; i++){ 12210 var aTexto = infoParte2.childNodes[i].textContent.split(":"); 12211 var trInfo = tr.cloneNode(true); 12212 var thInfo = th.cloneNode(true); 12213 thInfo.colSpan = 2 12214 thInfo.style.textAlign = "right"; 12215 thInfo.style.backgroundColor = "#dfdfdf"; 12216 thInfo.textContent = aTexto[0] 12217 var tdInfo = td.cloneNode(true); 12218 tdInfo.colSpan = 4 12219 tdInfo.textContent = aTexto[1] 12220 12221 trInfo.append(thInfo) 12222 trInfo.append(tdInfo) 12223 tableInfo.appendChild(trInfo) 12224 } 12225 } 12226 12227 // Contenido fichas localidad 12228 var tableInfoListado = table.cloneNode(true); 12229 tableInfoListado.style.fontFamily = "Arial"; 12230 tableInfoListado.style.fontSize = "13px"; 12231 tableInfoListado.append(tr.cloneNode(true)) // espacio o salto de linea 12232 12233 for(var i = 0; i < totalNodosContenido; i++){ 12234 if(i > 0){ 12235 // sacamos el titulo de cada seccion 12236 var sTitulo = nodosContenido[i].childNodes[0].textContent.split(":"); 12237 12238 var trInfoC = tr.cloneNode(true); 12239 var thInfoC = th.cloneNode(true); 12240 thInfoC.colSpan = 5; 12241 thInfoC.textContent = sTitulo ; 12242 thInfoC.style.fontSize = "13px"; 12243 thInfoC.style.backgroundColor = "#c8c8c8"; 12244 trInfoC.append(thInfoC); 12245 tableInfoListado.appendChild(tr.cloneNode(true)); 12246 var trInfoC2 = tr.cloneNode(true); 12247 var tdInfoC2 = td.cloneNode(true); 12248 tdInfoC2.colSpan = 6; 12249 tableInfoListado.appendChild(trInfoC); 12250 tableInfoListado.appendChild(trInfoC2); 12251 12252 // inserta lista o cuadro segun sea el caso del titulo de la seccion 12253 var tableListaContenido = table.cloneNode(true); 12254 tableListaContenido.style.fontFamily = "Arial"; 12255 tableListaContenido.style.fontSize = "13px"; 12256 12257 //sacamos el contenido de las secciones 12258 var ulItems = nodosContenido[i].childNodes; // 0 => titulo de subseccion 12259 12260 // tablas y listas de contenido 12261 if(ulItems[1].tagName === "UL"){ 12262 12263 var aLis = ulItems[1].childNodes; 12264 for(var j = 0; j < aLis.length; j++){ 12265 12266 if(aLis[j].className === "cls-title"){ // titulo de la seccion de cada lista interna 12267 var trInfoC3 = tr.cloneNode(true); 12268 var tdInfoC4 = td.cloneNode(true); 12269 var tdInfoC3 = td.cloneNode(true); 12270 tdInfoC3.colSpan = 5; 12271 tdInfoC3.style.fontSize = "13px"; 12272 tdInfoC3.style.backgroundColor = "#c8c8c8"; 12273 tdInfoC3.textContent = " > "+aLis[j].textContent; 12274 tdInfoC3.style.fontWeight = "bold"; 12275 trInfoC3.append(tdInfoC3) 12276 tableListaContenido.append(trInfoC3) 12277 12278 } else if(aLis[j].nodeName === "DETAILS"){ 12279 12280 var trInfoC3 = tr.cloneNode(true); 12281 var spanItems = aLis[j].childNodes // contenido de un LI = 2 <span> 12282 if(spanItems[1] !== undefined){ // Quiere decir que contiene datos de SCITEL (15-07-2024) 12283 12284 // titulo 12285 var trInfoC3 = tr.cloneNode(true); 12286 var tdInfoC4 = td.cloneNode(true); 12287 var tdInfoC3 = td.cloneNode(true); 12288 tdInfoC3.colSpan = 5; 12289 tdInfoC3.style.fontSize = "13px"; 12290 tdInfoC3.style.backgroundColor = "#c8c8c8"; 12291 tdInfoC3.textContent = " > "+spanItems[0].textContent; 12292 tdInfoC3.style.fontWeight = "bold"; 12293 trInfoC3.append(tdInfoC3) 12294 tableListaContenido.append(trInfoC3) 12295 12296 //lista de items 12297 let scitelLi = spanItems[1].childNodes; 12298 for(var k = 0; k < scitelLi.length; k++){ 12299 let spanItems = scitelLi[
12299k].childNodes; 12300 var trInfoC3 = tr.cloneNode(true); 12301 var thInfoC4 = th.cloneNode(true); 12302 thInfoC4.style.textAlign = "right"; 12303 thInfoC4.style.fontWeight = "bold"; 12304 var tdInfoC5 = td.cloneNode(true); 12305 12306 thInfoC4.textContent = spanItems[0].textContent; 12307 tdInfoC5.textContent = spanItems[1] !== undefined ? spanItems[1].textContent : ""; 12308 trInfoC3.append(thInfoC4) 12309 trInfoC3.append(tdInfoC5); 12310 tableListaContenido.append(trInfoC3) 12311 } 12312 } 12313 12314 } else { // LI HTML TAG 12315 12316 var trInfoC3 = tr.cloneNode(true); 12317 var spanItems = aLis[j].childNodes // contenido de un LI = 2 <span> 12318 var thInfoC4 = aLis[j].tagName === "LI"? th.cloneNode(true) : td.cloneNode(true); 12319 thInfoC4.style.textAlign = "right"; 12320 thInfoC4.style.fontWeight = "normal"; 12321 var tdInfoC5 = td.cloneNode(true); 12322 if(aLis[j].tagName === "DIV") {thInfoC4.colSpan = 2; thInfoC4.style.textAlign = "left"} 12323 thInfoC4.textContent = spanItems[0].textContent; 12324 tdInfoC5.textContent = spanItems[1] !== undefined ? spanItems[1].textContent : ""; 12325 trInfoC3.append(thInfoC4) 12326 trInfoC3.append(tdInfoC5); 12327 tableListaContenido.append(trInfoC3) 12328 } 12329 } 12330 12331 } else if(ulItems[1].tagName === "TABLE"){ 12332 ulItems[1].style.fontFamily = "Arial"; 12333 ulItems[1].style.fontSize = "13px"; 12334 var tableCLone = ulItems[1].cloneNode(true); 12335 // actualiza la alineacion de los valores alfanumericos de las tablas de datos de localidades y que se ubiquen a la izquierda 12336 var tableChildNodes = tableCLone.childNodes[1].childNodes; 12337 tableChildNodes.forEach(function(tr,idx){ 12338 var celdaNumericas =tableCLone.childNodes[1].childNodes[idx].childNodes; 12339 celdaNumericas.forEach(function(trc,idc){ 12340 tableCLone.childNodes[1].childNodes[idx].childNodes[idc].style.textAlign = "left" 12341 }) 12342 12343 }) 12344 var trInfoC3 = tr.cloneNode(true); 12345 var tdInfoC4 = td.cloneNode(true); 12346 tdInfoC4.appendChild(tableCLone); 12347 trInfoC3.append(tdInfoC4) 12348 tableListaContenido.append(trInfoC3) 12349 12350 // Notas pie de contenido (en tablas es un div, las otras notas se incluyen en el ultimo item de las ul) 12351 var sNota = nodosContenido[i].childNodes[2] !== undefined? nodosContenido[i].childNodes[2].textContent : ""; 12352 if(sNota !== ""){ 12353 var trNota = tr.cloneNode(true); 12354 var tdNota = td.cloneNode(true); 12355 tdNota.colSpan = 4; 12356 tdNota.style.fontSize = "13px"; 12357 var htmlNota = nodosContenido[i].childNodes[2].textContent; 12358 htmlNota = htmlNota.replace(/Fuente/i," Fuente") 12359 htmlNota = htmlNota.replace(/\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s/g, " "); 12360 tdNota.innerHTML = htmlNota 12361 trNota.append(tdNota); 12362 12363 tableListaContenido.append(trNota) 12364 } 12365 } 12366 tdInfoC2.append(tableListaContenido); 12367 trInfoC2.append(tdInfoC2) 12368 } 12369 } 12370 divContenido.append(tableInfo); 12371 divContenido.style.fontFamily = "Arial"; 12372 divContenido.append(tableInfoListado); 12373 var tableResult = '<table style="font-family:\'Arial\'">' 12374 +'<tr><td colspan="9" align="center" style="font-size:16px;font-weight:bold">
12374'+ getTraductorCuadro(parametros, "Instituto Nacional de EstadÃstica y GeografÃa") +' (INEGI)</td></tr>' 12375 +'<tr><td colspan="9" align="center" style="font-size:15px;font-weight:bold">'+ getTraductorCuadro(parametros, "México en Cifras") +' ('+ getTraductorCuadro(parametros, "Localidades") +')</td></tr>' 12376 // +'<tr><td colspan="9" align="center" style="font-size:15px;font-weight:bold">Localidades</td></tr>' 12377 +'<tr><td colspan="9" style="font-size:12px;">'+ getTraductorCuadro(parametros,"Fecha de consulta") +': '+ getDateF2().todayFormat +'</td></tr>' 12378 +'</table>' 12379 var spaceTable = "<table><tr></tr></table>" 12380 var fileName = 'Mexicoencifras_localidades_'+ getDateF2().today +'.xls'; 12381 var excelFileURL = document.createElement("a"); 12382 document.body.appendChild(excelFileURL); 12383 12384 var ctx = { worksheet: 'México en cifras', table: tableResult + divContenido.innerHTML} 12385 if(navigator.msSaveOrOpenBlob){ 12386 var blob = new Blob(['\ufeff', tableResult], { 12387 type: TableDataType 12388 }); 12389 navigator.msSaveOrOpenBlob( blob, fileName); 12390 }else{ 12391 excelFileURL.href = tableDataType + base64(format(template, ctx)); 12392 excelFileURL.download = fileName; 12393 excelFileURL.click(); 12394 } 12395 12396 } 12397 12398 /** 12399 * LOCALIDADES VERSION UN ARRAY COMPLETO ORDENADO V3 12400 * ACTUALMENTE EN USO 12401 * Cuadro #18 - Datos de la localidad (metodo: datosLocalidadTema/) 12402 * @param data 12403 * @param parametros 12404 */ 12405 function DibujaCuadroTipo18_LocalidadesV3(data, parametros) { 12406 if ($("#divDatos" + parametros.contenedorCuadro)) { 12407 $("#divDatos" + parametros.contenedorCuadro).empty(); 12408 } 12409 // console.log(data); 12410 12411 // estructuras de datos 12412 var idioma = parametros.idioma; 12413 //elementos HTML para el armado de las secciones 12414 var LOC_CONTAINER = document.createElement("div"); // contenedor principal de localidades 12415 var UL = document.createElement("ul"); 12416 var LI = document.createElement("li"); 12417 var SPAN = document.createElement("span"); 12418 SPAN.style.display = "inline-block"; 12419 SPAN.style.verticalAlign = "middle"; 12420 var DIV = document.createElement("div"); 12421 DIV.style.paddingTop = "8px"; 12422 var TABLE = document.createElement("table"); TABLE.className = 'table table-bordered table-responsive table-striped'; 12423 TABLE.style.width = "auto"; 12424 TABLE.style.margin = "0 25px"; 12425 var TR = document.createElement("tr"); 12426 var TD = document.createElement("td"); 12427 var TH = document.createElement("th"); 12428 // console.log(data); 12429 12430 12431 // validacion sino llega ningun dato entonces coloca el nensaje "Sin datos" 12432 if (data.length === 0) { 12433 12434 var divNodatos = document.createElement("div"); 12435 divNodatos.innerHTML = (idioma === "es"? "No se encontraron resultados" : "No found results"); 12436 LOC_CONTAINER.appendChild(divNodatos); 12437 12438 } else { 12439 12440 // tema 1 infolocalidad 12441 var ulInfo = null; 12442 var cAgrupador = 0; 12443 var tmpInfoLocalidad = null; 12444 var divContainerInformacionLocalidad = DIV.cloneNode(true); 12445 12446 // temsa 5 loc5000 12447 var ulIdentificacion = null; 12448 var clavesPath = ""; 12449 var tmpLocUbicacionGeografica = []; 12450 // var notaFinal = false; 12451 data.forEach(function(tema, index){ // recorre el arreglo completo de datos 12452 if(parametros.secc.indexOf("1") > -1){ 12453 12454 if(tema.tema === 1){ 12455 // seccion infoLocalidad ------------------------------------------------ 12456 if(ulInfo == null){ 12457 ulInfo = UL.cloneNode(true); 12458 // ulInfo.style.border = "1px solid #cecece"; 12459 ulInfo.style.padding = "0px";
12460 ulInfo.style.marginBottom = "0px"; 12461 ulInfo.style.listStyleType = "none"; 12462 } 12463 if (tema.descripcion.indexOf("Clave de entidad federativa") > -1 || tema.descripcion.indexOf("Clave de municipio") > -1){ 12464 clavesPath = clavesPath + tema.valor; 12465 } 12466 12467 //for(i in infoLocalidad){ 12468 if(cAgrupador == 0){ 12469 tmpInfoLocalidad = tema; 12470 cAgrupador++; 12471 } else { 12472 cAgrupador = 0; 12473 var liInfo = LI.cloneNode(true); 12474 var span = SPAN.cloneNode(true); 12475 span.innerHTML = tema.descripcion+":"; 12476 // span.style.width = "50%"; 12477 span.style.padding = "0px 10px"; 12478 span.style.fontWeight = "600"; 12479 liInfo.appendChild(span); 12480 var span = SPAN.cloneNode(true); 12481 var a = document.createElement("a"); 12482 if (tmpInfoLocalidad.descripcion.indexOf("localidad") === -1) { 12483 a.setAttribute("href", C_dominioBuscador+"app/areasgeograficas?ag=" + clavesPath); 12484 a.setAttribute("target","_blank"); 12485 a.style.cursor = "pointer"; 12486 // console.log(tema) 12487 // console.log(clavesPath); 12488 a.innerHTML = (tema.descripcion === "Municipio") ? clavesPath + " " + tema.valor : tmpInfoLocalidad.valor + " " + tema.valor; 12489 span.appendChild(a); 12490 } else { 12491 span.innerHTML = (tema.descripcion === "Localidad") ? clavesPath + tmpInfoLocalidad.valor + " " + tema.valor : tmpInfoLocalidad.valor + " " + tema.valor; 12492 } 12493 12494 liInfo.appendChild(span); 12495 ulInfo.appendChild(liInfo); 12496 } 12497 //} 12498 divContainerInformacionLocalidad.appendChild(ulInfo) 12499 // LOC_CONTAINER.appendChild(ulInfo); 12500 12501 } else if(tema.tema === 5 && tema.descripcion !== "NOTA"){ 12502 // seccion identificacion (en loc5000)------------------------------------------------ 12503 if(ulIdentificacion == null){ 12504 ulIdentificacion = UL.cloneNode(true); 12505 // ulIdentificacion.style.border = "1px solid #cecece"; 12506 ulIdentificacion.style.padding = "0px"; 12507 ulIdentificacion.style.listStyleType = "none"; 12508 } 12509 if(tema.descripcion === "TITULO"){ 12510 // var liInfo = LI.cloneNode(true); 12511 // liInfo.style.backgroundColor = "#ddd"; 12512 // liInfo.style.paddingLeft = "10px;" 12513 // var span = SPAN.cloneNode(true); 12514 // span.innerHTML = Loc5000[i].valor; 12515 // span.style.fontWeight = "600"; 12516 // span.style.padding = "4px 10px"; 12517 // liInfo.appendChild(span); 12518 } else { 12519 var liInfo = LI.cloneNode(true); 12520 var span = SPAN.cloneNode(true); 12521 if(tema.descripcion.indexOf("Latitud") > -1 || tema.descripcion.indexOf("Longitud") > -1 || tema.descripcion.indexOf("Altitud") > -1){ 12522 tmpLocUbicacionGeografica.push(tema); 12523 if(tmpLocUbicacionGeografica.length === 3){ // si no es coordenada grografica el proceso es normal 12524 var valor = "Longitud "+tmpLocUbicacionGeografica[0].valor +", Latitud "+tmpLocUbicacionGeografica[1].valor +", Altitud "+tmpLocUbicacionGeografica[2].valor; 12525 span.innerHTML = "Ubicación geográfica:"; 12526 span.style.padding = "0px 10px"; 12527 span.style.fontWeight = "600"; 12528 liInfo.appendChild(span); 12529 var span = SPAN.cloneNode(true); 12530 span.innerHTML = valor; 12531 liInfo.appendChild(span); 12532 ulIdentificacion.appendChild(liInfo); 12533 } 12534 } else { 12535 span.innerHTML = tema.descripcion+":"; 12536 // span.style.width = "50%"; 12537 span.style.padding = "0px 10px"; 12538 span.style.fontWeight = "600"; 12539 liInfo.appendChild(span); 12540 var span = SPAN.cloneNode(true); 12541 if(tema.descripcion.indexOf("Cabecera municipal") > -1){ 12542 cveLoc = tema.valor.substring(tema.valor.indexOf("(") + 1, tema.valor.length-1); 12543 var a = document.createElement("a"); 12544 a.setAttribute("href", C_dominioBuscad
12544or+"app/areasgeograficas?ag=" + cveLoc); 12545 a.setAttribute("target","_blank"); 12546 a.style.cursor = "pointer"; 12547 //invierte valor 12548 var valor = tema.valor; 12549 if(valor.indexOf("(") > -1){ 12550 var valor1 = tema.valor.substring(0, tema.valor.indexOf('(')-1); 12551 var valor2 = tema.valor.substring(tema.valor.indexOf('('), tema.valor.length); 12552 valor = valor2.replace("(","").replace(")","") + " " + valor1; 12553 } 12554 a.innerHTML = valor; 12555 span.appendChild(a); 12556 } else { 12557 span.innerHTML = tema.valor; 12558 } 12559 liInfo.appendChild(span); 12560 ulIdentificacion.appendChild(liInfo); 12561 } 12562 12563 } 12564 divContainerInformacionLocalidad.appendChild(ulIdentificacion); 12565 } 12566 // divContainerInformacionLocalidad.style.border = "1px solid #ddd"; 12567 LOC_CONTAINER.appendChild(divContainerInformacionLocalidad); 12568 } 12569 }); 12570 12571 //viviendas 12572 var containerViviendas = null; 12573 var tableViviendas = null 12574 var theadViviendas = null; 12575 var tbodyViviendas = null; 12576 12577 //poblacion 12578 var containerPoblacion = null; 12579 var tablePoblacion = null; 12580 var theadPoblacion = null; 12581 var tbodyPoblacion = null; 12582 12583 //urbano 12584 var containerUrbano = null; 12585 var tableUrbano = null; 12586 var theadUrbano = null; 12587 var tbodyUrbano = null; 12588 var isHeader = 0; // variable de control, 0 = es encabezado 0+ son datos (solo para el cuadro en datos urbanos) 12589 12590 // temas mayores al 5 12591 var temaTmp = 0; 12592 var containerUl = null; 12593 var ulLoc5000 = null; 12594 12595 //arreglo de notas vivienda, poblacion, entorno urbano 12596 var arrNotasVivienda = []; 12597 var arrNotasPoblacion = []; 12598 var arrNotasEntornoUrbano = []; 12599 var spanNotaLoc5000 = ""; 12600 12601 data.forEach(function(tema, index){ // recorre el arreglo completo de datos 12602 12603 // console.log(tema); 12604 /* if(parametros.secc.indexOf("1") > -1){ 12605 12606 if(tema.tema === 1){ 12607 // seccion infoLocalidad ------------------------------------------------ 12608 if(ulInfo == null){ 12609 ulInfo = UL.cloneNode(true); 12610 // ulInfo.style.border = "1px solid #cecece"; 12611 ulInfo.style.padding = "0px"; 12612 ulInfo.style.marginBottom = "0px"; 12613 ulInfo.style.listStyleType = "none"; 12614 } 12615 12616 //for(i in infoLocalidad){ 12617 if(cAgrupador == 0){ 12618 tmpInfoLocalidad = tema; 12619 cAgrupador++; 12620 } else { 12621 cAgrupador = 0; 12622 var liInfo = LI.cloneNode(true); 12623 var span = SPAN.cloneNode(true); 12624 span.innerHTML = tema.descripcion+":"; 12625 // span.style.width = "50%"; 12626 span.style.padding = "4px 10px"; 12627 span.style.fontWeight = "600"; 12628 liInfo.appendChild(span); 12629 var span = SPAN.cloneNode(true); 12630 var a = document.createElement("a"); 12631 if(tmpInfoLocalidad.descripcion.indexOf("localidad") === -1){ 12632 a.setAttribute("href","/app/areasgeograficas?ag="+((tmpInfoLocalidad.valor.length == 3)? "0"+tmpInfoLocalidad.valor : tmpInfoLocalidad.valor)); 12633 a.setAttribute("target","_self"); 12634 a.style.cursor = "pointer"; 12635 a.innerHTML = tmpInfoLocalidad.valor + " " + tema.valor; 12636 span.appendChild(a); 12637 } else { 12638 span.innerHTML = tmpInfoLocalidad.valor + " " + tema.valor; 12639 } 12640 12641 liInfo.appendChild(span); 12642 ulInfo.appendChild(liInfo); 12643 } 12644 //} 12645 divContainerInformacionLocalidad.appendChild(ulInfo) 12646 // LOC_CONTAINER.appendChild(ulInfo); 12647 12648 } else if(tema.tema === 5){ 12649 // seccion identificacion (en loc5000)------------------------------------------------ 12650 if(ulIdentificacion == null){ 12651 ulIdentificacion = UL.cloneNode(true); 12652 // ulIdentificacion.style.border = "1px solid #cecece"; 12653 ulIdentificacion.style.padding = "0px"; 12654 ulIdentificacion.style.listStyleType = "none"; 12655 } 12656 if(tema.descripcion === "TITULO"){ 12657 // var liInfo = LI.cloneNode(true); 12658 // liInfo.style.backgroundColor = "#ddd"; 12659 // liInfo.style.paddingLeft = "10px;" 12660 // var span = SPAN.cloneNode(true); 12661 // span.innerHTML = Loc5000[i].valor; 12662 // span.style.fontWeight = "600"; 12663 // span.style.padding = "4px 10px"; 12664 // liInfo.appendChild(span); 12665 } else { 12666 var liInfo = LI.cloneNode(true); 12667 var span = SPAN.cloneNode(true); 12668 if(tema.descripcion.indexOf("Latitud") > -1 || tema.descripcion.indexOf("Longitud") > -1 || tema.descripcion.indexOf("Altitud") > -1){ 12669 tmpLocUbicacionGeografica.push(tema); 12670 if(tmpLocUbicacionGeografica.length === 3){ // si no es coordenada grografica el proceso es normal 12671 var valor = "Longitud "+tmpLocUbicacionGeografica[0].valor + ", Latitud "+tmpLocUbicacionGeografica[1].valor+", Altitud "+tmpLocUbicacionGeografica[2].valor; 12672 span.innerHTML = "Ubicación geográfica:"; 12673 span.style.padding = "4px 10px"; 12674 span.style.fontWeight = "600"; 12675 liInfo.appendChild(span); 12676 var span = SPAN.cloneNode(true); 12677 span.innerHTML = valor; 12678 liInfo.appendChild(span); 12679 ulIdentificacion.appendChild(liInfo); 12680 } 12681 } else { 12682 12683 span.innerHTML = tema.descripcion+":"; 12684 // span.style.width = "50%"; 12685 span.style.padding = "4px 10px"; 12686 span.style.fontWeight = "600"; 12687 liInfo.appendChild(span); 12688 var span = SPAN.cloneNode(true); 12689 if(tema.descripcion.indexOf("Cabecera municipal") > -1){ 12690 cveLoc = tema.valor.substring(tema.valor.indexOf("(")+1,19); 12691 var a = document.createElement("a"); 12692 a.setAttribute("href","/app/areasgeograficas?ag="+ cveLoc); 12693 a.setAttribute("target","_self"); 12694 a.style.cursor = "pointer"; 12695 a.innerHTML = tema.valor; 12696 span.appendChild(a); 12697 } else { 12698 span.innerHTML = tema.valor; 12699 } 12700 liInfo.appendChild(span); 12701 ulIdentificacion.appendChild(liInfo); 12702 } 12703 12704 } 12705 divContainerInformacionLocalidad.appendChild(ulIdentificacion); 12706 } 12707 divContainerInformacionLocalidad.style.border = "1px solid #ddd"; 12708 LOC_CONTAINER.appendChild(divContainerInformacionLocalidad); 12709 } */ 12710 12711 if(parametros.secc.indexOf("2") > -1){ 12712 var contViviendaCoL = 0; 12713 // seccion vivienda ------------------------------------------------ 12714 if(tema.tema === 3){ 12715 // console.log(tema); 12716 if(containerViviendas === null){ 12717 containerViviendas = DIV.cloneNode(true); 12718 tableViviendas = TABLE.cloneNode(true); 12719 tableViviendas.id = "tableViviendas"; 12720 tableViviendas.style.display = "none"; 12721 tableViviendas.style.marginTop = "10px"; 12722 theadViviendas = document.createElement("thead"); 12723 tbodyViviendas = document.createElement("tbody"); 12724 12725 var divTituloViviendas = DIV.cloneNode(true); 12726 divTituloViviendas.innerHTML = '<i id="iViviendas" style="font-size:10px;color:#bb0026;vertical-align:middle;padding-right:6px"><span class="inegi-nav-desp enest_t"></span></i>CaracterÃsticas de las viviendas'; 12727 // divTituloViviendas.style.backgroundColor = "#f9f7f7"; 12728 // divTituloViviendas.style.fontWeight = "bold"; 12729 divTituloViviendas.style.padding = "0 0 0 10px"; 12730 // divTituloViviendas.style.marginBottom = "10px"; 12731 divTituloViviendas.style.cursor = "pointer"; 12732 // divTituloViviendas.className = "clsHover"; 12733 divTituloViviendas.onclick = function (e) { 12734 // var t = $(this).find("i")[0].id.split("iLoc_")[1]; 12735 $("#tableViviendas").toggle(); 12736 $(".spanVivienda").toggle(); 12737 if ($("#iViviendas").html() == '<span class="inegi-nav-desp enest_t"></span>') { 12738 $("#iViviendas").html('<span class="inegi-nav-despa enest_t"></span>') 12739 } else { 12740 $("#iViviendas").html('<span class="inegi-nav-desp enest_t"></span>'); 12741 } 12742 } 12743 containerViviendas.appendChild(divTituloViviendas); 12744 } 12745 12746 if(tema.valor === "Total"){ 12747 var tr = TR.cloneNode(true); 12748 var th = TH.cloneNode(true); 12749 th.innerHTML = "Viviendas"; 12750 th.className = "Th" 12751 tr.appendChild(th); 12752 var th = TH.cloneNode(true); 12753 th.className = "Th" 12754 th.innerHTML = tema.valor; 12755 tr.appendChild(th); 12756 theadViviendas.appendChild(tr); 12757 12758 } else if(tema.descripcion === "NOTA") { 12759 var spanNota = DIV.cloneNode(true); 12760 spanNota.innerHTML = tema.valor; 12761 spanNota.style.fontSize = "11px"; 12762 // spanNota.id = "spanVivienda"; 12763 spanNota.className = "spanVivienda"; 12764 spanNota.style.display = "none"; 12765 spanNota.style.margin = "0 25px"; 12766 12767 } else { 12768 var tr = TR.cloneNode(true); 12769 var td = TD.cloneNode(true); 12770 td.innerHTML = tema.descripcion; 12771 td.style.width = "auto"; 12772 tr.appendChild(td); 12773 var td = TD.cloneNode(true); 12774 td.innerHTML = tema.valor; 12775 td.className = "TdV" 12776 tr.appendChild(td); 12777 tbodyViviendas.appendChild(tr) 12778 } 12779 tableViviendas.appendChild(theadViviendas); 12780 tableViviendas.appendChild(tbodyViviendas); 12781 12782 containerViviendas.appendChild(tableViviendas); 12783 if(spanNota) { 12784 // containerViviendas.appendChild(spanNota); 12785 arrNotasVivienda.push(spanNota) 12786 // tableViviendas.after(spanNota); 12787 } 12788 LOC_CONTAINER.appendChild(containerViviendas); 12789 } 12790 } 12791 12792 if(parametros.secc.indexOf("3") > -1){ 12793 // seccion poblacion ------------------------------------------------ 12794 if(tema.tema === 4){ 12795 if(con
12795tainerPoblacion === null){ 12796 containerPoblacion = DIV.cloneNode(true); 12797 tablePoblacion = TABLE.cloneNode(true); 12798 theadPoblacion = document.createElement("thead"); 12799 tbodyPoblacion = document.createElement("tbody"); 12800 tablePoblacion.id = "tablePoblacion"; 12801 tablePoblacion.style.display = "none"; 12802 tablePoblacion.style.marginTop = "10px"; 12803 12804 var divTituloPoblacion = DIV.cloneNode(true); 12805 divTituloPoblacion.innerHTML = '<i id="iPoblacion" style="font-size:10px;color:#bb0026;vertical-align:middle;padding-right:6px"><span class="inegi-nav-desp enest_t"></span></i>CaracterÃsticas de la población'; 12806 // divTituloPoblacion.style.backgroundColor = "#f9f7f7"; 12807 // divTituloPoblacion.style.fontWeight = "bold"; 12808 divTituloPoblacion.style.padding = "0 0 0 10px"; 12809 // divTituloPoblacion.style.marginBottom = "10px"; 12810 divTituloPoblacion.style.cursor = "pointer"; 12811 // divTituloPoblacion.className = "clsHover"; 12812 // divTituloPoblacion.style.fontSize = "14px"; 12813 divTituloPoblacion.onclick = function (e) { 12814 // var t = $(this).find("i")[0].id.split("iLoc_")[1]; 12815 $("#tablePoblacion").toggle(); 12816 $(".spanPoblacion").toggle(); 12817 if ($("#iPoblacion").html() == '<span class="inegi-nav-desp enest_t"></span>') { 12818 $("#iPoblacion").html('<span class="enest_t inegi-nav-despa"></span>') 12819 } else { 12820 $("#iPoblacion").html('<span class="inegi-nav-desp enest_t"></span>'); 12821 } 12822 } 12823 containerPoblacion.appendChild(divTituloPoblacion); 12824 } 12825 12826 if(tema.valor === "Total"){ 12827 var tr = TR.cloneNode(true); 12828 var th = TH.cloneNode(true); 12829 th.innerHTML = "Población"; 12830 // th.innerHTML = tema.descripcion; 12831 th.className = "Th" 12832 tr.appendChild(th); 12833 var th = TH.cloneNode(true); 12834 th.className = "Th" 12835 th.innerHTML = tema.valor; 12836 tr.appendChild(th); 12837 theadPoblacion.append(tr); 12838 12839 } else if(tema.descripcion === "NOTA") { 12840 var spanNotaP = DIV.cloneNode(true); 12841 spanNotaP.innerHTML = tema.valor; 12842 spanNotaP.style.fontSize = "11px"; 12843 spanNotaP.className = "spanPoblacion"; 12844 spanNotaP.style.display = "none"; 12845 spanNotaP.style.margin = "0 25px"; 12846 } else { 12847 var tr = TR.cloneNode(true); 12848 var td = TD.cloneNode(true); 12849 td.innerHTML = tema.descripcion; 12850 tr.appendChild(td); 12851 var td = TD.cloneNode(true); 12852 td.innerHTML = tema.valor; 12853 td.className = "TdV"; 12854 tr.appendChild(td); 12855 tbodyPoblacion.appendChild(tr) 12856 } 12857 tablePoblacion.appendChild(theadPoblacion); 12858 tablePoblacion.appendChild(tbodyPoblacion); 12859 12860 containerPoblacion.appendChild(tablePoblacion); 12861 if(spanNotaP){ 12862 // containerPoblacion.appendChild(spanNotaP); 12863 arrNotasPoblacion.push(spanNotaP); 12864 } 12865 12866 LOC_CONTAINER.appendChild(containerPoblacion); 12867 } 12868 } 12869 12870 if (parametros.secc.indexOf("4") > -1) { 12871 // seccion entorno urbano ------------------------------------------------ 12872 if(tema.tema === 2){ 12873 12874 if(containerUrbano === null){
12875 containerUrbano = DIV.cloneNode(true); 12876 tableUrbano = TABLE.cloneNode(true); 12877 theadUrbano = document.createElement("thead"); 12878 tbodyUrbano = document.createElement("tbody"); 12879 tableUrbano.id = "tableUrbano"; 12880 tableUrbano.style.display = "none"; 12881 tableUrbano.style.marginTop = "10px"; 12882 12883 12884 var divTituloUrbano = DIV.cloneNode(true); 12885 // divTituloUrbano.innerHTML = 'Entorno Urbano <i id="iUrbano" class="pull-right" style="font-size:20px;vertical-align:middle;padding-right:10px"><span class="glyphicon glyphicon-chevron-up flecha"></span></i>';; 12886 divTituloUrbano.innerHTML = '<i id="iUrbano" style="font-size:10px;color:#bb0026;vertical-align:middle;padding-right:6px"><span class="inegi-nav-desp enest_t"></span></i>Entorno Urbano'; 12887 // divTituloUrbano.style.backgroundColor = "#f9f7f7"; 12888 // divTituloUrbano.style.fontWeight = "bold"; 12889 divTituloUrbano.style.padding = "0 0 0 10px"; 12890 // divTituloUrbano.style.marginBottom = "10px"; 12891 divTituloUrbano.style.cursor = "pointer"; 12892 // divTituloUrbano.className = "clsHover"; 12893 12894 divTituloUrbano.onclick = function (e) { 12895 // var t = $(this).find("i")[0].id.split("iLoc_")[1]; 12896 $("#tableUrbano").toggle(); 12897 $(".spanUrbano").toggle(); 12898 if ($("#iUrbano").html() == '<span class="inegi-nav-desp enest_t"></span>') { 12899 $("#iUrbano").html('<span class="enest_t inegi-nav-despa"></span>') 12900 } else { 12901 $("#iUrbano").html('<span class="inegi-nav-desp enest_t"></span>'); 12902 } 12903 } 12904 containerUrbano.appendChild(divTituloUrbano); 12905 } 12906 12907 if(isHeader == 0){ 12908 var tr = TR.cloneNode(true); 12909 var th = TH.cloneNode(true); 12910 th.innerHTML = tema.descripcion; 12911 th.className = "Th" 12912 tr.appendChild(th); 12913 for(var c = 0; c < tema.valor.length; c++){ 12914 12915 var th = TH.cloneNode(true); 12916 th.className = "Th" 12917 th.innerHTML = tema.valor[c];
12918 tr.appendChild(th); 12919 } 12920 theadUrbano.append(tr); 12921 isHeader++; 12922 12923 } else if(tema.descripcion === "NOTA") { 12924 var spanNotaU = DIV.cloneNode(true); 12925 spanNotaU.innerHTML = tema.valor; 12926 spanNotaU.style.fontSize = "11px"; 12927 spanNotaU.className = "spanUrbano"; 12928 spanNotaU.style.display = "none"; 12929 spanNotaU.style.margin = "0 25px"; 12930 } else { 12931 var tr = TR.cloneNode(true); 12932 var td = TD.cloneNode(true); 12933 td.innerHTML = tema.descripcion; 12934 tr.appendChild(td); 12935 for(var c = 0; c < tema.valor.length; c++){ 12936 var td = TD.cloneNode(true); 12937 td.innerHTML = tema.valor[c];
12938 td.className = "TdV"; 12939 tr.appendChild(td); 12940 } 12941 tbodyUrbano.appendChild(tr) 12942 } 12943 tableUrbano.appendChild(theadUrbano); 12944 tableUrbano.appendChild(tbodyUrbano); 12945 12946 containerUrbano.appendChild(tableUrbano); 12947 if(spanNotaU){ 12948 // containerUrbano.appendChild(spanNotaU); 12949 arrNotasEntornoUrbano.push(spanNotaU); 12950 } 12951 LOC_CONTAINER.appendChild(containerUrbano); 12952 } 12953 } 12954 12955 if(parametros.secc.indexOf("5") > -1){ 12956 // seccion Loc5000 ------------------------------------------------ 12957 if(tema.tema > 5){ 12958 if(temaTmp !== tema.tema){ 12959 // if(tema.descripcion !== "NOTA"){ 12960 // console.log(tema); 12961 temaTmp = tema.tema; 12962 // crear lista para nuevo tema 12963 // if(containerUl == null){ 12964 containerUl = DIV.cloneNode(true); 12965 ulLoc5000 = UL.cloneNode(true); 12966 // ulLoc5000.style.border = "1px solid #cecece"; 12967 ulLoc5000.style.padding = "0px"; 12968 ulLoc5000.style.width = "67%"; // para las listas fichas un width acncho fijo 12969 ulLoc5000.style.margin = "10px 0 0 25px"; 12970 // ulLoc5000.style.margin = "0 auto"; 12971 ulLoc5000.style.listStyleType = "none"; 12972 ulLoc5000.id = "listTema"+ tema.tema; 12973 ulLoc5000.style.display = "none"; 12974 // area titulo 12975 var divTituloUl = DIV.cloneNode(true); 12976 divTituloUl.innerHTML = '<i id="iLoc_' + tema.tema +'" style="font-size:10px;color:#bb0026;vertical-align:middle;padding-right:6px"><span class="inegi-nav-desp enest_t"></span></i>' + tema.desc_tema; 12977 // divTituloUl.style.backgroundColor = "#f9f9f9"; 12978 // divTituloUl.style.fontWeight = "bold"; 12979 divTituloUl.style.padding = "0 0 0 10px"; 12980 // divTituloUl.style.marginBottom = "10px"; 12981 divTituloUl.style.cursor = "pointer"; 12982 // divTituloUl.className = "clsHover"; 12983 divTituloUl.onclick = function (e) { 12984 var t = $(this).find("i")[0].id.split("iLoc_")[1]; 12985 $("#listTema" + t).toggle(); 12986 if ($("#iLoc_" + t).html() == '<span class="inegi-nav-desp enest_t"></span>') { 12987 $("#iLoc_" + t).html('<span class="inegi-nav-despa enest_t"></span>') 12988 } else { 12989 $("#iLoc_" + t).html('<span class="inegi-nav-desp enest_t"></span>'); 12990 } 12991 } 12992 containerUl.appendChild(divTituloUl); 12993 12994 /* } else { 12995 console.log(tema); 12996 spanNotaLoc5000 = DIV.cloneNode(true); 12997 spanNotaLoc5000.innerHTML = "* "+tema.valor; 12998 } */ 12999 } 13000 if(tema.descripcion === "TITULO"){ 13001 var liInfo = LI.cloneNode(true); 13002 liInfo.style.backgroundColor = "#f9f9f9"; 13003 liInfo.style.borderBottom = "1px solid #eae9e9"; 13004 liInfo.style.paddingLeft = "10px;" 13005 var span = SPAN.cloneNode(true); 13006 span.style.fontWeight = "bold"; 13007 span.innerHTML = tema.valor; 13008 span.style.padding = "0px 10px"; 13009 liInfo.appendChild(span); 13010 13011 ulLoc5000.appendChild(liInfo); 13012 containerUl.appendChild(ulLoc5000); 13013 LOC_CONTAINER.appendChild(containerUl); 13014 13015 } else if(tema.descripcion === "NOTA"){ 13016 spanNotaLoc5000 = DIV.cloneNode(true); 13017 spanNotaLoc5000.innerHTML = "* "+tema.valor; 13018 13019 spanNotaLoc5000.style.fontSize = "11px"; 13020 // spanNotaLoc5000.style.margin = "0 25px"; 13021 $(ulLoc5000).append(spanNotaLoc5000) 13022 13023 } else { 13024 var liInfo = LI.cloneNode(true); 13025 var span = SPAN.cloneNode(true); 13026 span.innerHTML = "  "+ tema.descripcion+":"; 13027 span.style.fontWeight = "bold"; 13028 span.style.padding = "0px 10px"; 13029 liInfo.appendChild(span); 13030 var span = SPAN.cloneNode(true); 13031 span.innerHTML = tema.valor; 13032 liInfo.appendChild(span); 13033 13034 ulLoc5000.appendChild(liInfo); 13035 containerUl.appendChild(ulLoc5000); 13036 LOC_CONTAINER.appendChild(containerUl); 13037 } 13038 13039 /* if(spanNotaLoc5000){ 13040 console.log(spanNotaLoc5000); 13041 ulLoc5000.appendChild(spanNotaLoc5000); 13042 spanNotaLoc5000 = null; 13043 } */ 13044 } 13045 } 13046 //nota al pie del contenido 13047 });
13047 // termina el forEach 13048 13049 //inserta notas correspondientes a entorno urbano 13050 if(arrNotasEntornoUrbano.length > 0){ 13051 for(var n = 0; n < arrNotasEntornoUrbano.length; n++){ 13052 tableUrbano.after(arrNotasEntornoUrbano[n]); 13053 } 13054 } 13055 //inserta notas correspondientes a viviendas 13056 if(arrNotasVivienda.length > 0){ 13057 for(var n = 0; n < arrNotasVivienda.length; n++){ 13058 tableViviendas.after(arrNotasVivienda[n]); 13059 } 13060 } 13061 //inserta notas correspondientes a población 13062 if(arrNotasPoblacion.length > 0){ 13063 for(var n = 0; n < arrNotasPoblacion.length; n++){ 13064 tablePoblacion.after(arrNotasPoblacion[n]); 13065 } 13066 } 13067 13068 /* if(notaFinal === true){ 13069 var spanNotaPie = SPAN.cloneNode(true); 13070 spanNotaPie.innerHTML = "* Sin dato debido a que se levantó cuestionario parcial."; 13071 spanNotaPie.style.fontSize = "8pt"; 13072 spanNotaPie.style.textAlign = "justify"; 13073 spanNotaPie.style.marginTop = "20px"; 13074 LOC_CONTAINER.appendChild(spanNotaPie); 13075 } */ 13076 } 13077 13078 document.getElementById("divDatos" + parametros.contenedorCuadro).appendChild(LOC_CONTAINER); 13079 $("#tableStat" + parametros.contenedorCuadro).hide(); 13080 $("#TableEspacio" + parametros.contenedorCuadro).hide(); 13081 $("#divCargaCuadro" + parametros.contenedorCuadro).hide(); 13082 $(".clsHover").hover(function(){ 13083 $(this).css("background-color", "#ececec"); 13084 }, function(){ 13085 $(this).css("background-color", "#f9f7f7"); 13086 }); 13087 } 13088 /** 13089 * DATOS DE PRECISION DEPRECATED 13090 * Cuadro #errorbar (agregado: 22-05-2019) DEPRECATED DATE: 14-02-2023 13091 * @param datos, parametros 13092 */ 13093 aPrecitionRules = []; 13094 function DibujaCuadroTipoPrecision_Deprecated(datos, parametros){ 13095 // console.log(datos); 13096 aPrecitionRules = datos.precitionRules; 13097 var notasReglasPrecision = datos.precitionRules && datos.precitionRules.notas !== undefined && datos.precitionRules.notas.length > 0? datos.precitionRules.notas : []; 13098 13099 var aIndicadores = datos.dimension.indicator.category.label; 13100 var aEntidades = datos.dimension.municipality.category.label; 13101 var aPeriodos = datos.dimension.periods.category.label; 13102 var aValores = datos.value; 13103 var aRangoError = datos.precition; 13104 //Agregado 09-07-2021 13105 // Ordenamiento de datos para las columnas del cuadro de #precision 13106 // pasa de: [limite inferior, limite superior, coeficiente de variacion, error estandar, intervalo de confianza] 13107 // a esto: [coeficiente de variacion, error estandar, limite inferior, limite superior, intervalo de confianza] 13108 var aRangoErrorTotal = aRangoError.length; 13109 for(var x = 0; x < aRangoErrorTotal; x++){ 13110 aRangoError[x].splice(0,0, aRangoError[x][3]) 13111 aRangoError[x].splice(0,0, aRangoError[x][3]) 13112 13113 aRangoError[x].splice(4,1) 13114 aRangoError[x].splice(4,1) 13115 } 13116 /* [[39,30,0.45,82919,90], 13117 [48,40,0.39,132919,40], 13118 [40,35,0.29,162919,20], 13119 [41.5,26,0.19,112939,100], 13120 [39.5,27.5,0.79,162919,80], 13121 [43,47,0.50,102919,60], 13122 [40,28,0.35,92919,90], 13123 [42,19,0.10,4919,80], 13124 [46,30,0.80,2919,40], 13125 [45,31,0.30,62919,30], 13126 [48,29,0.20,82919,10], 13127 [47,31,0.50,32919,50], 13128 [50,44,0.60,82919,50], 13129 [51,23,0.25,18919,40], 13130 [47,34,0.85,18219,90]]; */ 13131 //Estructura de la tabla base 13132 var TABLE = document.createElement("table"); 13133 TABLE.className = 'table table-bordered table-responsive table-striped'; 13134 TABLE.id = "tableStatcontGrafica"+ parametros.contenedorCuadro; 13135 var tHead = (!BROWSER.ie()) ? TABLE.createTHead() : document.createElement("thead"); 13136 var tBody = (!BROWSER.ie()) ? TABLE.createTBody() : document.createElement("tbody"); 13137 var tRowHead = (!BROWSER.ie()) ? tHead.insertRow() : document.createElement("tr"); 13138 var tRowBody = (!BROWSER.ie()) ? tBody.insertRow() : document.createElement("tr"); 13139 // console.log(datos); 13140 if(datos.dimension.municipality.category.label.length > 1){ // todas las entidades 13141 console.log("POR ENTIDADDES") 13142 } else { // varios periodos 13143 13144 //--- ENCABEZADO 13145 /* var titulosEncabezado = (parametros.titulosColumnas != "")? parametros.titulosColumnas.split(",") : ["Periodo","Estimación","LÃmite inferior", "LÃmite superior", "Coeficie
13145nte de variación (%)","Error estándar"]; 13146 if(parametros.idioma === "en"){ 13147 titulosEncabezado = ["Period","Estimate","Lower limit", "Upper limit", "Coefficient of variation (%)","Standar error"]; 13148 } */ 13149 var titulosEncabezado = (parametros.titulosColumnas != "")? parametros.titulosColumnas.split(",") : ["Periodo","Estimación","Coeficiente de variación (%)","Error estándar","LÃmite inferior", "LÃmite superior"/* ,"Intervalo de confianza" */]; 13150 if(parametros.idioma === "en"){ 13151 titulosEncabezado = ["Period","Estimate", "Coefficient of variation (%)","Standard error","Lower limit", "Upper limit"/* ,"Confidence interval" */]; 13152 } 13153 var columnasTotales = titulosEncabezado.length; 13154 var renglonesTotales = aValores.length; 13155 13156 var tdCol = document.createElement("th"); 13157 for (var c = 0; c < titulosEncabezado.length; c++) { 13158 var col = tdCol.cloneNode(true); 13159 // Agregado: 07-07-2021 13160 // Agrega llamados letras de los llamados a las notas de datos de precisión 13161 var notasCols = notasReglasPrecision.filter(function(nota, index){ 13162 return nota.columnas.indexOf(c) > -1; 13163 })[0] 13164 var supLetraNota = ""; 13165 if(notasCols !== undefined){ 13166 supLetraNota = ' <sup style="color:#000">'+notasCols.letra+'</sup>' 13167 } 13168 col.innerHTML = titulosEncabezado[c] + supLetraNota; 13169 col.width = ((c == 0 || c == 1) ? 150 : ((c == 1)? 90 : 25 )); 13170 col.align = "center"; 13171 col.className = "Th"; 13172 tRowHead.appendChild(col); 13173 } 13174 // --- FILA DE DATOS 13175 var frecuencia = datos.dimension.freq.category.label[0].Value; 13176 var celda = document.createElement("td"); // celda de dato 13177 var renglon = document.createElement("tr"); // renglon 13178 for (var r = 0; r < aPeriodos.length; r++){ 13179 var celdaValor = celda.cloneNode(true); 13180 var formatoPeriodo = oMESES.getFormatoPeriodo(aPeriodos[r].Value, frecuencia, parametros.idioma, 1); 13181 celdaValor.innerHTML = formatoPeriodo; 13182 celdaValor.className = "TdInicioV"; 13183 var f = renglon.cloneNode(true); 13184 f.appendChild(celdaValor); 13185 13186 var celdaValor2 = celda.cloneNode(true); 13187 var rr = r; 13188 celdaValor2.innerHTML = aValores[rr]; 13189 13190 // revisamos reglas para coeficiente de variacion y si existe aplicamos el color correspondienten 13191 var sCvColor = ""; 13192 if(typeof aRangoError[r][0] != "undefined"){ 13193 if(parametros.idTema != "null" && aPrecitionRules != undefined){ // solo si la columna es Coeficiente de Variación 13194 oColorAria = setColorCieficienteVariacion(aRangoError[r][0]); 13195 if(sCvColor !== null && oColorAria.aria !== ""){ // si regreso color valido entonces aplica el color de lo contrario deja el color por default de los cuadros. 13196 var divTooltip = document.createElement("div"); 13197 divTooltip.innerHTML = celdaValor2.innerHTML 13198 celdaValor2.innerHTML = ""; 13199 13200 celdaValor2.style.backgroundColor = oColorAria.color; 13201 celdaValor2.setAttribute("aria-label", oColorAria.aria) 13202 divTooltip.setAttribute("data-placement","top") 13203 divTooltip.setAttribute("data-original-title",oColorAria.aria) 13204 divTooltip.setAttribute("data-toggle","tooltipprecision") 13205 divTooltip.style.cursor = "help" 13206 celdaValor2.appendChild(divTooltip) 13207 } 13208 } 13209 } 13210 13211 13212 celdaValor2.className = "TdV"; 13213 f.appendChild(celdaValor2); 13214 for(var c = 0; c < columnasTotales; c++){ 13215 if(c < 4){ 13216 if(typeof aRangoError[r][c] != "undefined"){ 13217 var celdaValor3 = celda.cloneNode(true); 13218 celdaValor3.innerHTML = aRangoError[r][c] == null? "-" : formatoNumeroMiles(aRangoError[r][c]); 13219 celdaValor3.className = "TdV"; 13220 f.appendChild(celdaValor3); 13221 } 13222 } 13223 } 13224 tBody.appendChild(f); 13225 } 13226 } 13227 13228 if (BROWSER.ie) { 13229 tHead.appendChild(tRowHead); 13230 tBody.appendChild(tRowBody); 13231 TABLE.appendChild(tHead); 13232 TABLE.appendChild(tBody); 13233 } 13234 $(function () { 13235 $("#divDatos" + parametros.contenedorCuadro).tooltip({ selector: '[data-toggle=tooltipprecision]' }); 13236 }) 13237 //render table 13238 document.getElementById("divDatos" + parametros.contenedorCuadro).appendChild(TABLE); 13239 $("#tableStat" + parametros.contenedorCuadro).hide(); 13240 $("#TableEspacio" + parametros.contenedorCuadro).hide(); 13241 } 13242 /** 13243 * DATOS DE PRECISION ACTUALIZADO 13244 * Cuadro #errorbar (agregado: 22-05-2019) modificado: 14-02-2023 13245 * @param datos, parametros 13246 */ 13247 function DibujaCuadroTipoPrecision(datos, parametros){ 13248 console.log("debug"); 13249 var datosPrecision = oCriteriosPrecision.check(datos); 13250 // var aIndicadores = datos.dimension.indicator.category.label; 13251 // var aEntidades = datos.dimension.municipality.category.label;
13252 var aPeriodos = datos.dimension.periods.category.label; 13253 var aValores = datos.value; 13254 var aRangoError = datos.precition; 13255 //Agregado 09-07-2021 13256 // Ordenamiento de datos para las columnas del cuadro de #precision 13257 // pasa de: [limite inferior, limite superior, coeficiente de variacion, error estandar, intervalo de confianza] 13258 // a esto: [coeficiente de variacion, error estandar, limite inferior, limite superior, intervalo de confianza] 13259 var aRangoErrorTotal = aRangoError.length; 13260 for(var x = 0; x < aRangoErrorTotal; x++){ 13261 aRangoError[x].splice(0,0, aRangoError[x][3]) 13262 aRangoError[x].splice(0,0, aRangoError[x][3]) 13263 13264 aRangoError[x].splice(4,1) 13265 aRangoError[x].splice(4,1) 13266 } 13267 /* [[39,30,0.45,82919,90], 13268 [48,40,0.39,132919,40], 13269 [40,35,0.29,162919,20], 13270 [41.5,26,0.19,112939,100], 13271 [39.5,27.5,0.79,162919,80], 13272 [43,47,0.50,102919,60], 13273 [40,28,0.35,92919,90], 13274 [42,19,0.10,4919,80], 13275 [46,30,0.80,2919,40], 13276 [45,31,0.30,62919,30], 13277 [48,29,0.20,82919,10], 13278 [47,31,0.50,32919,50], 13279 [50,44,0.60,82919,50], 13280 [51,23,0.25,18919,40], 13281 [47,34,0.85,18219,90]]; */ 13282 //Estructura de la tabla base 13283 var TABLE = document.createElement("table"); 13284 TABLE.className = 'table table-bordered table-responsive table-striped'; 13285 TABLE.id = "tableStatcontGrafica"+ parametros.contenedorCuadro; 13286 var tHead = (!BROWSER.ie()) ? TABLE.createTHead() : document.createElement("thead"); 13287 var tBody = (!BROWSER.ie()) ? TABLE.createTBody() : document.createElement("tbody"); 13288 var tRowHead = (!BROWSER.ie()) ? tHead.insertRow() : document.createElement("tr"); 13289 var tRowBody = (!BROWSER.ie()) ? tBody.insertRow() : document.createElement("tr"); 13290 // console.log(datos); 13291 if(datos.dimension.municipality !== null && datos.dimension.municipality.category.label.length > 1){ // todas las entidades 13292 console.log("POR ENTIDADDES") 13293 } else { // varios periodos 13294 13295 //--- ENCABEZADO 13296 13297 var titulosEncabezado = (parametros.titulosColumnas != "")? parametros.titulosColumnas.split(",") : ["Periodo","Estimación","Coeficiente de variación (%)","Error estándar","LÃmite inferior", "LÃmite superior"/* ,"Intervalo de confianza" */]; 13298 if(parametros.idioma === "en"){ 13299 titulosEncabezado = ["Period","Estimate", "Coefficient of variation (%)","Standard error","Lower limit", "Upper limit"/* ,"Confidence interval" */]; 13300 } 13301 var columnasTotales = titulosEncabezado.length; 13302 // var renglonesTotales = aValores.length; 13303 13304 var tdCol = document.createElement("th"); 13305 for (var c = 0; c < titulosEncabezado.length; c++) { 13306 var col = tdCol.cloneNode(true); 13307 // Modificado: 05-07-2023 13308 // var supLetraPrecision = ""; 13309 // Agrega llamados letras como referencia de las notas a pie de cuadro 13310 // if(datosPrecision !== null){ 13311 // supLetraPrecision = ' <sup style="color:#000">'+ (c === 1? "a/" : ((c === 4 || c === 5)? "b/" : "")) +'</sup>' 13312 // } 13313 // col.innerHTML = titulosEncabezado[c] + supLetraPrecision; 13314 col.innerHTML = titulosEncabezado[c]; 13315 col.width = ((c == 0 || c == 1) ? 150 : ((c == 1)? 90 : 25 )); 13316 col.align = "center"; 13317 col.className = "Th"; 13318 tRowHead.appendChild(col); 13319 } 13320 // --- FILA DE DATOS 13321 var frecuencia = datos.dimension.freq.category.label[0].Value; 13322 var celda = document.createElement("td"); // celda de dato 13323 var renglon = document.createElement("tr"); // renglon 13324 for (var r = 0; r < aPeriodos.length; r++){ 13325 var celdaValor = celda.cloneNode(true); 13326 var formatoPeriodo = oMESES.getFormatoPeriodo(aPeriodos[r].Value, frecuencia, parametros.idioma, 1); 13327 celdaValor.innerHTML = formatoPeriodo; 13328 celdaValor.className = "TdInicioV"; 13329 var f = renglon.cloneNode(true); 13330 f.appendChild(celdaValor); 13331 13332 var celdaValor2 = celda.cloneNode(true); 13333 var rr = r; 13334 celdaValor2.innerHTML = aValores[rr]; 13335
13336 // revisamos reglas para coeficiente de variacion y si existe aplicamos el color correspondienten 13337 var oColorTooltipPrecision = ""; 13338 if(typeof aRangoError[r][0] != "undefined"){ 13339 if(datosPrecision !== null){ // solo si la columna es Coeficiente de Variación 13340 // console.log(aRangoError[r][0]); 13341 // aRangoError[2][0] = "24.50" 13342 // aRangoError[6][0] = "60.50" 13343 oColorTooltipPrecision = oCriteriosPrecision.getColorTooltip(aRangoError[r][0], datosPrecision, parametros); 13344 13345 if(oColorTooltipPrecision !== "transparent"){ // si regreso color valido entonces aplica el color de lo contrario deja el color por default de los cuadros. 13346 var divTooltip = document.createElement("div"); 13347 divTooltip.innerHTML = celdaValor2.innerHTML 13348 celdaValor2.innerHTML = ""; 13349 13350 celdaValor2.style.backgroundColor = oColorTooltipPrecision.color; 13351 celdaValor2.setAttribute("aria-label", "") 13352 divTooltip.setAttribute("data-placement","top") 13353 divTooltip.setAttribute("data-original-title",oColorTooltipPrecision.tooltip) 13354 divTooltip.setAttribute("data-toggle","tooltipprecision") 13355 divTooltip.style.cursor = "help" 13356 celdaValor2.appendChild(divTooltip) 13357 } 13358 } 13359 } 13360 13361 celdaValor2.className = "TdV"; 13362 f.appendChild(celdaValor2); 13363 for(var c = 0; c < columnasTotales; c++){ 13364 if(c < 4){ 13365 if(typeof aRangoError[r][c] != "undefined"){ 13366 var celdaValor3 = celda.cloneNode(true); 13367 celdaValor3.innerHTML = aRangoError[r][c] == null? "-" : formatoNumeroMiles(aRangoError[r][c]); 13368 celdaValor3.className = "TdV"; 13369 f.appendChild(celdaValor3); 13370 } 13371 } 13372 } 13373 tBody.appendChild(f); 13374 } 13375 } 13376 13377 if (BROWSER.ie) { 13378 tHead.appendChild(tRowHead); 13379 tBody.appendChild(tRowBody); 13380 TABLE.appendChild(tHead); 13381 TABLE.appendChild(tBody); 13382 } 13383 $(function () { 13384 $("#divDatos" + parametros.contenedorCuadro).tooltip({ selector: '[data-toggle=tooltipprecision]' }); 13385 }) 13386 //render table 13387 document.getElementById("divDatos" + parametros.contenedorCuadro).appendChild(TABLE); 13388 $("#tableStat" + parametros.contenedorCuadro).hide(); 13389 $("#TableEspacio" + parametros.contenedorCuadro).hide(); 13390 } 13391 /** 13392 * Metodo que selecciona el color correspondiente a la condicion segun el valor de coeficiente de variacion. 13393 * Lo utiliza el metodo: DibujaCuadroTipoPrecision (cuadrto tipo: precision) DEPRECATED DATE: 14-02-2023 13394 * @param {*} valor 13395 * @returns hexadecimal string color (#ffffff) 13396 */ 13397 function setColorCieficienteVariacion_Deprecated(valor){ 13398 var oColorAria = {}; 13399 var vm = aPrecitionRules.condiciones 13400 if( valor >= vm[0].valor_menor && valor < vm[0].valor_mayor){ 13401 oColorAria = {color:vm[0].color, aria:vm[0].ariaLabel}; 13402 13403 } else if( valor >= vm[1].valor_menor && valor < vm[1].valor_mayor){ 13404 oColorAria = {color:vm[1].color, aria:vm[1].ariaLabel}; 13405 13406 } else if( valor >= vm[2].valor_mayor){ 13407 oColorAria = {color:vm[2].color, aria:vm[2].ariaLabel}; 13408 } else { 13409 oColorAria = null; 13410 } 13411 13412 return oColorAria; 13413 } 13414 /** 13415 * ERROR BAR (PRECISION V2) 13416 * Cuadro #precision2 / #precision3 (agregado: 30-04-2020) 13417 * @param datos, parametros 13418 */ 13419 function DibujaCuadroTipoPrecisionV2(datos, parametros) { 13420 // console.log(datos); 13421 var indicadoresNombresFijos = parametros.nombresCategoriasFijas !== ""? parametros.nombresCategoriasFijas.split("|") : ""; 13422 var aIndicadores = datos.dimension.indicator.category.label; 13423 var aEntidades = datos.dimension.municipality.category.label;
13424 var aPeriodos = datos.dimension.periods.category.label; 13425 var aValores = datos.value; 13426 var aPrecision = datos.precition; 13427 var nDatos = []; 13428 13429 var periodo = aPeriodos[0].Value; 13430 var frecuencia = datos.dimension.freq.category.label.Value; 13431 var estimacionMesAnio = oMESES.getMesNombre(periodo.split("/")[1], parametros.idioma) + " " + periodo.split("/")[0]; 13432 13433 //Estructura de la tabla base 13434 var TABLE = document.createElement("table"); 13435 TABLE.className = 'table table-bordered table-responsive table-striped'; 13436 TABLE.id = "tableStatcontGrafica" + parametros.contenedorCuadro; 13437 var tHead = (!BROWSER.ie()) ? TABLE.createTHead() : document.createElement("thead"); 13438 var tBody = (!BROWSER.ie()) ? TABLE.createTBody() : document.createElement("tbody"); 13439 var tRowHead = (!BROWSER.ie()) ? tHead.insertRow() : document.createElement("tr"); 13440 var tRowBody = (!BROWSER.ie()) ? tBody.insertRow() : document.createElement("tr"); 13441 13442 // if (datos.dimension.indicator.category.label.length === 1) { // todas las entidades 13443 // cuadro 2 13444 if (parametros.tipoCuadro === "precision3") { // precision3 - CUADRO 2 13445 // un solo periodo / varios indicadores 13446 var mapDatosPrecisionIndicadores = aIndicadores.filter(function(i,idx){ 13447 aPrecision[idx].unshift(aValores[idx]) 13448 13449 return i.datos = aPrecision[idx]; 13450 }) 13451 // cruce de datos entre los indicadores tal cual se solicitan desde parametro con los datos de precision y estimado 13452 var aIndicadoresDepurados = parametros.indicadorDepurado.split(",") 13453 nDatos = aIndicadoresDepurados.map(function(ind, index){ 13454 var result = mapDatosPrecisionIndicadores.filter(function(i,idx){ 13455 return (i.Key === "I_"+ind)? i : null; 13456 }) 13457 result[0].id = ind; 13458 result[0].nombre = indicadoresNombresFijos !== "" ? indicadoresNombresFijos[index] : result[0].Value; 13459 return result[0]; 13460 }) 13461 13462 //--- ENCABEZADO 13463 // // [limite_inferior,limite_superior,coeficiente_variacion, error_estandar,nivel_confiabilidad] 13464 // var titulosEncabezado = (parametros.titulosColumnas != "") ? parametros.titulosColumnas.split(",") : ["Periodo", "Valor observado", "LÃmite inferior", "LÃmite superior", "Coeficie
13464nte de variación", "Error estándar", "Nivel de confiabilidad"]; 13465 var columnasTotales = 4; 13466 var renglonesTotales = aValores.length; 13467 var tdCol = document.createElement("th"); 13468 13469 //primer columna 13470 var td1 = tdCol.cloneNode(true); 13471 td1.innerHTML = ""; 13472 td1.style.minWidth = "80px" 13473 td1.style.maxWidth = "150px" 13474 td1.style.width = "150px" 13475 td1.rowSpan = 2; 13476 td1.className = "Th"; 13477 td1.align = "center"; 13478 //segunda columna grupo 13479 var td2 = tdCol.cloneNode(true); 13480 td2.innerHTML = "Valor observado"; 13481 td2.rowSpan = 2; 13482 td2.className = "Th"; 13483 td2.align = "center"; 13484 13485 //tercer columna 13486 var tdg = tdCol.cloneNode(true); 13487 tdg.colSpan = 3; 13488 tdg.innerHTML = "Estimación "+ estimacionMesAnio; 13489 tdg.className = "Th"; 13490 tdg.align = "center"; 13491 13492 var tRowSubHead2 = tRowHead.cloneNode(true); 13493 // 3 columnas principales 13494 var td3 = tdCol.cloneNode(true); 13495 td3.innerHTML = "LÃmite inferior"; 13496 td3.className = "Th"; 13497 td3.align = "center"; 13498 var td4 = tdCol.cloneNode(true); 13499 td4.innerHTML = "Estimación puntual"; 13500 td4.className = "Th"; 13501 td4.align = "center"; 13502 var td5 = tdCol.cloneNode(true); 13503 td5.innerHTML = "LÃmite superior"; 13504 td5.className = "Th"; 13505 td5.align = "center"; 13506 13507 var td6 = tdCol.cloneNode(true); 13508 td6.innerHTML = "Error absoluto"; 13509 td6.rowSpan = 2; 13510 td6.className = "Th"; 13511 td6.align = "center"; 13512 13513 //agregamos columnas al tr head 13514 tRowHead.appendChild(td1); 13515 tRowHead.appendChild(td2); 13516 tRowHead.appendChild(tdg); 13517 tRowSubHead2.appendChild(td3); 13518 tRowSubHead2.appendChild(td4); 13519 tRowSubHead2.appendChild(td5); 13520 tRowHead.appendChild(td6); 13521 13522 // --- FILA DE DATOS 13523 var celda = document.createElement("td"); // celda de dato 13524 var renglon = document.createElement("tr"); // renglon 13525 var tnDatos = nDatos.length; 13526 // console.log(nDatos[0].datos); 13527 var control = [1,nDatos[0].datos.length-1,2,]; 13528 for (var r = 0; r < tnDatos; r++) { 13529 var fila = renglon.cloneNode(true); 13530 13531 var celdaPrimerCol = celda.cloneNode(true); 13532 // celdaPrimerCol.innerHTML = (indicadoresNombresFijos !== "")? indicadoresNombresFijos[r] : nDatos[r].Value; 13533 celdaPrimerCol.innerHTML = nDatos[r].nombre; 13534 celdaPrimerCol.className = "TdInicio"; 13535 fila.append(celdaPrimerCol); 13536 13537 var celdaValorObservadoCol = celda.cloneNode(true); 13538 celdaValorObservadoCol.innerHTML = formatoDecimalesResultado(nDatos[r].datos[0],2); 13539 celdaValorObservadoCol.className = "Td"; 13540 fila.append(celdaValorObservadoCol); 13541 13542 var nValores = nDatos[r].datos; 13543 var tnValores = nDatos[r].datos.length; 13544 var inc = 0; 13545 for (var c = 0; c < tnValores; c++) { 13546 if(c === 1 || c === 2 || c === tnValores-1){ 13547 var celdaTd = celda.cloneNode(true); 13548 celdaTd.innerHTML = formatoDecimalesResultado(nValores[control[inc]],2); 13549 celdaTd.className = "Td"; 13550 fila.append(celdaTd); 13551 inc++; 13552 } 13553 } 13554 13555 tBody.appendChild(fila); 13556 } 13557 13558 13559 } else { // precision2 - CUADRO 1 13560 // un solo periodo / varios indicadores 13561 // console.log(parametros.indicadorDepurado); 13562 // console.log(aIndicadores); 13563 // console.log(aPrecision) 13564 // console.log(aValores); 13565 13566 // agregamos datos de precision y estimacion a arreglo de indicadores tal como viene del api 13567 var _val = 0; 13568 var mapDatosPrecisionIndicadores = aIndicadores.filter(function(i,idx){ 13569 // console.log(aValores[idx].replace(/,/g,"")); 13570 // _val = parseFloat(aValores[idx].replace(/,/g,"")); // removemos los separadores "," 13571 _val = aValores[idx]; // removemos los separadores "," 13572 aPrecision[idx].unshift(_val) 13573 13574 return i.datos = aPrecision[idx]; 13575 }) 13576 // cruce de datos entre los indicadores tal cual se solicitan desde parametro con los datos de precision y estimado 13577 var aIndicadoresDepurados = parametros.indicadorDepurado.split(",") 13578 nDatos = aIndicadoresDepurados.map(function(ind, index){ 13579 var result = mapDatosPrecisionIndicadores.filter(function(i,idx){ 13580 return (i.Key === "I_"+ind)? i : null; 13581 })
13582 result[0].id = ind; 13583 // result[0].nombre = indicadoresNombresFijos[index]; 13584 result[0].nombre = indicadoresNombresFijos !== "" ? indicadoresNombresFijos[index] : result[0].Value; 13585 return result[0]; 13586 }) 13587 13588 //--- ENCABEZADO 13589 // // [limite_inferior,limite_superior,coeficiente_variacion, error_estandar,nivel_confiabilidad] 13590 var tdCol = document.createElement("th"); 13591 13592 //primer columna 13593 var td1 = tdCol.cloneNode(true); 13594 td1.innerHTML = ""; 13595 td1.style.minWidth = "80px" 13596 td1.rowSpan = 2; 13597 td1.className = "Th"; 13598 td1.align = "center"; 13599 //segunda columna grupo 13600 var tdg = tdCol.cloneNode(true); 13601 tdg.colSpan = 3; 13602 tdg.innerHTML = "Estimación"; 13603 tdg.className = "Th"; 13604 tdg.align = "center"; 13605 13606 var tRowSubHead2 = tRowHead.cloneNode(true); 13607 // 3 columnas principales 13608 var td2 = tdCol.cloneNode(true); 13609 td2.innerHTML = "LÃmite inferior"; 13610 td2.className = "Th"; 13611 td2.align = "center"; 13612 var td3 = tdCol.cloneNode(true); 13613 td3.innerHTML = "Estimación puntual"; 13614 td3.className = "Th"; 13615 td3.align = "center"; 13616 var td4 = tdCol.cloneNode(true); 13617 td4.innerHTML = "LÃmite superior"; 13618 td4.className = "Th"; 13619 td4.align = "center"; 13620 13621 //agregamos columnas al tr head 13622 tRowHead.appendChild(td1); 13623 tRowHead.appendChild(tdg); 13624 tRowSubHead2.appendChild(td2); 13625 tRowSubHead2.appendChild(td3); 13626 tRowSubHead2.appendChild(td4); 13627 // tRowHead.appendChild(td5); 13628 13629 // --- FILA DE DATOS 13630 var celda = document.createElement("td"); // celda de dato 13631 var renglon = document.createElement("tr"); // renglon 13632 var tnDatos = nDatos.length; 13633 var control = [1,0,2]; 13634 var _vals = 0; // para los valores que les quitamos los separadores "," 13635 for (var r = 0; r < tnDatos; r++) { 13636 var fila = renglon.cloneNode(true); 13637 13638 var celdaPrimerCol = celda.cloneNode(true); 13639 var pDomNombre = document.createElement("p"); pDomNombre.style.whiteSpace = "normal"; 13640 pDomNombre.innerHTML = nDatos[r].nombre 13641 celdaPrimerCol.appendChild(pDomNombre); 13642 celdaPrimerCol.className = "TdInicio"; 13643 fila.append(celdaPrimerCol); 13644 13645 var nValores = nDatos[r].datos; 13646 var tnValores = nDatos[r].datos.length; 13647 var inc = 0; 13648 for (var c = 0; c < tnValores; c++) { 13649 if(c === 1 || c === 2 || c === tnValores-1){ 13650 var celdaTd = celda.cloneNode(true); 13651 _vals = nValores[control[inc]]; 13652 13653 celdaTd.innerHTML = formatoNumeroMiles(_vals); 13654 celdaTd.className = "Td"; 13655 fila.append(celdaTd); 13656 inc++; 13657 } 13658 } 13659 tBody.appendChild(fila); 13660 } 13661 } 13662 13663 if (BROWSER.ie) { 13664 tHead.appendChild(tRowHead); 13665 tHead.appendChild(tRowSubHead2); 13666 tBody.appendChild(tRowBody); 13667 TABLE.appendChild(tHead); 13668 TABLE.appendChild(tBody); 13669 } 13670 13671 //render table 13672 document.getElementById("divDatos" + parametros.contenedorCuadro).appendChild(TABLE); 13673 $("#tableStat" + parametros.contenedorCuadro).hide(); 13674 $("#TableEspacio" + parametros.contenedorCuadro).hide(); 13675 } 13676 13677 /// <summary> CUADRO #20 - 28-05-2019 (EN PROCESO DE DESARROLLO) </summary> 13678 /// 13679 /// <remarks> rovalx </remarks> 13680 function DibujaCuadroTipo20(data, parametros) { 13681 var aValores = data.value; 13682 var tValores = data.value.length;
13683 // var aPeriodos = data.dimension.periods.category.label; 13684 var aIndicadores = data.dimension.indicator.category.label; 13685 var aGrupos = parametros.indicadorValorCompuesto.grupos; 13686 var tGrupos = aGrupos.length; 13687 // var cabeceras = DibujaCabecera(data.dimension.indicator.label, arrayPeriodos.length, 2, parametros.contenedorCuadro); 13688 var titulosColumnas = []; 13689 var tColumnas = tValores / tGrupos; // obtenemos el numero de columnas 13690 13691 if (parametros.titulosColumnas == "") { 13692 for(var c = 0; c < tColumnas; c++){ 13693 titulosColumnas.push("Concepto "+ c); 13694 } 13695 } else { 13696 titulosColumnas = parametros.titulosColumnas.split(","); 13697 } 13698 titulosColumnas.unshift("Denominación") 13699 var saltosRenglon = titulosColumnas.length; 13700 //ARMADO DE CABECERA CON DOM 13701 //Estructura de la tabla base 13702 var TABLE = document.createElement("table"); 13703 TABLE.className = 'table table-bordered table-responsive'; 13704 var tHead = (!BROWSER.ie()) ? TABLE.createTHead() : document.createElement("thead"); 13705 var tBody = (!BROWSER.ie()) ? TABLE.createTBody() : document.createElement("tbody"); 13706 var tRowHead = (!BROWSER.ie()) ? tHead.insertRow() : document.createElement("tr"); 13707 var tRowBody = (!BROWSER.ie()) ? tBody.insertRow() : document.createElement("tr"); 13708 13709 //armar las columnas con titulocolumnas dependiendo del parametro mnc 13710 var tdCol = document.createElement("th"); 13711 for (var i = 0; i < saltosRenglon; i++) { 13712 var col = tdCol.cloneNode(true); 13713 col.innerHTML = titulosColumnas[i]; 13714 col.width = (i == 0) ? 150 : 90; 13715 col.align = "center"; 13716 col.className = "Th"; 13717 tRowHead.appendChild(col); 13718 } 13719 var aDatos = []; // guarda la estructura de datos usada para dibujar los datos en el cuadro 13720 // arma la estructura de datos para el dibujado del cuadro 13721 var maxCantidadColumnas = parametros.indicadorValorCompuesto.maximaCantidadPorGrupo; 13722 var c = 0; 13723 for (var x = 0; x < tGrupos; x++) { 13724 var saltos = maxCantidadColumnas; 13725 var aInds = aGrupos[x].indicadores; 13726 aGrupos[x].textos = []; 13727 var rInds = aIndicadores.filter(function(o, index){ 13728 return aInds.indexOf(o.Key.replace("I_","")) != -1; 13729 }); 13730 if(rInds.length > 0){ 13731 aGrupos[x].textos = rInds; 13732 } 13733 aGrupos[x].valores = []; 13734 for(var v = c; v < tValores; v++){ 13735 if(saltos > 0){ 13736 aGrupos[x].valores.push(aValores[v]); 13737 saltos--; 13738 } 13739 } 13740 c = c + maxCantidadColumnas; 13741 } 13742 13743 //armar datos para dibujar filas+ 13744 var tdCol = document.createElement("td"); 13745 var row = document.createElement("tr"); 13746 var fila = row.cloneNode(true); 13747 for(var x = 0; x < tGrupos; x++){ 13748 var cell = tdCol.cloneNode(true); 13749 fila = row.cloneNode(true); 13750 cell.innerHTML = aGrupos[x].titulo; 13751 fila.appendChild(cell); 13752 var tVal = aGrupos[x].valores.length; 13753 var dVal = aGrupos[x].valores; 13754 for(var y = 0; y < tVal; y++){ 13755 var cellx = tdCol.cloneNode(true); 13756 cellx.innerHTML = dVal[y]; 13757 fila.appendChild(cellx); 13758 } 13759 13760 tBody.append(fila) 13761 } 13762 13763 if (BROWSER.ie) { 13764 tHead.appendChild(tRowHead); 13765 tBody.appendChild(tRowBody); 13766 TABLE.appendChild(tHead); 13767 TABLE.appendChild(tBody); 13768 } 13769 13770 //render table 13771 document.getElementById("divDatos" + parametros.contenedorCuadro).appendChild(TABLE); 13772 $("#tableStat" + parametros.contenedorCuadro).hide(); 13773 $("#TableEspacio" + parametros.contenedorCuadro).hide(); 13774 13775 13776 // cabeceras con o sin titulo por parametro 13777 /* var indiceColumna = 0; 13778 $.each(arrayPeriodos, function (key, val) { 13779 //if (indexValue == (saltoPeriodos * contadorcolumnas - 1)) { 13780 valorColumna = PintaTitulosColumnas(parametros.titulosColumnas, val.Value, indiceColumna++); 13781 cabeceras += '<th class ="Th" bgcolor="#DDD" >' + valorColumna + '</th>'; 13782 contadorcolumnas++; 13783 //} 13784 //indexValue++; 13785 }); 13786 cabeceras += "</tr>"; 13787 tablaInterna += cabeceras; 13788 var datos = data.value; 13789 indexValue = 0; 13790 var renglones = ""; 13791 var arrayIndicadores = data.dimension.indicator.category.label; 13792 13793 var listaRenglones = []; 13794 indexValue = 0; 13795 var contRenglones = 0; 13796 var indicadoresNombreCorto = parametros.nombreCorto == "true" && parametros.nombresCategoriasFijas !== "" ? parametros.nombresCategoriasFijas.split("|") : []; 13797 for (var i = 0; i < arrayIndicadores.length; i++) { 13798 var bgColor = "white"; 13799 //if (i % 2 == 0) { 13800 // var bgColor = "#EFEFEF"; 13801 //} 13802 var oRenglon = {}; 13803 oRenglon["indicador"] = arrayIndicadores[i].Key.replace("I_", ""); 13804 var value = arrayIndicadores[i].Value; 13805 if (indicadoresNombreCorto.length > 0) { 13806 value = indicadoresNombreCorto[i]; 13807 } 13808 oRenglon["contenido"] = '<td class="TdInicio" id="td_indicador_' + arrayIndicadores[i].Key.replace("I_", "") + '" >' + value + '</td>'; 13809 13810 renglones += '<tr><td class="TdInicio" id="td_indicador_' + arrayIndicadores[i].Key.replace("I_", "") + '" >' + arrayIndicadores[i].Value + '</td>'; 13811 // contadorcolumnas = 0; 13812 $.each(arrayPeriodos, function (key, val) { 13813 13814 //indexValue = saltoPeriodos * contadorcolumnas + i; 13815 indexValue = contRenglones; 13816 renglones += '<td class="Td" >' + datos[indexValue] + '</td>'; 13817 13818 oRenglon["contenido"] += '<td class="Td" >' + datos[indexValue] + '</td>'; 13819 contRenglones++; 13820 // contadorcolumnas++; 13821 13822 indexValue++; 13823 }); 13824 13825 renglones += '</tr>'; 13826 listaRenglones.push(oRenglon); 13827 } 13828 13829 // tablaInterna += renglones; 13830 var todosLosIndicadoresPorParametro = parametros.indicadorDepurado.split(","); 13831 for (var i = 0; i < todosLosIndicadoresPorParametro.length; i++) { 13832 bgColor = "white"; 13833 //if (i % 2 == 0) { 13834 // bgColor = "#EFEFEF"; 13835 //} 13836 var objIndicador = listaRenglones.filter(function (objIndicador) { 13837 return objIndicador.indicador === todosLosIndicadoresPorParametro[i]; 13838 })[0]; 13839 13840 if (objIndicador != undefined) { 13841 var valorRenglon = objIndicador.contenido; //replaceAll("white",bgColor,objIndicador.contenido); 13842 tablaInterna += "<tr>" + valorRenglon + "</tr>"; 13843 } 13844 } 13845 ReemplazaTabla(tablaInterna, parametros); */ 13846 } 13847 } 13848 13849 var BROWSER = { 13850 ie: function () {
13851 if (navigator.userAgent.search("MSIE") === 0) { 13852 return false; 13853 } else { 13854 return true; 13855 } 13856 } 13857 } 13858 /** 13859 * GridComponnent: Manipulación de datos indicadores para su representación en tabla 13860 * 13861 * PARAMETROS CONFIGURACION OPCIONALES: 13862 * 13863 * micuadro.grid_configuracion = { 13864 * header_css:"string", 13865 * height:int, 13866 * width:"100%", 13867 * filters:boolean, 13868 * paging:boolean, 13869 * records_page:int, 13870 * hide_columns:array // [1,4,5,...] 13871 * fix_columns:array // [1,4,5,...] 13872 * auto_height_row: true / false // auto ajusta altura de row al contenido 13873 * } 13874 * 13875 * PARAMETROS PARA: Instance.render(columnas_tabla, datos_tabla, parametros); 13876 * columnas_tabla, // parametros pasados en el render 13877 * datos_tabla, // tipo de grafico seleccionado 13878 * parametros // parametros y confiruacion de la tabla 13879 * 13880 * METODOS: 13881 * constructor(), //inicializador del componente 13882 * setOcultaElementos(), // oculta elementos no necesarios 13883 * setColumnas() // Arega las columnas de la tabla 13884 * setDatos() // Datos a mostrar en la tabla 13885 * setConfiguracion() // Procesa parametros y configuracion para la tabla 13886 * handlerPaging() // agrega paginador si se activa 13887 * handlerColumns() // oculta columnas indicadas por parametros 13888 * loadStyles() // Carga estilos por grid 13889 * 13890 * ************************************* 13891 * @Created: 10/oct/2017 13892 * @Version: 1.0 13893 * @Author: Rovalx 13894 */ 13895 function GridComponent() { 13896 (function constructor(_this) { 13897 //console.info({ response: "Inicializado!", version: "1.0", description: "Grid Class component to build web componentes", author: "Rovalx" }) 13898 _this.config = { 13899 renderTo: null, 13900 store: null, 13901 autoRender: false, 13902 scrollable: true, 13903 border: true, 13904 plugins: [{ 13905 ptype: 'bufferedrenderer', 13906 trailingBufferZone: 20, //tras el scroll 20 13907 leadingBufferZone: 50 // delante del scroll 50 renderizados 13908 }, { ptype: 'gridfilters' }], 13909 emptyText: 'No hay registros que coincidan', 13910 enableColumnHide: false, 13911 enableColumnMove: false, 13912 sortableColumns: false, 13913 closeAction: '', 13914 columnLines: true, 13915 stripeRows: false, 13916 viewConfig: { 13917 selectedItemCls: 'cls-selected-row' 13918 }, 13919 columns: [], // columnas extjs 13920 columnas: [], // columnas en bruto 13921 header_css: "background-color:#DDD;font-weight:bold;color:none;", 13922 hide_columns: [], //col umnas ocultas 13923 fix_columns: [], //columnas fjas 13924 records_page: 10, 13925 hide_headers: false, 13926 wsc: 100, // width subcolumns 13927 wcp: 250, 13928 pinHeaders: true // moviles pinned headers on top display 13929 } 13930 _this.store = {}; 13931 })(this) 13932 this.setOcultaElementos = function () { 13933 $("#TableEspacio" + this.config.contenedorCuadro).hide(); 13934 $("#tableStat" + this.config.contenedorCuadro).hide(); 13935 } 13936 13937 this.setColumnas = function (columnas) { 13938 //console.log("GRID: Columnas en el armador"); 13939 var _comp = this; 13940 if (columnas.length > 0) { 13941 var aColumnsExt = []; 13942 $.each(columnas, function (index, col) { 13943 // columnas principales (nivel 1) 13944 var colExt = { 13945 text: col.title, 13946 width: (["first", "second", "third"].indexOf(col.dataIndex) != -1) ? _comp.config.wcp : (col.subColumns && col.subColumns.length == 0 ? 150 : "auto"), 13947 dataIndex: col.dataIndex, 13948 style: _comp.config.header_css, 13949 //locked: (index == 0) ? true : false, 13950 sortable: false, 13951 resizable: false, 13952 hideable: true, 13953 lockable: true, 13954 menuDisabled: true, 13955 hidden: col.hasOwnProperty("hidden") && col.hidden ? true : false, 13956 cell: { xtype: "gridcell", encodeHtml: true }, 13957 } 13958 //lock / bloqueo de columnas segun su posición 13959 if (_comp.config.fix_columns && _comp.config.fix_columns.indexOf(index) != -1) { 13960 colExt.locked = true; 13961 } 13962 // width columns 13963 if (_comp.config.width_columns !== undefined && _comp.config.width_columns.length > 0) { 13964 colExt.width = _comp.config.width_columns[index]; 13965 } 13966 // align columns 13967 if (_comp.config.align_columns !== undefined && _comp.config.align_columns.length > 0) { 13968 colExt.align = _comp.config.align_columns[index]; 13969 } 13970 // ord (sortable all columns) 13971 if (_comp.config.ord !== undefined && _comp.config.ord === true) { 13972 colExt.sortable = true; 13973 } 13974 13975 // Activa los filtrados por columna string en la primera automaticamente (por default estan activos) 13976 if (_comp.config.filters) { 13977 colExt.filter = { 13978 type: 'string', 13979 itemDefaults: { 13980 emptyText: 'Buscar...' 13981 } 13982 } 13983 colExt.menuDisabled = false; 13984 } 13985 //agrega las subcolumnas (nivel 2) 13986 if (col.subColumns !== undefined && col.subColumns.length > 0) { // si la columna superior agrupa columnas 13987 colExt.columns = []; 13988 var subcolumnas = col.subColumns; 13989 $.each(subcolumnas, function (index, subcol) { 13990 var defSubcol = { 13991 text: subcol.title, 13992 dataIndex: subcol.dataIndex, 13993 style: _comp.config.header_css, 13994 width: _comp.config.wsc, 13995 sortable: true, 13996 resizable: false, 13997 hideable: true, 13998 lockable: true, 13999 menuDisabled: true, 14000 cell: { xtype: "gridcell", encodeHtml: true }, 14001 } 14002 if (subcol.title == undefined) { // si se indicaron titulos para columnas y llegan undefined significa que iran ocultas 14003 defSubcol.hidden = true; 14004 } 14005 if (_comp.config.align_subcolumns !== undefined && _comp.config.align_subcolumns.length > 0) { 14006 defSubcol.align = _comp.config.align_subcolumns[index]; 14007 } 14008 if (_comp.config.filters) { 14009 defSubcol.filter = { 14010 type: 'string', 14011 itemDefaults: { 14012 emptyText: 'Buscar...' 14013 } 14014 } 14015 defSubcol.menuDisabled = false; 14016 } 14017 colExt.columns.push(defSubcol); 14018 }); 14019 } 14020 aColumnsExt.push(Ext.create("Ext.grid.column.Column", colExt)); 14021 }); 14022 this.config.columns = aColumnsExt; 14023 14024 } else { 14025 console.log("Error: en las columnas"); 14026 } 14027 14028 } 14029 this.setDatos = function (datos) { 14030 //console.log("GRID: Datos en el armador"); 14031 this.store.data = datos; 14032 } 14033 this.setConfiguracion = function (configuracion) { 14034 //console.log("GRID: Configuracion"); 14035 var config = configuracion.hasOwnProperty("grid_configuracion") ? configuracion.grid_configuracion : {}; 14036 $.extend(this.config, config); 14037 this.config.renderTo = document.getElementById("divDatos" + configuracion.contenedorCuadro); // id elemento html donde de sibujara la tabla 14038 this.config.contenedorCuadro = configuracion.contenedorCuadro; // id elemento html donde de sibujara la tabla 14039 // ord (grid sortable) 14040 this.config.sortableColumns = config.ord ? config.ord : false; 14041 //DECLARACION DEL GRID STORE PARA EL MANEJO DE DATOS ///////////////////////////////////////////////////////////////// 14042 this.store = { 14043 autoLoad: true, 14044 enablePaging: this.config.paging, 14045 proxy: { 14046 type: 'memory', 14047 enablePaging: this.config.paging, 14048 reader: { type: 'json', root: 'data' } 14049 }, 14050 data: [] 14051 }; 14052 if (this.store.enablePaging) { 14053 this.store.pageSize = this.config.records_page; 14054 this.handlerPaging(); 14055 } 14056 //ocultar headers 14057 if (this.config.hide_headers) { 14058 this.config.hideHeaders = true; 14059 } 14060 } 14061 this.handlerPaging = function () { 14062 this.config.bbar = { 14063 xtype: 'pagingtoolbar', 14064 displayInfo: true, 14065 layout: { 14066 pack: 'right' 14067 }, 14068 displayMsg: '{0} - {1} de {2}', 14069 emptyMsg: "Actualmente sin datos" 14070 } 14071 } 14072 this.handlerColumns = function (grid) { 14073 // OCULTAR COLUMNAS 14074 if (this.config.hide_columns !== null) { 14075 var aColumnasOcultas = this.config.hide_columns 14076 if (aColumnasOcultas.length > 0) { 14077 var columns = grid.getColumns(), colsTotal = columns.length; 14078 for (var x = 0; x < colsTotal; x++) { 14079 if (aColumnasOcultas.indexOf(x) != -1) columns[x].hide(); 14080 } 14081 } 14082 } 14083 } 14084 this.loadStyles = function () { 14085 if (this.config.auto_height_row) { // permite ajustar la altura de cada row al contenido si llega true 14086 var gStyles = "#" + this.config.renderTo.getAttribute("id") + " .x-grid-cell-inner {white-space:normal!important;}"; 14087 var styleDom = document.createElement("style"); 14088 styleDom.innerHTML = gStyles; 14089 var head = document.head || document.getElementsByTagName('head')[0]; 14090 head.appendChild(styleDom); 14091 } 14092 14093 } 14094 this.render = function (columnas, datos, configuracion) { 14095 if (typeof Ext == "undefined") { 14096 $("#tableStat" + configuracion.contenedorCuadro).parent().append($('<div class="bg-warning">
14096Cuadro no disponible por el momento, recargue nuevamente</div>')) 14097 } else { 14098 //console.log("GRID: Render") 14099 //AQUI LLAMA TODAS LAS FUNCIONES O BIEN SE LE ENVIAN DATOS, CONFIGURACION, COLUMNAS POR PARAMETRO AQUÃ 14100 this.config.columnas = columnas; 14101 this.setConfiguracion(configuracion); 14102 this.setColumnas(columnas); 14103 this.setDatos(datos); 14104 //console.log(datos); 14105 this.loadStyles(); 14106 this.setOcultaElementos(); 14107 //DECLARACION DEL GRID STORE PARA EL MANEJO DE DATOS ///////////////////////////////////////////////////////////////// 14108 this.config.store = Ext.create("Ext.data.Store", this.store); 14109 var grid = Ext.create("Ext.grid.Panel", this.config); 14110 //hide / show columns from grid 14111 this.handlerColumns(grid); 14112 // Agrega evento resize para reajuste de la tabla 14113 Ext.EventManager.onWindowResize(function (w, h) { 14114 grid.updateLayout(); 14115 }); 14116 } 14117 } 14118 } 14119 // Metodo FIND para IE (no implemented in JS6)z 14120 if (!Array.prototype.find) { 14121 Array.prototype.find = function (predicate) { 14122 if (this == null) { 14123 throw new TypeError('Array.prototype.find called on null or undefined'); 14124 } 14125 if (typeof predicate !== 'function') { 14126 throw new TypeError('predicate must be a function'); 14127 } 14128 var list = Object(this); 14129 var length = list.length >>> 0; 14130 var thisArg = arguments[1]; 14131 var value; 14132 14133 for (var i = 0; i < length; i++) { 14134 value = list[i]; 14135 if (predicate.call(thisArg, value, i, list)) { 14136 return value; 14137 } 14138 } 14139 return undefined; 14140 }; 14141 } 14142 /** 14143 * Fija el encabezado de los cuadros (sticky-keader) 14144 * @param {any} parametros 14145 */ 14146 function FijaEncabezadoTabla(parametros) { 14147 var link = document.createElement('meta'); 14148 link.setAttribute('http-equiv', 'X-UA-Compatible'); 14149 link.setAttribute("content","IE=11,IE=10,IE=9; IE=8; IE=7; IE=EDGE") 14150 link.content = document.location; 14151 document.getElementsByTagName('head')[0].appendChild(link); 14152 //tableStatc4 14153 $('#tableStat' + parametros.contenedorCuadro).floatThead({ 14154 top: $("#enc_men_in").height(), 14155 //autoReflow:true, 14156 responsiveContainer: function ($table) { 14157 return $table.closest('.table-responsive'); 14158 } 14159 }); 14160 $('#tableStat' + parametros.contenedorCuadro).floatThead('reflow'); 14161 if (BROWSER.ie) { 14162 $('#tableStat' + parametros.contenedorCuadro).find("thead > tr").children().addClass("Th"); 14163 } 14164 } 14165 /** 14166 * Agrega herrmientas a la tabla: buscador, paginador, ordenamiento por columnas e informacion de registros 14167 * @param {any} parametros 14168 * Modificado: 20-sept-2018 14169 */ 14170 function agregaHerramientasTabla(parametros) { 14171 if (parametros.herramientas !== "") { 14172 var buscador = (parametros.herramientas.indexOf("bus") > -1) ? true : false; 14173 var paginador = (parametros.herramientas.indexOf("pag") > -1) ? true : false; 14174 var ordenamiento = (parametros.herramientas.indexOf("ord") > -1) ? true : false; 14175 var inf = (parametros.herramientas.indexOf("inf") > -1) ? true : false; 14176 $('#tableStat' + parametros.contenedorCuadro).DataTable({ 14177 //"pagingType": "full_numbers", 14178 "searching": buscador, 14179 "paging": paginador, 14180 "ordering": ordenamiento, 14181 "info": inf 14182 }); 14183 //$('#tableStat' + parametros.contenedorCuadro).removeClass("dataTable") 14184 } 14185 } 14186 14187 14188/** 14189 * Carrusel para temas 14190 * created: 20/05/2020 14191 * Dirgido a: Cuadros 18 14192 * @param {any} id 14193 * @param {any} datos 14194 * @param {any} a 14195 */ 14196var carouselTemas = function (id, datos, a, p) { 14197 (function (_this) { 14198 _this.datos = datos; 14199 _this.id = id; 14200 _this.p = p; 14201 var _a = a || null; 14202 _this.clicked = null; 14203 _this.clickX = null; 14204 _this.scrollLeft = null; 14205 _this.aActive = (_a !== null) ? _a.split(",").map(function(x){ return parseInt(x)}) : [1, 2, 3, 4, 5]; 14206 _this.div = document.createElement("div"); 14207 _this.ul = document.createElement("ul"); 14208 14209 _this.li = document.createElement("li"); 14210 _this.span = document.createElement("span"); 14211 return _this; 14212 })(this); 14213 14214 this.render = function () { 14215 if (document.getElementById(this.id)) { 14216 this.html() 14217 } else { 14218 throw "El elemento con el ID: " + this.id + " no existe"; 14219 } 14220 } 14221 this.html = function () { 14222 var _this = this; 14223 this.mainContainer = this.div.cloneNode(false); 14224 this.mainContainer.className = "container-fluid" 14225 // this.mainContainer.style.border = "1px solid"; 14226 14227 this.divEncabezado = this.div.cloneNode(false); 14228 this.divEncabezado.className = "row"; 14229 this.divEncabezado.style.height = "auto"; 14230 14231 this.divContenido = this.div.cloneNode(false); 14232 this.divContenido.className = "row carousel-temas-contenido"; 14233 this.divContenido.style.borderTop = "1px solid #cccccc"; 14234 this.divContenido.style.padding = "20px 15px"; 14235 14236 this.mainContainer.appendChild(this.divEncabezado) 14237 this.mainContainer.appendChild(this.divContenido); 14238 document.getElementById(this.id).appendChild(this.mainContainer); 14239 14240 // crea el encabezado y sus elementos principales 14241 this.btnAnt = this.div.cloneNode(false); 14242 this.btnAnt.className = "col-md-1 col-sm-1 col-xs-1 carousel-temas-ant inegi-nav-izq"; 14243 this.btnAnt.style.textAlign = "center"; 14244 this.btnAnt.style.paddingTop = "10px"; 14245 this.btnAnt.style.color = "#e16c32"; 14246 this.btnAnt.style.height = "auto"; 14247 this.btnAnt.style.cursor = "pointer"; 14248 this.btnAnt.addEventListener("click", function (e) { 14249 e.preventDefault(); 14250 e.stopPropagation(); 14251 _this.moverScrolll("prev"); 14252 }, false); 14253 14254 this.btnSig = this.btnAnt.cloneNode(false); 14255 this.btnSig.className = "col-md-1 col-sm-1 col-xs-1 carousel-temas-sig inegi-nav-der"; 14256 // this.btnSig.innerHTML = ">"; 14257 this.btnSig.style.textAlign = "center"; 14258 this.btnSig.style.paddingTop = "10px"; 14259 this.btnSig.style.color = "#e16c32"; 14260 this.btnSig.style.height = "auto"; 14261 this.btnSig.style.cursor = "pointer"; 14262 this.btnSig.addEventListener("click", function (e) { 14263 e.preventDefault(); 14264 e.stopPropagation(); 14265 _this.moverScrolll("next"); 14266 }, false); 14267 14268 this.divOpciones = this.div.cloneNode(false); 14269 this.divOpciones.className = "col-md-10 col-sm-10 col-xs-9 carousel-temas-opciones" 14270 this.divOpciones.id = "carouselTemasOpciones_" + this.id; 14271 this.divOpciones.style.overflowX = "hidden"; 14272 this.divOpciones.style.overflowY = "hidden"; 14273 this.divOpciones.style.padding = "0"; 14274 // this.divOpciones.style.height = "40px"; 14275 14276 this.divEncabezado.appendChild(this.btnAnt) 14277 this.divEncabezado.appendChild(this.divOpciones) 14278 this.divEncabezado.appendChild(this.btnSig) 14279 14280 this.agregaDatos() 14281 14282 14283 } 14284 this.agregaDatos = function () { 14285 var _this = this; 14286 var tDatos = this.datos.length; 14287 var aDatos = this.datos; 14288 14289 //Encabezado opciones 14290 var Ul = this.ul.cloneNode(false); 14291 Ul.style.padding = "0"; 14292 Ul.id = "ulOpciones_" + this.id; 14293 Ul.style.marginBottom = "10px"; 14294 Ul.style.listStyle = "none"; 14295 // Ul.style.width = (tDatos * (150 + 4)) + "px" 14296 14297 this.divOpciones.appendChild(Ul); 14298 var totalLi = 0; 14299 var primerElementoCargar = null; 14300 for (var i = 0; i < tDatos; i++) { 14301 if ((this.aActive.indexOf(aDatos[i].tema_id) > -1 && aDatos[i].tema_id == 1) // si 1 muestre la informacion de la localidad 14302 || (this.aActive.indexOf(2) > -1 && aDatos[i].tema_id == 3) // si 2, entonces tema = 3 vivienda 14303 || (this.aActive.indexOf(3) > -1 && aDatos[i].tema_id == 4) // si 3, entonces tema = 4 poblacion 14304 || (this.aActive.indexOf(4) > -1 && aDatos[i].tema_id == 2) // si 3, entonces tema = 2 urbano 14305 || (this.aActive.indexOf(5) > -1 && aDatos[i].tema_id > 5) // si 5, entonces tema > 5 loc5000 14306 ) { 14307 totalLi++; 14308 var li = this.li.cloneNode(false); 14309 var divTexto = this.div.cloneNode(false); 14310 divTexto.style.textAlign = "center"; 14311 divTexto.style.padding = "2px 4px"; 14312 divTexto.innerHTML = aDatos[i].tema 14313 14314 li.id = "liTema_" + aDatos[i].tema_id 14315 if(totalLi == 1){ 14316 //guarda primer elemento a cargar 14317 primerElementoCargar = {temaid:aDatos[i].tema_id, index:i}; 14318 } 14319 li.style.display = "inline-block"; 14320 li.style.verticalAlign = "top"; 14321 li.style.color = "#2279c0"; 14322 li.style.margin = "0 0px"; 14323 li.style.lineHeight = "16px"; 14324 li.style.width = "150px"; 14325 li.style.height = "auto"; // original 40px 14326 li.style.cursor = "pointer"; 14327 // li.style.borderBottom = "3px solid #6f6f6f"; 14328 li.setAttribute("data-index", i); 14329 li.setAttribute("data-temaid", aDatos[i].tema_id); 14330 // evento click para mostrar la informacion de cada tema 14331 li.addEventListener("click", function (e) { 14332 e.preventDefault(); 14333 $(this).siblings().css({ borderBottom: "0px solid #fff", color:"#2279c0", fontWeight:"normal",fontSize:"14px"}) 14334 $(this).css({ borderBottom: "3px solid #5a7999", color:"#000", fontWeight:"bold",fontSize:"13px"}) 14335 _this.mostrarInformacion(e.currentTarget.dataset) 14336 }) 14337 $(li).hover(function (e) { 14338 e.preventDefault(); 14339 $(this).css("backgroundColor", "#f0f0f0"); 14340 }, function () { 14341 $(this).css("backgroundColor", "transparent"); 14342 }) 14343 li.appendChild(divTexto); 14344 Ul.appendChild(li); 14345 } 14346 14347 } 14348 Ul.style.width = (totalLi * (150 + 4)) + "px"; 14349 14350 // ejecuta primer elemento a cargar 14351 if(primerElementoCargar !== null){ 14352 document.getElementById("liTema_" + primerElementoCargar.temaid).click() 14353 } 14354 14355 //valida cantida de temas para ocultar o mostrar botones de navegacion 14356 if (this.divOpciones.clientWidth > document.getElementById("ulOpciones_" + this.id).clientWidth) { 14357 this.btnAnt.style.visibility = "hidden"; 14358 this.btnSig.style.visibility = "hidden"; 14359 } 14360 /* if(document.body.clientWidth < 490){ 14361 this.dragScroll(); 14362 } */ 14363 } 14364 this.moverScrolll = function (m) { 14365 var ul = document.getElementById("ulOpciones_" + this.id); 14366 var sizeMov = "=154"; 14367 if (m == "next") { sizeMov = "+" + sizeMov; } else { sizeMov = "-" + sizeMov; } 14368 $(ul).parent().animate({ scrollLeft: sizeMov }, 100); 14369 } 14370 this.dragScroll = function(){ 14371 var _this = this; 14372 var ul = document.getElementById("ulOpciones_" + this.id); 14373 this.divOpciones.style.overflowX = "scroll"; 14374 $(ul).on({ 14375 'mousemove': function(e) { // mouse se movio sobre el elemento 14376 if(!_this.clicked) return; 14377 const x = e.pageX - ul.offsetLeft; 14378 const walk = (x - _this.clickX) * 3; //scroll-fast 14379 ul.scrollLeft = _this.scrollLeft - walk; 14380 }, 14381 'mousedown': function(e) { // mouse fue presionado 14382 _this.clicked = true; 14383 ul.style.cursor = "grabbing"; 14384 _this.clickX = e.pageX - ul.scrollLeft; 14385 _this.scrollLeft = ul.scrollLeft; 14386 }, 14387 'mouseleave': function(){ 14388 _this.clicked = false; 14389 ul.style.cursor = "pointer"; 14390 }, 14391 'mouseup': function() { // mouse fue liberado 14392 _this.clicked = false; 14393 $(ul).css('cursor', 'auto'); 14394 } 14395 }); 14396 } 14397 this.mostrarInformacion = function (dataset) { 14398 //removemos del dom todos los elementos dentro del contenido para poder pintar el nuevo. 14399 while (this.divContenido.hasChildNodes()) { 14400 this.divContenido.removeChild(this.divContenido.firstChild); 14401 } 14402 if (dataset.index) { 14403 var index = dataset.index; // posicion del arreglo de datos 14404 var aTema = this.datos[index]; // datos seleccionados a traves del indice / posicion en el arreglo 14405 var aDatos = this.datos[index].datos; // datos seleccionados a traves del indice / posicion en el arreglo 14406 var tDatos = this.datos[index].datos.length; // total de datos seleccionados a traves del indice / posicion en el arreglo 14407 var contenido = this.divContenido; // contenedor de la informacion a mostrar
14408 var urlAreas = C_dominioBuscador+"app/areasgeograficas?ag="; 14409 14410 if (dataset.temaid > 1 && dataset.temaid < 5) { 14411 14412 var TABLA = document.createElement("table"); 14413 TABLA.className = "table table-bordered table-responsive table-striped"; 14414 var tHead = document.createElement("thead"); 14415 var tBody = document.createElement("tbody"); 14416 var tr = document.createElement("tr"); 14417 var th = document.createElement("th"); 14418 var td = document.createElement("td"); 14419 14420 TABLA.appendChild(tHead) 14421 TABLA.appendChild(tBody) 14422 this.divContenido.appendChild(TABLA); 14423 14424 for (var x = 0; x < aDatos.length; x++) { 14425 if (Array.isArray(aDatos[x].valor) && aDatos[x].descripcion != "NOTA") { // tabla varias columnas 14426 var aColumnas = aDatos[x].valor; 14427 var renglon = tr.cloneNode(false); 14428 var primeraCelda = null; 14429 if (x === 0) { // primer registro son las columnas principales del cuadro 14430 primeraCelda = th.cloneNode(false); 14431 primeraCelda.className = "Th"; 14432 } else { 14433 primeraCelda = td.cloneNode(false); 14434 primeraCelda.className = ""; 14435 } 14436 primeraCelda.innerHTML = aDatos[x].descripcion; 14437 renglon.appendChild(primeraCelda); 14438 14439 for (var c = 0; c < aColumnas.length; c++) { 14440 var celda = (x === 0) ? th.cloneNode(false) : td.cloneNode(false); 14441 celda.innerHTML = aColumnas[c]; 14442 celda.className = (x === 0) ? "Th" : "TdV"; 14443 renglon.appendChild(celda); 14444 } 14445 if (x === 0) { 14446 tHead.appendChild(renglon); 14447 } else { // filas de datos (cuerpo del cuadro) 14448 tBody.appendChild(renglon); 14449 } 14450 14451 } else if (aDatos[x].valor !== "TITULO" && aDatos[x].descripcion !== "NOTA") { // tabla 2 columnas 14452 14453 var renglon = tr.cloneNode(false); 14454 var primeraCelda = null, segundaCelda = null; 14455 if (x === 0) { // primer registro son las columnas principales del cuadro 14456 primeraCelda = th.cloneNode(false); 14457 primeraCelda.className = "Th"; 14458 segundaCelda = th.cloneNode(false); 14459 segundaCelda.className = "Th"; 14460 } else { 14461 primeraCelda = td.cloneNode(false); 14462 primeraCelda.className = ""; 14463 segundaCelda = td.cloneNode(false); 14464 segundaCelda.className = "TdV"; 14465 } 14466 primeraCelda.innerHTML = aDatos[x].descripcion; 14467 segundaCelda.innerHTML = aDatos[x].valor; 14468 renglon.appendChild(primeraCelda); 14469 renglon.appendChild(segundaCelda); 14470 14471 if (x === 0) { 14472 tHead.appendChild(renglon); 14473 } else { // filas de datos (cuerpo del cuadro) 14474 tBody.appendChild(renglon); 14475 } 14476 } 14477 } 14478 14479 // INSERTAR NOTAS POR EL TEMA SELECCIONADO EN EL MODO VISUAL 2 POR PESTAÃAS 14480 // modificacion 04-07-2022 14481 // console.log(aDatos); 14482 var aNotasTemaMostrar = aDatos.filter(function(nota){ 14483 return nota.descripcion === "NOTA"; 14484 }); 14485 if(aNotasTemaMostrar.length > 0){ 14486 aNotasTemasMostrar = aNotasTemaMostrar.reverse();
14486 // invertimos las notas para coloarlas en el orden correcto 14487 for (var x = 0; x < aNotasTemaMostrar.length; x++) { 14488 //preguntamos si el valor de la nota es un arreglo y extraemos el primer valor, si no entonces es un string 14489 var sNota = Array.isArray(aNotasTemaMostrar[x].valor)? aNotasTemaMostrar[x].valor[0] : aNotasTemaMostrar[x].valor; 14490 var divNota = this.div.cloneNode(false); 14491 divNota.style.marginTop = "15px"; 14492 divNota.style.fontSize = "11px"; 14493 divNota.innerHTML = sNota; 14494 this.divContenido.appendChild(divNota); 14495 } 14496 } 14497 14498 } else { // si tema es 1 y >= 5 14499 var UL = this.ul.cloneNode(false); 14500 UL.className = "list-group" 14501 14502 /* var aDatosTema1 = tDatos.map(function(tema, idx){ 14503 return tema. 14504 }) */ 14505 if(aTema.tema_id === 1){ 14506 var _ulInfoLocalidad = tplInformacionLocalidad(aTema.datos, UL, this.p) 14507 this.divContenido.appendChild(_ulInfoLocalidad); 14508 } 14509 14510 for (var x = 0; x < tDatos; x++) { 14511 if (aTema.tema_id !== 1) { // solo para ficha diferente de informacion de localidad 14512 14513 this.divContenido.appendChild(UL); 14514 if (aDatos[x].descripcion !== "NOTA") { 14515 var fila = this.li.cloneNode(false); 14516 fila.className = "list-group-item" 14517 fila.style.padding = "4px"; 14518 fila.style.borderRight = "0"; 14519 fila.style.borderLeft = "0"; 14520 14521 var titulo = this.span.cloneNode(false); 14522 titulo.style.verticalAlign = "top"; 14523 titulo.style.display = "inline-block"; 14524 titulo.style.width = "60%"; 14525 titulo.style.fontWeight = "bold" 14526 var valor = this.span.cloneNode(false); 14527 valor.style.verticalAlign = "top"; 14528 valor.style.display = "inline-block"; 14529 valor.style.width = "40%"; 14530 14531 if (aDatos[x].descripcion === "TITULO") { 14532 // fila.className = "" 14533 fila.style.padding = "0px"; 14534 titulo.innerHTML = aDatos[x].valor; 14535 titulo.style.backgroundColor = "#f9f9f9"; 14536 titulo.style.padding = "4px 6px"; 14537 titulo.style.color = "#157fcc"; 14538 titulo.style.width = "100%"; 14539 } else { 14540 titulo.innerHTML = "  " + aDatos[x].descripcion + ": "; 14541 valor.innerHTML = aDatos[x].valor; 14542 } 14543 14544 fila.appendChild(titulo); 14545 if (aDatos[x].descripcion !== "TITULO") { 14546 fila.appendChild(valor); 14547 } 14548 UL.appendChild(fila) 14549 } 14550 14551 } 14552 14553 } 14554 14555 // INSERTAR NOTAS POR EL TEMA SELECCIONADO EN EL MODO VISUAL 2 POR PESTAÃAS - SOLO PARA LISTADOS 14556 // modificacion 04-07-2022 14557 // console.log(aDatos); 14558 var aNotasListados = aDatos.filter(function(nota){ 14559 return nota.descripcion === "NOTA"; 14560 }); 14561 if(aNotasListados.length > 0){ 14562 // console.log(aNotasListados); 14563 aNotasListados = aNotasListados.reverse();
14563 // invertimos las notas para coloarlas en el orden correcto 14564 for (var x = 0; x < aNotasListados.length; x++) { 14565 //preguntamos si el valor de la nota es un arreglo y extraemos el primer valor, si no entonces es un string 14566 var sNota = Array.isArray(aNotasListados[x].valor)? aNotasListados[x].valor[0] : aNotasListados[x].valor; 14567 var divNota = this.div.cloneNode(false); 14568 divNota.style.marginTop = "15px"; 14569 divNota.style.fontSize = "11px"; 14570 divNota.innerHTML = ((sNota.indexOf("*") > -1)? "" : "* ") + sNota; 14571 this.divContenido.appendChild(divNota); 14572 } 14573 } 14574 14575 /* if (aDatos[aDatos.length - 1].descripcion === "NOTA") { 14576 var dNota = aDatos[aDatos.length - 1]; 14577 console.log(dNota) 14578 var divNota = this.div.cloneNode(false); 14579 divNota.style.marginTop = "15px"; 14580 divNota.style.fontSize = "11px"; 14581 divNota.innerHTML = Array.isArray(dNota.valor) ? dNota.valor[0] : dNota.valor; 14582 this.divContenido.appendChild(divNota); 14583 14584 } 14585 */ 14586 } 14587 14588 14589 } else { 14590 throw "Error: no se encontró el index para el tema solicitado"; 14591 } 14592 } 14593 14594} 14595/** 14596 * Metodo encargado de armar el template con datos de informacion de la localidad [llamado en: DibujaCuadroTipo18_LocalidadesV4 ] 14597 * @param {*} datos 14598 * @param {*} ul 14599 * @returns 14600 */ 14601function tplInformacionLocalidad(datos, ulp, parametros){ 14602 var ul = ulp.cloneNode(true); 14603 ul.className = ul.className + " cls-ulLocalidad"; 14604 ul.style.padding = "0px"; 14605 ul.style.marginBottom = "0px"; 14606 ul.style.listStyleType = "none"; 14607 var li = document.createElement("li"); 14608 var span = document.createElement("span"); 14609 span.style.display = "inline-block"; 14610 span.style.padding = "0px 0px"; 14611 span.style.fontWeight = "600"; 14612 span.style.width = "40%"; 14613 span.className = "cls-block-loc"; 14614 var a = document.createElement("a"); 14615 /* datos.map(function(tema, index){ 14616 console.info(index +" > "+ tema.descripcion + " [ " + tema.valor +" ]"); 14617 }) */ 14618 // OBTENER LA ENTIDAD FEDERATIVA --------------------------------------------------------------------------- 14619 var oEntidadFederativa = datos.find(function(el) { 14620 var claveEntidad = datos.find(function(el) { 14621 return el.descripcion === "Clave de entidad federativa" 14622 }) 14623 el.texto = el.valor+" ("+claveEntidad.valor +")"; 14624 el.url = C_dominioBuscador + "app/areasgeograficas?ag=" + claveEntidad.valor; 14625 return el.descripcion === "Entidad federativa" || el.descripcion === "Nombre de la entidad federativa"; 14626 }) 14627 if(oEntidadFederativa !== undefined){ 14628 var aEntFed = a.cloneNode(true); aEntFed.innerHTML = oEntidadFederativa.texto; 14629 aEntFed.setAttribute("href", oEntidadFederativa.url); aEntFed.setAttribute("target","_blank"); aEntFed.style.cursor = "pointer"; 14630 var spanEntFedLabel = span.cloneNode(true); spanEntFedLabel.innerHTML = getTraductorCuadro(parametros, "Entidad federativa")+":"; 14631 var spanEntFedValor = span.cloneNode(true); spanEntFedValor.appendChild(aEntFed); spanEntFedValor.style.fontWeight = "normal"; spanEntFedValor.style.width = "60%"; 14632 var liEntFed = li.cloneNode(true); liEntFed.appendChild(spanEntFedLabel) 14633 liEntFed.appendChild(spanEntFedValor) 14634 ul.appendChild(liEntFed); 14635 } 14636 14637 // OBTENER MUNICIPIO --------------------------------------------------------------------------- 14638 var oMunicipio = datos.find(function(el) { 14639 var claveEntidad = datos.find(function(el) { 14640 return el.descripcion === "Clave de entidad federativa" 14641 }) 14642 var claveMpio = datos.find(function(el) { 14643 return el.descripcion === "Clave de municipio" || el.descripcion === "Clave de municipio o demarcación territorial" 14644 }) 14645 el.texto = el.valor+" ("+claveEntidad.valor + claveMpio.valor +")";
14646 el.url = C_dominioBuscador + "app/areasgeograficas?ag=" + claveEntidad.valor + claveMpio.valor; 14647 return el.descripcion === "Municipio" || el.descripcion === "Municipio o demarcación territorial"; 14648 }) 14649 var aMunicipio = a.cloneNode(true); aMunicipio.innerHTML = oMunicipio.texto; 14650 aMunicipio.setAttribute("href", oMunicipio.url); aMunicipio.setAttribute("target","_blank"); aMunicipio.style.cursor = "pointer"; 14651 var spanMunicipioLabel = span.cloneNode(true); spanMunicipioLabel.innerHTML = getTraductorCuadro(parametros, "Municipio")+":"; 14652 var spanMunicipioValor = span.cloneNode(true); spanMunicipioValor.appendChild(aMunicipio); spanMunicipioValor.style.fontWeight = "normal"; spanMunicipioValor.style.width = "60%"; 14653 var liMunicipio = li.cloneNode(true); liMunicipio.appendChild(spanMunicipioLabel) 14654 liMunicipio.appendChild(spanMunicipioValor) 14655 ul.appendChild(liMunicipio); 14656 14657 // OBTENER LOCALIDAD --------------------------------------------------------------------------- 14658 var claveEntidad = null; 14659 var claveMpio = null; 14660 var oLocalidad = datos.find(function(el) { 14661 claveEntidad = datos.find(function(el) { 14662 return el.descripcion === "Clave de entidad federativa" 14663 }) 14664 claveMpio = datos.find(function(el) { 14665 return el.descripcion === "Clave de municipio" || el.descripcion === "Clave de municipio o demarcación territorial" 14666 }) 14667 var claveLocalidad = datos.find(function(el) { 14668 return el.descripcion === "Clave de localidad" 14669 }) 14670 el.texto = el.valor + " ("+ claveEntidad.valor + claveMpio.valor + claveLocalidad.valor +")"; 14671 // consultamos la clave en entidad para sacar la clave de la localidad 14672 if(claveLocalidad){ 14673 var claveLoc = claveEntidad.texto.substring(claveEntidad.texto.indexOf("(")+1,claveEntidad.texto.length-1); 14674 el.url_localidad = C_dominioBuscador + "app/areasgeograficas?ag=" + claveLoc; 14675 } 14676 return el.descripcion === "Localidad" || el.descripcion === "Nombre de localidad"; 14677 }) 14678 14679 var aLocalidadLink = a.cloneNode(true); aLocalidadLink.setAttribute("href", oLocalidad.url_localidad); aLocalidadLink.setAttribute("target","_blank"); aLocalidadLink.style.cursor = "pointer"; 14680 aLocalidadLink.innerHTML = oLocalidad.texto; 14681 var spanLocalidadLabel = span.cloneNode(true); spanLocalidadLabel.innerHTML = getTraductorCuadro(parametros, "Localidad")+":"; spanLocalidadLabel.style.verticalAlign = "top"; 14682 var spanLocalidadValor = span.cloneNode(true); spanLocalidadValor.appendChild(aLocalidadLink); spanLocalidadValor.style.fontWeight = "normal"; spanLocalidadValor.style.width = "60%"; 14683 // aLocalidadLink.appendChild(spanLocalidadValor) 14684 var liLocalidad = li.cloneNode(true); liLocalidad.appendChild(spanLocalidadLabel) 14685 liLocalidad.appendChild(spanLocalidadValor) 14686 ul.appendChild(liLocalidad); 14687 14688 // OBTENER UBICACION GEOGRAFICA --------------------------------------------------------------------------- 14689 var oUbicacionGeografica = datos.find(function(el) { 14690 var oLatitud = datos.find(function(el) { 14691 return el.descripcion === "Latitud" 14692 }) 14693 var oAltitud = datos.find(function(el) { 14694 return el.descripcion === "Altitud" 14695 }) 14696 if(oAltitud && oLatitud){ 14697 el.texto = "Longitud " + el.valor +",<br />Latitud "+ oLatitud.valor +",<br />Altitud "+ oAltitud.valor; 14698 } 14699 return el.descripcion === "Longitud"; 14700 }) 14701 if(oUbicacionGeografica){ 14702 var spanUbicacionGeograficaLabel = span.cloneNode(true); spanUbicacionGeograficaLabel.innerHTML = getTraductorCuadro(parametros, "Ubicación geográfica")+":"; spanUbicacionGeograficaLabel.style.verticalAlign = "top"; 14703 var spanUbicacionGeograficaValor = span.cloneNode(true); spanUbicacionGeograficaValor.innerHTML = oUbicacionGeografica.texto; spanUbicacionGeograficaValor.style.fontWeight = "normal"; spanUbicacionGeograficaValor.style.width = "60%"; 14704 var liUbicacionGeografica = li.cloneNode(true); liUbicacionGeografica.appendChild(spanUbicacionGeograficaLabel) 14705 liUbicacionGeografica.appendChild(spanUbicacionGeograficaValor) 14706 ul.appendChild(liUbicacionGeografica); 14707 } 14708 14709 // OBTENER TIPIFICACION (Tipo de localidad habitada) --------------------------------------------------------------------------- 14710 /* var oTipificacion = datos.find(function(el) { 14711 return el.descripcion === "Tipo de localidad habitada"; 14712 }) 14713 var spanTipificacionLabel = span.cloneNode(true);
14713 spanTipificacionLabel.innerHTML = "Tipo de localidad habitada:"; 14714 var spanTipificacionValor = span.cloneNode(true); spanTipificacionValor.innerHTML = oTipificacion.valor; spanTipificacionValor.style.fontWeight = "normal"; spanTipificacionValor.style.width = "60%"; 14715 var liTipificacion = li.cloneNode(true); liTipificacion.appendChild(spanTipificacionLabel) 14716 liTipificacion.appendChild(spanTipificacionValor) 14717 ul.appendChild(liTipificacion); */ 14718 14719 // OBTENER ES CABECERA MUNICIPAL --------------------------------------------------------------------------- 14720 var oCabeceraMunicipal = datos.find(function(ele) { 14721 var oNombreCabeceraMunicipal = datos.find(function(el) { 14722 return el.descripcion === "Clave de la Cabecera Municipal" 14723 }) 14724 if(oNombreCabeceraMunicipal){ 14725 var ncm = oNombreCabeceraMunicipal.valor.replaceAll(" ",""); 14726 var claveCabecera = ncm.substring(ncm.indexOf("(")+1,ncm.length-1); 14727 ele.texto = (oNombreCabeceraMunicipal.valor).substr(0, oNombreCabeceraMunicipal.valor.indexOf("(")) 14728 ele.clave_cabecera = claveCabecera; 14729 ele.url_cabecera = C_dominioBuscador + "app/areasgeograficas?ag=" + claveCabecera; 14730 } 14731 return ele.descripcion == "Es Cabecera Municipal"; 14732 }) 14733 // console.log(oCabeceraMunicipal) 14734 14735 // return; 14736 if(oCabeceraMunicipal){ 14737 var spanEscabeceraLabel = span.cloneNode(true); spanEscabeceraLabel.innerHTML = getTraductorCuadro(parametros,"Es cabecera municipal")+":"; 14738 var spanEscabeceraValor = span.cloneNode(true); spanEscabeceraValor.innerHTML = oCabeceraMunicipal.valor; spanEscabeceraValor.style.fontWeight = "normal"; spanEscabeceraValor.style.width = "60%"; 14739 var liEscabecera = li.cloneNode(true); liEscabecera.appendChild(spanEscabeceraLabel) 14740 liEscabecera.appendChild(spanEscabeceraValor) 14741 ul.appendChild(liEscabecera); 14742 14743 var aCabeceraMunicipal = a.cloneNode(true); aCabeceraMunicipal.innerHTML = oCabeceraMunicipal.texto+" ("+oCabeceraMunicipal.clave_cabecera +")"; 14744 aCabeceraMunicipal.setAttribute("href", oCabeceraMunicipal.url_cabecera); aCabeceraMunicipal.setAttribute("target","_blank"); aCabeceraMunicipal.style.cursor = "pointer"; 14745 var spanCabeceraLabel = span.cloneNode(true); spanCabeceraLabel.innerHTML = getTraductorCuadro(parametros, "Cabecera municipal")+":"; 14746 var spanCabeceraValor = span.cloneNode(true); spanCabeceraValor.appendChild(aCabeceraMunicipal); spanCabeceraValor.style.fontWeight = "normal"; spanCabeceraValor.style.width = "60%"; 14747 var liCabeceraNombre = li.cloneNode(true); liCabeceraNombre.appendChild(spanCabeceraLabel) 14748 liCabeceraNombre.appendChild(spanCabeceraValor) 14749 ul.appendChild(liCabeceraNombre); 14750 } 14751 14752 // OBTENER NOTA GENERAL--------------------------------------------------------------------------- 14753 var oNota = datos.find(function(el) { 14754 return el.descripcion === "NOTA"; 14755 }) 14756 if(oNota){ 14757 var spanNota = span.cloneNode(true); spanNota.innerHTML = "<br />* "+oNota.valor; 14758 spanNota.style.fontWeight = "normal"; spanNota.style.width = "100%"; spanNota.style.fontSize = "11px"; 14759 var liNota = li.cloneNode(true); liNota.appendChild(spanNota) 14760 liNota.appendChild(spanNota) 14761 ul.appendChild(liNota); 14762 } 14763 return ul; 14764}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.