diff options
Diffstat (limited to 'rcynic/rcynic.xsl')
-rw-r--r-- | rcynic/rcynic.xsl | 312 |
1 files changed, 0 insertions, 312 deletions
diff --git a/rcynic/rcynic.xsl b/rcynic/rcynic.xsl deleted file mode 100644 index 487cd2f6..00000000 --- a/rcynic/rcynic.xsl +++ /dev/null @@ -1,312 +0,0 @@ -<?xml version="1.0"?> -<!-- - - Copyright (C) 2010-2011 Internet Systems Consortium, Inc. ("ISC") - - - - Permission to use, copy, modify, and/or distribute this software for any - - purpose with or without fee is hereby granted, provided that the above - - copyright notice and this permission notice appear in all copies. - - - - THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH - - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY - - AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, - - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM - - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE - - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - - PERFORMANCE OF THIS SOFTWARE. - - - - Portions copyright (C) 2006 American Registry for Internet Numbers ("ARIN") - - - - Permission to use, copy, modify, and distribute this software for any - - purpose with or without fee is hereby granted, provided that the above - - copyright notice and this permission notice appear in all copies. - - - - THE SOFTWARE IS PROVIDED "AS IS" AND ARIN DISCLAIMS ALL WARRANTIES WITH - - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY - - AND FITNESS. IN NO EVENT SHALL ARIN BE LIABLE FOR ANY SPECIAL, DIRECT, - - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM - - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE - - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - - PERFORMANCE OF THIS SOFTWARE. - --> - -<!-- $Id$ --> - -<!-- - - XSL stylesheet to render rcynic's xml-summary output as basic (X)HTML. - - - - This is a bit more complicated than strictly necessary, because I wanted - - the ability to drop out columns that are nothing but zeros. - - There's probably some clever way of using XPath to simplify this, - - but I don't expect the data sets to be large enough for performance - - to be an issue here. Feel free to show me how to do better. - --> - -<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" - version="1.0" - xmlns:com="http://exslt.org/common" - xmlns:str="http://exslt.org/strings" - exclude-result-prefixes="com str"> - - <xsl:output omit-xml-declaration="yes" indent="yes" method="xml" encoding="US-ASCII" - doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" - doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/> - - <xsl:param name="refresh" select="1800"/> - <xsl:param name="suppress-zero-columns" select="1"/> - <xsl:param name="show-total" select="1"/> - <xsl:param name="use-colors" select="1"/> - <xsl:param name="show-detailed-status" select="1"/> - <xsl:param name="show-problems" select="0"/> - <xsl:param name="show-summary" select="1"/> - - <xsl:template match="/"> - <xsl:comment>Generators</xsl:comment> - <xsl:comment><xsl:value-of select="rcynic-summary/@rcynic-version"/></xsl:comment> - <xsl:comment>$Id$</xsl:comment> - <html> - <xsl:variable name="title"> - <xsl:text>rcynic summary </xsl:text> - <xsl:value-of select="rcynic-summary/@date"/> - </xsl:variable> - <head> - <title> - <xsl:value-of select="$title"/> - </title> - <xsl:if test="$refresh != 0"> - <meta http-equiv="Refresh" content="{$refresh}"/> - </xsl:if> - <style type="text/css"> - td { text-align: center; padding: 4px } - td.uri { text-align: left } - td.host { text-align: left } - <xsl:if test="$use-colors != 0"> - tr.good,td.good { background-color: #77ff77 } - tr.warn,td.warn { background-color: yellow } - tr.bad,td.bad { background-color: #ff5500 } - </xsl:if> - </style> - </head> - <body> - <h1><xsl:value-of select="$title"/></h1> - - <!-- Summary output, old host-oriented format --> - <xsl:if test="$show-summary != 0"> - - <!-- Collect data we need to display --> - <xsl:variable name="host-data"> - <xsl:for-each select="rcynic-summary/validation_status"> - <xsl:sort order="ascending" data-type="text" select="."/> - <xsl:variable name="uri" select="string(.)"/> - <xsl:if test="starts-with($uri, 'rsync://')"> - <xsl:variable name="hostname" select="str:tokenize($uri, ':/')[2]"/> - <xsl:variable name="mood" select="/rcynic-summary/labels/*[name() = current()/@status]/@kind"/> - <xsl:variable name="fn2"> - <xsl:if test="substring($uri, string-length($uri) - 3, 1) = '.' and @generation != ''"> - <xsl:value-of select="substring($uri, string-length($uri) - 3)"/> - </xsl:if> - </xsl:variable> - <x hostname="{$hostname}" timestamp="{@timestamp}" uri="{$uri}" status="{@status}" mood="{$mood}" fn2="{$fn2}" generation="{@generation}"/> - </xsl:if> - </xsl:for-each> - </xsl:variable> - - <!-- Calculate set of unique hostnames --> - <xsl:variable name="unique-hostnames"> - <xsl:for-each select="com:node-set($host-data)/x[not(@hostname = following::x/@hostname)]"> - <x hostname="{@hostname}"/> - </xsl:for-each> - </xsl:variable> - - <!-- Calculate set of unique filename types --> - <xsl:variable name="unique-fn2s"> - <xsl:for-each select="com:node-set($host-data)/x[not(@fn2 = following::x/@fn2)]"> - <x fn2="{@fn2}"/> - </xsl:for-each> - </xsl:variable> - - <!-- Generation names --> - <xsl:variable name="unique-generations"> - <xsl:for-each select="com:node-set($host-data)/x[not(@generation = following::x/@generation)]"> - <x generation="{@generation}"/> - </xsl:for-each> - </xsl:variable> - - <!-- Calculate grand totals, figure out which columns to display --> - <xsl:variable name="totals"> - <xsl:for-each select="rcynic-summary/labels/*"> - <xsl:variable name="sum" select="count(com:node-set($host-data)/x[@status = name(current())])"/> - <xsl:variable name="show"> - <xsl:choose> - <xsl:when test="$suppress-zero-columns = 0 or $sum > 0"> - <xsl:text>1</xsl:text> - </xsl:when> - <xsl:otherwise> - <xsl:text>0</xsl:text> - </xsl:otherwise> - </xsl:choose> - </xsl:variable> - <x name="{name(current())}" sum="{$sum}" text="{.}" show="{$show}" mood="{@kind}"/> - </xsl:for-each> - </xsl:variable> - - <!-- Calculate how many columns we'll be displaying --> - <xsl:variable name="columns" select="count(com:node-set($totals)/x[@show = 1])"/> - - <!-- Show the total --> - <xsl:if test="$show-total != 0"> - <br/> - <h2>Grand Totals</h2> - <table class="summary" rules="all" border="1"> - <thead> - <tr> - <td/> <!-- was hostname --> - <xsl:for-each select="com:node-set($totals)/x[@show = 1]"> - <td><b><xsl:value-of select="@text"/></b></td> - </xsl:for-each> - </tr> - </thead> - <tbody> - <tr> - <td><b>Total</b></td> - <xsl:for-each select="com:node-set($totals)/x"> - <xsl:if test="$suppress-zero-columns = 0 or @sum > 0"> - <td class="{@mood}"><xsl:value-of select="@sum"/></td> - </xsl:if> - </xsl:for-each> - </tr> - </tbody> - </table> - </xsl:if> - - <!-- Generate the HTML --> - <br/> - <h2>Summaries by Repository Host</h2> - <xsl:for-each select="com:node-set($unique-hostnames)/x"> - <xsl:sort order="ascending" data-type="text" select="@hostname"/> - <xsl:variable name="hostname" select="@hostname"/> - <br/> - <h3><xsl:value-of select="$hostname"/></h3> - <table class="summary" rules="all" border="1"> - <thead> - <tr> - <td/> <!-- was hostname --> - <xsl:for-each select="com:node-set($totals)/x[@show = 1]"> - <td><b><xsl:value-of select="@text"/></b></td> - </xsl:for-each> - </tr> - </thead> - <tbody> - <xsl:for-each select="com:node-set($unique-fn2s)/x"> - <xsl:sort order="ascending" data-type="text" select="@fn2"/> - <xsl:variable name="fn2" select="@fn2"/> - <xsl:for-each select="com:node-set($unique-generations)/x"> - <xsl:sort order="ascending" data-type="text" select="@generation"/> - <xsl:variable name="generation" select="@generation"/> - <xsl:if test="count(com:node-set($host-data)/x[@hostname = $hostname and @fn2 = $fn2 and @generation = $generation])"> - <tr> - <td><xsl:value-of select="concat($generation, ' ', $fn2)"/></td> - <xsl:for-each select="com:node-set($totals)/x[@show = 1]"> - <xsl:variable name="label" select="@name"/> - <xsl:variable name="value" select="count(com:node-set($host-data)/x[@hostname = $hostname and @fn2 = $fn2 and @generation = $generation and @status = $label])"/> - <xsl:choose> - <xsl:when test="$value != 0"> - <td class="{@mood}"> - <xsl:value-of select="$value"/> - </td> - </xsl:when> - <xsl:otherwise> - <td/> - </xsl:otherwise> - </xsl:choose> - </xsl:for-each> - </tr> - </xsl:if> - </xsl:for-each> - </xsl:for-each> - <tr> - <td>Total</td> - <xsl:for-each select="com:node-set($totals)/x[@show = 1]"> - <xsl:variable name="label" select="@name"/> - <xsl:variable name="value" select="count(com:node-set($host-data)/x[@hostname = $hostname and @status = $label])"/> - <xsl:choose> - <xsl:when test="$value != 0"> - <td class="{@mood}"> - <xsl:value-of select="$value"/> - </td> - </xsl:when> - <xsl:otherwise> - <td/> - </xsl:otherwise> - </xsl:choose> - </xsl:for-each> - </tr> - </tbody> - </table> - </xsl:for-each> - - <!-- "Problems" display --> - <xsl:if test="$show-problems != 0"> - <br/> - <h2>Problems</h2> - <table class="problems" rules="all" border="1" > - <thead> - <tr> - <td class="status"><b>Status</b></td> - <td class="uri"><b>URI</b></td> - </tr> - </thead> - <tbody> - <xsl:for-each select="rcynic-summary/validation_status"> - <xsl:variable name="status" select="@status"/> - <xsl:variable name="mood" select="/rcynic-summary/labels/*[name() = $status]/@kind"/> - <xsl:if test="$mood != 'good'"> - <tr class="{$mood}"> - <td class="status"><xsl:value-of select="/rcynic-summary/labels/*[name() = $status] "/></td> - <td class="uri"><xsl:value-of select="."/></td> - </tr> - </xsl:if> - </xsl:for-each> - </tbody> - </table> - </xsl:if> - </xsl:if> - - <!-- Detailed status display --> - <xsl:if test="$show-detailed-status != 0"> - <br/> - <h2>Validation Status</h2> - <table class="details" rules="all" border="1" > - <thead> - <tr> - <td class="timestamp"><b>Timestamp</b></td> - <td class="generation"><b>Generation</b></td> - <td class="status"><b>Status</b></td> - <td class="uri"><b>URI</b></td> - </tr> - </thead> - <tbody> - <xsl:for-each select="rcynic-summary/validation_status"> - <xsl:variable name="status" select="@status"/> - <xsl:variable name="mood" select="/rcynic-summary/labels/*[name() = $status]/@kind"/> - <tr class="{$mood}"> - <td class="timestamp"><xsl:value-of select="@timestamp"/></td> - <td class="generation"><xsl:value-of select="@generation"/></td> - <td class="status"><xsl:value-of select="/rcynic-summary/labels/*[name() = $status] "/></td> - <td class="uri"><xsl:value-of select="."/></td> - </tr> - </xsl:for-each> - </tbody> - </table> - </xsl:if> - - </body> - </html> - </xsl:template> - -</xsl:stylesheet> - -<!-- - - Local variables: - - mode: sgml - - End: - --> |