github.com/wtfutil/wtf@v0.43.0/modules/todo_plus/backend/project.go (about)

     1  package backend
     2  
     3  type Task struct {
     4  	ID        string
     5  	Completed bool
     6  	Name      string
     7  }
     8  
     9  type Project struct {
    10  	ID   string
    11  	Name string
    12  
    13  	Index   int
    14  	Tasks   []Task
    15  	Err     error
    16  	backend Backend
    17  }
    18  
    19  func (proj *Project) IsLast() bool {
    20  	return proj.Index >= len(proj.Tasks)-1
    21  }
    22  
    23  func (proj *Project) loadTasks() {
    24  	Tasks, err := proj.backend.LoadTasks(proj.ID)
    25  	proj.Err = err
    26  	proj.Tasks = Tasks
    27  }
    28  
    29  func (proj *Project) LongestLine() int {
    30  	maxLen := 0
    31  
    32  	for _, task := range proj.Tasks {
    33  		if len(task.Name) > maxLen {
    34  			maxLen = len(task.Name)
    35  		}
    36  	}
    37  
    38  	return maxLen
    39  }
    40  
    41  func (proj *Project) currentTask() *Task {
    42  	if proj.Index < 0 {
    43  		return nil
    44  	}
    45  
    46  	return &proj.Tasks[proj.Index]
    47  }
    48  
    49  func (proj *Project) CloseSelectedTask() {
    50  	currTask := proj.currentTask()
    51  
    52  	if currTask != nil {
    53  		_ = proj.backend.CloseTask(currTask)
    54  		proj.loadTasks()
    55  	}
    56  }
    57  
    58  func (proj *Project) DeleteSelectedTask() {
    59  	currTask := proj.currentTask()
    60  
    61  	if currTask != nil {
    62  		_ = proj.backend.DeleteTask(currTask)
    63  
    64  		proj.loadTasks()
    65  	}
    66  }