<%@ Language="Jscript" %> <% function addGraph(userid, img) { //get all games that are finished var rsGame = Server.CreateObject("adodb.recordset"); sql = "select * from game where gamestatusid = 3 AND rated = 1 AND user1rating IS NOT NULL "; sql += "AND (user1id = " + userid + " OR user2id = " + userid + ") "; if (enddate != "undefined") sql += " AND completetime <= '" + enddate + "' "; sql += "order by completetime"; rsGame.Open(sql, conn); var totalpoints = 0; var xpos = 0; var xpos_old = 0; var ypos = height; var ypos_old = height; while (!(rsGame.eof || rsGame.bof)) { //get the time var completedate = String(rsGame("completetime")); var y = completedate.substr(0, 4); var m = completedate.substr(5, 2); var d = completedate.substr(8, 2); cd = new Date(y, m - 1, d); if (String(rsGame("user1id")) == userid) var points = Number(rsGame("user1rating")); else var points = Number(rsGame("user2rating")); if (xpos == 0) { xpos = Math.round((cd.valueOf() - dstart.valueOf()) / xinterval) - 1; img.Line(xpos_old, ypos_old, xpos, ypos); xpos_old = xpos; } totalpoints += points; xpos = Math.round((cd.valueOf() - dstart.valueOf()) / xinterval); ypos = height - (totalpoints * yinterval); if (xpos_old >= xpos) xpos = xpos_old + 1; img.Line(xpos_old, ypos_old, xpos, ypos); xpos_old = xpos; ypos_old = ypos; rsGame.movenext(); } img.Line(xpos_old, ypos_old, xpos, ypos); img.Line(xpos, ypos, width, ypos); } var obj = Server.CreateObject("shotgraph.image"); //image dimensions var vsize = 500; var hsize = 500; var width = hsize - 100; var height = vsize; var pointmax = 500; var dstart = new Date(2003, 03 - 1, 20); var enddate = String(Request.QueryString("enddate")); if (enddate == "undefined") var dnow = new Date(); else { var y = enddate.substr(0, 4); var m = enddate.substr(5, 2); var d = enddate.substr(8, 2); dnow = new Date(y, m - 1, d); } var ddifference = dnow.valueOf() - dstart.valueOf(); xinterval = ddifference.valueOf() / width; yinterval = height / pointmax; obj.CreateImage(hsize, vsize, 16); //set the colors obj.SetColor(10, 100, 0, 0); obj.SetColor(1, 204, 153, 0); obj.SetColor(2, 153, 204, 0); obj.SetColor(3, 0, 204, 204); obj.SetColor(4, 0, 102, 204); obj.SetColor(5, 153, 0, 204); obj.SetColor(6, 255, 0, 0); obj.SetColor(7, 0, 0, 100); obj.SetColor(8, 100, 100, 100); obj.SetColor(9, 255, 255, 0); obj.SetColor(14, 220, 220, 220); obj.SetColor(15, 0, 0, 0); obj.SetBgColor(14); obj.SetBkColor(14); obj.FillRect(0, 0, hsize, vsize); //loop through all players with a rating higher than 1220 var rsUser = Server.CreateObject("adodb.recordset"); sql = "select top 15 * from [user] where rating > 1050 "; sql += "order by rating desc"; rsUser.Open(sql, conn); i = 1; k = 1; obj.CreateFont("Verdana", 1, 12, 0, false, false, false, false); while (!(rsUser.eof || rsUser.bof)) { obj.SetDrawColor(i); obj.CreatePen("PS_SOLID", 1, i); addGraph(Number(rsUser("id")), obj); obj.CreatePen("PS_SOLID", 3, i); obj.Line(hsize - 90, k * 15, hsize - 85, k * 15); obj.TextOut(hsize - 80, (k * 15) - 6, k + ". " + String(rsUser("username"))); i++; k++; if (i > 10) i = 1; rsUser.movenext; } //draw an image border var x1 = 0; var x2 = vsize - 1; var y1 = 0; var y2 = hsize - 1; obj.SetDrawColor(15); obj.Line(y1, x1, y1, x2); obj.Line(y2, x2, y1, x2); obj.Line(y2, x2, y2, x1); obj.Line(y1, x1, y2, x1); //draw the scale j = 1000; jinterval = height / pointmax; while (j < (pointmax + 1000 - 50)) { j += 50; level = height - ((j - 1000) * jinterval); obj.Line(0, level, width, level) obj.TextOut(12, level - 6, String(j)); } //write the title obj.CreateFont("Verdana", 1, 17, 0, false, false, false, false); obj.TextOut(70, 14, "Top 15 history"); var image = obj.GifImage(0, 1, ""); Response.ContentType = "image/gif"; Response.BinaryWrite(image); %>