Add time page

This commit is contained in:
Martin
2026-02-01 21:30:19 +01:00
parent b47763034b
commit 72a5c57faa
12 changed files with 915 additions and 115 deletions

View File

@ -12,7 +12,6 @@ import (
"slices"
"strings"
"sync"
"time"
)
const (
@ -28,6 +27,7 @@ type TimeWarrior interface {
StartTracking(tags []string) error
StopTracking() error
ContinueTracking() error
ContinueInterval(id int) error
CancelTracking() error
DeleteInterval(id int) error
ModifyInterval(interval *Interval) error
@ -122,9 +122,12 @@ func (ts *TimeSquire) GetIntervals(filter ...string) Intervals {
return nil
}
// Assign IDs based on reverse chronological order
// Reverse the intervals to show newest first
slices.Reverse(intervals)
// Assign IDs based on new order (newest is @1)
for i := range intervals {
intervals[i].ID = len(intervals) - i
intervals[i].ID = i + 1
}
return intervals
@ -176,6 +179,19 @@ func (ts *TimeSquire) ContinueTracking() error {
return nil
}
func (ts *TimeSquire) ContinueInterval(id int) error {
ts.mutex.Lock()
defer ts.mutex.Unlock()
cmd := exec.Command(twBinary, append(ts.defaultArgs, []string{"continue", fmt.Sprintf("@%d", id)}...)...)
if err := cmd.Run(); err != nil {
slog.Error("Failed continuing interval:", err)
return err
}
return nil
}
func (ts *TimeSquire) CancelTracking() error {
ts.mutex.Lock()
defer ts.mutex.Unlock()