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 }