Add time page

This commit is contained in:
Martin
2026-02-01 21:30:19 +01:00
committed by Martin Pander
parent effd95f6c1
commit 681ed7e635
12 changed files with 915 additions and 115 deletions

View File

@ -1,7 +1,6 @@
package timewarrior
import (
"encoding/json"
"fmt"
"log/slog"
"math"

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()