{% from "_macros.html" import bar, pct, venue_chips, new_badge, source_note %} {# One sport's body on the Markets board, loaded when its section is opened (views.board_sport). #} {% macro sync_flags(u) %}{% set stale = (u.sync or [])|selectattr("stale")|list %}{% if stale %}
Later: {% for l in s.later[:6] %}{{ l.title }}{% if l.new %} {{ new_badge(l.new) }}{% endif %} {{ l.date|fmt }}{{ " · " if not loop.last }}{% endfor %}{% if s.later|length > 6 %} · +{{ s.later|length - 6 }} more{% endif %}
{% endif %} {% if s.tape and s.later %}Later: {% for l in s.later[:6] %}{% if l.url %}{{ l.title }}{% else %}{{ l.title }}{% endif %}{% if l.date %} {{ l.date|fmt }}{% endif %}{{ " · " if not loop.last }}{% endfor %}{% if s.later|length > 6 %} · +{{ s.later|length - 6 }} more on Recorded tapes →{% endif %}
{% endif %} {% if (s.run or s.asof) and s.recent %}Loading…
| Exchange | Markets | Open | Volume | Trades | Price points | Books | Synced |
|---|---|---|---|---|---|---|---|
| {% if b.url %}{{ b.exchange_name }}{% else %}{{ b.exchange_name }}{% endif %} | {{ b.markets }} | {{ b.open }} | {{ "{:,.0f}".format(b.volume) }} | {% for n in (b.trades, b.prices, b.books) %}{{ "{:,}".format(n) if n else "n/a" }} | {% endfor %}{{ b.synced|fmt }} |
Counts are every row each exchange's feed has given us (archive and live buffer), never paper or demo trades. n/a: nothing stored. {% for b in s.exchanges if b.coverage %}{{ b.coverage }}{{ " " if not loop.last }}{% endfor %}
{% endif %} {{ source_note(s.code, s.exchanges, s.run, (s.asof.at if s.asof else none), model=(s.asof is not none)) }}