mirror of
https://github.com/grafana/grafana.git
synced 2025-01-27 08:47:12 -06:00
rendering
This commit is contained in:
parent
4a73e2d0e9
commit
05f9e5eef1
@ -17,18 +17,27 @@ if (!params.url || !params.png) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
page.viewportSize = {
|
page.viewportSize = {
|
||||||
width: '800',
|
width: params.width || '800',
|
||||||
height: '400'
|
height: params.height || '400'
|
||||||
};
|
};
|
||||||
|
|
||||||
page.open(params.url, function (status) {
|
page.open(params.url, function (status) {
|
||||||
console.log('Loading a web page: ' + params.url);
|
console.log('Loading a web page: ' + params.url);
|
||||||
|
|
||||||
setTimeout(function() {
|
function checkIsReady() {
|
||||||
console.log('rendering panel to ' + params.png);
|
var canvas = page.evaluate(function() {
|
||||||
|
return $('canvas').length > 0;
|
||||||
|
});
|
||||||
|
|
||||||
page.render(params.png);
|
if (canvas) {
|
||||||
phantom.exit();
|
page.render(params.png);
|
||||||
|
phantom.exit();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setTimeout(checkIsReady, 10);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setTimeout(checkIsReady, 200);
|
||||||
|
|
||||||
}, 2000);
|
|
||||||
});
|
});
|
||||||
|
2
grafana
2
grafana
@ -1 +1 @@
|
|||||||
Subproject commit de1de852fc130d6b5c75c28a93aab38bbbe726b8
|
Subproject commit eb28e63c08a43ada747fbcdae9612301c9c7a531
|
@ -3,22 +3,29 @@ package api
|
|||||||
import (
|
import (
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
log "github.com/alecthomas/log4go"
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
|
"github.com/torkelo/grafana-pro/pkg/components"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
addRoutes(func(self *HttpServer) {
|
addRoutes(func(self *HttpServer) {
|
||||||
self.addRoute("GET", "/api/render/*url", self.renderToPng)
|
self.addRoute("GET", "/render/*url", self.renderToPng)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *HttpServer) renderToPng(c *gin.Context, auth *authContext) {
|
func (self *HttpServer) renderToPng(c *gin.Context, auth *authContext) {
|
||||||
url := c.Params.ByName("url")
|
|
||||||
accountId := auth.getAccountId()
|
accountId := auth.getAccountId()
|
||||||
|
query := c.Request.URL.Query()
|
||||||
|
queryParams := "?render&accountId=" + strconv.Itoa(accountId) + "&" + c.Request.URL.RawQuery
|
||||||
|
renderOpts := &components.RenderOpts{
|
||||||
|
Url: c.Params.ByName("url") + queryParams,
|
||||||
|
Width: query["width"][0],
|
||||||
|
Height: query["height"][0],
|
||||||
|
}
|
||||||
|
|
||||||
log.Info("Rendering url %v", url)
|
renderOpts.Url = "http://localhost:3000" + renderOpts.Url
|
||||||
pngPath, err := self.renderer.RenderToPng("http://localhost:3000" + url + "?render&accountId=" + strconv.Itoa(accountId))
|
|
||||||
|
pngPath, err := self.renderer.RenderToPng(renderOpts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.HTML(500, "error.html", nil)
|
c.HTML(500, "error.html", nil)
|
||||||
}
|
}
|
||||||
|
@ -17,14 +17,20 @@ type PhantomRenderer struct {
|
|||||||
PhantomDir string
|
PhantomDir string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *PhantomRenderer) RenderToPng(url string) (string, error) {
|
type RenderOpts struct {
|
||||||
log.Info("PhantomRenderer::renderToPng url %v", url)
|
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"))
|
binPath, _ := filepath.Abs(filepath.Join(self.PhantomDir, "phantomjs"))
|
||||||
scriptPath, _ := filepath.Abs(filepath.Join(self.PhantomDir, "render.js"))
|
scriptPath, _ := filepath.Abs(filepath.Join(self.PhantomDir, "render.js"))
|
||||||
pngPath, _ := filepath.Abs(filepath.Join(self.ImagesDir, getHash(url)))
|
pngPath, _ := filepath.Abs(filepath.Join(self.ImagesDir, getHash(params.Url)))
|
||||||
pngPath = pngPath + ".png"
|
pngPath = pngPath + ".png"
|
||||||
|
|
||||||
cmd := exec.Command(binPath, scriptPath, "url="+url, "width=100", "height=100", "png="+pngPath)
|
cmd := exec.Command(binPath, scriptPath, "url="+params.Url, "width="+params.Width, "height="+params.Height, "png="+pngPath)
|
||||||
stdout, err := cmd.StdoutPipe()
|
stdout, err := cmd.StdoutPipe()
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user