25 lines
945 B
JavaScript
25 lines
945 B
JavaScript
(function () {
|
|
document.querySelectorAll('input.task-checkbox[data-task-index]').forEach(function (cb) {
|
|
cb.addEventListener('change', function () {
|
|
var idx = cb.dataset.taskIndex;
|
|
var checked = cb.checked;
|
|
cb.disabled = true;
|
|
fetch(window.location.pathname + '?toggle=' + idx, {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
|
body: 'checked=' + checked
|
|
}).then(function (res) {
|
|
if (!res.ok) {
|
|
cb.checked = !checked;
|
|
alert('Failed to save task state (' + res.status + ')');
|
|
}
|
|
}).catch(function () {
|
|
cb.checked = !checked;
|
|
alert('Failed to save task state');
|
|
}).finally(function () {
|
|
cb.disabled = false;
|
|
});
|
|
});
|
|
});
|
|
})();
|