diff --git a/core/service.go b/core/service.go index 3752628..455a893 100644 --- a/core/service.go +++ b/core/service.go @@ -26,7 +26,7 @@ type Service interface { StopRecord() (*TrackingMetadata, error) StopAll() (*TrackingMetadata, error) - LoadTracking(trackingId uuid.UUID) (*Tracking, error) + LoadTracking(trackingId uuid.UUID, replay bool) (*Tracking, error) DeleteTracking(trackingId uuid.UUID) StartReplay() @@ -216,7 +216,7 @@ func (t *trackingService) StopAll() (*TrackingMetadata, error) { return tm, err } -func (t *trackingService) LoadTracking(trackingId uuid.UUID) (*Tracking, error) { +func (t *trackingService) LoadTracking(trackingId uuid.UUID, replay bool) (*Tracking, error) { if !(t.opMode == REPLAY || t.opMode == STOPPED || t.opMode == LIVE || t.opMode == RECORDING) { t.StopAll() } @@ -225,7 +225,14 @@ func (t *trackingService) LoadTracking(trackingId uuid.UUID) (*Tracking, error) if err != nil { return nil, err } + if replay == false { + return tracking, nil + } t.safelyReplaceTracking(*tracking) + if t.replaypipe != nil { + t.replaypipe.Stop() + t.replaypipe = nil + } t.replaypipe = NewReplayPipeline(t.publisher, t.tracking) t.publisher.SetStreaming(true) t.opMode = REPLAY diff --git a/static/scripts/websocket.js b/static/scripts/websocket.js index 6cbf30e..b152812 100644 --- a/static/scripts/websocket.js +++ b/static/scripts/websocket.js @@ -214,7 +214,7 @@ window.addEventListener("load", function(evt) { document.getElementById("replaystarten").onclick = function(evt) { let sel = document.getElementById("meas") console.log(trackings[sel.selectedIndex].UUID) - fetch(`http://localhost:3011/trackings/${trackings[sel.selectedIndex].UUID}`, { method: 'GET'}).then(results => { + fetch(`http://localhost:3011/trackings/${trackings[sel.selectedIndex].UUID}?replay=true`, { method: 'GET'}).then(results => { return results.json() }).then(r => { console.log(r.data.Data) diff --git a/web/http.go b/web/http.go index e9de4c5..cfd70dd 100644 --- a/web/http.go +++ b/web/http.go @@ -23,9 +23,6 @@ func CreateServer(s core.Service, sub core.Subscriber, c *core.Configuration) { // Websocket app.Get("/ws", websocket.New(createFiberWebsocketHandler(sub))) - // TODO: Get all SerialPorts - // app.Get("/serialports") - // Tracking persistence controls HTTP JSON RPC API trackings := app.Group("/trackings") trackings.Get("/", allTrackingsHandler(s, c)) // Get all trackings Metadata @@ -59,7 +56,13 @@ func LoadTrackingHandler(s core.Service, c *core.Configuration) fiber.Handler { ctx.Status(404).JSON(err) return err } - tracking, err := s.LoadTracking(uid) + var replay bool + if ctx.Query("replay", "false") == "true" { + replay = true + } else { + replay = false + } + tracking, err := s.LoadTracking(uid, replay) if err != nil { logrus.Error(err) ctx.Status(404).JSON(err)