📄 stats-reporter.jsp
字号:
<%@ page import="org.jivesoftware.openfire.reporting.stats.StatsViewer" %><%@ page import="org.jivesoftware.util.CookieUtils" %><%@ page import="org.jivesoftware.util.JiveGlobals"%><%@ page import="org.jivesoftware.util.ParamUtils"%><%@ page import="org.jivesoftware.openfire.stats.Statistic"%><%@ page import="javax.servlet.http.Cookie"%><%@ page import="java.util.Arrays"%><%@ page import="java.util.Collections"%><%@ page import="java.util.Comparator"%><%@ page import="java.util.List"%><%@ page import="org.jivesoftware.openfire.plugin.MonitoringPlugin" %><%@ page import="org.jivesoftware.openfire.XMPPServer" %><%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %><%@ taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="fmt" %><% List<String> statList = Arrays.asList(getStatsViewer().getAllHighLevelStatKeys()); Collections.sort(statList, statisticComporator); String dateRangeType = ParamUtils.getParameter(request,"dateRangeType"); String dateRangePreset = ParamUtils.getParameter(request,"dateRangePreset"); String fromDateParam = ParamUtils.getParameter(request,"fromDate"); String toDateParam = ParamUtils.getParameter(request,"toDate"); String timePeriod = "last60minutes"; Cookie timePeriodCookie = CookieUtils.getCookie(request, COOKIE_TIMEPERIOD); if (timePeriodCookie != null) { String cookieValue = timePeriodCookie.getValue(); if (cookieValue.startsWith("this") || cookieValue.startsWith("last")) { dateRangeType = "preset"; dateRangePreset = cookieValue; } else { String[] dates = cookieValue.split("to"); dateRangeType = "specific"; if (dates.length == 2) { fromDateParam = dates[0]; toDateParam = dates[1]; } } timePeriod = cookieValue; } // Set parameter defaults if (dateRangeType == null) { dateRangeType = "preset"; }%><fmt:setLocale value="<%= JiveGlobals.getLocale().getLanguage() %>"/><html><head> <title><fmt:message key="allreports.title" /></title> <meta name="pageID" content="stats-reporter"/> <script src="/js/prototype.js" type="text/javascript"></script> <script src="/js/effects.js" type="text/javascript"></script> <script src="/js/scriptaculous.js" type="text/javascript"></script> <style type="text/css"> .dateerror { font-weight: bold; color:red;} .dateerrorinput {background-color:red}; .datenormal { font-weight: normal; color:black;} </style> <style type="text/css">@import url( /js/jscalendar/calendar-win2k-cold-1.css );</style> <script type="text/javascript" src="/js/jscalendar/calendar.js"></script> <script type="text/javascript" src="/js/jscalendar/i18n.jsp"></script> <script type="text/javascript" src="/js/jscalendar/calendar-setup.js"></script> <script type="text/javascript"> var datesAreValid = true; var stats = {}; <% for (String statKey : statList) { %><% Statistic stat = getStatsViewer().getStatistic(statKey)[0]; %> stats["<%= statKey %>"] = {"name":"<%= stat.getName() %>","description":"<%= stat.getDescription() %>"}; <% } %> var currentStat = '<%= STAT_DEFAULT %>'; var currentTimePeriod = '<%= timePeriod %>'; function viewStat(stat) { timePeriod = ''; timePeriodName = ''; if ($('drt01').checked == true) { // get a preset value drselect = $('dateRangePreset'); timePeriod = drselect[drselect.selectedIndex].value; timePeriodName = drselect[drselect.selectedIndex].text; datesAreValid = true; } else { // get a date range validateStartAndEndDate(); if (datesAreValid) { timePeriod = $('fromDate').value + 'to' + $('toDate').value; timePeriodName = $('fromDate').value + ' to ' + $('toDate').value; } else { return; } } if (datesAreValid && (stat != currentStat || timePeriod != currentTimePeriod)) { var viewElement = $('viewer'); var pdfViewElement = $('pdfviewer'); var pdfViewAllElement = $('pdfviewerall'); viewElement.style.display = "none"; var i = new Image(); i.onload = function() { viewElement.src = i.src; pdfViewElement.href = i.src + "&pdf=true"; pdfViewAllElement.href = i.src + "&pdf=all"; $('graph-header').innerHTML = stats[stat].name + ': ' + timePeriodName; $('graph-description').innerHTML = '<b>' + stats[stat].name + '</b><br /><br />' + stats[stat].description; Effect.Appear('viewer'); currentStat = stat; currentTimePeriod = timePeriod; createCookie("<%= COOKIE_TIMEPERIOD %>",currentTimePeriod,1000); } var d = new Date(); var t = d.getTime() i.src = "graph?stat=" + stat + "&date=" + t + '&timeperiod=' + timePeriod + '&width=500&height=250'; } } function createCookie(name,value,days) { if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else { var expires = ""; } document.cookie = name+"="+value+expires+"; path=/"; } function writeTimePeriod() { if ($('drt01').checked == true) { drselect = $('dateRangePreset'); document.write(drselect[drselect.selectedIndex].text); } else { // get a date range if ($('fromDate').value != '' && $('toDate').value != '') { document.write($('fromDate').value + ' to ' + $('toDate').value); } } } function checkPreset() { document.statsForm.dateRangeType[0].checked=true; document.statsForm.dateRangePreset.disabled = false; document.statsForm.fromDate.disabled = true; document.statsForm.toDate.disabled = true; viewStat(currentStat); } function checkSpecific() { document.statsForm.dateRangeType[1].checked=true document.statsForm.fromDate.disabled = false; document.statsForm.toDate.disabled = false; document.statsForm.dateRangePreset.disabled = true; viewStat(currentStat); } function validateStartAndEndDate() { if ($('fromDate').value != '' && $('toDate').value != '') { fromDate = $('fromDate').value; toDate = $('toDate').value; if (!isValidDate(fromDate)) { $('fromDateTitle').className = 'dateerror'; $('fromDate').className = 'dateerrorinput'; datesAreValid = false; return; } if (!isValidDate(toDate)) { $('toDateTitle').className = 'dateerror'; $('toDate').className = 'dateerrorinput'; datesAreValid = false; return; } if (!isValidCombination(fromDate, toDate)) { $('toDateTitle').className = 'dateerror'; $('fromDateTitle').className = 'dateerror'; $('toDate').className = 'dateerrorinput'; $('fromDate').className = 'dateerrorinput'; datesAreValid = false; return; } datesAreValid = true; $('toDate').className = ''; $('fromDate').className = ''; $('toDateTitle').className = 'datenormal'; $('fromDateTitle').className = 'datenormal'; return; } else { datesAreValid = false; return; } } function isValidCombination(startdate, enddate) { if (!getDate(startdate) || !getDate(enddate)) { return false; } else { return getDate(startdate) < getDate(enddate); } } function getDate(datestring) { dateSplit = datestring.split('/'); if (dateSplit.length < 3) { return false; } var monthLength = new Array(31,28,31,30,31,30,31,31,30,31,30,31); var day = parseInt(dateSplit[1]); var month = parseInt(dateSplit[0]); var year = parseInt(dateSplit[2]); if (!day || !month || !year) return false; year = year + 2000; if (year/4 == parseInt(year/4)) monthLength[1] = 29; if (day > monthLength[month-1]) return false; monthLength[1] = 28; var now = new Date(); now = now.getTime(); //NN3 var dateToCheck = new Date(); dateToCheck.setYear(year); dateToCheck.setMonth(month-1); dateToCheck.setDate(day); var checkDate = dateToCheck.getTime(); if (now < checkDate) { return false; } else { return checkDate; } } function isValidDate(datestring) { d = getDate(datestring); if (!d) { return false; } else { var now = new Date(); now = now.getTime(); //NN3 if (now < d) { return false; } else { return true; } } } </script> <style type="text/css"> @import "style/style.css"; </style></head><body><table cellpadding="0" cellspacing="0" border="0" width="753"><tr> <td width="180" valign="top"> <table cellpadding="0" cellspacing="0" border="0" width="180" class="jive-table"> <thead> <tr> <th> <fmt:message key="allreports.daterange" /> </th> </tr> </thead> <tr style="border-bottom: none"><form action="" id="statsForm" name="statsForm"> <td colspan="2" valign="top" width="180">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -