From 9698d90308e34702f3212a386b1b7087fef3f9d4 Mon Sep 17 00:00:00 2001 From: Ethan Holz Date: Thu, 13 Oct 2022 17:02:55 -0500 Subject: [PATCH] feat: Initial changes to handline generating a timeline --- msp/changeover.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/msp/changeover.go b/msp/changeover.go index 24a735a..50d2a8a 100644 --- a/msp/changeover.go +++ b/msp/changeover.go @@ -1,6 +1,7 @@ package msp import ( + "fmt" "sort" "time" ) @@ -58,3 +59,26 @@ func FlattenPeriods(periods ...Period) (ids []string) { } return } + +func GenerateTimeline(periods ...Period) (out []string) { + periodsByID := make(map[string]Period) + ids := FlattenPeriods(periods...) + for _, val := range periods { + id := val.GetIdentifier() + periodsByID[id] = val + } + start := periodsByID[ids[0]].GetStartTime() + for _, val := range ids { + next, err := GetNextChangeOver(start, periods...) + if err == nil { + if next.Equal(periodsByID[val].GetStartTime()) { + start = periodsByID[val].GetStartTime() + next = periodsByID[val].GetEndTime() + } + frame := fmt.Sprintf("%s\t%s\t%s\n", val, start, next) + out = append(out, frame) + start = next + } + } + return out +}