diff --git a/pkg/api/render.go b/pkg/api/render.go index 480d888d1c3..4dbead23524 100644 --- a/pkg/api/render.go +++ b/pkg/api/render.go @@ -14,12 +14,12 @@ func RenderToPng(c *middleware.Context) { queryParams := fmt.Sprintf("?%s", c.Req.URL.RawQuery) renderOpts := &renderer.RenderOpts{ - Path: c.Params("*") + queryParams, - Width: queryReader.Get("width", "800"), - Height: queryReader.Get("height", "400"), - OrgId: c.OrgId, - Timeout: queryReader.Get("timeout", "30"), - TimeOffset: queryReader.Get("timeOffset", ""), + Path: c.Params("*") + queryParams, + Width: queryReader.Get("width", "800"), + Height: queryReader.Get("height", "400"), + OrgId: c.OrgId, + Timeout: queryReader.Get("timeout", "30"), + Timezone: queryReader.Get("tz", ""), } pngPath, err := renderer.RenderToPng(renderOpts) diff --git a/pkg/components/renderer/renderer.go b/pkg/components/renderer/renderer.go index d98b4bd40c7..c09c431a1df 100644 --- a/pkg/components/renderer/renderer.go +++ b/pkg/components/renderer/renderer.go @@ -6,41 +6,39 @@ import ( "os" "os/exec" "path/filepath" - "regexp" "runtime" "time" "strconv" + "strings" + "github.com/grafana/grafana/pkg/log" "github.com/grafana/grafana/pkg/middleware" "github.com/grafana/grafana/pkg/setting" "github.com/grafana/grafana/pkg/util" - "strings" ) type RenderOpts struct { - Path string - Width string - Height string - Timeout string - OrgId int64 - TimeOffset string + Path string + Width string + Height string + Timeout string + OrgId int64 + Timezone string } var rendererLog log.Logger = log.New("png-renderer") func isoTimeOffsetToPosixTz(isoOffset string) string { - re := regexp.MustCompile(`^([+-])([0-1][0-9]|2[0-4])([0-5][0-9])$`) - results := re.FindStringSubmatch(isoOffset) - if results == nil { - return "" + // invert offset + if strings.HasPrefix(isoOffset, "UTC+") { + return strings.Replace(isoOffset, "UTC+", "UTC-", 1) } - sign := "+" - if results[1] == "+" { - sign = "-" // "+" is west and "-" is east in POSIX TZ + if strings.HasPrefix(isoOffset, "UTC-") { + return strings.Replace(isoOffset, "UTC-", "UTC+", 1) } - return fmt.Sprintf("SOMEWHERE%s%s:%s", sign, results[2], results[3]) + return isoOffset } func appendEnviron(baseEnviron []string, name string, value string) []string { @@ -100,10 +98,9 @@ func RenderToPng(params *RenderOpts) (string, error) { return "", err } - tz := isoTimeOffsetToPosixTz(params.TimeOffset) - if tz != "" { + if params.Timezone != "" { baseEnviron := os.Environ() - cmd.Env = appendEnviron(baseEnviron, "TZ", tz) + cmd.Env = appendEnviron(baseEnviron, "TZ", isoTimeOffsetToPosixTz(params.Timezone)) } err = cmd.Start() diff --git a/public/app/features/dashboard/partials/shareModal.html b/public/app/features/dashboard/partials/shareModal.html index 3e8ca8acfa6..bab75a7f523 100644 --- a/public/app/features/dashboard/partials/shareModal.html +++ b/public/app/features/dashboard/partials/shareModal.html @@ -69,15 +69,6 @@ - -