diff options
Diffstat (limited to 'internal/tui/app.go')
-rw-r--r-- | internal/tui/app.go | 45 |
1 files changed, 32 insertions, 13 deletions
diff --git a/internal/tui/app.go b/internal/tui/app.go index f434034..0b67933 100644 --- a/internal/tui/app.go +++ b/internal/tui/app.go @@ -67,6 +67,7 @@ type AppModel struct { projectsBox ClientsProjectsModel historyBox HistoryBoxModel modalBox ModalBoxModel + contractor ContractorInfo width int height int @@ -81,6 +82,12 @@ type TimeStats struct { WeekTotal time.Duration } +type ContractorInfo struct { + name string + label string + email string +} + // NewApp creates a new TUI application func NewApp(ctx context.Context, q *queries.Queries) *AppModel { return &AppModel{ @@ -129,6 +136,7 @@ func (m AppModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { cmds = append(cmds, doTick()) case dataUpdatedMsg: + m.contractor = msg.contractor m.timerBox.timerInfo = msg.timerInfo m.timerBox.timerInfo.setNames(msg.clients, msg.projects) m.timeStats = msg.stats @@ -177,6 +185,9 @@ func (m AppModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { m.openEntryEditor() } + case openContractorEditor: + m.openContractorEditor() + case openModalUnchanged: m.modalBox.Active = true @@ -246,6 +257,12 @@ func (m *AppModel) openEntryEditor() { } } +func (m *AppModel) openContractorEditor() { + m.modalBox.activate(ModalTypeContractor, 0, *m) + m.modalBox.populateContractorFields(m.contractor) + m.modalBox.form.fields[0].Focus() +} + func (m *AppModel) openHistoryFilterModal() { m.modalBox.activate(ModalTypeHistoryFilter, 0, *m) m.modalBox.form.fields[0].Focus() @@ -369,17 +386,18 @@ func (m AppModel) View() string { // dataUpdatedMsg is sent when data is updated from the database type dataUpdatedMsg struct { - timerInfo TimerInfo - stats TimeStats - clients []queries.Client - projects map[int64][]queries.Project - entries []queries.TimeEntry - err error + contractor ContractorInfo + timerInfo TimerInfo + stats TimeStats + clients []queries.Client + projects map[int64][]queries.Project + entries []queries.TimeEntry + err error } // refreshCmd is a command to update all app data func (m AppModel) refreshCmd() tea.Msg { - timerInfo, stats, clients, projects, entries, err := getAppData(m.ctx, m.queries, m.historyBox.filter) + contractor, timerInfo, stats, clients, projects, entries, err := getAppData(m.ctx, m.queries, m.historyBox.filter) if err != nil { msg := dataUpdatedMsg{} msg.err = err @@ -387,12 +405,13 @@ func (m AppModel) refreshCmd() tea.Msg { } return dataUpdatedMsg{ - timerInfo: timerInfo, - stats: stats, - clients: clients, - projects: projects, - entries: entries, - err: nil, + contractor: contractor, + timerInfo: timerInfo, + stats: stats, + clients: clients, + projects: projects, + entries: entries, + err: nil, } } |