Commit 90ae59cc by Torkel Ödegaard

Fixed png rending

parent ff6a2d01
......@@ -9,6 +9,6 @@ watch_dirs = [
watch_exts = [".go", ".ini"]
build_delay = 1500
cmds = [
["go", "build", "./pkg/cmd/grafana-pro"],
["go", "build"],
["./grafana-pro", "web"]
]
......@@ -4,7 +4,6 @@ import (
"os"
"runtime"
"github.com/torkelo/grafana-pro/pkg/bus"
"github.com/torkelo/grafana-pro/pkg/cmd"
"github.com/codegangsta/cli"
......@@ -17,8 +16,6 @@ func init() {
}
func main() {
bus.InitBus()
app := cli.NewApp()
app.Name = "Grafana Pro"
app.Usage = "Grafana Pro Service"
......
......@@ -67,9 +67,10 @@ func runWeb(*cli.Context) {
setting.NewConfigContext()
setting.InitServices()
sqlstore.Init()
social.NewOAuthService()
sqlstore.Init()
// init database
sqlstore.LoadModelsConfig()
if err := sqlstore.NewEngine(); err != nil {
......
package components
import (
"crypto/md5"
"encoding/hex"
"io"
"os"
"os/exec"
"path/filepath"
"time"
log "github.com/alecthomas/log4go"
)
type PhantomRenderer struct {
ImagesDir string
PhantomDir string
}
type RenderOpts struct {
Url string
Width string
Height string
}
func (self *PhantomRenderer) RenderToPng(params *RenderOpts) (string, error) {
log.Info("PhantomRenderer::renderToPng url %v", params.Url)
binPath, _ := filepath.Abs(filepath.Join(self.PhantomDir, "phantomjs"))
scriptPath, _ := filepath.Abs(filepath.Join(self.PhantomDir, "render.js"))
pngPath, _ := filepath.Abs(filepath.Join(self.ImagesDir, getHash(params.Url)))
pngPath = pngPath + ".png"
cmd := exec.Command(binPath, scriptPath, "url="+params.Url, "width="+params.Width, "height="+params.Height, "png="+pngPath)
stdout, err := cmd.StdoutPipe()
if err != nil {
return "", err
}
stderr, err := cmd.StderrPipe()
if err != nil {
return "", err
}
err = cmd.Start()
if err != nil {
return "", err
}
go io.Copy(os.Stdout, stdout)
go io.Copy(os.Stdout, stderr)
done := make(chan error)
go func() {
cmd.Wait()
close(done)
}()
select {
case <-time.After(10 * time.Second):
if err := cmd.Process.Kill(); err != nil {
log.Error("failed to kill: %v", err)
}
case <-done:
}
return pngPath, nil
}
func getHash(text string) string {
hasher := md5.New()
hasher.Write([]byte(text))
return hex.EncodeToString(hasher.Sum(nil))
}
package dto
type GetDashboardQuery struct {
Id int64
Resp GetDashboardQueryResp
}
type GetDashboardQueryResp struct {
}
......@@ -15,7 +15,7 @@ func authGetRequestAccountId(c *Context, sess session.Store) (int64, error) {
urlQuery := c.Req.URL.Query()
if len(urlQuery["render"]) > 0 {
accId, _ := strconv.Atoi(urlQuery["accountId"][0])
accId, _ := strconv.ParseInt(urlQuery["accountId"][0], 10, 64)
sess.Set("accountId", accId)
accountId = accId
}
......
package sqlstore
import (
"github.com/torkelo/grafana-pro/pkg/models"
)
import "github.com/torkelo/grafana-pro/pkg/models"
func SaveDashboard(dash *models.Dashboard) error {
var err error
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment