mirror of
https://github.com/RYGhub/royalnet.git
synced 2024-11-27 13:34:28 +00:00
2
This commit is contained in:
parent
95ac87e9ae
commit
1a20ad296a
4 changed files with 53 additions and 8 deletions
34
db.py
34
db.py
|
@ -257,9 +257,39 @@ class Dota(Base):
|
|||
losses = Column(Integer, nullable=False)
|
||||
|
||||
def get_rank_icon_url(self):
|
||||
# Rank icon is determined by the first digit of the rank tier
|
||||
return f"https://www.opendota.com/assets/images/dota2/rank_icons/rank_icon_{str(self.rank_tier)[0] if self.rank_tier is not None else '0'}.png"
|
||||
|
||||
def get_rank_stars_url(self):
|
||||
# Rank stars are determined by the second digit of the rank tier
|
||||
if self.rank_tier is None or str(self.rank_tier)[1] == "0":
|
||||
return ""
|
||||
return f"https://www.opendota.com/assets/images/dota2/rank_icons/rank_star_{str(self.rank_tier)[1]}.png"
|
||||
|
||||
def get_rank_name(self):
|
||||
# This should probably be an enum, but who cares
|
||||
if self.rank_tier is None or self.rank_tier < 10:
|
||||
return f"https://www.opendota.com/assets/images/dota2/rank_icons/rank_icon_0.png"
|
||||
return f"https://www.opendota.com/assets/images/dota2/rank_icons/rank_icon_{self.rank_tier - 10 // 6}.png"
|
||||
return "Unranked"
|
||||
number = str(self.rank_tier)[0]
|
||||
if number == "1":
|
||||
return "Harald"
|
||||
elif number == "2":
|
||||
return "Guardian"
|
||||
elif number == "3":
|
||||
return "Crusader"
|
||||
elif number == "4":
|
||||
return "Archon"
|
||||
elif number == "5":
|
||||
return "Legend"
|
||||
elif number == "6":
|
||||
return "Ancient"
|
||||
elif number == "7":
|
||||
return "Divine"
|
||||
|
||||
def get_rank_number(self):
|
||||
if self.rank_tier is None or self.rank_tier < 10:
|
||||
return ""
|
||||
return str(self.rank_tier)[1]
|
||||
|
||||
@staticmethod
|
||||
def create(session: Session, steam_id: int):
|
||||
|
|
|
@ -31,6 +31,11 @@ table.dota th {
|
|||
border-bottom: 1px solid #666 !important;
|
||||
}
|
||||
|
||||
.dota-rank-medal-stars {
|
||||
position: relative;
|
||||
left: -32px;
|
||||
}
|
||||
|
||||
.rl-rank-hidden {
|
||||
display: none;
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Leaderboards - RYG</title>
|
||||
<script src="{{ url_for('static', filename='sorttable.js') }}"></script>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css"
|
||||
|
@ -32,7 +33,16 @@
|
|||
<td>{{ record.steam.royal.username }}</td>
|
||||
<td><a href="http://steamcommunity.com/profiles/{{ record.steam.steam_id }}"><img src="{{ record.steam.avatar_url() }}"> {{ record.steam.persona_name }}</a></td>
|
||||
<td>{{ record.wins }}</td>
|
||||
<td><img sorttable_customkey={{ record.rank_tier }} class="thirtytwo" src="{{ record.get_rank_icon_url() }}"></td>
|
||||
<td sorttable_customkey="{{ record.rank_tier }}">
|
||||
<div class="dota-rank-medal">
|
||||
<img class="thirtytwo dota-rank-medal-icon" src="{{ record.get_rank_icon_url() }}">{% if record.get_rank_stars_url() %}<img class="thirtytwo dota-rank-medal-stars" src="{{ record.get_rank_stars_url() }}">{% endif %}
|
||||
{% if record.rank_tier is not none and record.rank_tier >= 10 %}
|
||||
{{ record.get_rank_name() }} {{ record.get_rank_number() }}
|
||||
{% else %}
|
||||
<span class="rl-unranked">Unranked</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
|
|
10
webserver.py
10
webserver.py
|
@ -10,11 +10,11 @@ app.jinja_env.lstrip_blocks = True
|
|||
@app.route("/leaderboards")
|
||||
def page_leaderboards():
|
||||
session = Session()
|
||||
dota_data = session.query(Dota).options(joinedload(Dota.steam).joinedload(Steam.royal)).join(Steam).join(Royal).all()
|
||||
rl_data = session.query(RocketLeague).options(joinedload(RocketLeague.steam).joinedload(Steam.royal)).join(Steam).join(Royal).all()
|
||||
ow_data = session.query(Overwatch).options(joinedload(Overwatch.royal)).join(Royal).all()
|
||||
osu_data = session.query(Osu).options(joinedload(Osu.royal)).join(Royal).all()
|
||||
lol_data = session.query(LeagueOfLegends).options(joinedload(LeagueOfLegends.royal)).join(Royal).all()
|
||||
dota_data = session.query(Dota).options(joinedload(Dota.steam).joinedload(Steam.royal)).join(Steam).join(Royal).order_by(Dota.rank_tier).all()
|
||||
rl_data = session.query(RocketLeague).options(joinedload(RocketLeague.steam).joinedload(Steam.royal)).join(Steam).join(Royal).order_by(RocketLeague.doubles_mmr).all()
|
||||
ow_data = session.query(Overwatch).options(joinedload(Overwatch.royal)).join(Royal).order_by(Overwatch.rank).all()
|
||||
osu_data = session.query(Osu).options(joinedload(Osu.royal)).join(Royal).order_by(Osu.std_pp).all()
|
||||
lol_data = session.query(LeagueOfLegends).options(joinedload(LeagueOfLegends.royal)).join(Royal).order_by(LeagueOfLegends.summoner_name).all()
|
||||
session.close()
|
||||
return render_template("leaderboards.html", dota_data=dota_data, rl_data=rl_data, ow_data=ow_data, osu_data=osu_data, lol_data=lol_data)
|
||||
|
||||
|
|
Loading…
Reference in a new issue