q3aServ/cpma/stats/basics/stats141.xsl
2021-03-13 13:10:51 +01:00

372 lines
11 KiB
XML

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp "&#160;">
<!ENTITY copy "&#169;">
<!ENTITY reg "&#174;">
<!ENTITY trade "&#8482;">
<!ENTITY mdash "&#8212;">
<!ENTITY ldquo "&#8220;">
<!ENTITY rdquo "&#8221;">
<!ENTITY pound "&#163;">
<!ENTITY yen "&#165;">
<!ENTITY euro "&#8364;">
<!ENTITY raquo "&#187;">
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template name="ReturnUp">
<div align="center"><a href="#top"><img src="../../../basics/arrup.gif"/>&nbsp;
<span class="ReturnUp">Return to Match Information</span>
</a></div><br/>
</xsl:template>
<xsl:template name="FormatMS">
<xsl:param name="MS"/>
<xsl:variable name="S">
<xsl:value-of select="(($MS mod 60000) div 1000)"/>
</xsl:variable>
<xsl:variable name="M">
<xsl:value-of select="(($MS - $S * 1000) div 60000)"/>
</xsl:variable>
<xsl:value-of select="$M"/>:<xsl:value-of select="format-number($S, '00.000')"/>
</xsl:template>
<xsl:template match="/">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-2" />
<title>Match Statistics</title>
<link href="../../../basics/stats141.css" type="text/css" rel="stylesheet" />
</head>
<body onLoad="parent.processFilter(this)">
<div><a name="top"></a>
<xsl:for-each select="match">
<p class="SectionTitle">Match Details</p>
<table class="MatchInfo">
<tr>
<td class="MatchInfoLabel">Date</td>
<td class="MatchInfoValue"><xsl:value-of select="substring-before(@datetime,' ')"/></td>
</tr>
<tr>
<td class="MatchInfoLabel">Time</td>
<td class="MatchInfoValue"><xsl:value-of select="substring-after(@datetime,' ')"/></td>
</tr>
<tr>
<td class="MatchInfoLabel">Map</td>
<td class="MatchInfoValue"><xsl:value-of select="@map" /></td>
</tr>
<tr>
<td class="MatchInfoLabel">Gametype</td>
<td class="MatchInfoValue"><xsl:value-of select="@type" /></td>
</tr>
<tr>
<td class="MatchInfoLabel">Server</td>
<td class="MatchInfoValue"><xsl:value-of select="@server" /></td>
</tr>
</table>
<p class="SectionTitle">
<xsl:choose>
<xsl:when test="@isTeamGame = 'true'">
Showing <xsl:value-of select="count(team)" /> teams:
</xsl:when>
<xsl:otherwise>
Showing <xsl:value-of select="count(player)" /> players:
</xsl:otherwise>
</xsl:choose>
</p>
<xsl:choose>
<xsl:when test="@isTeamGame = 'true'">
<table class="TeamScores">
<xsl:for-each select="team">
<td align="center">
<table>
<tr>
<td class="TeamName"><xsl:value-of select="@name"/></td>
<td />
<td class="TeamScore"><xsl:value-of select="@score"/></td>
</tr>
<xsl:for-each select="player">
<xsl:sort select="number(stat[@name='Net']/@value)" data-type="number" order="descending" />
<tr>
<td><a href="#{@name}" id="filterme" target="_self"><img src="../../../basics/arrdown.gif" /> &#160;<span class="PlayerHeaderName" id="filterme"><xsl:value-of select="@name" /></span> </a></td>
<td class="PlayerHeaderScore"><xsl:value-of select="number(stat[@name='Net']/@value)" /></td>
<td class="PlayerHeaderScore"><xsl:value-of select="number(stat[@name='Score']/@value)" /></td>
</tr>
</xsl:for-each>
</table>
</td>
<td class="TeamScoresPad"/>
</xsl:for-each>
</table>
<br/><hr/>
<xsl:for-each select="team">
<span class="SectionTitle"><xsl:value-of select="@name" /></span>
<xsl:for-each select="player">
<xsl:sort select="number(stat[@name='Net']/@value)" data-type="number" order="descending" />
<xsl:apply-templates select=".">
<xsl:with-param name="isTeamGame" select="1" />
</xsl:apply-templates>
<xsl:call-template name="ReturnUp"/>
</xsl:for-each>
<br />
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<table class="PlayerScores">
<xsl:for-each select="player">
<xsl:sort select="number(stat[@name='Score']/@value)" data-type="number" order="descending" />
<tr>
<td><a href="#{@name}" id="filterme"><img src="../../../basics/arrdown.gif" /> &#160;<span class="PlayerHeaderName" id="filterme"><xsl:value-of select="@name" /></span> </a></td>
<td><p class="PlayerHeaderScore"><xsl:value-of select="stat[@name='Score']/@value" /></p></td>
</tr>
</xsl:for-each>
</table>
<br/><hr/>
<xsl:for-each select="player">
<xsl:sort select="number(stat[@name='Score']/@value)" data-type="number" order="descending" />
<xsl:apply-templates select=".">
<xsl:with-param name="isTeamGame" select="0" />
</xsl:apply-templates>
<xsl:call-template name="ReturnUp"/>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</div>
</body>
</html>
</xsl:template>
<xsl:template match="player">
<xsl:param name="isTeamGame"/>
<!-- populate all our synthetics NOW, instead of clustering them in with the display code -->
<!-- we explicitly calc them AS vars rather than just emitting, so they can be used for sorting etc -->
<xsl:variable name="EFF">
<xsl:choose>
<xsl:when test="stat[@name='Kills'] = 0">
0
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="(round (100 * stat[@name='Kills']/@value div (stat[@name='Kills']/@value + stat[@name='Deaths']/@value) ) )" />%
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="DmgEFF">
<xsl:choose>
<xsl:when test="stat[@name='DamageGiven'] = 0">
0
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="(round (100 * stat[@name='DamageGiven']/@value div (stat[@name='DamageGiven']/@value + stat[@name='DamageTaken']/@value) ) )" />%
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="DmgTeam">
<xsl:choose>
<xsl:when test="string(0 - stat[@name='TeamDamage']/@value) = 'NaN'">
0
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="stat[@name='TeamDamage']/@value" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<a name="{@name}"/>
<td class="PlayerHeaderName" id="filterme"><xsl:value-of select="@name"/></td>
<td class="PlayerHeaderScore"><xsl:value-of select="stat[@name='Score']/@value"/></td>
<!--
<xsl:variable name="guid">
<xsl:choose>
<xsl:when test="@guid = ''">
<xsl:value-of select="'none'" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@guid" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr>
<td><p class="playerGUID">GUID:<xsl:value-of select="$guid" />&#160;</p></td>
</tr>
-->
<xsl:if test="count(CTF/stat) != 0">
<p class="SectionTitle">Flag Roles</p>
<table class="Combat">
<tr>
<xsl:for-each select="CTF/stat">
<td class="StatName"><xsl:value-of select="@name"/></td>
</xsl:for-each>
</tr>
<tr>
<xsl:for-each select="CTF/stat">
<td class="StatValue"><xsl:value-of select="@value"/></td>
</xsl:for-each>
</tr>
</table>
</xsl:if>
<p class="SectionTitle">Combat</p>
<table class="Combat">
<tr>
<td><p class="StatName">
<xsl:choose>
<xsl:when test="$isTeamGame = 1">
NET
</xsl:when>
<xsl:otherwise>
Score
</xsl:otherwise>
</xsl:choose>
</p></td>
<td><p class="StatName">Kills</p></td>
<td><p class="StatName">Deaths</p></td>
<td><p class="StatName">Suicides</p></td>
<td><p class="StatName">EFF</p></td>
<xsl:if test="string(0 - stat[@name='TeamKills']/@value) != 'NaN'">
<td><p class="StatName">TeamKills</p></td>
</xsl:if>
</tr>
<tr>
<td><p class="StatValue">
<xsl:choose>
<xsl:when test="$isTeamGame = 1">
<xsl:value-of select="stat[@name='Net']/@value" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="stat[@name='Score']/@value" />
</xsl:otherwise>
</xsl:choose>
</p></td>
<td><p class="StatValue"><xsl:value-of select="stat[@name='Kills']/@value" /></p></td>
<td><p class="StatValue"><xsl:value-of select="stat[@name='Deaths']/@value" /></p></td>
<td><p class="StatValue"><xsl:value-of select="stat[@name='Suicides']/@value" /></p></td>
<td><p class="StatValue"><xsl:value-of select="$EFF" /></p></td>
<xsl:if test="string(0 - stat[@name='TeamKills']/@value) != 'NaN'">
<td><p class="StatValue"><xsl:value-of select="stat[@name='TeamKills']/@value" /></p></td>
</xsl:if>
</tr>
<tr>
<td><p class="StatName">DmgEFF</p></td>
<td><p class="StatName">DmgGiven</p></td>
<td><p class="StatName">DmgTaken</p></td>
<xsl:if test="$DmgTeam != 0">
<td><p class="StatName">Team Damage</p></td>
</xsl:if>
<td><p class="StatName">DmgNET</p></td>
</tr>
<tr>
<td><p class="StatValue"><xsl:value-of select="$DmgEFF" /></p></td>
<td><p class="StatValue"><xsl:value-of select="stat[@name='DamageGiven']/@value" /></p></td>
<td><p class="StatValue"><xsl:value-of select="stat[@name='DamageTaken']/@value" /></p></td>
<xsl:if test="$DmgTeam != 0">
<td><p class="StatValue"><xsl:value-of select="$DmgTeam" /></p></td>
</xsl:if>
<td><p class="StatValue"><xsl:value-of select="(stat[@name='DamageGiven']/@value - stat[@name='DamageTaken']/@value - $DmgTeam)" /></p></td>
</tr>
</table>
<xsl:if test="count(powerups/item) != 0"> <!-- lol@xsl: count(SET) always returns 1, gg -->
<p class="SectionTitle">Powerups</p>
<table class="Powerups">
<xsl:for-each select="powerups/item">
<tr>
<td class="StatName"><xsl:value-of select="@name"/></td>
<td class="StatValue"><xsl:value-of select="@pickups"/></td>
<td class="StatValue">
<xsl:call-template name="FormatMS">
<xsl:with-param name="MS" select="@time"/>
</xsl:call-template>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:if>
<p class="SectionTitle">Weapons</p>
<table class="Weapons">
<tr>
<td><p class="StatName">Weapon</p></td>
<td><p class="StatName">Kills</p></td>
<td><p class="StatName">Acc</p></td>
<td><p class="StatName">Hits</p></td>
<td><p class="StatName">Shots</p></td>
</tr>
<xsl:for-each select="weapons/weapon">
<tr>
<td><xsl:value-of select="@name"/></td>
<td><p class="StatValue"><xsl:value-of select="@kills" /></p></td>
<td><p class="StatValue"><xsl:apply-templates select="." /></p></td>
<td><p class="StatValue"><xsl:value-of select="@hits" /></p></td>
<td><p class="StatValue"><xsl:value-of select="@shots" /></p></td>
</tr>
</xsl:for-each>
</table>
<xsl:if test="count(items) != 0">
<p class="SectionTitle">Items</p>
<table class="Items">
<tr>
<xsl:if test="string(0 - stat[@name='HealthTotal']/@value) != 'NaN'">
<td class="StatName">Health</td>
</xsl:if>
<xsl:if test="string(0 - stat[@name='ArmorTotal']/@value) != 'NaN'">
<td class="StatName">Armor</td>
</xsl:if>
<xsl:for-each select="items/item">
<td class="StatName"><xsl:value-of select="@name"/></td>
</xsl:for-each>
</tr>
<xsl:if test="string(0 - stat[@name='HealthTotal']/@value) != 'NaN'">
<td class="StatValue"><xsl:value-of select="stat[@name='HealthTotal']/@value" /></td>
</xsl:if>
<xsl:if test="string(0 - stat[@name='ArmorTotal']/@value) != 'NaN'">
<td class="StatValue"><xsl:value-of select="stat[@name='ArmorTotal']/@value" /></td>
</xsl:if>
<xsl:for-each select="items/item">
<td class="StatValue"><xsl:value-of select="@pickups"/></td>
</xsl:for-each>
<tr>
</tr>
</table>
</xsl:if>
</xsl:template>
<xsl:template match="weapon">
<xsl:if test="@shots > 0">
<xsl:value-of select="(round (@hits div @shots * 10000)) div 100" />%
</xsl:if>
</xsl:template>
</xsl:stylesheet>