Template:Event progress
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 · {{#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 · earnable to date <b style="color:inherit">{{formatnum:{{#var:ep_dlow}}}}</b> / <b style="color:inherit">{{formatnum:{{#var:ep_dhigh}}}}</b> · 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) — NA {{#time:j M H:i|{{{na-start}}}}} → {{#time:j M Y H:i|@{{#expr:{{#time:U|{{{na-start}}}}}+{{{earn-days|173}}}*86400}}}} · ASIA {{#time:j M H:i|{{{asia-start}}}}} → {{#time:j M Y H:i|@{{#expr:{{#time:U|{{{asia-start}}}}}+{{{earn-days|173}}}*86400}}}} · EU {{#time:j M H:i|{{{eu-start}}}}} → {{#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 · {{#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 · earnable to date <b style="color:inherit">{{formatnum:{{#var:ep_dlow}}}}</b> / <b style="color:inherit">{{formatnum:{{#var:ep_dhigh}}}}</b> · 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) — NA {{#time:j M H:i|{{{na-start}}}}} → {{#time:j M Y H:i|@{{#expr:{{#time:U|{{{na-start}}}}}+{{{earn-days|173}}}*86400}}}} · ASIA {{#time:j M H:i|{{{asia-start}}}}} → {{#time:j M Y H:i|@{{#expr:{{#time:U|{{{asia-start}}}}}+{{{earn-days|173}}}*86400}}}} · EU {{#time:j M H:i|{{{eu-start}}}}} → {{#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
#ifexprrather thanmin/max, which are not available in every ParserFunctions build. - Styles live in MediaWiki:Common.css under "Event progress bar".