diff --git a/static/app.js b/static/app.js index de5d785..59936b1 100644 --- a/static/app.js +++ b/static/app.js @@ -277,13 +277,9 @@ function resetGradeState() { renderGradeReview(); } -$('#btn-grade').addEventListener('click', () => { - resetGradeState(); - $('#grade-file').click(); -}); -$('#grade-file').addEventListener('change', async (e) => { +async function addPickedFrom(input) { try { - const picked = await readPickedImages(e.target, 6 - gradeState.files.length); + const picked = await readPickedImages(input, 6 - gradeState.files.length); if (!picked.length) return; gradeState.files.push(...picked); renderGradeReview(); @@ -291,7 +287,19 @@ $('#grade-file').addEventListener('change', async (e) => { $('#grade-status').hidden = false; $('#grade-status').textContent = err.message; } +} + +$('#btn-grade').addEventListener('click', () => { + resetGradeState(); + $('#grade-file').click(); }); +$('#grade-file').addEventListener('change', (e) => addPickedFrom(e.target)); + +// Camera shots add onto whatever's already picked (front, then flip to the +// back for a second shot) rather than resetting — resetGradeState() is only +// for starting a fresh card, which the library button already does. +$('#btn-camera').addEventListener('click', () => $('#grade-camera').click()); +$('#grade-camera').addEventListener('change', (e) => addPickedFrom(e.target)); $('#grade-review').addEventListener('click', (e) => { if (e.target.closest('#grade-add-more')) { $('#grade-file').click(); return; } if (e.target.closest('#grade-cancel') || e.target.closest('#grade-discard')) { diff --git a/static/index.html b/static/index.html index 5f43064..5f9d03d 100644 --- a/static/index.html +++ b/static/index.html @@ -44,10 +44,19 @@ back centering, and it can only tell a print line from a crease — about five PSA grades apart — if it can check both sides.
- + +
+ +