Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in
Celebration

Earn badges and make progress

You're on your way to the next level! Join the Kudos program to earn points and save your progress.

Deleted user Avatar
Deleted user

Level 1: Seed

25 / 150 points

Next: Root

Avatar

1 badge earned

Collect

Participate in fun challenges

Challenges come and go, but your rewards stay with you. Do more to earn more!

Challenges
Coins

Gift kudos to your peers

What goes around comes around! Share the love by gifting kudos to your peers.

Recognition
Ribbon

Rise up in the ranks

Keep earning points to reach the top of the leaderboard. It resets every quarter so you always have a chance!

Leaderboard

Come for the products,
stay for the community

The Atlassian Community can help you and your team get more value out of Atlassian products and practices.

Atlassian Community about banner
4,463,082
Community Members
 
Community Events
176
Community Groups

Trello API Sorting Cards in List

Using the REST API, is there a best method for sorting cards in a list by due date?

I imagine I'd need to pull the cards that are all of the lists that I want to sort, figure out their positions vs their new positions, and generate a set of card pos update actions for cards that need an update, and then send those to the server by card PUT call(s).

Wondering if there's a better way. Can't seem to find anything in the API documentation (such as a lists->sort command) or by duckduckgo or the community search.

Thanks.

2 answers

Hi, i was searching for the same method, but finally i did it by my own.

Here is the code to sort by year and description, feel free to adapted and use it.

 

function compare( a, b ) { 

   const nameA = a.description.toUpperCase();

   const nameB = b.description.toUpperCase();


    if ( a.year < b.year ){ 

     return -1;    }

    if ( a.year > b.year  ){ 

     return 1;    }    

    if ( a.year === b.year){

        if(nameA.localeCompare(nameB) < 0) {

            return -1;        }  

        if(nameA.localeCompare(nameB) > 0){

            return 1;        }

}

    return 0;

 }

 

disc.album.sortcompare ); 

 

Then you can do the POST to the API with the sorted Array of objects.

@Iain DooleyThanks.

If I read it right, it looks like you're indiscriminately updating all of the cards pos values to the index (+1) of the array they end up in after sorting them. So your pos become 1, 2, ..., N?

Do you know what happens when a value you update a card pos to conflicts with another card that has the same pos value? Or, if the pos value of all of the cards in a list are not far enough away from each-other? I found some comments online speculating that Trello may change the value you give it or do a complete re-balancing of all of the card pos values if it doesn't like it or doesn't like the proximity spread.

I decided to go with sorting my cards and then if the new sorted set differs from the current pos set, sequentially, I do a full pass over the cards in the direction of new sort sequence and send them one by one to the "bottom" of their current list. After the pass is complete, the cards should be in the correct order. This leaves the responsibility for calculating the actual pos value in the API. That seems to be working.

Iain Dooley Community Leader Dec 12, 2019

@Billy Stidham If there were a conflict, it would be resolved as a result of the conflicting card having it's position set later on (because there can only be one card for each position in the array anyway).

Trello's internal representation of the position is different, they don't come back as integers, but you can set them as integers and it just seems to deal with it :)

Suggest an answer

Log in or Sign up to answer
TAGS

Atlassian Community Events