diff --git a/public/board.js b/public/board.js index 406c90a..ec793e6 100644 --- a/public/board.js +++ b/public/board.js @@ -122,11 +122,13 @@ function choreHub(p) { const paint = () => { const mine = data.chores.filter(c => c.user === p.id), todo = mine.filter(c => !c.done), done = mine.filter(c => c.done), pool = data.chores.filter(c => c.claimable && !c.done), me = (data.week && data.week.people.find(x => x.id === p.id)) || { points: 0 }; const row = (c, btns, cls) => `
${esc(c.title)}${c.points ? ` ${c.points} pts` : ''}${btns}
`, h = t => `

${t}

`; - box.innerHTML = head + `

${me.points} points this week

` + const tier = (data.week ? data.week.tiers : []).find(t => t.id === me.goal), pct = tier ? Math.min(100, Math.round(me.points / tier.points * 100)) : 0, got = tier && me.points >= tier.points; + box.innerHTML = head + (tier ? `
๐ŸŽฏ ${esc(tier.title)}${me.points} / ${tier.points} pts
${got ? 'You did it! ๐ŸŽ‰ Tell a parent' : (tier.points - me.points) + ' more points to go'}
` : `

${me.points} points this week${(data.week ? data.week.tiers : []).some(t => ((data.week.people.find(x => x.id === p.id) || {}).tiers || []).includes(t.id)) ? ' ยท Choose a reward to aim for' : ''}

`) + `
` + h('To do today') + (todo.map(c => row(c, `${c.claimed ? `` : ''}`)).join('') || '

Nothing left. Nice! ๐ŸŽ‰

') + (pool.length ? h('Up for grabs. Take one!') + pool.map(c => row(c, ``)).join('') : '') + (done.length ? h('Finished') + done.map(c => row(c, ``, 'dn')).join('') : '') + `
`; + const pg = box.querySelector('#pgl'); if (pg) pg.onclick = e => { e.preventDefault(); close(); goalFlow(p.id); }; box.querySelector('#no').onclick = close; box.querySelector('#sgn').onclick = () => { close(); pick(p); }; box.querySelectorAll('[data-a]').forEach(b => b.onclick = () => { b.disabled = true; const c = data.chores.find(x => x.chore === b.dataset.c && (x.user || '') === b.dataset.u); if (c) act(c, b.dataset.a); else { b.disabled = false; load().then(paint); } }); };