Pie chart colours, status prettification

This commit is contained in:
skyanth
2017-06-08 16:01:05 +02:00
parent ad286ffe5a
commit ea8adf6f82
4 changed files with 219 additions and 76 deletions
+13
View File
@@ -1,6 +1,19 @@
RELEASE NOTES RELEASE NOTES
============= =============
June 8th ('I'm seeing the world in shades of orange' edition)
--------
### Pie Chart Improvements
Pie charts can now be filtered on finding `@status`, just like Summary and Recommendation tables. Example: `<generate_piechart pieAttr="type" pieElem="finding" pieHeight="175" status="new unresolved"/>`
Also, for `status` and `threatLevel` pie charts, colours are now tied to severity, so you go from angry orange to reassuring green (in case of status) or from panicky orange to puzzled grey (in case of threatLevel -- grey is 'threatLevel Unknown' :)
### Prettier finding retest status
For findings, the not-at-all-tacky status colours from the previous update have been replaced to the still-not-tacky corresponding pie chart colours, and the status is now properly capitalized throughout the report.
June 7th June 7th
-------- --------
+162 -49
View File
@@ -3,7 +3,7 @@
xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs"
xmlns:fo="http://www.w3.org/1999/XSL/Format" version="2.0" xmlns:fo="http://www.w3.org/1999/XSL/Format" version="2.0"
xmlns:svg="http://www.w3.org/2000/svg" xmlns:math="http://www.w3.org/2005/xpath-functions/math" xmlns:svg="http://www.w3.org/2000/svg" xmlns:math="http://www.w3.org/2005/xpath-functions/math"
extension-element-prefixes="math"> xmlns:my="http://www.radical.sexy" extension-element-prefixes="math my">
<xsl:template match="generate_targets"> <xsl:template match="generate_targets">
<xsl:call-template name="generate_targets_xslt"/> <xsl:call-template name="generate_targets_xslt"/>
@@ -118,6 +118,8 @@
+ (number(findingThreatLevel = 'Low') * 6) + (number(findingThreatLevel = 'Low') * 6)
+ (number(findingThreatLevel = 'Unknown') * 3) + (number(findingThreatLevel = 'Unknown') * 3)
+ (number(findingThreatLevel = 'N/A') * 1)"/> + (number(findingThreatLevel = 'N/A') * 1)"/>
<xsl:variable name="findingThreatLevelClean"
select="translate(findingThreatLevel, '/', '_')"/>
<findingEntry> <findingEntry>
<xsl:attribute name="Ref"> <xsl:attribute name="Ref">
<xsl:value-of select="@Ref"/> <xsl:value-of select="@Ref"/>
@@ -132,7 +134,7 @@
<xsl:if <xsl:if
test="not(preceding-sibling::findingEntry/findingThreatLevel = findingThreatLevel)"> test="not(preceding-sibling::findingEntry/findingThreatLevel = findingThreatLevel)">
<xsl:attribute name="id">summaryTableThreatLevel<xsl:value-of <xsl:attribute name="id">summaryTableThreatLevel<xsl:value-of
select="findingThreatLevel"/></xsl:attribute> select="$findingThreatLevelClean"/></xsl:attribute>
</xsl:if> </xsl:if>
<findingNumber> <findingNumber>
<xsl:value-of select="findingNumber"/> <xsl:value-of select="findingNumber"/>
@@ -218,7 +220,9 @@
</xsl:attribute> </xsl:attribute>
</xsl:if> </xsl:if>
<fo:basic-link color="blue"> <fo:basic-link color="blue">
<xsl:attribute name="internal-destination"><xsl:value-of select="@findingId"/></xsl:attribute> <xsl:attribute name="internal-destination">
<xsl:value-of select="@findingId"/>
</xsl:attribute>
<xsl:value-of select="findingNumber"/> <xsl:value-of select="findingNumber"/>
</fo:basic-link> </fo:basic-link>
</fo:block> </fo:block>
@@ -309,7 +313,9 @@
<fo:table-cell xsl:use-attribute-sets="td"> <fo:table-cell xsl:use-attribute-sets="td">
<fo:block> <fo:block>
<fo:basic-link color="blue"> <fo:basic-link color="blue">
<xsl:attribute name="internal-destination"><xsl:value-of select="@id"/></xsl:attribute> <xsl:attribute name="internal-destination">
<xsl:value-of select="@id"/>
</xsl:attribute>
<xsl:apply-templates select="." mode="number"/> <xsl:apply-templates select="." mode="number"/>
</fo:basic-link> </fo:basic-link>
</fo:block> </fo:block>
@@ -536,6 +542,7 @@
<xsl:with-param name="pieAttr" select="@pieAttr"/> <xsl:with-param name="pieAttr" select="@pieAttr"/>
<xsl:with-param name="pieElem" select="@pieElem"/> <xsl:with-param name="pieElem" select="@pieElem"/>
<xsl:with-param name="pieHeight" select="@pieHeight"/> <xsl:with-param name="pieHeight" select="@pieHeight"/>
<xsl:with-param name="status" select="@status"/>
</xsl:call-template> </xsl:call-template>
</xsl:when> </xsl:when>
<xsl:otherwise> <xsl:otherwise>
@@ -551,22 +558,60 @@
<xsl:param name="pieAttr" select="@pieAttr"/> <xsl:param name="pieAttr" select="@pieAttr"/>
<xsl:param name="pieElem" select="@pieElem"/> <xsl:param name="pieElem" select="@pieElem"/>
<xsl:param name="pieHeight" as="xs:integer" select="@pieHeight"/> <xsl:param name="pieHeight" as="xs:integer" select="@pieHeight"/>
<xsl:variable name="pieTotal" select="count(//*[local-name() = $pieElem])"/> <xsl:param name="status" select="@status"/>
<xsl:variable name="statusSequence" as="item()*">
<xsl:for-each select="$status">
<xsl:for-each select="tokenize(., ' ')">
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="pieTotal">
<xsl:choose>
<xsl:when test="not(@status)">
<xsl:value-of select="count(//*[local-name() = $pieElem])"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of
select="count(//*[local-name() = $pieElem][@status = $statusSequence])"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- Create generic nodeset with values --> <!-- Create generic nodeset with values -->
<xsl:variable name="unsortedPieTable"> <xsl:variable name="unsortedPieTable">
<xsl:for-each-group select="//*[local-name() = $pieElem]" <xsl:choose>
group-by="@*[name() = $pieAttr]"> <xsl:when test="not(@status)">
<pieEntry> <xsl:for-each-group select="//*[local-name() = $pieElem]"
<pieEntryLabel> group-by="@*[name() = $pieAttr]">
<xsl:value-of select="current-grouping-key()"/> <pieEntry>
</pieEntryLabel> <pieEntryLabel>
<pieEntryCount> <xsl:value-of select="current-grouping-key()"/>
<xsl:value-of </pieEntryLabel>
select="count(//*[local-name() = $pieElem][@*[name() = $pieAttr]][@* = current-grouping-key()])" <pieEntryCount>
/> <xsl:value-of
</pieEntryCount> select="count(//*[local-name() = $pieElem][@*[name() = $pieAttr]][@* = current-grouping-key()])"
</pieEntry> />
</xsl:for-each-group> </pieEntryCount>
</pieEntry>
</xsl:for-each-group>
</xsl:when>
<xsl:otherwise>
<xsl:for-each-group
select="//*[local-name() = $pieElem][@status = $statusSequence]"
group-by="@*[name() = $pieAttr]">
<pieEntry>
<pieEntryLabel>
<xsl:value-of select="current-grouping-key()"/>
</pieEntryLabel>
<pieEntryCount>
<xsl:value-of
select="count(//*[local-name() = $pieElem][@*[name() = $pieAttr]][@status = $statusSequence][@* = current-grouping-key()])"
/>
</pieEntryCount>
</pieEntry>
</xsl:for-each-group>
</xsl:otherwise>
</xsl:choose>
</xsl:variable> </xsl:variable>
<xsl:variable name="pieHeightHalf" as="xs:double" select="$pieHeight div 2"/> <xsl:variable name="pieHeightHalf" as="xs:double" select="$pieHeight div 2"/>
<!-- Now we need to sort that pieTable - custom order for threat levels, 'count' descending order for all other types --> <!-- Now we need to sort that pieTable - custom order for threat levels, 'count' descending order for all other types -->
@@ -593,6 +638,24 @@
</pieEntry> </pieEntry>
</xsl:for-each> </xsl:for-each>
</xsl:when> </xsl:when>
<xsl:when test="$pieElem = 'finding' and $pieAttr = 'status'">
<xsl:for-each select="$unsortedPieTable/pieEntry">
<xsl:sort data-type="number" order="descending"
select="
(number(pieEntryLabel = 'new') * 10)
+ (number(pieEntryLabel = 'unresolved') * 9)
+ (number(pieEntryLabel = 'not_retested') * 8)
+ (number(pieEntryLabel = 'resolved') * 7)"/>
<pieEntry>
<pieEntryLabel>
<xsl:value-of select="pieEntryLabel"/>
</pieEntryLabel>
<pieEntryCount>
<xsl:value-of select="pieEntryCount"/>
</pieEntryCount>
</pieEntry>
</xsl:for-each>
</xsl:when>
<xsl:otherwise> <xsl:otherwise>
<xsl:for-each select="$unsortedPieTable/pieEntry"> <xsl:for-each select="$unsortedPieTable/pieEntry">
<xsl:sort data-type="number" order="descending" select="pieEntryCount"/> <xsl:sort data-type="number" order="descending" select="pieEntryCount"/>
@@ -663,6 +726,16 @@
<fo:table-column/> <fo:table-column/>
<fo:table-body> <fo:table-body>
<xsl:for-each select="$pieTable/pieEntry"> <xsl:for-each select="$pieTable/pieEntry">
<xsl:variable name="pieEntryLabelClean"
select="translate(pieEntryLabel, '/', '_')"/>
<xsl:variable name="pieEntryLabel">
<xsl:sequence
select="
string-join(for $x in tokenize(pieEntryLabel, '_')
return
my:titleCase($x), ' ')"
/>
</xsl:variable>
<fo:table-row> <fo:table-row>
<fo:table-cell xsl:use-attribute-sets="td"> <fo:table-cell xsl:use-attribute-sets="td">
<fo:block> <fo:block>
@@ -672,9 +745,9 @@
stroke-linejoin="round" height="11" width="11"> stroke-linejoin="round" height="11" width="11">
<xsl:attribute name="fill"> <xsl:attribute name="fill">
<xsl:call-template name="giveColor"> <xsl:call-template name="giveColor">
<xsl:with-param name="i"> <xsl:with-param name="i" select="position()"/>
<xsl:value-of select="position()"/> <xsl:with-param name="pieEntryLabel"
</xsl:with-param> select="pieEntryLabel"/>
</xsl:call-template> </xsl:call-template>
</xsl:attribute> </xsl:attribute>
</svg:rect> </svg:rect>
@@ -684,7 +757,7 @@
</fo:table-cell> </fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="td"> <fo:table-cell xsl:use-attribute-sets="td">
<fo:block> <fo:block>
<xsl:value-of select="pieEntryLabel"/> <xsl:value-of select="$pieEntryLabel"/>
<xsl:text> (</xsl:text> <xsl:text> (</xsl:text>
<!-- for threatLevel legend, link to finding summary table --> <!-- for threatLevel legend, link to finding summary table -->
<xsl:choose> <xsl:choose>
@@ -692,7 +765,7 @@
<fo:basic-link text-decoration="underline"> <fo:basic-link text-decoration="underline">
<xsl:attribute name="internal-destination" <xsl:attribute name="internal-destination"
>summaryTableThreatLevel<xsl:value-of >summaryTableThreatLevel<xsl:value-of
select="pieEntryLabel"/></xsl:attribute> select="$pieEntryLabelClean"/></xsl:attribute>
<xsl:value-of select="pieEntryCount"/> <xsl:value-of select="pieEntryCount"/>
</fo:basic-link> </fo:basic-link>
</xsl:when> </xsl:when>
@@ -752,9 +825,9 @@
<svg:path stroke="black" stroke-width="1" stroke-linejoin="round"> <svg:path stroke="black" stroke-width="1" stroke-linejoin="round">
<xsl:attribute name="fill"> <xsl:attribute name="fill">
<xsl:call-template name="giveColor"> <xsl:call-template name="giveColor">
<xsl:with-param name="i"> <xsl:with-param name="i" select="$position"/>
<xsl:value-of select="$position"/> <xsl:with-param name="pieEntryLabel"
</xsl:with-param> select="//pieEntry[position() = $position]/pieEntryLabel"/>
</xsl:call-template> </xsl:call-template>
</xsl:attribute> </xsl:attribute>
<xsl:attribute name="d"> <xsl:attribute name="d">
@@ -855,41 +928,81 @@
</xsl:template> </xsl:template>
<xsl:template name="giveColor"> <xsl:template name="giveColor">
<xsl:param name="i"/> <xsl:param name="i"/>
<xsl:param name="pieEntryLabel"/>
<xsl:choose> <xsl:choose>
<xsl:when test="$i = 1">#FF5C00</xsl:when> <!-- specific cases -->
<xsl:when test="$i = 2">#FE9920</xsl:when> <!-- threat level -->
<xsl:when test="$i = 3">#D9D375</xsl:when> <xsl:when test="$pieEntryLabel = 'Extreme'">#CC4900</xsl:when>
<xsl:when test="$i = 4">#B9A44C</xsl:when> <xsl:when test="$pieEntryLabel = 'High'">#FF5C00</xsl:when>
<xsl:when test="$i = 5">#BEC5AD</xsl:when> <xsl:when test="$pieEntryLabel = 'Elevated'">#FE9920</xsl:when>
<xsl:when test="$i = 6">#7CA982</xsl:when> <xsl:when test="$pieEntryLabel = 'Moderate'">#ffbf7f</xsl:when>
<xsl:when test="$i = 7">#566E3D</xsl:when> <xsl:when test="$pieEntryLabel = 'Low'">#ffed7f</xsl:when>
<xsl:when test="$i = 8">#5B5F97</xsl:when> <xsl:when test="$pieEntryLabel = 'N/A'">#FFFFFF</xsl:when>
<xsl:when test="$i = 9">#C200FB</xsl:when> <xsl:when test="$pieEntryLabel = 'Unknown'">#CCCCCC</xsl:when>
<xsl:when test="$i = 10">#A9E5BB</xsl:when> <!-- status -->
<xsl:when test="$i = 11">#98C1D9</xsl:when> <xsl:when test="$pieEntryLabel = 'new'">#CC4900</xsl:when>
<xsl:when test="$i = 12">#5B5F97</xsl:when> <xsl:when test="$pieEntryLabel = 'unresolved'">#FF5C00</xsl:when>
<xsl:when test="$i = 13">burlywood</xsl:when> <xsl:when test="$pieEntryLabel = 'not_retested'">#FE9920</xsl:when>
<xsl:when test="$i = 14">cornflowerblue</xsl:when> <xsl:when test="$pieEntryLabel = 'resolved'">#e5d572</xsl:when>
<xsl:when test="$i = 15">cornsilk</xsl:when> <xsl:otherwise>
<xsl:otherwise>black</xsl:otherwise> <!-- generic pie chart -->
<xsl:choose>
<!-- Going with shades of green and blue in all cases here so as not to imply severity levels -->
<xsl:when test="$i = 1">#D9D375</xsl:when>
<xsl:when test="$i = 2">#B9A44C</xsl:when>
<xsl:when test="$i = 3">#BEC5AD</xsl:when>
<xsl:when test="$i = 4">#7CA982</xsl:when>
<xsl:when test="$i = 5">#566E3D</xsl:when>
<xsl:when test="$i = 6">#5B5F97</xsl:when>
<xsl:when test="$i = 7">#C200FB</xsl:when>
<xsl:when test="$i = 8">#A9E5BB</xsl:when>
<xsl:when test="$i = 9">#98C1D9</xsl:when>
<xsl:when test="$i = 10">#5B5F97</xsl:when>
<xsl:when test="$i = 11">burlywood</xsl:when>
<xsl:when test="$i = 12">cornflowerblue</xsl:when><!-- that's right people, cornflower blue -->
<xsl:when test="$i = 13">cornsilk</xsl:when>
<xsl:otherwise>black</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose> </xsl:choose>
</xsl:template> </xsl:template>
<xsl:template match="generate_average_rate"> <xsl:template match="generate_average_rate">
<xsl:if test="not(//meta//client/rates/rate[@title='juniorpentester']) or not(//meta//client/rates/rate[@title='mediorpentester'])"> <xsl:if
<fo:block xsl:use-attribute-sets="errortext">Generated average rate is based on 'juniorpentester' and 'mediorpentester' roles, which cannot be found in client_info.xml</fo:block> test="not(//meta//client/rates/rate[@title = 'juniorpentester']) or not(//meta//client/rates/rate[@title = 'mediorpentester'])">
<fo:block xsl:use-attribute-sets="errortext">Generated average rate is based on
'juniorpentester' and 'mediorpentester' roles, which cannot be found in
client_info.xml</fo:block>
</xsl:if> </xsl:if>
<xsl:variable name="juniorrate" select="//meta//client/rates/rate[@title='juniorpentester'] * 1"/> <xsl:variable name="juniorrate"
<xsl:variable name="mediorrate" select="//meta//client/rates/rate[@title='mediorpentester'] * 1"/> select="//meta//client/rates/rate[@title = 'juniorpentester'] * 1"/>
<xsl:variable name="mediorrate"
select="//meta//client/rates/rate[@title = 'mediorpentester'] * 1"/>
<xsl:variable name="avg" select="($juniorrate + $mediorrate) div 2"/> <xsl:variable name="avg" select="($juniorrate + $mediorrate) div 2"/>
<xsl:variable name="roundedavg" select="round($avg div 5) * 5"/> <xsl:variable name="roundedavg" select="round($avg div 5) * 5"/>
<xsl:value-of select="$denomination"/> <xsl:call-template name="getDenomination"/>
<xsl:text>&#160;</xsl:text> <xsl:text>&#160;</xsl:text>
<xsl:value-of select="$roundedavg - 10"/> <xsl:value-of select="$roundedavg - 10"/>
<xsl:text> - </xsl:text> <xsl:text> - </xsl:text>
<xsl:value-of select="$denomination"/> <xsl:call-template name="getDenomination"/>
<xsl:text>&#160;</xsl:text> <xsl:text>&#160;</xsl:text>
<xsl:value-of select="$roundedavg + 10"/> <xsl:value-of select="$roundedavg + 10"/>
</xsl:template> </xsl:template>
<xsl:function name="my:titleCase" as="xs:string">
<xsl:param name="s" as="xs:string"/>
<xsl:choose>
<xsl:when test="lower-case($s) = ('and', 'or')">
<xsl:value-of select="lower-case($s)"/>
</xsl:when>
<xsl:when test="$s = upper-case($s)">
<xsl:value-of select="$s"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of
select="concat(upper-case(substring($s, 1, 1)), lower-case(substring($s, 2)))"/>
</xsl:otherwise>
</xsl:choose>
</xsl:function>
</xsl:stylesheet> </xsl:stylesheet>
+40 -23
View File
@@ -1,44 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:my="http://www.radical.sexy" exclude-result-prefixes="xs my"
xmlns:fo="http://www.w3.org/1999/XSL/Format" version="2.0"> xmlns:fo="http://www.w3.org/1999/XSL/Format" version="2.0">
<xsl:template match="finding" mode="meta"> <xsl:template match="finding" mode="meta">
<xsl:variable name="status" select="@status"/> <xsl:variable name="status" select="@status"/>
<fo:table width="100%" table-layout="fixed" xsl:use-attribute-sets="table" margin-bottom="{$large-space}"> <xsl:variable name="prettyStatus">
<xsl:sequence
select="
string-join(for $x in tokenize($status, '_')
return
my:titleCase($x), ' ')"
/>
</xsl:variable>
<fo:table width="100%" table-layout="fixed" xsl:use-attribute-sets="table"
margin-bottom="{$large-space}">
<fo:table-column column-width="proportional-column-width(70)"/> <fo:table-column column-width="proportional-column-width(70)"/>
<fo:table-column column-width="proportional-column-width(30)"/> <fo:table-column column-width="proportional-column-width(30)"/>
<fo:table-body> <fo:table-body>
<fo:table-row> <fo:table-row>
<fo:table-cell xsl:use-attribute-sets="td"> <fo:table-cell xsl:use-attribute-sets="td">
<xsl:if test="not(@status)"><xsl:attribute name="number-columns-spanned">2</xsl:attribute></xsl:if> <xsl:if test="not(@status)">
<xsl:attribute name="number-columns-spanned">2</xsl:attribute>
</xsl:if>
<fo:block xsl:use-attribute-sets="finding-meta"> <fo:block xsl:use-attribute-sets="finding-meta">
<fo:inline xsl:use-attribute-sets="bold">Vulnerability ID: </fo:inline> <fo:inline xsl:use-attribute-sets="bold">Vulnerability ID: </fo:inline>
<xsl:apply-templates select="." mode="number"/> <xsl:apply-templates select="." mode="number"/>
</fo:block> </fo:block>
</fo:table-cell> </fo:table-cell>
<xsl:if test="@status"> <xsl:if test="@status">
<fo:table-cell xsl:use-attribute-sets="td"> <fo:table-cell xsl:use-attribute-sets="td">
<fo:block xsl:use-attribute-sets="finding-meta"> <fo:block xsl:use-attribute-sets="finding-meta">
<fo:inline xsl:use-attribute-sets="bold">Retest status: </fo:inline> <fo:inline xsl:use-attribute-sets="bold">Retest status: </fo:inline>
<xsl:choose> <xsl:choose>
<xsl:when test="@status = 'new' or @status = 'unresolved'"> <xsl:when test="@status = 'new' or @status = 'unresolved'">
<fo:inline xsl:use-attribute-sets="status-new"><xsl:value-of select="@status"/></fo:inline> <fo:inline xsl:use-attribute-sets="status-new">
</xsl:when> <xsl:value-of select="$prettyStatus"/>
<xsl:when test="@status = 'not-retested'"> </fo:inline>
<fo:inline xsl:use-attribute-sets="status-not-retested"><xsl:value-of select="@status"/></fo:inline> </xsl:when>
</xsl:when> <xsl:when test="@status = 'not_retested'">
<xsl:when test="@status = 'resolved'"> <fo:inline xsl:use-attribute-sets="status-not_retested">
<fo:inline xsl:use-attribute-sets="status-resolved"><xsl:value-of select="@status"/></fo:inline> <xsl:value-of select="$prettyStatus"/>
</xsl:when> </fo:inline>
</xsl:choose> </xsl:when>
<xsl:when test="@status = 'resolved'">
</fo:block> <fo:inline xsl:use-attribute-sets="status-resolved">
</fo:table-cell> <xsl:value-of select="$prettyStatus"/>
</xsl:if> </fo:inline>
</xsl:when>
</xsl:choose>
</fo:block>
</fo:table-cell>
</xsl:if>
</fo:table-row> </fo:table-row>
<fo:table-row> <fo:table-row>
<fo:table-cell xsl:use-attribute-sets="td" number-columns-spanned="2"> <fo:table-cell xsl:use-attribute-sets="td" number-columns-spanned="2">
<fo:block xsl:use-attribute-sets="finding-meta"> <fo:block xsl:use-attribute-sets="finding-meta">
<fo:inline xsl:use-attribute-sets="bold">Vulnerability type: </fo:inline> <fo:inline xsl:use-attribute-sets="bold">Vulnerability type: </fo:inline>
<xsl:value-of select="@type"/> <xsl:value-of select="@type"/>
@@ -60,7 +77,7 @@
</xsl:template> </xsl:template>
<!-- ignore summary-table-only elements in the findings --> <!-- ignore summary-table-only elements in the findings -->
+4 -4
View File
@@ -80,13 +80,13 @@
<xsl:attribute-set name="status-new"><!-- also used by unresolved --> <xsl:attribute-set name="status-new"><!-- also used by unresolved -->
<xsl:attribute name="color">red</xsl:attribute> <xsl:attribute name="color">#CC4900</xsl:attribute>
</xsl:attribute-set> </xsl:attribute-set>
<xsl:attribute-set name="status-resolved"> <xsl:attribute-set name="status-resolved">
<xsl:attribute name="color">green</xsl:attribute> <xsl:attribute name="color">#b7aa5b</xsl:attribute>
</xsl:attribute-set> </xsl:attribute-set>
<xsl:attribute-set name="status-not-retested"> <xsl:attribute-set name="status-not_retested">
<xsl:attribute name="color">orange</xsl:attribute> <xsl:attribute name="color">#FE9920</xsl:attribute>
</xsl:attribute-set> </xsl:attribute-set>