|
|
|
<?xml version="1.0" encoding="UTF-8" ?>
|
|
|
|
<xsl:stylesheet version="1.0"
|
|
|
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
|
|
|
xmlns:svg="http://www.w3.org/2000/svg">
|
|
|
|
<!--graphtools-Layout Templates, können in pageComponents_html_final.xsl überlagert werden-->
|
|
|
|
<xsl:template name="myBarColorFg" >
|
|
|
|
<xsl:text>steelblue</xsl:text>
|
|
|
|
</xsl:template>
|
|
|
|
<xsl:template name="myBarColorBg" >
|
|
|
|
<xsl:text>#cccccc</xsl:text>
|
|
|
|
</xsl:template>
|
|
|
|
<xsl:template name="myBarColorSeriesFgStart" >
|
|
|
|
<xsl:text>0,0,139</xsl:text>
|
|
|
|
</xsl:template>
|
|
|
|
<xsl:template name="myBarColorSeriesFgEnd" >
|
|
|
|
<xsl:text>173,216,230</xsl:text>
|
|
|
|
</xsl:template>
|
|
|
|
<xsl:template name="myBarColorSeriesFgSteps" >
|
|
|
|
<xsl:text>10</xsl:text>
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
<!-- nun die templates zur Berechnung:-->
|
|
|
|
<xsl:template name="graph">
|
|
|
|
<xsl:param name="graphwidth" select="100" />
|
|
|
|
<xsl:param name="graphheight" select="20" />
|
|
|
|
<xsl:param name="feldname" />
|
|
|
|
<xsl:param name="feldwert" />
|
|
|
|
|
|
|
|
<xsl:variable name="gesamt">
|
|
|
|
<xsl:choose>
|
|
|
|
<xsl:when test="contains($feldwert,'|')">
|
|
|
|
<xsl:value-of select="number(substring-after($feldwert,'|'))"/>
|
|
|
|
</xsl:when>
|
|
|
|
<xsl:otherwise>100</xsl:otherwise>
|
|
|
|
</xsl:choose>
|
|
|
|
</xsl:variable>
|
|
|
|
<xsl:variable name="feldwertOhneGesamt">
|
|
|
|
<xsl:choose>
|
|
|
|
<xsl:when test="contains($feldwert,'|')">
|
|
|
|
<xsl:value-of select="substring-before($feldwert,'|')"/>
|
|
|
|
</xsl:when>
|
|
|
|
<xsl:otherwise><xsl:value-of select="$feldwert"/></xsl:otherwise>
|
|
|
|
</xsl:choose>
|
|
|
|
</xsl:variable>
|
|
|
|
<xsl:variable name="barColorBg">
|
|
|
|
<xsl:call-template name="myBarColorBg" />
|
|
|
|
</xsl:variable>
|
|
|
|
<xsl:variable name="barColorSeriesFgStart">
|
|
|
|
<xsl:call-template name="myBarColorSeriesFgStart" />
|
|
|
|
</xsl:variable>
|
|
|
|
<xsl:variable name="barColorSeriesFgEnd">
|
|
|
|
<xsl:call-template name="myBarColorSeriesFgEnd" />
|
|
|
|
</xsl:variable>
|
|
|
|
<xsl:variable name="barColorSeriesFgSteps">
|
|
|
|
<xsl:call-template name="myBarColorSeriesFgSteps" />
|
|
|
|
</xsl:variable>
|
|
|
|
|
|
|
|
<xsl:if test="string-length($feldwert) > 0">
|
|
|
|
<svg:svg width="{concat($graphwidth,'px')}" height="{concat($graphheight,'px')}"><svg:g>
|
|
|
|
<svg:rect x="0" y="0" width="{concat($graphwidth,'px')}" height="{concat($graphheight,'px')}" fill="{$barColorBg}">
|
|
|
|
<svg:title><xsl:value-of select="$gesamt"/></svg:title></svg:rect>
|
|
|
|
|
|
|
|
|
|
|
|
<xsl:choose>
|
|
|
|
<xsl:when test="starts-with($feldname,'_graphbarright')">
|
|
|
|
<xsl:call-template name="drawBar">
|
|
|
|
<xsl:with-param name="maxwidth" select="$graphwidth" />
|
|
|
|
<xsl:with-param name="barHeight" select="$graphheight" />
|
|
|
|
<xsl:with-param name="barClass" select="'chartBar'" />
|
|
|
|
<xsl:with-param name="barValue" select="number($feldwertOhneGesamt)" />
|
|
|
|
<xsl:with-param name="barMaxValue" select="$gesamt" />
|
|
|
|
<xsl:with-param name="barLabel" select="number($feldwertOhneGesamt)" />
|
|
|
|
<xsl:with-param name="barLabelClass" select="'chartLabel'" />
|
|
|
|
<xsl:with-param name="x" select="($graphwidth - ($graphwidth * (number($feldwertOhneGesamt) div $gesamt)))" />
|
|
|
|
<xsl:with-param name="y" select="0" />
|
|
|
|
</xsl:call-template>
|
|
|
|
|
|
|
|
</xsl:when>
|
|
|
|
|
|
|
|
<xsl:when test="starts-with($feldname,'_graphbarxseries')">
|
|
|
|
<xsl:variable name="feldwertPlusDelim">
|
|
|
|
<xsl:value-of select="concat($feldwertOhneGesamt,',')"/>
|
|
|
|
</xsl:variable>
|
|
|
|
<xsl:variable name="countSteps">
|
|
|
|
<xsl:call-template name="countDelims" >
|
|
|
|
<xsl:with-param name="s1" select="$feldwertPlusDelim"/>
|
|
|
|
<xsl:with-param name="nr" select="0"/>
|
|
|
|
<xsl:with-param name="delim" select="','"/>
|
|
|
|
</xsl:call-template>
|
|
|
|
</xsl:variable>
|
|
|
|
<xsl:call-template name="chartBarXSeries">
|
|
|
|
<xsl:with-param name="graphwidth" select="$graphwidth" />
|
|
|
|
<xsl:with-param name="barHeight" select="$graphheight" />
|
|
|
|
<xsl:with-param name="barColorSeriesFgStart" select="$barColorSeriesFgStart" />
|
|
|
|
<xsl:with-param name="barColorSeriesFgEnd" select="$barColorSeriesFgEnd" />
|
|
|
|
<xsl:with-param name="barColorSeriesFgStep" select="1" />
|
|
|
|
<xsl:with-param name="barColorSeriesFgSteps" select="$countSteps" />
|
|
|
|
<xsl:with-param name="offset" select="0" />
|
|
|
|
<xsl:with-param name="feldwertSubString" select="$feldwertPlusDelim"/>
|
|
|
|
<xsl:with-param name="gesamt" select="$gesamt"/>
|
|
|
|
</xsl:call-template>
|
|
|
|
</xsl:when>
|
|
|
|
|
|
|
|
<xsl:when test="starts-with($feldname,'_graphbarwithlabel')" >
|
|
|
|
<xsl:call-template name="drawBar">
|
|
|
|
<xsl:with-param name="maxwidth" select="$graphwidth" />
|
|
|
|
<xsl:with-param name="barHeight" select="19" />
|
|
|
|
<xsl:with-param name="barClass" select="'chartBar'" />
|
|
|
|
<xsl:with-param name="barValue" select="number($feldwertOhneGesamt)" />
|
|
|
|
<xsl:with-param name="barMaxValue" select="$gesamt" />
|
|
|
|
<xsl:with-param name="barLabel" select="number($feldwertOhneGesamt)" />
|
|
|
|
<xsl:with-param name="barLabelClass" select="'chartLabel'" />
|
|
|
|
<xsl:with-param name="showLabel" select="'true'" />
|
|
|
|
</xsl:call-template>
|
|
|
|
|
|
|
|
</xsl:when>
|
|
|
|
|
|
|
|
<xsl:otherwise><!-- default: Balken linksbündig-->
|
|
|
|
|
|
|
|
<xsl:call-template name="drawBar">
|
|
|
|
<xsl:with-param name="maxwidth" select="$graphwidth" />
|
|
|
|
<xsl:with-param name="barHeight" select="19" />
|
|
|
|
<xsl:with-param name="barClass" select="'chartBar'" />
|
|
|
|
<xsl:with-param name="barValue" select="number($feldwertOhneGesamt)" />
|
|
|
|
<xsl:with-param name="barMaxValue" select="$gesamt" />
|
|
|
|
<xsl:with-param name="barLabel" select="number($feldwertOhneGesamt)" />
|
|
|
|
<xsl:with-param name="barLabelClass" select="'chartLabel'" />
|
|
|
|
</xsl:call-template>
|
|
|
|
|
|
|
|
</xsl:otherwise>
|
|
|
|
</xsl:choose>
|
|
|
|
|
|
|
|
</svg:g>
|
|
|
|
</svg:svg>
|
|
|
|
</xsl:if>
|
|
|
|
</xsl:template>
|
|
|
|
<xsl:template name="chartBarXSeries">
|
|
|
|
<xsl:param name="graphwidth" select="100" />
|
|
|
|
<xsl:param name="barHeight" select="19" />
|
|
|
|
<xsl:param name="barColorSeriesFgStart" select="'0,0,139'" /><!--dark blue-->
|
|
|
|
<xsl:param name="barColorSeriesFgEnd" select="'173, 216, 230'" /><!--light blue-->
|
|
|
|
<xsl:param name="barColorSeriesFgStep" select="1" /><!--Nr. der Abstufung-->
|
|
|
|
<xsl:param name="barColorSeriesFgSteps" select="10" /><!--Anzahl Abstufungen-->
|
|
|
|
<xsl:param name="offset" select="0" />
|
|
|
|
<xsl:param name="feldwertSubString" />
|
|
|
|
<xsl:param name="gesamt" select="100"/>
|
|
|
|
|
|
|
|
<xsl:variable name="feldwertNumeric">
|
|
|
|
<xsl:value-of select="number(substring-before($feldwertSubString,','))"/>
|
|
|
|
</xsl:variable>
|
|
|
|
|
|
|
|
<xsl:call-template name="drawBar">
|
|
|
|
<xsl:with-param name="maxwidth" select="$graphwidth" />
|
|
|
|
<xsl:with-param name="barHeight" select="$barHeight" />
|
|
|
|
<xsl:with-param name="barClass" select="concat('chartBarSeries',$barColorSeriesFgStep)" />
|
|
|
|
<xsl:with-param name="barValue" select="$feldwertNumeric" />
|
|
|
|
<xsl:with-param name="barMaxValue" select="$gesamt" />
|
|
|
|
<xsl:with-param name="barLabel" select="$feldwertNumeric" />
|
|
|
|
<xsl:with-param name="barLabelClass" select="concat('chartLabelSeries',$barColorSeriesFgStep)" />
|
|
|
|
<xsl:with-param name="x" select="$offset" />
|
|
|
|
<xsl:with-param name="y" select="0" />
|
|
|
|
<xsl:with-param name="barColorSeriesFgStart" select="$barColorSeriesFgStart" />
|
|
|
|
<xsl:with-param name="barColorSeriesFgEnd" select="$barColorSeriesFgEnd" />
|
|
|
|
<xsl:with-param name="barColorSeriesFgStep" select="$barColorSeriesFgStep" />
|
|
|
|
<xsl:with-param name="barColorSeriesFgSteps" select="$barColorSeriesFgSteps" />
|
|
|
|
|
|
|
|
</xsl:call-template>
|
|
|
|
|
|
|
|
|
|
|
|
<xsl:if test="contains(substring-after($feldwertSubString,','),',')">
|
|
|
|
<xsl:call-template name="chartBarXSeries">
|
|
|
|
<xsl:with-param name="graphwidth" select="$graphwidth" />
|
|
|
|
<xsl:with-param name="barHeight" select="$barHeight" />
|
|
|
|
<xsl:with-param name="barColorSeriesFgStep" select="$barColorSeriesFgStep + 1" />
|
|
|
|
<xsl:with-param name="barColorSeriesFgStart" select="$barColorSeriesFgStart" />
|
|
|
|
<xsl:with-param name="barColorSeriesFgEnd" select="$barColorSeriesFgEnd" />
|
|
|
|
<xsl:with-param name="barColorSeriesFgSteps" select="$barColorSeriesFgSteps" />
|
|
|
|
<xsl:with-param name="offset" select="$offset + ($graphwidth * ($feldwertNumeric div $gesamt))" />
|
|
|
|
<xsl:with-param name="feldwertSubString" select="substring-after($feldwertSubString,',')"/>
|
|
|
|
</xsl:call-template>
|
|
|
|
</xsl:if>
|
|
|
|
</xsl:template>
|
|
|
|
<xsl:template name="drawBar">
|
|
|
|
<xsl:param name="maxwidth" select="100" />
|
|
|
|
<xsl:param name="barHeight" select="19" />
|
|
|
|
<xsl:param name="barClass" select="'chartBar'" />
|
|
|
|
<xsl:param name="barValue" />
|
|
|
|
<xsl:param name="barMaxValue" />
|
|
|
|
<xsl:param name="barLabel" />
|
|
|
|
<xsl:param name="barLabelClass" select="'chartLabel'" />
|
|
|
|
<xsl:param name="x" select="0" />
|
|
|
|
<xsl:param name="y" select="0" />
|
|
|
|
<xsl:param name="showLabel" select="'false'" />
|
|
|
|
<xsl:param name="barColorSeriesFgStart" select="'0,0,139'" /><!--dark blue-->
|
|
|
|
<xsl:param name="barColorSeriesFgEnd" select="'173, 216, 230'" /><!--light blue-->
|
|
|
|
<xsl:param name="barColorSeriesFgStep" select="1" /><!--Nr. der Abstufung-->
|
|
|
|
<xsl:param name="barColorSeriesFgSteps" select="10" /><!--Anzahl Abstufungen-->
|
|
|
|
<xsl:variable name="barWidth">
|
|
|
|
<xsl:value-of select="$maxwidth * ($barValue div $barMaxValue)"/>
|
|
|
|
</xsl:variable>
|
|
|
|
<xsl:variable name="barColorFg">
|
|
|
|
<xsl:call-template name="getBarColorSeries" >
|
|
|
|
<xsl:with-param name="color_start" select="$barColorSeriesFgStart"/>
|
|
|
|
<xsl:with-param name="color_end" select="$barColorSeriesFgEnd"/>
|
|
|
|
<xsl:with-param name="steps" select="$barColorSeriesFgSteps"/>
|
|
|
|
<xsl:with-param name="step" select="$barColorSeriesFgStep"/>
|
|
|
|
</xsl:call-template>
|
|
|
|
</xsl:variable>
|
|
|
|
<!--<p><xsl:value-of select="concat($maxwidth,'-',$barValue,'-',$barMaxValue)"/></p>-->
|
|
|
|
<svg:rect class="{$barClass}"
|
|
|
|
width="{$barWidth}" height="{$barHeight}"
|
|
|
|
x="{$x}" y="{$y}"
|
|
|
|
rx="5" ry="5" fill="{$barColorFg}">
|
|
|
|
<svg:title><xsl:value-of select="format-number($barLabel,'###.###.###.###.##0','German')"/></svg:title></svg:rect>
|
|
|
|
<xsl:if test="$showLabel='true' and $barWidth > 5 and $barLabel !=''">
|
|
|
|
<svg:text x="{$x + ($barWidth div 2)}" y="{$barHeight div 2}" class="{$barLabelClass}"
|
|
|
|
dominant-baseline="middle" text-anchor="middle">
|
|
|
|
<xsl:value-of select="format-number($barLabel,'###.###.###.###.##0,00','German')"/></svg:text>
|
|
|
|
</xsl:if>
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<xsl:template name="getBarColorSeries" >
|
|
|
|
<xsl:param name="color_start" select="'0,0,139'"/>
|
|
|
|
<xsl:param name="color_end" select="'173,216,230'"/>
|
|
|
|
<xsl:param name="steps" select="10"/>
|
|
|
|
<xsl:param name="step" select="1"/>
|
|
|
|
<xsl:variable name="startR" select="number(substring-before($color_start,','))" />
|
|
|
|
<xsl:variable name="startGB" select="substring-after($color_start,',')" />
|
|
|
|
<xsl:variable name="startG" select="number(substring-before($startGB,','))" />
|
|
|
|
<xsl:variable name="startB" select="number(substring-after($startGB,','))" />
|
|
|
|
|
|
|
|
<xsl:variable name="endR" select="number(substring-before($color_end,','))" />
|
|
|
|
<xsl:variable name="endGB" select="substring-after($color_end,',')" />
|
|
|
|
<xsl:variable name="endG" select="number(substring-before($endGB,','))" />
|
|
|
|
<xsl:variable name="endB" select="number(substring-after($endGB,','))" />
|
|
|
|
|
|
|
|
<!-- Berechnung der Farbschritte -->
|
|
|
|
<xsl:variable name="rStep" select="($endR - $startR) div $steps"/>
|
|
|
|
<xsl:variable name="gStep" select="($endG - $startG) div $steps"/>
|
|
|
|
<xsl:variable name="bStep" select="($endB - $startB) div $steps"/>
|
|
|
|
|
|
|
|
|
|
|
|
<xsl:for-each select="0 to $steps">
|
|
|
|
<xsl:variable name="i" select="."/>
|
|
|
|
<xsl:if test="$i=$step">
|
|
|
|
<xsl:variable name="currentR" select="round($startR + $rStep * $i)"/>
|
|
|
|
<xsl:variable name="currentG" select="round($startG + $gStep * $i)"/>
|
|
|
|
<xsl:variable name="currentB" select="round($startB + $bStep * $i)"/>
|
|
|
|
<xsl:value-of select="concat('rgb(',$currentR,',',$currentG,',',$currentB,')')"/>
|
|
|
|
</xsl:if>
|
|
|
|
</xsl:for-each>
|
|
|
|
</xsl:template>
|
|
|
|
<xsl:template name="countDelims" >
|
|
|
|
<xsl:param name="s1" />
|
|
|
|
<xsl:param name="nr" select="0"/>
|
|
|
|
<xsl:param name="delim" select="','"/>
|
|
|
|
<xsl:choose>
|
|
|
|
<xsl:when test="$s1 = '' or not(contains($s1,$delim))">
|
|
|
|
<xsl:value-of select="$nr"/>
|
|
|
|
</xsl:when>
|
|
|
|
<xsl:otherwise>
|
|
|
|
<!-- Recursive call: increment length and process the rest of the string -->
|
|
|
|
<xsl:call-template name="countDelims">
|
|
|
|
<xsl:with-param name="s1" select="substring-after($s1,$delim)"/>
|
|
|
|
<xsl:with-param name="nr" select="$nr + 1"/>
|
|
|
|
<xsl:with-param name="delim" select="$delim"/>
|
|
|
|
</xsl:call-template>
|
|
|
|
</xsl:otherwise>
|
|
|
|
</xsl:choose>
|
|
|
|
</xsl:template>
|
|
|
|
</xsl:stylesheet>
|