Long ago, when the bar was all Javascript, we had the ability to have
sub-targets in a single bar. I was not able to invest the time
necessary to figure out how to do that again using the newer setup
for the fundraising bar, so instead I've added the ability to have a
stretch match bar that appears above the other one once the first
match period ends.
While it handles most of the weird cases with some grace, it will
probably look weird unless you set up a `SITE_FUNDGOAL_0` as a match
that finishes at least a week or two before `SITE_FUNDGOAL_1`.
The two aren't really aware of each other, either, so you have to
make sure the objects are updated properly (i.e., it *will* display
the stretch when `SITE_FUNDGOAL_0` ends even if there are match funds
remaining in `SITE_FUNDGOAL_0`).
A better solution should be found and implemented before 2026-11-22.
If you're actually reading this commit message for a reason other
than historical interest and that date has past, you're probably in
big trouble right now. 😬
The fundgoal section is now always included, but an if statement now
wraps the entire (partial) file, which will only generate any content
if it's not more than one week after the fundraiser has ended.
Add an else that indicates these are results if it is past the end of
the fundraiser.
This {% widthratio %} trick is something I found online that didn't
require a django-math module to work, but I would have rather written
something that:
(b) Could have a different message when there is only one hour
left: “less than one hour left” (i.e., tested if hours == 1)
(c) Will say “hour” instead of “hours” when there is exactly 1 hour
left.