diff gnv/src/main/webapp/WEB-INF/config/templates/describe-ui.xsl @ 413:0ce07c6e132c

Refactored xsl sheet for ui's dynamic part: Removed local-name() method, put 'group' items into a table to be well aligned and set the size of multi select boxes to max 5 items or less. gnv/trunk@621 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Mon, 25 Jan 2010 14:53:38 +0000
parents d812c5b62eb4
children 59c6c7b62e43
line wrap: on
line diff
--- a/gnv/src/main/webapp/WEB-INF/config/templates/describe-ui.xsl	Fri Jan 22 17:54:55 2010 +0000
+++ b/gnv/src/main/webapp/WEB-INF/config/templates/describe-ui.xsl	Mon Jan 25 14:53:38 2010 +0000
@@ -3,44 +3,77 @@
                 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
                 xmlns="http://www.w3.org/2002/xforms" 
                 xmlns:xform="http://www.w3.org/2002/xforms" 
-                xmlns:art="http://www.intevation.de/2009/artifacts">
-    <xsl:output method="html" version="1.0" encoding="UTF-8" omit-xml-declaration="no"/>
-    
-    <xsl:template match="*[local-name() = 'select']">
-        <xsl:variable name="selectName" select="@ref"/>
-	                <legend><xsl:value-of select="*[local-name() = 'label']"/></legend>
-	                <select name="{$selectName}" multiple="multiple" size="6"> <xsl:apply-templates/></select>
-	                <br/>
-    </xsl:template>
-    <xsl:template match="*[local-name() = 'select1']">
+                xmlns:art="http://www.intevation.de/2009/artifacts"
+                exclude-result-prefixes="xform art">
+
+    <xsl:output
+        method="html" version="1.0" encoding="UTF-8" omit-xml-declaration="no" />
+
+    <!-- single select -->
+    <xsl:template match="xform:select1">
         <xsl:variable name="selectName" select="@ref"/>
-                    <legend><xsl:value-of select="*[local-name() = 'label']"/></legend>
-                    <select name="{$selectName}"> <xsl:apply-templates/></select>
-                    <br/>
-    </xsl:template>
-    <xsl:template match="*[local-name() = 'item']">
-        <xsl:variable name="optionValue" select="*[local-name() = 'value']"/>
+        <legend><xsl:value-of select="xform:label"/></legend>
+        <select name="{$selectName}">
+            <xsl:apply-templates />
+        </select>
+    </xsl:template>
+
+
+    <!-- multi select -->
+    <xsl:template match="xform:select">
+        <xsl:variable name="selectName" select="@ref"/>
+        <xsl:variable name="items" select="count(//xform:item)"/>
+
+        <legend><xsl:value-of select="xform:label"/></legend>
         <xsl:choose>
-           <xsl:when test="@selected = 'true'">
-               <option value="{$optionValue}" selected="selected"><xsl:value-of select="*[local-name() = 'label']"></xsl:value-of></option>
-           </xsl:when>
-           <xsl:otherwise>
-               <option value="{$optionValue}"><xsl:value-of select="*[local-name() = 'label']"></xsl:value-of></option>
-           </xsl:otherwise>
+            <xsl:when test="$items &lt; 5">
+                <select name="{$selectName}" multiple="multiple" size="{$items}">
+                    <xsl:apply-templates/>
+                </select>
+            </xsl:when>
+            <xsl:otherwise>
+                <select name="{$selectName}" multiple="multiple" size="5">
+                    <xsl:apply-templates />
+                </select>
+            </xsl:otherwise>
         </xsl:choose>
     </xsl:template>
-    
-    <xsl:template match="*[local-name() = 'group']">
-        <xsl:variable name="selectName" select="@ref"/>
-                    <legend><xsl:value-of select="*[local-name() = 'label']"/></legend>
-                    <xsl:apply-templates/>
-    </xsl:template>
-    
-    <xsl:template match="*[local-name() = 'input']">
-        <xsl:variable name="inputValue" select="*[local-name() = 'value']"/>
+
+
+    <!-- options for select -->
+    <xsl:template match="xform:item">
+        <xsl:variable name="optionValue" select="xform:value"/>
+        <xsl:choose>
+            <xsl:when test="@selected = 'true'">
+                <option value="{$optionValue}" selected="selected">
+                    <xsl:value-of select="xform:label"/>
+                </option>
+            </xsl:when>
+            <xsl:otherwise>
+                <option value="{$optionValue}">
+                    <xsl:value-of select="xform:label"/>
+                </option>
+            </xsl:otherwise>
+        </xsl:choose>
+    </xsl:template>
+
+
+    <xsl:template match="xform:group">
+        <legend>
+            <xsl:value-of select="xform:label"/>
+        </legend>
+        <table class="dynamic">
+            <xsl:apply-templates/>
+        </table>
+    </xsl:template>
+
+
+    <xsl:template match="xform:input">
+        <xsl:variable name="inputValue" select="xform:value"/>
         <xsl:variable name="inputName" select="@ref"/>
+        <xsl:variable name="label" select="xform:label"/>
         
-        <!-- TODO: Remove this when we have the GIS interface. (slt) -->
+        <!-- TODO: Remove this when we have the GIS interface. (slt) --> 
         <xsl:choose>
             <xsl:when test="$inputName = 'mesh_linestring'">
                 <a href="javascript:copy_demo_wkt_line();"><xsl:text>Beispiel WKT-Linestring einf&#252;gen:</xsl:text></a><br/>
@@ -50,15 +83,22 @@
             </xsl:when>
         </xsl:choose>
 
-        <xsl:choose>
-           <xsl:when test="*[local-name() = 'label']!= ''">
-               <xsl:value-of select="*[local-name() = 'label']"/>: 
-           </xsl:when>
-        </xsl:choose>
+        <tr>
+            <xsl:choose>
+                <xsl:when test="$label != ''">
+                    <td><xsl:value-of select="$label"/>:</td>
+               </xsl:when>
+            </xsl:choose>
 
-        <input type="text" id="{$inputName}" name="{$inputName}" value="{$inputValue}" /><br/> 
+            <td>
+                <input type="text" id="{$inputName}" name="{$inputName}" value="{$inputValue}" /><br/>
+            </td>
+        </tr>
     </xsl:template>
-    
-    <xsl:template match="*[local-name() = 'label']">
+
+
+    <xsl:template match="xform:label">
+        <!-- do nothing here -->
     </xsl:template>
+
 </xsl:stylesheet>

http://dive4elements.wald.intevation.org