Add details editing
This commit is contained in:
@ -11,9 +11,9 @@ import (
|
||||
|
||||
"github.com/charmbracelet/bubbles/key"
|
||||
"github.com/charmbracelet/bubbles/list"
|
||||
"github.com/charmbracelet/bubbles/textarea"
|
||||
"github.com/charmbracelet/bubbles/viewport"
|
||||
tea "github.com/charmbracelet/bubbletea"
|
||||
"github.com/charmbracelet/glamour"
|
||||
"github.com/charmbracelet/huh"
|
||||
"github.com/charmbracelet/lipgloss"
|
||||
)
|
||||
@ -215,8 +215,11 @@ func (p *TaskEditorPage) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||
}
|
||||
case key.Matches(msg, p.common.Keymap.Ok):
|
||||
model, cmd := p.areas[p.area].Update(msg)
|
||||
p.areas[p.area] = model.(area)
|
||||
return p, tea.Batch(cmd, nextField())
|
||||
if p.area != 3 {
|
||||
p.areas[p.area] = model.(area)
|
||||
return p, tea.Batch(cmd, nextField())
|
||||
}
|
||||
return p, cmd
|
||||
}
|
||||
}
|
||||
|
||||
@ -732,27 +735,38 @@ func (t *timeEdit) View() string {
|
||||
}
|
||||
|
||||
type detailsEdit struct {
|
||||
com *common.Common
|
||||
renderer *glamour.TermRenderer
|
||||
vp viewport.Model
|
||||
com *common.Common
|
||||
vp viewport.Model
|
||||
ta textarea.Model
|
||||
details string
|
||||
// renderer *glamour.TermRenderer
|
||||
}
|
||||
|
||||
func NewDetailsEdit(com *common.Common, task *taskwarrior.Task) *detailsEdit {
|
||||
renderer, err := glamour.NewTermRenderer(
|
||||
// glamour.WithStandardStyle("light"),
|
||||
glamour.WithAutoStyle(),
|
||||
glamour.WithWordWrap(40),
|
||||
)
|
||||
if err != nil {
|
||||
slog.Error(err.Error())
|
||||
return nil
|
||||
}
|
||||
// renderer, err := glamour.NewTermRenderer(
|
||||
// // glamour.WithStandardStyle("light"),
|
||||
// glamour.WithAutoStyle(),
|
||||
// glamour.WithWordWrap(40),
|
||||
// )
|
||||
// if err != nil {
|
||||
// slog.Error(err.Error())
|
||||
// return nil
|
||||
// }
|
||||
|
||||
vp := viewport.New(40, 30)
|
||||
ta := textarea.New()
|
||||
ta.SetWidth(40)
|
||||
ta.SetHeight(30)
|
||||
ta.ShowLineNumbers = false
|
||||
ta.Focus()
|
||||
if task.Udas["details"] != nil {
|
||||
ta.SetValue(task.Udas["details"].(string))
|
||||
}
|
||||
d := detailsEdit{
|
||||
com: com,
|
||||
renderer: renderer,
|
||||
vp: vp,
|
||||
com: com,
|
||||
// renderer: renderer,
|
||||
vp: vp,
|
||||
ta: ta,
|
||||
}
|
||||
|
||||
return &d
|
||||
@ -762,7 +776,7 @@ func (d *detailsEdit) SetCursor(c int) {
|
||||
}
|
||||
|
||||
func (d *detailsEdit) Init() tea.Cmd {
|
||||
return nil
|
||||
return textarea.Blink
|
||||
}
|
||||
|
||||
func (d *detailsEdit) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||
@ -772,32 +786,34 @@ func (d *detailsEdit) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||
case prevFieldMsg:
|
||||
return d, prevArea()
|
||||
default:
|
||||
var cmd tea.Cmd
|
||||
d.vp, cmd = d.vp.Update(msg)
|
||||
return d, cmd
|
||||
var vpCmd, taCmd tea.Cmd
|
||||
d.vp, vpCmd = d.vp.Update(msg)
|
||||
d.ta, taCmd = d.ta.Update(msg)
|
||||
return d, tea.Batch(vpCmd, taCmd)
|
||||
}
|
||||
}
|
||||
|
||||
func (d *detailsEdit) View() string {
|
||||
dtls := `
|
||||
# Cool Details!
|
||||
## Things I need
|
||||
- [ ] A thing
|
||||
- [x] Done thing
|
||||
|
||||
## People
|
||||
- pe1
|
||||
- pe2
|
||||
`
|
||||
return d.ta.View()
|
||||
// dtls := `
|
||||
// # Cool Details!
|
||||
// ## Things I need
|
||||
// - [ ] A thing
|
||||
// - [x] Done thing
|
||||
|
||||
details, err := d.renderer.Render(dtls)
|
||||
if err != nil {
|
||||
slog.Error(err.Error())
|
||||
return "Could not parse markdown"
|
||||
}
|
||||
// ## People
|
||||
// - pe1
|
||||
// - pe2
|
||||
// `
|
||||
|
||||
d.vp.SetContent(details)
|
||||
return d.vp.View()
|
||||
// details, err := d.renderer.Render(dtls)
|
||||
// if err != nil {
|
||||
// slog.Error(err.Error())
|
||||
// return "Could not parse markdown"
|
||||
// }
|
||||
|
||||
// d.vp.SetContent(details)
|
||||
// return d.vp.View()
|
||||
}
|
||||
|
||||
// func (p *TaskEditorPage) SetSize(width, height int) {
|
||||
@ -956,6 +972,10 @@ func (p *TaskEditorPage) updateTasksCmd() tea.Msg {
|
||||
// p.common.TW.AddTaskAnnotation(p.task.Uuid, *p.areas[0].(*taskEdit).newAnnotation)
|
||||
}
|
||||
|
||||
if _, ok := p.task.Udas["details"]; ok || p.areas[3].(*detailsEdit).ta.Value() != "" {
|
||||
p.task.Udas["details"] = p.areas[3].(*detailsEdit).ta.Value()
|
||||
}
|
||||
|
||||
p.common.TW.ImportTask(&p.task)
|
||||
return UpdatedTasksMsg{}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user