mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
annotation: added region support to annoations
This commit is contained in:
@@ -40,6 +40,7 @@ func GetAnnotations(c *middleware.Context) Response {
|
|||||||
Metric: item.Metric,
|
Metric: item.Metric,
|
||||||
Title: item.Title,
|
Title: item.Title,
|
||||||
PanelId: item.PanelId,
|
PanelId: item.PanelId,
|
||||||
|
RegionId: item.RegionId,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -57,15 +58,30 @@ func PostAnnotation(c *middleware.Context, cmd dtos.PostAnnotationsCmd) Response
|
|||||||
Title: cmd.Title,
|
Title: cmd.Title,
|
||||||
Text: cmd.Text,
|
Text: cmd.Text,
|
||||||
CategoryId: cmd.CategoryId,
|
CategoryId: cmd.CategoryId,
|
||||||
|
NewState: cmd.FillColor,
|
||||||
Type: annotations.EventType,
|
Type: annotations.EventType,
|
||||||
}
|
}
|
||||||
|
|
||||||
err := repo.Save(&item)
|
if err := repo.Save(&item); err != nil {
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
return ApiError(500, "Failed to save annotation", err)
|
return ApiError(500, "Failed to save annotation", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// handle regions
|
||||||
|
if cmd.IsRegion {
|
||||||
|
item.RegionId = item.Id
|
||||||
|
|
||||||
|
if err := repo.Update(&item); err != nil {
|
||||||
|
return ApiError(500, "Failed set regionId on annotation", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
item.Id = 0
|
||||||
|
item.Epoch = cmd.EndTime
|
||||||
|
|
||||||
|
if err := repo.Save(&item); err != nil {
|
||||||
|
return ApiError(500, "Failed save annotation for region end time", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return ApiSuccess("Annotation added")
|
return ApiSuccess("Annotation added")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -12,6 +12,7 @@ type Annotation struct {
|
|||||||
Title string `json:"title"`
|
Title string `json:"title"`
|
||||||
Text string `json:"text"`
|
Text string `json:"text"`
|
||||||
Metric string `json:"metric"`
|
Metric string `json:"metric"`
|
||||||
|
RegionId int64 `json:"regionId"`
|
||||||
|
|
||||||
Data *simplejson.Json `json:"data"`
|
Data *simplejson.Json `json:"data"`
|
||||||
}
|
}
|
||||||
@@ -23,6 +24,10 @@ type PostAnnotationsCmd struct {
|
|||||||
Time int64 `json:"time"`
|
Time int64 `json:"time"`
|
||||||
Title string `json:"title"`
|
Title string `json:"title"`
|
||||||
Text string `json:"text"`
|
Text string `json:"text"`
|
||||||
|
|
||||||
|
FillColor string `json:"fillColor"`
|
||||||
|
IsRegion bool `json:"isRegion"`
|
||||||
|
EndTime int64 `json:"endTime"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type DeleteAnnotationsCmd struct {
|
type DeleteAnnotationsCmd struct {
|
||||||
|
@@ -4,6 +4,7 @@ import "github.com/grafana/grafana/pkg/components/simplejson"
|
|||||||
|
|
||||||
type Repository interface {
|
type Repository interface {
|
||||||
Save(item *Item) error
|
Save(item *Item) error
|
||||||
|
Update(item *Item) error
|
||||||
Find(query *ItemQuery) ([]*Item, error)
|
Find(query *ItemQuery) ([]*Item, error)
|
||||||
Delete(params *DeleteParams) error
|
Delete(params *DeleteParams) error
|
||||||
}
|
}
|
||||||
@@ -58,6 +59,7 @@ type Item struct {
|
|||||||
DashboardId int64 `json:"dashboardId"`
|
DashboardId int64 `json:"dashboardId"`
|
||||||
PanelId int64 `json:"panelId"`
|
PanelId int64 `json:"panelId"`
|
||||||
CategoryId int64 `json:"categoryId"`
|
CategoryId int64 `json:"categoryId"`
|
||||||
|
RegionId int64 `json:"regionId"`
|
||||||
Type ItemType `json:"type"`
|
Type ItemType `json:"type"`
|
||||||
Title string `json:"title"`
|
Title string `json:"title"`
|
||||||
Text string `json:"text"`
|
Text string `json:"text"`
|
||||||
|
@@ -23,6 +23,17 @@ func (r *SqlAnnotationRepo) Save(item *annotations.Item) error {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *SqlAnnotationRepo) Update(item *annotations.Item) error {
|
||||||
|
return inTransaction(func(sess *xorm.Session) error {
|
||||||
|
|
||||||
|
if _, err := sess.Table("annotation").Id(item.Id).Update(item); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func (r *SqlAnnotationRepo) Find(query *annotations.ItemQuery) ([]*annotations.Item, error) {
|
func (r *SqlAnnotationRepo) Find(query *annotations.ItemQuery) ([]*annotations.Item, error) {
|
||||||
var sql bytes.Buffer
|
var sql bytes.Buffer
|
||||||
params := make([]interface{}, 0)
|
params := make([]interface{}, 0)
|
||||||
|
@@ -54,4 +54,8 @@ func addAnnotationMig(mg *Migrator) {
|
|||||||
{Name: "new_state", Type: DB_NVarchar, Length: 25, Nullable: false},
|
{Name: "new_state", Type: DB_NVarchar, Length: 25, Nullable: false},
|
||||||
{Name: "data", Type: DB_Text, Nullable: false},
|
{Name: "data", Type: DB_Text, Nullable: false},
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
mg.AddMigration("Add column region_id to annotation table", NewAddColumnMigration(table, &Column{
|
||||||
|
Name: "region_id", Type: DB_BigInt, Nullable: true, Default: "0",
|
||||||
|
}))
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user