diff --git a/view-webapp/src/main/sass/tour.scss b/view-webapp/src/main/sass/tour.scss index 009d011..53dc6a9 100644 --- a/view-webapp/src/main/sass/tour.scss +++ b/view-webapp/src/main/sass/tour.scss @@ -101,6 +101,7 @@ .participation { white-space: nowrap; .ui.label { + cursor: pointer; font-size: 0.8rem; min-width: 2em; min-height: 2em; diff --git a/view-webapp/src/main/webapp/js/tour-registration.inc.js b/view-webapp/src/main/webapp/js/tour-registration.inc.js index 631d17b..7fec09a 100644 --- a/view-webapp/src/main/webapp/js/tour-registration.inc.js +++ b/view-webapp/src/main/webapp/js/tour-registration.inc.js @@ -249,7 +249,7 @@ onLoad(() => { } }); $('#players > tbody > tr').on('click', e => { - let regStatus = e.target.closest('td.reg-status'); + let regStatus = e.target.closest('td.reg-status, td.participating'); if (regStatus) return; let id = e.target.closest('tr').attr('data-id'); api.getJson(`tour/${tour_id}/part/${id}`) @@ -472,4 +472,25 @@ onLoad(() => { $('.player-fields').on('change input', e => { $('#register').removeClass('disabled'); }); + $('.participation label').on('click', e => { + let part = e.target; + let id = part.closest('tr').data('id'); + let round = parseInt(part.text()); + let skip = new Set(part.closest('.participation').find('label.red').map(it => parseInt(it.innerText))); + if (skip.has(round)) skip.delete(round); + else skip.add(round); + api.putJson(`tour/${tour_id}/part/${id}`, { + id: id, + skip: Array.from(skip) + }).then(player => { + if (player !== 'error') { + part.toggleClass('red'); + part.toggleClass('green'); + standingsUpToDate = false; + pairablesUpToDate = false; + } + }); + e.preventDefault(); + return false; + }); });