How is the JIRA Agile Lexorank field formatted?

Tom Jackson
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
November 18, 2014

We are building a JIRA Agile external integration where we need to use the rank of an issue on an Agile board to drive some business logic. The new Agile 6.6 rank custom field is fieldtype 'lexorank', and formatted strangely (e.g. 1|hyi4w0: )

I've read that that the '1|' prefix encodes the lexorank "bucket" and is used in "rebalancing" operations.

What about the rest of the encoding?

How can I convert the encoding to an integer that I can use in my business logic?

3 answers

1 accepted

2 votes
Answer accepted
Akshatha Sriram January 20, 2015

Hi, you would not need to decode the lexo rank field to determine the rank of the issue in the board. The value of the lexo rank is calculated by ordering the issues on the board lexicographically(dictionary order). As @Tom Jackson has pointed out. There are 3 buckets used in the process of lexicographically sorting the issues in the JIRA, hence the 1|, 2| and 3|. The rest of the characters and symbols are the product of the sort itself.

So if you need to order the issues they way it looks on the board in JIRA, you have to apply order by caluse to the lexo rank field/ sort this in your code. Ideally both in the database order by clause and the array.sort functions of any coding language orders your string alphabetically.

0 votes
Tom Jackson
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
January 20, 2015

Pretty sure the encoding is just a string that can be alpha-sorted (after removing bucket prefix). Have a colleague that figured this out. Hopefully she will chime in with additional details...

Florian Bauer
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
January 24, 2015

Yes you are right - it can be simply ordered as string value! it seems to work..

Joe Coulson July 1, 2021

It will work as a string but if you're desperate (for some reason) to get an integer out of it, it is just a base-36 value.

If you remove the bucket and pipe and closing colon and parse as base -36 you'd get your answer

in JS
```
var lexoRank = '1|hyi4w0:';
parseInt(lexoRank.replace(/^\d+\|([a-z0-9]):/, '$1'), 36) // => 1085878080
```

0 votes
Florian Bauer
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
January 20, 2015

did you get any answer to your question? I would like to know how to encode this rank value to order a list of issues manually.

Suggest an answer

Log in or Sign up to answer