Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-60509

Name column in Pull Request/Branch view should use number aware sorting

    • Icon: Improvement Improvement
    • Resolution: Unresolved
    • Icon: Minor Minor
    • branch-api-plugin
    • None
    • Jenkins 2.209-SNAPSHOT (Built from commit 9368197)
      Branch API plugin 2.5.5

      I've been using Jenkins for a while and one of the things that's always bothered me is when sorting the list of recent PR's and seeing that the list is sorted in a way that is purely alphabetical. This usually results in something like PR-1046 sitting at the top of the list, with PR-1138 which is actually the latest PR sitting in the middle of the list after some weird break in numbers. I find it easiest to explain this with the screenshots below. 

      The last couple of days, I've sort of made it my mission to attempt to fix this. I've implemented a number aware comparator so that when given a list: [foo100000, foo100010, foo800, goo, a, foo9000, foo], it is properly sorted as: [a, foo, foo800, foo9000, foo100000, foo100010, goo], but my issue is now, I have no idea what to actually do with it.

      I looked at the branch-api-plugin and found the main MultiBranchProjectViewHolder.java which appears to have a MultiBranchProject (I'd assumed this is the project name or title thing at the top of the page in the screenshot), it also the ViewsTabBar (I'm assuming this is like the Branches, PR, tab selector thing), and then a List<View>. I had assumed the List<View> was the list I have pointed out in the screenshots and I reached down into core where I noticed View had this block of code:

          public static final Comparator<View> SORTER = new Comparator<View>() {
              public int compare(View lhs, View rhs) {
                  return lhs.getViewName().compareTo(rhs.getViewName());
              }
          };
      

      I tried to replace this with my custom comparator thinking it would sort the list as I expected, but in the end nothing happened.

      I've done more digging this morning, found some .jelly files that look like maybe what I want to try modifying next, but at the end of the day I know nothing. Can anyone tell me what part of code creates the page I'm looking at or where I may want to look to start modifying the default sorting algorithm for these lists? 

      TL;DR: I want to improve the default sorting algorithm for the lists of PR's in the branch-api plugin. Where should I look in core, or branch-api to make this happen?

          [JENKINS-60509] Name column in Pull Request/Branch view should use number aware sorting

          Liam Newman added a comment -

          @Ryan Fenton-Garcia
          Thanks for looking into how to fix this. I'm not sure I can help, but I believe you are in the right area. Could you put up a PR of what you've done and we can discuss from there?

          Liam Newman added a comment - @Ryan Fenton-Garcia Thanks for looking into how to fix this. I'm not sure I can help, but I believe you are in the right area. Could you put up a PR of what you've done and we can discuss from there?

          I believe that the sorter you are looking at is sorting the view tabs (in your screenshots that'd be sorting the Branches/Pull Requests/Tags tabs).

          The sorting of the elements by name seems to happen in the Items class in the core and to be extremely generic.

          I think that to fix the ordering in just this view, you'll have to contact the core team and see how the mechanism can be extended so that downstream plugins can override the sorting mechanism.

          Cyprien Quilici added a comment - I believe that the sorter you are looking at is sorting the view tabs (in your screenshots that'd be sorting the Branches/Pull Requests/Tags tabs). The sorting of the elements by name seems to happen in the Items class in the core and to be extremely generic. I think that to fix the ordering in just this view, you'll have to contact the core team and see how the mechanism can be extended so that downstream plugins can override the sorting mechanism.

            Unassigned Unassigned
            bustylolichan Ryan Fenton-Garcia
            Votes:
            1 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated: