diff --git a/medals.py b/medals.py
new file mode 100644
index 0000000..8d53724
--- /dev/null
+++ b/medals.py
@@ -0,0 +1,93 @@
+import flask
+
+medalDict = { "games-played-1" : { "name" : "Tourist",
+ "text" : "Played {} games on this server",
+ "color" : "white",
+ "text-color" : "black" },
+
+ "games-played-2" : { "name" : "Enlisted",
+ "text" : "Played {} games on this server",
+ "color": "green",
+ "text-color" : "white" },
+
+ "games-played-3" : { "name" : "Veteran",
+ "text" : "Played {} games on this server",
+ "color" : "yellow",
+ "text-color" : "black" },
+
+ "rating-cur-1" : { "name" : "Slightly skilled",
+ "text" : "Rated above 1500",
+ "color" : "beige",
+ "text-color" : "black" },
+
+ "rating-2k-1" : { "name" : "Contender",
+ "text" : "Played {} games above 2000 rating",
+ "color" : "coral",
+ "text-color" : "black" },
+ "rating-2k-2" : { "name" : "Known Contender",
+ "text" : "Played {} games above 2000 rating",
+ "color" : "lightgreen",
+ "text-color" : "black" },
+
+ "rating-3k-1" : { "name" : "Epic",
+ "text" : "Played {} games above 3000 rating",
+ "color" : "lightblue",
+ "text-color" : "black" },
+ "rating-3k-2" : { "name" : "Legend",
+ "text" : "Played {} games above 3000 rating",
+ "color" : "orange",
+ "text-color" : "black" },
+ "rating-3k-3" : { "name" : "All Along The Watchtower",
+ "text" : "Played {} games above 3000 rating",
+ "color" : "red",
+ "text-color" : "black" },
+ }
+
+def medalGen(medal, formatInsert=None):
+ '''Gen HTML for metal'''
+ html = '\
+
\
+ {text}\
+
\
+ '
+ tmp = html.format(bg=medal["color"], tooltip=medal["text"], text=medal["name"],
+ color=medal["text-color"])
+ if formatInsert:
+ tmp = tmp.format(formatInsert)
+ return flask.Markup(tmp)
+
+def getMedals(ratingList, gamesPlayed, currentRating):
+ '''Get Medals this player should have'''
+ medals = []
+
+ if gamesPlayed > 500:
+ medals += [medalGen(medalDict["games-played-3"], gamesPlayed)]
+ elif gamesPlayed > 100:
+ medals += [medalGen(medalDict["games-played-2"], gamesPlayed)]
+ elif gamesPlayed > 50:
+ medals += [medalGen(medalDict["games-played-1"], gamesPlayed)]
+
+ games2k = len(list(filter(lambda x: x > 2000, ratingList)))
+ games3k = len(list(filter(lambda x: x > 3000, ratingList)))
+
+ if games2k > 100:
+ medals += [medalGen(medalDict["rating-2k-2"], games2k)]
+ elif games2k > 0:
+ medals += [medalGen(medalDict["rating-2k-1"], games2k)]
+
+ if games3k > 200:
+ medals += [medalGen(medalDict["rating-3k-3"], game3k)]
+
+ if games3k > 50:
+ medals += [medalGen(medalDict["rating-3k-2"], games3k)]
+ elif games3k > 5:
+ medals += [medalGen(medalDict["rating-3k-1"], games3k)]
+
+ if currentRating > 1500:
+ medals += [medalGen(medalDict["rating-cur-1"])]
+
+ return medals
+
+
diff --git a/server.py b/server.py
index 51de4a4..39245cb 100755
--- a/server.py
+++ b/server.py
@@ -1,4 +1,5 @@
#!/usr/bin/python3
+import medals
import flask
import requests
import argparse
@@ -159,16 +160,29 @@ def player():
minRating = 3000
maxRating = 0
+ # data for medals #
+ medalsRatingList = []
+
if histData:
datapoints = histData[playerId]
if datapoints:
tickCounter = 10
for dpk in datapoints.keys():
+
+ # timestamp #
t = datetime.datetime.fromtimestamp(int(float(dpk)))
tsMs = str(int(t.timestamp() * 1000))
- ratingString = str(int(datapoints[dpk]["mu"]) - 2*int(datapoints[dpk]["sigma"]))
+
+ computedRating = int(datapoints[dpk]["mu"]) - 2*int(datapoints[dpk]["sigma"])
+
+ # for medals #
+ medalsRatingList += [computedRating]
+
+ # for moment js #
+ ratingString = str(computedRating)
ratingAmored = '{ x : ' + tsMs + ', y : ' + ratingString + '}'
+
csv_timestamps += [str(tsMs)]
csv_ratings += [ratingAmored]
@@ -181,6 +195,8 @@ def player():
maxRating = max(maxRating, int(ratingString))
yMin, yMax = prettifyMinMaxY(minRating, maxRating)
+
+ medalsList = medals.getMedals(medalsRatingList, player.games, player.rating)
# change displayed rank to start from 1 :)
player.rank += 1
@@ -188,7 +204,7 @@ def player():
return flask.render_template("player.html", player=player, CSV_RATINGS=",".join(csv_ratings),
CSV_MONTH_YEAR_OF_RATINGS=",".join(csv_month_year),
CSV_TIMESTAMPS=csv_timestamps,
- Y_MIN=yMin, Y_MAX=yMax)
+ Y_MIN=yMin, Y_MAX=yMax, medals=medalsList)
@app.route('/leaderboard')
@app.route('/')
diff --git a/templates/player.html b/templates/player.html
index 6d45b2c..1fed57f 100644
--- a/templates/player.html
+++ b/templates/player.html
@@ -27,6 +27,11 @@
+
+ {% for m in medals %}
+ {{ m }}
+ {% endfor %}
+