diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000000000000000000000000000000000000..15a15b218a29e09c9190992732698d646e4d659a --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="Encoding" addBOMForNewFiles="with NO BOM" /> +</project> \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000000000000000000000000000000000000..dc54171738be04e96ff243fa574f9fdfd287a6f0 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7 (venv)" project-jdk-type="Python SDK" /> + <component name="PyCharmProfessionalAdvertiser"> + <option name="shown" value="true" /> + </component> +</project> \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000000000000000000000000000000000000..fd76ab9e5abd475bbe7464da36a2875cd4b37ec2 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ProjectModuleManager"> + <modules> + <module fileurl="file://$PROJECT_DIR$/.idea/tdt4242-base.iml" filepath="$PROJECT_DIR$/.idea/tdt4242-base.iml" /> + </modules> + </component> +</project> \ No newline at end of file diff --git a/.idea/tdt4242-base.iml b/.idea/tdt4242-base.iml new file mode 100644 index 0000000000000000000000000000000000000000..6711606311e2664bd835f92b5c114681d2e284f5 --- /dev/null +++ b/.idea/tdt4242-base.iml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module type="PYTHON_MODULE" version="4"> + <component name="NewModuleRootManager"> + <content url="file://$MODULE_DIR$" /> + <orderEntry type="inheritedJdk" /> + <orderEntry type="sourceFolder" forTests="false" /> + </component> + <component name="TestRunnerService"> + <option name="PROJECT_TEST_RUNNER" value="Unittests" /> + </component> +</module> \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000000000000000000000000000000000000..94a25f7f4cb416c083d265558da75d457237d671 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="VcsDirectoryMappings"> + <mapping directory="$PROJECT_DIR$" vcs="Git" /> + </component> +</project> \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000000000000000000000000000000000000..0e8e61f999e91e33dafcaa95a5d86defd9bf249d --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,437 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ChangeListManager"> + <list default="true" id="d5050d50-3f7c-4f19-b4bf-cacb771bc0b4" name="Default Changelist" comment=""> + <change beforePath="$PROJECT_DIR$/backend/secfit/secfit/settings.py" beforeDir="false" afterPath="$PROJECT_DIR$/backend/secfit/secfit/settings.py" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/frontend/www/exercise.html" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/www/exercise.html" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/frontend/www/scripts/exercise.js" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/www/scripts/exercise.js" afterDir="false" /> + </list> + <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> + <option name="SHOW_DIALOG" value="false" /> + <option name="HIGHLIGHT_CONFLICTS" value="true" /> + <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> + <option name="LAST_RESOLUTION" value="IGNORE" /> + </component> + <component name="FileEditorManager"> + <leaf SIDE_TABS_SIZE_LIMIT_KEY="300"> + <file pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/frontend/www/exercise.html"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="289"> + <caret line="53" column="85" selection-start-line="53" selection-start-column="85" selection-end-line="53" selection-end-column="85" /> + </state> + </provider> + </entry> + </file> + <file pinned="false" current-in-tab="true"> + <entry file="file://$PROJECT_DIR$/frontend/www/scripts/exercise.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="-506"> + <caret line="137" column="15" selection-start-line="137" selection-start-column="15" selection-end-line="137" selection-end-column="15" /> + </state> + </provider> + </entry> + </file> + <file pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/backend/secfit/secfit/settings.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="295"> + <caret line="143" column="8" selection-start-line="143" selection-start-column="8" selection-end-line="143" selection-end-column="8" /> + </state> + </provider> + </entry> + </file> + <file pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/backend/secfit/users/permissions.py"> + <provider selected="true" editor-type-id="text-editor"> + <state> + <folding> + <element signature="e#0#38#0" expanded="true" /> + </folding> + </state> + </provider> + </entry> + </file> + <file pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/backend/secfit/workouts/permissions.py"> + <provider selected="true" editor-type-id="text-editor" /> + </entry> + </file> + <file pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/frontend/www/styles/style.css"> + <provider selected="true" editor-type-id="text-editor" /> + </entry> + </file> + <file pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/frontend/www/workouts.html"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="935"> + <caret line="55" column="15" selection-start-line="55" selection-start-column="15" selection-end-line="55" selection-end-column="15" /> + </state> + </provider> + </entry> + </file> + <file pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/frontend/www/scripts/workouts.js"> + <provider selected="true" editor-type-id="text-editor" /> + </entry> + </file> + <file pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/frontend/www/scripts/workout.js"> + <provider selected="true" editor-type-id="text-editor" /> + </entry> + </file> + <file pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/backend/secfit/workouts/models.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="85"> + <caret line="5" column="28" selection-start-line="5" selection-end-line="6" /> + </state> + </provider> + </entry> + </file> + </leaf> + </component> + <component name="FindInProjectRecents"> + <findStrings> + <find>user</find> + <find>lead</find> + <find>leader</find> + </findStrings> + </component> + <component name="Git.Settings"> + <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" /> + </component> + <component name="IdeDocumentHistory"> + <option name="CHANGED_PATHS"> + <list> + <option value="$PROJECT_DIR$/backend/secfit/workouts/models.py" /> + <option value="$PROJECT_DIR$/backend/secfit/workouts/views.py" /> + <option value="$PROJECT_DIR$/backend/secfit/secfit/settings.py" /> + <option value="$PROJECT_DIR$/frontend/www/exercise.html" /> + <option value="$PROJECT_DIR$/frontend/www/scripts/exercise.js" /> + </list> + </option> + </component> + <component name="ProjectFrameBounds" extendedState="6"> + <option name="x" value="-10" /> + <option name="y" value="-10" /> + <option name="width" value="1940" /> + <option name="height" value="1050" /> + </component> + <component name="ProjectView"> + <navigator proportions="" version="1"> + <foldersAlwaysOnTop value="true" /> + </navigator> + <panes> + <pane id="Scope" /> + <pane id="ProjectPane"> + <subPane> + <expand> + <path> + <item name="tdt4242-base" type="b2602c69:ProjectViewProjectNode" /> + <item name="tdt4242-base" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="tdt4242-base" type="b2602c69:ProjectViewProjectNode" /> + <item name="tdt4242-base" type="462c0819:PsiDirectoryNode" /> + <item name="backend" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="tdt4242-base" type="b2602c69:ProjectViewProjectNode" /> + <item name="tdt4242-base" type="462c0819:PsiDirectoryNode" /> + <item name="backend" type="462c0819:PsiDirectoryNode" /> + <item name="secfit" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="tdt4242-base" type="b2602c69:ProjectViewProjectNode" /> + <item name="tdt4242-base" type="462c0819:PsiDirectoryNode" /> + <item name="backend" type="462c0819:PsiDirectoryNode" /> + <item name="secfit" type="462c0819:PsiDirectoryNode" /> + <item name="secfit" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="tdt4242-base" type="b2602c69:ProjectViewProjectNode" /> + <item name="tdt4242-base" type="462c0819:PsiDirectoryNode" /> + <item name="backend" type="462c0819:PsiDirectoryNode" /> + <item name="secfit" type="462c0819:PsiDirectoryNode" /> + <item name="users" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="tdt4242-base" type="b2602c69:ProjectViewProjectNode" /> + <item name="tdt4242-base" type="462c0819:PsiDirectoryNode" /> + <item name="backend" type="462c0819:PsiDirectoryNode" /> + <item name="secfit" type="462c0819:PsiDirectoryNode" /> + <item name="workouts" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="tdt4242-base" type="b2602c69:ProjectViewProjectNode" /> + <item name="tdt4242-base" type="462c0819:PsiDirectoryNode" /> + <item name="frontend" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="tdt4242-base" type="b2602c69:ProjectViewProjectNode" /> + <item name="tdt4242-base" type="462c0819:PsiDirectoryNode" /> + <item name="frontend" type="462c0819:PsiDirectoryNode" /> + <item name="www" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="tdt4242-base" type="b2602c69:ProjectViewProjectNode" /> + <item name="tdt4242-base" type="462c0819:PsiDirectoryNode" /> + <item name="frontend" type="462c0819:PsiDirectoryNode" /> + <item name="www" type="462c0819:PsiDirectoryNode" /> + <item name="scripts" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="tdt4242-base" type="b2602c69:ProjectViewProjectNode" /> + <item name="tdt4242-base" type="462c0819:PsiDirectoryNode" /> + <item name="frontend" type="462c0819:PsiDirectoryNode" /> + <item name="www" type="462c0819:PsiDirectoryNode" /> + <item name="styles" type="462c0819:PsiDirectoryNode" /> + </path> + </expand> + <select /> + </subPane> + </pane> + </panes> + </component> + <component name="PropertiesComponent"> + <property name="last_opened_file_path" value="$PROJECT_DIR$" /> + <property name="settings.editor.selected.configurable" value="com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable" /> + </component> + <component name="RunDashboard"> + <option name="ruleStates"> + <list> + <RuleState> + <option name="name" value="ConfigurationTypeDashboardGroupingRule" /> + </RuleState> + <RuleState> + <option name="name" value="StatusDashboardGroupingRule" /> + </RuleState> + </list> + </option> + </component> + <component name="SvnConfiguration"> + <configuration /> + </component> + <component name="TaskManager"> + <task active="true" id="Default" summary="Default task"> + <changelist id="d5050d50-3f7c-4f19-b4bf-cacb771bc0b4" name="Default Changelist" comment="" /> + <created>1613726931624</created> + <option name="number" value="Default" /> + <option name="presentableId" value="Default" /> + <updated>1613726931624</updated> + </task> + <servers /> + </component> + <component name="ToolWindowManager"> + <frame x="-7" y="-7" width="1550" height="838" extended-state="6" /> + <editor active="true" /> + <layout> + <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.24983476" /> + <window_info id="Structure" order="1" side_tool="true" weight="0.25" /> + <window_info id="Favorites" order="2" side_tool="true" /> + <window_info anchor="bottom" id="Message" order="0" /> + <window_info anchor="bottom" id="Find" order="1" /> + <window_info anchor="bottom" id="Run" order="2" /> + <window_info anchor="bottom" id="Debug" order="3" weight="0.4" /> + <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" /> + <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" /> + <window_info anchor="bottom" id="TODO" order="6" /> + <window_info anchor="bottom" id="Version Control" order="7" /> + <window_info anchor="bottom" id="Terminal" order="8" visible="true" weight="0.22096318" /> + <window_info anchor="bottom" id="Event Log" order="9" side_tool="true" /> + <window_info anchor="bottom" id="Python Console" order="10" /> + <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" /> + <window_info anchor="right" id="Ant Build" order="1" weight="0.25" /> + <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" /> + </layout> + </component> + <component name="editorHistoryManager"> + <entry file="file://$PROJECT_DIR$/backend/secfit/secfit/asgi.py"> + <provider selected="true" editor-type-id="text-editor" /> + </entry> + <entry file="file://$PROJECT_DIR$/backend/secfit/secfit/urls.py"> + <provider selected="true" editor-type-id="text-editor" /> + </entry> + <entry file="file://$PROJECT_DIR$/backend/secfit/secfit/views.py"> + <provider selected="true" editor-type-id="text-editor" /> + </entry> + <entry file="file://$PROJECT_DIR$/backend/secfit/comments/models.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="-495"> + <folding> + <element signature="e#0#28#0" expanded="true" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/backend/secfit/workouts/mixins.py"> + <provider selected="true" editor-type-id="text-editor" /> + </entry> + <entry file="file://$PROJECT_DIR$/backend/secfit/comments/urls.py"> + <provider selected="true" editor-type-id="text-editor"> + <state> + <folding> + <element signature="e#0#37#0" expanded="true" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/frontend/www/exercises.html"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="-459" /> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/frontend/www/scripts/defaults.js"> + <provider selected="true" editor-type-id="text-editor" /> + </entry> + <entry file="file://$PROJECT_DIR$/frontend/www/scripts/exercises.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="-370" /> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/frontend/www/scripts/login.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="-319" /> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/frontend/www/scripts/logout.js"> + <provider selected="true" editor-type-id="text-editor" /> + </entry> + <entry file="file://$PROJECT_DIR$/frontend/www/scripts/myathletes.js"> + <provider selected="true" editor-type-id="text-editor" /> + </entry> + <entry file="file://$PROJECT_DIR$/frontend/www/scripts/mycoach.js"> + <provider selected="true" editor-type-id="text-editor" /> + </entry> + <entry file="file://$PROJECT_DIR$/frontend/www/scripts/navbar.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="-282" /> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/frontend/www/scripts/register.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="-13"> + <caret line="16" column="48" selection-start-line="16" selection-start-column="48" selection-end-line="16" selection-end-column="48" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/backend/secfit/comments/permissions.py"> + <provider selected="true" editor-type-id="text-editor" /> + </entry> + <entry file="file://$PROJECT_DIR$/backend/secfit/users/views.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="-3045"> + <folding> + <element signature="e#0#13#0" expanded="true" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/backend/secfit/users/models.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="-971"> + <folding> + <element signature="e#0#28#0" expanded="true" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/backend/secfit/comments/views.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="-1600"> + <folding> + <element signature="e#0#35#0" expanded="true" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$USER_HOME$/PU/gruppe-15/apartments/views.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="-3201"> + <caret line="71" column="44" lean-forward="true" selection-start-line="71" selection-start-column="44" selection-end-line="71" selection-end-column="44" /> + <folding> + <element signature="e#0#15#0" expanded="true" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/backend/secfit/workouts/views.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="600"> + <caret line="261" column="46" selection-start-line="261" selection-start-column="46" selection-end-line="261" selection-end-column="46" /> + <folding> + <element signature="e#88#131#0" expanded="true" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/backend/secfit/workouts/urls.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="408"> + <caret line="30" column="29" selection-start-line="30" selection-start-column="17" selection-end-line="30" selection-end-column="29" /> + <folding> + <element signature="e#0#37#0" expanded="true" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/backend/secfit/users/permissions.py"> + <provider selected="true" editor-type-id="text-editor"> + <state> + <folding> + <element signature="e#0#38#0" expanded="true" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/backend/secfit/workouts/permissions.py"> + <provider selected="true" editor-type-id="text-editor" /> + </entry> + <entry file="file://$PROJECT_DIR$/frontend/www/styles/style.css"> + <provider selected="true" editor-type-id="text-editor" /> + </entry> + <entry file="file://$PROJECT_DIR$/frontend/www/workouts.html"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="935"> + <caret line="55" column="15" selection-start-line="55" selection-start-column="15" selection-end-line="55" selection-end-column="15" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/frontend/www/scripts/workouts.js"> + <provider selected="true" editor-type-id="text-editor" /> + </entry> + <entry file="file://$PROJECT_DIR$/frontend/www/scripts/workout.js"> + <provider selected="true" editor-type-id="text-editor" /> + </entry> + <entry file="file://$PROJECT_DIR$/backend/secfit/workouts/models.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="85"> + <caret line="5" column="28" selection-start-line="5" selection-end-line="6" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/backend/secfit/secfit/settings.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="295"> + <caret line="143" column="8" selection-start-line="143" selection-start-column="8" selection-end-line="143" selection-end-column="8" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/frontend/www/exercise.html"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="289"> + <caret line="53" column="85" selection-start-line="53" selection-start-column="85" selection-end-line="53" selection-end-column="85" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/frontend/www/scripts/exercise.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="-506"> + <caret line="137" column="15" selection-start-line="137" selection-start-column="15" selection-end-line="137" selection-end-column="15" /> + </state> + </provider> + </entry> + </component> +</project> \ No newline at end of file diff --git a/backend/secfit/secfit/settings.py b/backend/secfit/secfit/settings.py index 52327fb3128d2f4f1cca53c61882faa018ca6f52..73217533db79c786b9a0003bbb130ecfee262db4 100644 --- a/backend/secfit/secfit/settings.py +++ b/backend/secfit/secfit/settings.py @@ -140,8 +140,9 @@ REST_FRAMEWORK = { # "rest_framework_simplejwt.authentication.JWTAuthentication", #), 'DEFAULT_AUTHENTICATION_CLASSES': ( - 'rest_framework.authentication.SessionAuthentication', - ), + 'rest_framework.authentication.SessionAuthentication', + "rest_framework_simplejwt.authentication.JWTAuthentication" + ), } AUTH_USER_MODEL = "users.User" diff --git a/frontend/www/exercise.html b/frontend/www/exercise.html index 6de89170b73a364fe195efe29ab5fcde525586fc..28adf4dfe6f17d7e40625a653b9b6954a0ae6413 100644 --- a/frontend/www/exercise.html +++ b/frontend/www/exercise.html @@ -47,11 +47,11 @@ </form> <div class="row"> <div class="col-lg"> - <h3 class="mt-3">Leaderboards</h3> + <h3 class="mt-3">Leaderboard</h3> </div> </div> <table id="leaderboardstable" class="table table-striped"> - <tr><th>#<th>Name<th>Value + <tr><th>Rank<th>Username<th>Score </table> </div> <script src="scripts/defaults.js"></script> diff --git a/frontend/www/scripts/exercise.js b/frontend/www/scripts/exercise.js index 67a4f5c112f32d575c608934a37badfc28c45b0d..c9d6a0a346cd81cb57f9aad48175f41949788bd0 100644 --- a/frontend/www/scripts/exercise.js +++ b/frontend/www/scripts/exercise.js @@ -125,49 +125,41 @@ async function updateExercise(id) { } } -async function fetchLeaderBoards() { +async function fetchLeaderBoards(id) { + + // Fetches leaderboard data let response = await sendRequest("GET", `${HOST}/api/leaderboards/${id}/`); - console.log(response.ok); - //Placeholder response and status: - let response = [ - { name: "Mark", value: 301, rank: 1 }, - { name: "Anton", value: 245, rank: 2 }, - { name: "John", value: 112, rank: 3 }, - { name: "Joe", value: 84, rank: 4 }, - { name: "Larry", value: 80, rank: 5 }, - { name: "Glaum", value: 1, rank: 85 }, - ]; - response.ok = true; + let data = await response.json(); if (response.ok) { let table = document.getElementById("leaderboardstable"); let row, cell; - //The users own score will always be placed last in the JSON response - let userIndex = response.length - 1; + //The user's own score will always be placed last in the JSON response + let userIndex = data.length - 1; - for (let i = 0; i < response.length - 1; i++) { + for (let i = 0; i < data.length - 1; i++) { row = table.insertRow(); cell = row.insertCell(); - cell.textContent = response[i].rank; + cell.textContent = data[i].rank; cell = row.insertCell(); - cell.textContent = response[i].name; + cell.textContent = data[i].name; cell = row.insertCell(); - cell.textContent = response[i].value; + cell.textContent = data[i].value; } //If the user is not in top 5, the users score will also be rendered - if (response[userIndex].rank > 5) { + if (data[userIndex].rank > 5) { row = table.insertRow(); cell = row.insertCell(); - cell.textContent = response[userIndex].rank; + cell.textContent = data[userIndex].rank; cell = row.insertCell(); - cell.textContent = response[userIndex].name; + cell.textContent = data[userIndex].name; cell = row.insertCell(); - cell.textContent = response[userIndex].value; + cell.textContent = data[userIndex].value; } } - return response; + return data; } window.addEventListener("DOMContentLoaded", async () => { @@ -183,6 +175,7 @@ window.addEventListener("DOMContentLoaded", async () => { if (urlParams.has("id")) { const exerciseId = urlParams.get("id"); await retrieveExercise(exerciseId); + await fetchLeaderBoards(exerciseId); editButton.addEventListener("click", handleEditExerciseButtonClick); deleteButton.addEventListener( @@ -206,5 +199,5 @@ window.addEventListener("DOMContentLoaded", async () => { cancelButton.addEventListener("click", handleCancelButtonDuringCreate); } - await fetchLeaderBoards(); + });