|
528 | 528 | const checked = selected.has(i) ? "checked" : ""; |
529 | 529 | html += `<td><input type="checkbox" class="row-check" data-i="${i}" ${checked}></td>`; |
530 | 530 | // per-row volume adjustments |
531 | | - const adjLeft = adjL[i]; |
532 | | - const adjRight = adjR[i]; |
533 | | - html += `<td><input type="range" class="adj" min="-50" max="50" step="1" value="${adjLeft}" data-ear="L" data-i="${i}"></td>`; |
534 | | - html += `<td><input type="range" class="adj" min="-50" max="50" step="1" value="${adjRight}" data-ear="R" data-i="${i}"></td>`; |
| 531 | + html += `<td><input type="range" class="adj" min="-50" max="50" step="1" value="${adjL[i]}" data-ear="L" data-i="${i}"></td>`; |
| 532 | + html += `<td><input type="range" class="adj" min="-50" max="50" step="1" value="${adjR[i]}" data-ear="R" data-i="${i}"></td>`; |
535 | 533 | html += "</tr>"; |
536 | 534 | } |
537 | 535 | // bottom batch row |
|
630 | 628 | ); |
631 | 629 | sl.value = v; |
632 | 630 | const c = Number(localStorage.getItem(KEYS.electrodeCount) || "12"); |
633 | | - const cir = (localStorage.getItem(KEYS.ciSide) || "R") === "R"; |
634 | | - const adjLeft = getAdj(c, "L"); |
635 | | - const adjRight = getAdj(c, "R"); |
636 | | - if (ear === "L") { |
637 | | - (cir ? adjLeft : adjRight)[i] = v; |
638 | | - } else { |
639 | | - (cir ? adjRight : adjLeft)[i] = v; |
640 | | - } |
641 | | - setAdj(c, "L", adjLeft); |
642 | | - setAdj(c, "R", adjRight); |
643 | | - // live-update gain if L+R is active for this row (map displayed ear to actual channel) |
644 | | - const actualEar = cir ? ear : ear === "L" ? "R" : "L"; |
645 | | - updateLiveGainFor(i, actualEar); |
| 631 | + const adjArr = getAdj(c, ear); |
| 632 | + adjArr[i] = v; |
| 633 | + setAdj(c, ear, adjArr); |
| 634 | + updateLiveGainFor(i, ear); |
646 | 635 | }); |
647 | 636 | }); |
648 | 637 | container.querySelectorAll(".row-check").forEach((cb) => { |
|
1410 | 1399 | k === KEYS.volumeR || |
1411 | 1400 | k === KEYS.beepDuration || |
1412 | 1401 | k === KEYS.beepReps || |
| 1402 | + k === KEYS.semiKeyLabel || |
1413 | 1403 | k.startsWith(KEYS.fLPrefix) || |
1414 | 1404 | k.startsWith(KEYS.fRPrefix) || |
1415 | 1405 | k.startsWith(KEYS.adjLPrefix) || |
|
1429 | 1419 | // Clear only our app keys from localStorage |
1430 | 1420 | const keys = keysForAllCounts(); |
1431 | 1421 | keys.forEach((k) => localStorage.removeItem(k)); |
1432 | | - // Re-init UI controls with defaults and re-render |
1433 | | - initControls(); |
1434 | | - showToast('All settings have been reset'); |
| 1422 | + // Reload to avoid duplicate listeners and fully re-init |
| 1423 | + location.reload(); |
1435 | 1424 | } |
1436 | 1425 |
|
1437 | 1426 | function resetAlignments() { |
|
0 commit comments