Skip to content
Snippets Groups Projects
Commit 9bd5e066 authored by Irina Kera Gundersen's avatar Irina Kera Gundersen
Browse files

Add feature to select athlete for workout

parent ed772d42
No related branches found
No related tags found
1 merge request!6Uc 1
Pipeline #113438 passed
...@@ -4,350 +4,429 @@ let deleteWorkoutButton; ...@@ -4,350 +4,429 @@ let deleteWorkoutButton;
let editWorkoutButton; let editWorkoutButton;
let postCommentButton; let postCommentButton;
async function retrieveWorkout(id) { async function retrieveWorkout(id) {
let workoutData = null; let workoutData = null;
let response = await sendRequest("GET", `${HOST}/api/workouts/${id}/`); let response = await sendRequest("GET", `${HOST}/api/workouts/${id}/`);
if (!response.ok) { if (!response.ok) {
let data = await response.json(); let data = await response.json();
let alert = createAlert("Could not retrieve workout data!", data); let alert = createAlert("Could not retrieve workout data!", data);
document.body.prepend(alert); document.body.prepend(alert);
} else { } else {
workoutData = await response.json(); workoutData = await response.json();
let form = document.querySelector("#form-workout"); let form = document.querySelector("#form-workout");
let formData = new FormData(form); let formData = new FormData(form);
for (let key of formData.keys()) {
let selector = `input[name="${key}"], textarea[name="${key}"]`;
let input = form.querySelector(selector);
let newVal = workoutData[key];
if (key == "date") {
// Creating a valid datetime-local string with the correct local time
let date = new Date(newVal);
date = new Date(date.getTime() - (date.getTimezoneOffset() * 60 * 1000)).toISOString(); // get ISO format for local time
newVal = date.substring(0, newVal.length - 1); // remove Z (since this is a local time, not UTC)
}
if (key != "files") {
input.value = newVal;
}
}
let input = form.querySelector("select:disabled"); for (let key of formData.keys()) {
input.value = workoutData["visibility"]; let selector = `input[name="${key}"], textarea[name="${key}"]`;
// files let input = form.querySelector(selector);
let filesDiv = document.querySelector("#uploaded-files"); let newVal = workoutData[key];
for (let file of workoutData.files) { if (key == "date") {
let a = document.createElement("a"); // Creating a valid datetime-local string with the correct local time
a.href = file.file; let date = new Date(newVal);
let pathArray = file.file.split("/"); date = new Date(
a.text = pathArray[pathArray.length - 1]; date.getTime() - date.getTimezoneOffset() * 60 * 1000
a.className = "me-2"; ).toISOString(); // get ISO format for local time
filesDiv.appendChild(a); newVal = date.substring(0, newVal.length - 1); // remove Z (since this is a local time, not UTC)
} }
if (key != "files") {
input.value = newVal;
}
}
let input = form.querySelector("select:disabled");
input.value = workoutData["visibility"];
// files
let filesDiv = document.querySelector("#uploaded-files");
for (let file of workoutData.files) {
let a = document.createElement("a");
a.href = file.file;
let pathArray = file.file.split("/");
a.text = pathArray[pathArray.length - 1];
a.className = "me-2";
filesDiv.appendChild(a);
}
// create exercises
// fetch exercise types
let exerciseTypeResponse = await sendRequest(
"GET",
`${HOST}/api/exercises/`
);
let exerciseTypes = await exerciseTypeResponse.json();
//TODO: This should be in its own method.
for (let i = 0; i < workoutData.exercise_instances.length; i++) {
let templateExercise = document.querySelector("#template-exercise");
let divExerciseContainer = templateExercise.content.firstElementChild.cloneNode(
true
);
let exerciseTypeLabel = divExerciseContainer.querySelector(
".exercise-type"
);
exerciseTypeLabel.for = `inputExerciseType${i}`;
let exerciseTypeSelect = divExerciseContainer.querySelector("select");
exerciseTypeSelect.id = `inputExerciseType${i}`;
exerciseTypeSelect.disabled = true;
let splitUrl = workoutData.exercise_instances[i].exercise.split("/");
let currentExerciseTypeId = splitUrl[splitUrl.length - 2];
let currentExerciseType = "";
// create exercises for (let j = 0; j < exerciseTypes.count; j++) {
let option = document.createElement("option");
// fetch exercise types option.value = exerciseTypes.results[j].id;
let exerciseTypeResponse = await sendRequest("GET", `${HOST}/api/exercises/`); if (currentExerciseTypeId == exerciseTypes.results[j].id) {
let exerciseTypes = await exerciseTypeResponse.json(); currentExerciseType = exerciseTypes.results[j];
//TODO: This should be in its own method.
for (let i = 0; i < workoutData.exercise_instances.length; i++) {
let templateExercise = document.querySelector("#template-exercise");
let divExerciseContainer = templateExercise.content.firstElementChild.cloneNode(true);
let exerciseTypeLabel = divExerciseContainer.querySelector('.exercise-type');
exerciseTypeLabel.for = `inputExerciseType${i}`;
let exerciseTypeSelect = divExerciseContainer.querySelector("select");
exerciseTypeSelect.id = `inputExerciseType${i}`;
exerciseTypeSelect.disabled = true;
let splitUrl = workoutData.exercise_instances[i].exercise.split("/");
let currentExerciseTypeId = splitUrl[splitUrl.length - 2];
let currentExerciseType = "";
for (let j = 0; j < exerciseTypes.count; j++) {
let option = document.createElement("option");
option.value = exerciseTypes.results[j].id;
if (currentExerciseTypeId == exerciseTypes.results[j].id) {
currentExerciseType = exerciseTypes.results[j];
}
option.innerText = exerciseTypes.results[j].name;
exerciseTypeSelect.append(option);
}
exerciseTypeSelect.value = currentExerciseType.id;
let exerciseSetLabel = divExerciseContainer.querySelector('.exercise-sets');
exerciseSetLabel.for = `inputSets${i}`;
let exerciseSetInput = divExerciseContainer.querySelector("input[name='sets']");
exerciseSetInput.id = `inputSets${i}`;
exerciseSetInput.value = workoutData.exercise_instances[i].sets;
exerciseSetInput.readOnly = true;
let exerciseNumberLabel = divExerciseContainer.querySelector('.exercise-number');
exerciseNumberLabel.for = "for", `inputNumber${i}`;
exerciseNumberLabel.innerText = currentExerciseType.unit;
let exerciseNumberInput = divExerciseContainer.querySelector("input[name='number']");
exerciseNumberInput.id = `inputNumber${i}`;
exerciseNumberInput.value = workoutData.exercise_instances[i].number;
exerciseNumberInput.readOnly = true;
let exercisesDiv = document.querySelector("#div-exercises");
exercisesDiv.appendChild(divExerciseContainer);
} }
option.innerText = exerciseTypes.results[j].name;
exerciseTypeSelect.append(option);
}
exerciseTypeSelect.value = currentExerciseType.id;
let exerciseSetLabel = divExerciseContainer.querySelector(
".exercise-sets"
);
exerciseSetLabel.for = `inputSets${i}`;
let exerciseSetInput = divExerciseContainer.querySelector(
"input[name='sets']"
);
exerciseSetInput.id = `inputSets${i}`;
exerciseSetInput.value = workoutData.exercise_instances[i].sets;
exerciseSetInput.readOnly = true;
let exerciseNumberLabel = divExerciseContainer.querySelector(
".exercise-number"
);
(exerciseNumberLabel.for = "for"), `inputNumber${i}`;
exerciseNumberLabel.innerText = currentExerciseType.unit;
let exerciseNumberInput = divExerciseContainer.querySelector(
"input[name='number']"
);
exerciseNumberInput.id = `inputNumber${i}`;
exerciseNumberInput.value = workoutData.exercise_instances[i].number;
exerciseNumberInput.readOnly = true;
let exercisesDiv = document.querySelector("#div-exercises");
exercisesDiv.appendChild(divExerciseContainer);
} }
return workoutData; }
return workoutData;
} }
function handleCancelDuringWorkoutEdit() { function handleCancelDuringWorkoutEdit() {
location.reload(); location.reload();
}
function athleteChecked() {
let checkBox = document.getElementById("forAthlete");
let athletes = document.getElementById("athletes");
let myself = document.getElementById("inputOwner");
if (checkBox.checked == true) {
athletes.style.display = "block";
myself.style.display = "none";
} else {
athletes.style.display = "none";
myself.style.display = "block";
}
} }
function handleEditWorkoutButtonClick() { function handleEditWorkoutButtonClick() {
let addExerciseButton = document.querySelector("#btn-add-exercise"); let addExerciseButton = document.querySelector("#btn-add-exercise");
let removeExerciseButton = document.querySelector("#btn-remove-exercise"); let removeExerciseButton = document.querySelector("#btn-remove-exercise");
setReadOnly(false, "#form-workout"); setReadOnly(false, "#form-workout");
document.querySelector("#inputOwner").readOnly = true; // owner field should still be readonly document.querySelector("#inputOwner").readOnly = true; // owner field should still be readonly
editWorkoutButton.className += " hide"; editWorkoutButton.className += " hide";
okWorkoutButton.className = okWorkoutButton.className.replace(" hide", ""); okWorkoutButton.className = okWorkoutButton.className.replace(" hide", "");
cancelWorkoutButton.className = cancelWorkoutButton.className.replace(" hide", ""); cancelWorkoutButton.className = cancelWorkoutButton.className.replace(
deleteWorkoutButton.className = deleteWorkoutButton.className.replace(" hide", ""); " hide",
addExerciseButton.className = addExerciseButton.className.replace(" hide", ""); ""
removeExerciseButton.className = removeExerciseButton.className.replace(" hide", ""); );
deleteWorkoutButton.className = deleteWorkoutButton.className.replace(
cancelWorkoutButton.addEventListener("click", handleCancelDuringWorkoutEdit); " hide",
""
);
addExerciseButton.className = addExerciseButton.className.replace(
" hide",
""
);
removeExerciseButton.className = removeExerciseButton.className.replace(
" hide",
""
);
cancelWorkoutButton.addEventListener("click", handleCancelDuringWorkoutEdit);
} }
async function deleteWorkout(id) { async function deleteWorkout(id) {
let response = await sendRequest("DELETE", `${HOST}/api/workouts/${id}/`); let response = await sendRequest("DELETE", `${HOST}/api/workouts/${id}/`);
if (!response.ok) { if (!response.ok) {
let data = await response.json(); let data = await response.json();
let alert = createAlert(`Could not delete workout ${id}!`, data); let alert = createAlert(`Could not delete workout ${id}!`, data);
document.body.prepend(alert); document.body.prepend(alert);
} else { } else {
window.location.replace("workouts.html"); window.location.replace("workouts.html");
} }
} }
async function updateWorkout(id) { async function updateWorkout(id) {
let submitForm = generateWorkoutForm(); let submitForm = generateWorkoutForm();
let response = await sendRequest("PUT", `${HOST}/api/workouts/${id}/`, submitForm, ""); let response = await sendRequest(
if (!response.ok) { "PUT",
let data = await response.json(); `${HOST}/api/workouts/${id}/`,
let alert = createAlert("Could not update workout!", data); submitForm,
document.body.prepend(alert); ""
} else { );
location.reload(); if (!response.ok) {
} let data = await response.json();
let alert = createAlert("Could not update workout!", data);
document.body.prepend(alert);
} else {
location.reload();
}
} }
function generateWorkoutForm() { function generateWorkoutForm() {
let form = document.querySelector("#form-workout"); let form = document.querySelector("#form-workout");
let formData = new FormData(form); let formData = new FormData(form);
let submitForm = new FormData(); let submitForm = new FormData();
submitForm.append("name", formData.get('name')); submitForm.append("name", formData.get("name"));
let date = new Date(formData.get('date')).toISOString(); let date = new Date(formData.get("date")).toISOString();
submitForm.append("date", date); submitForm.append("date", date);
submitForm.append("notes", formData.get("notes")); submitForm.append("notes", formData.get("notes"));
submitForm.append("visibility", formData.get("visibility")); submitForm.append("visibility", formData.get("visibility"));
// adding exercise instances // adding exercise instances
let exerciseInstances = []; let exerciseInstances = [];
let exerciseInstancesTypes = formData.getAll("type"); let exerciseInstancesTypes = formData.getAll("type");
let exerciseInstancesSets = formData.getAll("sets"); let exerciseInstancesSets = formData.getAll("sets");
let exerciseInstancesNumbers = formData.getAll("number"); let exerciseInstancesNumbers = formData.getAll("number");
for (let i = 0; i < exerciseInstancesTypes.length; i++) { for (let i = 0; i < exerciseInstancesTypes.length; i++) {
exerciseInstances.push({ exerciseInstances.push({
exercise: `${HOST}/api/exercises/${exerciseInstancesTypes[i]}/`, exercise: `${HOST}/api/exercises/${exerciseInstancesTypes[i]}/`,
number: exerciseInstancesNumbers[i], number: exerciseInstancesNumbers[i],
sets: exerciseInstancesSets[i] sets: exerciseInstancesSets[i]
}); });
} }
submitForm.append("exercise_instances", JSON.stringify(exerciseInstances)); submitForm.append("exercise_instances", JSON.stringify(exerciseInstances));
// adding files // adding files
for (let file of formData.getAll("files")) { for (let file of formData.getAll("files")) {
submitForm.append("files", file); submitForm.append("files", file);
} }
return submitForm; return submitForm;
} }
async function createWorkout() { async function createWorkout() {
let submitForm = generateWorkoutForm(); let submitForm = generateWorkoutForm();
let response = await sendRequest("POST", `${HOST}/api/workouts/`, submitForm, ""); let response = await sendRequest(
"POST",
`${HOST}/api/workouts/`,
submitForm,
""
);
if (response.ok) { if (response.ok) {
window.location.replace("workouts.html"); window.location.replace("workouts.html");
} else { } else {
let data = await response.json(); let data = await response.json();
let alert = createAlert("Could not create new workout!", data); let alert = createAlert("Could not create new workout!", data);
document.body.prepend(alert); document.body.prepend(alert);
} }
} }
function handleCancelDuringWorkoutCreate() { function handleCancelDuringWorkoutCreate() {
window.location.replace("workouts.html"); window.location.replace("workouts.html");
} }
async function createBlankExercise() { async function createBlankExercise() {
let form = document.querySelector("#form-workout"); let form = document.querySelector("#form-workout");
let exerciseTypeResponse = await sendRequest("GET", `${HOST}/api/exercises/`); let exerciseTypeResponse = await sendRequest("GET", `${HOST}/api/exercises/`);
let exerciseTypes = await exerciseTypeResponse.json(); let exerciseTypes = await exerciseTypeResponse.json();
let exerciseTemplate = document.querySelector("#template-exercise"); let exerciseTemplate = document.querySelector("#template-exercise");
let divExerciseContainer = exerciseTemplate.content.firstElementChild.cloneNode(true); let divExerciseContainer = exerciseTemplate.content.firstElementChild.cloneNode(
let exerciseTypeSelect = divExerciseContainer.querySelector("select"); true
);
for (let i = 0; i < exerciseTypes.count; i++) { let exerciseTypeSelect = divExerciseContainer.querySelector("select");
let option = document.createElement("option");
option.value = exerciseTypes.results[i].id; for (let i = 0; i < exerciseTypes.count; i++) {
option.innerText = exerciseTypes.results[i].name; let option = document.createElement("option");
exerciseTypeSelect.append(option); option.value = exerciseTypes.results[i].id;
} option.innerText = exerciseTypes.results[i].name;
exerciseTypeSelect.append(option);
}
let currentExerciseType = exerciseTypes.results[0]; let currentExerciseType = exerciseTypes.results[0];
exerciseTypeSelect.value = currentExerciseType.name; exerciseTypeSelect.value = currentExerciseType.name;
let divExercises = document.querySelector("#div-exercises"); let divExercises = document.querySelector("#div-exercises");
divExercises.appendChild(divExerciseContainer); divExercises.appendChild(divExerciseContainer);
} }
function removeExercise(event) { function removeExercise(event) {
let divExerciseContainers = document.querySelectorAll(".div-exercise-container"); let divExerciseContainers = document.querySelectorAll(
if (divExerciseContainers && divExerciseContainers.length > 0) { ".div-exercise-container"
divExerciseContainers[divExerciseContainers.length - 1].remove(); );
} if (divExerciseContainers && divExerciseContainers.length > 0) {
divExerciseContainers[divExerciseContainers.length - 1].remove();
}
} }
function addComment(author, text, date, append) { function addComment(author, text, date, append) {
/* Taken from https://www.bootdey.com/snippets/view/Simple-Comment-panel#css*/ /* Taken from https://www.bootdey.com/snippets/view/Simple-Comment-panel#css*/
let commentList = document.querySelector("#comment-list"); let commentList = document.querySelector("#comment-list");
let listElement = document.createElement("li"); let listElement = document.createElement("li");
listElement.className = "media"; listElement.className = "media";
let commentBody = document.createElement("div"); let commentBody = document.createElement("div");
commentBody.className = "media-body"; commentBody.className = "media-body";
let dateSpan = document.createElement("span"); let dateSpan = document.createElement("span");
dateSpan.className = "text-muted pull-right me-1"; dateSpan.className = "text-muted pull-right me-1";
let smallText = document.createElement("small"); let smallText = document.createElement("small");
smallText.className = "text-muted"; smallText.className = "text-muted";
if (date != "Now") { if (date != "Now") {
let localDate = new Date(date); let localDate = new Date(date);
smallText.innerText = localDate.toLocaleString(); smallText.innerText = localDate.toLocaleString();
} else { } else {
smallText.innerText = date; smallText.innerText = date;
} }
dateSpan.appendChild(smallText); dateSpan.appendChild(smallText);
commentBody.appendChild(dateSpan); commentBody.appendChild(dateSpan);
let strong = document.createElement("strong"); let strong = document.createElement("strong");
strong.className = "text-success"; strong.className = "text-success";
strong.innerText = author; strong.innerText = author;
commentBody.appendChild(strong); commentBody.appendChild(strong);
let p = document.createElement("p"); let p = document.createElement("p");
p.innerHTML = text; p.innerHTML = text;
commentBody.appendChild(strong); commentBody.appendChild(strong);
commentBody.appendChild(p); commentBody.appendChild(p);
listElement.appendChild(commentBody); listElement.appendChild(commentBody);
if (append) { if (append) {
commentList.append(listElement); commentList.append(listElement);
} else { } else {
commentList.prepend(listElement); commentList.prepend(listElement);
} }
} }
async function createComment(workoutid) { async function createComment(workoutid) {
let commentArea = document.querySelector("#comment-area"); let commentArea = document.querySelector("#comment-area");
let content = commentArea.value; let content = commentArea.value;
let body = {workout: `${HOST}/api/workouts/${workoutid}/`, content: content}; let body = {
workout: `${HOST}/api/workouts/${workoutid}/`,
let response = await sendRequest("POST", `${HOST}/api/comments/`, body); content: content
if (response.ok) { };
addComment(sessionStorage.getItem("username"), content, "Now", false);
} else { let response = await sendRequest("POST", `${HOST}/api/comments/`, body);
let data = await response.json(); if (response.ok) {
let alert = createAlert("Failed to create comment!", data); addComment(sessionStorage.getItem("username"), content, "Now", false);
document.body.prepend(alert); } else {
} let data = await response.json();
let alert = createAlert("Failed to create comment!", data);
document.body.prepend(alert);
}
} }
async function retrieveComments(workoutid) { async function retrieveComments(workoutid) {
let response = await sendRequest("GET", `${HOST}/api/comments/`); let response = await sendRequest("GET", `${HOST}/api/comments/`);
if (!response.ok) { if (!response.ok) {
let data = await response.json(); let data = await response.json();
let alert = createAlert("Could not retrieve comments!", data); let alert = createAlert("Could not retrieve comments!", data);
document.body.prepend(alert); document.body.prepend(alert);
} else { } else {
let data = await response.json(); let data = await response.json();
let comments = data.results; let comments = data.results;
for (let comment of comments) { for (let comment of comments) {
let splitArray = comment.workout.split("/"); let splitArray = comment.workout.split("/");
if (splitArray[splitArray.length - 2] == workoutid) { if (splitArray[splitArray.length - 2] == workoutid) {
addComment(comment.owner, comment.content, comment.timestamp, true); addComment(comment.owner, comment.content, comment.timestamp, true);
} }
}
} }
}
} }
window.addEventListener("DOMContentLoaded", async () => { window.addEventListener("DOMContentLoaded", async () => {
cancelWorkoutButton = document.querySelector("#btn-cancel-workout"); cancelWorkoutButton = document.querySelector("#btn-cancel-workout");
okWorkoutButton = document.querySelector("#btn-ok-workout"); okWorkoutButton = document.querySelector("#btn-ok-workout");
deleteWorkoutButton = document.querySelector("#btn-delete-workout"); deleteWorkoutButton = document.querySelector("#btn-delete-workout");
editWorkoutButton = document.querySelector("#btn-edit-workout"); editWorkoutButton = document.querySelector("#btn-edit-workout");
let postCommentButton = document.querySelector("#post-comment"); let postCommentButton = document.querySelector("#post-comment");
let divCommentRow = document.querySelector("#div-comment-row"); let divCommentRow = document.querySelector("#div-comment-row");
let buttonAddExercise = document.querySelector("#btn-add-exercise"); let buttonAddExercise = document.querySelector("#btn-add-exercise");
let buttonRemoveExercise = document.querySelector("#btn-remove-exercise"); let buttonRemoveExercise = document.querySelector("#btn-remove-exercise");
buttonAddExercise.addEventListener("click", createBlankExercise); buttonAddExercise.addEventListener("click", createBlankExercise);
buttonRemoveExercise.addEventListener("click", removeExercise); buttonRemoveExercise.addEventListener("click", removeExercise);
const urlParams = new URLSearchParams(window.location.search); const urlParams = new URLSearchParams(window.location.search);
let currentUser = await getCurrentUser(); let currentUser = await getCurrentUser();
if (urlParams.has('id')) { if (urlParams.has("id")) {
const id = urlParams.get('id'); const id = urlParams.get("id");
let workoutData = await retrieveWorkout(id); let workoutData = await retrieveWorkout(id);
await retrieveComments(id); await retrieveComments(id);
if (workoutData["owner"] == currentUser.url) { if (workoutData["owner"] == currentUser.url) {
editWorkoutButton.classList.remove("hide"); editWorkoutButton.classList.remove("hide");
editWorkoutButton.addEventListener("click", handleEditWorkoutButtonClick); editWorkoutButton.addEventListener("click", handleEditWorkoutButtonClick);
deleteWorkoutButton.addEventListener("click", (async (id) => await deleteWorkout(id)).bind(undefined, id)); deleteWorkoutButton.addEventListener(
okWorkoutButton.addEventListener("click", (async (id) => await updateWorkout(id)).bind(undefined, id)); "click",
postCommentButton.addEventListener("click", (async (id) => await createComment(id)).bind(undefined, id)); (async id => await deleteWorkout(id)).bind(undefined, id)
divCommentRow.className = divCommentRow.className.replace(" hide", ""); );
} okWorkoutButton.addEventListener(
} else { "click",
await createBlankExercise(); (async id => await updateWorkout(id)).bind(undefined, id)
let ownerInput = document.querySelector("#inputOwner"); );
ownerInput.value = currentUser.username; postCommentButton.addEventListener(
setReadOnly(false, "#form-workout"); "click",
ownerInput.readOnly = !ownerInput.readOnly; (async id => await createComment(id)).bind(undefined, id)
);
okWorkoutButton.className = okWorkoutButton.className.replace(" hide", ""); divCommentRow.className = divCommentRow.className.replace(" hide", "");
cancelWorkoutButton.className = cancelWorkoutButton.className.replace(" hide", "");
buttonAddExercise.className = buttonAddExercise.className.replace(" hide", "");
buttonRemoveExercise.className = buttonRemoveExercise.className.replace(" hide", "");
okWorkoutButton.addEventListener("click", async () => await createWorkout());
cancelWorkoutButton.addEventListener("click", handleCancelDuringWorkoutCreate);
divCommentRow.className += " hide";
} }
} else {
await createBlankExercise();
let ownerInput = document.querySelector("#inputOwner");
ownerInput.value = currentUser.username;
setReadOnly(false, "#form-workout");
ownerInput.readOnly = !ownerInput.readOnly;
}); okWorkoutButton.className = okWorkoutButton.className.replace(" hide", "");
\ No newline at end of file cancelWorkoutButton.className = cancelWorkoutButton.className.replace(
" hide",
""
);
buttonAddExercise.className = buttonAddExercise.className.replace(
" hide",
""
);
buttonRemoveExercise.className = buttonRemoveExercise.className.replace(
" hide",
""
);
okWorkoutButton.addEventListener(
"click",
async () => await createWorkout()
);
cancelWorkoutButton.addEventListener(
"click",
handleCancelDuringWorkoutCreate
);
divCommentRow.className += " hide";
}
});
...@@ -11,6 +11,14 @@ ...@@ -11,6 +11,14 @@
integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1"
crossorigin="anonymous" crossorigin="anonymous"
/> />
<script src="scripts/defaults.js"></script>
<script src="scripts/scripts.js"></script>
<script type="text/javascript" src="scripts/workout.js"></script>
<script
src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.bundle.min.js"
integrity="sha384-ygbV9kiqUc6oa4msXn9868pTtWMgiQaeYH7/t7LECLbyPA2x65Kgf80OJFdroafW"
crossorigin="anonymous"
></script>
<script <script
src="https://kit.fontawesome.com/0ce6c392ca.js" src="https://kit.fontawesome.com/0ce6c392ca.js"
...@@ -52,15 +60,34 @@ ...@@ -52,15 +60,34 @@
</div> </div>
<div class="col-lg-6"></div> <div class="col-lg-6"></div>
<div class="col-lg-6"> <div class="col-lg-6">
<label for="inputOwner" class="form-label">Owner</label> <label for="forAthlete">Create workout for athlete</label>
<input <input id="forAthlete" type="checkbox" onclick="athleteChecked()" />
type="text" <div class="col-lg-6"></div>
class="form-control" <p>Owner</p>
id="inputOwner"
name="owner_username" <div>
readonly <select
/> id="athletes"
class="form-select"
name="athletes"
style="display:none"
>
<option value="1">athlete 1</option>
<option value="2">athlete 2</option>
<option value="3">athlete 3</option>
</select>
<input
type="text"
class="form-control"
id="inputOwner"
name="owner_username"
style="display:block"
readonly
/>
</div>
</div> </div>
<div class="col-lg-6"></div>
<div class="col-lg-6"> <div class="col-lg-6">
<label for="inputVisibility" class="form-label">Visibility</label> <label for="inputVisibility" class="form-label">Visibility</label>
<select <select
...@@ -74,6 +101,7 @@ ...@@ -74,6 +101,7 @@
<option value="PR">Private</option> <option value="PR">Private</option>
</select> </select>
</div> </div>
<div class="col-lg-6"></div>
<div class="col-lg-6"> <div class="col-lg-6">
<label for="inputNotes" class="form-label">Notes</label> <label for="inputNotes" class="form-label">Notes</label>
<textarea <textarea
...@@ -197,14 +225,5 @@ ...@@ -197,14 +225,5 @@
<div class="col-lg-6"></div> <div class="col-lg-6"></div>
</div> </div>
</template> </template>
<script src="scripts/defaults.js"></script>
<script src="scripts/scripts.js"></script>
<script src="scripts/workout.js"></script>
<script
src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.bundle.min.js"
integrity="sha384-ygbV9kiqUc6oa4msXn9868pTtWMgiQaeYH7/t7LECLbyPA2x65Kgf80OJFdroafW"
crossorigin="anonymous"
></script>
</body> </body>
</html> </html>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment