Before code review and pair-programming:
computed: {
getNumPages: function(){
return Math.ceil(this.pagination.numPosts/this.pagination.postsPerPage);
},
start: function(){
if((!this.showNextGroup && !this.showPreviousGroup) || (this.getNumPages === this.pagination.numIndexs)){
var start = 2;
}else{
var start = Math.floor(this.pagination.pageNum - (this.pagination.numIndexs/2)) + 1;
}
//at end of list
if(start > this.getNumPages - (this.pagination.numIndexs)){
start = this.getNumPages - this.pagination.numIndexs;
}
//avoids negative values
if(start < 2){ start = 2; }
return start;
},
next: function(){
return parseInt(this.pagination.pageNum) + 1;
},
previous: function(){
return parseInt(this.pagination.pageNum) - 1;
},
nextGroup: function(){
var goTo = parseInt(this.pagination.pageNum) + this.pagination.numIndexs;
if(goTo > this.getNumPages){ goTo = this.getNumPages;}
return goTo;
},
showNextGroup: function(){
//+2 for the front and back we are showing outside the list
if(this.getNumPages === this.pagination.numIndexs + 2){
return false;
}else if(this.getNumPages - this.pagination.pageNum > this.getNumPages - this.pagination.numIndexs + 1){
return true;
}
return false;
},
previousGroup: function(){
var goTo = parseInt(this.pagination.pageNum) - this.pagination.numIndexs;
if(goTo < 1){ goTo = 1;}
return goTo;
},
showPreviousGroup: function(){
//+2 for the front and back we are showing outside the list
if(this.getNumPages === this.pagination.numIndexs + 2 || this.getNumPages === this.pagination.numIndexs + 1){
return false;
}else if(this.pagination.pageNum > this.pagination.numIndexs - 3){
return true;
}
return false;
}
}
Cyclomatic complexity: 12
Cyclomatic complexity density: 29%
after:
computed: {
pageCount: function(){
return Math.ceil(this.pagination.numPosts/this.pagination.postsPerPage);
},
start: function(){
return Math.max(2, Math.min(this.pageCount, Math.floor(this.pagination.pageNum - (this.pagination.numIndexs / 2)) + 1));
},
end: function(){
return this.start + this.pagination.numIndexs - 1;
},
next: function(){
return parseInt(this.pagination.pageNum) + 1;
},
previous: function(){
return parseInt(this.pagination.pageNum) - 1;
},
nextGroup: function(){
return Math.min(this.pageCount, parseInt(this.pagination.pageNum) + this.pagination.numIndexs);
},
showNextGroup: function(){
return this.end !== this.pageCount - 1;
},
previousGroup: function(){
return Math.max(1, parseInt(this.pagination.pageNum) - this.pagination.numIndexs);
},
showPreviousGroup: function(){
return this.start !== 2;
}
},
Cyclomatic complexity: 1
Cyclomatic complexity density: 5%