java/nekurak.net-web/web/WEB-INF/tags/nekurak/hlasovani.tag
author František Kučera <franta-hg@frantovo.cz>
Wed Apr 28 00:04:13 2010 +0200 (2010-04-28)
changeset 112 b139d35b4faf
parent 111 401cc563a0c1
child 113 55af119b8c2b
permissions -rw-r--r--
Validní SVG ~ hlasovani-svg.jsp
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
     3 	  xmlns:c="http://java.sun.com/jsp/jstl/core"
     4 	  xmlns:fmt="http://java.sun.com/jsp/jstl/fmt"
     5 	  xmlns:fn="http://java.sun.com/jsp/jstl/functions"
     6 	  xmlns:svg="http://www.w3.org/2000/svg"
     7 	  xmlns:xlink="http://www.w3.org/1999/xlink"
     8 	  version="2.0">
     9 
    10     <jsp:directive.attribute name="podnik" type="java.lang.Integer" required="true" description="ID podniku"/>
    11     <jsp:directive.attribute name="hlasuAno" type="java.lang.Integer" required="false" description="počet hlasů pro ano – aby se tu kouřilo"/>
    12     <jsp:directive.attribute name="hlasuNe" type="java.lang.Integer" required="false" description="počet hlasů pro ne – aby se tu nekouřilo"/>
    13     <jsp:directive.attribute name="svgUvnitrXhtml" type="java.lang.Boolean" required="false" description="true = SVG vložené přímo do XHTML (XML) | false = SVG jako externí obrázek – &lt;img src='…'/&gt;"/>
    14 
    15     <!-- výchozí hodnota -->
    16     <c:if test="${svgUvnitrXhtml == null}">
    17 	<c:set var="svgUvnitrXhtml" value="${true}"/>
    18     </c:if>
    19 
    20     <!-- hodnoty nejsou uvedeny → načteme si je -->
    21     <c:if test="${hlasuAno == null || hlasuNe == null || (hlasuAno == 0 &amp;&amp; hlasuNe == 0)}">
    22 	<jsp:useBean id="hlasovani" class="cz.frantovo.nekurak.web.Hlasovani" scope="request"/>
    23 	<jsp:setProperty name="hlasovani" property="podnik" value="${podnik}"/>
    24 	<c:set var="hlasuAno" value="${hlasovani.vysledek.hlasuAno}"/>
    25 	<c:set var="hlasuNe" value="${hlasovani.vysledek.hlasuNe}"/>
    26     </c:if>
    27 
    28     <c:choose>
    29 	<c:when test="${svgUvnitrXhtml}">
    30 	    <svg version="1.1"
    31 		 baseProfile="full"
    32 		 xmlns="http://www.w3.org/2000/svg"
    33 		 xmlns:xlink="http://www.w3.org/1999/xlink"
    34 		 width="200" height="200">
    35 
    36 
    37 		<style type="text/css">
    38 		    rect.ne {
    39 			fill:  url(#ne_prechod);
    40 			stroke: black;
    41 		    }
    42 		    rect.ano {
    43 			fill: url(#ano_prechod);
    44 			stroke: black;
    45 		    }
    46 
    47 		    a:hover rect.ano, a:hover rect.ne {
    48 			fill: url(#zvyrazneny_prechod);
    49 		    }
    50 
    51 		    a:hover text {
    52 			fill: green;
    53 		    }
    54 
    55 		    line.ramecek {
    56 			stroke: black;
    57 			stroke-width: 2;
    58 		    }
    59 
    60 
    61 		    rect.pozadi {
    62 			fill: url(#pozadi_prechod);
    63 		    }
    64 
    65 		    text {
    66 			font-size: 12px;
    67 			font-family: Sans;
    68 		    }
    69 
    70 		</style>
    71 
    72 		<!-- pozadí – přechod -->
    73 		<defs>
    74 		    <linearGradient id="pozadi_prechod" x1="0%" y1="0%" x2="100%" y2="100%">
    75 			<stop offset="20%" style="stop-color:rgb(245,245,255); stop-opacity:0.5"/>
    76 			<stop offset="100%" style="stop-color:silver; stop-opacity:0.8"/>
    77 		    </linearGradient>
    78 		</defs>
    79 
    80 		<!-- nekuřácký graf – přechod -->
    81 		<defs>
    82 		    <linearGradient id="ne_prechod" x1="0%" y1="0%" x2="100%" y2="100%">
    83 			<stop offset="0%" style="stop-color:white; stop-opacity:1"/>
    84 			<stop offset="100%" style="stop-color:blue; stop-opacity:1"/>
    85 		    </linearGradient>
    86 		</defs>
    87 
    88 		<!-- zvýrazněný graf – přechod -->
    89 		<defs>
    90 		    <linearGradient id="zvyrazneny_prechod" x1="0%" y1="0%" x2="100%" y2="100%">
    91 			<stop offset="0%" style="stop-color:white; stop-opacity:1"/>
    92 			<stop offset="100%" style="stop-color:green; stop-opacity:1"/>
    93 		    </linearGradient>
    94 		</defs>
    95 
    96 		<!-- kuřácký graf – přechod -->
    97 		<defs>
    98 		    <linearGradient id="ano_prechod" x1="0%" y1="0%" x2="100%" y2="100%">
    99 			<stop offset="0%" style="stop-color:white; stop-opacity:1"/>
   100 			<stop offset="100%" style="stop-color:red; stop-opacity:1"/>
   101 		    </linearGradient>
   102 		</defs>
   103 
   104 		<!-- pozadí a linka -->
   105 		<rect x="0" y="0" width="200" height="200" class="pozadi"/>
   106 		<line x1="10" y1="180" x2="190" y2="180" class="ramecek"/>
   107 
   108 		<!-- nadpis grafu -->
   109 		<text x="60" y="20"><fmt:message key="hlasovani.graf.nadpis"/>:</text>
   110 
   111 		<!-- žádné hlasy -->
   112 		<c:if test="${hlasuAno == 0 &amp;&amp; hlasuNe == 0}">
   113 		    <text x="30" y="100"><fmt:message key="hlasovani.graf.zadneHlasy"/></text>
   114 		</c:if>
   115 
   116 		<!-- vypočteme si výšky sloupců grafu -->
   117 		<c:set var="hlasuNeVyska" value="${150*hlasuNe/(hlasuAno+hlasuNe)}"/>
   118 		<c:set var="hlasuAnoVyska" value="${150*hlasuAno/(hlasuAno+hlasuNe)}"/>
   119 
   120 		<!-- nekuřáci -->
   121 		<fmt:message key="hlasovani.graf.popisSloupce" var="hlasuNeLokalizace">
   122 		    <fmt:param value="${hlasuNe}"/>
   123 		</fmt:message>
   124 		<a xlink:href="javascript:hlasovani.hlasuj(${podnik}, false);" xlink:title="${hlasuNeLokalizace}">
   125 		    <text x="30" y="195" class="ne"><fmt:message key="hlasovani.graf.nekourit"/></text>
   126 		    <rect x="30" y="${180 - hlasuNeVyska}" width="50" height="${hlasuNeVyska}" class="ne"/>
   127 		</a>
   128 
   129 		<!-- kuřáci -->
   130 		<fmt:message key="hlasovani.graf.popisSloupce" var="hlasuAnoLokalizace">
   131 		    <fmt:param value="${hlasuAno}"/>
   132 		</fmt:message>
   133 		<a xlink:href="javascript:hlasovani.hlasuj(${podnik}, true);" xlink:title="${hlasuAnoLokalizace}">
   134 		    <text x="130" y="195" class="ano"><fmt:message key="hlasovani.graf.kourit"/></text>
   135 		    <rect x="120" y="${180 - hlasuAnoVyska}" width="50" height="${hlasuAnoVyska}" class="ano"/>
   136 		</a>
   137 	    </svg>
   138 	</c:when>
   139 	<c:otherwise>
   140 	    <object data="hlasovani-svg.jsp?podnik=${podnik}&amp;amp;hlasuAno=${hlasuAno}&amp;amp;hlasuNe=${hlasuNe}" type="image/svg+xml"/>
   141 	</c:otherwise>
   142     </c:choose>
   143 
   144 </jsp:root>