Compare commits

..

No commits in common. "1dfef38128be36524a4ea93b5aa334c665721e4c" and "57054bb1bd20d96b5e985a1924afd0526fedbc9f" have entirely different histories.

2 changed files with 90 additions and 105 deletions

View file

@ -68,15 +68,6 @@ tr.conf-hl > td {
} }
/* Conference table */ /* Conference table */
.conf-section-row td {
background: #343a40 !important;
color: #fff;
font-weight: 700;
font-size: 0.85em;
padding-top: 0.5rem;
padding-bottom: 0.4rem;
border-bottom: none;
}
.conf-month-row td { .conf-month-row td {
background: #e9ecef !important; background: #e9ecef !important;
font-weight: 600; font-weight: 600;
@ -130,74 +121,94 @@ tr.conf-hl > td {
{% endif %} {% endif %}
{% endmacro %} {% endmacro %}
{% macro conf_rows(heading, item_list, badge) %} {% macro conf_table(heading, item_list, badge) %}
{% if item_list %} {% if item_list %}
{% set count = item_list | length %} {% set count = item_list | length %}
<tr class="conf-section-row"> <h2>{{ heading }} <small class="text-muted fs-6 fw-normal">{{ count }} conference{{ "" if count == 1 else "s" }}</small></h2>
<td colspan="6">{{ heading }} <span class="fw-normal opacity-75">{{ count }} conference{{ "" if count == 1 else "s" }}</span></td> <table class="table table-sm table-hover align-middle mb-4">
</tr> <colgroup>
{% set ns = namespace(prev_month="") %} <col style="width: 9rem">
{% for item in item_list %} <col>
{% set month_label = item.start_date.strftime("%B %Y") %} <col style="width: 18rem">
{% if month_label != ns.prev_month %} <col style="width: 14rem">
{% set ns.prev_month = month_label %} <col style="width: 7rem">
<tr class="conf-month-row"> <col style="width: 10rem">
<td colspan="6">{{ month_label }}</td> </colgroup>
<thead class="table-light">
<tr>
<th>Dates</th>
<th>Conference</th>
<th>Topic</th>
<th>Location</th>
<th>CFP ends</th>
<th>Price</th>
</tr> </tr>
{% endif %} </thead>
<tr{% if item.going %} class="conf-going"{% endif %} data-conf-key="{{ item.start_date.isoformat() }}|{{ item.name }}"> <tbody>
<td class="text-nowrap text-muted small"> {% set ns = namespace(prev_month="") %}
{%- if item.start_date == item.end_date -%} {% for item in item_list %}
{{ item.start_date.strftime("%-d %b %Y") }} {% set month_label = item.start_date.strftime("%B %Y") %}
{%- elif item.start_date.year == item.end_date.year and item.start_date.month == item.end_date.month -%} {% if month_label != ns.prev_month %}
{{ item.start_date.strftime("%-d") }}{{ item.end_date.strftime("%-d %b %Y") }} {% set ns.prev_month = month_label %}
{%- else -%} <tr class="conf-month-row">
{{ item.start_date.strftime("%-d %b") }}{{ item.end_date.strftime("%-d %b %Y") }} <td colspan="6">{{ month_label }}</td>
{%- endif -%} </tr>
</td>
<td>
{% if item.url %}<a href="{{ item.url }}">{{ item.name }}</a>
{% else %}{{ item.name }}{% endif %}
{% if item.going and not (item.accommodation_booked or item.travel_booked) %}
<span class="badge text-bg-primary ms-1">{{ badge }}</span>
{% endif %} {% endif %}
{% if item.accommodation_booked %} <tr{% if item.going %} class="conf-going"{% endif %} data-conf-key="{{ item.start_date.isoformat() }}|{{ item.name }}">
<span class="badge text-bg-success ms-1">accommodation</span> <td class="text-nowrap text-muted small">
{% endif %} {%- if item.start_date == item.end_date -%}
{% if item.transport_booked %} {{ item.start_date.strftime("%-d %b %Y") }}
<span class="badge text-bg-success ms-1">transport</span> {%- elif item.start_date.year == item.end_date.year and item.start_date.month == item.end_date.month -%}
{% endif %} {{ item.start_date.strftime("%-d") }}{{ item.end_date.strftime("%-d %b %Y") }}
{% if item.linked_trip %} {%- else -%}
{% set trip = item.linked_trip %} {{ item.start_date.strftime("%-d %b") }}{{ item.end_date.strftime("%-d %b %Y") }}
<a href="{{ url_for('trip_page', start=trip.start.isoformat()) }}" {%- endif -%}
class="text-muted ms-1 text-decoration-none" </td>
title="Trip: {{ trip.title }}"> <td>
🧳{% if trip.title != item.name %} {{ trip.title }}{% endif %} {% if item.url %}<a href="{{ item.url }}">{{ item.name }}</a>
</a> {% else %}{{ item.name }}{% endif %}
{% endif %} {% if item.going and not (item.accommodation_booked or item.travel_booked) %}
</td> <span class="badge text-bg-primary ms-1">{{ badge }}</span>
<td class="text-muted small">{{ item.topic }}</td> {% endif %}
<td class="text-nowrap"> {% if item.accommodation_booked %}
{% set country = get_country(item.country) if item.country else None %} <span class="badge text-bg-success ms-1">accommodation</span>
{% if country %}{{ country.flag }} {{ item.location }} {% endif %}
{% elif item.online %}💻 Online {% if item.transport_booked %}
{% else %}{{ item.location }}{% endif %} <span class="badge text-bg-success ms-1">transport</span>
</td> {% endif %}
<td class="text-nowrap text-muted small"> {% if item.linked_trip %}
{% if item.cfp_end %}{{ item.cfp_end.strftime("%-d %b %Y") }}{% endif %} {% set trip = item.linked_trip %}
</td> <a href="{{ url_for('trip_page', start=trip.start.isoformat()) }}"
<td> class="text-muted ms-1 text-decoration-none"
{% if item.price and item.currency %} title="Trip: {{ trip.title }}">
<span class="badge bg-info text-nowrap">{{ "{:,d}".format(item.price | int) }} {{ item.currency }}</span> 🧳{% if trip.title != item.name %} {{ trip.title }}{% endif %}
{% if item.currency != "GBP" and item.currency in fx_rate %} </a>
<span class="badge bg-info text-nowrap">{{ "{:,.0f}".format(item.price / fx_rate[item.currency]) }} GBP</span> {% endif %}
{% endif %} </td>
{% elif item.free %} <td class="text-muted small">{{ item.topic }}</td>
<span class="badge bg-success text-nowrap">free</span> <td class="text-nowrap">
{% endif %} {% set country = get_country(item.country) if item.country else None %}
</td> {% if country %}{{ country.flag }} {{ item.location }}
</tr> {% elif item.online %}💻 Online
{% endfor %} {% else %}{{ item.location }}{% endif %}
</td>
<td class="text-nowrap text-muted small">
{% if item.cfp_end %}{{ item.cfp_end.strftime("%-d %b %Y") }}{% endif %}
</td>
<td>
{% if item.price and item.currency %}
<span class="badge bg-info text-nowrap">{{ "{:,d}".format(item.price | int) }} {{ item.currency }}</span>
{% if item.currency != "GBP" and item.currency in fx_rate %}
<span class="badge bg-info text-nowrap">{{ "{:,.0f}".format(item.price / fx_rate[item.currency]) }} GBP</span>
{% endif %}
{% elif item.free %}
<span class="badge bg-success text-nowrap">free</span>
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %} {% endif %}
{% endmacro %} {% endmacro %}
@ -208,31 +219,9 @@ tr.conf-hl > td {
{{ render_timeline(timeline) }} {{ render_timeline(timeline) }}
<table class="table table-sm table-hover align-middle"> {{ conf_table("Current", current, "attending") }}
<colgroup> {{ conf_table("Future", future, "going") }}
<col style="width: 9rem"> {{ conf_table("Past", past|reverse|list, "went") }}
<col>
<col style="width: 18rem">
<col style="width: 14rem">
<col style="width: 7rem">
<col style="width: 10rem">
</colgroup>
<thead class="table-light">
<tr>
<th>Dates</th>
<th>Conference</th>
<th>Topic</th>
<th>Location</th>
<th>CFP ends</th>
<th>Price</th>
</tr>
</thead>
<tbody>
{{ conf_rows("Current", current, "attending") }}
{{ conf_rows("Future", future, "going") }}
{{ conf_rows("Past", past|reverse|list, "went") }}
</tbody>
</table>
</div> </div>
<script> <script>

View file

@ -484,13 +484,9 @@ def build_conference_timeline(
"width_pct": width_pct, "width_pct": width_pct,
"key": f"{conf['start_date'].isoformat()}|{conf['name']}", "key": f"{conf['start_date'].isoformat()}|{conf['name']}",
"label": ( "label": (
f"{conf['name']} ({conf['start_date'].strftime('%-d %b')})" f"{conf['name']}"
if conf["start_date"] == conf["end_date"] f" ({conf['start_date'].strftime('%-d %b')}"
else ( f"{conf['end_date'].strftime('%-d %b')})"
f"{conf['name']}"
f" ({conf['start_date'].strftime('%-d %b')}"
f"{conf['end_date'].strftime('%-d %b')})"
)
), ),
} }
) )