fix(dashboard): добавлено определение loadPetHero (ReferenceError на проде)
Функция loadPetHero вызывалась, но её тело не попало в коммит
667054f (Edit не применился). Восстановлено: рендер питомца через
PetSprite + загрузка /api/pet, как и задумано.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -3261,6 +3261,41 @@
|
||||
document.getElementById('hc-lab-meta').textContent = 'Освой: ' + lab.goal;
|
||||
}
|
||||
|
||||
/* ══ HERO: Pet (synced with /pet module via /api/pet + PetSprite) ═ */
|
||||
async function loadPetHero() {
|
||||
const card = document.getElementById('hc-pet');
|
||||
if (!card) return;
|
||||
let d;
|
||||
try { d = await LS.api('/api/pet'); }
|
||||
catch { card.style.display = 'none'; return; } // фича питомца выключена
|
||||
if (!d) { card.style.display = 'none'; return; }
|
||||
|
||||
// Sprite — единый рендер из pet-sprite.js (как на /pet)
|
||||
const art = document.getElementById('hc-pet-art');
|
||||
if (art && window.PetSprite) {
|
||||
art.innerHTML = PetSprite.render(d.petLevel || 1, d.mood || 'neutral', d.accessories || [], d.petColor || 'purple', d.streakCurrent || 0);
|
||||
}
|
||||
document.getElementById('hc-pet-name').textContent = d.petName || 'Квантик';
|
||||
document.getElementById('hc-pet-lvl').textContent = d.petLevel || 1;
|
||||
|
||||
// XP до следующего уровня питомца
|
||||
const cur = d.xpForCurrLevel || 0;
|
||||
const next = d.xpForNextLevel; // null = макс
|
||||
const have = Math.max(0, (d.xp || 0) - cur);
|
||||
const need = next != null ? Math.max(1, next - cur) : have;
|
||||
const pct = next != null ? Math.min(100, Math.round(have / need * 100)) : 100;
|
||||
document.getElementById('hc-pet-xp').textContent = have;
|
||||
document.getElementById('hc-pet-xpmax').textContent = next != null ? need : '—';
|
||||
document.getElementById('hc-pet-prog').style.width = pct + '%';
|
||||
|
||||
// Стрик / цель дня / настроение
|
||||
document.getElementById('hc-pet-streak').textContent = d.streakCurrent || 0;
|
||||
const quests = d.quests || [];
|
||||
const doneCnt = quests.filter(q => q.done).length;
|
||||
document.getElementById('hc-pet-goal').textContent = quests.length ? `${doneCnt}/${quests.length}` : '—';
|
||||
document.getElementById('hc-pet-mood').textContent = window.PetSprite ? PetSprite.moodLabel(d.mood) : (d.mood || 'бодр');
|
||||
}
|
||||
|
||||
/* ══ ACTIVITY: data structure ══════════════════════════════════════ */
|
||||
let _activityRows = []; // raw history rows
|
||||
let _hmScale = 12; // weeks to show
|
||||
|
||||
Reference in New Issue
Block a user