diff --git a/model.go b/model.go index 8833dac..d7d68ff 100644 --- a/model.go +++ b/model.go @@ -53,6 +53,7 @@ type model struct { timeData struct { entries mite.TimeEntries table table.Model + tracker *mite.TrackingTimeEntry } statusBarMessage string windowWidth int @@ -116,6 +117,7 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { m.formData.customers = msg.Customers m.formData.services = msg.Services m.formData.projects = msg.Projects + m.timeData.tracker = msg.Tracker m.fetchedData = true slices.SortFunc(m.formData.customers, func(a, b mite.Customer) int { return strings.Compare(a.GetName(), b.GetName()) }) @@ -315,6 +317,7 @@ type miteDataFetchedMsg struct { Customers mite.Customers Services mite.Services Projects mite.Projects + Tracker *mite.TrackingTimeEntry Error error } @@ -327,12 +330,20 @@ func (m model) fetchMiteData() tea.Cmd { cst, err2 := m.miteAPI.GetCustomers() svc, err3 := m.miteAPI.GetServices() pjt, err4 := m.miteAPI.GetProjects() + tt, err5 := m.miteAPI.GetTimeTracker() + + var msgTT = &tt + if err5 == mite.ErrNoTracker { + err5 = nil + msgTT = nil + } return miteDataFetchedMsg{ TimeEntries: te, Customers: cst, Services: svc, Projects: pjt, + Tracker: msgTT, Error: errors.Join(err1, err2, err3, err4), start: t0, } @@ -382,6 +393,7 @@ func (m model) View() string { } else { lhs.WriteString("\n") } + if m.tuiMode == MODE_FORMENTRY { lhs.WriteString("(esc) abort form\n") lhs.WriteString("\n") @@ -390,6 +402,13 @@ func (m model) View() string { lhs.WriteString("(tab) switch panes\n") lhs.WriteString("(q)uit\n") } + + if m.timeData.tracker != nil { + activeTime := time.Since(m.timeData.tracker.Since).Truncate(time.Minute).String() + activeTime = strings.Replace(activeTime, "0s", "", 1) + lhs.WriteString("\nTracker active: " + activeTime + "\n") + } + if m.tuiMode == MODE_TIMEENTRIES { rhsS = db }