[jetrix-cvs] SF.net SVN: jetrix:[795] monitor/trunk/src/main/webapp
Brought to you by:
smanux
From: <sm...@us...> - 2009-02-17 19:11:03
|
Revision: 795 http://jetrix.svn.sourceforge.net/jetrix/?rev=795&view=rev Author: smanux Date: 2009-02-17 19:10:59 +0000 (Tue, 17 Feb 2009) Log Message: ----------- Updated the svn:keywords and svn:eol-style properties Modified Paths: -------------- monitor/trunk/src/main/webapp/player.jsp monitor/trunk/src/main/webapp/scripts/sortable.js monitor/trunk/src/main/webapp/server-add.jsp monitor/trunk/src/main/webapp/server.jsp monitor/trunk/src/main/webapp/servers-xml.jsp monitor/trunk/src/main/webapp/spec.jsp monitor/trunk/src/main/webapp/stylesheets/style.css Property Changed: ---------------- monitor/trunk/src/main/webapp/index.jsp monitor/trunk/src/main/webapp/player.jsp monitor/trunk/src/main/webapp/scripts/sortable.js monitor/trunk/src/main/webapp/server-add.jsp monitor/trunk/src/main/webapp/server.jsp monitor/trunk/src/main/webapp/servers-xml.jsp monitor/trunk/src/main/webapp/spec.jsp monitor/trunk/src/main/webapp/stylesheets/style.css Property changes on: monitor/trunk/src/main/webapp/index.jsp ___________________________________________________________________ Added: svn:keywords + Date Author Id Revision HeadURL Added: svn:eol-style + native Modified: monitor/trunk/src/main/webapp/player.jsp =================================================================== --- monitor/trunk/src/main/webapp/player.jsp 2009-02-17 19:08:39 UTC (rev 794) +++ monitor/trunk/src/main/webapp/player.jsp 2009-02-17 19:10:59 UTC (rev 795) @@ -1,63 +1,63 @@ -<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %> -<%@ page import="org.springframework.web.context.ContextLoader" %> -<%@ page import="org.springframework.web.context.WebApplicationContext" %> -<%@ page import="net.jetrix.monitor.PlayerStats" %> -<%@ page import="net.jetrix.monitor.dao.PlayerStatsDao" %> -<%@ page import="net.jetrix.monitor.StyleUtils" %> -<% - WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext(); - PlayerStatsDao dao = (PlayerStatsDao) context.getBean("playerStatsDao"); - - PlayerStats player = dao.getStats(request.getParameter("id")); - -%> -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> - <title> - <fmt:message key="title.player"> - <fmt:param><%= StyleUtils.strip(player.getName()) %></fmt:param> - </fmt:message> - </title> - <link rel="stylesheet" type="text/css" href="stylesheets/style.css"> - <link rel="Shorcut Icon" href="favicon.ico"> -</head> -<body> - - - -<h1> - <fmt:message key="title.player"> - <fmt:param><%= StyleUtils.strip(player.getName()) %></fmt:param> - </fmt:message> -</h1> - -<table class="thin" border="1" cellspacing="0" style="min-width: 40%"> - <tr> - <th width="25%"><fmt:message key="word.first-seen"/></th> - <td><%= player.getFirstSeen() %></td> - </tr> - <tr> - <th><fmt:message key="word.last-seen"/></th> - <td><%= player.getLastSeen() %></td> - </tr> - <tr> - <th><fmt:message key="word.last-played"/></th> - <td><%= player.getLastPlayed() != null ? player.getLastPlayed() : "-" %></td> - </tr> - <tr> - <th><fmt:message key="word.server"/></th> - <td><a href="server.jsp?id=<%= player.getLastServer().getId() %>"><%= player.getLastServer().getHostname() %></a></td> - </tr> - <tr> - <th><fmt:message key="word.channel"/></th> - <td><%= player.getChannel() != null ? player.getChannel() : "" %></td> - </tr> - <tr> - <th><fmt:message key="word.team"/></th> - <td><%= player.getTeam() != null ? player.getTeam() : "" %></td> - </tr> -</table> - -</body> -</html> +<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %> +<%@ page import="org.springframework.web.context.ContextLoader" %> +<%@ page import="org.springframework.web.context.WebApplicationContext" %> +<%@ page import="net.jetrix.monitor.PlayerStats" %> +<%@ page import="net.jetrix.monitor.dao.PlayerStatsDao" %> +<%@ page import="net.jetrix.monitor.StyleUtils" %> +<% + WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext(); + PlayerStatsDao dao = (PlayerStatsDao) context.getBean("playerStatsDao"); + + PlayerStats player = dao.getStats(request.getParameter("id")); + +%> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <title> + <fmt:message key="title.player"> + <fmt:param><%= StyleUtils.strip(player.getName()) %></fmt:param> + </fmt:message> + </title> + <link rel="stylesheet" type="text/css" href="stylesheets/style.css"> + <link rel="Shorcut Icon" href="favicon.ico"> +</head> +<body> + + + +<h1> + <fmt:message key="title.player"> + <fmt:param><%= StyleUtils.strip(player.getName()) %></fmt:param> + </fmt:message> +</h1> + +<table class="thin" border="1" cellspacing="0" style="min-width: 40%"> + <tr> + <th width="25%"><fmt:message key="word.first-seen"/></th> + <td><%= player.getFirstSeen() %></td> + </tr> + <tr> + <th><fmt:message key="word.last-seen"/></th> + <td><%= player.getLastSeen() %></td> + </tr> + <tr> + <th><fmt:message key="word.last-played"/></th> + <td><%= player.getLastPlayed() != null ? player.getLastPlayed() : "-" %></td> + </tr> + <tr> + <th><fmt:message key="word.server"/></th> + <td><a href="server.jsp?id=<%= player.getLastServer().getId() %>"><%= player.getLastServer().getHostname() %></a></td> + </tr> + <tr> + <th><fmt:message key="word.channel"/></th> + <td><%= player.getChannel() != null ? player.getChannel() : "" %></td> + </tr> + <tr> + <th><fmt:message key="word.team"/></th> + <td><%= player.getTeam() != null ? player.getTeam() : "" %></td> + </tr> +</table> + +</body> +</html> Property changes on: monitor/trunk/src/main/webapp/player.jsp ___________________________________________________________________ Added: svn:keywords + Date Author Id Revision HeadURL Added: svn:eol-style + native Modified: monitor/trunk/src/main/webapp/scripts/sortable.js =================================================================== --- monitor/trunk/src/main/webapp/scripts/sortable.js 2009-02-17 19:08:39 UTC (rev 794) +++ monitor/trunk/src/main/webapp/scripts/sortable.js 2009-02-17 19:10:59 UTC (rev 795) @@ -1,327 +1,327 @@ -/* -Table sorting script by Joost de Valk, check it out at http://www.joostdevalk.nl/code/sortable-table/. -Based on a script from http://www.kryogenix.org/code/browser/sorttable/. -Distributed under the MIT license: http://www.kryogenix.org/code/browser/licence.html . - -Copyright (c) 1997-2007 Stuart Langridge, Joost de Valk. - -Version 1.5.7 -*/ - -/* You can change these values */ -var image_path = "http://www.joostdevalk.nl/code/sortable-table/"; -var image_up = "arrowup.gif"; -var image_down = "arrowdown.gif"; -var image_none = "arrownone.gif"; -var europeandate = true; -var alternate_row_colors = true; - -/* Don't change anything below this unless you know what you're doing */ -addEvent(window, "load", sortables_init); - -var SORT_COLUMN_INDEX; -var thead = false; - -function sortables_init() { - // Find all tables with class sortable and make them sortable - if (!document.getElementsByTagName) return; - tbls = document.getElementsByTagName("table"); - for (ti=0;ti<tbls.length;ti++) { - thisTbl = tbls[ti]; - if (((' '+thisTbl.className+' ').indexOf("sortable") != -1) && (thisTbl.id)) { - ts_makeSortable(thisTbl); - } - } -} - -function ts_makeSortable(t) { - if (t.rows && t.rows.length > 0) { - if (t.tHead && t.tHead.rows.length > 0) { - var firstRow = t.tHead.rows[t.tHead.rows.length-1]; - thead = true; - } else { - var firstRow = t.rows[0]; - } - } - if (!firstRow) return; - - // We have a first row: assume it's the header, and make its contents clickable links - for (var i=0;i<firstRow.cells.length;i++) { - var cell = firstRow.cells[i]; - var txt = ts_getInnerText(cell); - if (cell.className != "unsortable" && cell.className.indexOf("unsortable") == -1) { - cell.innerHTML = '<a href="#" class="sortheader" onclick="ts_resortTable(this, '+i+');return false;">'+txt+'<span class="sortarrow"> <img src="'+ image_path + image_none + '" alt="↓"/></span></a>'; - } - } - if (alternate_row_colors) { - alternate(t); - } -} - -function ts_getInnerText(el) { - if (typeof el == "string") return el; - if (typeof el == "undefined") { return el }; - if (el.innerText) return el.innerText; //Not needed but it is faster - var str = ""; - - var cs = el.childNodes; - var l = cs.length; - for (var i = 0; i < l; i++) { - switch (cs[i].nodeType) { - case 1: //ELEMENT_NODE - if (cs[i].tagName == "IMG") { - str += cs[i].getAttribute("alt"); - } else { - str += ts_getInnerText(cs[i]); - } - break; - case 3: //TEXT_NODE - str += cs[i].nodeValue; - break; - } - } - return str; -} - -function ts_resortTable(lnk, clid) { - var span; - for (var ci=0;ci<lnk.childNodes.length;ci++) { - if (lnk.childNodes[ci].tagName && lnk.childNodes[ci].tagName.toLowerCase() == 'span') span = lnk.childNodes[ci]; - } - var spantext = ts_getInnerText(span); - var td = lnk.parentNode; - var column = clid || td.cellIndex; - var t = getParent(td,'TABLE'); - // Work out a type for the column - if (t.rows.length <= 1) return; - var itm = ""; - var i = 0; - while (itm == "" && i < t.tBodies[0].rows.length) { - var itm = ts_getInnerText(t.tBodies[0].rows[i].cells[column]); - itm = trim(itm); - if (itm.substr(0,4) == "<!--" || itm.length == 0) { - itm = ""; - } - i++; - } - if (itm == "") return; - sortfn = ts_sort_caseinsensitive; - if (itm.match(/^\d\d[\/\.-][a-zA-z][a-zA-Z][a-zA-Z][\/\.-]\d\d\d\d$/)) sortfn = ts_sort_date; - if (itm.match(/^\d\d[\/\.-]\d\d[\/\.-]\d\d\d{2}?$/)) sortfn = ts_sort_date; - if (itm.match(/^-?[\xA3$\x80ۢ\xB4]\d/)) sortfn = ts_sort_numeric; - if (itm.match(/^-?(\d+[,\.]?)+(E[-+][\d]+)?%?$/)) sortfn = ts_sort_numeric; - SORT_COLUMN_INDEX = column; - var firstRow = new Array(); - var newRows = new Array(); - for (k=0;k<t.tBodies.length;k++) { - for (i=0;i<t.tBodies[k].rows[0].length;i++) { - firstRow[i] = t.tBodies[k].rows[0][i]; - } - } - for (k=0;k<t.tBodies.length;k++) { - if (!thead) { - // Skip the first row - for (j=1;j<t.tBodies[k].rows.length;j++) { - newRows[j-1] = t.tBodies[k].rows[j]; - } - } else { - // Do NOT skip the first row - for (j=0;j<t.tBodies[k].rows.length;j++) { - newRows[j] = t.tBodies[k].rows[j]; - } - } - } - newRows.sort(sortfn); - if (span.getAttribute("sortdir") == 'down') { - ARROW = ' <img src="'+ image_path + image_down + '" alt="↓"/>'; - newRows.reverse(); - span.setAttribute('sortdir','up'); - } else { - ARROW = ' <img src="'+ image_path + image_up + '" alt="↑"/>'; - span.setAttribute('sortdir','down'); - } - // We appendChild rows that already exist to the tbody, so it moves them rather than creating new ones - // don't do sortbottom rows - for (i=0; i<newRows.length; i++) { - if (!newRows[i].className || (newRows[i].className && (newRows[i].className.indexOf('sortbottom') == -1))) { - t.tBodies[0].appendChild(newRows[i]); - } - } - // do sortbottom rows only - for (i=0; i<newRows.length; i++) { - if (newRows[i].className && (newRows[i].className.indexOf('sortbottom') != -1)) - t.tBodies[0].appendChild(newRows[i]); - } - // Delete any other arrows there may be showing - var allspans = document.getElementsByTagName("span"); - for (var ci=0;ci<allspans.length;ci++) { - if (allspans[ci].className == 'sortarrow') { - if (getParent(allspans[ci],"table") == getParent(lnk,"table")) { // in the same table as us? - allspans[ci].innerHTML = ' <img src="'+ image_path + image_none + '" alt="↓"/>'; - } - } - } - span.innerHTML = ARROW; - alternate(t); -} - -function getParent(el, pTagName) { - if (el == null) { - return null; - } else if (el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase()) { - return el; - } else { - return getParent(el.parentNode, pTagName); - } -} - -function sort_date(date) { - // y2k notes: two digit years less than 50 are treated as 20XX, greater than 50 are treated as 19XX - dt = "00000000"; - if (date.length == 11) { - mtstr = date.substr(3,3); - mtstr = mtstr.toLowerCase(); - switch(mtstr) { - case "jan": var mt = "01"; break; - case "feb": var mt = "02"; break; - case "mar": var mt = "03"; break; - case "apr": var mt = "04"; break; - case "may": var mt = "05"; break; - case "jun": var mt = "06"; break; - case "jul": var mt = "07"; break; - case "aug": var mt = "08"; break; - case "sep": var mt = "09"; break; - case "oct": var mt = "10"; break; - case "nov": var mt = "11"; break; - case "dec": var mt = "12"; break; - // default: var mt = "00"; - } - dt = date.substr(7,4)+mt+date.substr(0,2); - return dt; - } else if (date.length == 10) { - if (europeandate == false) { - dt = date.substr(6,4)+date.substr(0,2)+date.substr(3,2); - return dt; - } else { - dt = date.substr(6,4)+date.substr(3,2)+date.substr(0,2); - return dt; - } - } else if (date.length == 8) { - yr = date.substr(6,2); - if (parseInt(yr) < 50) { - yr = '20'+yr; - } else { - yr = '19'+yr; - } - if (europeandate == true) { - dt = yr+date.substr(3,2)+date.substr(0,2); - return dt; - } else { - dt = yr+date.substr(0,2)+date.substr(3,2); - return dt; - } - } - return dt; -} - -function ts_sort_date(a,b) { - dt1 = sort_date(ts_getInnerText(a.cells[SORT_COLUMN_INDEX])); - dt2 = sort_date(ts_getInnerText(b.cells[SORT_COLUMN_INDEX])); - - if (dt1==dt2) { - return 0; - } - if (dt1<dt2) { - return -1; - } - return 1; -} -function ts_sort_numeric(a,b) { - var aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]); - aa = clean_num(aa); - var bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]); - bb = clean_num(bb); - return compare_numeric(aa,bb); -} -function compare_numeric(a,b) { - var a = parseFloat(a); - a = (isNaN(a) ? 0 : a); - var b = parseFloat(b); - b = (isNaN(b) ? 0 : b); - return a - b; -} -function ts_sort_caseinsensitive(a,b) { - aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]).toLowerCase(); - bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]).toLowerCase(); - if (aa==bb) { - return 0; - } - if (aa<bb) { - return -1; - } - return 1; -} -function ts_sort_default(a,b) { - aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]); - bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]); - if (aa==bb) { - return 0; - } - if (aa<bb) { - return -1; - } - return 1; -} -function addEvent(elm, evType, fn, useCapture) -// addEvent and removeEvent -// cross-browser event handling for IE5+, NS6 and Mozilla -// By Scott Andrew -{ - if (elm.addEventListener){ - elm.addEventListener(evType, fn, useCapture); - return true; - } else if (elm.attachEvent){ - var r = elm.attachEvent("on"+evType, fn); - return r; - } else { - alert("Handler could not be removed"); - } -} -function clean_num(str) { - str = str.replace(new RegExp(/[^-?0-9.]/g),""); - return str; -} -function trim(s) { - return s.replace(/^\s+|\s+$/g, ""); -} -function alternate(table) { - // Take object table and get all it's tbodies. - var tableBodies = table.getElementsByTagName("tbody"); - // Loop through these tbodies - for (var i = 0; i < tableBodies.length; i++) { - // Take the tbody, and get all it's rows - var tableRows = tableBodies[i].getElementsByTagName("tr"); - // Loop through these rows - // Start at 1 because we want to leave the heading row untouched - for (var j = 0; j < tableRows.length; j++) { - // Check if j is even, and apply classes for both possible results - if ( (j % 2) == 0 ) { - if ( !(tableRows[j].className.indexOf('odd') == -1) ) { - tableRows[j].className = tableRows[j].className.replace('odd', 'even'); - } else { - if ( tableRows[j].className.indexOf('even') == -1 ) { - tableRows[j].className += " even"; - } - } - } else { - if ( !(tableRows[j].className.indexOf('even') == -1) ) { - tableRows[j].className = tableRows[j].className.replace('even', 'odd'); - } else { - if ( tableRows[j].className.indexOf('odd') == -1 ) { - tableRows[j].className += " odd"; - } - } - } - } - } -} +/* +Table sorting script by Joost de Valk, check it out at http://www.joostdevalk.nl/code/sortable-table/. +Based on a script from http://www.kryogenix.org/code/browser/sorttable/. +Distributed under the MIT license: http://www.kryogenix.org/code/browser/licence.html . + +Copyright (c) 1997-2007 Stuart Langridge, Joost de Valk. + +Version 1.5.7 +*/ + +/* You can change these values */ +var image_path = "http://www.joostdevalk.nl/code/sortable-table/"; +var image_up = "arrowup.gif"; +var image_down = "arrowdown.gif"; +var image_none = "arrownone.gif"; +var europeandate = true; +var alternate_row_colors = true; + +/* Don't change anything below this unless you know what you're doing */ +addEvent(window, "load", sortables_init); + +var SORT_COLUMN_INDEX; +var thead = false; + +function sortables_init() { + // Find all tables with class sortable and make them sortable + if (!document.getElementsByTagName) return; + tbls = document.getElementsByTagName("table"); + for (ti=0;ti<tbls.length;ti++) { + thisTbl = tbls[ti]; + if (((' '+thisTbl.className+' ').indexOf("sortable") != -1) && (thisTbl.id)) { + ts_makeSortable(thisTbl); + } + } +} + +function ts_makeSortable(t) { + if (t.rows && t.rows.length > 0) { + if (t.tHead && t.tHead.rows.length > 0) { + var firstRow = t.tHead.rows[t.tHead.rows.length-1]; + thead = true; + } else { + var firstRow = t.rows[0]; + } + } + if (!firstRow) return; + + // We have a first row: assume it's the header, and make its contents clickable links + for (var i=0;i<firstRow.cells.length;i++) { + var cell = firstRow.cells[i]; + var txt = ts_getInnerText(cell); + if (cell.className != "unsortable" && cell.className.indexOf("unsortable") == -1) { + cell.innerHTML = '<a href="#" class="sortheader" onclick="ts_resortTable(this, '+i+');return false;">'+txt+'<span class="sortarrow"> <img src="'+ image_path + image_none + '" alt="↓"/></span></a>'; + } + } + if (alternate_row_colors) { + alternate(t); + } +} + +function ts_getInnerText(el) { + if (typeof el == "string") return el; + if (typeof el == "undefined") { return el }; + if (el.innerText) return el.innerText; //Not needed but it is faster + var str = ""; + + var cs = el.childNodes; + var l = cs.length; + for (var i = 0; i < l; i++) { + switch (cs[i].nodeType) { + case 1: //ELEMENT_NODE + if (cs[i].tagName == "IMG") { + str += cs[i].getAttribute("alt"); + } else { + str += ts_getInnerText(cs[i]); + } + break; + case 3: //TEXT_NODE + str += cs[i].nodeValue; + break; + } + } + return str; +} + +function ts_resortTable(lnk, clid) { + var span; + for (var ci=0;ci<lnk.childNodes.length;ci++) { + if (lnk.childNodes[ci].tagName && lnk.childNodes[ci].tagName.toLowerCase() == 'span') span = lnk.childNodes[ci]; + } + var spantext = ts_getInnerText(span); + var td = lnk.parentNode; + var column = clid || td.cellIndex; + var t = getParent(td,'TABLE'); + // Work out a type for the column + if (t.rows.length <= 1) return; + var itm = ""; + var i = 0; + while (itm == "" && i < t.tBodies[0].rows.length) { + var itm = ts_getInnerText(t.tBodies[0].rows[i].cells[column]); + itm = trim(itm); + if (itm.substr(0,4) == "<!--" || itm.length == 0) { + itm = ""; + } + i++; + } + if (itm == "") return; + sortfn = ts_sort_caseinsensitive; + if (itm.match(/^\d\d[\/\.-][a-zA-z][a-zA-Z][a-zA-Z][\/\.-]\d\d\d\d$/)) sortfn = ts_sort_date; + if (itm.match(/^\d\d[\/\.-]\d\d[\/\.-]\d\d\d{2}?$/)) sortfn = ts_sort_date; + if (itm.match(/^-?[\xA3$\x80ۢ\xB4]\d/)) sortfn = ts_sort_numeric; + if (itm.match(/^-?(\d+[,\.]?)+(E[-+][\d]+)?%?$/)) sortfn = ts_sort_numeric; + SORT_COLUMN_INDEX = column; + var firstRow = new Array(); + var newRows = new Array(); + for (k=0;k<t.tBodies.length;k++) { + for (i=0;i<t.tBodies[k].rows[0].length;i++) { + firstRow[i] = t.tBodies[k].rows[0][i]; + } + } + for (k=0;k<t.tBodies.length;k++) { + if (!thead) { + // Skip the first row + for (j=1;j<t.tBodies[k].rows.length;j++) { + newRows[j-1] = t.tBodies[k].rows[j]; + } + } else { + // Do NOT skip the first row + for (j=0;j<t.tBodies[k].rows.length;j++) { + newRows[j] = t.tBodies[k].rows[j]; + } + } + } + newRows.sort(sortfn); + if (span.getAttribute("sortdir") == 'down') { + ARROW = ' <img src="'+ image_path + image_down + '" alt="↓"/>'; + newRows.reverse(); + span.setAttribute('sortdir','up'); + } else { + ARROW = ' <img src="'+ image_path + image_up + '" alt="↑"/>'; + span.setAttribute('sortdir','down'); + } + // We appendChild rows that already exist to the tbody, so it moves them rather than creating new ones + // don't do sortbottom rows + for (i=0; i<newRows.length; i++) { + if (!newRows[i].className || (newRows[i].className && (newRows[i].className.indexOf('sortbottom') == -1))) { + t.tBodies[0].appendChild(newRows[i]); + } + } + // do sortbottom rows only + for (i=0; i<newRows.length; i++) { + if (newRows[i].className && (newRows[i].className.indexOf('sortbottom') != -1)) + t.tBodies[0].appendChild(newRows[i]); + } + // Delete any other arrows there may be showing + var allspans = document.getElementsByTagName("span"); + for (var ci=0;ci<allspans.length;ci++) { + if (allspans[ci].className == 'sortarrow') { + if (getParent(allspans[ci],"table") == getParent(lnk,"table")) { // in the same table as us? + allspans[ci].innerHTML = ' <img src="'+ image_path + image_none + '" alt="↓"/>'; + } + } + } + span.innerHTML = ARROW; + alternate(t); +} + +function getParent(el, pTagName) { + if (el == null) { + return null; + } else if (el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase()) { + return el; + } else { + return getParent(el.parentNode, pTagName); + } +} + +function sort_date(date) { + // y2k notes: two digit years less than 50 are treated as 20XX, greater than 50 are treated as 19XX + dt = "00000000"; + if (date.length == 11) { + mtstr = date.substr(3,3); + mtstr = mtstr.toLowerCase(); + switch(mtstr) { + case "jan": var mt = "01"; break; + case "feb": var mt = "02"; break; + case "mar": var mt = "03"; break; + case "apr": var mt = "04"; break; + case "may": var mt = "05"; break; + case "jun": var mt = "06"; break; + case "jul": var mt = "07"; break; + case "aug": var mt = "08"; break; + case "sep": var mt = "09"; break; + case "oct": var mt = "10"; break; + case "nov": var mt = "11"; break; + case "dec": var mt = "12"; break; + // default: var mt = "00"; + } + dt = date.substr(7,4)+mt+date.substr(0,2); + return dt; + } else if (date.length == 10) { + if (europeandate == false) { + dt = date.substr(6,4)+date.substr(0,2)+date.substr(3,2); + return dt; + } else { + dt = date.substr(6,4)+date.substr(3,2)+date.substr(0,2); + return dt; + } + } else if (date.length == 8) { + yr = date.substr(6,2); + if (parseInt(yr) < 50) { + yr = '20'+yr; + } else { + yr = '19'+yr; + } + if (europeandate == true) { + dt = yr+date.substr(3,2)+date.substr(0,2); + return dt; + } else { + dt = yr+date.substr(0,2)+date.substr(3,2); + return dt; + } + } + return dt; +} + +function ts_sort_date(a,b) { + dt1 = sort_date(ts_getInnerText(a.cells[SORT_COLUMN_INDEX])); + dt2 = sort_date(ts_getInnerText(b.cells[SORT_COLUMN_INDEX])); + + if (dt1==dt2) { + return 0; + } + if (dt1<dt2) { + return -1; + } + return 1; +} +function ts_sort_numeric(a,b) { + var aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]); + aa = clean_num(aa); + var bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]); + bb = clean_num(bb); + return compare_numeric(aa,bb); +} +function compare_numeric(a,b) { + var a = parseFloat(a); + a = (isNaN(a) ? 0 : a); + var b = parseFloat(b); + b = (isNaN(b) ? 0 : b); + return a - b; +} +function ts_sort_caseinsensitive(a,b) { + aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]).toLowerCase(); + bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]).toLowerCase(); + if (aa==bb) { + return 0; + } + if (aa<bb) { + return -1; + } + return 1; +} +function ts_sort_default(a,b) { + aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]); + bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]); + if (aa==bb) { + return 0; + } + if (aa<bb) { + return -1; + } + return 1; +} +function addEvent(elm, evType, fn, useCapture) +// addEvent and removeEvent +// cross-browser event handling for IE5+, NS6 and Mozilla +// By Scott Andrew +{ + if (elm.addEventListener){ + elm.addEventListener(evType, fn, useCapture); + return true; + } else if (elm.attachEvent){ + var r = elm.attachEvent("on"+evType, fn); + return r; + } else { + alert("Handler could not be removed"); + } +} +function clean_num(str) { + str = str.replace(new RegExp(/[^-?0-9.]/g),""); + return str; +} +function trim(s) { + return s.replace(/^\s+|\s+$/g, ""); +} +function alternate(table) { + // Take object table and get all it's tbodies. + var tableBodies = table.getElementsByTagName("tbody"); + // Loop through these tbodies + for (var i = 0; i < tableBodies.length; i++) { + // Take the tbody, and get all it's rows + var tableRows = tableBodies[i].getElementsByTagName("tr"); + // Loop through these rows + // Start at 1 because we want to leave the heading row untouched + for (var j = 0; j < tableRows.length; j++) { + // Check if j is even, and apply classes for both possible results + if ( (j % 2) == 0 ) { + if ( !(tableRows[j].className.indexOf('odd') == -1) ) { + tableRows[j].className = tableRows[j].className.replace('odd', 'even'); + } else { + if ( tableRows[j].className.indexOf('even') == -1 ) { + tableRows[j].className += " even"; + } + } + } else { + if ( !(tableRows[j].className.indexOf('even') == -1) ) { + tableRows[j].className = tableRows[j].className.replace('even', 'odd'); + } else { + if ( tableRows[j].className.indexOf('odd') == -1 ) { + tableRows[j].className += " odd"; + } + } + } + } + } +} Property changes on: monitor/trunk/src/main/webapp/scripts/sortable.js ___________________________________________________________________ Added: svn:keywords + Date Author Id Revision HeadURL Added: svn:eol-style + native Modified: monitor/trunk/src/main/webapp/server-add.jsp =================================================================== --- monitor/trunk/src/main/webapp/server-add.jsp 2009-02-17 19:08:39 UTC (rev 794) +++ monitor/trunk/src/main/webapp/server-add.jsp 2009-02-17 19:10:59 UTC (rev 795) @@ -1,60 +1,60 @@ -<%@ page import="java.io.IOException" %> -<%@ page import="java.net.InetAddress" %> -<%@ page import="java.net.InetSocketAddress" %> -<%@ page import="java.net.Socket" %> -<%@ page import="java.util.Date" %> -<%@ page import="org.springframework.web.context.ContextLoader" %> -<%@ page import="org.springframework.web.context.WebApplicationContext" %> -<%@ page import="net.jetrix.monitor.ServerInfo" %> -<%@ page import="net.jetrix.monitor.dao.IpToCountryDao" %> -<%@ page import="net.jetrix.monitor.dao.ServerInfoDao" %> -<% - String hostname = request.getParameter("hostname"); - - InetAddress address = null; - try - { - // lookup the IP - address = InetAddress.getByName(hostname); - - WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext(); - ServerInfoDao dao = (ServerInfoDao) context.getBean("serverInfoDao"); - IpToCountryDao countryDao = (IpToCountryDao) context.getBean("ipToCountryDao"); - - ServerInfo server = new ServerInfo(); - server.setHostname(hostname); - server.setIP(address.getHostAddress()); - server.setDateAdded(new Date()); - server.setCountry(countryDao.getCountry(address)); - - // lookup the hostname if the IP was specified - if (address.getHostAddress().equals(hostname)) - { - server.setHostname(address.getCanonicalHostName()); - } - - // check if the tetrinet port is opened - long t0 = System.currentTimeMillis(); - Socket socket = new Socket(); - socket.connect(new InetSocketAddress(address, 31457), 15000); - long t1 = System.currentTimeMillis(); - socket.close(); - - server.getStats().setPing((int) (t1 - t0)); - - if (!dao.exists(server) && !address.isLoopbackAddress()) - { - dao.save(server); - out.println("server added " + address); - } - - // todo register the alias if the server is already registered - } - catch (IOException e) - { - out.println(e.getMessage()); - // server ignored - } - - response.sendRedirect("index.jsp"); +<%@ page import="java.io.IOException" %> +<%@ page import="java.net.InetAddress" %> +<%@ page import="java.net.InetSocketAddress" %> +<%@ page import="java.net.Socket" %> +<%@ page import="java.util.Date" %> +<%@ page import="org.springframework.web.context.ContextLoader" %> +<%@ page import="org.springframework.web.context.WebApplicationContext" %> +<%@ page import="net.jetrix.monitor.ServerInfo" %> +<%@ page import="net.jetrix.monitor.dao.IpToCountryDao" %> +<%@ page import="net.jetrix.monitor.dao.ServerInfoDao" %> +<% + String hostname = request.getParameter("hostname"); + + InetAddress address = null; + try + { + // lookup the IP + address = InetAddress.getByName(hostname); + + WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext(); + ServerInfoDao dao = (ServerInfoDao) context.getBean("serverInfoDao"); + IpToCountryDao countryDao = (IpToCountryDao) context.getBean("ipToCountryDao"); + + ServerInfo server = new ServerInfo(); + server.setHostname(hostname); + server.setIP(address.getHostAddress()); + server.setDateAdded(new Date()); + server.setCountry(countryDao.getCountry(address)); + + // lookup the hostname if the IP was specified + if (address.getHostAddress().equals(hostname)) + { + server.setHostname(address.getCanonicalHostName()); + } + + // check if the tetrinet port is opened + long t0 = System.currentTimeMillis(); + Socket socket = new Socket(); + socket.connect(new InetSocketAddress(address, 31457), 15000); + long t1 = System.currentTimeMillis(); + socket.close(); + + server.getStats().setPing((int) (t1 - t0)); + + if (!dao.exists(server) && !address.isLoopbackAddress()) + { + dao.save(server); + out.println("server added " + address); + } + + // todo register the alias if the server is already registered + } + catch (IOException e) + { + out.println(e.getMessage()); + // server ignored + } + + response.sendRedirect("index.jsp"); %> \ No newline at end of file Property changes on: monitor/trunk/src/main/webapp/server-add.jsp ___________________________________________________________________ Added: svn:keywords + Date Author Id Revision HeadURL Added: svn:eol-style + native Modified: monitor/trunk/src/main/webapp/server.jsp =================================================================== --- monitor/trunk/src/main/webapp/server.jsp 2009-02-17 19:08:39 UTC (rev 794) +++ monitor/trunk/src/main/webapp/server.jsp 2009-02-17 19:10:59 UTC (rev 795) @@ -1,227 +1,227 @@ -<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %> -<%@ page import="java.util.Locale" %> -<%@ page import="org.springframework.web.context.ContextLoader" %> -<%@ page import="org.springframework.web.context.WebApplicationContext" %> -<%@ page import="net.jetrix.agent.ChannelInfo" %> -<%@ page import="net.jetrix.agent.PlayerInfo" %> -<%@ page import="net.jetrix.monitor.ServerInfo" %> -<%@ page import="net.jetrix.monitor.dao.ServerInfoDao" %> -<%@ page import="net.jetrix.monitor.StyleUtils" %> -<%@ page import="java.net.URLEncoder" %> -<% - WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext(); - ServerInfoDao dao = (ServerInfoDao) context.getBean("serverInfoDao"); - - ServerInfo server = dao.getServer(Long.parseLong(request.getParameter("id"))); - - String countryName = "Unknown"; - String localizedCountryName = "Unknown"; - String countryFlag = "United Nations"; - - if (server.getCountry() != null) { - Locale locale = new Locale("en", server.getCountry()); - countryName = locale.getDisplayCountry(Locale.ENGLISH); - localizedCountryName = locale.getDisplayCountry(request.getLocale()); - countryFlag = countryName; - } - - boolean viewable = server.isSpectate() && server.getSpectatorPassword() != null; -%> -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> - <title> - <fmt:message key="title.server"> - <fmt:param><%= server.getHostname() %></fmt:param> - </fmt:message> - </title> - <link rel="stylesheet" type="text/css" href="stylesheets/style.css"> - <link rel="Shorcut Icon" href="favicon.ico"> - <script type="text/javascript" src="scripts/sortable.js"></script> -</head> -<body> - -<h1> - <fmt:message key="title.server"> - <fmt:param><%= server.getHostname() %></fmt:param> - </fmt:message> -</h1> - -<% if (server.getMaxPlayerCount() > 0) { %> -<div style="float: right"> - <img src="images/graphs/server-<%= server.getId() %>.png" alt="<fmt:message key="word.activity-graph"/>"> -</div> -<% } %> - -<table class="thin" border="1" cellspacing="0" style="min-width: 40%"> - <tr> - <th width="25%"><fmt:message key="word.website"/></th> - <td> -<% if (server.getWebsite() != null) { %> - <a href="<%= server.getWebsite() %>"><%= server.getWebsite() %></a> -<% } %> - </td> - </tr> - <tr> - <th><fmt:message key="word.description"/></th> - <td><%= server.getDescription() != null ? server.getDescription() : "" %></td> - </tr> - <tr> - <th><fmt:message key="word.version"/></th> - <td><%= server.getVersion() != null ? server.getVersion() : "" %></td> - </tr> - <tr> - <th><fmt:message key="word.country"/></th> - <td> - <table border="0" cellpadding="0" cellspacing="0"> - <tr> - <td><img src="images/flags/24/<%= countryFlag %>.png" alt="<%= localizedCountryName%>"></td> - <td><%= localizedCountryName%></td> - </tr> - </table> - </td> - </tr> - <tr> - <th><fmt:message key="word.players"/></th> - <td> - <%= server.getStats().getPlayerCount() %> -<% if (server.getStats().getActivePlayerCount() > 0) { %> - (<%= server.getStats().getActivePlayerCount() %> <fmt:message key="word.active"/>) -<% } %> - </td> - </tr> -<% if (server.getMaxPlayerCount() != 0 && server.getMaxActivePlayerCount() != 0) { %> - <tr> - <th><fmt:message key="word.peak"/></th> - <td> - <fmt:message key="message.peak.players"> - <fmt:param><%= server.getMaxPlayerCount() %></fmt:param> - <fmt:param><%= server.getMaxPlayerDate() %></fmt:param> - </fmt:message> - <br> - <fmt:message key="message.peak.active-players"> - <fmt:param><%= server.getMaxActivePlayerCount() %></fmt:param> - <fmt:param><%= server.getMaxActivePlayerDate() %></fmt:param> - </fmt:message> - </td> - </tr> -<% } %> - <tr> - <th><fmt:message key="word.channels"/></th> - <td><%= server.getStats().getChannelCount() %></td> - </tr> - <tr> - <th><fmt:message key="word.tspec-access"/></th> - <td style="color: <%= server.isSpectate() ? "green" : "red" %>"> - <% if (server.isSpectate()) { %> - <fmt:message key="word.yes"/> - <% } else { %> - <fmt:message key="word.no"/> - <% } %> - </td> - </tr> - <tr> - <th><fmt:message key="word.ping"/></th> - <td><%= server.getStats().getPing() %> ms</td> - </tr> - <tr> - <th><fmt:message key="word.date-added"/></th> - <td><%= server.getDateAdded() %></td> - </tr> - <tr> - <th><fmt:message key="word.last-online"/></th> - <td> - <% if (server.getLastOnline() != null) { %> - <%= server.getLastOnline() %> - <% } else { %> - <fmt:message key="word.never"/> - <% } %> - </td> - </tr> -</table> - -<p><a href="<%= request.getContextPath() %>/"><fmt:message key="message.back-to-servers"/></a></p> - -<div style="clear: both;"></div> - -<% if (!server.getPlayers().isEmpty()) { %> - -<h2><fmt:message key="word.players"/></h2> - -<table class="thin sortable" id="players" border="1" style="min-width: 40%"> - <thead> - <tr> - <th><fmt:message key="word.nick"/></th> - <th><fmt:message key="word.team"/></th> - <th><fmt:message key="word.channel"/></th> - <th><fmt:message key="word.slot"/></th> - <th><fmt:message key="word.status"/></th> - <th><fmt:message key="word.tetrinet-client"/></th> - </tr> - </thead> - <tbody> -<% for (PlayerInfo player : server.getPlayers()) { %> - <tr> - <td<%= player.getAuthenticationLevel() > 1 ? " style=\"font-weight: bold\"" : "" %>><a style="text-decoration: none; color: black" href="player.jsp?id=<%= player.getNick() %>"><%= StyleUtils.toHTML(player.getNick()) %></a></td> - <td><%= StyleUtils.toHTML(player.getTeam()) %></td> - <td><%= player.getChannel() %></td> - <td><%= player.getSlot() %></td> - <td style="color: <%= player.isPlaying() ? "green" : "inherit" %>"> - <% if (player.isPlaying()) { %> - <fmt:message key="word.playing"/> - <% } else { %> - <fmt:message key="word.idle"/> - <% } %> - </td> - <td><%= player.getVersion() %></td> - </tr> -<% } %> - </tbody> -</table> - -<% } %> - - -<% if (!server.getChannels().isEmpty()) { %> - -<h2><fmt:message key="word.channels"/></h2> - -<table class="thin sortable" id="channels" border="1" style="min-width: 40%"> - <thead> - <tr> - <th><fmt:message key="word.name"/></th> - <th><fmt:message key="word.description"/></th> - <th><fmt:message key="word.players"/></th> - <th><fmt:message key="word.status"/></th> -<% if (viewable) { %> - <th><fmt:message key="word.action"/></th> -<% } %> - </tr> - </thead> - <tbody> -<% for (ChannelInfo channel : server.getChannels()) { %> - <tr> - <td><%= channel.getName() %></td> - <td><%= StyleUtils.toHTML(channel.getDescription()) %></td> - <td><%= channel.getPlayernum() %> / <%= channel.getPlayermax() %></td> - <td style="color: green; font-weight: bold"> - <% if (channel.isPlaying()) { %> - <fmt:message key="word.ingame"/> - <% } %> - </td> -<% if (viewable) { %> - <td align="center"> -<% if (channel.getPlayernum() > 0) { %> - <a href="spec.jsp?id=<%= server.getId() %>&channel=<%= URLEncoder.encode(channel.getName()) %>">View</a> -<% } %> - </td> -<% } %> - </tr> -<% } %> - </tbody> -</table> - -<% } %> - -</body> -</html> +<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %> +<%@ page import="java.util.Locale" %> +<%@ page import="org.springframework.web.context.ContextLoader" %> +<%@ page import="org.springframework.web.context.WebApplicationContext" %> +<%@ page import="net.jetrix.agent.ChannelInfo" %> +<%@ page import="net.jetrix.agent.PlayerInfo" %> +<%@ page import="net.jetrix.monitor.ServerInfo" %> +<%@ page import="net.jetrix.monitor.dao.ServerInfoDao" %> +<%@ page import="net.jetrix.monitor.StyleUtils" %> +<%@ page import="java.net.URLEncoder" %> +<% + WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext(); + ServerInfoDao dao = (ServerInfoDao) context.getBean("serverInfoDao"); + + ServerInfo server = dao.getServer(Long.parseLong(request.getParameter("id"))); + + String countryName = "Unknown"; + String localizedCountryName = "Unknown"; + String countryFlag = "United Nations"; + + if (server.getCountry() != null) { + Locale locale = new Locale("en", server.getCountry()); + countryName = locale.getDisplayCountry(Locale.ENGLISH); + localizedCountryName = locale.getDisplayCountry(request.getLocale()); + countryFlag = countryName; + } + + boolean viewable = server.isSpectate() && server.getSpectatorPassword() != null; +%> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <title> + <fmt:message key="title.server"> + <fmt:param><%= server.getHostname() %></fmt:param> + </fmt:message> + </title> + <link rel="stylesheet" type="text/css" href="stylesheets/style.css"> + <link rel="Shorcut Icon" href="favicon.ico"> + <script type="text/javascript" src="scripts/sortable.js"></script> +</head> +<body> + +<h1> + <fmt:message key="title.server"> + <fmt:param><%= server.getHostname() %></fmt:param> + </fmt:message> +</h1> + +<% if (server.getMaxPlayerCount() > 0) { %> +<div style="float: right"> + <img src="images/graphs/server-<%= server.getId() %>.png" alt="<fmt:message key="word.activity-graph"/>"> +</div> +<% } %> + +<table class="thin" border="1" cellspacing="0" style="min-width: 40%"> + <tr> + <th width="25%"><fmt:message key="word.website"/></th> + <td> +<% if (server.getWebsite() != null) { %> + <a href="<%= server.getWebsite() %>"><%= server.getWebsite() %></a> +<% } %> + </td> + </tr> + <tr> + <th><fmt:message key="word.description"/></th> + <td><%= server.getDescription() != null ? server.getDescription() : "" %></td> + </tr> + <tr> + <th><fmt:message key="word.version"/></th> + <td><%= server.getVersion() != null ? server.getVersion() : "" %></td> + </tr> + <tr> + <th><fmt:message key="word.country"/></th> + <td> + <table border="0" cellpadding="0" cellspacing="0"> + <tr> + <td><img src="images/flags/24/<%= countryFlag %>.png" alt="<%= localizedCountryName%>"></td> + <td><%= localizedCountryName%></td> + </tr> + </table> + </td> + </tr> + <tr> + <th><fmt:message key="word.players"/></th> + <td> + <%= server.getStats().getPlayerCount() %> +<% if (server.getStats().getActivePlayerCount() > 0) { %> + (<%= server.getStats().getActivePlayerCount() %> <fmt:message key="word.active"/>) +<% } %> + </td> + </tr> +<% if (server.getMaxPlayerCount() != 0 && server.getMaxActivePlayerCount() != 0) { %> + <tr> + <th><fmt:message key="word.peak"/></th> + <td> + <fmt:message key="message.peak.players"> + <fmt:param><%= server.getMaxPlayerCount() %></fmt:param> + <fmt:param><%= server.getMaxPlayerDate() %></fmt:param> + </fmt:message> + <br> + <fmt:message key="message.peak.active-players"> + <fmt:param><%= server.getMaxActivePlayerCount() %></fmt:param> + <fmt:param><%= server.getMaxActivePlayerDate() %></fmt:param> + </fmt:message> + </td> + </tr> +<% } %> + <tr> + <th><fmt:message key="word.channels"/></th> + <td><%= server.getStats().getChannelCount() %></td> + </tr> + <tr> + <th><fmt:message key="word.tspec-access"/></th> + <td style="color: <%= server.isSpectate() ? "green" : "red" %>"> + <% if (server.isSpectate()) { %> + <fmt:message key="word.yes"/> + <% } else { %> + <fmt:message key="word.no"/> + <% } %> + </td> + </tr> + <tr> + <th><fmt:message key="word.ping"/></th> + <td><%= server.getStats().getPing() %> ms</td> + </tr> + <tr> + <th><fmt:message key="word.date-added"/></th> + <td><%= server.getDateAdded() %></td> + </tr> + <tr> + <th><fmt:message key="word.last-online"/></th> + <td> + <% if (server.getLastOnline() != null) { %> + <%= server.getLastOnline() %> + <% } else { %> + <fmt:message key="word.never"/> + <% } %> + </td> + </tr> +</table> + +<p><a href="<%= request.getContextPath() %>/"><fmt:message key="message.back-to-servers"/></a></p> + +<div style="clear: both;"></div> + +<% if (!server.getPlayers().isEmpty()) { %> + +<h2><fmt:message key="word.players"/></h2> + +<table class="thin sortable" id="players" border="1" style="min-width: 40%"> + <thead> + <tr> + <th><fmt:message key="word.nick"/></th> + <th><fmt:message key="word.team"/></th> + <th><fmt:message key="word.channel"/></th> + <th><fmt:message key="word.slot"/></th> + <th><fmt:message key="word.status"/></th> + <th><fmt:message key="word.tetrinet-client"/></th> + </tr> + </thead> + <tbody> +<% for (PlayerInfo player : server.getPlayers()) { %> + <tr> + <td<%= player.getAuthenticationLevel() > 1 ? " style=\"font-weight: bold\"" : "" %>><a style="text-decoration: none; color: black" href="player.jsp?id=<%= player.getNick() %>"><%= StyleUtils.toHTML(player.getNick()) %></a></td> + <td><%= StyleUtils.toHTML(player.getTeam()) %></td> + <td><%= player.getChannel() %></td> + <td><%= player.getSlot() %></td> + <td style="color: <%= player.isPlaying() ? "green" : "inherit" %>"> + <% if (player.isPlaying()) { %> + <fmt:message key="word.playing"/> + <% } else { %> + <fmt:message key="word.idle"/> + <% } %> + </td> + <td><%= player.getVersion() %></td> + </tr> +<% } %> + </tbody> +</table> + +<% } %> + + +<% if (!server.getChannels().isEmpty()) { %> + +<h2><fmt:message key="word.channels"/></h2> + +<table class="thin sortable" id="channels" border="1" style="min-width: 40%"> + <thead> + <tr> + <th><fmt:message key="word.name"/></th> + <th><fmt:message key="word.description"/></th> + <th><fmt:message key="word.players"/></th> + <th><fmt:message key="word.status"/></th> +<% if (viewable) { %> + <th><fmt:message key="word.action"/></th> +<% } %> + </tr> + </thead> + <tbody> +<% for (ChannelInfo channel : server.getChannels()) { %> + <tr> + <td><%= channel.getName() %></td> + <td><%= StyleUtils.toHTML(channel.getDescription()) %></td> + <td><%= channel.getPlayernum() %> / <%= channel.getPlayermax() %></td> + <td style="color: green; font-weight: bold"> + <% if (channel.isPlaying()) { %> + <fmt:message key="word.ingame"/> + <% } %> + </td> +<% if (viewable) { %> + <td align="center"> +<% if (channel.getPlayernum() > 0) { %> + <a href="spec.jsp?id=<%= server.getId() %>&channel=<%= URLEncoder.encode(channel.getName()) %>">View</a> +<% } %> + </td> +<% } %> + </tr> +<% } %> + </tbody> +</table> + +<% } %> + +</body> +</html> Property changes on: monitor/trunk/src/main/webapp/server.jsp ___________________________________________________________________ Added: svn:keywords + Date Author Id Revision HeadURL Added: svn:eol-style + native Modified: monitor/trunk/src/main/webapp/servers-xml.jsp =================================================================== --- monitor/trunk/src/main/webapp/servers-xml.jsp 2009-02-17 19:08:39 UTC (rev 794) +++ monitor/trunk/src/main/webapp/servers-xml.jsp 2009-02-17 19:10:59 UTC (rev 795) @@ -1,46 +1,46 @@ -<?xml version="1.0"?> -<%@ page import="java.util.List" %> -<%@ page import="java.util.Locale" %> -<%@ page import="org.apache.commons.lang.StringEscapeUtils" %> -<%@ page import="org.springframework.web.context.ContextLoader" %> -<%@ page import="org.springframework.web.context.WebApplicationContext" %> -<%@ page import="net.jetrix.monitor.ServerInfo" %> -<%@ page import="net.jetrix.monitor.dao.ServerInfoDao" %> -<%@ page contentType="text/xml" pageEncoding="UTF-8" %> -<% - WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext(); - ServerInfoDao dao = (ServerInfoDao) context.getBean("serverInfoDao"); - - List<ServerInfo> servers = dao.getServers(); -%> -<tetrinet-servers> -<% for (ServerInfo server : servers) { - // skip offline servers - if (!server.isOnline()) { - continue; - } -%> - <server - id="<%= server.getId() %>" - name="<%= server.getHostname() %>" -<% if (server.getVersion() != null) { %> - version="<%= StringEscapeUtils.escapeXml(server.getVersion()) %>" -<% } %> -<% if (server.getDescription() != null) { %> - description="<%= StringEscapeUtils.escapeXml(server.getDescription()) %>" -<% } %> - spec="<%= server.isSpectate() ? "true" : "false" %>" -<% if (server.getCountry() != null) { - Locale locale = new Locale("en", server.getCountry()); -%> - country="<%= server.getCountry() %>" - countryName="<%= locale.getDisplayCountry(Locale.ENGLISH) %>" -<% } %> - ping="<%= server.getStats().getPing() %>" - players="<%= server.getStats().getPlayerCount() %>" - activePlayers="<%= server.getStats().getActivePlayerCount() %>" - channels="<%= server.getStats().getChannelCount() %>" - activeChannels="<%= server.getStats().getActiveChannelCount() %>" - /> -<% } %> -</tetrinet-servers> +<?xml version="1.0"?> +<%@ page import="java.util.List" %> +<%@ page import="java.util.Locale" %> +<%@ page import="org.apache.commons.lang.StringEscapeUtils" %> +<%@ page import="org.springframework.web.context.ContextLoader" %> +<%@ page import="org.springframework.web.context.WebApplicationContext" %> +<%@ page import="net.jetrix.monitor.ServerInfo" %> +<%@ page import="net.jetrix.monitor.dao.ServerInfoDao" %> +<%@ page contentType="text/xml" pageEncoding="UTF-8" %> +<% + WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext(); + ServerInfoDao dao = (ServerInfoDao) context.getBean("serverInfoDao"); + + List<ServerInfo> servers = dao.getServers(); +%> +<tetrinet-servers> +<% for (ServerInfo server : servers) { + // skip offline servers + if (!server.isOnline()) { + continue; + } +%> + <server + id="<%= server.getId() %>" + name="<%= server.getHostname() %>" +<% if (server.getVersion() != null) { %> + version="<%= StringEscapeUtils.escapeXml(server.getVersion()) %>" +<% } %> +<% if (server.getDescription() != null) { %> + description="<%= StringEscapeUtils.escapeXml(server.getDescription()) %>" +<% } %> + spec="<%= server.isSpectate() ? "true" : "false" %>" +<% if (server.getCountry() != null) { + Locale locale = new Locale("en", server.getCountry()); +%> + country="<%= server.getCountry() %>" + countryName="<%= locale.getDisplayCountry(Locale.ENGLISH) %>" +<% } %> + ping="<%= server.getStats().getPing() %>" + players="<%= server.getStats().getPlayerCount() %>" + activePlayers="<%= server.getStats().getActivePlayerCount() %>" + channels="<%= server.getStats().getChannelCount() %>" + activeChannels="<%= server.getStats().getActiveChannelCount() %>" + /> +<% } %> +</tetrinet-servers> Property changes on: monitor/trunk/src/main/webapp/servers-xml.jsp ___________________________________________________________________ Added: svn:keywords + Date Author Id Revision HeadURL Added: svn:eol-style + native Modified: monitor/trunk/src/main/webapp/spec.jsp =================================================================== --- monitor/trunk/src/main/webapp/spec.jsp 2009-02-17 19:08:39 UTC (rev 794) +++ monitor/trunk/src/main/webapp/spec.jsp 2009-02-17 19:10:59 UTC (rev 795) @@ -1,47 +1,47 @@ -<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %> -<%@ page import="org.springframework.web.context.ContextLoader" %> -<%@ page import="org.springframework.web.context.WebApplicationContext" %> -<%@ page import="net.jetrix.monitor.dao.ServerInfoDao" %> -<%@ page import="net.jetrix.monitor.ServerInfo" %> -<% - WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext(); - ServerInfoDao dao = (ServerInfoDao) context.getBean("serverInfoDao"); - - ServerInfo server = dao.getServer(Long.parseLong(request.getParameter("id"))); - - String channel = request.getParameter("channel"); -%> -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> - <title> - <fmt:message key="title.channel"> - <fmt:param><%= channel %></fmt:param> - <fmt:param><%= server.getHostname() %></fmt:param> - </fmt:message> - </title> - <link rel="stylesheet" type="text/css" href="stylesheets/style.css"> - <link rel="Shorcut Icon" href="favicon.ico"> -</head> -<body> - -<h1> - <fmt:message key="title.channel"> - <fmt:param><%= channel %></fmt:param> - <fmt:param><%= server.getHostname() %></fmt:param> - </fmt:message> -</h1> - -<div align="center"> -<applet code="net.jetrix.spectator.SpectatorApplet" archive="webspec-0.1-SNAPSHOT.jar,jetrix-0.3-SNAPSHOT.jar" width="640" height="480"> - <param name="hostname" value="<%= server.getHostname() %>"> - <param name="password" value="<%= server.getSpectatorPassword() %>"> - <param name="menu" value="false"> - <param name="channel" value="#<%= channel %>"> -</applet> -</div> - -<a href="server.jsp?id=<%= server.getId() %>"><fmt:message key="message.back-to-server-info"/></a> - -</body> -</html> +<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %> +<%@ page import="org.springframework.web.context.ContextLoader" %> +<%@ page import="org.springframework.web.context.WebApplicationContext" %> +<%@ page import="net.jetrix.monitor.dao.ServerInfoDao" %> +<%@ page import="net.jetrix.monitor.ServerInfo" %> +<% + WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext(); + ServerInfoDao dao = (ServerInfoDao) context.getBean("serverInfoDao"); + + ServerInfo server = dao.getServer(Long.parseLong(request.getParameter("id"))); + + String channel = request.getParameter("channel"); +%> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <title> + <fmt:message key="title.channel"> + <fmt:param><%= channel %></fmt:param> + <fmt:param><%= server.getHostname() %></fmt:param> + </fmt:message> + </title> + <link rel="stylesheet" type="text/css" href="stylesheets/style.css"> + <link rel="Shorcut Icon" href="favicon.ico"> +</head> +<body> + +<h1> + <fmt:message key="title.channel"> + <fmt:param><%= channel %></fmt:param> + <fmt:param><%= server.getHostname() %></fmt:param> + </fmt:message> +</h1> + +<div align="center"> +<applet code="net.jetrix.spectator.SpectatorApplet" archive="webspec-0.1-SNAPSHOT.jar,jetrix-0.3-SNAPSHOT.jar" width="640" height="480"> + <param name="hostname" value="<%= server.getHostname() %>"> + <param name="password" value="<%= server.getSpectatorPassword() %>"> + <param name="menu" value="false"> + <param name="channel" value="#<%= channel %>"> +</applet> +</div> + +<a href="server.jsp?id=<%= server.getId() %>"><fmt:message key="message.back-to-server-info"/></a> + +</body> +</html> Property changes on: monitor/trunk/src/main/webapp/spec.jsp ___________________________________________________________________ Added: svn:keywords + Date Author Id Revision HeadURL Added: svn:eol-style + native Modified: monitor/trunk/src/main/webapp/stylesheets/style.css =================================================================== --- monitor/trunk/src/main/webapp/stylesheets/style.css 2009-02-17 19:08:39 UTC (rev 794) +++ monitor/trunk/src/main/webapp/stylesheets/style.css 2009-02-17 19:10:59 UTC (rev 795) @@ -1,38 +1,38 @@ -body { - font-family: sans-serif; - width: 75%; - margin-left: auto; - margin-right: auto; - border: 1px solid #d3d3d3; - padding: 0 1em 1em 1em; - -moz-border-radius: 10px; - font-size: 80%; -} - -img { - border: 0; -} - -.thin { - border-collapse: collapse; - border-width: 1px; - border-color: black; -} - -.thin th { - background-color: #dddddd; -} - -.thin th, .thin td { - padding: .3em; - border-color: black; -} - -.thin th a { - text-decoration: none; - color: black; -} - -.sortarrow { - display: none; -} +body { + font-family: sans-serif; + width: 75%; + margin-left: auto; + margin-right: auto; + border: 1px solid #d3d3d3; + padding: 0 1em 1em 1em; + -moz-border-radius: 10px; + font-size: 80%; +} + +img { + border: 0; +} + +.thin { + border-collapse: collapse; + border-width: 1px; + border-color: black; +} + +.thin th { + background-color: #dddddd; +} + +.thin th, .thin td { + padding: .3em; + border-color: black; +} + +.thin th a { + text-decoration: none; + color: black; +} + +.sortarrow { + display: none; +} Property changes on: monitor/trunk/src/main/webapp/stylesheets/style.css ___________________________________________________________________ Added: svn:keywords + Date Author Id Revision HeadURL Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |