Upcoming Events List on Index / Home page - A Share and Request for Improvement

On my current index/home page I have a list of upcoming dates. I find this more effective for dates I need to remember well in advance. Currently, It’s just text with iframes for the ‘days until’ calculation. It works, and I felt worth sharing, but I feel there is a better solution.

Each date is consists of the following:
<iframe src="http://free.timeanddate.com/countdown/i86lkjkx/n25/cf11/cm0/cu1/ct1/cs0/ca0/co0/cr0/ss0/caceee/cpcf99/pct/tcfff/fn3/fs100/szw256/szh108/iso2022-10-07T00:00:00/pl3/pr3/pt0/pb0" allowtransparency="true" frameborder="0" width="35" height="11"></iframe>Oct 07 - 🛬 Travel to Place

After a date passes I just delete the non repeating events or update the date (in the url) on the repeating events. Both are easy enough.

Also relevant: I keep my index page in Preview mode via Obsidian force note view mode for the cleaner view.

Other solutions I have considered:

Dataview
This works decent. I would have to create a note for each event, but that’s ok, I could make this work in tandem with the Full Calendar plugin. I don’t currently use that, but I really like the idea.

```dataview
LIST date - date(today)  from "events" where date >= date(today) 
sort date asc
```

Note: date(today) is used on my index page. I would use Templater to enter a daily notes file date here, presumably.

This would like like:

The main issue I have run into is that the DV lists only allow one computed value (docs). So I am unable to see the date and ‘days until’ like in my existing solution. So that leads me to consider tables, but my issue with tables are the size. They are enormous compared to existing/lists, which is not ideal.

Related, I don’t know how to change from ‘2 months, 3 weeks, 4 days’ to ‘85 days’. I much prefer the latter.

Also, the one thing I really like about my existing solution is the column like ordering. Very easy on the eyes. Is it possible to rearrange the order of the dv values? Should all line up if I can do that.


Templater
I have also considered templater, but backed up pretty quickly when I realized that it would only really work for my daily pages, since they are created every day. The index page is rarely edited. Plus I don’t think I could re-run templater once it has already run/replaced text. However, maybe I’m wrong about this.


How would you solve this?

(bonus points for those that recognize the name scrubbing)

1 Like

Ugly solution for the flat file method. I’m still learning

LIST map(rows.L, (L) => choice(L.task, "- [" + L.status + "] " + L.text,  L.text))

FROM "Events"
FLATTEN file.lists AS L
FLATTEN meta(L.header).subpath AS F_subpath
FLATTEN meta(L.header).type AS F_type
Where L.date >= date(today)
GROUP BY L.date

this produces something like:

  • November 24, 2022:
    • Thanksgiving date | November 24, 2022
  • November 25, 2022:
    • Thanksgiving Friday date | November 25, 2022
  • December 23, 2022:
    • Christmas date | December 23, 2022

My Input File Events.md:

## Events
- Thanksgiving [date:: 2022-11-24] 
- Thanksgiving Friday [date:: 2022-11-25] 
- Christmas [date:: 2022-12-23] 

1 Like