From 5c16a8a767f3b91efa7936168ff6d2b906723e36 Mon Sep 17 00:00:00 2001 From: Michael Czechowski Date: Fri, 16 Jan 2026 16:37:23 +0100 Subject: [PATCH] feat: redesign sidebar progress to show milestone progress and total lessons --- src/app.js | 11 +++++++---- src/i18n.js | 6 ++++++ src/index.html | 9 ++++++--- src/main.css | 22 ++++++++++++++++++++++ 4 files changed, 41 insertions(+), 7 deletions(-) diff --git a/src/app.js b/src/app.js index 07f85e2..7252e25 100644 --- a/src/app.js +++ b/src/app.js @@ -164,7 +164,8 @@ const elements = { refFooterLessonLinks: document.getElementById("ref-footer-lesson-links"), sectionFooterLessonLinks: document.getElementById("section-footer-lesson-links"), progressFill: document.getElementById("progress-fill"), - progressText: document.getElementById("progress-text"), + progressCurrent: document.getElementById("progress-current"), + progressTotal: document.getElementById("progress-total"), milestonesContainer: document.getElementById("milestones"), resetBtn: document.getElementById("reset-btn"), disableFeedbackToggle: document.getElementById("disable-feedback-toggle"), @@ -322,9 +323,11 @@ function updateProgressDisplay() { elements.progressFill.style.width = `${progressPercent}%`; elements.progressFill.style.setProperty('--progress-percent', progressPercent); - // Update progress text - show completed of total lessons - elements.progressText.textContent = t("progressTextMilestone", { - completed: stats.totalCompleted, + // Update progress current - show progress towards next milestone + elements.progressCurrent.textContent = `${stats.totalCompleted}/${stats.nextMilestone}`; + + // Update progress total - show total lessons + elements.progressTotal.textContent = t("progressTotal", { total: stats.totalLessons }); diff --git a/src/i18n.js b/src/i18n.js index 8188294..0cd3931 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -41,6 +41,7 @@ const translations = { progress: "Progress", progressText: "{percent}% Complete ({completed}/{total})", progressTextMilestone: "{completed} of {total} lessons completed", + progressTotal: "{total} lessons total", lessons: "Lessons", settings: "Settings", showHints: "Show Hints", @@ -264,6 +265,7 @@ const translations = { progress: "Fortschritt", progressText: "{percent}% abgeschlossen ({completed}/{total})", progressTextMilestone: "{completed} von {total} Lektionen abgeschlossen", + progressTotal: "{total} Lektionen insgesamt", lessons: "Lektionen", settings: "Einstellungen", showHints: "Hinweise anzeigen", @@ -487,6 +489,7 @@ const translations = { progress: "Postęp", progressText: "{percent}% ukończone ({completed}/{total})", progressTextMilestone: "{completed} z {total} lekcji ukończonych", + progressTotal: "{total} lekcji łącznie", lessons: "Lekcje", settings: "Ustawienia", showHints: "Pokaż podpowiedzi", @@ -709,6 +712,7 @@ const translations = { progress: "Progreso", progressText: "{percent}% completado ({completed}/{total})", progressTextMilestone: "{completed} de {total} lecciones completadas", + progressTotal: "{total} lecciones en total", lessons: "Lecciones", settings: "Configuración", showHints: "Mostrar pistas", @@ -933,6 +937,7 @@ const translations = { progress: "التقدم", progressText: "{percent}% مكتمل ({completed}/{total})", progressTextMilestone: "{completed} من {total} درس مكتمل", + progressTotal: "{total} درس إجمالي", lessons: "الدروس", settings: "الإعدادات", showHints: "إظهار التلميحات", @@ -1152,6 +1157,7 @@ const translations = { progress: "Прогрес", progressText: "{percent}% завершено ({completed}/{total})", progressTextMilestone: "{completed} з {total} уроків завершено", + progressTotal: "{total} уроків всього", lessons: "Уроки", settings: "Налаштування", showHints: "Показувати підказки", diff --git a/src/index.html b/src/index.html index 644c56d..64f56df 100644 --- a/src/index.html +++ b/src/index.html @@ -476,10 +476,13 @@ 75 100 -
-
+
+
+
+
+ 0/1
- 0 of 100 + 0 of 100 lessons
diff --git a/src/main.css b/src/main.css index 710745f..34082fd 100644 --- a/src/main.css +++ b/src/main.css @@ -1040,6 +1040,28 @@ nav.sidebar-section { color: var(--light-text); } +.progress-bar-row { + display: flex; + align-items: center; + gap: var(--spacing-sm); +} + +.progress-bar-row .progress-bar { + flex: 1; +} + +.progress-current { + font-size: 0.85rem; + font-weight: 600; + color: var(--text-color); + white-space: nowrap; +} + +.progress-total { + font-size: 0.75rem; + color: var(--light-text); +} + /* Milestone Progress */ .milestone-progress { gap: var(--spacing-sm);