diff --git a/frontend/textbooks/algebra_8.html b/frontend/textbooks/algebra_8.html index a943690..dc91c79 100644 --- a/frontend/textbooks/algebra_8.html +++ b/frontend/textbooks/algebra_8.html @@ -399,6 +399,24 @@ const STATE = { squaresBest: Infinity, }; +/* Словарь имён достижений — используется и для отображения, и для retroactive-фикса старых записей */ +const ACH_LABELS = { + start: 'Начало пути по корням!', + ring36: 'Нашёл сторону ринга', + squares: 'Лучший результат «Таблица квадратов»', + exists: 'Сортировка корней', + classify: 'Классифицировал числа', + rat: 'Распознал иррациональные', + match: 'Match выражений', + simp4: 'Тренажёр упрощения корней', + draw: 'Построил промежуток', + tariff: 'Задача про тарифы', + ass8: 'Самооценка 8+/10', + pr1: 'Дорожка с розами', + pr2: 'Цемент', + decode: 'Расшифровал код', +}; + function loadProgress(){ try{ const s = localStorage.getItem('algebra8_ch1_progress'); @@ -407,10 +425,13 @@ function loadProgress(){ if(a){ const parsed = JSON.parse(a); if(Array.isArray(parsed)){ - // старый формат [id, id, ...] — id-ы как текст - parsed.forEach(id => STATE.achievements.set(id, id)); + // старый формат [id, id, ...] + parsed.forEach(id => STATE.achievements.set(id, ACH_LABELS[id] || id)); } else if(parsed && typeof parsed === 'object'){ - STATE.achievements = new Map(Object.entries(parsed)); + for(const [id, txt] of Object.entries(parsed)){ + // если ранее сохранили id вместо названия — подменим на красивое + STATE.achievements.set(id, (txt && txt !== id) ? txt : (ACH_LABELS[id] || id)); + } } } const sb = localStorage.getItem('algebra8_ch1_squaresBest');