1 2class_obs = { 3 cons:{ 4 _SECCION: 'sección', 5 _TEXTO: 'texto', 6 _RENGLONES: 'renglones encabezado', 7 _NUM_RENGLON: 'num renglón', 8 _NUM_COLUMNA: 'num columna', 9 _AGRUPA: 'agrupa', 10 }, 11 tabla: '', 12 tabla_html: '<table id="tbl_revistas" class="stripe row-border order-column nowrap display" style="width:100%; font-size:12px"></table>', 13 th_inter: '<th rowspan="<numrow>" colspan="<numcol>" style="min-width: 150px; max-width: 150px; background-color: <color-fondo>"><div style="width: 100%; text-align: left; white-space: normal;"><tx_text></div></th>', 14 tabla_th_orig: '<thead>' + 15 //'<tr>' + 16 '<encabezados>' + 17 //'</tr>' + 18 '</thead>' + 19 '<tbody id="tabla_body">' + 20 '</tbody>' + 21 '<tfoot>' + 22 '<totales>' + 23 '</tfoot>', 24 tabla_th: '', 25 td_inter:'<td style="min-width: 100px; max-width: 100px; background-color: <bcolor>;"><td_text></td>', 26 tabla_tr: '<tr>' + 27 '<td class="all" style="min-width: 100px; max-width: 100px"><primero></td>' + 28 '<tds_inter>
28' + 29 '</tr>', 30 td_inter_fijo:'<td style="min-width: 100px; max-width: 100px; background-color: <bcolor>;"><div style="width: 100%; text-align: left; white-space: normal;"><td_text></div></td>', 31 tabla_tr_fijo: '<tr>' + 32 '<td class="all" style="min-width: 100px; max-width: 100px"><div style="width: 100%; text-align: left; white-space: normal;"><primero></div></td>' + 33 '<tds_inter>' + 34 '</tr>', 35 tabla_body: '', 36 opcion_busca: '<a class="dropdown-item waves-light waves-effect menu-busca-por" href="#" id="<id>"><opcion></a>', 37 html_opciones : '', 38 html_opciones_select : [], 39 id_buscar: '', 40 opcion_anio: '<a class="dropdown-item waves-light waves-effect menu-anio" href="#" id="<id>"><opcion></a>', 41 html_anios : '', 42 html_anios_select : [], 43 anios: [], 44 anio_select: '', 45 registros: { 46 anios: [], 47 totales: [], 48 columna_total: [], 49 color_total: '', 50 ocultar: [], 51 buscar: {catalogo:[], completo:[]}, 52 incluir: {valores:[], texto:[]}, 53 completos: [], 54 numerico: [], 55 url: [], 56 paginado:{valores:[]}, 57 rencabezado:[], 58 fijas:[], 59 filtro: [], 60 textos: [/*id:'', texto:''*/], 61 row_encabezados: [0], 62 encabezado: [] 63 }, 64 num_encabezados: 0, 65 DISCOVERY_DOCS: ["https://sheets.googleapis.com/$discovery/rest?version=v4"], 66 SCOPES: ['https://www.googleapis.com/auth/spreadsheets', 'https://www.googleapis.com/auth/drive'], 67 datos: function(anio_select=null){ 68 class_obs.anios = []; 69 var p_k = ''; 70 $.each(env.P_K, function(i,val){ 71 p_k += b(val); 72 if(i != env.P_K.length){ 73 p_k += '\n'; 74 } 75 }); 76 77 var object = { 78 private_key: p_k, 79 client_email: b(env.C_E), 80 scopes: class_obs.SCOPES, 81 }; 82 gapi.load("client", async function(){ 83 gapi.auth.setToken(await GetAccessTokenFromServiceAccount.do(object)); 84 gapi.client.init({ 85 discoveryDocs: class_obs.DISCOVERY_DOCS, 86 }).then(function () { 87 //Lectura de hoja de cálculo, se requiere el ID y la hoja de la que leerá 88 gapi.client.sheets.spreadsheets.get({ 89 spreadsheetId: b(env.sIdObs), 90 //Esta opción es para incluir TODOS los datos 91 //includeGridData: true 92 }).then(function(response) { 93 var sheets = response.result.sheets; 94 95 //Obtiene los tÃtulos de las hojas, divide si existe un guión, se queda con la primera parte y aplica un parseInt 96 class_obs.anios = sheets.map(function(sheet) { 97 if( !isNaN(parseInt(sheet.properties.title.split('-')[0])) ) 98 return sheet.properties.title; 99 }); 100 101 //Filtra sólo los años 102 class_obs.anios = class_obs.anios.filter(function (value) { 103 return value !== undefined; 104 }); 105 106 //Si no hay año seleccionado, obtiene el más alto 107 if(anio_select == null){ 108 //anio_select = Math.max(...class_obs.anios); 109 anio_select = class_obs.anios[class_obs.anios.length-1]; 110 } 111 112 //Obtiene todas las hojas, se usa si se requiere leer TODAS las hojas de una sola pasada, y se pone en "ranges" 113 var ranges = sheets.map(function(sheet) { 114 return sheet.properties.title; 115 }); 116 117 //gapi.client.sheets.spreadsheets.values.batchGet({ 118 gapi.client.sheets.spreadsheets.values.get({ 119 spreadsheetId: b(env.sIdObs), 120 //ranges: ranges 121 //Sólo se leerá la configuración 122 range: 'config' 123 }).then(function(response) { 124 class_obs.tabla_body = ''; 125 class_obs.html_opciones = ''; 126 class_obs.html_opciones_select = []; 127 class_obs.id_buscar = ''; 128 class_obs.registros.ocultar = []; 129 class_obs.registros.fijas = []; 130 class_obs.registros.buscar.catalogo = []; 131 class_obs.registros.buscar.completo = []; 132 class_obs.registros.incluir.valores = []; 133 class_obs.registros.numerico = []; 134 class_obs.registros.url = []; 135 class_obs.registros.row_encabezados = []; 136 class_obs.registros.incluir.texto = []; 137 class_obs.registros.completos = []; 138 class_obs.registros.filtro = []; 139 class_obs.num_encabezados = 0; 140 141 $('#buscador').show(); 142 $('#inicio').hide(); 143 $('#mas').show(); 144 145 var datos_anio = true; 146 var values = response.result.values; 147 148 //Corta sólo la primera columna 149 $.each(values.slice(1), function(i, val){ 150 try{ 151 if(val[0] == 'años'){ 152 class_obs.registros.anios = []; 153 var valores = val[1].split(',').map(val_v => val_v.trim()); 154 class_obs.registros.anios = class_obs.registros.anios.concat(valores); 155 } 156 if(val[0] == 'totales'){ 157 var valores = val[1].split(','); 158 $.each(class_obs.registros.anios, function(a, vala){ 159 class_obs.registros.totales[vala] = []; 160 class_obs.registros.totales[vala] = class_obs.registros.totales[vala].concat(valores); 161 }); 162 } 163 if(val[0] == 'ocultar'){ 164 var valores = val[1].split(','); 165 $.each(class_obs.registros.anios, function(a, vala){ 166 class_obs.registros.ocultar[vala] = []; 167 class_obs.registros.ocultar[vala] = class_obs.registros.ocultar[vala].concat(valores); 168 if(class_obs.registros.ocultar[vala] == ''){ 169 class_obs.registros.ocultar[vala] = []; 170 } 171 }); 172 } 173 if(val[0] == 'buscar'){ 174 var valores = val[1].split(','); 175 $.each(class_obs.registros.anios, function(a, vala){ 176 class_obs.registros.buscar[vala] = []; 177 class_obs.registros.buscar[vala] = class_obs.registros.buscar[vala].concat(valores); 178 }); 179 } 180 if(val[0] == 'incluir'){ 181 var valores = val[1].split(','); 182 $.each(class_obs.registros.anios, function(a, vala){ 183 class_obs.registros.incluir.valores[vala] = []; 184 class_obs.registros.incluir.valores[vala] = class_obs.registros.incluir.valores[vala].concat(valores); 185 }); 186 } 187 if(val[0] == 'paginado'){ 188 var valores = val[1].split(','); 189 $.each(class_obs.registros.anios, function(a, vala){ 190 class_obs.registros.paginado.valores[vala] = []; 191 class_obs.registros.paginado.valores[vala] = class_obs.registros.paginado.valores[vala].concat(valores); 192 }); 193 } 194 if(val[0] == 'columna total'){ 195 var valores = val[1].split(','); 196 class_obs.registros.color_total = val[2]; 197 $.each(class_obs.registros.anios, function(a, vala){ 198 class_obs.registros.columna_total[vala] = []; 199 class_obs.registros.columna_total[vala] = class_obs.registros.columna_total[vala].concat(valores); 200 }); 201 } 202 if(val[0] == 'fijas'){ 203 var valores = val[1].split(','); 204 $.each(class_obs.registros.anios, function(a, vala){ 205 class_obs.registros.fijas[vala] = []; 206 class_obs.registros.fijas[vala] = class_obs.registros.fijas[vala].concat(valores); 207 }); 208 } 209 if(val[0] == 'numérico'){ 210 var valores = val[1].split(','); 211 $.each(class_obs.registros.anios, function(a, vala){ 212 class_obs.registros.numerico[vala] = []; 213 $.each(valores, function(i2, val2){ 214 if(val2.indexOf('-') !== -1){ 215 var rango = val2.split('-'); 216 for(var n=parseInt(rango[0]); n<=parseInt(rango[1]); n++){ 217 class_obs.registros.numerico[vala].push(n); 218 } 219 }else{ 220 class_obs.registros.numerico[vala].push(parseInt(val2)); 221 } 222 }); 223 }); 224 } 225 if(val[0] == 'url'){ 226 var valores = val[1].split(','); 227 $.each(class_obs.registros.anios, function(a, vala){ 228 class_obs.registros.url[vala] = []; 229 $.each(valores, function(i2, val2){ 230 if(val2.indexOf('-') !== -1){ 231 var rango = val2.split('-'); 232 for(var n=parseInt(rango[0]); n<=parseInt(rango[1]); n++){ 233 class_obs.registros.url[vala].push(n); 234 } 235 }else{ 236 class_obs.registros.url[vala].push(parseInt(val2)); 237 } 238 }); 239 }); 240 } 241 242 if(val[0] == 'renglones encabezado'){ 243 var valores = val[1].split(','); 244 $.each(class_obs.registros.anios, function(a, vala){ 245 class_obs.registros.rencabezado[vala] = []; 246 class_obs.registros.rencabezado[vala] = class_obs.registros.rencabezado[vala].concat(valores); 247 }); 248 } 249 250 if(val[0] == 'grupo'){ 251 var valores = val[1].split(';'); 252 $.each(class_obs.registros.anios, function(a, vala){ 253 if(class_obs.registros.encabezado[vala] == undefined){ 254 class_obs.registros.encabezado[vala] = []; 255 } 256 if(class_obs.registros.encabezado[vala][valores[0]-1] == undefined){ 257 class_obs.registros.encabezado[vala][valores[0]-1] = []; 258 } 259 class_obs.registros.encabezado[vala][valores[0]-1][valores[1]] = valores[2]; 260 }); 261 } 262 263 if(val[0] == 'texto'){ 264 var valores = val[1].split(','); 265 $.each(class_obs.registros.anios, function(a, vala){ 266 class_obs.registros.textos[vala] = []; 267 class_obs.registros.textos[vala] = class_obs.registros.textos[vala].concat(valores); 268 269 270 gapi.client.sheets.spreadsheets.values.get({ 271 spreadsheetId: b(env.sIdObs), 272 range: valores 273 }).then(function(responsetxt) { 274 var valuestxt = responsetxt.result.values; 275 $.each(valuestxt, function(itxt, valtxt){ 276 if( valtxt[valuestxt[0].indexOf(class_obs.cons._SECCION)] !== undefined ){ 277 var obj = {}; 278 obj.id = valtxt[valuestxt[0].indexOf(class_obs.cons._SECCION)]; 279 obj.texto = valtxt[valuestxt[0].indexOf(class_obs.cons._TEXTO)]; 280 class_obs.registros.textos[vala].push(obj); 281 } 282 }); 283 }); 284 }); 285 } 286 287 }catch(error){ 288 console.
288log('Falta algún dato'); 289 } 290 }); 291 292 for(var e = 0; e < parseInt(class_obs.registros.rencabezado[anio_select][0]); e++){ 293 class_obs.registros.row_encabezados.push(e); 294 if(class_obs.registros.encabezado[anio_select][e] == undefined){ 295 class_obs.registros.encabezado[anio_select][e] = []; 296 } 297 } 298 299 gapi.client.sheets.spreadsheets.get({ 300 spreadsheetId: b(env.sIdObs), 301 ranges: [anio_select], 302 includeGridData: true 303 }).then(function(response2) { 304 var values2 = response2.result.sheets[0].data[0].rowData; 305 var anio = anio_select; 306 307 class_obs.num_encabezados = 0; 308 if(values == undefined){ 309 datos_anio = false; 310 } 311 312 //Encabezados 313 th_inter = ''; 314 var tfoot_tr = ''; 315 var tfoot_inter = ''; 316 var bfoot = false; 317 $.each(values2, function(i, val){ 318 if(i in class_obs.registros.row_encabezados){ 319 th_inter += '<tr>'; 320 var saltar = 0; 321 class_obs.num_encabezados = 0; 322 //Recorrido de los encabezados 323 var conteo_th = 0; 324 $.each(val.values, function(i2, val2){ 325 if(i2 > parseInt(class_obs.registros.totales[anio])-1){ 326 return false; 327 } 328 var val2txt = ""; 329 var bcolor = ""; 330 331 if('formattedValue' in val2){ 332 val2txt = val2.formattedValue; 333 bcolor = val2.effectiveFormat.backgroundColor; 334 var r = ('red' in bcolor)?bcolor.red:0; 335 var g = ('green' in bcolor)?bcolor.green:0; 336 var b = ('blue' in bcolor)?bcolor.blue:0; 337 bcolor = 'rgb(' + r*255 + ',' + g*255 + ',' + b*255 + ')'; 338 } 339 340 if(saltar > 0){ 341 saltar = saltar - 1; 342 conteo_th++; 343 return; 344 } 345 //No incluye las columnas quue se indicó ocultar en "config" 346 if(class_obs.registros.ocultar[anio].indexOf(String(i2+1)) == -1){ 347 //Columnas para buscar 348 if(class_obs.registros.buscar[anio].indexOf(String(i2+1)) != -1){ 349 class_obs.html_opciones += class_obs.opcion_busca.replace('<opcion>', val2txt.replaceAll('\n','<br>')).replace('<id>', i2); 350 class_obs.html_opciones_select[i2] = []; 351 class_obs.html_opciones_select[i2].push('<option value=""></option>'); 352 } 353 //Columnas que se incluyen en una llamada "IncluÃdo en" 354 if(class_obs.registros.incluir.valores[anio].indexOf(String(i2+1)) != -1){ 355 //Sólo ingrsa una vez, para crear una vez el encabezado y contabilizarlo 356 if(class_obs.registros.incluir.texto.length == 0){ 357 class_obs.num_encabezados ++; 358 conteo_th++; 359 th_inter += class_obs.th_inter.replace('<tx_text>', "IncluÃdo en"); 360 } 361 class_obs.registros.incluir.texto[class_obs.registros.incluir.valores[anio].indexOf(String(i2+1))] = val2txt; 362 }else{ 363 class_obs.num_encabezados ++; 364 conteo_th++; 365 th_inter += class_obs.th_inter.replace('<tx_text>', val2txt.replaceAll('\n', '<br>') ); 366 } 367 368 var num_col = 1; 369 var num_row = 1; 370 371 //Si la columna está en alguna agrupación 372 if(class_obs.registros.encabezado[anio][i][i2+1] !== undefined){ 373 num_col = class_obs.registros.encabezado[anio][i][i2+1]; 374 saltar = num_col - 1; 375 } 376 377 th_inter = th_inter.replace('<numcol>', num_col); 378 th_inter = th_inter.replace('<numrow>', num_row); 379 th_inter = th_inter.replace('<color-fondo>', bcolor); 380 381 //Se llega a la última columna encontrada 382 if(i2 == val.values.length-1){ 383 console.log('tam:' + conteo_th); 384 //Si hay menos columnas de las especificadas como total, el resto se llena de blancos 385 var revisa_columnas = parseInt(class_obs.registros.totales[anio_select]) - class_obs.registros.ocultar[anio_select].length - conteo_th; 386 387 console.log(revisa_columnas); 388 if(revisa_columnas >0){ 389 $.each(new Array(revisa_columnas).fill(''), function(r, rval){ 390 th_inter += class_obs.th_inter.replace('<tx_text>', "" ).replace('<numcol>',1).replace('<numrow>',1).replace('<color-fondo>', ''); 391 }); 392 } 393 } 394 } 395 }); 396 th_inter += '</tr>'; 397 $('#opciones').html(class_obs.html_opciones); 398 }else{ 399 var registro = {}; 400 var tabla_tr = ''; 401 var td_inter = ''; 402 var num_valores = 0; 403 var incluido_en = 0; 404 var txt_incluido_en = ''; 405 var primera = -1; 406 407 //if(val.values.every(cell => !cell.formattedValue)){ 408 if(val.values.some(cell => cell.formattedValue)){ 409 410 //Recorrido de los valores en cada registro 411 $.each(val.values, function(i2, val2){ 412 if(i2 > parseInt(class_obs.registros.totales[anio])-1){ 413 return false;
414 } 415 var val2txt = ""; 416 var bcolor = ""; 417 418 if('formattedValue' in val2){ 419 val2txt = val2.formattedValue; 420 bcolor = val2.effectiveFormat.backgroundColor; 421 var r = ('red' in bcolor)?bcolor.red:0; 422 var g = ('green' in bcolor)?bcolor.green:0; 423 var b = ('blue' in bcolor)?bcolor.blue:0; 424 bcolor = 'rgb(' + r*255 + ',' + g*255 + ',' + b*255 + ')'; 425 } 426 /*if(i2 == 0 && val2txt==""){ 427 return false; 428 }*/ 429 //No incluye las columnas quue se indicó ocultar en "config" 430 if(class_obs.registros.ocultar[anio].indexOf(String(i2+1)) == -1){ 431 primera ++; 432 //if(primera == 0 && (val2txt.indexOf('TOTAL ') !== -1 || val2txt.trim()=='TOTAL' ) ){ 433 // bfoot = true; 434 //} 435 if(primera == 0 && (values2[i+1].values.every(cell => !cell.formattedValue)) ){ 436 bfoot = true; 437 } 438 //Columnas para buscar 439 if(class_obs.registros.buscar[anio].indexOf(String(i2+1)) != -1 ){ 440 if(['-',''].indexOf(val2txt) == -1){ 441 var opcion = '<option value="'+val2txt+'">'+val2txt+'</option>'; 442 if( class_obs.html_opciones_select[i2].indexOf(opcion) == -1){ 443 class_obs.html_opciones_select[i2].push(opcion); 444 } 445 446 } 447 if(i == values.length-1){ 448 class_obs.html_opciones_select[i2].sort(); 449 } 450 } 451 452 //Columnas que se incluyen en una sóla llamada "IncluÃdo en" 453 if(class_obs.registros.incluir.valores[anio].indexOf(String(i2+1)) != -1){ 454 incluido_en ++; 455 var txt = class_obs.registros.incluir.texto[class_obs.registros.incluir.valores[anio].indexOf(String(i2+1))]; 456 txt_incluido_en += (txt_incluido_en.length > 0)?(val2txt.trim() == '1')?(', ' + txt ):'':(val2txt.trim() == '1')?txt:''; 457 if(incluido_en == class_obs.registros.incluir.valores[anio].length){ 458 num_valores++; 459 if(bfoot){ 460 tfoot_inter += class_obs.td_inter_fijo.replace('<td_text>', txt_incluido_en); 461 }else{ 462 td_inter += class_obs.td_inter.replace('<td_text>', txt_incluido_en); 463 registro[i2] = txt_incluido_en; 464 } 465 } 466 }else{ 467 if(class_obs.registros.numerico[anio].indexOf(i2+1) != -1){ 468 num_valores++; 469 var pre = ''; 470 if( val2txt == "" || val2txt == "N/A"){ 471 pre = '<span hidden>0.0000000001</span>'; 472 } 473 if(primera == 0){ 474 if(bfoot){ 475 tfoot_tr = class_obs.tabla_tr_fijo.replace('<primero>', val2txt); 476 }else{ 477 tabla_tr = class_obs.tabla_tr.replace('<primero>', val2txt); 478 } 479 }else{ 480 if(bfoot){ 481 tfoot_inter += class_obs.td_inter_fijo.replace('<td_text>', val2txt); 482 }else{ 483 td_inter += class_obs.td_inter.replace('<td_text>', pre + val2txt); 484 } 485 } 486 registro[i2] = val2txt; 487 }else if(class_obs.registros.url[anio].indexOf(i2+1) != -1){ 488 num_valores++; 489 var pre = ''; 490 var enlaces ='' 491 $.each(val2txt.split('\n'), function(i3,val3){ 492 enlaces += '<a target="_blank" href="'+val3+'">
492'+val3+'</a><br>'; 493 }); 494 if(primera == 0){ 495 if(bfoot){ 496 tfoot_tr = class_obs.tabla_tr_fijo.replace('<primero>', val2txt); 497 }else{ 498 tabla_tr = class_obs.tabla_tr.replace('<primero>', enlaces); 499 } 500 }else{ 501 if(bfoot){ 502 tfoot_inter += class_obs.td_inter_fijo.replace('<td_text>', val2txt); 503 }else{ 504 td_inter += class_obs.td_inter.replace('<td_text>', enlaces); 505 } 506 } 507 registro[i2] = val2txt; 508 }else{ 509 num_valores++; 510 if(primera == 0){ 511 if(bfoot){ 512 tfoot_tr = class_obs.tabla_tr_fijo.replace('<primero>', val2txt); 513 }else{ 514 tabla_tr = class_obs.tabla_tr.replace('<primero>', val2txt); 515 } 516 }else{ 517 if(bfoot){ 518 tfoot_inter += class_obs.td_inter_fijo.replace('<td_text>', val2txt); 519 }else{ 520 td_inter += class_obs.td_inter.replace('<td_text>', val2txt); 521 } 522 } 523 registro[i2] = val2txt; 524 } 525 526 td_inter = td_inter.replace('<bcolor>', bcolor); 527 tfoot_inter = tfoot_inter.replace('<bcolor>', bcolor); 528 529 } 530 } 531 }); 532 533 534 if(parseInt(class_obs.registros.totales[anio])-1 - num_valores > 0){ 535 $.each(new Array(parseInt(class_obs.registros.totales[anio])-1 - num_valores).fill(''), function(i2, val2){ 536 td_inter += class_obs.td_inter.replace('<td_text>', val2); 537 tfoot_inter += class_obs.td_inter_fijo.replace('<td_text>', val2).replace('<bcolor>', ''); 538 //registro[num_valores + i2 + 1] = val2; 539 }); 540 } 541 542 class_obs.tabla_body += tabla_tr.replace('<tds_inter>', td_inter); 543 if(registro.hasOwnProperty(1)) 544 class_obs.registros.completos.push(registro); 545 } 546 } 547 }); 548 class_obs.tabla_th = class_obs.tabla_th_orig.replace('<encabezados>', th_inter); 549 class_obs.tabla_th = class_obs.tabla_th.replace('<totales>', tfoot_tr.replace('<tds_inter>', tfoot_inter)); 550 551 class_obs.html_anios = ''; 552 var opciones_anio = ''; 553 $.each(class_obs.anios, function(i, val){ 554 class_obs.html_anios += class_obs.opcion_anio.replace('<opcion>', val.replaceAll('\n','<br>')).replace('<id>', val); 555 if(i == 0){ 556 opciones_anio = val; 557 class_obs.html_anios_select = []; 558 } 559 var opcion = '<option value="'+val+'">'+val+'</option>'; 560 class_obs.html_anios_select.push(opcion); 561 }); 562 563 $('#opciones-anio').html(class_obs.html_anios); 564 $('#buscar-anio').text(anio); 565 566 if(datos_anio){ 567 class_obs.setTextos(anio_select); 568 class_obs.setTabla(); 569 $('#registros').html("<b>" + (class_obs.registros.completos.length-1) + "</b> Registros encontrados"); 570 $('#div_tabla').show(); 571 }else{ 572 $('#tbl_revistas_wrapper').html(''); 573 $('#registros').html("Sin registros encontrados"); 574 } 575 576 class_obs.control(); 577 }); 578 579 }).catch(function(error) { 580 console.error('Error al obtener los valores de las hojas:', error); 581 }); 582 }).catch(function(error) { 583 console.error('Error al obtener las hojas del libro:', error); 584 }); 585 }); 586 }); 587 }, 588 setTextos: function(anio_select){ 589 $.each(class_obs.registros.textos[anio_select], function(i,val){ 590 if(typeof(val) == 'object') 591 $('#'+val.id).html(val.texto.replaceAll('<ul>', '<ul style="padding-left:20px;list-style-type:disc;">').replaceAll('<ul2>', '<ul style="padding-left:20px;list-style-type:circle;">')); 592 }); 593 }, 594 setTabla: function(){ 595 //try{ 596 if( class_obs.tabla !== ''){ 597 //$('#tbl_revistas_wrapper').html(''); 598 class_obs.tabla.destroy(); 599 } 600 //if ($.fn.DataTable.isDataTable('#tbl_revistas')) { 601 // class_obs.tabla.destroy(); 602 //} 603 604 $('#div_tabla').html(class_obs.tabla_html); 605 $('#tbl_revistas').html(class_obs.tabla_th); 606 $('#tabla_body').html(class_obs.tabla_body); 607 608 var anio = $('#buscar-anio').text(); 609 610 var targets = []; 611 for(num = 0; num < parseInt(class_obs.registros.totales[anio][0]) - (class_obs.registros.ocultar[anio].length) ; num++){ 612 targets.push(num); 613 }; 614 615 var extra={ 616 //pageLength: 15, 617 deferRender: true, 618 columnDefs: [ 619 { 620 render: function (data, type, full, meta) { 621 return '<div style="width: 100%; text-align: left; white-space: normal;">' + data + '</div>'; 622 }, 623 targets: targets 624 } 625 ], 626 scrollY: 500, 627 scrollX: true, 628 scrollCollapse: true, 629 paging: true, 630 fixedColumns: { 631 leftColumns: parseInt(class_obs.registros.fijas[anio][0])//Le indico que deje fijas solo las 2 primeras columnas 632 } 633 }; 634 635 class_obs.tabla = class_utils.setTabla('tbl_revistas', extra); 636 637 if(class_obs.registros.paginado.valores[anio][0] == 0){ 638 class_obs.tabla.page.len(-1); // Muestra todos los registros en una única página 639 $('.dataTables_paginate').hide(); // Oculta los controles de paginación 640 }else{ 641 class_obs.tabla.page.len(class_obs.registros.paginado.valores[anio]); 642 } 643 644 $('.buttons-csv span').html('Descargar .csv'); 645 $("#tbl_revistas_filter").off('keyup mouseover').on('keyup mouseover', function(){ 646 $('#registros').html("<b>" + $('#tbl_revistas_info').html().split('total de ')[1].split(' registros')[0] + "</b> Registros encontrados"); 647 }); 648 649 $('#tbl_revistas_filter').children("label").first()[0].childNodes[0].nodeValue="Filtrar por:"; 650 651 class_obs.tabla.draw(); 652 653 //}catch(error){ 654 // console.log('Error al construir tabla:' + error); 655 //} 656 }, 657 control: function(){ 658 $('.menu-busca-por').off('click').on('click', function(e){ 659 e.preventDefault(); 660 class_obs.id_buscar = this.id; 661 $('#buscar').html(class_obs.html_opciones_select[parseInt(this.id
661)]); 662 $('#buscar-por').text(this.text); 663 $('#buscar').select2({ tags: true, placeholder: "Seleccione una opción", allowClear: true}); 664 $('.select2-selection').height('40px'); 665 $('.select2-selection').css('padding-top', '5px'); 666 $('.select2-selection__arrow').css('top', '5px'); 667 $('.select2-container').css('width', '100%'); 668 669 }); 670 671 $('#buscar').off('change').on('change', function(e){ 672 //$('#registros').html(''); 673 if($('#tbl_revistas_wrapper')[0] == undefined) 674 $('#tbl_revistas').html('<center><div id="inicio" class="preview" style="font-size: 20px"> <br><br><i class="ti-search"></i> Buscando ...<br><br></div></center>'); 675 else 676 $('#tbl_revistas_wrapper').html('<center><div id="inicio" class="preview" style="font-size: 20px"> <br><br><i class="ti-search"></i> Buscando ...<br><br></div></center>'); 677 $('#registros').html(''); 678 setTimeout(function(){ 679 class_obs.buscar(); 680 }, 1000); 681 }); 682 683 $('.menu-anio').off('click').on('click', function(e){ 684 e.preventDefault(); 685 $('#buscar-por').text("Buscar por:"); 686 $('#buscar').html(''); 687 if($('#tbl_revistas_wrapper')[0] == undefined) 688 $('#tbl_revistas').html('<center><div id="inicio" class="preview" style="font-size: 20px"> <br><br><i class="ti-search"></i> Buscando ...<br><br></div></center>'); 689 else 690 $('#tbl_revistas_wrapper').html('<center><div id="inicio" class="preview" style="font-size: 20px"> <br><br><i class="ti-search"></i> Buscando ...<br><br></div></center>'); 691 $('#registros').html(''); 692 693 $('#buscar-anio').text(this.text); 694 class_obs.datos(this.id); 695 }); 696 }, 697 buscar: function(){ 698 class_obs.registros.filtro = class_utils.filter_like_props(class_obs.registros.completos, [class_obs.id_buscar], $('#buscar').val()); 699 class_obs.tabla_body = ''; 700 $.each(class_obs.registros.filtro, function(i, val){ 701 var td_inter = ''; 702 var tabla_tr = ''; 703 var num_valores = 0; 704 $.each(val, function(i2, val2){ 705 num_valores ++; 706 if(i2 == 0){ 707 tabla_tr = class_obs.tabla_tr.replace('<primero>', val2); 708 }else{ 709 td_inter += class_obs.td_inter.replace('<td_text>', val2); 710 } 711 }); 712 $.each(new Array(class_obs.num_encabezados - num_valores).fill(''), function(i2, val2){ 713 td_inter += class_obs.td_inter.replace('<td_text>', val2); 714 }); 715 class_obs.tabla_body += tabla_tr.replace('<tds_inter>', td_inter); 716 }); 717 class_obs.setTabla(); 718 $('#registros').html("<b>" + (class_obs.registros.filtro.length-1) + "</b> Registros encontrados"); 719 } 720};
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.