Javascript, HTML, CSS Code
Copy
<html>
<head>
<script type="text/javascript"> window.addEventListener('error', function(event) { var message = JSON.parse(JSON.stringify(event.message)); var source = event.filename; var lineno = event.lineno; var colno = event.colno; var error = event.error; window.parent.postMessage({ type: 'iframeError', details: { message: message, source: source, lineno: lineno, colno: colno, error: error ? error.stack : '' } }, '*'); }); window.addEventListener('unhandledrejection', function(event) { window.parent.postMessage({ type: 'iframePromiseRejection', details: { reason: event.reason } }, '*'); }); </script>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Workout Tracker</title>
<meta name="description" content="Track your workout routine">
<meta name="keywords" content="workout, fitness, routine, tracker">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
<!-- Built-In Functions for Apps -->
<script type="text/javascript">
var localStoragePrefix = "ct-168920144382392";
var lastSave = 0;
// save to localstorage
function saveLocal(data) {
if (Date.now() - lastSave < 1000) {
return;
}
// save to cookie
let cookie = localStoragePrefix + "=" + JSON.stringify(data) + "; path=" + window.location.pathname + "'; SameSite=Strict";
cookie += "; expires=" + new Date(Date.now() + 1000 * 60 * 60 * 24 * 365 * 1000).toUTCString();
document.cookie = cookie;
lastSave = Date.now();
}
// load from localstorage
function loadLocal() {
var cookiePrefix = localStoragePrefix + "=";
var cookieStart = document.cookie.indexOf(cookiePrefix);
if (cookieStart > -1) {
let cookieEnd = document.cookie.indexOf(";", cookieStart);
if (cookieEnd == -1) {
cookieEnd = document.cookie.length;
}
var cookieData = document.cookie.substring(cookieStart + cookiePrefix.length, cookieEnd);
return JSON.parse(cookieData);
}
}
// Initialize workout tracker
function initTracker() {
var workoutData = loadLocal();
if (!workoutData) {
// Default exercises for each day
workoutData = {
monday: [
{ name: "Push-ups", completed: false, series: 3, reps: 10, difficulty: 3 },
{ name: "Squats", completed: false, series: 3, reps: 12, difficulty: 2 },
{ name: "Bench Press", completed: false, series: 4, reps: 8, difficulty: 4 }
],
tuesday: [
{ name: "Deadlifts", completed: false, series: 4, reps: 6, difficulty: 5 },
{ name: "Lunges", completed: false, series: 3, reps: 10, difficulty: 2 },
{ name: "Shoulder Press", completed: false, series: 3, reps: 12, difficulty: 3 }
],
wednesday: [
{ name: "Pull-ups", completed: false, series: 3, reps: 8, difficulty: 4 },
{ name: "Leg Press", completed: false, series: 4, reps: 10, difficulty: 3 },
{ name: "Tricep Dips", completed: false, series: 3, reps: 12, difficulty: 2 }
],
thursday: [
{ name: "Bicep Curls", completed: false, series: 3, reps: 10, difficulty: 2 },
{ name: "Box Jumps", completed: false, series: 3, reps: 10, difficulty: 3 },
{ name: "Calf Raises", completed: false, series: 3, reps: 15, difficulty: 1 }
],
friday: [
{ name: "Squat Jumps", completed: false, series: 3, reps: 12, difficulty: 3 },
{ name: "Plank", completed: false, series: 3, reps: 60, difficulty: 2 },
{ name: "Russian Twists", completed: false, series: 3, reps: 20, difficulty: 2 }
],
saturday: [
{ name: "Mountain Climbers", completed: false, series: 3, reps: 15, difficulty: 2 },
{ name: "Dumbbell Rows", completed: false, series: 3, reps: 10, difficulty: 3 },
{ name: "Sit-ups", completed: false, series: 3, reps: 15, difficulty: 1 }
],
sunday: [
{ name: "Burpees", completed: false, series: 3, reps: 10, difficulty: 4 },
{ name: "Leg Raises", completed: false, series: 3, reps: 12, difficulty: 2 },
{ name: "Incline Push-ups", completed: false, series: 3, reps: 10, difficulty: 3 }
]
};
saveLocal(workoutData);
}
renderTracker(workoutData);
}
// Render workout tracker
function renderTracker(workoutData) {
var workoutContainer = $("#workout-container");
workoutContainer.empty();
// Loop through each day
for (var day in workoutData) {
var dayExercises = workoutData[day];
// Create day section
var daySection = $("<div>").addClass("day-section");
var dayHeader = $("<h3>").text(day);
daySection.append(dayHeader);
// Loop through each exercise
for (var i = 0; i < dayExercises.length; i++) {
var exercise = dayExercises[i];
// Create exercise card
var exerciseCard = $("<div>").addClass("exercise-card");
// Exercise details
var exerciseName = $("<h4>").text(exercise.name);
var exerciseDetails = $("<div>").addClass("exercise-details");
var seriesLabel = $("<span>").text("Series:");
var seriesInput = $("<input>").attr("type", "number").attr("min", "0").attr("value", exercise.series);
var repsLabel = $("<span>").text("Reps:");
var repsInput = $("<input>").attr("type", "number").attr("min", "0").attr("value", exercise.reps);
var difficultyLabel = $("<span>").text("Difficulty:");
var difficultyInput = $("<select>").addClass("difficulty-select");
var difficultyOptions = [
{ value: 1, text: "Easy" },
{ value: 2, text: "Medium" },
{ value: 3, text: "Hard" },
{ value: 4, text: "Very Hard" },
{ value: 5, text: "Extreme" }
];
for (var j = 0; j < difficultyOptions.length; j++) {
var option = $("<option>").attr("value", difficultyOptions[j].value).text(difficultyOptions[j].text);
if (exercise.difficulty === difficultyOptions[j].value) {
option.attr("selected", "selected");
}
difficultyInput.append(option);
}
exerciseDetails.append(seriesLabel, seriesInput, repsLabel, repsInput, difficultyLabel, difficultyInput);
// Exercise completion checkbox
var completionCheckbox = $("<input>").attr("type", "checkbox");
if (exercise.completed) {
completionCheckbox.attr("checked", "checked");
}
// Add event listener for completion checkbox
completionCheckbox.on("change", function () {
var isChecked = $(this).is(":checked");
var exerciseCard = $(this).closest(".exercise-card");
var daySection = $(this).closest(".day-section");
var day = daySection.find("h3").text();
var exerciseName = exerciseCard.find("h4").text();
updateExerciseCompletion(workoutData, day, exerciseName, isChecked);
});
// Append elements to exercise card
exerciseCard.append(completionCheckbox, exerciseName, exerciseDetails);
// Append exercise card to day section
daySection.append(exerciseCard);
}
// Append day section to workout container
workoutContainer.append(daySection);
}
}
// Update exercise completion
function updateExerciseCompletion(workoutData, day, exerciseName, completed) {
var dayExercises = workoutData[day];
for (var i = 0; i < dayExercises.length; i++) {
if (dayExercises[i].name === exerciseName) {
dayExercises[i].completed = completed;
break;
}
}
saveLocal(workoutData);
}
// Initialize workout tracker on page load
$(document).ready(function () {
initTracker();
});
</script>
<style>
/* App CSS Goes Here */
body {
background-color: #f1f1f1;
font-family: 'Roboto', sans-serif;
}
.container {
max-width: 800px;
margin: 0 auto;
padding: 20px;
background-color: #fff;
border-radius: 10px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
h1 {
text-align: center;
margin-bottom: 30px;
font-size: 30px;
color: #333;
}
.day-section {
margin-bottom: 20px;
}
h3 {
margin-bottom: 10px;
font-size: 24px;
color: #333;
}
.exercise-card {
display: flex;
align-items: center;
padding: 10px;
background-color: #f9f9f9;
border-radius: 5px;
margin-bottom: 10px;
}
.exercise-card input[type="checkbox"] {
margin-right: 10px;
}
.exercise-card h4 {
margin: 0;
font-size: 18px;
color: #333;
}
.exercise-details {
display: flex;
align-items: center;
margin-left: auto;
}
.exercise-details span {
margin-right: 5px;
}
.exercise-details input[type="number"] {
width: 50px;
margin-right: 5px;
text-align: center;
}
.difficulty-select {
width: 120px;
}
</style>
<link rel="canonical" href="https://calculator.tools/prompt/1510/">
<meta charset="utf-8">
</head>
<body>
<div id="main-container" class="container">
<h1>Workout Tracker</h1>
<div id="workout-container"></div>
</div>
<script type="text/javascript"> var localStoragePrefix = "ct-{{ cachebreaker }}"; var lastSave = 0; function saveLocal(data) { if (Date.now() - lastSave < 1000) { return; } let cookie = localStoragePrefix + "=" + JSON.stringify(data) + "; path=" + window.location.pathname + "'; SameSite=Strict"; cookie += "; expires=" + new Date(Date.now() + 1000 * 60 * 60 * 24 * 365 * 1000).toUTCString(); document.cookie = cookie; lastSave = Date.now(); } function loadLocal() { var cookiePrefix = localStoragePrefix + "="; var cookieStart = document.cookie.indexOf(cookiePrefix); if (cookieStart > -1) { let cookieEnd = document.cookie.indexOf(";", cookieStart); if (cookieEnd == -1) { cookieEnd = document.cookie.length; } var cookieData = document.cookie.substring(cookieStart + cookiePrefix.length, cookieEnd); return JSON.parse(cookieData); } } </script>
<script type="text/javascript"> window.addEventListener('load', function() { var observer = new MutationObserver(function() { window.parent.postMessage({height: document.documentElement.scrollHeight || document.body.scrollHeight},"*"); }); observer.observe(document.body, {attributes: true, childList: true, subtree: true}); window.parent.postMessage({height: document.documentElement.scrollHeight || document.body.scrollHeight},"*"); }); </script>
</body>
</html>