"Rank" column type


#1

I imagine lots of people use Airtables to keep track of ordered lists that they want to filter, reorder, and remanipulate, but ultimately return back to the original ordered list.

Further, I imagine that from time to time they want to change how that ordered list is ordered…

ENTER THE RANK TYPE! It:

  • only accepts integer values
  • when a number is changed, if increments everything at or above it!

A table could even have multiple rank columns for different dimensions! It’s like magic! Orderly magic!


#2

Are you talking about something similar to an Auto-number/ID functionality (which is implemented), or a way to automatically adjust the numbering of a list when you rearrange the list order?


#3

What I’m describing is closer to your second interpretation, although I believe that having it depend on a GUI-based re-ordering would be fraught with usability issues. If it were to be implemented that way you would only want it to adjust the numbering on a re-ordering event when the list is already sorted by that particular column.

Example of your implementation
In other words, if we have a list restaurants with three columns (breakfast_rank, lunch_rank, and dinner_rank) and we were dragging restaurants up and down, we would only re-number the rank column that was currently being sorted. To put it differently, if I’m sorted by breakfast_rank and am moving restaurants up and down, only update breakfast_rank, not any of the other rank values.

Example of my implementation
In Airtable (and generally in tabular datasets) entries will often be sorted in a variety of different ways. Hence, it makes sense to sort according to data, not update data according to sort. To that end, what I’d recommend is that the datatype respond to value changes of a row in the column, not to the location of the entry in the visual GUI.

In other words, if we have these ranked restaurants:

  • lunch_rank | restaurant_name
  • 1 - Auntie Anne’s
  • 2 - Bob’s Burgers
  • 3 - Cashmere
  • 4 - Dillon’s

Then updated the lunch_rank value of Cashmere to 2, the other elements in the list would re-rank accordingly:

  • lunch_rank | restaurant_name
  • 1 - Auntie Anne’s
  • 2 - Cashmere
  • 3 - Bob’s Burgers
  • 4 - Dillon’s

In the interface we could be sorted based on any column, or arbitrarily based on UX events, but rank would be based on the dataset explicitly. UX interfaces work well when there’s only a single rank dimension per table, but not if multiple ranks are supported.


#4

It would be a cool feature. Temporarily, you can use an workaround :grimacing: of creating a separate view for “Breakfast Rank” “Lunch Rank” and “Dinner Rank”, and rearrange them. The record number to the left of the primary field will provide the rank number for the specific view without altering the values for the other fields. I know this makes it super hard to do anything useful with that data, but I guess it’s a start.