var state = { 'querySet': [{"clientUUID":"436c4774-038f-4540-9c18-2691ca9b53d4","mockedResponseId":1908998,"mediaType":"application/xml","messageBody":"body","httpHeaders":null,"httpStatus":200}], 'page': 1, 'rows': 10, 'window': 5, } state.querySet = mockedMessageDtoList; buildTable(); function pagination(querySet, page, rows) { var trimStart = (page - 1) * rows var trimEnd = trimStart + rows var trimmedData = querySet.slice(trimStart, trimEnd) var pages = Math.ceil(querySet.length / rows); return { 'querySet': trimmedData, 'pages': pages, } } function pageButtons(pages) { var wrapper = document.getElementById('pagination-wrapper'); wrapper.innerHTML = ``; var maxLeft = (state.page - Math.floor(state.window / 2)) var maxRight = (state.page + Math.ceil(state.window / 2)) if (maxLeft < 1) { maxLeft = 1 maxRight = state.window } if (maxRight > pages) { maxLeft = pages - (state.window - 1) if (maxLeft < 1) { maxLeft = 1 } maxRight = pages } for (var page = maxLeft; page <= maxRight; page++) { if(page === state.page){ wrapper.innerHTML += `` } else{ wrapper.innerHTML += `` } } if (state.page != 1) { wrapper.innerHTML = `` + wrapper.innerHTML } if (state.page != pages) { wrapper.innerHTML += `` } $('.page').on('click', function() { $('#table-body').empty() state.page = Number($(this).val()) buildTable() }) } function buildTable() { var table = $('#table-body') var data = pagination(state.querySet, state.page, state.rows) var myList = data.querySet for(var i = 1; i<=myList.length; i++){ var j = i + (state.page-1) * 10; if(i%2 === 0){ var row = ` ` + j + ` ${myList[i-1].mockedResponseId} ${myList[i-1].mediaType} ${myList[i-1].httpStatus} ` }else{ var row = ` ` + j + ` ${myList[i-1].mockedResponseId} ${myList[i-1].mediaType} ${myList[i-1].httpStatus} ` } table.append(row) } pageButtons(data.pages) }