52 lines
1.1 KiB
Go
52 lines
1.1 KiB
Go
package dataframe
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
|
|
"github.com/grafana/grafana-plugin-sdk-go/data"
|
|
|
|
"github.com/grafana/grafana/pkg/services/store"
|
|
"github.com/grafana/grafana/pkg/services/store/entity"
|
|
)
|
|
|
|
func GetEntityKindInfo() entity.EntityKindInfo {
|
|
return entity.EntityKindInfo{
|
|
ID: entity.StandardKindDataFrame,
|
|
Name: "Data frame",
|
|
Description: "Data frame",
|
|
}
|
|
}
|
|
|
|
func GetEntitySummaryBuilder() entity.EntitySummaryBuilder {
|
|
return func(ctx context.Context, uid string, body []byte) (*entity.EntitySummary, []byte, error) {
|
|
df := &data.Frame{}
|
|
err := json.Unmarshal(body, df)
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
rows, err := df.RowLen()
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
|
|
out, err := data.FrameToJSON(df, data.IncludeAll)
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
summary := &entity.EntitySummary{
|
|
Kind: entity.StandardKindDataFrame,
|
|
Name: df.Name,
|
|
UID: uid,
|
|
Fields: map[string]interface{}{
|
|
"rows": rows,
|
|
"cols": len(df.Fields),
|
|
},
|
|
}
|
|
if summary.Name == "" {
|
|
summary.Name = store.GuessNameFromUID(uid)
|
|
}
|
|
return summary, out, err
|
|
}
|
|
}
|