| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- package api
- import (
- "encoding/json"
- "strings"
- "github.com/torkelo/grafana-pro/pkg/bus"
- "github.com/torkelo/grafana-pro/pkg/middleware"
- m "github.com/torkelo/grafana-pro/pkg/models"
- )
- const configTemplate = `
- define(['settings'],
- function (Settings) {
- "use strict";
- return new Settings(%json%);
- });
- `
- type configJsTmplModel struct {
- DataSources []*m.DataSource
- }
- func renderConfig(data *configJsTmplModel) string {
- datasources := make(map[string]interface{})
- for _, ds := range data.DataSources {
- datasources[ds.Name] = map[string]interface{}{
- "type": ds.Type,
- "url": ds.Url,
- }
- }
- jsonObj := map[string]interface{}{
- "datasources": datasources,
- }
- buff, _ := json.Marshal(jsonObj)
- return strings.Replace(configTemplate, "%json%", string(buff), 1)
- }
- func GetConfigJS(c *middleware.Context) {
- query := m.GetDataSourcesQuery{AccountId: c.GetAccountId()}
- err := bus.Dispatch(&query)
- if err != nil {
- c.Handle(500, "cold not load data sources", err)
- return
- }
- vm := configJsTmplModel{DataSources: query.Result}
- configStr := renderConfig(&vm)
- if err != nil {
- c.Handle(500, "Failed to generate config.js", err)
- return
- }
- c.Header().Set("Content-Type", "text/javascript; charset=UTF-8")
- c.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate")
- c.Header().Set("Pragma", "no-cache")
- c.Header().Set("Expires", "0")
- c.WriteHeader(200)
- c.Write([]byte(configStr))
- }
|