55 lines
1.2 KiB
Go
55 lines
1.2 KiB
Go
|
package inflation
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"fmt"
|
||
|
"io"
|
||
|
"regexp"
|
||
|
|
||
|
log "git.tijl.dev/tijl/tijl.dev-core/modules/logger"
|
||
|
"github.com/go-echarts/go-echarts/v2/render"
|
||
|
tpls "github.com/go-echarts/go-echarts/v2/templates"
|
||
|
)
|
||
|
|
||
|
type InternalRenderer struct {
|
||
|
render.BaseRender
|
||
|
c interface{}
|
||
|
before []func()
|
||
|
}
|
||
|
|
||
|
func NewRenderer(c interface{}, before ...func()) render.Renderer {
|
||
|
return &InternalRenderer{c: c, before: before}
|
||
|
}
|
||
|
|
||
|
func CustomRender(r *InternalRenderer) (string, error) {
|
||
|
for _, fn := range r.before {
|
||
|
fn()
|
||
|
}
|
||
|
|
||
|
contents := []string{tpls.BaseTpl, tpls.ChartTpl}
|
||
|
tpl := render.MustTemplate("chart", contents)
|
||
|
|
||
|
var buf bytes.Buffer
|
||
|
if err := tpl.ExecuteTemplate(&buf, "chart", r.c); err != nil {
|
||
|
return "", err
|
||
|
}
|
||
|
|
||
|
log.Debug().Interface("bufst", buf.String()).Msg("t")
|
||
|
return buf.String(), nil
|
||
|
}
|
||
|
|
||
|
func (r *InternalRenderer) Render(w io.Writer) error {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
var scriptRegex = regexp.MustCompile(`<script[^>]*>([\s\S]*?)<\/script>`)
|
||
|
|
||
|
func handleScriptElement(scriptTag string) string {
|
||
|
matches := scriptRegex.FindStringSubmatch(scriptTag)
|
||
|
if len(matches) > 1 {
|
||
|
return matches[1]
|
||
|
}
|
||
|
|
||
|
return fmt.Sprintf(`window.onload = function() {%v}`, scriptTag)
|
||
|
}
|