function loadProgress() {
var container = document.getElementById('progress-container');
// ----- existing stats -----
var items = getSavedItems();
var total = items.length;
var tagCounts = {};
for (var i = 0; i < items.length; i++) {
var tag = items[i].tag || 'General';
tagCounts[tag] = (tagCounts[tag] || 0) + 1;
}
var sortedTags = Object.keys(tagCounts).map(function(k) { return [k, tagCounts[k]]; });
sortedTags.sort(function(a, b) { return b[1] - a[1]; });
var maxCount = sortedTags.length > 0 ? sortedTags[0][1] : 1;
var mostTag = 'None';
if (sortedTags.length > 0) mostTag = sortedTags[0][0] + ' (' + sortedTags[0][1] + ')';
// ---- Daily Learning Streak ----
var streak = computeStreak();
var today = getToday();
var day = getDayData(today);
var completed = isDayCompleted(today);
// Build last 7 days
var daysHtml = '';
var d = new Date();
for (var k = 6; k >= 0; k--) {
var dateObj = new Date(d);
dateObj.setDate(dateObj.getDate() - k);
var ds = dateObj.toISOString().slice(0, 10);
var isToday = ds === today;
var done = isDayCompleted(ds);
var label = isToday ? 'Today' : dateObj.getDate() + '/' + (dateObj.getMonth()+1);
var cls = 'lc-day' + (done ? ' done' : '') + (isToday ? ' today' : '');
daysHtml += '
' + (isToday ? '๐' : label) + '
';
}
// ---- Build bars ----
var barsHtml = '';
var colors = ['var(--teal)', 'var(--gold)', 'var(--coral)', 'var(--amber)', 'var(--purple)'];
var colorIndex = 0;
for (var t = 0; t < sortedTags.length; t++) {
var tagName = sortedTags[t][0];
var count = sortedTags[t][1];
var pct = maxCount > 0 ? Math.round((count / maxCount) * 100) : 0;
var color = colors[colorIndex % colors.length];
colorIndex++;
barsHtml += '' +
'
' + escapeHtml(tagName) + '
' +
'
' +
'
' + count + '
' +
'
';
}
// ---- Render all (no old streak card) ----
container.innerHTML = '' +
// Stats grid
'' +
'
' +
'
' + sortedTags.length + '
Topics
' +
'
' +
// Daily Learning Checklist (with streak)
'' +
'' +
'
' +
'' +
'' +
'
' +
'
' +
'' +
'' +
'
' +
'
' +
'' +
'' +
'
' +
'
' + (completed ? 'โ
All done today! Keep it up!' : 'โ ๏ธ Complete all three to keep your streak!') + '
' +
'
' + daysHtml + '
' +
'
' +
// Daily Practice (no streak here)
'' +
'
๐
Daily Practice
' +
'
Review 3 random saved answers to reinforce your learning.
' +
'
' +
'
' +
// Tag breakdown
'' +
'
๐ Topic Breakdown
' +
(barsHtml || '
No tags yet.
') +
(sortedTags.length > 0 ? '
Most saved: ' + mostTag + '
' : '') +
'
';
}