app_plugin.go 882 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package plugins
  2. import (
  3. "encoding/json"
  4. "github.com/grafana/grafana/pkg/models"
  5. )
  6. type AppPluginPage struct {
  7. Name string `json:"name"`
  8. Url string `json:"url"`
  9. ReqRole models.RoleType `json:"reqRole"`
  10. }
  11. type AppPluginCss struct {
  12. Light string `json:"light"`
  13. Dark string `json:"dark"`
  14. }
  15. type AppPlugin struct {
  16. FrontendPluginBase
  17. Css *AppPluginCss `json:"css"`
  18. Pages []*AppPluginPage `json:"pages"`
  19. Pinned bool `json:"-"`
  20. Enabled bool `json:"-"`
  21. }
  22. func (app *AppPlugin) Load(decoder *json.Decoder, pluginDir string) error {
  23. if err := decoder.Decode(&app); err != nil {
  24. return err
  25. }
  26. if app.Css != nil {
  27. app.Css.Dark = evalRelativePluginUrlPath(app.Css.Dark, app.Id)
  28. app.Css.Light = evalRelativePluginUrlPath(app.Css.Light, app.Id)
  29. }
  30. app.PluginDir = pluginDir
  31. app.initFrontendPlugin()
  32. Apps[app.Id] = app
  33. return nil
  34. }