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