1class Paginador { 2 3 constructor (p, funcaoPesquisa) { 4 this.p = p; 5 this.funcaoPesquisa = funcaoPesquisa; 6 7 var paginador, controle, paginas; 8 paginador = document.createElement('div'); 9 paginador.className = 'paginador-controles'; 10 p.parentNode.appendChild(paginador); 11 12 paginador.insertAdjacentHTML('afterbegin', `<div class="containerpaginador"></div>`) 13 paginador = paginador.querySelector('.containerpaginador'); 14 15 controle = document.createElement('a'); 16 controle.className = 'controle primeiro'; 17 var self = this; 18 controle.addEventListener('click', function () { 19 self.primeira(); 20 }); 21 paginador.appendChild(controle); 22 controle = document.createElement('a'); 23 controle.className = 'controle anterior'; 24 controle.addEventListener('click', function () { 25 self.anterior(); 26 }); 27 paginador.appendChild(controle); 28 paginas = document.createElement('div'); 29 paginas.className = 'paginas'; 30 paginador.appendChild(paginas); 31 controle = document.createElement('a'); 32 controle.className = 'controle proximo'; 33 controle.addEventListener('click', function () { 34 self.proxima(); 35 }); 36 37 paginador.appendChild(controle); 38 controle = document.createElement('a'); 39 controle.className = 'controle ultimo'; 40 controle.addEventListener('click', function () { 41 self.ultima(); 42 }); 43 paginador.appendChild(controle); 44 var ajustaLargura = function () { 45 var t = p.querySelector('table'); 46 if (t) { 47 paginador.style.maxWidth = (t.offsetWidth) + 'px'; 48 } 49 setTimeout(function () { 50 ajustaLargura(); 51 }, 250); 52 }; 53 ajustaLargura(); 54 funcaoPesquisa(0); 55 this.atualiza(); 56 }; 57 58 atualiza() { 59 var pagina; 60 var paginador = this.p.parentNode.querySelector('.paginador-controles .containerpaginador'); 61 var paginas = paginador.querySelector('.paginas'); 62 paginas.innerHTML = ''; 63 64 var t = this.p.querySelector('table'); 65 66 if (!t) { 67 paginador.style.display = 'none'; 68 return; 69 } 70 71 var numeroPaginas = parseInt(t.dataset.paginas, 10); 72 73 if (numeroPaginas === 1) { 74 paginador.style.display = 'none'; 75 return; 76 } 77 78 paginador.style.display = 'flex'; 79 var self = this; 80 for (var i = 1; i <= numeroPaginas; i++) { 81 pagina = document.createElement('a'); 82 pagina.dataset.numero = i - 1; 83 pagina.innerText = i; 84 pagina.addEventListener('click', function () { 85 self.funcaoPesquisa(this.dataset.numero); 86 }); 87 paginas.appendChild(pagina); 88 } 89 var paginaAntiga = t.querySelector('.paginas a.sel'); 90 if (paginaAntiga) { 91 paginaAntiga.classList.remove('sel'); 92 } 93 var paginaAtual = paginas.querySelector('a[data-numero="' + t.dataset.paginaAtual + '"]'); 94 if (!paginaAtual) { 95 throw 'Página atual não existe.'; 96 } 97 paginaAtual.classList.add('sel'); 98 paginas.scrollLeft = paginaAtual.offsetLeft - paginas.offsetWidth / 2 + paginaAtual.offsetWidth / 2; 99 //document.querySelector('main').scrollIntoView(); 100 }; 101 102 primeira() { 103 this.funcaoPesquisa(0); 104 }; 105 106 anterior() { 107 var paginaAtual = parseInt(this.p.querySelector('table').dataset.paginaAtual); 108 if (paginaAtual > 0) { 109 this.funcaoPesquisa(--paginaAtual); 110 } 111 }; 112 113 proxima() { 114 var paginaAtual = parseInt(this.p.querySelector('table').dataset.paginaAtual); 115 if (paginaAtual < parseInt(this.p.querySelector('table').dataset.paginas) -1) { 116 this.funcaoPesquisa(++paginaAtual); 117 } 118 }; 119 120 ultima() { 121 this.funcaoPesquisa(this.p.querySelector('table').dataset.paginas -1); 122 }; 123} 124 125export {Paginador};
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.