Template:ItemBox: Difference between revisionsGive feedback
No edit summary |
Make the name area a query container so the measured name size can be emitted in cqw (with help from vergir-bot LLM) |
||
| (53 intermediate revisions by 11 users not shown) | |||
| Line 1: | Line 1: | ||
< | <templatestyles src="Template:ItemBox/styles.css" /><includeonly> | ||
{|- | {{#vardefine:itemName|{{{itemName|{{{1}}}}}}}}<!-- | ||
# | |||
Display name: Lang string for the codename, else the raw name, then override. | |||
-->{{#vardefine:displayName|{{#invoke:Lang|get_string|{{#invoke:ItemData|get_codename|{{#var:itemName}}}}}}}}<!-- | |||
-->{{#vardefine:displayName|{{#if:{{#var:displayName}}|{{#var:displayName}}|{{#var:itemName}}}}}}<!-- | |||
-->{{#vardefine:displayName|{{{overrideDisplayName|{{#var:displayName}}}}}}}<!-- | |||
Measured name size (cqw) and stable per-item texture variety. | |||
# | -->{{#vardefine:fontSize|{{#invoke:ItemBox|getFontSize|{{#var:displayName}}}}}}<!-- | ||
-->{{#vardefine:variants|{{#invoke:ItemBox|variants|{{#var:itemName}}}}}}<!-- | |||
Modifier classes: slot (Weapon/Armor/Tech from data, or Weapon/Vitality/Spirit override -> weapon/vitality/spirit), tier, tags. | |||
-->{{#vardefine:slot|{{#switch:{{{overrideSlot|{{#invoke:ItemData|get_prop|{{#var:itemName}}|Slot}}}}}|Weapon=itembox-weapon|Armor|Vitality=itembox-vitality|Tech|Spirit=itembox-spirit}}}}<!-- | |||
-->{{#vardefine:tier|itembox-tier-{{{overrideTier|{{#invoke:ItemData|get_prop|{{#var:itemName}}|Tier}}}}}}}<!-- | |||
{{ | -->{{#vardefine:showTierTag|{{#ifeq:{{{showTierTag|}}}|true|itembox-show-tier}}}}<!-- | ||
# | -->{{#vardefine:isActive|{{{overrideIsActive|{{#invoke:ItemData|is_active|{{#var:itemName}}}}}}}}}<!-- | ||
-->{{#vardefine:isActive|{{#ifeq:{{#var:isActive}}|true|itembox-active}}}}<!-- | |||
-->{{#vardefine:isImbue|{{{overrideIsImbue|{{#invoke:ItemData|get_prop|{{#var:itemName}}|IsImbue}}}}}}}<!-- | |||
-->{{#vardefine:isImbue|{{#ifeq:{{#var:isImbue}}|true|itembox-imbue}}}}<!-- | |||
{{# | lowGraphics=true is for callers that place dozens of cards on one page (the | ||
# | card navboxes). It swaps the paper texture from the normal-mode multiply, | ||
which blends two images and so is re-rasterised every scrolled frame, to a | |||
transparent-paper overlay that is a single cacheable image. On the profiled | |||
navbox this took the render thread's OpenGL work from ~230 ms/s to ~10 and | |||
roughly doubled the frame rate. The wear and icon masks are clips of a | |||
single image, not blends, so they cache once rasterised and stay at full | |||
detail. The overlay itself is defined in [[Template:ItemBox/styles.css]] and | |||
# | keyed off the same per-item texture-vN class, so a card keeps its paper | ||
across both modes. | |||
-->{{#vardefine:lowGraphics|{{#ifeq:{{{lowGraphics|}}}|true|itembox-lowgfx}}}}<!-- | |||
Links. | |||
-->{{#vardefine:linkTooltip|{{{overrideLinkTooltip|{{#var:itemName}}}}}}}<!-- | |||
-->{{#vardefine:linkImage|{{{overrideLinkImage|{{#var:itemName}}}}}}}<!-- | |||
-->{{#vardefine:linkClick|{{{overrideLinkClick|{{#var:itemName}}{{If lang}}}}}}}<!-- | |||
--><div class="itembox {{#var:showTierTag}} {{#var:tier}} {{#var:slot}} {{#var:isActive}} {{#var:isImbue}} {{#var:variants}} {{#var:lowGraphics}}" style="font-size:{{#expr: 10 * {{#if:{{{size|}}}|{{{size}}}|1}} }}px;"> | |||
<div class="itembox-background"> | |||
<div class="itembox-card"> | |||
<div class="itembox-icon-area"> | |||
<div class="itembox-icon">[[File:{{#var:linkImage}}.png|160px|link=]]</div> | |||
<div class="itembox-tier-badge"> | |||
<div class="itembox-tier-badge-shadow"></div> | |||
<div class="itembox-tier-badge-fill"></div> | |||
<div class="itembox-tier-badge-number"></div> | |||
</div> | |||
<div class="itembox-imbue-tag">{{#invoke:Lang|get_string|item_info_imbue}}</div> | |||
</div> | |||
<!-- container-type is inline because TemplateStyles strips it; the name's cqw size measures against this box. --> | |||
<div class="itembox-name-area" style="container-type: inline-size;"> | |||
<p class="itembox-name" style="font-size:{{#var:fontSize}};text-wrap:balance;">{{#var:displayName}}</p> | |||
</div> | |||
<div class="itembox-wear"></div> | |||
<div class="itembox-texture"></div> | |||
<div class="itembox-bevel"></div> | |||
<div class="itembox-active-tag">{{#invoke:Lang|get_string|item_info_active}}</div> | |||
<div class="itembox-outline"></div> | |||
</div> | |||
</div> | |||
<div class="item-link-wrapper" data-item-name="{{#var:linkTooltip}}">[[{{#var:linkClick}}|<span></span>]]</div> | |||
</div></includeonly><noinclude>{{Documentation}}</noinclude> | |||