You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-commits@lucene.apache.org by ho...@apache.org on 2008/05/23 00:34:02 UTC
svn commit: r659287 - in /lucene/solr/trunk: CHANGES.txt
example/solr/conf/xslt/luke.xsl
Author: hossman
Date: Thu May 22 15:34:01 2008
New Revision: 659287
URL: http://svn.apache.org/viewvc?rev=659287&view=rev
Log:
SOLR-518: Changed luke.xsl to use divs w/css for generating histograms instead of SVG ... also made some other small cleanup changes to luke.xsl
Modified:
lucene/solr/trunk/CHANGES.txt
lucene/solr/trunk/example/solr/conf/xslt/luke.xsl
Modified: lucene/solr/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/CHANGES.txt?rev=659287&r1=659286&r2=659287&view=diff
==============================================================================
--- lucene/solr/trunk/CHANGES.txt (original)
+++ lucene/solr/trunk/CHANGES.txt Thu May 22 15:34:01 2008
@@ -455,6 +455,9 @@
13. Upgrade to Lucene 2.3.2
+14. SOLR-518: Changed luke.xsl to use div/css for generating histograms instead
+ of SVG (Thomas Peuss via hossman)
+
Build
1. SOLR-411. Changed the names of the Solr JARs to use the defacto standard JAR names based on
project-name-version.jar. This yields, for example:
Modified: lucene/solr/trunk/example/solr/conf/xslt/luke.xsl
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/example/solr/conf/xslt/luke.xsl?rev=659287&r1=659286&r2=659287&view=diff
==============================================================================
--- lucene/solr/trunk/example/solr/conf/xslt/luke.xsl (original)
+++ lucene/solr/trunk/example/solr/conf/xslt/luke.xsl Thu May 22 15:34:01 2008
@@ -20,12 +20,15 @@
<!--
Display the luke request handler with graphs
-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" version="1.0">
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns="http://www.w3.org/1999/xhtml"
+ version="1.0"
+ >
<xsl:output
- method="xml"
+ method="html"
encoding="UTF-8"
- media-type="text/xml; charset=UTF-8"
+ media-type="text/html; charset=UTF-8"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
/>
@@ -35,12 +38,14 @@
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
+ <link rel="stylesheet" type="text/css" href="solr-admin.css"/>
+ <link rel="icon" href="favicon.ico" type="image/ico"/>
+ <link rel="shortcut icon" href="favicon.ico" type="image/ico"/>
<title>
<xsl:value-of select="$title"/>
</title>
- <!-- <xsl:call-template name="svg_ie_workaround"/> -->
<xsl:call-template name="css"/>
- <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8"/>
+
</head>
<body>
<h1>
@@ -56,8 +61,6 @@
<xsl:if test="response/lst[@name='fields']">
<li>
<a href="#fields">Field Statistics</a>
- </li>
- <li>
<ul>
<xsl:for-each select="response/lst[@name='fields']/lst">
<li>
@@ -77,11 +80,11 @@
</ul>
</div>
<xsl:if test="response/lst[@name='index']">
- <h2><a name="index"/>Index statistics</h2>
+ <h2><a name="index"/>Index Statistics</h2>
<xsl:apply-templates select="response/lst[@name='index']"/>
</xsl:if>
<xsl:if test="response/lst[@name='fields']">
- <h2><a name="fields"/>Field statistics</h2>
+ <h2><a name="fields"/>Field Statistics</h2>
<xsl:apply-templates select="response/lst[@name='fields']"/>
</xsl:if>
<xsl:if test="response/lst[@name='doc']">
@@ -125,7 +128,7 @@
<tbody>
<xsl:choose>
<xsl:when
- test="@name='histogram' and not(system-property('xsl:vendor')='Microsoft')">
+ test="@name='histogram'">
<tr>
<td colspan="2">
<xsl:call-template name="histogram"/>
@@ -144,67 +147,61 @@
<xsl:template name="histogram">
<div class="doc">
<xsl:call-template name="barchart">
- <xsl:with-param name="xoffset">5</xsl:with-param>
- <xsl:with-param name="yoffset">5</xsl:with-param>
+ <xsl:with-param name="max_bar_width">50</xsl:with-param>
<xsl:with-param name="iwidth">800</xsl:with-param>
- <xsl:with-param name="iheight">600</xsl:with-param>
+ <xsl:with-param name="iheight">160</xsl:with-param>
<xsl:with-param name="fill">blue</xsl:with-param>
</xsl:call-template>
</div>
</xsl:template>
<xsl:template name="barchart">
- <xsl:param name="xoffset"/>
- <xsl:param name="yoffset"/>
+ <xsl:param name="max_bar_width"/>
<xsl:param name="iwidth"/>
<xsl:param name="iheight"/>
<xsl:param name="fill"/>
- <svg:svg viewBox="0 0 {$iwidth} {$iheight}">
- <xsl:if test="system-property('xsl:vendor')='Opera' or system-property('xsl:vendor')='libxslt'">
- <xsl:attribute name="width"><xsl:value-of select="$iwidth"/></xsl:attribute>
- <xsl:attribute name="height"><xsl:value-of select="$iwidth"/></xsl:attribute>
- </xsl:if>
- <xsl:variable name="x" select="$xoffset + 5"/>
- <xsl:variable name="y" select="$yoffset + 5"/>
- <xsl:variable name="width" select="$iwidth - 10"/>
- <xsl:variable name="height" select="$iheight - 30"/>
- <xsl:variable name="max">
+ <xsl:variable name="max">
+ <xsl:for-each select="int">
+ <xsl:sort data-type="number" order="descending"/>
+ <xsl:if test="position()=1">
+ <xsl:value-of select="."/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:variable name="bars">
+ <xsl:value-of select="count(int)"/>
+ </xsl:variable>
+ <xsl:variable name="bar_width">
+ <xsl:choose>
+ <xsl:when test="$max_bar_width < ($iwidth div $bars)">
+ <xsl:value-of select="$max_bar_width"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$iwidth div $bars"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <table class="histogram">
+ <tbody>
+ <tr>
<xsl:for-each select="int">
- <xsl:sort data-type="number" order="descending"/>
- <xsl:if test="position()=1">
- <xsl:value-of select="."/>
- </xsl:if>
+ <td>
+ <xsl:value-of select="."/>
+ <div class="histogram">
+ <xsl:attribute name="style">background-color: <xsl:value-of select="$fill"/>; width: <xsl:value-of select="$bar_width"/>px; height: <xsl:value-of select="($iheight*number(.)) div $max"/>px;</xsl:attribute>
+ </div>
+ </td>
</xsl:for-each>
- </xsl:variable>
- <xsl:variable name="yRatio" select="$height div $max"/>
- <xsl:variable name="xRatio" select="$width div count(int)"/>
- <svg:g>
+ </tr>
+ <tr>
<xsl:for-each select="int">
- <svg:rect stroke="none" x="{$x + (position() - 1) * $xRatio + 0.1 * $xRatio}"
- y="{($y + $height) - number(.) * $yRatio}" width="{0.8 * $xRatio}"
- height="{number(.) * $yRatio}" fill="{$fill}"/>
- <xsl:variable name="yboost">
- <xsl:choose>
- <xsl:when
- test="($y + $height) - number(.) * $yRatio +40 > $iheight"
- >-25</xsl:when>
- <xsl:otherwise>0</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <svg:text
- x="{$x + (position() - 1) * $xRatio + 0.1 * $xRatio + (($xRatio * 0.8) div 2)}"
- y="{($y + $height) - number(.) * $yRatio +20 + number($yboost)}"
- text-anchor="middle" style="fill: red; font-size: 8px;">
- <xsl:value-of select="."/>
- </svg:text>
- <svg:text
- x="{$x + (position() - 1) * $xRatio + 0.1 * $xRatio + (($xRatio * 0.8) div 2)}"
- y="{$y + $height + 20}" text-anchor="middle" style="fill: black; font-size: 8px;">
- <xsl:value-of select="@name"/>
- </svg:text>
+ <td>
+ <xsl:value-of select="@name"/>
+ </td>
</xsl:for-each>
- </svg:g>
- </svg:svg>
+ </tr>
+ </tbody>
+ </table>
</xsl:template>
<xsl:template name="keyvalue">
@@ -328,23 +325,13 @@
<xsl:template name="css">
<style type="text/css">
<![CDATA[
- body { font-family: "Lucida Grande", sans-serif }
td.name {font-style: italic; font-size:80%; }
- th { font-style: italic; font-size: 80%; background-color: lightgrey; }
- td { vertical-align: top; }
- ul { margin: 0px; margin-left: 1em; padding: 0px; }
- table { width: 100%; border-collapse: collapse; }
- .note { font-size:80%; }
.doc { margin: 0.5em; border: solid grey 1px; }
.exp { display: none; font-family: monospace; white-space: pre; }
+ div.histogram { background: none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;}
+ table.histogram { width: auto; vertical-align: bottom; }
+ table.histogram td, table.histogram th { text-align: center; vertical-align: bottom; border-bottom: 1px solid #ff9933; width: auto; }
]]>
</style>
</xsl:template>
- <xsl:template name="svg_ie_workaround">
- <xsl:if test="system-property('xsl:vendor')='Microsoft'">
- <object id="AdobeSVG" classid="clsid:78156a80-c6a1-4bbf-8e6a-3cd390eeb4e2"/>
- <xsl:processing-instruction name="import">namespace="svg"
- implementation="#AdobeSVG"</xsl:processing-instruction>
- </xsl:if>
- </xsl:template>
</xsl:stylesheet>