master @ 65 LINES
[ HISTORY ] [ UP ]
┌─ TS ───────────────────────────────────────────────────────────────────────┐
│ type Formatters = { │
│ formatDuration: (s: number) => string; │
│ formatSimulationDate: (d: any) => string; │
│ formatRaidBuffs: (b: any) => string; │
│ }; │
│ │
│ export function renderRankingsMetadataHTML(metadata: any, fmt: Formatters) { │
│ const simulationDate = metadata.timestamp │
│ ? fmt.formatSimulationDate(metadata.timestamp) │
│ : ""; │
│ return ` │
│ <div class="card"> │
│ <h3 class="card-title">DPS Rankings Details</h3> │
│ <div class="info-grid"> │
│ <div class="info-item"><span class="info-label">Simulation Type</span><spa │
│ n class="info-value">DPS Rankings</span></div> │
│ <div class="info-item"><span class="info-label">Iterations</span><span cla │
│ ss="info-value">${metadata.iterations?.toLocaleString?.() || metadata.iterations}< │
│ /span></div> │
│ <div class="info-item"><span class="info-label">Specs Tested</span><span c │
│ lass="info-value">${metadata.specCount ?? ""}</span></div> │
│ <div class="info-item"><span class="info-label">Encounter Duration</span>< │
│ span class="info-value">${fmt.formatDuration(metadata.encounterDuration)}</span></ │
│ div> │
│ <div class="info-item"><span class="info-label">Duration Variation</span>< │
│ span class="info-value">?${metadata.encounterVariation}s</span></div> │
│ <div class="info-item"><span class="info-label">Target Count</span><span c │
│ lass="info-value">${metadata.targetCount}</span></div> │
│ <div class="info-item"><span class="info-label">Date Simulated</span><span │
│ class="info-value">${simulationDate}</span></div> │
│ <div class="info-item info-item-wide"> │
│ <span class="info-label">Active Raid Buffs</span> │
│ <div class="callout-note"> │
│ <svg class="callout-note-icon" viewBox="0 0 24 24" fill="none" xmlns=" │
│ http://www.w3.org/2000/svg"> │
│ <path d="M13 2L3 14H12L11 22L21 10H12L13 2Z" stroke="currentColor" s │
│ troke-width="2" stroke-linecap="round" stroke-linejoin="round"/> │
│ </svg> │
│ <span class="callout-note-content">Warrior and Shaman simulations are │
│ counted within the Skull Banner/Stormlash Totem totals, not as additional buffs.</ │
│ span> │
│ </div> │
│ <span class="info-value info-value-wrap">${fmt.formatRaidBuffs(metadata. │
│ raidBuffs)}</span> │
│ </div> │
│ </div> │
│ </div>`; │
│ } │
│ │
│ export function renderComparisonMetadataHTML( │
│ metadata: any, │
│ currentClass: string, │
│ currentSpec: string, │
│ label: "Race" | "Trinket", │
│ fmt: Formatters, │
│ ) { │
│ const simulationDate = metadata.timestamp │
│ ? fmt.formatSimulationDate(metadata.timestamp) │
│ : ""; │
│ const itemCount = │
│ metadata?.itemsTested ?? │
│ (metadata?.results ? Object.keys(metadata.results).length : ""); │
│ return ` │
│ <div class="card"> │
│ <h3 class="card-title">${label} Comparison Details</h3> │
│ <div class="info-grid"> │
│ <div class="info-item"><span class="info-label">Class/Spec</span><span cla │
│ ss="info-value">${metadata.class || currentClass} ${metadata.spec || currentSpec}< │
│ /span></div> │
│ <div class="info-item"><span class="info-label">Comparison Type</span><spa │
│ n class="info-value">${label}s</span></div> │
│ <div class="info-item"><span class="info-label">Iterations</span><span cla │
│ ss="info-value">${metadata.iterations?.toLocaleString?.() || metadata.iterations}< │
│ /span></div> │
│ <div class="info-item"><span class="info-label">${label}s Tested</span><sp │
│ an class="info-value">${itemCount}</span></div> │
│ <div class="info-item"><span class="info-label">Encounter Duration</span>< │
│ span class="info-value">${fmt.formatDuration(metadata.encounterDuration)}</span></ │
│ div> │
│ <div class="info-item"><span class="info-label">Duration Variation</span>< │
│ span class="info-value">?${metadata.encounterVariation}s</span></div> │
│ <div class="info-item"><span class="info-label">Target Count</span><span c │
│ lass="info-value">${metadata.targetCount}</span></div> │
│ <div class="info-item"><span class="info-label">Date Simulated</span><span │
│ class="info-value">${simulationDate}</span></div> │
│ <div class="info-item info-item-wide"><span class="info-label">Active Raid │
│ Buffs</span><span class="info-value info-value-wrap">${fmt.formatRaidBuffs(metada │
│ ta.raidBuffs)}</span></div> │
│ </div> │
│ </div>`; │
│ } │
└────────────────────────────────────────────────────────────────────────────────────┘
┌─ TS ─────────────────────────────────┐
│ type Formatters = { │
│ formatDuration: (s: number) => string; │
│ formatSimulationDate: (d: any) => string; │
│ formatRaidBuffs: (b: any) => string; │
│ }; │
│ │
│ export function renderRankingsMetadataHTML(m │
│ etadata: any, fmt: Formatters) { │
│ const simulationDate = metadata.timestamp │
│ ? fmt.formatSimulationDate(metadata.time │
│ stamp) │
│ : ""; │
│ return ` │
│ <div class="card"> │
│ <h3 class="card-title">DPS Rankings De │
│ tails</h3> │
│ <div class="info-grid"> │
│ <div class="info-item"><span class=" │
│ info-label">Simulation Type</span><span clas │
│ s="info-value">DPS Rankings</span></div> │
│ <div class="info-item"><span class=" │
│ info-label">Iterations</span><span class="in │
│ fo-value">${metadata.iterations?.toLocaleStr │
│ ing?.() || metadata.iterations}</span></div> │
│ <div class="info-item"><span class=" │
│ info-label">Specs Tested</span><span class=" │
│ info-value">${metadata.specCount ?? ""}</spa │
│ n></div> │
│ <div class="info-item"><span class=" │
│ info-label">Encounter Duration</span><span c │
│ lass="info-value">${fmt.formatDuration(metad │
│ ata.encounterDuration)}</span></div> │
│ <div class="info-item"><span class=" │
│ info-label">Duration Variation</span><span c │
│ lass="info-value">?${metadata.encounterVaria │
│ tion}s</span></div> │
│ <div class="info-item"><span class=" │
│ info-label">Target Count</span><span class=" │
│ info-value">${metadata.targetCount}</span></ │
│ div> │
│ <div class="info-item"><span class=" │
│ info-label">Date Simulated</span><span class │
│ ="info-value">${simulationDate}</span></div> │
│ <div class="info-item info-item-wide │
│ "> │
│ <span class="info-label">Active Ra │
│ id Buffs</span> │
│ <div class="callout-note"> │
│ <svg class="callout-note-icon" v │
│ iewBox="0 0 24 24" fill="none" xmlns="http:/ │
│ /www.w3.org/2000/svg"> │
│ <path d="M13 2L3 14H12L11 22L2 │
│ 1 10H12L13 2Z" stroke="currentColor" stroke- │
│ width="2" stroke-linecap="round" stroke-line │
│ join="round"/> │
│ </svg> │
│ <span class="callout-note-conten │
│ t">Warrior and Shaman simulations are counte │
│ d within the Skull Banner/Stormlash Totem to │
│ tals, not as additional buffs.</span> │
│ </div> │
│ <span class="info-value info-value │
│ -wrap">${fmt.formatRaidBuffs(metadata.raidBu │
│ ffs)}</span> │
│ </div> │
│ </div> │
│ </div>`; │
│ } │
│ │
│ export function renderComparisonMetadataHTML │
│ ( │
│ metadata: any, │
│ currentClass: string, │
│ currentSpec: string, │
│ label: "Race" | "Trinket", │
│ fmt: Formatters, │
│ ) { │
│ const simulationDate = metadata.timestamp │
│ ? fmt.formatSimulationDate(metadata.time │
│ stamp) │
│ : ""; │
│ const itemCount = │
│ metadata?.itemsTested ?? │
│ (metadata?.results ? Object.keys(metadat │
│ a.results).length : ""); │
│ return ` │
│ <div class="card"> │
│ <h3 class="card-title">${label} Compar │
│ ison Details</h3> │
│ <div class="info-grid"> │
│ <div class="info-item"><span class=" │
│ info-label">Class/Spec</span><span class="in │
│ fo-value">${metadata.class || currentClass} │
│ ${metadata.spec || currentSpec}</span></div> │
│ <div class="info-item"><span class=" │
│ info-label">Comparison Type</span><span clas │
│ s="info-value">${label}s</span></div> │
│ <div class="info-item"><span class=" │
│ info-label">Iterations</span><span class="in │
│ fo-value">${metadata.iterations?.toLocaleStr │
│ ing?.() || metadata.iterations}</span></div> │
│ <div class="info-item"><span class=" │
│ info-label">${label}s Tested</span><span cla │
│ ss="info-value">${itemCount}</span></div> │
│ <div class="info-item"><span class=" │
│ info-label">Encounter Duration</span><span c │
│ lass="info-value">${fmt.formatDuration(metad │
│ ata.encounterDuration)}</span></div> │
│ <div class="info-item"><span class=" │
│ info-label">Duration Variation</span><span c │
│ lass="info-value">?${metadata.encounterVaria │
│ tion}s</span></div> │
│ <div class="info-item"><span class=" │
│ info-label">Target Count</span><span class=" │
│ info-value">${metadata.targetCount}</span></ │
│ div> │
│ <div class="info-item"><span class=" │
│ info-label">Date Simulated</span><span class │
│ ="info-value">${simulationDate}</span></div> │
│ <div class="info-item info-item-wide │
│ "><span class="info-label">Active Raid Buffs │
│ </span><span class="info-value info-value-wr │
│ ap">${fmt.formatRaidBuffs(metadata.raidBuffs │
│ )}</span></div> │
│ </div> │
│ </div>`; │
│ } │
└──────────────────────────────────────────────┘
──────────────────────────────────────────────────────────────────────────────────────
OOKNET
────────────────────────────────────────────────
OOKNET