From 506918e77239cd67a7a78865670d82cc310473a3 Mon Sep 17 00:00:00 2001 From: Mika Dede Date: Mon, 27 Sep 2021 23:04:22 +0200 Subject: [PATCH] score: fix code style (indent by 2 spaces) --- apps/score/score.app.js | 554 +++++++++++++++++------------------ apps/score/score.settings.js | 232 +++++++-------- 2 files changed, 393 insertions(+), 393 deletions(-) diff --git a/apps/score/score.app.js b/apps/score/score.app.js index 9f22927af..7f0b04a59 100644 --- a/apps/score/score.app.js +++ b/apps/score/score.app.js @@ -21,93 +21,93 @@ let w = g.getWidth(); let h = g.getHeight(); function setupInputWatchers() { - if (global.BTN4) { - setWatch(() => handleInput(2), BTN2, { repeat: true }); - setWatch(() => handleInput(3), BTN1, { repeat: true }); - setWatch(() => handleInput(4), BTN3, { repeat: true }); + if (global.BTN4) { + setWatch(() => handleInput(2), BTN2, { repeat: true }); + setWatch(() => handleInput(3), BTN1, { repeat: true }); + setWatch(() => handleInput(4), BTN3, { repeat: true }); + } else { + setWatch(() => handleInput(2), BTN, { repeat: true }); + } + Bangle.on('touch', (b, e) => { + if (b) { + if (b === 1) { + handleInput(0); + } else { + handleInput(1); + } } else { - setWatch(() => handleInput(2), BTN, { repeat: true }); + if (e.x < w/2) { + handleInput(0); + } else { + handleInput(1); + } } - Bangle.on('touch', (b, e) => { - if (b) { - if (b === 1) { - handleInput(0); - } else { - handleInput(1); - } - } else { - if (e.x < w/2) { - handleInput(0); - } else { - handleInput(1); - } - } - }); + }); } function setupMatch() { - scores = []; - for (let s = 0; s < sets(); s++) { - scores.push([0,0,null,0,0]); - } + scores = []; + for (let s = 0; s < sets(); s++) { scores.push([0,0,null,0,0]); + } + scores.push([0,0,null,0,0]); - if (settings.enableTennisScoring) { - tScores = [0,0]; - } else { - tScores = null; - } + if (settings.enableTennisScoring) { + tScores = [0,0]; + } else { + tScores = null; + } - scores[0][2] = getTime(); + scores[0][2] = getTime(); - cSet = 0; - firstShownSet = 0 - Math.floor(setsPerPage() / 2); + cSet = 0; + firstShownSet = 0 - Math.floor(setsPerPage() / 2); - correctionMode = false; + correctionMode = false; } function showSettingsMenu() { - settingsMenuOpened = getTime(); - settingsMenu(function (s, reset) { - E.showMenu(); + settingsMenuOpened = getTime(); + settingsMenu(function (s, reset) { + E.showMenu(); - settings = s; + settings = s; - if (reset) { - setupMatch(); - } else if (getTime() - settingsMenuOpened < 0.5 || correctionMode) { - correctionMode = !correctionMode; - } + if (reset) { + setupMatch(); + } else if (getTime() - settingsMenuOpened < 0.5 || correctionMode) { + correctionMode = !correctionMode; + } - settingsMenuOpened = null; + settingsMenuOpened = null; - draw(); - }); + draw(); + }); } function maxScore() { - return Math.max(settings.maxScore, settings.winScore); + return Math.max(settings.maxScore, settings.winScore); } function tiebreakMaxScore() { - return Math.max(settings.maxScoreTiebreakMaxScore, settings.maxScoreTiebreakWinScore); + return Math.max(settings.maxScoreTiebreakMaxScore, settings.maxScoreTiebreakWinScore); } function setsPerPage() { - return Math.min(settings.setsPerPage, sets()); + return Math.min(settings.setsPerPage, sets()); } function sets() { - return settings.winSets * 2 - 1; + return settings.winSets * 2 - 1; } function currentSet() { - return matchEnded() ? cSet - 1 : cSet; + return matchEnded() ? cSet - 1 : cSet; } function shouldTiebreak() { - return settings.enableMaxScoreTiebreak && - scores[cSet][0] + scores[cSet][1] === (maxScore() - 1) * 2; + return settings.enableMaxScoreTiebreak && + scores[cSet][0] + scores[cSet][1] === (maxScore() - 1) * 2; } function formatNumber(num, length) { @@ -115,285 +115,285 @@ function formatNumber(num, length) { } function formatDuration(duration) { - let durS = Math.floor(duration); - let durM = Math.floor(durS / 60); - let durH = Math.floor(durM / 60); - durS = durS - durM * 60; - durM = durM - durH * 60; + let durS = Math.floor(duration); + let durM = Math.floor(durS / 60); + let durH = Math.floor(durM / 60); + durS = durS - durM * 60; + durM = durM - durH * 60; - durS = formatNumber(durS); - durM = formatNumber(durM); - durH = formatNumber(durH); + durS = formatNumber(durS); + durM = formatNumber(durM); + durH = formatNumber(durH); - let dur = null; - if (durH > 0) { - dur = durH + ':' + durM; - } else { - dur = durM + ':' + durS; - } + let dur = null; + if (durH > 0) { + dur = durH + ':' + durM; + } else { + dur = durM + ':' + durS; + } - return dur; + return dur; } function tiebreakWon(set, player) { - let pScore = scores[set][3+player]; - let p2Score = scores[set][3+~~!player]; + let pScore = scores[set][3+player]; + let p2Score = scores[set][3+~~!player]; - let winScoreReached = pScore >= settings.maxScoreTiebreakWinScore; - let isTwoAhead = !settings.maxScoreTiebreakEnableTwoAhead || pScore - p2Score >= 2; - let reachedMaxScore = settings.maxScoreTiebreakEnableMaxScore && pScore >= tiebreakMaxScore(); + let winScoreReached = pScore >= settings.maxScoreTiebreakWinScore; + let isTwoAhead = !settings.maxScoreTiebreakEnableTwoAhead || pScore - p2Score >= 2; + let reachedMaxScore = settings.maxScoreTiebreakEnableMaxScore && pScore >= tiebreakMaxScore(); - return reachedMaxScore || (winScoreReached && isTwoAhead); + return reachedMaxScore || (winScoreReached && isTwoAhead); } function setWon(set, player) { - let pScore = scores[set][player]; - let p2Score = scores[set][~~!player]; + let pScore = scores[set][player]; + let p2Score = scores[set][~~!player]; - let winScoreReached = pScore >= settings.winScore; - let isTwoAhead = !settings.enableTwoAhead || pScore - p2Score >= 2; - let tiebreakW = tiebreakWon(set, player); - let reachedMaxScore = settings.enableMaxScore && pScore >= maxScore(); + let winScoreReached = pScore >= settings.winScore; + let isTwoAhead = !settings.enableTwoAhead || pScore - p2Score >= 2; + let tiebreakW = tiebreakWon(set, player); + let reachedMaxScore = settings.enableMaxScore && pScore >= maxScore(); - return ( - (settings.enableMaxScoreTiebreak ? tiebreakW : reachedMaxScore) || - (winScoreReached && isTwoAhead) - ); + return ( + (settings.enableMaxScoreTiebreak ? tiebreakW : reachedMaxScore) || + (winScoreReached && isTwoAhead) + ); } function setEnded(set) { - return setWon(set, 0) || setWon(set, 1); + return setWon(set, 0) || setWon(set, 1); } function setsWon(player) { - return Array(sets()).fill(0).map((_, s) => ~~setWon(s, player)).reduce((a,v) => a+v, 0); + return Array(sets()).fill(0).map((_, s) => ~~setWon(s, player)).reduce((a,v) => a+v, 0); } function matchWon(player) { - return setsWon(player) >= settings.winSets; + return setsWon(player) >= settings.winSets; } function matchEnded() { - return matchWon(0) || matchWon(1); + return matchWon(0) || matchWon(1); } function matchScore(player) { - return scores.reduce((acc, val) => acc += val[player], 0); + return scores.reduce((acc, val) => acc += val[player], 0); } function score(player) { - let setFirstShownSet = function () { - firstShownSet = currentSet() - Math.floor(setsPerPage() / 2); - }; - let updateCurrentSet = function (val) { - cSet += val; - setFirstShownSet(); - }; + let setFirstShownSet = function () { + firstShownSet = currentSet() - Math.floor(setsPerPage() / 2); + }; + let updateCurrentSet = function (val) { + cSet += val; + setFirstShownSet(); + }; - if (!matchEnded() || correctionMode) { - setFirstShownSet(); + if (!matchEnded() || correctionMode) { + setFirstShownSet(); + } + + if (correctionMode) { + if ( + scores[cSet][0] === 0 && scores[cSet][1] === 0 && + scores[cSet][3] === 0 && scores[cSet][4] === 0 && + cSet > 0 + ) { + updateCurrentSet(-1); } - if (correctionMode) { - if ( - scores[cSet][0] === 0 && scores[cSet][1] === 0 && - scores[cSet][3] === 0 && scores[cSet][4] === 0 && - cSet > 0 - ) { - updateCurrentSet(-1); - } + if (scores[cSet][3] > 0 || scores[cSet][4] > 0) { + if (scores[cSet][3+player] > 0) { + scores[cSet][3+player]--; + } + } else if (scores[cSet][player] > 0) { + if (tScores[player] === 0 && tScores[~~!player] === 0) { + scores[cSet][player]--; + } else { + tScores[player] = 0; + tScores[~~!player] = 0; + } + } + } else { + if (matchEnded()) return; - if (scores[cSet][3] > 0 || scores[cSet][4] > 0) { - if (scores[cSet][3+player] > 0) { - scores[cSet][3+player]--; - } - } else if (scores[cSet][player] > 0) { - if (tScores[player] === 0 && tScores[~~!player] === 0) { - scores[cSet][player]--; - } else { - tScores[player] = 0; - tScores[~~!player] = 0; - } - } + if (shouldTiebreak()) { + scores[cSet][3+player]++; + } else if (settings.enableTennisScoring) { + if (tScores[player] === 4 && tScores[~~!player] === 5) { // DC : AD + tScores[~~!player]--; + } else if (tScores[player] === 2 && tScores[~~!player] === 3) { // 30 : 40 + tScores[0] = 4; + tScores[1] = 4; + } else if (tScores[player] === 3 || tScores[player] === 5) { // 40 / AD + tScores[0] = 0; + tScores[1] = 0; + scores[cSet][player]++; + } else { + tScores[player]++; + } } else { - if (matchEnded()) return; - - if (shouldTiebreak()) { - scores[cSet][3+player]++; - } else if (settings.enableTennisScoring) { - if (tScores[player] === 4 && tScores[~~!player] === 5) { // DC : AD - tScores[~~!player]--; - } else if (tScores[player] === 2 && tScores[~~!player] === 3) { // 30 : 40 - tScores[0] = 4; - tScores[1] = 4; - } else if (tScores[player] === 3 || tScores[player] === 5) { // 40 / AD - tScores[0] = 0; - tScores[1] = 0; - scores[cSet][player]++; - } else { - tScores[player]++; - } - } else { - scores[cSet][player]++; - } - - if (setEnded(cSet) && cSet < sets()) { - if (shouldTiebreak()) { - scores[cSet][player]++; - } - updateCurrentSet(1); - scores[cSet][2] = getTime(); - } - - if (matchEnded()) { - firstShownSet = 0; - } + scores[cSet][player]++; } + + if (setEnded(cSet) && cSet < sets()) { + if (shouldTiebreak()) { + scores[cSet][player]++; + } + updateCurrentSet(1); + scores[cSet][2] = getTime(); + } + + if (matchEnded()) { + firstShownSet = 0; + } + } } function handleInput(button) { - if (settingsMenuOpened) { + if (settingsMenuOpened) { + return; + } + + switch (button) { + case 0: + case 1: + score(button); + break; + case 2: + showSettingsMenu(); return; - } + case 3: + case 4: + let hLimit = currentSet(); + let lLimit = 1 - setsPerPage(); + let val = (button * 2 - 7); + firstShownSet += val; + if (firstShownSet > hLimit) firstShownSet = hLimit; + if (firstShownSet < lLimit) firstShownSet = lLimit; + break; + } - switch (button) { - case 0: - case 1: - score(button); - break; - case 2: - showSettingsMenu(); - return; - case 3: - case 4: - let hLimit = currentSet(); - let lLimit = 1 - setsPerPage(); - let val = (button * 2 - 7); - firstShownSet += val; - if (firstShownSet > hLimit) firstShownSet = hLimit; - if (firstShownSet < lLimit) firstShownSet = lLimit; - break; - } - - draw(); + draw(); } function draw() { - g.setFontAlign(0,0); - g.clear(); + g.setFontAlign(0,0); + g.clear(); + + for (let p = 0; p < 2; p++) { + if (matchWon(p)) { + g.setFontAlign(0,0); + g.setFont('Teletext10x18Ascii',1); + g.drawString("WINNER", p === 0 ? w/4 : w/4*3, 15); + } else if (matchEnded()) { + g.setFontAlign(0,-1); + + let dur1 = formatDuration(scores[cSet][2] - scores[0][2]); + g.setFont('5x9Numeric7Seg',1); + g.drawString(dur1, p === 0 ? w/8 : w/8*5, 10); + + g.setFont('Teletext5x9Ascii',1); + g.drawString((currentSet()+1) + ' set' + (currentSet() > 0 ? 's' : ''), p === 0 ? w/8*3 : w/8*7, 12); + + } + + g.setFontAlign(p === 0 ? -1 : 1,1); + g.setFont('7x11Numeric7Seg',2); + g.drawString(setsWon(p), p === 0 ? 10 : w-8, h-5); + + if (!settings.enableTennisScoring) { + g.setFontAlign(p === 0 ? 1 : -1,1); + g.setFont('7x11Numeric7Seg',2); + g.drawString(formatNumber(matchScore(p), 3), p === 0 ? w/2 - 8 : w/2 + 11, h-5); + } + } + g.setFontAlign(0,0); + + if (correctionMode) { + g.setFont('Teletext10x18Ascii',1); + g.drawString("R", w/2, h-10); + } + + let lastShownSet = Math.min( + sets(), + currentSet() + 1, + firstShownSet+setsPerPage() + ); + let setsOnCurrentPage = Math.min( + sets(), + setsPerPage() + ); + for (let set = firstShownSet; set < lastShownSet; set++) { + if (set < 0) continue; + + let y = (h-15)/(setsOnCurrentPage+1)*(set-firstShownSet+1)+5; + + g.setFontAlign(1,0); + g.setFont('7x11Numeric7Seg',1); + g.drawString(set+1, 40, y-10); + if (scores[set+1][2] != null) { + let dur2 = formatDuration(scores[set+1][2] - scores[set][2]); + g.drawString(dur2, 40, y+10); + } for (let p = 0; p < 2; p++) { - if (matchWon(p)) { - g.setFontAlign(0,0); - g.setFont('Teletext10x18Ascii',1); - g.drawString("WINNER", p === 0 ? w/4 : w/4*3, 15); - } else if (matchEnded()) { - g.setFontAlign(0,-1); - - let dur1 = formatDuration(scores[cSet][2] - scores[0][2]); - g.setFont('5x9Numeric7Seg',1); - g.drawString(dur1, p === 0 ? w/8 : w/8*5, 10); - - g.setFont('Teletext5x9Ascii',1); - g.drawString((currentSet()+1) + ' set' + (currentSet() > 0 ? 's' : ''), p === 0 ? w/8*3 : w/8*7, 12); + if (!setWon(set, p === 0 ? 1 : 0) || matchEnded()) { + let bigNumX = p === 0 ? (w-20)/4+18 : (w-20)/4*3+4; + let smallNumX = p === 0 ? w/2-2 : w/2+3; + if (settings.enableTennisScoring && set === cSet && !shouldTiebreak()) { + g.setFontAlign(0,0); + g.setFont('7x11Numeric7Seg',3); + g.drawString( + formatNumber(tennisScores[tScores[p]]), + bigNumX, + y + ); + } else if (shouldTiebreak() && set === cSet) { + g.setFontAlign(0,0); + g.setFont('7x11Numeric7Seg',3); + g.drawString( + formatNumber(scores[set][3+p], 3), + bigNumX, + y + ); + } else { + g.setFontAlign(0,0); + g.setFont('7x11Numeric7Seg',3); + g.drawString( + formatNumber(scores[set][p]), + bigNumX, + y + ); } - g.setFontAlign(p === 0 ? -1 : 1,1); - g.setFont('7x11Numeric7Seg',2); - g.drawString(setsWon(p), p === 0 ? 10 : w-8, h-5); - - if (!settings.enableTennisScoring) { - g.setFontAlign(p === 0 ? 1 : -1,1); - g.setFont('7x11Numeric7Seg',2); - g.drawString(formatNumber(matchScore(p), 3), p === 0 ? w/2 - 8 : w/2 + 11, h-5); + if ((shouldTiebreak() || settings.enableTennisScoring) && set === cSet) { + g.setFontAlign(p === 0 ? 1 : -1,0); + g.setFont('7x11Numeric7Seg',1); + g.drawString( + formatNumber(scores[set][p]), + smallNumX, + y + ); + } else if ((scores[set][3] !== 0 || scores[set][4] !== 0) && set !== cSet) { + g.setFontAlign(p === 0 ? 1 : -1,0); + g.setFont('7x11Numeric7Seg',1); + g.drawString( + formatNumber(scores[set][3+p], 3), + smallNumX, + y + ); } + } } - g.setFontAlign(0,0); + } - if (correctionMode) { - g.setFont('Teletext10x18Ascii',1); - g.drawString("R", w/2, h-10); - } + // draw separator + g.drawLine(w/2,20,w/2,h-25); - let lastShownSet = Math.min( - sets(), - currentSet() + 1, - firstShownSet+setsPerPage() - ); - let setsOnCurrentPage = Math.min( - sets(), - setsPerPage() - ); - for (let set = firstShownSet; set < lastShownSet; set++) { - if (set < 0) continue; - - let y = (h-15)/(setsOnCurrentPage+1)*(set-firstShownSet+1)+5; - - g.setFontAlign(1,0); - g.setFont('7x11Numeric7Seg',1); - g.drawString(set+1, 40, y-10); - if (scores[set+1][2] != null) { - let dur2 = formatDuration(scores[set+1][2] - scores[set][2]); - g.drawString(dur2, 40, y+10); - } - - for (let p = 0; p < 2; p++) { - if (!setWon(set, p === 0 ? 1 : 0) || matchEnded()) { - let bigNumX = p === 0 ? (w-20)/4+18 : (w-20)/4*3+4; - let smallNumX = p === 0 ? w/2-2 : w/2+3; - - if (settings.enableTennisScoring && set === cSet && !shouldTiebreak()) { - g.setFontAlign(0,0); - g.setFont('7x11Numeric7Seg',3); - g.drawString( - formatNumber(tennisScores[tScores[p]]), - bigNumX, - y - ); - } else if (shouldTiebreak() && set === cSet) { - g.setFontAlign(0,0); - g.setFont('7x11Numeric7Seg',3); - g.drawString( - formatNumber(scores[set][3+p], 3), - bigNumX, - y - ); - } else { - g.setFontAlign(0,0); - g.setFont('7x11Numeric7Seg',3); - g.drawString( - formatNumber(scores[set][p]), - bigNumX, - y - ); - } - - if ((shouldTiebreak() || settings.enableTennisScoring) && set === cSet) { - g.setFontAlign(p === 0 ? 1 : -1,0); - g.setFont('7x11Numeric7Seg',1); - g.drawString( - formatNumber(scores[set][p]), - smallNumX, - y - ); - } else if ((scores[set][3] !== 0 || scores[set][4] !== 0) && set !== cSet) { - g.setFontAlign(p === 0 ? 1 : -1,0); - g.setFont('7x11Numeric7Seg',1); - g.drawString( - formatNumber(scores[set][3+p], 3), - smallNumX, - y - ); - } - } - } - } - - // draw separator - g.drawLine(w/2,20,w/2,h-25); - - g.flip(); + g.flip(); } setupInputWatchers(); diff --git a/apps/score/score.settings.js b/apps/score/score.settings.js index c1a0382d2..901867d7b 100644 --- a/apps/score/score.settings.js +++ b/apps/score/score.settings.js @@ -1,128 +1,128 @@ (function (back, ret) { - const fileName = 'score.json' - let settings = require('Storage').readJSON(fileName, 1) || {}; - const offon = ['No', 'Yes']; + const fileName = 'score.json' + let settings = require('Storage').readJSON(fileName, 1) || {}; + const offon = ['No', 'Yes']; - let changed = false; + let changed = false; - function save(key, value) { - changed = true; - settings[key] = value; - if (key === 'winScore' && settings.maxScore < value) { - settings.maxScore = value; - } - require('Storage').writeJSON(fileName, settings); + function save(key, value) { + changed = true; + settings[key] = value; + if (key === 'winScore' && settings.maxScore < value) { + settings.maxScore = value; } + require('Storage').writeJSON(fileName, settings); + } - if (settings.winSets == null) { - settings.winSets = 1; - } - if (settings.setsPerPage == null) { - settings.setsPerPage = 5; - } - if (settings.winScore == null) { - settings.winScore = 21; - } - if (settings.enableTwoAhead == null) { - settings.enableTwoAhead = true; - } - if (settings.enableMaxScore == null) { - settings.enableMaxScore = true; - } - if (settings.maxScore == null) { - settings.maxScore = 30; - } - if (settings.enableTennisScoring == null) { - settings.enableTennisScoring = false; - } + if (settings.winSets == null) { + settings.winSets = 1; + } + if (settings.setsPerPage == null) { + settings.setsPerPage = 5; + } + if (settings.winScore == null) { + settings.winScore = 21; + } + if (settings.enableTwoAhead == null) { + settings.enableTwoAhead = true; + } + if (settings.enableMaxScore == null) { + settings.enableMaxScore = true; + } + if (settings.maxScore == null) { + settings.maxScore = 30; + } + if (settings.enableTennisScoring == null) { + settings.enableTennisScoring = false; + } - if (settings.enableMaxScoreTiebreak == null) { - settings.enableMaxScoreTiebreak = false; - } - if (settings.maxScoreTiebreakWinScore == null) { - settings.maxScoreTiebreakWinScore = 6; - } - if (settings.maxScoreTiebreakEnableTwoAhead == null) { - settings.maxScoreTiebreakEnableTwoAhead = true; - } - if (settings.maxScoreTiebreakEnableMaxScore == null) { - settings.maxScoreTiebreakEnableMaxScore = false; - } - if (settings.maxScoreTiebreakMaxScore == null) { - settings.maxScoreTiebreakMaxScore = 15; - } + if (settings.enableMaxScoreTiebreak == null) { + settings.enableMaxScoreTiebreak = false; + } + if (settings.maxScoreTiebreakWinScore == null) { + settings.maxScoreTiebreakWinScore = 6; + } + if (settings.maxScoreTiebreakEnableTwoAhead == null) { + settings.maxScoreTiebreakEnableTwoAhead = true; + } + if (settings.maxScoreTiebreakEnableMaxScore == null) { + settings.maxScoreTiebreakEnableMaxScore = false; + } + if (settings.maxScoreTiebreakMaxScore == null) { + settings.maxScoreTiebreakMaxScore = 15; + } - if (ret) { - return settings; - } + if (ret) { + return settings; + } - const appMenu = {}; - appMenu[''] = {'title': 'Score Settings'}, - appMenu['< Back'] = function () { back(settings, changed); }; - if (reset) { - appMenu['Reset match'] = function () { back(settings, true); }; - } - appMenu['Sets to win'] = { - value: settings.winSets, - min:1, - onchange: m => save('winSets', m) - }; - appMenu['Sets per page'] = { - value: settings.setsPerPage, - min:1, - max:5, - onchange: m => save('setsPerPage', m) - }; - appMenu['Score to win'] = { - value: settings.winScore, - min:1, - onchange: m => save('winScore', m) - }; - appMenu['2-point lead'] = { - value: settings.enableTwoAhead, - format: m => offon[~~m], - onchange: m => save('enableTwoAhead', m) - }; - appMenu['Maximum score?'] = { - value: settings.enableMaxScore, - format: m => offon[~~m], - onchange: m => save('enableMaxScore', m) - }; - appMenu['Maximum score'] = { - value: settings.maxScore, - min: 1, - onchange: m => save('maxScore', m) - }; - appMenu['Tennis scoring'] = { - value: settings.enableTennisScoring, - format: m => offon[~~m], - onchange: m => save('enableTennisScoring', m) - }; - appMenu['TB sets?'] = { - value: settings.enableMaxScoreTiebreak, - format: m => offon[~~m], - onchange: m => save('enableMaxScoreTiebreak', m) - } - appMenu['TB Score to win'] = { - value: settings.maxScoreTiebreakWinScore, - onchange: m => save('maxScoreTiebreakWinScore', m) - } - appMenu['TB 2-point lead'] = { - value: settings.maxScoreTiebreakEnableTwoAhead, - format: m => offon[~~m], - onchange: m => save('maxScoreTiebreakEnableTwoAhead', m) - } - appMenu['TB max score?'] = { - value: settings.maxScoreTiebreakEnableMaxScore, - format: m => offon[~~m], - onchange: m => save('maxScoreTiebreakEnableMaxScore', m) - } - appMenu['TB max score'] = { - value: settings.maxScoreTiebreakMaxScore, - onchange: m => save('maxScoreTiebreakMaxScore', m) - } + const appMenu = {}; + appMenu[''] = {'title': 'Score Settings'}, + appMenu['< Back'] = function () { back(settings, changed); }; + if (reset) { + appMenu['Reset match'] = function () { back(settings, true); }; + } + appMenu['Sets to win'] = { + value: settings.winSets, + min:1, + onchange: m => save('winSets', m) + }; + appMenu['Sets per page'] = { + value: settings.setsPerPage, + min:1, + max:5, + onchange: m => save('setsPerPage', m) + }; + appMenu['Score to win'] = { + value: settings.winScore, + min:1, + onchange: m => save('winScore', m) + }; + appMenu['2-point lead'] = { + value: settings.enableTwoAhead, + format: m => offon[~~m], + onchange: m => save('enableTwoAhead', m) + }; + appMenu['Maximum score?'] = { + value: settings.enableMaxScore, + format: m => offon[~~m], + onchange: m => save('enableMaxScore', m) + }; + appMenu['Maximum score'] = { + value: settings.maxScore, + min: 1, + onchange: m => save('maxScore', m) + }; + appMenu['Tennis scoring'] = { + value: settings.enableTennisScoring, + format: m => offon[~~m], + onchange: m => save('enableTennisScoring', m) + }; + appMenu['TB sets?'] = { + value: settings.enableMaxScoreTiebreak, + format: m => offon[~~m], + onchange: m => save('enableMaxScoreTiebreak', m) + } + appMenu['TB Score to win'] = { + value: settings.maxScoreTiebreakWinScore, + onchange: m => save('maxScoreTiebreakWinScore', m) + } + appMenu['TB 2-point lead'] = { + value: settings.maxScoreTiebreakEnableTwoAhead, + format: m => offon[~~m], + onchange: m => save('maxScoreTiebreakEnableTwoAhead', m) + } + appMenu['TB max score?'] = { + value: settings.maxScoreTiebreakEnableMaxScore, + format: m => offon[~~m], + onchange: m => save('maxScoreTiebreakEnableMaxScore', m) + } + appMenu['TB max score'] = { + value: settings.maxScoreTiebreakMaxScore, + onchange: m => save('maxScoreTiebreakMaxScore', m) + } - E.showMenu(appMenu) + E.showMenu(appMenu) })