commit 2726d06bd227ebb53e72bcaef6180facb037c1fb
parent 3dbb3c853325918e3c165bbdd11dc40601647628
Author: Hunter
Date: Mon, 5 Aug 2024 11:57:20 -0400
propagate indeterminate state to descendants
Diffstat:
1 file changed, 11 insertions(+), 17 deletions(-)
diff --git a/index.html b/index.html
@@ -415,23 +415,11 @@
if (task.state === 1) {
if (task.subtasks.length === 0 || !task.subtasks.every(t => t.state === 1)) {
task.state = 0;
- if (task.subtasks.length > 0) {
- task.subtasks.forEach(subtask => {
- if (subtask.state === 2) {
- subtask.state = 0;
- }
- });
- }
+ updateSubtasksState(task, 0);
}
} else {
task.state = 1;
- if (task.subtasks.length > 0) {
- task.subtasks.forEach(subtask => {
- if (subtask.state === 0) {
- subtask.state = 2;
- }
- });
- }
+ updateSubtasksState(task, 1);
}
updateParentTaskState(task);
renderCurrentView();
@@ -457,9 +445,15 @@
function updateSubtasksState(task, state) {
task.subtasks.forEach(subtask => {
- subtask.state = state;
- if (subtask.subtasks.length > 0) {
- updateSubtasksState(subtask, state);
+ if (subtask.state !== 1) { // Only update if the subtask is not checked
+ if (state === 1) {
+ subtask.state = subtask.state === 0 ? 2 : subtask.state;
+ } else if (state === 0) {
+ subtask.state = 0;
+ }
+ if (subtask.subtasks.length > 0) {
+ updateSubtasksState(subtask, state);
+ }
}
});
}