diff --git a/open-leaderboard-server.py b/open-leaderboard-server.py
index a412ab0..0011d4b 100755
--- a/open-leaderboard-server.py
+++ b/open-leaderboard-server.py
@@ -13,13 +13,42 @@ PARAM_END = "end"
BASE_URL = "http://{server}{path}?{paramStart}={start}&{paramEnd}={end}"
SEGMENT = 100
+SEPERATOR = ','
class Player:
def __init__(self, line):
- pass
+ '''Initialize a player object later to be serialized to HTML'''
- def getLineHTML(self):
- pass
+ # parse input line #
+ name, playerID, rating, games, wins = line.split(SEPERATOR)
+
+ # set relevant values #
+ self.name = name
+ self.playerID = playerID
+ self.rating = int(float(rating))
+ self.games = int(games)
+ self.wins = int(wins)
+ self.loses = self.games - self.wins
+
+ # determine winratio #
+ if self.games == 0:
+ self.winratio = "N/A"
+ else:
+ self.winratio = str(int(self.wins/self.games * 100))
+
+ def getLineHTML(self, rank):
+ '''Build a single line for a specific player in the leaderboard'''
+
+ string = flask.render_template("playerLine.html", \
+ playerRank = rank, \
+ playerName = self.name, \
+ playerRating = self.rating, \
+ playerGames = self.games, \
+ playerWinratio = self.winratio)
+
+ # mark returned string as preformated html #
+ return flask.Markup(string)
+
@app.route('/leaderboard')
def leaderboard():
@@ -46,33 +75,26 @@ def leaderboard():
start=start, \
end=end)
- response = str(requests.get(requestURL), "utf-8")
+ responseString = str(requests.get(requestURL).content, "utf-8")
# create relevant html-lines from player
- players = [Player(line) for line in response.split("\n")]
- playersHTMLs = [p.getLineHTML() for p in players]
+ players = [Player(line) for line in responseString.split("\n")]
# sanity check reponse #
if len(players) > 100:
raise ValueError("Bad reponse from rating server")
- # template html #
- leaderBoardColumnNames = "
{}
"
- leaderBoardEvenLine = "{}
"
- leaderBoardOddLine = "{}
"
-
columContent = "LOL"
- leaderBoardContent = leaderBoardColumnNames.format(columContent)
- for i in range(0, len(players)):
- if i%2 == 0:
- leaderBoardContent += leaderBoardEvenLine.format(players[i].getLineHTML())
- else:
- leaderBoardContent += leaderBoardOdd.format(players[i].getLineHTML())
-
- finalResponse = render_template("base.html",
+ finalResponse = flask.render_template("base.html", playerList=players, \
+ columNames=columContent, \
+ start=start)
return finalResponse
+@app.route('/static/')
+def send_js(path):
+ return send_from_directory('static', path)
+
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Start open-leaderboard')
diff --git a/static/site.css b/static/site.css
index 5f8a5db..faaf437 100644
--- a/static/site.css
+++ b/static/site.css
@@ -52,12 +52,48 @@ body{
}
.line-even{
- width: 100%;
+ width: 100%;
background-color: grey;
+ overflow: hidden;
+ padding-top: 2px;
+ padding-bottom: 2px;
}
.line-odd{
width: 100%;
background-color: lightgrey;
+ overflow: hidden;
+ padding-top: 2px;
+ padding-bottom: 2px;
+}
+
+/* ############# PLAYER INFORMATION IN LINES ############# */
+.playerRank{
+ float: left;
+ width: 10%;
+}
+
+.playerName{
+ float: left;
+ width: 30%;
+}
+
+.playerRating{
+ float: right;
+ width: 20%;
+ text-align: right;
+
+}
+
+.playerGames{
+ float: right;
+ width: 20%;
+ text-align: right;
+}
+
+.playerWinratio{
+ float: right;
+ width: 20%;
+ text-align: center;
}
/* ######################## FOOTER ####################### */
diff --git a/templates/base.html b/templates/base.html
index f52453d..9b9b024 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -12,14 +12,13 @@
{{ columNames }}
- {% set count = 1 %}
+ {% set count = start+1 %}
{% for player in playerList %}
{% if count % 2 == 0 %}
-
{{ player.getLineHTML() }}
+
{{ player.getLineHTML(count) }}
{% else %}
-
{{ player.getLineHTML() }}
+
{{ player.getLineHTML(count) }}
{% endif %}
-
{% set count = count + 1 %}
{% endfor %}
diff --git a/templates/playerLine.html b/templates/playerLine.html
new file mode 100644
index 0000000..3705baa
--- /dev/null
+++ b/templates/playerLine.html
@@ -0,0 +1,5 @@
+{{ playerRank }}
+{{ playerName }}
+{{ playerWinratio }}
+{{ playerRating }}
+{{ playerGames }}