diff --git a/src/main/webapp/index.jsp b/src/main/webapp/index.jsp index 4d4f71665a8c721804f17fafbe80a0846bba67a1..6a6619529ac9d4e73dc05ca325830a3827b7f1b6 100644 --- a/src/main/webapp/index.jsp +++ b/src/main/webapp/index.jsp @@ -1,19 +1,36 @@ <%@ page info="index" contentType="text/html; charset=utf-8" pageEncoding="utf-8" session="false" %> -<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> - -<c:set var="contextroot" value="${pageContext.request.contextPath}" /> -<c:set var="hostpath" value="http://${pageContext.request.serverName}:${pageContext.request.serverPort}${contextroot}" /> -<c:if test="${pageContext.request.serverPort == 80 }"> - <c:set var="hostpath" value="http://${pageContext.request.serverName}${contextroot}" /> -</c:if> -<c:if test="${!empty encoded}"> - <c:set var="imgurl" value="${hostpath}/img/${encoded}" /> - <c:set var="svgurl" value="${hostpath}/svg/${encoded}" /> - <c:set var="txturl" value="${hostpath}/txt/${encoded}" /> - <c:if test="${!empty mapneeded}"> - <c:set var="mapurl" value="${hostpath}/map/${encoded}" /> - </c:if> -</c:if> +<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %> + +<% + long date0 = System.currentTimeMillis(); +String token = net.sourceforge.plantuml.pstat.Stats.getInstance().getNewToken(date0); + +String contextRoot = request.getContextPath(); +String host = "http://" + request.getServerName() + ":" + request.getServerPort(); +String encoded = ""; +String umltext = ""; +String imgurl = ""; +String svgurl = ""; +String txturl = ""; +String mapurl = ""; +Object mapNeeded = request.getAttribute("net.sourceforge.plantuml.servlet.mapneeded"); +Object encodedAttribute = request.getAttribute("net.sourceforge.plantuml.servlet.encoded"); +if (encodedAttribute != null) { + encoded = encodedAttribute.toString(); + if (!encoded.isEmpty()) { + imgurl = host + contextRoot + "/img/" + encoded; + svgurl = host + contextRoot + "/svg/" + encoded; + txturl = host + contextRoot + "/txt/" + encoded; + if (mapNeeded != null) { + mapurl = host + contextRoot + "/map/" + encoded; + } + } +} +Object decodedAttribute = request.getAttribute("net.sourceforge.plantuml.servlet.decoded"); +if (decodedAttribute != null) { + umltext = decodedAttribute.toString(); +} +%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> @@ -22,58 +39,272 @@ <meta http-equiv="expires" content="0" /> <meta http-equiv="pragma" content="no-cache" /> <meta http-equiv="cache-control" content="no-cache, must-revalidate" /> - <link rel="stylesheet" href="${contextroot}/plantuml.css" type="text/css"/> - <link rel="icon" href="${contextroot}/favicon.ico" type="image/x-icon"/> - <link rel="shortcut icon" href="${contextroot}/favicon.ico" type="image/x-icon"/> + <link rel="stylesheet" href="<%=contextRoot %>/plantuml002.css" type="text/css"/> + <link rel="icon" href="<%=contextRoot %>/favicon.ico" type="image/x-icon"/> + <link rel="shortcut icon" href="<%=contextRoot %>/favicon.ico" type="image/x-icon"/> <title>PlantUMLServer</title> +<!-- page load timer --> +<script type='text/javascript'> +var starttime = new Date().getTime(); +function getXMLHttpRequest() +{ + if (window.XMLHttpRequest) { + return new window.XMLHttpRequest; + } + else { + try { + return new ActiveXObject("MSXML2.XMLHTTP.3.0"); + } + catch(ex) { + return null; + } + } +} + +function wndwidth(){ + var w = 0; + //IE + if(!window.innerWidth){ + if(!(document.documentElement.clientWidth == 0)){ + //strict mode + w = document.documentElement.clientWidth; + } else{ + //quirks mode + w = document.body.clientWidth; + } + } else { + //w3c + w = window.innerWidth; + } + return w +} + +function wndheight(){ + var h = 0; + //IE + if(!window.innerHeight){ + if(!(document.documentElement.clientHeight == 0)){ + //strict mode + h = document.documentElement.clientHeight; + } else{ + //quirks mode + h = document.body.clientHeight; + } + } else { + //w3c + h = window.innerHeight; + } + return h; +} + +</script> +<script type="text/javascript"> + + var _gaq = _gaq || []; + _gaq.push(['_setAccount', 'UA-16629806-2']); + _gaq.push(['_trackPageview']); + + (function() { + var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); + })(); + +</script> </head> <body> <div id="header"> <%-- PAGE TITLE --%> <h1>PlantUML Server</h1> - <p>This application provides a servlet which serves images created by <a href="http://plantuml.sourceforge.net">PlantUML</a>.</p> +<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> +<!-- pstat2 --> +<ins class="adsbygoogle" + style="display:inline-block;width:970px;height:90px" + data-ad-client="ca-pub-5770515425712095" + data-ad-slot="9727170700"></ins> +<script> +(adsbygoogle = window.adsbygoogle || []).push({}); +</script> +<table border=0 cellspacing=0 cellpadding=0> +<tr> +<td width="150"> +<div id="sidesoc1"> +<script type="text/javascript"> +/* <![CDATA[ */ + (function() { + var s = document.createElement('script'), t = document.getElementsByTagName('script')[0]; + s.type = 'text/javascript'; + s.async = true; + s.src = 'http://api.flattr.com/js/0.6/load.js?mode=auto'; + t.parentNode.insertBefore(s, t); + })(); +/* ]]> */</script> +<a class="FlattrButton" style="display:none;" rev="flattr;button:compact;" href="http://plantuml.sourceforge.net/"></a> +</div> + +</td> +<td width="150"> + +<div id="sidesoc2"> +<script src="//platform.linkedin.com/in.js" type="text/javascript"></script> +<script type="IN/Share" data-url="http://plantuml.sourceforge.net" data-counter="right"></script> +</div> + +</td> +<td width="150"> + +<div id="sidesoc3"> +<a href='https://twitter.com/share' class='twitter-share-button' data-lang='en' data-url='http://plantuml.sourceforge.net' + data-text='Trying PlantUML' data-count='horizontal' data-size='medium'></a> +<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src='https://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document,'script','twitter-wjs');</script> +</div> + +</td> +<td width="150"> + +<div id="sidesoc4"> +<div id='fb-root'></div> +<script>(function(d, s, id) { +var js, fjs = d.getElementsByTagName(s)[0]; +if (d.getElementById(id)) return; +js = d.createElement(s); js.id = id; +js.src = '//connect.facebook.net/en_US/all.js#xfbml=1'; +fjs.parentNode.insertBefore(js, fjs); +}(document, 'script', 'facebook-jssdk'));</script> +<div class='fb-like' data-href='http://plantuml.sourceforge.net' data-send='false' data-layout='button_count' data-width='110' data-show-faces='false'></div> +</div> + +</td> +<td width="150"> + +<div id="sidesoc5"> +<div class='g-plusone' data-href='http://plantuml.sourceforge.net' data-size='medium' data-annotation='bubble' ></div> +<script> +(function() { +var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; +po.src = 'https://apis.google.com/js/plusone.js'; +var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); +})(); +</script> +</div> + +</td> +</tr> +</table> + <p>This application provides a servlet which serves images created by <a href="http://plantuml.sourceforge.net">PlantUML</a>.<br> + (Check <a href=log.jsp>detailed site logs here</a>.)</p> </div> <div id="content"> <%-- CONTENT --%> - <form method="post" accept-charset="UTF-8" action="${contextroot}/form"> + <form method="post" accept-charset="UTF-8" action="<%=contextRoot %>/form"> <p> - <textarea name="text" cols="120" rows="10"><c:out value="${decoded}"/></textarea> + <textarea name="text" cols="120" rows="10"><%=umltext %></textarea> <br/> <input type="submit" /> </p> </form> <hr/> You can enter here a previously generated URL: - <form method="post" action="${contextroot}/form"> + <form method="post" action="<%=contextRoot %>/form"> <p> - <input name="url" type="text" size="150" value="${imgurl}" /> + <input name="url" type="text" size="150" value="<%=imgurl %>" /> <br/> <input type="submit"/> </p> </form> - <c:if test="${!empty imgurl}"> - <hr/> - <a href="${svgurl}">View as SVG</a> - <a href="${txturl}">View as ASCII Art</a> - <c:if test="${!empty mapurl}"> - <a href="${mapurl}">View Map Data</a> - </c:if> - <p id="diagram"> - <c:choose> - <c:when test="${!empty mapurl}"> - <img src="${imgurl}" alt="PlantUML diagram" usemap="#umlmap" /> - <map name="umlmap"> - <c:import url="${mapurl}" /> - </map> - </c:when> - <c:otherwise> - <img src="${imgurl}" alt="PlantUML diagram" /> - </c:otherwise> - </c:choose> - </p> - </c:if> + + <% if ( !imgurl.isEmpty()) { %> + <hr/> + <a href="<%=svgurl%>">View as SVG</a> + <a href="<%=txturl%>">View as ASCII Art</a> + <% if (mapNeeded != null) { %> + <a href="<%=mapurl%>">View Map Data</a> + <% } //endif %> + <% if (!encoded.isEmpty()) { %> + <p align=center> + <a href="//www.pinterest.com/pin/create/button/?url=http%3A%2F%2Fplantuml.sourceforge.net%2F&media=http%3A%2F%2Fwww.plantuml.com%2Fplantuml%2Fimg%2F<%=encoded %>&description=PlantUML" + data-pin-do="buttonPin" data-pin-config="none"><img border=0 src="//assets.pinterest.com/images/pidgets/pin_it_button.png" /></a> + </p> + <% } //endif %> +<script> +function doneLoading() { + var loadtime = new Date().getTime(); + var loadduration = loadtime - starttime; + document.getElementById('loadtime2').innerHTML = 'image loaded in '+ loadduration +' ms'; + var r1 = getXMLHttpRequest(); + if (r1 != null) { + r1.open("GET", "/plantuml/sx1?t=<%=token %>&s="+starttime+"&i="+loadtime+"&w="+wndwidth()+"&h="+wndheight(), true); + r1.send(); + } +}; +</script> + <p id="diagram"> + <% if (mapNeeded != null) { %> + <img src="<%=imgurl %>" alt="PlantUML diagram" usemap="#umlmap" onload="doneLoading()" /> + <map name="umlmap"> + <c:import url="<%=mapurl %>" /> + </map> + <% } else { %> + <img src="<%=imgurl %>" alt="PlantUML diagram" onload="doneLoading()" /> + <% } %> + </p> + <% } //endif %> </div> +<div id="side2"> +<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> +<!-- ServletSkyscraper1 --> +<ins class="adsbygoogle" + style="display:inline-block;width:160px;height:600px" + data-ad-client="ca-pub-5770515425712095" + data-ad-slot="9576384701"></ins> +<script> +(adsbygoogle = window.adsbygoogle || []).push({}); +</script> +</div> +<!-- This comment is used by the TestProxy class +@startuml +Bob -> Alice : hello +@enduml +--> +<div id="loading">(<i id="loadtime0"></i> / <i id="loadtime1"></i> / <i id="loadtime2"></i>)</div> <%-- FOOTER --%> <%@ include file="footer.jspf" %> + +<!-- Start of StatCounter Code for Default Guide --> +<script type="text/javascript"> +var sc_project=9301480; +var sc_invisible=1; +var sc_security="6eff847c"; +var scJsHost = (("https:" == document.location.protocol) ? +"https://secure." : "http://www."); +document.write("<sc"+"ript type='text/javascript' src='" + +scJsHost+ +"statcounter.com/counter/counter.js'></"+"script>"); +</script> +<noscript><div class="statcounter"><a title="web analytics" +href="http://statcounter.com/" target="_blank"><img +class="statcounter" +src="http://c.statcounter.com/9301480/0/6eff847c/1/" +alt="web analytics"></a></div></noscript> +<!-- End of StatCounter Code for Default Guide --> + +<!-- page load timer start --> +<script type='text/javascript'> +var endtime = new Date().getTime(); +var endduration = endtime - starttime; +document.getElementById('loadtime1').innerHTML = 'page loaded in '+ endduration +' ms'; +<%long date1 = System.currentTimeMillis()+10; +long duration = date1 - date0; +net.sourceforge.plantuml.pstat.Stats.getInstance().logHtmlCreate(token, date0, date1, encoded, request);%> +document.getElementById('loadtime0').innerHTML = 'Page generated in <%=duration%> ms'; + +var r2 = getXMLHttpRequest(); +if (r2 != null) { + r2.open("GET", "/plantuml/sx1?t=<%=token %>&s="+starttime+"&p="+endtime+"&w="+wndwidth()+"&h="+wndheight() , true); + r2.send(); +} +</script> +<!-- page load timer end --> + </body> </html> diff --git a/src/main/webapp/log.jsp b/src/main/webapp/log.jsp new file mode 100644 index 0000000000000000000000000000000000000000..f6211a7d20d114b7c311fdb82d37c59eac43d0b2 --- /dev/null +++ b/src/main/webapp/log.jsp @@ -0,0 +1,366 @@ +<%@ page info="index" contentType="text/html; charset=utf-8" pageEncoding="utf-8" session="false" %> + +<% +String contextRoot = request.getContextPath(); +%> + +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <meta http-equiv="expires" content="0" /> + <meta http-equiv="pragma" content="no-cache" /> + <meta http-equiv="cache-control" content="no-cache, must-revalidate" /> + <link rel="icon" href="<%=contextRoot %>/favicon.ico" type="image/x-icon"/> + <link rel="shortcut icon" href="<%=contextRoot %>/favicon.ico" type="image/x-icon"/> + <!-- SimpleTabs --> + <link rel="stylesheet" media="screen" type="text/css" href="<%=contextRoot %>/simpletabs.css" /> + <script type="text/javascript" src="<%=contextRoot %>/simpletabs_1.3.packed.js"></script> + <title>PlantUML logs</title> +</head> +<body> +<center><h2>PlantUML site logs</h2> +<p>Back to the <a href=/plantuml>server home page.</a></p> +<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> +<!-- pstat1 --> +<ins class="adsbygoogle" + style="display:inline-block;width:970px;height:90px" + data-ad-client="ca-pub-5770515425712095" + data-ad-slot="1822127509"></ins> +<script> +(adsbygoogle = window.adsbygoogle || []).push({}); +</script> + +<table border=0 cellspacing=0 cellpadding=0> +<tr> +<td width="150"> +<div id="sidesoc1"> +<script type="text/javascript"> +/* <![CDATA[ */ + (function() { + var s = document.createElement('script'), t = document.getElementsByTagName('script')[0]; + s.type = 'text/javascript'; + s.async = true; + s.src = 'http://api.flattr.com/js/0.6/load.js?mode=auto'; + t.parentNode.insertBefore(s, t); + })(); +/* ]]> */</script> +<a class="FlattrButton" style="display:none;" rev="flattr;button:compact;" href="http://plantuml.sourceforge.net/"></a> +</div> + +</td> +<td width="150"> + +<div id="sidesoc2"> +<script src="//platform.linkedin.com/in.js" type="text/javascript"></script> +<script type="IN/Share" data-url="http://plantuml.sourceforge.net" data-counter="right"></script> +</div> + +</td> +<td width="150"> + +<div id="sidesoc3"> +<a href='https://twitter.com/share' class='twitter-share-button' data-lang='en' data-url='http://plantuml.sourceforge.net' + data-text='Trying PlantUML' data-count='horizontal' data-size='medium'></a> +<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src='https://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document,'script','twitter-wjs');</script> +</div> + +</td> +<td width="150"> + +<div id="sidesoc4"> +<div id='fb-root'></div> +<script>(function(d, s, id) { +var js, fjs = d.getElementsByTagName(s)[0]; +if (d.getElementById(id)) return; +js = d.createElement(s); js.id = id; +js.src = '//connect.facebook.net/en_US/all.js#xfbml=1'; +fjs.parentNode.insertBefore(js, fjs); +}(document, 'script', 'facebook-jssdk'));</script> +<div class='fb-like' data-href='http://plantuml.sourceforge.net' data-send='false' data-layout='button_count' data-width='110' data-show-faces='false'></div> +</div> + +</td> +<td width="150"> + +<div id="sidesoc5"> +<div class='g-plusone' data-href='http://plantuml.sourceforge.net' data-size='medium' data-annotation='bubble' ></div> +<script> +(function() { +var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; +po.src = 'https://apis.google.com/js/plusone.js'; +var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); +})(); +</script> +</div> + +</td> +</tr> +</table> + + +</center> +<% +if (net.sourceforge.plantuml.pstat.Stats.USE_STATS) { + net.sourceforge.plantuml.pstat.tick.GraphData gd = net.sourceforge.plantuml.pstat.Stats.getInstance().getGraphData(); +%> + +<div class="simpleTabs"> + <ul class="simpleTabsNavigation"> + <li><a href="#">Last 10 minutes</a></li> + <li><a href="#">Last 60 minutes</a></li> + <li><a href="#">Last 48 hours</a></li> + <li><a href="#">Last 15 days</a></li> + <li><a href="#">Last 24 months</a></li> + </ul> + +<div class="simpleTabsContent"> +<!-- 10 ------------------------ --> + <h3>Diagrams per minutes</h3> + <% gd.hminutes10().getHistogramBuilder().getHistogram(200, 30, 12).printSvg(out); %> + + <table border=0 cellspacing=0 cellpadding=6> + <tr> + <td> + <h3>Image Server Generation</h3> + <% gd.hminutes10().getChartImageGeneration(150).printSvg(out); %> + </td> + <td> + <h3>Diagrams generated</h3> + <% gd.minutes10().getChartType(150).printSvg(out); %> + </td> + </tr> + <tr> + <td> + <h3>Page Load</h3> + <% gd.bminutes10().getChartPageLoad(150).printSvg(out); %> + </td> + <td> + <h3>Image Load</h3> + <% gd.bminutes10().getChartImageLoad(150).printSvg(out); %> + </td> + </tr> + <tr valign=top> + <td valign=top> + <h3>Browser</h3> + <% gd.minutes10().getChartBrowser(150).printSvg(out); %> + </td> + <td valign=top> + <h3>Operation System</h3> + <% gd.minutes10().getChartOperationSystem(150).printSvg(out); %> + </td> + </tr> + <tr valign=top> + <td valign=top> + <h3>Site using image generation</h3> + <% gd.minutes10().getChartIncomming(150).printSvg(out); %> + </td> + </tr> + </table> + + <h3>Country & Language</h3> + <table border=0 cellspacing=0 cellpadding=6 valign=top> + <tr valign=top> + <td valign=top> + <% gd.minutes10().getHistoListCountry(400, 20, 12).printSvg(out); %> + </td> + <td valign=top> + <% gd.minutes10().getChartLanguage(150).printSvg(out); %> + </td> + </tr> + </table> +<!-- 10 ------------------------ --> +</div> + +<div class="simpleTabsContent"> +<!-- 60 ------------------------ --> + <h3>Diagrams per minutes</h3> + <% gd.hminutes60().getHistogramBuilder().getHistogram(200, 18, 12).printSvg(out); %> + + <table border=0 cellspacing=0 cellpadding=6> + <tr> + <td> + <h3>Image Server Generation</h3> + <% gd.hminutes60().getChartImageGeneration(150).printSvg(out); %> + </td> + <td> + <h3>Diagrams generated</h3> + <% gd.minutes60().getChartType(150).printSvg(out); %> + </td> + </tr> + <tr> + <td> + <h3>Page Load</h3> + <% gd.bminutes60().getChartPageLoad(150).printSvg(out); %> + </td> + <td> + <h3>Image Load</h3> + <% gd.bminutes60().getChartImageLoad(150).printSvg(out); %> + </td> + </tr> + <tr valign=top> + <td valign=top> + <h3>Browser</h3> + <% gd.minutes60().getChartBrowser(150).printSvg(out); %> + </td> + <td valign=top> + <h3>Operation System</h3> + <% gd.minutes60().getChartOperationSystem(150).printSvg(out); %> + </td> + </tr> + <tr valign=top> + <td valign=top> + <h3>Site using image generation</h3> + <% gd.minutes60().getChartIncomming(150).printSvg(out); %> + </td> + </tr> + </table> + + <h3>Country & Language</h3> + <table border=0 cellspacing=0 cellpadding=6 valign=top> + <tr valign=top> + <td valign=top> + <% gd.minutes60().getHistoListCountry(400, 20, 12).printSvg(out); %> + </td> + <td valign=top> + <% gd.minutes60().getChartLanguage(150).printSvg(out); %> + </td> + </tr> + </table> +<!-- 60 ------------------------ --> +</div> + +<div class="simpleTabsContent"> +<!-- 48 ------------------------ --> + <h3>Diagrams per hour</h3> + <% gd.hhours48().getHistogramBuilder().getHistogram(200, 22, 12).printSvg(out); %> + + <table border=0 cellspacing=0 cellpadding=6> + <tr> + <td> + <h3>Image Server Generation</h3> + <% gd.hhours48().getChartImageGeneration(150).printSvg(out); %> + </td> + <td> + <h3>Diagrams generated</h3> + <% gd.hours48().getChartType(150).printSvg(out); %> + </td> + </tr> + <tr> + <td> + <h3>Page Load</h3> + <% gd.bhours48().getChartPageLoad(150).printSvg(out); %> + </td> + <td> + <h3>Image Load</h3> + <% gd.bhours48().getChartImageLoad(150).printSvg(out); %> + </td> + </tr> + <tr valign=top> + <td valign=top> + <h3>Browser</h3> + <% gd.hours48().getChartBrowser(150).printSvg(out); %> + </td> + <td valign=top> + <h3>Operation System</h3> + <% gd.hours48().getChartOperationSystem(150).printSvg(out); %> + </td> + </tr> + <tr valign=top> + <td valign=top> + <h3>Site using image generation</h3> + <% gd.hours48().getChartIncomming(150).printSvg(out); %> + </td> + </tr> + </table> + + <h3>Country & Language</h3> + <table border=0 cellspacing=0 cellpadding=6 valign=top> + <tr valign=top> + <td valign=top> + <% gd.hours48().getHistoListCountry(400, 20, 12).printSvg(out); %> + </td> + <td valign=top> + <% gd.hours48().getChartLanguage(150).printSvg(out); %> + </td> + </tr> + </table> +<!-- 48 ------------------------ --> +</div> + +<div class="simpleTabsContent"> +<!-- 15 ------------------------ --> + <h3>Diagrams per day</h3> + <% gd.hdays15().getHistogramBuilder().getHistogram(200, 50, 12).printSvg(out); %> + + <table border=0 cellspacing=0 cellpadding=6> + <tr> + <td> + <h3>Image Server Generation</h3> + <% gd.hdays15().getChartImageGeneration(150).printSvg(out); %> + </td> + <td> + <h3>Diagrams generated</h3> + <% gd.days15().getChartType(150).printSvg(out); %> + </td> + </tr> + <tr> + <td> + <h3>Page Load</h3> + <% gd.bdays15().getChartPageLoad(150).printSvg(out); %> + </td> + <td> + <h3>Image Load</h3> + <% gd.bdays15().getChartImageLoad(150).printSvg(out); %> + </td> + </tr> + <tr valign=top> + <td valign=top> + <h3>Browser</h3> + <% gd.days15().getChartBrowser(150).printSvg(out); %> + </td> + <td valign=top> + <h3>Operation System</h3> + <% gd.days15().getChartOperationSystem(150).printSvg(out); %> + </td> + </tr> + <tr valign=top> + <td valign=top> + <h3>Site using image generation</h3> + <% gd.days15().getChartIncomming(150).printSvg(out); %> + </td> + </tr> + </table> + + <h3>Country & Language</h3> + <table border=0 cellspacing=0 cellpadding=6 valign=top> + <tr valign=top> + <td valign=top> + <% gd.days15().getHistoListCountry(400, 20, 12).printSvg(out); %> + </td> + <td valign=top> + <% gd.days15().getChartLanguage(150).printSvg(out); %> + </td> + </tr> + </table> +<!-- 15 ------------------------ --> +</div> + +<div class="simpleTabsContent"> +<!-- 31 ------------------------ --> + <h3>Diagrams per month</h3> + <% + net.sourceforge.plantuml.pstat.tick.GraphDataLongTerm gdl = net.sourceforge.plantuml.pstat.Stats.getInstance().getGraphDataLongTerm(); + gdl.getHistogramBuilder().getHistogram(400, 40, 12).printSvg(out); + %> +<!-- 31 ------------------------ --> +</div> +</div> + +<% +} +%> + + +</body> +</html> diff --git a/src/main/webapp/memory.jsp b/src/main/webapp/memory.jsp new file mode 100644 index 0000000000000000000000000000000000000000..d5f4f0e819cc33b87789b4ecfecc67eab4fa74ae --- /dev/null +++ b/src/main/webapp/memory.jsp @@ -0,0 +1,31 @@ +<%@ page info="index" contentType="text/html; charset=utf-8" pageEncoding="utf-8" session="false" %> + +<% +String contextRoot = request.getContextPath(); +%> + +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <meta http-equiv="expires" content="0" /> + <meta http-equiv="pragma" content="no-cache" /> + <meta http-equiv="cache-control" content="no-cache, must-revalidate" /> + <link rel="icon" href="<%=contextRoot %>/favicon.ico" type="image/x-icon"/> + <link rel="shortcut icon" href="<%=contextRoot %>/favicon.ico" type="image/x-icon"/> + <!-- SimpleTabs --> + <link rel="stylesheet" media="screen" type="text/css" href="<%=contextRoot %>/simpletabs.css" /> + <script type="text/javascript" src="<%=contextRoot %>/simpletabs_1.3.packed.js"></script> + <title>PlantUML memory</title> +</head> +<body> + +<h3>Memory</h3> +<% net.sourceforge.plantuml.pstat.Stats.getInstance().memories(200, 12, 12).printSvg(out); %> +<p><hr> +<h3>Threads</h3> +<% net.sourceforge.plantuml.pstat.Stats.getInstance().threads(200, 12, 12).printSvg(out); %> + + +</body> +</html> diff --git a/src/main/webapp/plantuml002.css b/src/main/webapp/plantuml002.css new file mode 100644 index 0000000000000000000000000000000000000000..2b065e1bc27d2ff2879cf8763e72bf9fcb45debc --- /dev/null +++ b/src/main/webapp/plantuml002.css @@ -0,0 +1,75 @@ +/****************************** +* PlantUMLServlet style sheet * +******************************/ + +/* Font */ +* { + font-family: arial,helvetica,sans-serif; +} + +/* Header */ +#header { + margin-left: 170px; + margin-right: 5px; + text-align: center; +} + +/* Content */ +#content { + margin-left: 170px; + margin-right: 5px; +} + +/* Form inputs */ +#content textarea, #content input[type=text] { + background-color: #ffc; + font-family: monospace; + width: 100%; +} + +/* XHTML tag */ +#content code { + font-family: 'courier new',courier,monospace; + letter-spacing: -1pt; +} + +/* Diagram */ +#content #diagram { + text-align: center; +} + +#content #diagram img { + border: medium solid green; + padding: 10px; +} + +/* Footer */ +#footer p { + margin-left: 170px; + background-color: #eee; + color: #666; + font-size: 0.7em; + padding: 2px; + text-align: center; +} + +#loading { + margin-left: 170px; + background-color: #eee; + color: #333; + font-size: 0.7em; + padding: 2px; + text-align: center; +} + +#side2 { + position: fixed !important; + position: absolute; /* IE6 reads this */ + height: 600px; + width: 160px; + bottom: 10px; + left: 5px; + padding-top: 0px; + z-index: 1; +} + diff --git a/src/main/webapp/pstat.jsp b/src/main/webapp/pstat.jsp new file mode 100644 index 0000000000000000000000000000000000000000..738ad0b1981d77e478fb34ff3daa15d859bfe8e8 --- /dev/null +++ b/src/main/webapp/pstat.jsp @@ -0,0 +1,286 @@ +<%@ page info="index" contentType="text/html; charset=utf-8" pageEncoding="utf-8" session="false" %> + +<% +String contextRoot = request.getContextPath(); +%> + +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <meta http-equiv="expires" content="0" /> + <meta http-equiv="pragma" content="no-cache" /> + <meta http-equiv="cache-control" content="no-cache, must-revalidate" /> + <link rel="icon" href="<%=contextRoot %>/favicon.ico" type="image/x-icon"/> + <link rel="shortcut icon" href="<%=contextRoot %>/favicon.ico" type="image/x-icon"/> + <!-- SimpleTabs --> + <link rel="stylesheet" media="screen" type="text/css" href="<%=contextRoot %>/simpletabs.css" /> + <script type="text/javascript" src="<%=contextRoot %>/simpletabs_1.3.packed.js"></script> + <title>PlantUML logs</title> +</head> +<body> + +<% +if (net.sourceforge.plantuml.pstat.Stats.USE_STATS) { + net.sourceforge.plantuml.pstat.tick.GraphData gd = net.sourceforge.plantuml.pstat.Stats.getInstance().getGraphData(); +%> + +<div class="simpleTabs"> + <ul class="simpleTabsNavigation"> + <li><a href="#">Last 10 minutes</a></li> + <li><a href="#">Last 60 minutes</a></li> + <li><a href="#">Last 48 hours</a></li> + <li><a href="#">Last 15 days</a></li> + <li><a href="#">Last 24 months</a></li> + </ul> + +<div class="simpleTabsContent"> +<!-- 10 ------------------------ --> + <h3>Diagrams per minutes</h3> + <% gd.hminutes10().getHistogramBuilder().getHistogram(200, 30, 12).printSvg(out); %> + + <table border=0 cellspacing=0 cellpadding=6> + <tr> + <td> + <h3>Image Server Generation</h3> + <% gd.hminutes10().getChartImageGeneration(150).printSvg(out); %> + </td> + <td> + <h3>Diagrams generated</h3> + <% gd.minutes10().getChartType(150).printSvg(out); %> + </td> + </tr> + <tr> + <td> + <h3>Page Load</h3> + <% gd.bminutes10().getChartPageLoad(150).printSvg(out); %> + </td> + <td> + <h3>Image Load</h3> + <% gd.bminutes10().getChartImageLoad(150).printSvg(out); %> + </td> + </tr> + <tr valign=top> + <td valign=top> + <h3>Browser</h3> + <% gd.minutes10().getChartBrowser(150).printSvg(out); %> + </td> + <td valign=top> + <h3>Operation System</h3> + <% gd.minutes10().getChartOperationSystem(150).printSvg(out); %> + </td> + </tr> + <tr valign=top> + <td valign=top> + <h3>Site using image generation</h3> + <% gd.minutes10().getChartIncomming(150).printSvg(out); %> + </td> + </tr> + </table> + + <h3>Country & Language</h3> + <table border=0 cellspacing=0 cellpadding=6 valign=top> + <tr valign=top> + <td valign=top> + <% gd.minutes10().getHistoListCountry(400, 20, 12).printSvg(out); %> + </td> + <td valign=top> + <% gd.minutes10().getChartLanguage(150).printSvg(out); %> + </td> + </tr> + </table> +<!-- 10 ------------------------ --> +</div> + +<div class="simpleTabsContent"> +<!-- 60 ------------------------ --> + <h3>Diagrams per minutes</h3> + <% gd.hminutes60().getHistogramBuilder().getHistogram(200, 18, 12).printSvg(out); %> + + <table border=0 cellspacing=0 cellpadding=6> + <tr> + <td> + <h3>Image Server Generation</h3> + <% gd.hminutes60().getChartImageGeneration(150).printSvg(out); %> + </td> + <td> + <h3>Diagrams generated</h3> + <% gd.minutes60().getChartType(150).printSvg(out); %> + </td> + </tr> + <tr> + <td> + <h3>Page Load</h3> + <% gd.bminutes60().getChartPageLoad(150).printSvg(out); %> + </td> + <td> + <h3>Image Load</h3> + <% gd.bminutes60().getChartImageLoad(150).printSvg(out); %> + </td> + </tr> + <tr valign=top> + <td valign=top> + <h3>Browser</h3> + <% gd.minutes60().getChartBrowser(150).printSvg(out); %> + </td> + <td valign=top> + <h3>Operation System</h3> + <% gd.minutes60().getChartOperationSystem(150).printSvg(out); %> + </td> + </tr> + <tr valign=top> + <td valign=top> + <h3>Site using image generation</h3> + <% gd.minutes60().getChartIncomming(150).printSvg(out); %> + </td> + </tr> + </table> + + <h3>Country & Language</h3> + <table border=0 cellspacing=0 cellpadding=6 valign=top> + <tr valign=top> + <td valign=top> + <% gd.minutes60().getHistoListCountry(400, 20, 12).printSvg(out); %> + </td> + <td valign=top> + <% gd.minutes60().getChartLanguage(150).printSvg(out); %> + </td> + </tr> + </table> +<!-- 60 ------------------------ --> +</div> + +<div class="simpleTabsContent"> +<!-- 48 ------------------------ --> + <h3>Diagrams per hour</h3> + <% gd.hhours48().getHistogramBuilder().getHistogram(200, 22, 12).printSvg(out); %> + + <table border=0 cellspacing=0 cellpadding=6> + <tr> + <td> + <h3>Image Server Generation</h3> + <% gd.hhours48().getChartImageGeneration(150).printSvg(out); %> + </td> + <td> + <h3>Diagrams generated</h3> + <% gd.hours48().getChartType(150).printSvg(out); %> + </td> + </tr> + <tr> + <td> + <h3>Page Load</h3> + <% gd.bhours48().getChartPageLoad(150).printSvg(out); %> + </td> + <td> + <h3>Image Load</h3> + <% gd.bhours48().getChartImageLoad(150).printSvg(out); %> + </td> + </tr> + <tr valign=top> + <td valign=top> + <h3>Browser</h3> + <% gd.hours48().getChartBrowser(150).printSvg(out); %> + </td> + <td valign=top> + <h3>Operation System</h3> + <% gd.hours48().getChartOperationSystem(150).printSvg(out); %> + </td> + </tr> + <tr valign=top> + <td valign=top> + <h3>Site using image generation</h3> + <% gd.hours48().getChartIncomming(150).printSvg(out); %> + </td> + </tr> + </table> + + <h3>Country & Language</h3> + <table border=0 cellspacing=0 cellpadding=6 valign=top> + <tr valign=top> + <td valign=top> + <% gd.hours48().getHistoListCountry(400, 20, 12).printSvg(out); %> + </td> + <td valign=top> + <% gd.hours48().getChartLanguage(150).printSvg(out); %> + </td> + </tr> + </table> +<!-- 48 ------------------------ --> +</div> + +<div class="simpleTabsContent"> +<!-- 15 ------------------------ --> + <h3>Diagrams per day</h3> + <% gd.hdays15().getHistogramBuilder().getHistogram(200, 50, 12).printSvg(out); %> + + <table border=0 cellspacing=0 cellpadding=6> + <tr> + <td> + <h3>Image Server Generation</h3> + <% gd.hdays15().getChartImageGeneration(150).printSvg(out); %> + </td> + <td> + <h3>Diagrams generated</h3> + <% gd.days15().getChartType(150).printSvg(out); %> + </td> + </tr> + <tr> + <td> + <h3>Page Load</h3> + <% gd.bdays15().getChartPageLoad(150).printSvg(out); %> + </td> + <td> + <h3>Image Load</h3> + <% gd.bdays15().getChartImageLoad(150).printSvg(out); %> + </td> + </tr> + <tr valign=top> + <td valign=top> + <h3>Browser</h3> + <% gd.days15().getChartBrowser(150).printSvg(out); %> + </td> + <td valign=top> + <h3>Operation System</h3> + <% gd.days15().getChartOperationSystem(150).printSvg(out); %> + </td> + </tr> + <tr valign=top> + <td valign=top> + <h3>Site using image generation</h3> + <% gd.days15().getChartIncomming(150).printSvg(out); %> + </td> + </tr> + </table> + + <h3>Country & Language</h3> + <table border=0 cellspacing=0 cellpadding=6 valign=top> + <tr valign=top> + <td valign=top> + <% gd.days15().getHistoListCountry(400, 20, 12).printSvg(out); %> + </td> + <td valign=top> + <% gd.days15().getChartLanguage(150).printSvg(out); %> + </td> + </tr> + </table> +<!-- 15 ------------------------ --> +</div> + +<div class="simpleTabsContent"> +<!-- 31 ------------------------ --> + <h3>Diagrams per month</h3> + <% + net.sourceforge.plantuml.pstat.tick.GraphDataLongTerm gdl = net.sourceforge.plantuml.pstat.Stats.getInstance().getGraphDataLongTerm(); + gdl.getHistogramBuilder().getHistogram(400, 40, 12).printSvg(out); + %> +<!-- 31 ------------------------ --> +</div> +</div> + +<% +} +%> + + +</body> +</html> diff --git a/src/main/webapp/simpletabs.css b/src/main/webapp/simpletabs.css new file mode 100644 index 0000000000000000000000000000000000000000..bf8fc7e45b50a292c72609d31862d705d00fc5d6 --- /dev/null +++ b/src/main/webapp/simpletabs.css @@ -0,0 +1,16 @@ +/** + * @version 1.3 + * @package SimpleTabs + * @author Fotis Evangelou - http://nuevvo.com/labs/simpletabs + * @copyright Copyright (c) 2009-2011 Fotis Evangelou / Nuevvo Webware Ltd. All rights reserved. + * @license GNU/GPL license: http://www.gnu.org/copyleft/gpl.html + */ + +div.simpleTabs { padding:10px; } +ul.simpleTabsNavigation { margin:0 10px; padding:0; text-align:left; } +ul.simpleTabsNavigation li { list-style:none; display:inline; margin:0; padding:0; } +ul.simpleTabsNavigation li a { border:1px solid #E0E0E0; padding:3px 6px; background:#F0F0F0; font-size:14px; text-decoration:none; font-family:Georgia, "Times New Roman", Times, serif; } +ul.simpleTabsNavigation li a:hover { background-color:#F6F6F6; } +ul.simpleTabsNavigation li a.current { background:#fff; color:#222; border-bottom:1px solid #fff; } +div.simpleTabsContent { border:1px solid #E0E0E0; padding:5px 15px 15px; margin-top:3px; display:none; } +div.simpleTabsContent.currentTab { display:block; } diff --git a/src/main/webapp/simpletabs_1.3.packed.js b/src/main/webapp/simpletabs_1.3.packed.js new file mode 100644 index 0000000000000000000000000000000000000000..9a7436324bfd26f51e832250b40a1e69072e8c3a --- /dev/null +++ b/src/main/webapp/simpletabs_1.3.packed.js @@ -0,0 +1,9 @@ +/** + * @version 1.3 + * @package SimpleTabs + * @author Fotis Evangelou - http://nuevvo.com/labs/simpletabs + * @copyright Copyright (c) 2009-2011 Fotis Evangelou / Nuevvo Webware Ltd. All rights reserved. + * @license GNU/GPL license: http://www.gnu.org/copyleft/gpl.html + */ + +eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('3 4={O:"Z",P:"10",9:"11",w:"12",x:"13",r:"14",Q:o(){5(!s.t)y E;5(!s.F)y E;3 b=s.t("G");u(3 i=0;i<b.7;i++){5(b[i].6==4.O){b[i].H("8",4.r+[i]);3 c=b[i].v("8");3 d=b[i].t("15");u(3 j=0;j<d.7;j++){5(d[j].6==4.P){3 a=d[j].t("a");u(3 k=0;k<a.7;k++){a[k].H("8",c+"I"+k);5(4.z(\'A\')){3 e=4.z(\'A\').J("K");3 f=e[1];3 g=e[2];5(a[k].p.p.p.v("8")==4.r+f){5(a[k].v("8")==4.r+f+"I"+g){a[k].6=4.w}q{a[k].6=""}}q{a[0].6=4.w}}q{a[0].6=4.w}a[k].16=o(){4.R(B,\'A\');y E}}}}3 h=b[i].t("G");3 m=0;u(3 l=0;l<h.7;l++){5(h[l].6==4.9){h[l].H("8",c+"L"+[m]);5(4.z(\'A\')){3 e=4.z(\'A\').J("K");3 f=e[1];3 g=e[2];5(h[l].p.v("8")==4.r+f){5(h[l].v("8")==4.r+f+"L"+g){h[l].6=4.9+" "+4.x}q{h[l].6=4.9}}q{h[0].6=4.9+" "+4.x}}q{h[0].6=4.9+" "+4.x}m++}}}}},R:o(a,b){B.S(b);3 c=a.p.p.p.v("8");3 d=c+"I";3 e=a.v("8").T(d,"");3 f=a.p.p.t("a");u(3 n=0;n<f.7;n++){f[n].6=""}a.6=4.w;3 g=s.F(c).t("G");3 h=M U(4.9);u(3 i=0;i<g.7;i++){5(h.17(g[i].6)){g[i].6=4.9}}s.F(c+"L"+e).6=4.9+" "+4.x;3 j=M U(4.r);3 k=c.T(j,"");B.N(b,\'18\'+k+\'K\'+e,1)},N:o(a,b,c){5(c){3 d=M 19();d.1a(d.1b()+(c*1c*V*V*1d));3 e="; 1e="+d.1f()}q 3 e="";s.W=a+"="+b+e+"; 1g=/"},z:o(a){3 b=a+"=";3 d=s.W.J(\';\');u(3 i=0;i<d.7;i++){3 c=d[i];1h(c.1i(0)==\' \')c=c.X(1,c.7);5(c.1j(b)==0)y c.X(b.7,c.7)}y 1k},S:o(a){B.N(a,"",-1)},Y:o(a){3 b=C.D;5(1l C.D!=\'o\'){C.D=a}q{C.D=o(){5(b){b()}a()}}}};4.Y(4.Q);',62,84,'|||var|kmrSimpleTabs|if|className|length|id|sbContentClass|||||||||||||||function|parentNode|else|sbIdPrefix|document|getElementsByTagName|for|getAttribute|sbCurrentNavClass|sbCurrentTabClass|return|readCookie|simpleTabsCookie|this|window|onload|false|getElementById|div|setAttribute|_a_|split|_|_div_|new|createCookie|sbContainerClass|sbNavClass|init|setCurrent|eraseCookie|replace|RegExp|60|cookie|substring|addLoadEvent|simpleTabs|simpleTabsNavigation|simpleTabsContent|current|currentTab|tabber|ul|onclick|test|simpleTabsCookie_|Date|setTime|getTime|24|1000|expires|toGMTString|path|while|charAt|indexOf|null|typeof'.split('|'),0,{}))