Welcome to Wargaming.net Wiki!
Variants

Template:Event progress

Jump to: navigation, search
Create event progress bar template (matches test wiki; static server-side bar, upgraded by Common.js)
 
Add optional |link= parameter so the event title links to its article
 
Line 1: Line 1:
<includeonly>{{#vardefine:ep_s|{{#time:U|{{{ref-start|{{{na-start|}}}}}}}}}}{{#vardefine:ep_e|{{#time:U|{{{ref-end|{{{na-end|}}}}}}}}}}{{#vardefine:ep_now|{{#time:U|{{CURRENTTIMESTAMP}}}}}}{{#vardefine:ep_ed|{{{earn-days|0}}}}}{{#vardefine:ep_total|{{#expr:{{#var:ep_e}}-{{#var:ep_s}}}}}}{{#vardefine:ep_eeraw|{{#expr:{{#var:ep_s}}+{{#var:ep_ed}}*86400}}}}{{#vardefine:ep_ee|{{#ifexpr:{{#var:ep_ed}}>0|{{#ifexpr:{{#var:ep_eeraw}}<{{#var:ep_e}}|{{#var:ep_eeraw}}|{{#var:ep_e}}}}|{{#var:ep_e}}}}}}{{#vardefine:ep_edays|{{#ifexpr:{{#var:ep_ed}}>0|{{#var:ep_ed}}|{{#expr:({{#var:ep_total}}/86400) round 0}}}}}}{{#vardefine:ep_raw|{{#expr:(({{#var:ep_now}}-{{#var:ep_s}})/{{#var:ep_total}})*100}}}}{{#vardefine:ep_pct|{{#ifexpr:{{#var:ep_raw}}<0|0|{{#ifexpr:{{#var:ep_raw}}>100|100|{{#expr:{{#var:ep_raw}} round 2}}}}}}}}{{#vardefine:ep_earnpct|{{#expr:((({{#var:ep_ee}}-{{#var:ep_s}})/{{#var:ep_total}})*100) round 2}}}}{{#vardefine:ep_fill|{{#ifexpr:{{#var:ep_pct}}<{{#var:ep_earnpct}}|{{#var:ep_pct}}|{{#var:ep_earnpct}}}}}}{{#vardefine:ep_tail|{{#ifexpr:{{#var:ep_pct}}>{{#var:ep_earnpct}}|{{#expr:{{#var:ep_pct}}-{{#var:ep_earnpct}}}}|0}}}}{{#vardefine:ep_hastail|{{#ifexpr:{{#var:ep_ee}}<({{#var:ep_e}}-3600)|1|0}}}}{{#vardefine:ep_dayraw|{{#expr:floor(({{#var:ep_now}}-{{#var:ep_s}})/86400)+1}}}}{{#vardefine:ep_day|{{#ifexpr:{{#var:ep_now}}<{{#var:ep_s}}|0|{{#ifexpr:{{#var:ep_dayraw}}>{{#var:ep_edays}}|{{#var:ep_edays}}|{{#var:ep_dayraw}}}}}}}}{{#vardefine:ep_left|{{#ifexpr:{{#var:ep_edays}}>{{#var:ep_day}}|{{#expr:{{#var:ep_edays}}-{{#var:ep_day}}}}|0}}}}{{#vardefine:ep_low|{{{token-low|300}}}}}{{#vardefine:ep_high|{{{token-high|1200}}}}}{{#vardefine:ep_cap|{{{token-cap|207600}}}}}{{#vardefine:ep_dlowraw|{{#expr:{{#var:ep_day}}*{{#var:ep_low}}}}}}{{#vardefine:ep_dlow|{{#ifexpr:{{#var:ep_dlowraw}}>{{#var:ep_cap}}|{{#var:ep_cap}}|{{#var:ep_dlowraw}}}}}}{{#vardefine:ep_dhighraw|{{#expr:{{#var:ep_day}}*{{#var:ep_high}}}}}}{{#vardefine:ep_dhigh|{{#ifexpr:{{#var:ep_dhighraw}}>{{#var:ep_cap}}|{{#var:ep_cap}}|{{#var:ep_dhighraw}}}}}}{{#vardefine:ep_roomlow|{{#expr:{{#var:ep_cap}}-{{#var:ep_dlow}}}}}}{{#vardefine:ep_roomhigh|{{#expr:{{#var:ep_cap}}-{{#var:ep_dhigh}}}}}}{{#vardefine:ep_llowraw|{{#expr:{{#var:ep_left}}*{{#var:ep_low}}}}}}{{#vardefine:ep_llow|{{#ifexpr:{{#var:ep_llowraw}}>{{#var:ep_roomlow}}|{{#var:ep_roomlow}}|{{#var:ep_llowraw}}}}}}{{#vardefine:ep_lhighraw|{{#expr:{{#var:ep_left}}*{{#var:ep_high}}}}}}{{#vardefine:ep_lhigh|{{#ifexpr:{{#var:ep_lhighraw}}>{{#var:ep_roomhigh}}|{{#var:ep_roomhigh}}|{{#var:ep_lhighraw}}}}}}{{#vardefine:ep_dstart|{{#expr:ceil(({{#var:ep_s}}-{{#var:ep_now}})/86400)}}}}{{#vardefine:ep_dearn|{{#expr:floor(({{#var:ep_ee}}-{{#var:ep_now}})/86400)}}}}{{#vardefine:ep_dspend|{{#expr:floor(({{#var:ep_e}}-{{#var:ep_now}})/86400)}}}}{{#vardefine:ep_head|{{#ifexpr:{{#var:ep_now}}<{{#var:ep_s}}|Starts in {{#var:ep_dstart}} day{{#ifexpr:{{#var:ep_dstart}}=1||s}}|{{#ifexpr:{{#var:ep_now}}<{{#var:ep_ee}}|{{#ifexpr:{{#var:ep_dearn}}=0|Less than a day left to earn|{{#var:ep_dearn}} day{{#ifexpr:{{#var:ep_dearn}}=1||s}} left to earn}}|{{#ifexpr:{{#var:ep_now}}<{{#var:ep_e}}|Earning closed &middot; {{#ifexpr:{{#var:ep_dspend}}=0|last day to spend|{{#var:ep_dspend}} day{{#ifexpr:{{#var:ep_dspend}}=1||s}} left to spend}}|Event has ended}}}}}}}}{{#vardefine:ep_pctr|{{#expr:{{#var:ep_pct}} round 0}}}}{{#vardefine:ep_pctclamp|{{#ifexpr:{{#var:ep_pctr}}<1|1|{{#ifexpr:{{#var:ep_pctr}}>99|99|{{#var:ep_pctr}}}}}}}}{{#vardefine:ep_pcttext|{{#ifexpr:{{#var:ep_now}}<{{#var:ep_s}}|Not started|{{#ifexpr:{{#var:ep_now}}<{{#var:ep_e}}|{{#var:ep_pctclamp}}% complete|Complete}}}}}}<div class="wows-event-progress" data-name="{{{name|Event}}}"{{#if:{{{eu-start|}}}| data-eu-start="{{{eu-start}}}" data-eu-end="{{{eu-end}}}"}}{{#if:{{{na-start|}}}| data-na-start="{{{na-start}}}" data-na-end="{{{na-end}}}"}}{{#if:{{{asia-start|}}}| data-asia-start="{{{asia-start}}}" data-asia-end="{{{asia-end}}}"}}{{#if:{{{earn-days|}}}| data-earn-days="{{{earn-days}}}"}}{{#if:{{{token-low|}}}| data-token-low="{{{token-low}}}"}}{{#if:{{{token-high|}}}| data-token-high="{{{token-high}}}"}}{{#if:{{{token-cap|}}}| data-token-cap="{{{token-cap}}}"}}><div style="max-width:1100px;margin:16px auto 4px;padding:14px 18px 11px;box-sizing:border-box;border:1px solid rgba(168,132,44,0.55);border-radius:4px;background:rgba(127,127,127,0.10);font-size:16px;line-height:1.35;text-align:left"><div style="display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:9px"><span style="font-weight:bold;font-size:19px;color:#c8952a">{{{name|Event}}}</span><span style="font-weight:bold;white-space:nowrap;color:inherit">{{#var:ep_head}}</span></div><div style="position:relative;height:14px;border-radius:7px;overflow:hidden;background:rgba(127,127,127,0.30)"><div style="position:absolute;top:0;bottom:0;left:0;width:{{#var:ep_fill}}%;background:#e8622a"></div>{{#ifexpr:{{#var:ep_tail}}>0|<div style="position:absolute;top:0;bottom:0;left:{{#var:ep_earnpct}}%;width:{{#var:ep_tail}}%;background:rgba(127,127,127,0.85)"></div>}}{{#ifexpr:{{#var:ep_hastail}}=1|<div style="position:absolute;top:0;bottom:0;left:{{#var:ep_earnpct}}%;width:2px;margin-left:-1px;background:currentColor;opacity:0.75"></div>}}</div><div style="display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-top:8px;font-size:14px;opacity:0.88"><span>{{#ifexpr:{{#var:ep_now}}<{{#var:ep_s}}|Starts|Started}} {{#time:j M Y|@{{#var:ep_s}}}}</span><span style="font-weight:bold">{{#var:ep_pcttext}}</span><span>{{#ifexpr:{{#var:ep_hastail}}=1|Earning {{#ifexpr:{{#var:ep_now}}<{{#var:ep_ee}}|ends|ended}} {{#time:j M Y|@{{#var:ep_ee}}}}|{{#ifexpr:{{#var:ep_now}}<{{#var:ep_e}}|Ends|Ended}} {{#time:j M Y|@{{#var:ep_e}}}}}}</span></div><div style="display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-top:8px;padding-top:7px;border-top:1px solid rgba(127,127,127,0.35);font-size:12.5px;opacity:0.72"><span style="white-space:nowrap">Day {{#var:ep_day}} of {{#var:ep_edays}}{{#ifexpr:{{#var:ep_hastail}}=1|<br />Spend by {{#time:j M Y|@{{#var:ep_e}}}}}}</span><span style="text-align:center">Mission tokens &middot; earnable to date <b style="color:inherit">{{formatnum:{{#var:ep_dlow}}}}</b> / <b style="color:inherit">{{formatnum:{{#var:ep_dhigh}}}}</b> &middot; still remaining <b style="color:inherit">{{formatnum:{{#var:ep_llow}}}}</b> / <b style="color:inherit">{{formatnum:{{#var:ep_lhigh}}}}</b><br /><span style="opacity:0.75">at 1 battle/day / 5 battles/day, daily missions only</span></span><span style="white-space:nowrap;text-align:right">All times UTC</span></div>{{#if:{{{eu-start|}}}|<div style="margin-top:6px;font-size:11.5px;opacity:0.6">Earning windows (UTC) &mdash; NA {{#time:j M H:i|{{{na-start}}}}} &rarr; {{#time:j M Y H:i|@{{#expr:{{#time:U|{{{na-start}}}}}+{{{earn-days|173}}}*86400}}}} &middot; ASIA {{#time:j M H:i|{{{asia-start}}}}} &rarr; {{#time:j M Y H:i|@{{#expr:{{#time:U|{{{asia-start}}}}}+{{{earn-days|173}}}*86400}}}} &middot; EU {{#time:j M H:i|{{{eu-start}}}}} &rarr; {{#time:j M Y H:i|@{{#expr:{{#time:U|{{{eu-start}}}}}+{{{earn-days|173}}}*86400}}}}</div>}}</div></div></includeonly><noinclude>
<includeonly>{{#vardefine:ep_s|{{#time:U|{{{ref-start|{{{na-start|}}}}}}}}}}{{#vardefine:ep_e|{{#time:U|{{{ref-end|{{{na-end|}}}}}}}}}}{{#vardefine:ep_now|{{#time:U|{{CURRENTTIMESTAMP}}}}}}{{#vardefine:ep_ed|{{{earn-days|0}}}}}{{#vardefine:ep_total|{{#expr:{{#var:ep_e}}-{{#var:ep_s}}}}}}{{#vardefine:ep_eeraw|{{#expr:{{#var:ep_s}}+{{#var:ep_ed}}*86400}}}}{{#vardefine:ep_ee|{{#ifexpr:{{#var:ep_ed}}>0|{{#ifexpr:{{#var:ep_eeraw}}<{{#var:ep_e}}|{{#var:ep_eeraw}}|{{#var:ep_e}}}}|{{#var:ep_e}}}}}}{{#vardefine:ep_edays|{{#ifexpr:{{#var:ep_ed}}>0|{{#var:ep_ed}}|{{#expr:({{#var:ep_total}}/86400) round 0}}}}}}{{#vardefine:ep_raw|{{#expr:(({{#var:ep_now}}-{{#var:ep_s}})/{{#var:ep_total}})*100}}}}{{#vardefine:ep_pct|{{#ifexpr:{{#var:ep_raw}}<0|0|{{#ifexpr:{{#var:ep_raw}}>100|100|{{#expr:{{#var:ep_raw}} round 2}}}}}}}}{{#vardefine:ep_earnpct|{{#expr:((({{#var:ep_ee}}-{{#var:ep_s}})/{{#var:ep_total}})*100) round 2}}}}{{#vardefine:ep_fill|{{#ifexpr:{{#var:ep_pct}}<{{#var:ep_earnpct}}|{{#var:ep_pct}}|{{#var:ep_earnpct}}}}}}{{#vardefine:ep_tail|{{#ifexpr:{{#var:ep_pct}}>{{#var:ep_earnpct}}|{{#expr:{{#var:ep_pct}}-{{#var:ep_earnpct}}}}|0}}}}{{#vardefine:ep_hastail|{{#ifexpr:{{#var:ep_ee}}<({{#var:ep_e}}-3600)|1|0}}}}{{#vardefine:ep_dayraw|{{#expr:floor(({{#var:ep_now}}-{{#var:ep_s}})/86400)+1}}}}{{#vardefine:ep_day|{{#ifexpr:{{#var:ep_now}}<{{#var:ep_s}}|0|{{#ifexpr:{{#var:ep_dayraw}}>{{#var:ep_edays}}|{{#var:ep_edays}}|{{#var:ep_dayraw}}}}}}}}{{#vardefine:ep_left|{{#ifexpr:{{#var:ep_edays}}>{{#var:ep_day}}|{{#expr:{{#var:ep_edays}}-{{#var:ep_day}}}}|0}}}}{{#vardefine:ep_low|{{{token-low|300}}}}}{{#vardefine:ep_high|{{{token-high|1200}}}}}{{#vardefine:ep_cap|{{{token-cap|207600}}}}}{{#vardefine:ep_dlowraw|{{#expr:{{#var:ep_day}}*{{#var:ep_low}}}}}}{{#vardefine:ep_dlow|{{#ifexpr:{{#var:ep_dlowraw}}>{{#var:ep_cap}}|{{#var:ep_cap}}|{{#var:ep_dlowraw}}}}}}{{#vardefine:ep_dhighraw|{{#expr:{{#var:ep_day}}*{{#var:ep_high}}}}}}{{#vardefine:ep_dhigh|{{#ifexpr:{{#var:ep_dhighraw}}>{{#var:ep_cap}}|{{#var:ep_cap}}|{{#var:ep_dhighraw}}}}}}{{#vardefine:ep_roomlow|{{#expr:{{#var:ep_cap}}-{{#var:ep_dlow}}}}}}{{#vardefine:ep_roomhigh|{{#expr:{{#var:ep_cap}}-{{#var:ep_dhigh}}}}}}{{#vardefine:ep_llowraw|{{#expr:{{#var:ep_left}}*{{#var:ep_low}}}}}}{{#vardefine:ep_llow|{{#ifexpr:{{#var:ep_llowraw}}>{{#var:ep_roomlow}}|{{#var:ep_roomlow}}|{{#var:ep_llowraw}}}}}}{{#vardefine:ep_lhighraw|{{#expr:{{#var:ep_left}}*{{#var:ep_high}}}}}}{{#vardefine:ep_lhigh|{{#ifexpr:{{#var:ep_lhighraw}}>{{#var:ep_roomhigh}}|{{#var:ep_roomhigh}}|{{#var:ep_lhighraw}}}}}}{{#vardefine:ep_dstart|{{#expr:ceil(({{#var:ep_s}}-{{#var:ep_now}})/86400)}}}}{{#vardefine:ep_dearn|{{#expr:floor(({{#var:ep_ee}}-{{#var:ep_now}})/86400)}}}}{{#vardefine:ep_dspend|{{#expr:floor(({{#var:ep_e}}-{{#var:ep_now}})/86400)}}}}{{#vardefine:ep_head|{{#ifexpr:{{#var:ep_now}}<{{#var:ep_s}}|Starts in {{#var:ep_dstart}} day{{#ifexpr:{{#var:ep_dstart}}=1||s}}|{{#ifexpr:{{#var:ep_now}}<{{#var:ep_ee}}|{{#ifexpr:{{#var:ep_dearn}}=0|Less than a day left to earn|{{#var:ep_dearn}} day{{#ifexpr:{{#var:ep_dearn}}=1||s}} left to earn}}|{{#ifexpr:{{#var:ep_now}}<{{#var:ep_e}}|Earning closed &middot; {{#ifexpr:{{#var:ep_dspend}}=0|last day to spend|{{#var:ep_dspend}} day{{#ifexpr:{{#var:ep_dspend}}=1||s}} left to spend}}|Event has ended}}}}}}}}{{#vardefine:ep_pctr|{{#expr:{{#var:ep_pct}} round 0}}}}{{#vardefine:ep_pctclamp|{{#ifexpr:{{#var:ep_pctr}}<1|1|{{#ifexpr:{{#var:ep_pctr}}>99|99|{{#var:ep_pctr}}}}}}}}{{#vardefine:ep_pcttext|{{#ifexpr:{{#var:ep_now}}<{{#var:ep_s}}|Not started|{{#ifexpr:{{#var:ep_now}}<{{#var:ep_e}}|{{#var:ep_pctclamp}}% complete|Complete}}}}}}<div class="wows-event-progress" data-name="{{{name|Event}}}"{{#if:{{{link|}}}| data-link="{{fullurl:{{{link}}}}}"}}{{#if:{{{eu-start|}}}| data-eu-start="{{{eu-start}}}" data-eu-end="{{{eu-end}}}"}}{{#if:{{{na-start|}}}| data-na-start="{{{na-start}}}" data-na-end="{{{na-end}}}"}}{{#if:{{{asia-start|}}}| data-asia-start="{{{asia-start}}}" data-asia-end="{{{asia-end}}}"}}{{#if:{{{earn-days|}}}| data-earn-days="{{{earn-days}}}"}}{{#if:{{{token-low|}}}| data-token-low="{{{token-low}}}"}}{{#if:{{{token-high|}}}| data-token-high="{{{token-high}}}"}}{{#if:{{{token-cap|}}}| data-token-cap="{{{token-cap}}}"}}><div style="max-width:1100px;margin:16px auto 4px;padding:14px 18px 11px;box-sizing:border-box;border:1px solid rgba(168,132,44,0.55);border-radius:4px;background:rgba(127,127,127,0.10);font-size:16px;line-height:1.35;text-align:left"><div style="display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:9px"><span class="wows-ep-name" style="font-weight:bold;font-size:19px;color:#c8952a">{{#if:{{{link|}}}|[[{{{link}}}|{{{name|Event}}}]]|{{{name|Event}}}}}</span><span style="font-weight:bold;white-space:nowrap;color:inherit">{{#var:ep_head}}</span></div><div style="position:relative;height:14px;border-radius:7px;overflow:hidden;background:rgba(127,127,127,0.30)"><div style="position:absolute;top:0;bottom:0;left:0;width:{{#var:ep_fill}}%;background:#e8622a"></div>{{#ifexpr:{{#var:ep_tail}}>0|<div style="position:absolute;top:0;bottom:0;left:{{#var:ep_earnpct}}%;width:{{#var:ep_tail}}%;background:rgba(127,127,127,0.85)"></div>}}{{#ifexpr:{{#var:ep_hastail}}=1|<div style="position:absolute;top:0;bottom:0;left:{{#var:ep_earnpct}}%;width:2px;margin-left:-1px;background:currentColor;opacity:0.75"></div>}}</div><div style="display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-top:8px;font-size:14px;opacity:0.88"><span>{{#ifexpr:{{#var:ep_now}}<{{#var:ep_s}}|Starts|Started}} {{#time:j M Y|@{{#var:ep_s}}}}</span><span style="font-weight:bold">{{#var:ep_pcttext}}</span><span>{{#ifexpr:{{#var:ep_hastail}}=1|Earning {{#ifexpr:{{#var:ep_now}}<{{#var:ep_ee}}|ends|ended}} {{#time:j M Y|@{{#var:ep_ee}}}}|{{#ifexpr:{{#var:ep_now}}<{{#var:ep_e}}|Ends|Ended}} {{#time:j M Y|@{{#var:ep_e}}}}}}</span></div><div style="display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-top:8px;padding-top:7px;border-top:1px solid rgba(127,127,127,0.35);font-size:12.5px;opacity:0.72"><span style="white-space:nowrap">Day {{#var:ep_day}} of {{#var:ep_edays}}{{#ifexpr:{{#var:ep_hastail}}=1|<br />Spend by {{#time:j M Y|@{{#var:ep_e}}}}}}</span><span style="text-align:center">Mission tokens &middot; earnable to date <b style="color:inherit">{{formatnum:{{#var:ep_dlow}}}}</b> / <b style="color:inherit">{{formatnum:{{#var:ep_dhigh}}}}</b> &middot; still remaining <b style="color:inherit">{{formatnum:{{#var:ep_llow}}}}</b> / <b style="color:inherit">{{formatnum:{{#var:ep_lhigh}}}}</b><br /><span style="opacity:0.75">at 1 battle/day / 5 battles/day, daily missions only</span></span><span style="white-space:nowrap;text-align:right">All times UTC</span></div>{{#if:{{{eu-start|}}}|<div style="margin-top:6px;font-size:11.5px;opacity:0.6">Earning windows (UTC) &mdash; NA {{#time:j M H:i|{{{na-start}}}}} &rarr; {{#time:j M Y H:i|@{{#expr:{{#time:U|{{{na-start}}}}}+{{{earn-days|173}}}*86400}}}} &middot; ASIA {{#time:j M H:i|{{{asia-start}}}}} &rarr; {{#time:j M Y H:i|@{{#expr:{{#time:U|{{{asia-start}}}}}+{{{earn-days|173}}}*86400}}}} &middot; EU {{#time:j M H:i|{{{eu-start}}}}} &rarr; {{#time:j M Y H:i|@{{#expr:{{#time:U|{{{eu-start}}}}}+{{{earn-days|173}}}*86400}}}}</div>}}</div></div></includeonly><noinclude>
Live progress bar for a timed event. The percentage, day counter, remaining time and earnable
Live progress bar for a timed event. The percentage, day counter, remaining time and earnable
currency are computed when the page renders, so it stays current without daily edits. When
currency are computed when the page renders, so it stays current without daily edits. When
Line 21: Line 21:
'''Parameters'''
'''Parameters'''
* '''name''' — event title shown on the bar.
* '''name''' — event title shown on the bar.
* '''link''' — optional wiki page the title links to, e.g. <code>Holiday convoy</code>. Applies to both the static and the JavaScript version.
* '''ref-start / ref-end''' — the window the static bar is measured against, UTC ISO 8601 with a trailing <code>Z</code>. Defaults to the NA pair. This is the ''outer'' window, i.e. the last moment currency can be spent.
* '''ref-start / ref-end''' — the window the static bar is measured against, UTC ISO 8601 with a trailing <code>Z</code>. Defaults to the NA pair. This is the ''outer'' window, i.e. the last moment currency can be spent.
* '''earn-days''' — days currency can be ''earned'', counted from the start. The remainder of the window is drawn as a grey spend-only tail after a marker. Omit for one continuous window.
* '''earn-days''' — days currency can be ''earned'', counted from the start. The remainder of the window is drawn as a grey spend-only tail after a marker. Omit for one continuous window.

Latest revision as of 14:06, 12 August 2026

Live progress bar for a timed event. The percentage, day counter, remaining time and earnable currency are computed when the page renders, so it stays current without daily edits. When JavaScript runs, MediaWiki:Common.js replaces the static bar with a live version that shows each reader their own local time, adds an EU/NA/ASIA server switcher and refreshes every minute.

Usage — Holiday Convoy

{{Event progress
 |name       = Holiday Convoy
 |earn-days  = 173
 |ref-start  = 2026-08-12T10:00:00Z
 |ref-end    = 2027-02-10T09:00:00Z
 |na-start   = 2026-08-12T10:00:00Z
 |na-end     = 2027-02-10T09:00:00Z
 |asia-start = 2026-08-12T20:00:00Z
 |asia-end   = 2027-02-10T19:00:00Z
 |eu-start   = 2026-08-13T03:00:00Z
 |eu-end     = 2027-02-11T02:00:00Z
 }}

Parameters

  • name — event title shown on the bar.
  • link — optional wiki page the title links to, e.g. Holiday convoy. Applies to both the static and the JavaScript version.
  • ref-start / ref-end — the window the static bar is measured against, UTC ISO 8601 with a trailing Z. Defaults to the NA pair. This is the outer window, i.e. the last moment currency can be spent.
  • earn-days — days currency can be earned, counted from the start. The remainder of the window is drawn as a grey spend-only tail after a marker. Omit for one continuous window.
  • na-* / asia-* / eu-* — per-server windows. Shown in the UTC footnote line, and used by the JavaScript switcher.
  • token-low / token-high / token-cap — currency per day at a low and a high play rate, and the published total. Defaults 300 / 1200 / 207600.

Notes

  • The static fallback shows UTC because it is rendered server-side; the JavaScript version converts to the reader's local timezone.
  • Clamping uses #ifexpr rather than min/max, which are not available in every ParserFunctions build.
  • Styles live in MediaWiki:Common.css under "Event progress bar".