Meta Description" name="description" />
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Habit Tracker</title>
<style>
body { font-family: Arial; padding: 10px; background:#f5f5f5; }
h2 { text-align:center; }
.container { max-width: 800px; margin:auto; background:#fff; padding:15px; border-radius:10px; }
input, button { padding:8px; margin:5px; }
.habit { margin-bottom:10px; }
canvas { width:100%; height:200px; background:#eee; margin-top:20px; }
</style>
</head>
<body>
<div class="container">
<h2>Habit Tracker</h2>
<label>Name: </label>
<input type="text" id="username" placeholder="Your Name">
<h3>Habits (Max 10)</h3>
<div id="habits"></div>
<button onclick="addHabit()">Add Habit</button>
<h3>Sleep (Hours)</h3>
<input type="number" id="sleep" placeholder="Enter sleep hours">
<button onclick="saveData()">Save Day</button>
<canvas id="chart"></canvas>
<br>
<button onclick="downloadPDF()">Download A4</button>
</div>
<script>
let habits = [];
function addHabit(){
if(habits.length >= 10){
alert("Max 10 habits allowed");
return;
}
let name = prompt("Enter habit name");
if(!name) return;
habits.push({name:name, data:[]});
renderHabits();
}
function renderHabits(){
let div = document.getElementById("habits");
div.innerHTML = "";
habits.forEach((h, i)=>{
div.innerHTML += `
<div class="habit">
${h.name}:
<input type="number" id="habit_${i}" placeholder="Count">
</div>`;
});
}
function saveData(){
let sleep = document.getElementById("sleep").value;
habits.forEach((h, i)=>{
let val = document.getElementById("habit_"+i).value || 0;
h.data.push(Number(val));
});
localStorage.setItem("habits", JSON.stringify(habits));
localStorage.setItem("sleep", sleep);
drawChart();
}
function drawChart(){
let canvas = document.getElementById("chart");
let ctx = canvas.getContext("2d");
ctx.clearRect(0,0,canvas.width,canvas.height);
habits.forEach((h, i)=>{
let total = h.data.reduce((a,b)=>a+b,0);
ctx.fillText(h.name + ": " + total, 10, 20 + i*20);
});
let sleep = localStorage.getItem("sleep");
ctx.fillText("Sleep: " + sleep + " hrs", 10, 200);
}
function downloadPDF(){
let name = document.getElementById("username").value || "User";
let content = "Name: " + name + "\\n\\n";
habits.forEach(h=>{
let total = h.data.reduce((a,b)=>a+b,0);
content += h.name + ": " + total + "\\n";
});
let sleep = localStorage.getItem("sleep");
content += "\\nSleep: " + sleep + " hrs";
let blob = new Blob([content], {type: "text/plain"});
let a = document.createElement("a");
a.href = URL.createObjectURL(blob);
a.download = "habit_tracker.txt";
a.click();
}
</script>
</body>
</html>1
1
3KB
3KB
94.0ms
108.0ms
96.0ms