Skip to content

Instantly share code, notes, and snippets.

@cheapsteak
Last active May 31, 2016 23:25
Show Gist options
  • Save cheapsteak/4d0321dfcab0c099e676 to your computer and use it in GitHub Desktop.
Save cheapsteak/4d0321dfcab0c099e676 to your computer and use it in GitHub Desktop.
Code from PR #4, before and after refactor

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%

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment