Add project tracking picker
This commit is contained in:
@ -24,6 +24,7 @@ type Keymap struct {
|
||||
SetReport key.Binding
|
||||
SetContext key.Binding
|
||||
SetProject key.Binding
|
||||
PickProjectTask key.Binding
|
||||
Select key.Binding
|
||||
Insert key.Binding
|
||||
Tag key.Binding
|
||||
@ -127,6 +128,11 @@ func NewKeymap() *Keymap {
|
||||
key.WithHelp("p", "Set project"),
|
||||
),
|
||||
|
||||
PickProjectTask: key.NewBinding(
|
||||
key.WithKeys("P"),
|
||||
key.WithHelp("P", "Pick project task"),
|
||||
),
|
||||
|
||||
Select: key.NewBinding(
|
||||
key.WithKeys(" "),
|
||||
key.WithHelp("space", "Select"),
|
||||
|
||||
@ -82,6 +82,12 @@ func (p *ReportPage) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||
case UpdateProjectMsg:
|
||||
p.activeProject = string(msg)
|
||||
cmds = append(cmds, p.getTasks())
|
||||
case TaskPickedMsg:
|
||||
if msg.Task != nil && msg.Task.Status == "pending" {
|
||||
p.common.TW.StopActiveTasks()
|
||||
p.common.TW.StartTask(msg.Task)
|
||||
}
|
||||
cmds = append(cmds, p.getTasks())
|
||||
case UpdatedTasksMsg:
|
||||
cmds = append(cmds, p.getTasks())
|
||||
case tea.KeyMsg:
|
||||
@ -119,6 +125,11 @@ func (p *ReportPage) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||
cmd := p.subpage.Init()
|
||||
p.common.PushPage(p)
|
||||
return p.subpage, cmd
|
||||
case key.Matches(msg, p.common.Keymap.PickProjectTask):
|
||||
p.subpage = NewProjectTaskPickerPage(p.common)
|
||||
cmd := p.subpage.Init()
|
||||
p.common.PushPage(p)
|
||||
return p.subpage, cmd
|
||||
case key.Matches(msg, p.common.Keymap.Tag):
|
||||
if p.selectedTask != nil {
|
||||
tag := p.common.TW.GetConfig().Get("uda.tasksquire.tag.default")
|
||||
|
||||
@ -172,6 +172,13 @@ func (p *TimePage) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||
p.pendingSyncAction = ""
|
||||
cmds = append(cmds, p.syncActiveIntervalAfterRefresh(action))
|
||||
}
|
||||
case TaskPickedMsg:
|
||||
if msg.Task != nil && msg.Task.Status == "pending" {
|
||||
p.common.TW.StopActiveTasks()
|
||||
p.common.TW.StartTask(msg.Task)
|
||||
cmds = append(cmds, p.getIntervals())
|
||||
cmds = append(cmds, doTick())
|
||||
}
|
||||
case RefreshIntervalsMsg:
|
||||
cmds = append(cmds, p.getIntervals())
|
||||
cmds = append(cmds, doTick())
|
||||
@ -191,6 +198,11 @@ func (p *TimePage) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||
cmd := p.subpage.Init()
|
||||
p.common.PushPage(p)
|
||||
return p.subpage, cmd
|
||||
case key.Matches(msg, p.common.Keymap.PickProjectTask):
|
||||
p.subpage = NewProjectTaskPickerPage(p.common)
|
||||
cmd := p.subpage.Init()
|
||||
p.common.PushPage(p)
|
||||
return p.subpage, cmd
|
||||
case key.Matches(msg, p.common.Keymap.StartStop):
|
||||
row := p.intervals.SelectedRow()
|
||||
if row != nil {
|
||||
|
||||
@ -147,7 +147,7 @@ func (ts *TaskSquire) GetTasks(report *Report, filter ...string) Tasks {
|
||||
|
||||
args := ts.defaultArgs
|
||||
|
||||
if report.Context {
|
||||
if report != nil && report.Context {
|
||||
for _, context := range ts.contexts {
|
||||
if context.Active && context.Name != "none" {
|
||||
args = append(args, context.ReadFilter)
|
||||
@ -161,7 +161,7 @@ func (ts *TaskSquire) GetTasks(report *Report, filter ...string) Tasks {
|
||||
}
|
||||
|
||||
exportArgs := []string{"export"}
|
||||
if report.Name != "" {
|
||||
if report != nil && report.Name != "" {
|
||||
exportArgs = append(exportArgs, report.Name)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user