Diego, I believe this information comes from a file, possibly a file similar to this:
|A|Titulo 01|Descrição 01|
|B|Titulo 02|Descrição 02|
|C|Titulo 03|Descrição 03|
|D|Titulo 04|Descrição 04|
|E|Titulo 05|Descrição 05|
|F|Titulo 06|Descrição 06|
|G|Titulo 07|Descrição 07|
|H|Titulo 08|Descrição 08|
|I|Titulo 09|Descrição 09|
|J|Titulo 10|Descrição 10|
|K|Titulo 11|Descrição 11|
|L|Titulo 12|Descrição 12|
|M|Titulo 13|Descrição 13|
|N|Titulo 14|Descrição 14|
|O|Titulo 15|Descrição 15|
|P|Titulo 16|Descrição 16|
|Q|Titulo 17|Descrição 17|
|R|Titulo 18|Descrição 18|
|S|Titulo 19|Descrição 19|
|T|Titulo 20|Descrição 20|
|U|Titulo 21|Descrição 21|
|V|Titulo 22|Descrição 22|
|W|Titulo 23|Descrição 23|
|X|Titulo 24|Descrição 24|
|Y|Titulo 25|Descrição 25|
|Z|Titulo 26|Descrição 26|
Note that in this case, row represents a record, so the best thing to do is to first separate all records using a .split('\n');
Now that you have array
with all rows, you can map it to lista
registros
, again you can .split('|');
for each row and then access the information by index.
var arquivo = /* Conteudo do Arquivo */;
var registros = [];
arquivo.split('\n').forEach(function (linha, indice) {
if (linha) {
var itens = linha.split('|');
var registro = {};
registro.letra = itens[1];
registro.titulo = itens[2];
registro.descricao = itens[3];
registros.push(registro);
}
});
Now that you have processed all the records, you have to define the size of each page and the number of pages, as well as the navigation methods.
Then just clean the wrapper with the contents of the records and popular with the one related to the current page.
var atual = 1;
var pageSize = 7;
var pageCount = Math.ceil(registros.length / pageSize);
var action = {};
action.first = function () {
action.exibir(1);
}
action.prev = function () {
if (atual > 1) {
action.exibir(atual - 1);
}
}
action.next = function () {
if (atual < pageCount) {
action.exibir(atual + 1);
}
}
action.last = function () {
action.exibir(pageCount);
}
action.exibir = function (pagina) {
var inicio = pageSize * (pagina - 1);
var final = inicio + pageSize;
if (final > registros.length)
final = registros.length;
/* Limpe a sua lista */
for (indice = inicio; indice < final; indice++) {
/* Popule a sua lista; */
}
}
Now follow the complete example:
var srcs = document.querySelectorAll("[data-src]");
[].forEach.call(srcs, function (elem, indice) {
var httpRequest = new XMLHttpRequest();
httpRequest.open("GET", elem.dataset.src, true);
httpRequest.addEventListener("readystatechange", function () {
if (httpRequest.readyState == "4") {
var container = elem.parentElement;
var svg = httpRequest.responseXML.querySelector("svg");
container.insertBefore(svg, elem);
container.removeChild(elem);
svg.addEventListener("click", action[elem.dataset.action]);
}
});
httpRequest.send();
});
var arquivo = document.getElementById("arquivo").innerHTML;
var registros = [];
arquivo.split('\n').forEach(function (linha, indice) {
if (linha) {
var itens = linha.split('|');
var registro = {};
registro.letra = itens[1];
registro.titulo = itens[2];
registro.descricao = itens[3];
registros.push(registro);
}
});
var main = document.querySelector("main");
var pagina = document.getElementById("pagina");
var pageSize = 7;
var pageCount = Math.ceil(registros.length / pageSize);
var action = {};
action.first = function () {
action.exibir(1);
}
action.prev = function () {
if (pagina.valueAsNumber > 1) {
action.exibir(pagina.valueAsNumber - 1);
}
}
action.next = function () {
if (pagina.valueAsNumber < pageCount) {
action.exibir(pagina.valueAsNumber + 1);
}
}
action.last = function () {
action.exibir(pageCount);
}
action.exibir = function (pageNum) {
pagina.value = pageNum;
var inicio = pageSize * (pagina.valueAsNumber - 1);
var final = inicio + pageSize;
if (final > registros.length)
final = registros.length;
while (main.lastChild) {
main.removeChild(main.lastChild);
}
for (indice = inicio; indice < final; indice++) {
var registro = registros[indice];
var h1 = document.createElement("h1");
var h2 = document.createElement("h2");
var h3 = document.createElement("h3");
h1.textContent = registro.letra;
h2.textContent = registro.titulo;
h3.textContent = registro.descricao;
main.appendChild(h1);
main.appendChild(h2);
main.appendChild(h3);
}
}
action.first();
html, body {
position: relative;
width: 100%;
height: 100%;
padding: 0px;
margin: 0px;
}
header {
position: absolute;
top: 0px;
width: 100%;
height: 40px;
line-height: 40px;
background-color: teal;
box-shadow: 0px 0px 10px black;
z-index: 2;
}
main {
position: absolute;
width: 100%;
top: 40px;
bottom: 0px;
overflow: auto;
z-index: 1;
background-color: whitesmoke;
}
.esquerda {
float: left;
}
.centro {
float: left;
position: relative;
left: 50%;
transform: translate(-50%, 0);
}
#pagina {
position: relative;
width: 32px;
line-height: 32px;
padding: 0px 2px;
margin: 4px;
border: 0px none transparent;
bottom: 0px;
text-align: center;
font-size: 24px;
background-color: whitesmoke;
}
svg {
margin: 2px;
width: 36px;
height: 36px;
fill: whitesmoke;
}
h1, h2, h3 {
background-color: whitesmoke;
box-shadow: 0px 2px 5px -2px black;
}
<header>
<div class="centro">
<div class="esquerda">
<img data-action="first" data-src="https://image005.flaticon.com/1/svg/60/60769.svg"/><imgdata-action="prev" data-src="https://image005.flaticon.com/1/svg/60/60573.svg"/></div><divclass="esquerda">
<input id="pagina" type="number" readonly />
</div>
<div class="esquerda">
<img data-action="next" data-src="https://image005.flaticon.com/1/svg/60/60615.svg"/><imgdata-action="last" data-src="https://image005.flaticon.com/1/svg/60/60678.svg"/></div></div></header><main></main><templateid="arquivo">
|A|Titulo 01|Descrição 01|
|B|Titulo 02|Descrição 02|
|C|Titulo 03|Descrição 03|
|D|Titulo 04|Descrição 04|
|E|Titulo 05|Descrição 05|
|F|Titulo 06|Descrição 06|
|G|Titulo 07|Descrição 07|
|H|Titulo 08|Descrição 08|
|I|Titulo 09|Descrição 09|
|J|Titulo 10|Descrição 10|
|K|Titulo 11|Descrição 11|
|L|Titulo 12|Descrição 12|
|M|Titulo 13|Descrição 13|
|N|Titulo 14|Descrição 14|
|O|Titulo 15|Descrição 15|
|P|Titulo 16|Descrição 16|
|Q|Titulo 17|Descrição 17|
|R|Titulo 18|Descrição 18|
|S|Titulo 19|Descrição 19|
|T|Titulo 20|Descrição 20|
|U|Titulo 21|Descrição 21|
|V|Titulo 22|Descrição 22|
|W|Titulo 23|Descrição 23|
|X|Titulo 24|Descrição 24|
|Y|Titulo 25|Descrição 25|
|Z|Titulo 26|Descrição 26|
</template>