view web/scoring/high.cgi @ 44:7c789e87ee5d
Rearrange the statistics pages.
Move each game's charts onto individual pages. Put links to these
pages on /scoring/index.html, instead of dumping all the charts there.
author
John "Elwin" Edwards
date
Thu, 16 Jan 2014 11:04:45 -0800 (2014-01-16)
parents
6592cdd1fceb
children
1d8dc3ed22cf
line source
+ − #!/usr/bin/python3
+ −
+ − import sys
+ − import cgi
+ − import rlgall
+ −
+ − checkstr = '{0}:<input type="checkbox" name="g" value="{1}" checked="checked"> '
+ − uncheckstr = '{0}:<input type="checkbox" name="g" value="{1}"> '
+ −
+ − cgidata = cgi.FieldStorage()
+ −
+ − formgames = cgidata.getlist("g")
+ − if "all" in formgames:
+ − games = rlgall.gamelist
+ − else:
+ − games = []
+ − for g in rlgall.gamelist:
+ − if g.uname in formgames:
+ − games.append(g)
+ − if not games:
+ − games = rlgall.gamelist
+ −
+ − formstart = cgidata.getfirst("s")
+ − if not formstart:
+ − start = 0
+ − else:
+ − try:
+ − start = int(formstart)
+ − except ValueError:
+ − start = 0
+ − if start < 0:
+ − start = 0
+ −
+ − deflimit = (12 // len(games)) * 5
+ − formlimit = cgidata.getfirst("l")
+ − if not formlimit:
+ − limit = deflimit
+ − else:
+ − try:
+ − limit = int(formlimit)
+ − except ValueError:
+ − limit = deflimit
+ − if limit <= 0:
+ − limit = deflimit
+ −
+ −
+ − sys.stdout.write("Content-Type: text/html; charset=utf-8\r\n\r\n")
+ − sys.stdout.write(rlgall.phead.format("High Scores"))
+ − sys.stdout.write(rlgall.ptop)
+ − sys.stdout.write(rlgall.navscore.format("High Scores"))
+ − if len(games) == 1:
+ − if start == 0:
+ − intitle = "Top {0} scores for {1}".format(limit, games[0].name)
+ − else:
+ − intitle = "Scores {0} - {1} for {2}".format(start + 1, start + limit,
+ − games[0].name)
+ − sys.stdout.write(rlgall.pti.format(intitle))
+ − highlist = games[0].getHigh(limit, start)
+ − rlgall.printTable(highlist, games[0].rankfields, sys.stdout)
+ − else:
+ − if start == 0:
+ − intitle = "Top {0} scores".format(limit)
+ − else:
+ − intitle = "Scores {0} - {1}".format(start + 1, start + limit)
+ − sys.stdout.write(rlgall.pti.format(intitle))
+ − for g in games:
+ − sys.stdout.write(rlgall.secthead.format(g.name))
+ − highlist = g.getHigh(limit, start)
+ − rlgall.printTable(highlist, g.rankfields, sys.stdout)
+ − sys.stdout.write('<form action="/scoring/high.cgi" method="get">\n')
+ − sys.stdout.write('<div>Number of scores: ')
+ − sys.stdout.write('<input type="text" name="l" value="{0}">'.format(limit))
+ − sys.stdout.write(' Skip the first: ')
+ − sys.stdout.write('<input type="text" name="s" value="{0}">'.format(start))
+ − sys.stdout.write('</div><div>')
+ − for game in rlgall.gamelist:
+ − if game in games:
+ − sys.stdout.write(checkstr.format(game.name, game.uname))
+ − else:
+ − sys.stdout.write(uncheckstr.format(game.name, game.uname))
+ − sys.stdout.write('</div><div><input type="submit" value="Get Scores">')
+ − sys.stdout.write('</div></form>')
+ − sys.stdout.write(rlgall.pend)
+ − exit()