diff --git a/reports.go b/reports.go index c0f90dc..d4067d3 100644 --- a/reports.go +++ b/reports.go @@ -2,6 +2,7 @@ package main import ( "context" + "encoding/json" "errors" "github.com/yuin/gopher-lua" "log" @@ -23,6 +24,26 @@ const ( const luaTimeoutSeconds time.Duration = 5 // maximum time a lua request can run for +type Series struct { + Values []float64 + Children map[string]*Series +} + +type Report struct { + ReportId string + Title string + Subtitle string + XAxisLabel string + YAxisLabel string + Labels []string + Series map[string]*Series +} + +func (r *Report) Write(w http.ResponseWriter) error { + enc := json.NewEncoder(w) + return enc.Encode(r) +} + func runReport(user *User, reportpath string) (*Report, error) { // Create a new LState without opening the default libs for security L := lua.NewState(lua.Options{SkipOpenLibs: true}) @@ -113,6 +134,7 @@ func ReportHandler(w http.ResponseWriter, r *http.Request) { log.Print(err) return } + report.ReportId = reportname err = report.Write(w) if err != nil { diff --git a/reports_lua.go b/reports_lua.go index e889063..efb0e0f 100644 --- a/reports_lua.go +++ b/reports_lua.go @@ -1,33 +1,12 @@ package main import ( - "encoding/json" "github.com/yuin/gopher-lua" - "net/http" ) const luaReportTypeName = "report" const luaSeriesTypeName = "series" -type Series struct { - Values []float64 - Children map[string]*Series -} - -type Report struct { - Title string - Subtitle string - XAxisLabel string - YAxisLabel string - Labels []string - Series map[string]*Series -} - -func (r *Report) Write(w http.ResponseWriter) error { - enc := json.NewEncoder(w) - return enc.Encode(r) -} - func luaRegisterReports(L *lua.LState) { mtr := L.NewTypeMetatable(luaReportTypeName) L.SetGlobal("report", mtr)