propagate indeterminate state to descendants

Hunter
Monday, August 5th, 2024 at 11:57 AM

index.html+11-17

index.html
415  				if (task.state === 1) {
416  					if (task.subtasks.length === 0 || !task.subtasks.every(t => t.state === 1)) {
417  						task.state = 0;
    -						if (task.subtasks.length > 0) {
    -							task.subtasks.forEach(subtask => {
    -								if (subtask.state === 2) {
    -									subtask.state = 0;
    -								}
    -							});
    -						}
418 +						updateSubtasksState(task, 0);
419  					}
420  				} else {
421  					task.state = 1;
    -					if (task.subtasks.length > 0) {
    -						task.subtasks.forEach(subtask => {
    -							if (subtask.state === 0) {
    -								subtask.state = 2;
    -							}
    -						});
    -					}
422 +					updateSubtasksState(task, 1);
423  				}
424  				updateParentTaskState(task);
425  				renderCurrentView();

445  
446  			function updateSubtasksState(task, state) {
447  				task.subtasks.forEach(subtask => {
    -					subtask.state = state;
    -					if (subtask.subtasks.length > 0) {
    -						updateSubtasksState(subtask, state);
448 +					if (subtask.state !== 1) {  // Only update if the subtask is not checked
449 +						if (state === 1) {
450 +							subtask.state = subtask.state === 0 ? 2 : subtask.state;
451 +						} else if (state === 0) {
452 +							subtask.state = 0;
453 +						}
454 +						if (subtask.subtasks.length > 0) {
455 +							updateSubtasksState(subtask, state);
456 +						}
457  					}
458  				});
459  			}