mirror of
https://github.com/FAUSheppy/open-web-leaderboard.git
synced 2025-12-06 15:11:35 +01:00
improve usability
This commit is contained in:
@@ -12,6 +12,7 @@ PARAM_START = "start"
|
|||||||
PARAM_END = "end"
|
PARAM_END = "end"
|
||||||
|
|
||||||
BASE_URL = "http://{server}{path}?{paramStart}={start}&{paramEnd}={end}"
|
BASE_URL = "http://{server}{path}?{paramStart}={start}&{paramEnd}={end}"
|
||||||
|
MAX_ENTRY = "http://{server}/getmaxentries"
|
||||||
SEGMENT = 100
|
SEGMENT = 100
|
||||||
SEPERATOR = ','
|
SEPERATOR = ','
|
||||||
|
|
||||||
@@ -84,14 +85,17 @@ def leaderboard():
|
|||||||
|
|
||||||
end = start + SEGMENT
|
end = start + SEGMENT
|
||||||
|
|
||||||
|
|
||||||
# request and check if we are within range #
|
# request and check if we are within range #
|
||||||
|
maxEntryUrl = MAX_ENTRY.format(server=SERVER)
|
||||||
|
maxEntry = int(requests.get(maxEntryUrl).content)
|
||||||
|
reachedEnd = False
|
||||||
|
if end > maxEntry:
|
||||||
|
start = maxEntry - ( maxEntry % SEGMENT ) - 1
|
||||||
|
end = maxEntry - 1
|
||||||
|
reachedEnd = True
|
||||||
|
|
||||||
|
# do the actual request #
|
||||||
responseString = requestRange(start, end)
|
responseString = requestRange(start, end)
|
||||||
if "MAXENTRY:" in responseString:
|
|
||||||
maxentry = int(responseString.split(":")[1])
|
|
||||||
start = maxentry - SEGMENT - 1
|
|
||||||
end = maxentry - 1
|
|
||||||
responseString = requestRange(start, end)
|
|
||||||
|
|
||||||
# create relevant html-lines from player
|
# create relevant html-lines from player
|
||||||
players = [Player(line) for line in responseString.split("\n")]
|
players = [Player(line) for line in responseString.split("\n")]
|
||||||
@@ -106,11 +110,16 @@ def leaderboard():
|
|||||||
playerRatin="Rating", \
|
playerRatin="Rating", \
|
||||||
playerGames="Games", \
|
playerGames="Games", \
|
||||||
playerWinratio="Winratio"))
|
playerWinratio="Winratio"))
|
||||||
|
|
||||||
|
endOfBoardIndicator = ""
|
||||||
|
if reachedEnd:
|
||||||
|
endOfBoardHtml = "<div id='eof' class=endOfBoardIndicator> - - - End of Board - - - </div>"
|
||||||
|
endOfBoardIndicator = flask.Markup(endOfBoardHtml)
|
||||||
|
|
||||||
finalResponse = flask.render_template("base.html", playerList=players, \
|
finalResponse = flask.render_template("base.html", playerList=players, \
|
||||||
columNames=columContent, \
|
columNames=columContent, \
|
||||||
start=start)
|
start=start, \
|
||||||
|
endOfBoardIndicator=endOfBoardIndicator)
|
||||||
return finalResponse
|
return finalResponse
|
||||||
|
|
||||||
@app.route('/static/<path:path>')
|
@app.route('/static/<path:path>')
|
||||||
|
|||||||
@@ -1,17 +1,32 @@
|
|||||||
|
/* disable buttons if nessesary */
|
||||||
|
var url = new URL(window.location.href)
|
||||||
|
var page = url.searchParams.get("page")
|
||||||
|
var buttonBackward = document.getElementById("button-backward")
|
||||||
|
var buttonForward = document.getElementById("button-forward")
|
||||||
|
var buttonFirst = document.getElementById("button-first")
|
||||||
|
var isLastPage = document.getElementById("eof")
|
||||||
|
|
||||||
|
if(!page || page == "0"){
|
||||||
|
buttonBackward.disabled = true
|
||||||
|
buttonFirst.disabled = true
|
||||||
|
|
||||||
|
buttonBackward.classList.add("disabled")
|
||||||
|
buttonFirst.classList.add("disabled")
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isLastPage){
|
||||||
|
buttonForward.disabled = true;
|
||||||
|
buttonForward.classList.add("disabled")
|
||||||
|
}
|
||||||
|
|
||||||
function forward(){
|
function forward(){
|
||||||
|
|
||||||
var url = new URL(window.location.href)
|
|
||||||
var start = url.searchParams.get("start")
|
|
||||||
var page = url.searchParams.get("page")
|
|
||||||
|
|
||||||
/* clean URL from unessesary parameters */
|
/* clean URL from unessesary parameters */
|
||||||
url.searchParams.delete("goto")
|
url.searchParams.delete("goto")
|
||||||
url.searchParams.delete("start")
|
|
||||||
|
|
||||||
if(page){
|
if(page){
|
||||||
page = parseInt(page) + 1
|
page = parseInt(page) + 1
|
||||||
}else if(start){
|
|
||||||
page = Math.trunc(parseInt(start)/100) + 1
|
|
||||||
}else{
|
}else{
|
||||||
page = 1
|
page = 1
|
||||||
}
|
}
|
||||||
@@ -22,21 +37,14 @@ function forward(){
|
|||||||
}
|
}
|
||||||
function backward(){
|
function backward(){
|
||||||
|
|
||||||
var url = new URL(window.location.href)
|
|
||||||
var start = url.searchParams.get("start")
|
|
||||||
var page = url.searchParams.get("page")
|
|
||||||
|
|
||||||
/* clean URL from unessesary parameters */
|
/* clean URL from unessesary parameters */
|
||||||
url.searchParams.delete("goto")
|
url.searchParams.delete("goto")
|
||||||
url.searchParams.delete("start")
|
|
||||||
|
|
||||||
if(page){
|
if(page){
|
||||||
page = parseInt(page) - 1
|
page = parseInt(page) - 1
|
||||||
if(page < 0){
|
if(page < 0){
|
||||||
page = 0
|
page = 0
|
||||||
}
|
}
|
||||||
}else if(start){
|
|
||||||
page = Math.trunc(parseInt(start)/100) - 1
|
|
||||||
}else{
|
}else{
|
||||||
page = 0
|
page = 0
|
||||||
}
|
}
|
||||||
@@ -59,7 +67,6 @@ var gotoRankInputField = document.getElementById("gotoRank");
|
|||||||
gotoRankInputField.addEventListener("keyup", function(event) {
|
gotoRankInputField.addEventListener("keyup", function(event) {
|
||||||
if (event.key == "Enter") {
|
if (event.key == "Enter") {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
var url = new URL(window.location.href)
|
|
||||||
var rank = gotoRankInputField.value
|
var rank = gotoRankInputField.value
|
||||||
var page = Math.trunc((rank - 1)/100)
|
var page = Math.trunc((rank - 1)/100)
|
||||||
url.searchParams.set("page", page)
|
url.searchParams.set("page", page)
|
||||||
|
|||||||
@@ -32,6 +32,10 @@ body{
|
|||||||
color: #583535;
|
color: #583535;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.disabled {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
.input-field{
|
.input-field{
|
||||||
float: left;
|
float: left;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
@@ -61,6 +65,7 @@ body{
|
|||||||
padding-top: 2px;
|
padding-top: 2px;
|
||||||
padding-bottom: 2px;
|
padding-bottom: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.line-odd{
|
.line-odd{
|
||||||
width: 100%;
|
width: 100%;
|
||||||
background-color: lightgrey;
|
background-color: lightgrey;
|
||||||
@@ -69,6 +74,12 @@ body{
|
|||||||
padding-bottom: 2px;
|
padding-bottom: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.endOfBoardIndicator{
|
||||||
|
background: red;
|
||||||
|
text-align: center;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
/* ############# PLAYER INFORMATION IN LINES ############# */
|
/* ############# PLAYER INFORMATION IN LINES ############# */
|
||||||
.playerRank{
|
.playerRank{
|
||||||
float: left;
|
float: left;
|
||||||
@@ -84,7 +95,6 @@ body{
|
|||||||
float: right;
|
float: right;
|
||||||
width: 20%;
|
width: 20%;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.playerGames{
|
.playerGames{
|
||||||
|
|||||||
@@ -5,9 +5,12 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class=top-bar>
|
<div class=top-bar>
|
||||||
<button type="button" onclick=forward() class=top-button>Forward </button>
|
<button id="button-backward" type="button" onclick=backward()
|
||||||
<button type="button" onclick=backward() class=top-button>Backward</button>
|
class=top-button>Backward </button>
|
||||||
<button type="button" onclick=firstPage() class=top-button>Top 100 </button>
|
<button id="button-forward" type="button" onclick=forward()
|
||||||
|
class=top-button>Forward</button>
|
||||||
|
<button id="button-first" type="button" onclick=firstPage()
|
||||||
|
class=top-button>Top 100 </button>
|
||||||
|
|
||||||
<input id="getPlayer" type="text" class=input-field placeholder="search player...">
|
<input id="getPlayer" type="text" class=input-field placeholder="search player...">
|
||||||
<input id="gotoRank" type="number" class=input-field placeholder="goto rank...">
|
<input id="gotoRank" type="number" class=input-field placeholder="goto rank...">
|
||||||
@@ -23,6 +26,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{% set count = count + 1 %}
|
{% set count = count + 1 %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
{{ endOfBoardIndicator }}
|
||||||
</div>
|
</div>
|
||||||
<div class=footer>
|
<div class=footer>
|
||||||
<a class="footerLink" href="https://blog.atlantishq.de/about">Impressum/Legal</a>
|
<a class="footerLink" href="https://blog.atlantishq.de/about">Impressum/Legal</a>
|
||||||
|
|||||||
Reference in New Issue
Block a user