Skip to content

Commit

Permalink
fix bugs
Browse files Browse the repository at this point in the history
  • Loading branch information
eran0926 committed Aug 16, 2024
1 parent c5eb124 commit dac33cc
Show file tree
Hide file tree
Showing 10 changed files with 587 additions and 143 deletions.
34 changes: 21 additions & 13 deletions ScoreCounter/app/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ def simpleManagement():

@app.route('/board')
def board():
return render_template("board.html")
return render_template("board_combine.html")


@app.route('/leaderboard')
Expand All @@ -142,7 +142,7 @@ def control():

@app.route('/test')
def test():
return render_template("result.html")
return render_template("board_combine.html")


@app.route('/test2')
Expand Down Expand Up @@ -219,19 +219,23 @@ def commit(msg):


def update_ranks():
update_rank(match.alliance["red"].team1, "red", match.alliance["red"].score.rankingPoints,
update_rank(match.alliance["red"].team1, "red", match.alliance["red"].score.rankingPoints.total,
match.red.score.totalScoreWithPenalty, match.red.score.auto.points, match.winner)
update_rank(match.alliance["red"].team2, "red", match.alliance["red"].score.rankingPoints,
update_rank(match.alliance["red"].team2, "red", match.alliance["red"].score.rankingPoints.total,
match.red.score.totalScoreWithPenalty, match.red.score.auto.points, match.winner)
update_rank(match.alliance["blue"].team1, "blue", match.alliance["blue"].score.rankingPoints,
update_rank(match.alliance["blue"].team1, "blue", match.alliance["blue"].score.rankingPoints.total,
match.blue.score.totalScoreWithPenalty, match.blue.score.auto.points, match.winner)
update_rank(match.alliance["blue"].team2, "blue", match.alliance["blue"].score.rankingPoints,
update_rank(match.alliance["blue"].team2, "blue", match.alliance["blue"].score.rankingPoints.total,
match.blue.score.totalScoreWithPenalty, match.blue.score.auto.points, match.winner)


def update_rank(team_number, alliance, rp, total_score_with_penalty, auto_score, winner):
match_times = db.get_match_times()
match_times = db.get_match_times(team_number)
rank = db.get_team_rank(team_number)
# print(rank)
if rank is None:
rank = [team_number, 0, 0, 0, 0, 0, 0]
rank = list(rank)
rank[1] += rp
rank[2] = (rank[2]*match_times + total_score_with_penalty)/(match_times+1)
rank[3] = (rank[3]*match_times + auto_score)/(match_times+1)
Expand All @@ -241,7 +245,7 @@ def update_rank(team_number, alliance, rp, total_score_with_penalty, auto_score,
rank[4] += 1
else:
rank[5] += 1
db.update_team_rank(rank)
db.update_team_rank(team_number, rank)


class ManagementSocket(Namespace):
Expand Down Expand Up @@ -276,8 +280,8 @@ def on_start_match(self, data):
socketio.emit('match_start')
socketio.emit('match_start', namespace='/management')
socketio.emit('match_start', namespace='/board')
gameTimer = Timer(151, self.end_match)
# gameTimer = Timer(21, self.end_match)
# gameTimer = Timer(151, self.end_match)
gameTimer = Timer(21, self.end_match)
gameTimer.start()

def on_interrupt_match(self, data):
Expand Down Expand Up @@ -310,8 +314,8 @@ def on_save_and_show(self, data):
match_result = match.get_match_result()
socketio.emit('reload')
# socketio.emit('show_result', to="board")
socketio.emit('show_result', match_result, to="board")
socketio.emit('show_result', match_result, to="result")
socketio.emit('show_result', match_result, namespace="/board")
# socketio.emit('show_result', match_result, to="result")
tmp = match_result.copy()
detail_data = match.get_detail_data()
tmp.extend(detail_data)
Expand Down Expand Up @@ -350,13 +354,17 @@ def on_sync_board_match_info(self):


class LeaderboardSocket(Namespace):

def on_connect(self):
socketio.emit('update_rank', db.get_all_team_rank())
print("leaderboard connect")
print("\n\n\n")
emit('update_rank', db.get_all_team_rank())


update_board_value
if __name__ == '__main__':
app.debug = True
socketio.on_namespace(ManagementSocket('/management'))
socketio.on_namespace(BoardSocket('/board'))
socketio.on_namespace(LeaderboardSocket('/leaderboard'))
socketio.run(app, host='0.0.0.0', port=5000)
12 changes: 6 additions & 6 deletions ScoreCounter/app/module/db_operator.py
Original file line number Diff line number Diff line change
Expand Up @@ -123,22 +123,22 @@ def reset_other_loaded_match_state(self, match_level, match_id):
match_level = level_to_num[match_level]

cur.execute(
"UPDATE match_info SET state = ? WHERE level != ? OR id != ? AND state = ?", (0, match_level, match_id, 1))
"UPDATE match_info SET state = ? WHERE (level != ? OR id != ?) AND state = ?", (0, match_level, match_id, 1))

def get_match_times(self, team_number):
"""Retrieves match times from the database"""
with connect() as conn:
cur = conn.cursor()
cur.execute(
"SELECT * FROM match_result WHERE match-level = ? red-team1 = ? OR red-team2 = ? OR blue-team1 = ? OR blue-team2 = ?", (1, team_number, team_number, team_number, team_number))
"SELECT * FROM match_result WHERE `match-level` = ? AND (`red-team1` = ? OR `red-team2` = ? OR `blue-team1` = ? OR `blue-team2` = ?)", (1, team_number, team_number, team_number, team_number))
return len(cur.fetchall())

def get_team_rank(self, team_number):
"""Retrieves team rank from the database"""
with connect() as conn:
cur = conn.cursor()
cur.execute(
"SELECT * FROM team_rank WHERE team_number = ?", (team_number,))
"SELECT * FROM rankings WHERE `team-number` = ?", (team_number,))
return cur.fetchone()

def update_team_rank(self, team_number, rank):
Expand All @@ -147,15 +147,15 @@ def update_team_rank(self, team_number, rank):
with connect() as conn:
cur = conn.cursor()
cur.execute(
"INSERT INTO rankings VALUES (team-number, ranking-points, average-points, average-auto-points, win, lose, tie) VALUES (?, ?, ?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE ranking-points = ?, average-points = ?, average-auto-points = ?, win = ?, lose = ?, tie = ?", rank+rank)
"INSERT INTO rankings (`team-number`, `ranking-points`, `average-points`, `average-auto-points`, `win`, `lose`, `tie`) VALUES (?, ?, ?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE `ranking-points` = ?, `average-points` = ?, `average-auto-points` = ?, `win` = ?, `lose` = ?, `tie` = ?", rank+rank[1:])
# TODO

def get_all_team_rank(self):
"""Retrieves all team rank from the database"""
with connect() as conn:
cur = conn.cursor()
cur.execute("SELECT * FROM team_rank")
return cur.fetchall()
cur.execute("SELECT * FROM rankings")
return list(cur.fetchall())

def save_match_data(self, match_data):
"""Save match data to the database"""
Expand Down
25 changes: 19 additions & 6 deletions ScoreCounter/app/module/match.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,6 @@
}

