propagate indeterminate state to descendants
Hunter
Monday, August 5th, 2024 at 11:57 AM
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 }