For a few of my public apps, I use the calendar style to list/show upcoming events but I also need to keep all past events. For sorting options (Order), there are two options, Oldest first and Newest first. Is it possible to have a third calendar (Order) option, “Today first”, that initializes the list view to the current date, then you can scroll up to view past events and scroll down to see new events?
Based on the use cases for those apps, it makes the most sense to initialize the calendar view to the current date. The main reason this would be very helpful, in my case, is that currently I have to use “Oldest first”; however, since there are a lot of past events in the calendar view, and it initializes the view at the oldest of those events (which can be 100+ events in the past), my users constantly have to scroll down for a few seconds to get to the current date and view any current/upcoming events. Those upcoming events, from the current date into the future are highest priority, but just as well, the past events are needed.
Edit - I suppose some people may want to use this extra option of initializing the view to the current date, “Today first”, while still sorting as either “Oldest first” or “Newest first”. So perhaps, it’s more of a checkbox that could be added in the calendar “Data” or “Design” sections to use in tandem with the current Order options.
What I did in a recent app I made was to create two inline lists… one with just today’s event and then the rest in a list below. This “highlights” today’s event and still shows a list of all others below it.
Just a wild idea here, only for the newest first part though.
Let’s add a math column to find the time difference in days between whatever your event time is, with a set time in the past, let’s say 1st January 1970. So we now have an ever-increasing numerical number for each date.
Then what I would do is to add an If Then Else column. If the event time falls within today, then the value is something very large, something that the column above won’t ever reach. Let’s say for example 1 million. Else, take the column above’s value.
So we can sort the If Then Else column. Today’s events would go first, then the “newest events” after that.
Would it work?
For the oldest part, possibly using the same idea as above, assign the “today” events a 0 value. We still take the difference compared to 1st January 1970 but multiplies it by minus 1. Then sort it descendingly, same as above.
I’ve tried a few workarounds over the last year:
Having two entirely separate calendar tabs. One for only today/upcoming events, sorted by “Oldest first”, so today’s events are first followed by any upcoming events. Then the other calendar tab is only for past events, sorted by “Newest first”, so the most recently completed/past event is first, followed by increasingly older events. This allows me to have the “structure” I want, full search capability do all events (past, today, and upcoming); however, I’m forced to have two separate tabs, which is inefficient.
I’ve done similar workarounds like you suggested, like singling out the today’s events as it’s own inline list, then having another inline list for past events, and another for upcoming events (all within the same tab). Again, this is just not ideal in multiple ways, visually, user experience (ease of use), etc…
Another workaround was to just live with the calendar as it is, with the sorting options it currently has, but as I mentioned before, users are forced to scroll down for a few seconds each time the app initializes, just to get to the center point (today’s events) of the calendar list.
I know exactly what you mean, the users would prefer to scroll up to see past events and scroll down to see future events but they should land on today’s events when they log in and the sorting order that you suggest makes the most sense but to work with what we currently have, I use a choice component to show upcoming and past events.