Merge pull request #2403 from influxdata/feature/store-colors

Add colors to storage of cells
pull/10616/head
Alex Paxton 2017-11-21 17:32:34 -08:00 committed by GitHub
commit dc7a934d54
4 changed files with 235 additions and 99 deletions

View File

@ -199,6 +199,17 @@ func MarshalDashboard(d chronograf.Dashboard) ([]byte, error) {
}
}
colors := make([]*Color, len(c.CellColors))
for j, color := range c.CellColors {
colors[j] = &Color{
ID: color.ID,
Type: color.Type,
Hex: color.Hex,
Name: color.Name,
Value: color.Value,
}
}
axes := make(map[string]*Axis, len(c.Axes))
for a, r := range c.Axes {
axes[a] = &Axis{
@ -221,6 +232,7 @@ func MarshalDashboard(d chronograf.Dashboard) ([]byte, error) {
Queries: queries,
Type: c.Type,
Axes: axes,
Colors: colors,
}
}
templates := make([]*Template, len(d.Templates))
@ -285,6 +297,17 @@ func UnmarshalDashboard(data []byte, d *chronograf.Dashboard) error {
}
}
colors := make([]chronograf.CellColor, len(c.Colors))
for j, color := range c.Colors {
colors[j] = chronograf.CellColor{
ID: color.ID,
Type: color.Type,
Hex: color.Hex,
Name: color.Name,
Value: color.Value,
}
}
axes := make(map[string]chronograf.Axis, len(c.Axes))
for a, r := range c.Axes {
// axis base defaults to 10
@ -316,15 +339,16 @@ func UnmarshalDashboard(data []byte, d *chronograf.Dashboard) error {
}
cells[i] = chronograf.DashboardCell{
ID: c.ID,
X: c.X,
Y: c.Y,
W: c.W,
H: c.H,
Name: c.Name,
Queries: queries,
Type: c.Type,
Axes: axes,
ID: c.ID,
X: c.X,
Y: c.Y,
W: c.W,
H: c.H,
Name: c.Name,
Queries: queries,
Type: c.Type,
Axes: axes,
CellColors: colors,
}
}
@ -434,8 +458,5 @@ func UnmarshalUser(data []byte, u *chronograf.User) error {
// UnmarshalUserPB decodes a user from binary protobuf data.
// We are ignoring the password for now.
func UnmarshalUserPB(data []byte, u *User) error {
if err := proto.Unmarshal(data, u); err != nil {
return err
}
return nil
return proto.Unmarshal(data, u)
}

View File

@ -12,6 +12,7 @@ It has these top-level messages:
Source
Dashboard
DashboardCell
Color
Axis
Template
TemplateValue
@ -96,6 +97,7 @@ type DashboardCell struct {
Type string `protobuf:"bytes,7,opt,name=type,proto3" json:"type,omitempty"`
ID string `protobuf:"bytes,8,opt,name=ID,proto3" json:"ID,omitempty"`
Axes map[string]*Axis `protobuf:"bytes,9,rep,name=axes" json:"axes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value"`
Colors []*Color `protobuf:"bytes,10,rep,name=colors" json:"colors,omitempty"`
}
func (m *DashboardCell) Reset() { *m = DashboardCell{} }
@ -117,6 +119,26 @@ func (m *DashboardCell) GetAxes() map[string]*Axis {
return nil
}
func (m *DashboardCell) GetColors() []*Color {
if m != nil {
return m.Colors
}
return nil
}
type Color struct {
ID string `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
Type string `protobuf:"bytes,2,opt,name=Type,proto3" json:"Type,omitempty"`
Hex string `protobuf:"bytes,3,opt,name=Hex,proto3" json:"Hex,omitempty"`
Name string `protobuf:"bytes,4,opt,name=Name,proto3" json:"Name,omitempty"`
Value string `protobuf:"bytes,5,opt,name=Value,proto3" json:"Value,omitempty"`
}
func (m *Color) Reset() { *m = Color{} }
func (m *Color) String() string { return proto.CompactTextString(m) }
func (*Color) ProtoMessage() {}
func (*Color) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{3} }
type Axis struct {
LegacyBounds []int64 `protobuf:"varint,1,rep,name=legacyBounds" json:"legacyBounds,omitempty"`
Bounds []string `protobuf:"bytes,2,rep,name=bounds" json:"bounds,omitempty"`
@ -130,7 +152,7 @@ type Axis struct {
func (m *Axis) Reset() { *m = Axis{} }
func (m *Axis) String() string { return proto.CompactTextString(m) }
func (*Axis) ProtoMessage() {}
func (*Axis) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{3} }
func (*Axis) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{4} }
type Template struct {
ID string `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
@ -144,7 +166,7 @@ type Template struct {
func (m *Template) Reset() { *m = Template{} }
func (m *Template) String() string { return proto.CompactTextString(m) }
func (*Template) ProtoMessage() {}
func (*Template) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{4} }
func (*Template) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{5} }
func (m *Template) GetValues() []*TemplateValue {
if m != nil {
@ -169,7 +191,7 @@ type TemplateValue struct {
func (m *TemplateValue) Reset() { *m = TemplateValue{} }
func (m *TemplateValue) String() string { return proto.CompactTextString(m) }
func (*TemplateValue) ProtoMessage() {}
func (*TemplateValue) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{5} }
func (*TemplateValue) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{6} }
type TemplateQuery struct {
Command string `protobuf:"bytes,1,opt,name=command,proto3" json:"command,omitempty"`
@ -183,7 +205,7 @@ type TemplateQuery struct {
func (m *TemplateQuery) Reset() { *m = TemplateQuery{} }
func (m *TemplateQuery) String() string { return proto.CompactTextString(m) }
func (*TemplateQuery) ProtoMessage() {}
func (*TemplateQuery) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{6} }
func (*TemplateQuery) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{7} }
type Server struct {
ID int64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"`
@ -198,7 +220,7 @@ type Server struct {
func (m *Server) Reset() { *m = Server{} }
func (m *Server) String() string { return proto.CompactTextString(m) }
func (*Server) ProtoMessage() {}
func (*Server) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{7} }
func (*Server) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{8} }
type Layout struct {
ID string `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
@ -211,7 +233,7 @@ type Layout struct {
func (m *Layout) Reset() { *m = Layout{} }
func (m *Layout) String() string { return proto.CompactTextString(m) }
func (*Layout) ProtoMessage() {}
func (*Layout) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{8} }
func (*Layout) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{9} }
func (m *Layout) GetCells() []*Cell {
if m != nil {
@ -237,7 +259,7 @@ type Cell struct {
func (m *Cell) Reset() { *m = Cell{} }
func (m *Cell) String() string { return proto.CompactTextString(m) }
func (*Cell) ProtoMessage() {}
func (*Cell) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{9} }
func (*Cell) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{10} }
func (m *Cell) GetQueries() []*Query {
if m != nil {
@ -267,7 +289,7 @@ type Query struct {
func (m *Query) Reset() { *m = Query{} }
func (m *Query) String() string { return proto.CompactTextString(m) }
func (*Query) ProtoMessage() {}
func (*Query) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{10} }
func (*Query) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{11} }
func (m *Query) GetRange() *Range {
if m != nil {
@ -284,7 +306,7 @@ type Range struct {
func (m *Range) Reset() { *m = Range{} }
func (m *Range) String() string { return proto.CompactTextString(m) }
func (*Range) ProtoMessage() {}
func (*Range) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{11} }
func (*Range) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{12} }
type AlertRule struct {
ID string `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
@ -296,7 +318,7 @@ type AlertRule struct {
func (m *AlertRule) Reset() { *m = AlertRule{} }
func (m *AlertRule) String() string { return proto.CompactTextString(m) }
func (*AlertRule) ProtoMessage() {}
func (*AlertRule) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{12} }
func (*AlertRule) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{13} }
type User struct {
ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"`
@ -306,12 +328,13 @@ type User struct {
func (m *User) Reset() { *m = User{} }
func (m *User) String() string { return proto.CompactTextString(m) }
func (*User) ProtoMessage() {}
func (*User) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{13} }
func (*User) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{14} }
func init() {
proto.RegisterType((*Source)(nil), "internal.Source")
proto.RegisterType((*Dashboard)(nil), "internal.Dashboard")
proto.RegisterType((*DashboardCell)(nil), "internal.DashboardCell")
proto.RegisterType((*Color)(nil), "internal.Color")
proto.RegisterType((*Axis)(nil), "internal.Axis")
proto.RegisterType((*Template)(nil), "internal.Template")
proto.RegisterType((*TemplateValue)(nil), "internal.TemplateValue")
@ -328,70 +351,73 @@ func init() {
func init() { proto.RegisterFile("internal.proto", fileDescriptorInternal) }
var fileDescriptorInternal = []byte{
// 1028 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xbc, 0x56, 0x4f, 0x6f, 0xe3, 0x44,
0x14, 0xd7, 0xf8, 0x4f, 0x12, 0xbf, 0x74, 0x0b, 0x1a, 0xad, 0x58, 0xb3, 0x5c, 0x82, 0x05, 0x52,
0x40, 0x6c, 0x41, 0xbb, 0x42, 0x42, 0xdc, 0xd2, 0x06, 0xad, 0x4a, 0xbb, 0x4b, 0x99, 0xb4, 0xe5,
0x84, 0x56, 0x13, 0xe7, 0xa5, 0xb5, 0xd6, 0x89, 0xcd, 0xd8, 0x6e, 0xe3, 0x6f, 0xc1, 0x27, 0x40,
0x42, 0xe2, 0xc4, 0x81, 0x03, 0x5f, 0x80, 0xfb, 0x7e, 0x2a, 0xf4, 0x66, 0xc6, 0x8e, 0xc3, 0x76,
0xd1, 0x5e, 0xe0, 0x36, 0xbf, 0xf7, 0xc6, 0x6f, 0x66, 0xde, 0xef, 0xfd, 0x7e, 0x09, 0xec, 0x27,
0xeb, 0x12, 0xd5, 0x5a, 0xa6, 0x07, 0xb9, 0xca, 0xca, 0x8c, 0x0f, 0x1a, 0x1c, 0xfd, 0xe1, 0x40,
0x6f, 0x96, 0x55, 0x2a, 0x46, 0xbe, 0x0f, 0xce, 0xf1, 0x34, 0x64, 0x23, 0x36, 0x76, 0x85, 0x73,
0x3c, 0xe5, 0x1c, 0xbc, 0xe7, 0x72, 0x85, 0xa1, 0x33, 0x62, 0xe3, 0x40, 0xe8, 0x35, 0xc5, 0xce,
0xeb, 0x1c, 0x43, 0xd7, 0xc4, 0x68, 0xcd, 0x1f, 0xc2, 0xe0, 0xa2, 0xa0, 0x6a, 0x2b, 0x0c, 0x3d,
0x1d, 0x6f, 0x31, 0xe5, 0xce, 0x64, 0x51, 0xdc, 0x66, 0x6a, 0x11, 0xfa, 0x26, 0xd7, 0x60, 0xfe,
0x2e, 0xb8, 0x17, 0xe2, 0x34, 0xec, 0xe9, 0x30, 0x2d, 0x79, 0x08, 0xfd, 0x29, 0x2e, 0x65, 0x95,
0x96, 0x61, 0x7f, 0xc4, 0xc6, 0x03, 0xd1, 0x40, 0xaa, 0x73, 0x8e, 0x29, 0x5e, 0x29, 0xb9, 0x0c,
0x07, 0xa6, 0x4e, 0x83, 0xf9, 0x01, 0xf0, 0xe3, 0x75, 0x81, 0x71, 0xa5, 0x70, 0xf6, 0x32, 0xc9,
0x2f, 0x51, 0x25, 0xcb, 0x3a, 0x0c, 0x74, 0x81, 0x3b, 0x32, 0x74, 0xca, 0x33, 0x2c, 0x25, 0x9d,
0x0d, 0xba, 0x54, 0x03, 0x79, 0x04, 0x7b, 0xb3, 0x6b, 0xa9, 0x70, 0x31, 0xc3, 0x58, 0x61, 0x19,
0x0e, 0x75, 0x7a, 0x27, 0x16, 0xfd, 0xcc, 0x20, 0x98, 0xca, 0xe2, 0x7a, 0x9e, 0x49, 0xb5, 0x78,
0xab, 0x9e, 0x3d, 0x02, 0x3f, 0xc6, 0x34, 0x2d, 0x42, 0x77, 0xe4, 0x8e, 0x87, 0x8f, 0x1f, 0x1c,
0xb4, 0x64, 0xb4, 0x75, 0x8e, 0x30, 0x4d, 0x85, 0xd9, 0xc5, 0xbf, 0x80, 0xa0, 0xc4, 0x55, 0x9e,
0xca, 0x12, 0x8b, 0xd0, 0xd3, 0x9f, 0xf0, 0xed, 0x27, 0xe7, 0x36, 0x25, 0xb6, 0x9b, 0xa2, 0xdf,
0x1d, 0xb8, 0xb7, 0x53, 0x8a, 0xef, 0x01, 0xdb, 0xe8, 0x5b, 0xf9, 0x82, 0x6d, 0x08, 0xd5, 0xfa,
0x46, 0xbe, 0x60, 0x35, 0xa1, 0x5b, 0xcd, 0x9f, 0x2f, 0xd8, 0x2d, 0xa1, 0x6b, 0xcd, 0x9a, 0x2f,
0xd8, 0x35, 0xff, 0x04, 0xfa, 0x3f, 0x55, 0xa8, 0x12, 0x2c, 0x42, 0x5f, 0x9f, 0xfc, 0xce, 0xf6,
0xe4, 0xef, 0x2b, 0x54, 0xb5, 0x68, 0xf2, 0xf4, 0x52, 0xcd, 0xb8, 0xa1, 0x4f, 0xaf, 0x29, 0x56,
0xd2, 0x74, 0xf4, 0x4d, 0x8c, 0xd6, 0xb6, 0x43, 0x86, 0x33, 0xea, 0xd0, 0x97, 0xe0, 0xc9, 0x0d,
0x16, 0x61, 0xa0, 0xeb, 0x7f, 0xf8, 0x86, 0x66, 0x1c, 0x4c, 0x36, 0x58, 0x7c, 0xb3, 0x2e, 0x55,
0x2d, 0xf4, 0xf6, 0x87, 0x4f, 0x21, 0x68, 0x43, 0x34, 0x39, 0x2f, 0xb1, 0xd6, 0x0f, 0x0c, 0x04,
0x2d, 0xf9, 0x47, 0xe0, 0xdf, 0xc8, 0xb4, 0x32, 0x8d, 0x1f, 0x3e, 0xde, 0xdf, 0x96, 0x9d, 0x6c,
0x92, 0x42, 0x98, 0xe4, 0xd7, 0xce, 0x57, 0x2c, 0xfa, 0x93, 0x81, 0x47, 0x31, 0x22, 0x3b, 0xc5,
0x2b, 0x19, 0xd7, 0x87, 0x59, 0xb5, 0x5e, 0x14, 0x21, 0x1b, 0xb9, 0x63, 0x57, 0xec, 0xc4, 0xf8,
0x7b, 0xd0, 0x9b, 0x9b, 0xac, 0x33, 0x72, 0xc7, 0x81, 0xb0, 0x88, 0xdf, 0x07, 0x3f, 0x95, 0x73,
0x4c, 0xad, 0x0e, 0x0c, 0xa0, 0xdd, 0xb9, 0xc2, 0x65, 0xb2, 0xb1, 0x32, 0xb0, 0x88, 0xe2, 0x45,
0xb5, 0xa4, 0xb8, 0x91, 0x80, 0x45, 0xd4, 0xae, 0xb9, 0x2c, 0xda, 0x16, 0xd2, 0x9a, 0x2a, 0x17,
0xb1, 0x4c, 0x9b, 0x1e, 0x1a, 0x10, 0xfd, 0xc5, 0x68, 0xfe, 0x0d, 0xdf, 0x9d, 0x99, 0x33, 0x1d,
0x7d, 0x1f, 0x06, 0x34, 0x0b, 0x2f, 0x6e, 0xa4, 0xb2, 0x73, 0xd7, 0x27, 0x7c, 0x29, 0x15, 0xff,
0x1c, 0x7a, 0xfa, 0xe5, 0x77, 0xcc, 0x5e, 0x53, 0xee, 0x92, 0xf2, 0xc2, 0x6e, 0x6b, 0x19, 0xf4,
0x3a, 0x0c, 0xb6, 0x8f, 0xf5, 0xbb, 0x8f, 0x7d, 0x04, 0x3e, 0x8d, 0x42, 0xad, 0x6f, 0x7f, 0x67,
0x65, 0x33, 0x30, 0x66, 0x57, 0x74, 0x01, 0xf7, 0x76, 0x4e, 0x6c, 0x4f, 0x62, 0xbb, 0x27, 0x6d,
0x59, 0x0c, 0x2c, 0x6b, 0xa4, 0xfd, 0x02, 0x53, 0x8c, 0x4b, 0x5c, 0xe8, 0x7e, 0x0f, 0x44, 0x8b,
0xa3, 0x5f, 0xd9, 0xb6, 0xae, 0x3e, 0x8f, 0xd4, 0x1d, 0x67, 0xab, 0x95, 0x5c, 0x2f, 0x6c, 0xe9,
0x06, 0x52, 0xdf, 0x16, 0x73, 0x5b, 0xda, 0x59, 0xcc, 0x09, 0xab, 0xdc, 0x32, 0xe8, 0xa8, 0x9c,
0x8f, 0x60, 0xb8, 0x42, 0x59, 0x54, 0x0a, 0x57, 0xb8, 0x2e, 0x6d, 0x0b, 0xba, 0x21, 0xfe, 0x00,
0xfa, 0xa5, 0xbc, 0x7a, 0x41, 0xb3, 0x67, 0x99, 0x2c, 0xe5, 0xd5, 0x09, 0xd6, 0xfc, 0x03, 0x08,
0x96, 0x09, 0xa6, 0x0b, 0x9d, 0x32, 0x74, 0x0e, 0x74, 0xe0, 0x04, 0xeb, 0xe8, 0x37, 0x06, 0xbd,
0x19, 0xaa, 0x1b, 0x54, 0x6f, 0x65, 0x17, 0x5d, 0x3b, 0x75, 0xff, 0xc5, 0x4e, 0xbd, 0xbb, 0xed,
0xd4, 0xdf, 0xda, 0xe9, 0x7d, 0xf0, 0x67, 0x2a, 0x3e, 0x9e, 0xea, 0x1b, 0xb9, 0xc2, 0x00, 0x9a,
0xc6, 0x49, 0x5c, 0x26, 0x37, 0x68, 0x3d, 0xd6, 0xa2, 0xe8, 0x17, 0x06, 0xbd, 0x53, 0x59, 0x67,
0x55, 0xf9, 0xda, 0x84, 0x8d, 0x60, 0x38, 0xc9, 0xf3, 0x34, 0x89, 0x65, 0x99, 0x64, 0x6b, 0x7b,
0xdb, 0x6e, 0x88, 0x76, 0x3c, 0xeb, 0xf4, 0xce, 0xdc, 0xbb, 0x1b, 0x22, 0x85, 0x1e, 0x69, 0x17,
0x34, 0x96, 0xd6, 0x51, 0xa8, 0x31, 0x3f, 0x9d, 0xa4, 0x07, 0x4e, 0xaa, 0x32, 0x5b, 0xa6, 0xd9,
0xad, 0x7e, 0xc9, 0x40, 0xb4, 0x38, 0x7a, 0xe5, 0x80, 0xf7, 0x7f, 0xb9, 0xdb, 0x1e, 0xb0, 0xc4,
0x12, 0xc9, 0x92, 0xd6, 0xeb, 0xfa, 0x1d, 0xaf, 0x0b, 0xa1, 0x5f, 0x2b, 0xb9, 0xbe, 0xc2, 0x22,
0x1c, 0x68, 0xe7, 0x68, 0xa0, 0xce, 0x68, 0x8d, 0x18, 0x93, 0x0b, 0x44, 0x03, 0xdb, 0x99, 0x87,
0xce, 0xcc, 0x7f, 0x66, 0xfd, 0x70, 0xa8, 0x6f, 0x14, 0xee, 0xb6, 0xe5, 0xbf, 0xb3, 0xc1, 0x57,
0x0c, 0xfc, 0x56, 0x30, 0x47, 0xbb, 0x82, 0x39, 0xda, 0x0a, 0x66, 0x7a, 0xd8, 0x08, 0x66, 0x7a,
0x48, 0x58, 0x9c, 0x35, 0x82, 0x11, 0x67, 0x44, 0xd6, 0x53, 0x95, 0x55, 0xf9, 0x61, 0x6d, 0x58,
0x0d, 0x44, 0x8b, 0x69, 0xca, 0x7e, 0xb8, 0x46, 0x65, 0x5b, 0x1d, 0x08, 0x8b, 0x68, 0x26, 0x4f,
0xb5, 0x99, 0x98, 0xe6, 0x1a, 0xc0, 0x3f, 0x06, 0x5f, 0x50, 0xf3, 0x74, 0x87, 0x77, 0x78, 0xd1,
0x61, 0x61, 0xb2, 0x54, 0xd4, 0xfc, 0x57, 0xb1, 0xbf, 0x27, 0x16, 0x45, 0x4f, 0xec, 0xe7, 0x54,
0xfd, 0x22, 0xcf, 0x51, 0x59, 0x89, 0x19, 0xa0, 0xcf, 0xcc, 0x6e, 0xd1, 0xb8, 0xa3, 0x2b, 0x0c,
0x88, 0x7e, 0x84, 0x60, 0x92, 0xa2, 0x2a, 0x45, 0x95, 0xbe, 0xee, 0xa9, 0x1c, 0xbc, 0x6f, 0x67,
0xdf, 0x3d, 0x6f, 0x84, 0x49, 0xeb, 0xad, 0x9c, 0xdc, 0x7f, 0xc8, 0xe9, 0x44, 0xe6, 0xf2, 0x78,
0xaa, 0xe7, 0xcc, 0x15, 0x16, 0x45, 0x9f, 0x82, 0x47, 0xb2, 0xed, 0x54, 0xf6, 0xde, 0x24, 0xf9,
0x79, 0x4f, 0xff, 0x2b, 0x7b, 0xf2, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb7, 0x59, 0x2e, 0xc0,
0xa7, 0x09, 0x00, 0x00,
// 1080 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xbc, 0x56, 0x51, 0x8f, 0xdb, 0x44,
0x10, 0xd6, 0xc6, 0x76, 0x12, 0x4f, 0xda, 0xa3, 0x5a, 0x55, 0xd4, 0x94, 0x97, 0x60, 0x81, 0x08,
0x88, 0x1e, 0xa8, 0x15, 0x12, 0xe2, 0x2d, 0x77, 0x41, 0xe5, 0xb8, 0x6b, 0x39, 0x36, 0x77, 0xc7,
0x13, 0xaa, 0x36, 0xce, 0x24, 0x67, 0xd5, 0x89, 0xcd, 0xda, 0xbe, 0x8b, 0xff, 0x05, 0xbf, 0x00,
0x09, 0x89, 0x67, 0x1e, 0xf8, 0x03, 0xbc, 0xf7, 0x95, 0x3f, 0x84, 0x66, 0x77, 0xed, 0x38, 0xd7,
0x2b, 0xea, 0x03, 0xe2, 0x6d, 0xbf, 0x99, 0xf5, 0xcc, 0xec, 0xcc, 0x37, 0x5f, 0x02, 0x7b, 0xf1,
0xba, 0x40, 0xb5, 0x96, 0xc9, 0x7e, 0xa6, 0xd2, 0x22, 0xe5, 0xfd, 0x1a, 0x87, 0x7f, 0x74, 0xa0,
0x3b, 0x4d, 0x4b, 0x15, 0x21, 0xdf, 0x83, 0xce, 0xd1, 0x24, 0x60, 0x43, 0x36, 0x72, 0x44, 0xe7,
0x68, 0xc2, 0x39, 0xb8, 0xcf, 0xe5, 0x0a, 0x83, 0xce, 0x90, 0x8d, 0x7c, 0xa1, 0xcf, 0x64, 0x3b,
0xab, 0x32, 0x0c, 0x1c, 0x63, 0xa3, 0x33, 0x7f, 0x08, 0xfd, 0xf3, 0x9c, 0xa2, 0xad, 0x30, 0x70,
0xb5, 0xbd, 0xc1, 0xe4, 0x3b, 0x95, 0x79, 0x7e, 0x9d, 0xaa, 0x79, 0xe0, 0x19, 0x5f, 0x8d, 0xf9,
0x3d, 0x70, 0xce, 0xc5, 0x49, 0xd0, 0xd5, 0x66, 0x3a, 0xf2, 0x00, 0x7a, 0x13, 0x5c, 0xc8, 0x32,
0x29, 0x82, 0xde, 0x90, 0x8d, 0xfa, 0xa2, 0x86, 0x14, 0xe7, 0x0c, 0x13, 0x5c, 0x2a, 0xb9, 0x08,
0xfa, 0x26, 0x4e, 0x8d, 0xf9, 0x3e, 0xf0, 0xa3, 0x75, 0x8e, 0x51, 0xa9, 0x70, 0xfa, 0x32, 0xce,
0x2e, 0x50, 0xc5, 0x8b, 0x2a, 0xf0, 0x75, 0x80, 0x5b, 0x3c, 0x94, 0xe5, 0x19, 0x16, 0x92, 0x72,
0x83, 0x0e, 0x55, 0x43, 0x1e, 0xc2, 0x9d, 0xe9, 0xa5, 0x54, 0x38, 0x9f, 0x62, 0xa4, 0xb0, 0x08,
0x06, 0xda, 0xbd, 0x63, 0x0b, 0x7f, 0x61, 0xe0, 0x4f, 0x64, 0x7e, 0x39, 0x4b, 0xa5, 0x9a, 0xbf,
0x55, 0xcf, 0x1e, 0x81, 0x17, 0x61, 0x92, 0xe4, 0x81, 0x33, 0x74, 0x46, 0x83, 0xc7, 0x0f, 0xf6,
0x9b, 0x61, 0x34, 0x71, 0x0e, 0x31, 0x49, 0x84, 0xb9, 0xc5, 0xbf, 0x00, 0xbf, 0xc0, 0x55, 0x96,
0xc8, 0x02, 0xf3, 0xc0, 0xd5, 0x9f, 0xf0, 0xed, 0x27, 0x67, 0xd6, 0x25, 0xb6, 0x97, 0xc2, 0xbf,
0x3b, 0x70, 0x77, 0x27, 0x14, 0xbf, 0x03, 0x6c, 0xa3, 0xab, 0xf2, 0x04, 0xdb, 0x10, 0xaa, 0x74,
0x45, 0x9e, 0x60, 0x15, 0xa1, 0x6b, 0x3d, 0x3f, 0x4f, 0xb0, 0x6b, 0x42, 0x97, 0x7a, 0x6a, 0x9e,
0x60, 0x97, 0xfc, 0x13, 0xe8, 0xfd, 0x5c, 0xa2, 0x8a, 0x31, 0x0f, 0x3c, 0x9d, 0xf9, 0x9d, 0x6d,
0xe6, 0x1f, 0x4a, 0x54, 0x95, 0xa8, 0xfd, 0xf4, 0x52, 0x3d, 0x71, 0x33, 0x3e, 0x7d, 0x26, 0x5b,
0x41, 0xec, 0xe8, 0x19, 0x1b, 0x9d, 0x6d, 0x87, 0xcc, 0xcc, 0xa8, 0x43, 0x5f, 0x82, 0x2b, 0x37,
0x98, 0x07, 0xbe, 0x8e, 0xff, 0xc1, 0x1b, 0x9a, 0xb1, 0x3f, 0xde, 0x60, 0xfe, 0xcd, 0xba, 0x50,
0x95, 0xd0, 0xd7, 0xf9, 0xc7, 0xd0, 0x8d, 0xd2, 0x24, 0x55, 0x79, 0x00, 0x37, 0x0b, 0x3b, 0x24,
0xbb, 0xb0, 0xee, 0x87, 0x4f, 0xc1, 0x6f, 0xbe, 0x25, 0x8a, 0xbd, 0xc4, 0x4a, 0x77, 0xc2, 0x17,
0x74, 0xe4, 0x1f, 0x82, 0x77, 0x25, 0x93, 0xd2, 0x4c, 0x68, 0xf0, 0x78, 0x6f, 0x1b, 0x66, 0xbc,
0x89, 0x73, 0x61, 0x9c, 0x5f, 0x77, 0xbe, 0x62, 0xe1, 0x12, 0x3c, 0x1d, 0xb9, 0x35, 0x63, 0xbf,
0x9e, 0xb1, 0xde, 0x81, 0x4e, 0x6b, 0x07, 0xee, 0x81, 0xf3, 0x2d, 0x6e, 0xec, 0x5a, 0xd0, 0xb1,
0x61, 0x82, 0xdb, 0x62, 0xc2, 0x7d, 0xf0, 0x2e, 0x74, 0x72, 0xb3, 0x0a, 0x06, 0x84, 0x7f, 0x32,
0x70, 0x29, 0x39, 0xd1, 0x2f, 0xc1, 0xa5, 0x8c, 0xaa, 0x83, 0xb4, 0x5c, 0xcf, 0xf3, 0x80, 0x0d,
0x9d, 0x91, 0x23, 0x76, 0x6c, 0xfc, 0x5d, 0xe8, 0xce, 0x8c, 0xb7, 0x33, 0x74, 0x46, 0xbe, 0xb0,
0x88, 0x42, 0x27, 0x72, 0x86, 0x89, 0x2d, 0xc1, 0x00, 0xba, 0x9d, 0x29, 0x5c, 0xc4, 0x1b, 0x5b,
0x86, 0x45, 0x64, 0xcf, 0xcb, 0x05, 0xd9, 0x4d, 0x25, 0x16, 0x51, 0xd1, 0x33, 0x99, 0x37, 0x43,
0xa5, 0x33, 0x45, 0xce, 0x23, 0x99, 0xd4, 0x53, 0x35, 0x20, 0xfc, 0x8b, 0xd1, 0x46, 0x1a, 0x06,
0xbe, 0xd6, 0xa1, 0xf7, 0xa0, 0x4f, 0xec, 0x7c, 0x71, 0x25, 0x95, 0xed, 0x52, 0x8f, 0xf0, 0x85,
0x54, 0xfc, 0x73, 0xe8, 0xea, 0x16, 0xdf, 0xb2, 0x0d, 0x75, 0x38, 0xdd, 0x15, 0x61, 0xaf, 0x35,
0x9c, 0x72, 0x5b, 0x9c, 0x6a, 0x1e, 0xeb, 0xb5, 0x1f, 0xfb, 0x08, 0x3c, 0x22, 0x67, 0xa5, 0xab,
0xbf, 0x35, 0xb2, 0xa1, 0xb0, 0xb9, 0x15, 0x9e, 0xc3, 0xdd, 0x9d, 0x8c, 0x4d, 0x26, 0xb6, 0x9b,
0x69, 0x4b, 0x17, 0xdf, 0xd2, 0x83, 0xd4, 0x28, 0xc7, 0x04, 0xa3, 0x02, 0xe7, 0xba, 0xdf, 0x7d,
0xd1, 0xe0, 0xf0, 0x37, 0xb6, 0x8d, 0xab, 0xf3, 0x91, 0xde, 0x44, 0xe9, 0x6a, 0x25, 0xd7, 0x73,
0x1b, 0xba, 0x86, 0xd4, 0xb7, 0xf9, 0xcc, 0x86, 0xee, 0xcc, 0x67, 0x84, 0x55, 0x66, 0x27, 0xd8,
0x51, 0x19, 0x1f, 0xc2, 0x60, 0x85, 0x32, 0x2f, 0x15, 0xae, 0x70, 0x5d, 0xd8, 0x16, 0xb4, 0x4d,
0xfc, 0x01, 0xf4, 0x0a, 0xb9, 0x7c, 0x41, 0x24, 0xb7, 0x93, 0x2c, 0xe4, 0xf2, 0x18, 0x2b, 0xfe,
0x3e, 0xf8, 0x8b, 0x18, 0x93, 0xb9, 0x76, 0x99, 0x71, 0xf6, 0xb5, 0xe1, 0x18, 0xab, 0xf0, 0x77,
0x06, 0xdd, 0x29, 0xaa, 0x2b, 0x54, 0x6f, 0x25, 0x60, 0x6d, 0x81, 0x77, 0xfe, 0x45, 0xe0, 0xdd,
0xdb, 0x05, 0xde, 0xdb, 0x0a, 0xfc, 0x7d, 0xf0, 0xa6, 0x2a, 0x3a, 0x9a, 0xe8, 0x8a, 0x1c, 0x61,
0x00, 0xb1, 0x71, 0x1c, 0x15, 0xf1, 0x15, 0x5a, 0xd5, 0xb7, 0x28, 0xfc, 0x95, 0x41, 0xf7, 0x44,
0x56, 0x69, 0x59, 0xbc, 0xc6, 0xb0, 0x21, 0x0c, 0xc6, 0x59, 0x96, 0xc4, 0x91, 0x2c, 0xe2, 0x74,
0x6d, 0xab, 0x6d, 0x9b, 0xe8, 0xc6, 0xb3, 0x56, 0xef, 0x4c, 0xdd, 0x6d, 0x13, 0x49, 0xc1, 0xa1,
0xd6, 0x65, 0x23, 0xb2, 0x2d, 0x29, 0x30, 0x72, 0xac, 0x9d, 0xf4, 0xc0, 0x71, 0x59, 0xa4, 0x8b,
0x24, 0xbd, 0xd6, 0x2f, 0xe9, 0x8b, 0x06, 0x87, 0xaf, 0x3a, 0xe0, 0xfe, 0x5f, 0x7a, 0x7b, 0x07,
0x58, 0x6c, 0x07, 0xc9, 0xe2, 0x46, 0x7d, 0x7b, 0x2d, 0xf5, 0x0d, 0xa0, 0x57, 0x29, 0xb9, 0x5e,
0x62, 0x1e, 0xf4, 0xb5, 0x72, 0xd4, 0x50, 0x7b, 0xf4, 0x8e, 0x18, 0xd9, 0xf5, 0x45, 0x0d, 0x1b,
0xce, 0x43, 0x8b, 0xf3, 0x9f, 0x59, 0x85, 0x1e, 0xe8, 0x8a, 0x82, 0xdd, 0xb6, 0xdc, 0x14, 0xe6,
0xff, 0x4e, 0x6f, 0x5f, 0x31, 0xf0, 0x9a, 0x85, 0x39, 0xdc, 0x5d, 0x98, 0xc3, 0xed, 0xc2, 0x4c,
0x0e, 0xea, 0x85, 0x99, 0x1c, 0x10, 0x16, 0xa7, 0xf5, 0xc2, 0x88, 0x53, 0x1a, 0xd6, 0x53, 0x95,
0x96, 0xd9, 0x41, 0x65, 0xa6, 0xea, 0x8b, 0x06, 0x13, 0xcb, 0x7e, 0xbc, 0x44, 0x65, 0x5b, 0xed,
0x0b, 0x8b, 0x88, 0x93, 0x27, 0x5a, 0x4c, 0x4c, 0x73, 0x0d, 0xe0, 0x1f, 0x81, 0x27, 0xa8, 0x79,
0xba, 0xc3, 0x3b, 0x73, 0xd1, 0x66, 0x61, 0xbc, 0x14, 0xd4, 0xfc, 0x7b, 0xb2, 0xbf, 0x70, 0x16,
0x85, 0x4f, 0xec, 0xe7, 0x14, 0xfd, 0x3c, 0xcb, 0x50, 0xd9, 0x15, 0x33, 0x40, 0xe7, 0x4c, 0xaf,
0xd1, 0xa8, 0xa3, 0x23, 0x0c, 0x08, 0x7f, 0x02, 0x7f, 0x9c, 0xa0, 0x2a, 0x44, 0x99, 0xe0, 0x6d,
0xbf, 0x3a, 0xdf, 0x4d, 0xbf, 0x7f, 0x5e, 0x2f, 0x26, 0x9d, 0xb7, 0xeb, 0xe4, 0xdc, 0x58, 0xa7,
0x63, 0x99, 0xc9, 0xa3, 0x89, 0xe6, 0x99, 0x23, 0x2c, 0x0a, 0x3f, 0x05, 0x97, 0xd6, 0xb6, 0x15,
0xd9, 0x7d, 0xd3, 0xca, 0xcf, 0xba, 0xfa, 0x7f, 0xe2, 0x93, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff,
0xc2, 0x18, 0x1c, 0xbe, 0x39, 0x0a, 0x00, 0x00,
}

View File

@ -23,15 +23,24 @@ message Dashboard {
}
message DashboardCell {
int32 x = 1; // X-coordinate of Cell in the Dashboard
int32 y = 2; // Y-coordinate of Cell in the Dashboard
int32 w = 3; // Width of Cell in the Dashboard
int32 h = 4; // Height of Cell in the Dashboard
repeated Query queries = 5; // Time-series data queries for Dashboard
string name = 6; // User-facing name for this Dashboard
string type = 7; // Dashboard visualization type
string ID = 8; // id is the unique id of the dashboard. MIGRATED FIELD added in 1.2.0-beta6
map<string, Axis> axes = 9; // Axes represent the graphical viewport for a cell's visualizations
int32 x = 1; // X-coordinate of Cell in the Dashboard
int32 y = 2; // Y-coordinate of Cell in the Dashboard
int32 w = 3; // Width of Cell in the Dashboard
int32 h = 4; // Height of Cell in the Dashboard
repeated Query queries = 5; // Time-series data queries for Dashboard
string name = 6; // User-facing name for this Dashboard
string type = 7; // Dashboard visualization type
string ID = 8; // id is the unique id of the dashboard. MIGRATED FIELD added in 1.2.0-beta6
map<string, Axis> axes = 9; // Axes represent the graphical viewport for a cell's visualizations
repeated Color colors = 10; // Colors represent encoding data values to color
}
message Color {
string ID = 1; // ID is the unique id of the cell color
string Type = 2; // Type is how the color is used. Accepted (min,max,threshold)
string Hex = 3; // Hex is the hex number of the color
string Name = 4; // Name is the user-facing name of the hex color
string Value = 5; // Value is the data value mapped to this color
}
message Axis {

View File

@ -176,6 +176,22 @@ func Test_MarshalDashboard(t *testing.T) {
},
},
Type: "line",
CellColors: []chronograf.CellColor{
{
ID: "myid",
Type: "min",
Hex: "#234567",
Name: "Laser",
Value: "0",
},
{
ID: "id2",
Type: "max",
Hex: "#876543",
Name: "Solitude",
Value: "100",
},
},
},
},
Templates: []chronograf.Template{},
@ -217,6 +233,22 @@ func Test_MarshalDashboard_WithLegacyBounds(t *testing.T) {
LegacyBounds: [2]int64{0, 5},
},
},
CellColors: []chronograf.CellColor{
{
ID: "myid",
Type: "min",
Hex: "#234567",
Name: "Laser",
Value: "0",
},
{
ID: "id2",
Type: "max",
Hex: "#876543",
Name: "Solitude",
Value: "100",
},
},
Type: "line",
},
},
@ -250,6 +282,22 @@ func Test_MarshalDashboard_WithLegacyBounds(t *testing.T) {
Scale: "linear",
},
},
CellColors: []chronograf.CellColor{
{
ID: "myid",
Type: "min",
Hex: "#234567",
Name: "Laser",
Value: "0",
},
{
ID: "id2",
Type: "max",
Hex: "#876543",
Name: "Solitude",
Value: "100",
},
},
Type: "line",
},
},
@ -292,6 +340,22 @@ func Test_MarshalDashboard_WithEmptyLegacyBounds(t *testing.T) {
LegacyBounds: [2]int64{},
},
},
CellColors: []chronograf.CellColor{
{
ID: "myid",
Type: "min",
Hex: "#234567",
Name: "Laser",
Value: "0",
},
{
ID: "id2",
Type: "max",
Hex: "#876543",
Name: "Solitude",
Value: "100",
},
},
Type: "line",
},
},
@ -325,6 +389,22 @@ func Test_MarshalDashboard_WithEmptyLegacyBounds(t *testing.T) {
Scale: "linear",
},
},
CellColors: []chronograf.CellColor{
{
ID: "myid",
Type: "min",
Hex: "#234567",
Name: "Laser",
Value: "0",
},
{
ID: "id2",
Type: "max",
Hex: "#876543",
Name: "Solitude",
Value: "100",
},
},
Type: "line",
},
},