From 150ccb5ca5f1343c4efd99e7886cb553dbe6e072 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Mod=C3=A9e?= <bjomo323@student.liu.se> Date: Fri, 30 Apr 2021 16:17:10 +0000 Subject: [PATCH] Resolve "Scoreboard in operator view" --- client/package-lock.json | 3 +-- .../pages/admin/competitions/CompetitionManager.tsx | 5 ++--- client/src/pages/views/OperatorViewPage.tsx | 13 +++++++++++-- server/app/database/controller/add.py | 5 ++--- server/app/database/models.py | 7 +++---- server/populate.py | 12 ++++++++++-- server/tests/test_helpers.py | 4 ++-- 7 files changed, 31 insertions(+), 18 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index 2655ad2e..72fcea71 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -17285,8 +17285,7 @@ }, "ssri": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "resolved": "", "requires": { "figgy-pudding": "^3.5.1" } diff --git a/client/src/pages/admin/competitions/CompetitionManager.tsx b/client/src/pages/admin/competitions/CompetitionManager.tsx index b6af3279..affd5c26 100644 --- a/client/src/pages/admin/competitions/CompetitionManager.tsx +++ b/client/src/pages/admin/competitions/CompetitionManager.tsx @@ -142,7 +142,6 @@ const CompetitionManager: React.FC = (props: any) => { await axios .get(`/api/competitions/${id}/codes`) .then((response) => { - console.log(response.data) setCodes(response.data.items) }) .catch(console.log) @@ -152,7 +151,7 @@ const CompetitionManager: React.FC = (props: any) => { await axios .get(`/api/competitions/${id}/teams`) .then((response) => { - console.log(response.data.items) + // console.log(response.data.items) setTeams(response.data.items) }) .catch((err) => { @@ -164,7 +163,7 @@ const CompetitionManager: React.FC = (props: any) => { await axios .get(`/api/competitions/${activeId}`) .then((response) => { - console.log(response.data.name) + // console.log(response.data.name) setCompetitionName(response.data.name) }) .catch((err) => { diff --git a/client/src/pages/views/OperatorViewPage.tsx b/client/src/pages/views/OperatorViewPage.tsx index 5b75d2d2..fd3dd05b 100644 --- a/client/src/pages/views/OperatorViewPage.tsx +++ b/client/src/pages/views/OperatorViewPage.tsx @@ -59,7 +59,6 @@ import { * TODO: * - Instead of copying code for others to join the competition, copy URL. * - * - Make code popup less code by using .map instead * * - Fix scoreboard * @@ -205,6 +204,16 @@ const OperatorViewPage: React.FC = () => { return typeName } + const addScore = (id: number) => { + // Sums the scores for the teams. id must be id-1 because it starts at 1 + + let totalScore = 0 + for (let j = 0; j < teams[id - 1].question_answers.length; j++) { + totalScore = totalScore + teams[id - 1].question_answers[j].score + } + return totalScore + } + return ( <OperatorContainer> <Dialog @@ -364,7 +373,7 @@ const OperatorViewPage: React.FC = () => { {teams && teams.map((team) => ( <ListItem key={team.id}> - {team.name} score: {'666'} + {team.name} score:{addScore(team.id)} </ListItem> ))} </List> diff --git a/server/app/database/controller/add.py b/server/app/database/controller/add.py index 5f9aec28..3aa0ab70 100644 --- a/server/app/database/controller/add.py +++ b/server/app/database/controller/add.py @@ -29,13 +29,12 @@ from app.database.models import ( ViewType, Whitelist, ) +from app.database.types import ID_IMAGE_COMPONENT, ID_QUESTION_COMPONENT, ID_TEXT_COMPONENT +from flask import current_app from flask.globals import current_app from flask_restx import abort from PIL import Image from sqlalchemy import exc -from flask import current_app - -from app.database.types import ID_IMAGE_COMPONENT, ID_QUESTION_COMPONENT, ID_TEXT_COMPONENT def db_add(item): diff --git a/server/app/database/models.py b/server/app/database/models.py index a59335d9..a54a77c2 100644 --- a/server/app/database/models.py +++ b/server/app/database/models.py @@ -5,9 +5,8 @@ each other. """ from app.core import bcrypt, db -from sqlalchemy.ext.hybrid import hybrid_method, hybrid_property - from app.database.types import ID_IMAGE_COMPONENT, ID_QUESTION_COMPONENT, ID_TEXT_COMPONENT +from sqlalchemy.ext.hybrid import hybrid_method, hybrid_property STRING_SIZE = 254 @@ -201,8 +200,8 @@ class QuestionAnswer(db.Model): question_id = db.Column(db.Integer, db.ForeignKey("question.id"), nullable=False) team_id = db.Column(db.Integer, db.ForeignKey("team.id"), nullable=False) - def __init__(self, data, score, question_id, team_id): - self.data = data + def __init__(self, answer, score, question_id, team_id): + self.answer = answer self.score = score self.question_id = question_id self.team_id = team_id diff --git a/server/populate.py b/server/populate.py index 92183b6c..34f73822 100644 --- a/server/populate.py +++ b/server/populate.py @@ -43,8 +43,8 @@ def _add_items(): city_id = City.query.filter(City.name == "Linköping").one().id # Add users - dbc.add.user("admin@test.se", "password", admin_id, city_id) - dbc.add.user("test@test.se", "password", editor_id, city_id) + dbc.add.user("admin@test.se", "password", admin_id, city_id, "Admina Denfina") + dbc.add.user("test@test.se", "password", editor_id, city_id, "Test Osteron") question_types_items = dbc.get.all(QuestionType) @@ -105,6 +105,14 @@ def _add_items(): for name in teams: dbc.add.team(f"{name}{i}", item_comp.id) + # question_answer(answer, score, question_id, team_id) + dbc.add.question_answer("ett svar som ger 2p", 2, 1, 1) + dbc.add.question_answer("ett svar som ger 10p", 10, 2, 1) + dbc.add.question_answer("ett svar som ger 6p", 6, 3, 1) + + dbc.add.question_answer("ett svar som ger 2p", 2, 1, 2) + dbc.add.question_answer("ett svar som ger 3p", 3, 1, 3) + if __name__ == "__main__": app, _ = create_app("configmodule.DevelopmentConfig") diff --git a/server/tests/test_helpers.py b/server/tests/test_helpers.py index f55aa682..85c1f114 100644 --- a/server/tests/test_helpers.py +++ b/server/tests/test_helpers.py @@ -49,8 +49,8 @@ def add_default_values(): db.session.add(Code("111111", 1, item_competition.id, item_team1.id)) # Team db.session.add(Code("222222", 2, item_competition.id)) # Judge - dbc.add.QuestionAnswer("hej", 5, item_question.id, item_team1) - dbc.add.QuestionAnswer("då", 5, item_question.id, item_team2) + dbc.add.question_answer("hej", 5, item_question.id, item_team1.id) + dbc.add.question_answer("då", 5, item_question.id, item_team2.id) db.session.commit() -- GitLab