feat(plugins): more work on plugins list/edit view

This commit is contained in:
Torkel Ödegaard
2016-02-25 15:56:28 +01:00
parent 8db7cf49a6
commit c521182ceb
14 changed files with 184 additions and 166 deletions
+2 -26
View File
@@ -1,13 +1,10 @@
package dtos
import (
"github.com/grafana/grafana/pkg/models"
"github.com/grafana/grafana/pkg/plugins"
)
import "github.com/grafana/grafana/pkg/plugins"
type PluginSetting struct {
Name string `json:"name"`
AppId string `json:"appId"`
PluginId string `json:"pluginId"`
Enabled bool `json:"enabled"`
Pinned bool `json:"pinned"`
Module string `json:"module"`
@@ -26,24 +23,3 @@ type PluginListItem struct {
Pinned bool `json:"pinned"`
Info *plugins.PluginInfo `json:"info"`
}
func NewPluginSettingDto(def *plugins.AppPlugin, data *models.PluginSetting) *PluginSetting {
dto := &PluginSetting{
AppId: def.Id,
Name: def.Name,
Info: &def.Info,
Module: def.Module,
BaseUrl: def.BaseUrl,
Pages: def.Pages,
Includes: def.Includes,
}
if data != nil {
dto.Enabled = data.Enabled
dto.Pinned = data.Pinned
dto.Info = &def.Info
dto.JsonData = data.JsonData
}
return dto
}
+1 -1
View File
@@ -72,7 +72,7 @@ func setIndexViewData(c *middleware.Context) (*dtos.IndexViewData, error) {
data.MainNavLinks = append(data.MainNavLinks, &dtos.NavLink{
Text: "Plugins",
Icon: "icon-gf icon-gf-apps",
Url: setting.AppSubUrl + "/apps",
Url: setting.AppSubUrl + "/plugins",
})
}
+25 -6
View File
@@ -38,15 +38,34 @@ func GetPluginList(c *middleware.Context) Response {
func GetPluginSettingById(c *middleware.Context) Response {
pluginId := c.Params(":pluginId")
if pluginDef, exists := plugins.Apps[pluginId]; !exists {
return ApiError(404, "PluginId not found, no installed plugin with that id", nil)
if def, exists := plugins.Plugins[pluginId]; !exists {
return ApiError(404, "Plugin not found, no installed plugin with that id", nil)
} else {
query := m.GetPluginSettingByIdQuery{PluginId: pluginId, OrgId: c.OrgId}
if err := bus.Dispatch(&query); err != nil {
return ApiError(500, "Failed to get login settings", nil)
dto := &dtos.PluginSetting{
PluginId: def.Id,
Name: def.Name,
Info: &def.Info,
}
return Json(200, dtos.NewPluginSettingDto(pluginDef, query.Result))
if app, exists := plugins.Apps[pluginId]; exists {
dto.Pages = app.Pages
dto.Includes = app.Includes
dto.BaseUrl = app.BaseUrl
dto.Module = app.Module
}
query := m.GetPluginSettingByIdQuery{PluginId: pluginId, OrgId: c.OrgId}
if err := bus.Dispatch(&query); err != nil {
if err != m.ErrPluginSettingNotFound {
return ApiError(500, "Failed to get login settings", nil)
}
} else {
dto.Enabled = query.Result.Enabled
dto.Pinned = query.Result.Pinned
dto.JsonData = query.Result.JsonData
}
return Json(200, dto)
}
}