resultToDBTable = {
"match-level": "level",
"match-id": "id",
"red-team1": "red.team1",
"blue-team1": "blue.team1",
"red-team2": "red.team2",
"blue-team2": "blue.team2",
"red-total-score-with-penalty": "red.score.totalScoreWithPenalty",
"blue-total-score-with-penalty": "blue.score.totalScoreWithPenalty",
"red-melody": "red.score.rankingPoints.melody",
Expand All @@ -43,6 +37,12 @@
"winner": "winner"
}
detaToDBTable = {
"match-level": "level",
"match-id": "id",
"red-team1": "red.team1",
"blue-team1": "blue.team1",
"red-team2": "red.team2",
"blue-team2": "blue.team2",
"red-auto-leave1": "red.score.auto.leave1",
"blue-auto-leave1": "blue.score.auto.leave1",
"red-auto-leave2": "red.score.auto.leave2",
Expand Down Expand Up @@ -108,6 +108,7 @@ def reset(self):
def countScore(self):
self.auto.countScore()
self.telop.countScore()
self.penalty.countScore()
self.totalScore = self.auto.points + self.telop.points

self.rankingPoints.melody_demand = self.auto.speaker + \
Expand Down Expand Up @@ -229,13 +230,15 @@ def __init__(self):
self.ensemble = 0
self.ensemble_demand = 0
self.win = 0
self.total = 0

def reset(self):
self.melody = 0
self.melody_demand = 0
self.ensemble = 0
self.ensemble_demand = 0
self.win = 0
self.total = 0


class Alliance:
Expand Down Expand Up @@ -368,10 +371,20 @@ def end_match_settle(self):
self.red.score.penalty.points
if self.red.score.totalScoreWithPenalty > self.blue.score.totalScoreWithPenalty:
self.winner = "red"
self.red.score.rankingPoints.win = 2
elif self.red.score.totalScoreWithPenalty < self.blue.score.totalScoreWithPenalty:
self.winner = "blue"
self.blue.score.rankingPoints.win = 2
else:
self.winner = "tie"
self.red.score.rankingPoints.win = 1
self.blue.score.rankingPoints.win = 1
self.red.score.rankingPoints.total = self.red.score.rankingPoints.melody + \
self.red.score.rankingPoints.ensemble + \
self.red.score.rankingPoints.win
self.blue.score.rankingPoints.total = self.blue.score.rankingPoints.melody + \
self.blue.score.rankingPoints.ensemble + \
self.blue.score.rankingPoints.win

def get_match_result(self):
result_datas = []
Expand Down
125 changes: 125 additions & 0 deletions ScoreCounter/app/static/scripts/board_combine.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
socket = io.connect("/board");


socket.on("sync_match_info", function (data) {
setPage("board");
Object.keys(data).forEach(function (key) {
Array.from(document.getElementsByClassName(key)).forEach(function (element) {
element.innerText = data[key];
});
// console.log(key);
// document.getElementById(key).innerText = data[key];
});
});

socket.on("update_value", function (data) {
data["data"].forEach(function (element) {
console.log(element);
document.getElementById(element.id).innerText = element.value;
});
});


socket.on("match_start", function (data) {
document.getElementById("timer-min").innerText = "00";
document.getElementById("timer-sec").innerText = "00";
start_auto_timer();
})

socket.on("show_result", function (data) {
console.log(data);
dict_style_data = {}
data.forEach(function (element) {
dict_style_data[element.id] = element.value;
});
console.log(dict_style_data);
document.getElementById("red-total-score").innerText = dict_style_data["red-total-score-with-penalty"];
document.getElementById("blue-total-score").innerText = dict_style_data["blue-total-score-with-penalty"];
if (dict_style_data["winner"] == "red") {
document.getElementById("red-win").innerText = "WIN";
document.getElementById("blue-win").innerText = "LOSE";
document.getElementById("red-win-rp1").style.display = "block";
document.getElementById("red-win-rp2").style.display = "block";
document.getElementById("blue-win-rp1").style.display = "none";
document.getElementById("blue-win-rp2").style.display = "none";
} else if (dict_style_data["winner"] == "blue") {
document.getElementById("red-win").innerText = "LOSE";
document.getElementById("blue-win").innerText = "WIN";
document.getElementById("red-win-rp1").style.display = "none";
document.getElementById("red-win-rp2").style.display = "none";
document.getElementById("blue-win-rp1").style.display = "block";
document.getElementById("blue-win-rp2").style.display = "block";
}
else if (dict_style_data["winner"] == "tie") {
document.getElementById("red-win").innerText = "TIE";
document.getElementById("blue-win").innerText = "TIE";
document.getElementById("red-win-rp1").style.display = "block";
document.getElementById("red-win-rp2").style.display = "none";
document.getElementById("blue-win-rp1").style.display = "block";
document.getElementById("blue-win-rp2").style.display = "none";
}

document.getElementById("red-melody").style.display = dict_style_data["red-melody"] ? "block" : "none";
document.getElementById("blue-melody").style.display = dict_style_data["blue-melody"] ? "block" : "none";
document.getElementById("red-ensemble").style.display = dict_style_data["red-ensemble"] ? "block" : "none";
document.getElementById("blue-ensemble").style.display = dict_style_data["blue-ensemble"] ? "block" : "none";
setPage("result");
});
socket.on("match_interrupted", function (data) {
location.reload();
});

function start_auto_timer() {
document.getElementById("match-period").innerText = "Auto";
var end_time = new Date().setSeconds(new Date().getSeconds() + 15);
var auto_timer = setInterval(function () {
var distance = end_time - new Date();
var seconds = Math.floor((distance % (1000 * 60)) / 1000).toString().padStart(2, "0");
var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)).toString().padStart(2, "0");
document.getElementById("timer-min").innerText = minutes;
document.getElementById("timer-sec").innerText = seconds;

if (distance <= 0) {
clearInterval(auto_timer);
setTimeout(start_teloop_timer, 1000);
document.getElementById("timer-min").innerText = "00";
document.getElementById("timer-sec").innerText = "00";
document.getElementById("match-period").innerText = "Teleop";
}
});

}
function start_teloop_timer() {
// var end_time = new Date().setSeconds(new Date().getSeconds() + 135);
var end_time = new Date().setSeconds(new Date().getSeconds() + 5);
var teloop_timer = setInterval(function () {
var distance = end_time - new Date();
var seconds = Math.floor((distance % (1000 * 60)) / 1000).toString().padStart(2, "0");
var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)).toString().padStart(2, "0");
document.getElementById("timer-min").innerText = minutes;
document.getElementById("timer-sec").innerText = seconds;

if (distance <= 0) {
clearInterval(teloop_timer);
document.getElementById("timer-min").innerText = "00";
document.getElementById("timer-sec").innerText = "00";
// setTimeout(start_auto_timer, 1000);
}
}, 1000);
}

function setPage(page) {
if (page == "board") {
document.getElementById("board-div").style.display = "block";
document.getElementById("result-div").style.display = "none";
}
else if (page == "result") {
document.getElementById("board-div").style.display = "none";
document.getElementById("result-div").style.display = "block";
}

}

window.onload = function () {
setPage("board");
}
2 changes: 1 addition & 1 deletion ScoreCounter/app/static/scripts/leaderboard.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// msg = [[2401, 5, 50, 10], [2402, 8 , 50, 10], [2403, 8, 45, 5], [2404, 8, 50, 20]]

socket = io.coneect("/leaderboard");
socket = io.connect("/leaderboard");

socket.on("connect", () => {
console.log("Connected to server");
Expand Down
Loading

0 comments on commit dac33cc

Please sign in to comment.