Implement loading/saving multi and single select

This commit is contained in:
Benedikt Kulmann
2020-05-07 17:57:09 +02:00
parent d6cd343b62
commit 03f7c8dd7d
8 changed files with 354 additions and 334 deletions

View File

File diff suppressed because one or more lines are too long

View File

@@ -1187,12 +1187,9 @@ type ListOption struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Types that are assignable to Option:
// *ListOption_StringValue
// *ListOption_IntValue
Option isListOption_Option `protobuf_oneof:"option"`
Default bool `protobuf:"varint,3,opt,name=default,proto3" json:"default,omitempty"`
DisplayValue string `protobuf:"bytes,4,opt,name=display_value,json=displayValue,proto3" json:"display_value,omitempty"`
Value *ListOptionValue `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
Default bool `protobuf:"varint,2,opt,name=default,proto3" json:"default,omitempty"`
DisplayValue string `protobuf:"bytes,3,opt,name=display_value,json=displayValue,proto3" json:"display_value,omitempty"`
}
func (x *ListOption) Reset() {
@@ -1227,27 +1224,13 @@ func (*ListOption) Descriptor() ([]byte, []int) {
return file_settings_proto_rawDescGZIP(), []int{20}
}
func (m *ListOption) GetOption() isListOption_Option {
if m != nil {
return m.Option
func (x *ListOption) GetValue() *ListOptionValue {
if x != nil {
return x.Value
}
return nil
}
func (x *ListOption) GetStringValue() string {
if x, ok := x.GetOption().(*ListOption_StringValue); ok {
return x.StringValue
}
return ""
}
func (x *ListOption) GetIntValue() int64 {
if x, ok := x.GetOption().(*ListOption_IntValue); ok {
return x.IntValue
}
return 0
}
func (x *ListOption) GetDefault() bool {
if x != nil {
return x.Default
@@ -1262,22 +1245,6 @@ func (x *ListOption) GetDisplayValue() string {
return ""
}
type isListOption_Option interface {
isListOption_Option()
}
type ListOption_StringValue struct {
StringValue string `protobuf:"bytes,1,opt,name=string_value,json=stringValue,proto3,oneof"`
}
type ListOption_IntValue struct {
IntValue int64 `protobuf:"varint,2,opt,name=int_value,json=intValue,proto3,oneof"`
}
func (*ListOption_StringValue) isListOption_Option() {}
func (*ListOption_IntValue) isListOption_Option() {}
// payloads for settings values
type SettingsValue struct {
state protoimpl.MessageState
@@ -1289,8 +1256,7 @@ type SettingsValue struct {
// *SettingsValue_BoolValue
// *SettingsValue_IntValue
// *SettingsValue_StringValue
// *SettingsValue_IntListValue
// *SettingsValue_StringListValue
// *SettingsValue_ListValue
Value isSettingsValue_Value `protobuf_oneof:"value"`
}
@@ -1361,16 +1327,9 @@ func (x *SettingsValue) GetStringValue() string {
return ""
}
func (x *SettingsValue) GetIntListValue() *IntListValue {
if x, ok := x.GetValue().(*SettingsValue_IntListValue); ok {
return x.IntListValue
}
return nil
}
func (x *SettingsValue) GetStringListValue() *StringListValue {
if x, ok := x.GetValue().(*SettingsValue_StringListValue); ok {
return x.StringListValue
func (x *SettingsValue) GetListValue() *ListValue {
if x, ok := x.GetValue().(*SettingsValue_ListValue); ok {
return x.ListValue
}
return nil
}
@@ -1391,12 +1350,8 @@ type SettingsValue_StringValue struct {
StringValue string `protobuf:"bytes,4,opt,name=string_value,json=stringValue,proto3,oneof"`
}
type SettingsValue_IntListValue struct {
IntListValue *IntListValue `protobuf:"bytes,5,opt,name=int_list_value,json=intListValue,proto3,oneof"`
}
type SettingsValue_StringListValue struct {
StringListValue *StringListValue `protobuf:"bytes,6,opt,name=string_list_value,json=stringListValue,proto3,oneof"`
type SettingsValue_ListValue struct {
ListValue *ListValue `protobuf:"bytes,5,opt,name=list_value,json=listValue,proto3,oneof"`
}
func (*SettingsValue_BoolValue) isSettingsValue_Value() {}
@@ -1405,20 +1360,18 @@ func (*SettingsValue_IntValue) isSettingsValue_Value() {}
func (*SettingsValue_StringValue) isSettingsValue_Value() {}
func (*SettingsValue_IntListValue) isSettingsValue_Value() {}
func (*SettingsValue_ListValue) isSettingsValue_Value() {}
func (*SettingsValue_StringListValue) isSettingsValue_Value() {}
type IntListValue struct {
type ListValue struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Value []int64 `protobuf:"varint,1,rep,packed,name=value,proto3" json:"value,omitempty"`
Values []*ListOptionValue `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"`
}
func (x *IntListValue) Reset() {
*x = IntListValue{}
func (x *ListValue) Reset() {
*x = ListValue{}
if protoimpl.UnsafeEnabled {
mi := &file_settings_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -1426,13 +1379,13 @@ func (x *IntListValue) Reset() {
}
}
func (x *IntListValue) String() string {
func (x *ListValue) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*IntListValue) ProtoMessage() {}
func (*ListValue) ProtoMessage() {}
func (x *IntListValue) ProtoReflect() protoreflect.Message {
func (x *ListValue) ProtoReflect() protoreflect.Message {
mi := &file_settings_proto_msgTypes[22]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -1444,28 +1397,31 @@ func (x *IntListValue) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
// Deprecated: Use IntListValue.ProtoReflect.Descriptor instead.
func (*IntListValue) Descriptor() ([]byte, []int) {
// Deprecated: Use ListValue.ProtoReflect.Descriptor instead.
func (*ListValue) Descriptor() ([]byte, []int) {
return file_settings_proto_rawDescGZIP(), []int{22}
}
func (x *IntListValue) GetValue() []int64 {
func (x *ListValue) GetValues() []*ListOptionValue {
if x != nil {
return x.Value
return x.Values
}
return nil
}
type StringListValue struct {
type ListOptionValue struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Value []string `protobuf:"bytes,1,rep,name=value,proto3" json:"value,omitempty"`
// Types that are assignable to Option:
// *ListOptionValue_StringValue
// *ListOptionValue_IntValue
Option isListOptionValue_Option `protobuf_oneof:"option"`
}
func (x *StringListValue) Reset() {
*x = StringListValue{}
func (x *ListOptionValue) Reset() {
*x = ListOptionValue{}
if protoimpl.UnsafeEnabled {
mi := &file_settings_proto_msgTypes[23]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -1473,13 +1429,13 @@ func (x *StringListValue) Reset() {
}
}
func (x *StringListValue) String() string {
func (x *ListOptionValue) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*StringListValue) ProtoMessage() {}
func (*ListOptionValue) ProtoMessage() {}
func (x *StringListValue) ProtoReflect() protoreflect.Message {
func (x *ListOptionValue) ProtoReflect() protoreflect.Message {
mi := &file_settings_proto_msgTypes[23]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -1491,18 +1447,48 @@ func (x *StringListValue) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
// Deprecated: Use StringListValue.ProtoReflect.Descriptor instead.
func (*StringListValue) Descriptor() ([]byte, []int) {
// Deprecated: Use ListOptionValue.ProtoReflect.Descriptor instead.
func (*ListOptionValue) Descriptor() ([]byte, []int) {
return file_settings_proto_rawDescGZIP(), []int{23}
}
func (x *StringListValue) GetValue() []string {
if x != nil {
return x.Value
func (m *ListOptionValue) GetOption() isListOptionValue_Option {
if m != nil {
return m.Option
}
return nil
}
func (x *ListOptionValue) GetStringValue() string {
if x, ok := x.GetOption().(*ListOptionValue_StringValue); ok {
return x.StringValue
}
return ""
}
func (x *ListOptionValue) GetIntValue() int64 {
if x, ok := x.GetOption().(*ListOptionValue_IntValue); ok {
return x.IntValue
}
return 0
}
type isListOptionValue_Option interface {
isListOptionValue_Option()
}
type ListOptionValue_StringValue struct {
StringValue string `protobuf:"bytes,1,opt,name=string_value,json=stringValue,proto3,oneof"`
}
type ListOptionValue_IntValue struct {
IntValue int64 `protobuf:"varint,2,opt,name=int_value,json=intValue,proto3,oneof"`
}
func (*ListOptionValue_StringValue) isListOptionValue_Option() {}
func (*ListOptionValue_IntValue) isListOptionValue_Option() {}
// only meant for serialization
type SettingsValues struct {
state protoimpl.MessageState
@@ -1704,121 +1690,119 @@ var file_settings_proto_rawDesc = []byte{
0x6e, 0x67, 0x12, 0x2b, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74,
0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22,
0x99, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23,
0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61,
0x6c, 0x75, 0x65, 0x12, 0x1d, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c,
0x75, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20,
0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x23, 0x0a, 0x0d,
0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20,
0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x6c, 0x75,
0x65, 0x42, 0x08, 0x0a, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb3, 0x02, 0x0a, 0x0d,
0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x31, 0x0a,
0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69,
0x66, 0x69, 0x65, 0x72, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72,
0x12, 0x1f, 0x0a, 0x0a, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75,
0x65, 0x12, 0x1d, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03,
0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65,
0x79, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x56,
0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64,
0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65,
0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79,
0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x69,
0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xe3, 0x01, 0x0a, 0x0d, 0x53,
0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x31, 0x0a, 0x0a,
0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66,
0x69, 0x65, 0x72, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12,
0x1f, 0x0a, 0x0a, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65,
0x12, 0x1d, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20,
0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12,
0x23, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56,
0x61, 0x6c, 0x75, 0x65, 0x12, 0x31, 0x0a, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x76, 0x61, 0x6c,
0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x09, 0x6c, 0x69,
0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x22, 0x3b, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2e, 0x0a,
0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x5f, 0x0a,
0x0f, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65,
0x12, 0x23, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3b, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x73,
0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c,
0x75, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c,
0x75, 0x65, 0x12, 0x44, 0x0a, 0x11, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x73,
0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74,
0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x0f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c,
0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x22, 0x24, 0x0a, 0x0c, 0x49, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75,
0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x03,
0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x27, 0x0a, 0x0f, 0x53, 0x74, 0x72, 0x69, 0x6e,
0x67, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x22, 0x9c, 0x01, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x56, 0x61, 0x6c,
0x75, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74,
0x69, 0x6e, 0x67, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65,
0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x4f,
0x0a, 0x0b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x56,
0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x32,
0x9d, 0x03, 0x0a, 0x0d, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
0x65, 0x12, 0x82, 0x01, 0x0a, 0x12, 0x53, 0x61, 0x76, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e,
0x67, 0x73, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1d, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c,
0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x56,
0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x9c,
0x01, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65,
0x73, 0x12, 0x39, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e,
0x67, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x45,
0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x4f, 0x0a, 0x0b,
0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x56, 0x61, 0x6c,
0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x32, 0x9d, 0x03,
0x0a, 0x0d, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12,
0x82, 0x01, 0x0a, 0x12, 0x53, 0x61, 0x76, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,
0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53,
0x61, 0x76, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x75, 0x6e, 0x64, 0x6c,
0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2e, 0x53, 0x61, 0x76, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x75, 0x6e,
0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42,
0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82,
0xd3, 0xe4, 0x93, 0x02, 0x21, 0x22, 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x73,
0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2d, 0x73,
0x61, 0x76, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x7e, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74,
0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x1f, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42,
0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,
0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26,
0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x22, 0x1b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f,
0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2d,
0x67, 0x65, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x86, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x53,
0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x21,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69,
0x6e, 0x67, 0x73, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65,
0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x22, 0x1d, 0x2f,
0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f,
0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x2d, 0x6c, 0x69, 0x73, 0x74, 0x3a, 0x01, 0x2a, 0x32,
0x8f, 0x03, 0x0a, 0x0c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
0x12, 0x7e, 0x0a, 0x11, 0x53, 0x61, 0x76, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,
0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x61,
0x76, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53,
0x61, 0x76, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20,
0x22, 0x1b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e,
0x67, 0x73, 0x2f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2d, 0x73, 0x61, 0x76, 0x65, 0x3a, 0x01, 0x2a,
0x12, 0x7a, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x56,
0x61, 0x6c, 0x75, 0x65, 0x12, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x65, 0x74,
0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4,
0x93, 0x02, 0x21, 0x22, 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x73, 0x65, 0x74,
0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2d, 0x73, 0x61, 0x76,
0x65, 0x3a, 0x01, 0x2a, 0x12, 0x7e, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69,
0x6e, 0x67, 0x73, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x75, 0x6e,
0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x75,
0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3,
0xe4, 0x93, 0x02, 0x20, 0x22, 0x1b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x73, 0x65,
0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2d, 0x67, 0x65,
0x74, 0x3a, 0x01, 0x2a, 0x12, 0x86, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x74,
0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
0x73, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x74, 0x74,
0x69, 0x6e, 0x67, 0x73, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x22, 0x1d, 0x2f, 0x61, 0x70,
0x69, 0x2f, 0x76, 0x30, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x62, 0x75,
0x6e, 0x64, 0x6c, 0x65, 0x73, 0x2d, 0x6c, 0x69, 0x73, 0x74, 0x3a, 0x01, 0x2a, 0x32, 0x8f, 0x03,
0x0a, 0x0c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x7e,
0x0a, 0x11, 0x53, 0x61, 0x76, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x56, 0x61,
0x6c, 0x75, 0x65, 0x12, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x61, 0x76, 0x65,
0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x65, 0x74,
0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x22, 0x1a, 0x2f,
0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f,
0x76, 0x61, 0x6c, 0x75, 0x65, 0x2d, 0x67, 0x65, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x82, 0x01, 0x0a,
0x12, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x56, 0x61, 0x6c,
0x75, 0x65, 0x73, 0x12, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x61, 0x76,
0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x22, 0x1b,
0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,
0x2f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2d, 0x73, 0x61, 0x76, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x7a,
0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x56, 0x61, 0x6c,
0x75, 0x65, 0x12, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65,
0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65,
0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x22, 0x1a, 0x2f, 0x61, 0x70,
0x69, 0x2f, 0x76, 0x30, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x76, 0x61,
0x6c, 0x75, 0x65, 0x2d, 0x67, 0x65, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x82, 0x01, 0x0a, 0x12, 0x4c,
0x69, 0x73, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65,
0x73, 0x12, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65,
0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74,
0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69,
0x73, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21,
0x22, 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e,
0x67, 0x73, 0x2f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2d, 0x6c, 0x69, 0x73, 0x74, 0x3a, 0x01,
0x2a, 0x42, 0xaf, 0x02, 0x5a, 0x07, 0x2e, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x92, 0x41, 0xa2,
0x02, 0x12, 0xae, 0x01, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x50,
0x0a, 0x0d, 0x6f, 0x77, 0x6e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x20, 0x47, 0x6d, 0x62, 0x48, 0x12,
0x29, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x77, 0x6e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x6f, 0x63, 0x69,
0x73, 0x2d, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x14, 0x73, 0x75, 0x70, 0x70,
0x6f, 0x72, 0x74, 0x40, 0x6f, 0x77, 0x6e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6d,
0x2a, 0x4b, 0x0a, 0x0a, 0x41, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2d, 0x32, 0x2e, 0x30, 0x12, 0x3d,
0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63,
0x6f, 0x6d, 0x2f, 0x6f, 0x77, 0x6e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x6f, 0x63, 0x69, 0x73,
0x2d, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x62, 0x6c, 0x6f, 0x62, 0x2f, 0x6d,
0x61, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x32, 0x03, 0x31,
0x2e, 0x30, 0x2a, 0x02, 0x01, 0x02, 0x32, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x3a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x72, 0x47, 0x0a, 0x10, 0x44, 0x65,
0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x20, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x12, 0x33,
0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x77, 0x6e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73,
0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6f, 0x63, 0x69, 0x73, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e,
0x67, 0x73, 0x2f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x22, 0x1c,
0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,
0x2f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2d, 0x6c, 0x69, 0x73, 0x74, 0x3a, 0x01, 0x2a, 0x42,
0xaf, 0x02, 0x5a, 0x07, 0x2e, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x92, 0x41, 0xa2, 0x02, 0x12,
0xae, 0x01, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x50, 0x0a, 0x0d,
0x6f, 0x77, 0x6e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x20, 0x47, 0x6d, 0x62, 0x48, 0x12, 0x29, 0x68,
0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,
0x6d, 0x2f, 0x6f, 0x77, 0x6e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x6f, 0x63, 0x69, 0x73, 0x2d,
0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x14, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72,
0x74, 0x40, 0x6f, 0x77, 0x6e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6d, 0x2a, 0x4b,
0x0a, 0x0a, 0x41, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2d, 0x32, 0x2e, 0x30, 0x12, 0x3d, 0x68, 0x74,
0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
0x2f, 0x6f, 0x77, 0x6e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x6f, 0x63, 0x69, 0x73, 0x2d, 0x73,
0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x62, 0x6c, 0x6f, 0x62, 0x2f, 0x6d, 0x61, 0x73,
0x74, 0x65, 0x72, 0x2f, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x32, 0x03, 0x31, 0x2e, 0x30,
0x2a, 0x02, 0x01, 0x02, 0x32, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x3a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x72, 0x47, 0x0a, 0x10, 0x44, 0x65, 0x76, 0x65,
0x6c, 0x6f, 0x70, 0x65, 0x72, 0x20, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x12, 0x33, 0x68, 0x74,
0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x77, 0x6e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x69,
0x74, 0x68, 0x75, 0x62, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
0x6e, 0x73, 0x2f, 0x6f, 0x63, 0x69, 0x73, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,
0x2f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -1857,8 +1841,8 @@ var file_settings_proto_goTypes = []interface{}{
(*MultiChoiceListSetting)(nil), // 19: proto.MultiChoiceListSetting
(*ListOption)(nil), // 20: proto.ListOption
(*SettingsValue)(nil), // 21: proto.SettingsValue
(*IntListValue)(nil), // 22: proto.IntListValue
(*StringListValue)(nil), // 23: proto.StringListValue
(*ListValue)(nil), // 22: proto.ListValue
(*ListOptionValue)(nil), // 23: proto.ListOptionValue
(*SettingsValues)(nil), // 24: proto.SettingsValues
nil, // 25: proto.SettingsValues.ValuesEntry
}
@@ -1884,28 +1868,29 @@ var file_settings_proto_depIdxs = []int32{
19, // 18: proto.Setting.multi_choice_value:type_name -> proto.MultiChoiceListSetting
20, // 19: proto.SingleChoiceListSetting.options:type_name -> proto.ListOption
20, // 20: proto.MultiChoiceListSetting.options:type_name -> proto.ListOption
12, // 21: proto.SettingsValue.identifier:type_name -> proto.Identifier
22, // 22: proto.SettingsValue.int_list_value:type_name -> proto.IntListValue
23, // 23: proto.SettingsValue.string_list_value:type_name -> proto.StringListValue
25, // 24: proto.SettingsValues.values:type_name -> proto.SettingsValues.ValuesEntry
21, // 25: proto.SettingsValues.ValuesEntry.value:type_name -> proto.SettingsValue
0, // 26: proto.BundleService.SaveSettingsBundle:input_type -> proto.SaveSettingsBundleRequest
2, // 27: proto.BundleService.GetSettingsBundle:input_type -> proto.GetSettingsBundleRequest
4, // 28: proto.BundleService.ListSettingsBundles:input_type -> proto.ListSettingsBundlesRequest
6, // 29: proto.ValueService.SaveSettingsValue:input_type -> proto.SaveSettingsValueRequest
8, // 30: proto.ValueService.GetSettingsValue:input_type -> proto.GetSettingsValueRequest
10, // 31: proto.ValueService.ListSettingsValues:input_type -> proto.ListSettingsValuesRequest
1, // 32: proto.BundleService.SaveSettingsBundle:output_type -> proto.SaveSettingsBundleResponse
3, // 33: proto.BundleService.GetSettingsBundle:output_type -> proto.GetSettingsBundleResponse
5, // 34: proto.BundleService.ListSettingsBundles:output_type -> proto.ListSettingsBundlesResponse
7, // 35: proto.ValueService.SaveSettingsValue:output_type -> proto.SaveSettingsValueResponse
9, // 36: proto.ValueService.GetSettingsValue:output_type -> proto.GetSettingsValueResponse
11, // 37: proto.ValueService.ListSettingsValues:output_type -> proto.ListSettingsValuesResponse
32, // [32:38] is the sub-list for method output_type
26, // [26:32] is the sub-list for method input_type
26, // [26:26] is the sub-list for extension type_name
26, // [26:26] is the sub-list for extension extendee
0, // [0:26] is the sub-list for field type_name
23, // 21: proto.ListOption.value:type_name -> proto.ListOptionValue
12, // 22: proto.SettingsValue.identifier:type_name -> proto.Identifier
22, // 23: proto.SettingsValue.list_value:type_name -> proto.ListValue
23, // 24: proto.ListValue.values:type_name -> proto.ListOptionValue
25, // 25: proto.SettingsValues.values:type_name -> proto.SettingsValues.ValuesEntry
21, // 26: proto.SettingsValues.ValuesEntry.value:type_name -> proto.SettingsValue
0, // 27: proto.BundleService.SaveSettingsBundle:input_type -> proto.SaveSettingsBundleRequest
2, // 28: proto.BundleService.GetSettingsBundle:input_type -> proto.GetSettingsBundleRequest
4, // 29: proto.BundleService.ListSettingsBundles:input_type -> proto.ListSettingsBundlesRequest
6, // 30: proto.ValueService.SaveSettingsValue:input_type -> proto.SaveSettingsValueRequest
8, // 31: proto.ValueService.GetSettingsValue:input_type -> proto.GetSettingsValueRequest
10, // 32: proto.ValueService.ListSettingsValues:input_type -> proto.ListSettingsValuesRequest
1, // 33: proto.BundleService.SaveSettingsBundle:output_type -> proto.SaveSettingsBundleResponse
3, // 34: proto.BundleService.GetSettingsBundle:output_type -> proto.GetSettingsBundleResponse
5, // 35: proto.BundleService.ListSettingsBundles:output_type -> proto.ListSettingsBundlesResponse
7, // 36: proto.ValueService.SaveSettingsValue:output_type -> proto.SaveSettingsValueResponse
9, // 37: proto.ValueService.GetSettingsValue:output_type -> proto.GetSettingsValueResponse
11, // 38: proto.ValueService.ListSettingsValues:output_type -> proto.ListSettingsValuesResponse
33, // [33:39] is the sub-list for method output_type
27, // [27:33] is the sub-list for method input_type
27, // [27:27] is the sub-list for extension type_name
27, // [27:27] is the sub-list for extension extendee
0, // [0:27] is the sub-list for field type_name
}
func init() { file_settings_proto_init() }
@@ -2179,7 +2164,7 @@ func file_settings_proto_init() {
}
}
file_settings_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*IntListValue); i {
switch v := v.(*ListValue); i {
case 0:
return &v.state
case 1:
@@ -2191,7 +2176,7 @@ func file_settings_proto_init() {
}
}
file_settings_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*StringListValue); i {
switch v := v.(*ListOptionValue); i {
case 0:
return &v.state
case 1:
@@ -2222,16 +2207,15 @@ func file_settings_proto_init() {
(*Setting_SingleChoiceValue)(nil),
(*Setting_MultiChoiceValue)(nil),
}
file_settings_proto_msgTypes[20].OneofWrappers = []interface{}{
(*ListOption_StringValue)(nil),
(*ListOption_IntValue)(nil),
}
file_settings_proto_msgTypes[21].OneofWrappers = []interface{}{
(*SettingsValue_BoolValue)(nil),
(*SettingsValue_IntValue)(nil),
(*SettingsValue_StringValue)(nil),
(*SettingsValue_IntListValue)(nil),
(*SettingsValue_StringListValue)(nil),
(*SettingsValue_ListValue)(nil),
}
file_settings_proto_msgTypes[23].OneofWrappers = []interface{}{
(*ListOptionValue_StringValue)(nil),
(*ListOptionValue_IntValue)(nil),
}
type x struct{}
out := protoimpl.TypeBuilder{

View File

@@ -990,77 +990,77 @@ func (m *SettingsValue) UnmarshalJSON(b []byte) error {
var _ json.Unmarshaler = (*SettingsValue)(nil)
// IntListValueJSONMarshaler describes the default jsonpb.Marshaler used by all
// instances of IntListValue. This struct is safe to replace or modify but
// ListValueJSONMarshaler describes the default jsonpb.Marshaler used by all
// instances of ListValue. This struct is safe to replace or modify but
// should not be done so concurrently.
var IntListValueJSONMarshaler = new(jsonpb.Marshaler)
var ListValueJSONMarshaler = new(jsonpb.Marshaler)
// MarshalJSON satisfies the encoding/json Marshaler interface. This method
// uses the more correct jsonpb package to correctly marshal the message.
func (m *IntListValue) MarshalJSON() ([]byte, error) {
func (m *ListValue) MarshalJSON() ([]byte, error) {
if m == nil {
return json.Marshal(nil)
}
buf := &bytes.Buffer{}
if err := IntListValueJSONMarshaler.Marshal(buf, m); err != nil {
if err := ListValueJSONMarshaler.Marshal(buf, m); err != nil {
return nil, err
}
return buf.Bytes(), nil
}
var _ json.Marshaler = (*IntListValue)(nil)
var _ json.Marshaler = (*ListValue)(nil)
// IntListValueJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all
// instances of IntListValue. This struct is safe to replace or modify but
// ListValueJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all
// instances of ListValue. This struct is safe to replace or modify but
// should not be done so concurrently.
var IntListValueJSONUnmarshaler = new(jsonpb.Unmarshaler)
var ListValueJSONUnmarshaler = new(jsonpb.Unmarshaler)
// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method
// uses the more correct jsonpb package to correctly unmarshal the message.
func (m *IntListValue) UnmarshalJSON(b []byte) error {
return IntListValueJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m)
func (m *ListValue) UnmarshalJSON(b []byte) error {
return ListValueJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m)
}
var _ json.Unmarshaler = (*IntListValue)(nil)
var _ json.Unmarshaler = (*ListValue)(nil)
// StringListValueJSONMarshaler describes the default jsonpb.Marshaler used by all
// instances of StringListValue. This struct is safe to replace or modify but
// ListOptionValueJSONMarshaler describes the default jsonpb.Marshaler used by all
// instances of ListOptionValue. This struct is safe to replace or modify but
// should not be done so concurrently.
var StringListValueJSONMarshaler = new(jsonpb.Marshaler)
var ListOptionValueJSONMarshaler = new(jsonpb.Marshaler)
// MarshalJSON satisfies the encoding/json Marshaler interface. This method
// uses the more correct jsonpb package to correctly marshal the message.
func (m *StringListValue) MarshalJSON() ([]byte, error) {
func (m *ListOptionValue) MarshalJSON() ([]byte, error) {
if m == nil {
return json.Marshal(nil)
}
buf := &bytes.Buffer{}
if err := StringListValueJSONMarshaler.Marshal(buf, m); err != nil {
if err := ListOptionValueJSONMarshaler.Marshal(buf, m); err != nil {
return nil, err
}
return buf.Bytes(), nil
}
var _ json.Marshaler = (*StringListValue)(nil)
var _ json.Marshaler = (*ListOptionValue)(nil)
// StringListValueJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all
// instances of StringListValue. This struct is safe to replace or modify but
// ListOptionValueJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all
// instances of ListOptionValue. This struct is safe to replace or modify but
// should not be done so concurrently.
var StringListValueJSONUnmarshaler = new(jsonpb.Unmarshaler)
var ListOptionValueJSONUnmarshaler = new(jsonpb.Unmarshaler)
// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method
// uses the more correct jsonpb package to correctly unmarshal the message.
func (m *StringListValue) UnmarshalJSON(b []byte) error {
return StringListValueJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m)
func (m *ListOptionValue) UnmarshalJSON(b []byte) error {
return ListOptionValueJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m)
}
var _ json.Unmarshaler = (*StringListValue)(nil)
var _ json.Unmarshaler = (*ListOptionValue)(nil)
// SettingsValuesJSONMarshaler describes the default jsonpb.Marshaler used by all
// instances of SettingsValues. This struct is safe to replace or modify but

View File

@@ -180,12 +180,9 @@ message MultiChoiceListSetting {
}
message ListOption {
oneof option {
string string_value = 1;
int64 int_value = 2;
}
bool default = 3;
string display_value = 4;
ListOptionValue value = 1;
bool default = 2;
string display_value = 3;
}
// payloads for settings values
@@ -195,17 +192,19 @@ message SettingsValue {
bool bool_value = 2;
int64 int_value = 3;
string string_value = 4;
IntListValue int_list_value = 5;
StringListValue string_list_value = 6;
ListValue list_value = 5;
}
}
message IntListValue {
repeated int64 value = 1;
message ListValue {
repeated ListOptionValue values = 1;
}
message StringListValue {
repeated string value = 1;
message ListOptionValue {
oneof option {
string string_value = 1;
int64 int_value = 2;
}
}
// only meant for serialization

View File

@@ -280,18 +280,6 @@
},
"title": "generic payloads"
},
"protoIntListValue": {
"type": "object",
"properties": {
"value": {
"type": "array",
"items": {
"type": "string",
"format": "int64"
}
}
}
},
"protoIntSetting": {
"type": "object",
"properties": {
@@ -319,12 +307,8 @@
"protoListOption": {
"type": "object",
"properties": {
"string_value": {
"type": "string"
},
"int_value": {
"type": "string",
"format": "int64"
"value": {
"$ref": "#/definitions/protoListOptionValue"
},
"default": {
"type": "boolean",
@@ -335,6 +319,18 @@
}
}
},
"protoListOptionValue": {
"type": "object",
"properties": {
"string_value": {
"type": "string"
},
"int_value": {
"type": "string",
"format": "int64"
}
}
},
"protoListSettingsBundlesRequest": {
"type": "object",
"properties": {
@@ -373,6 +369,17 @@
}
}
},
"protoListValue": {
"type": "object",
"properties": {
"values": {
"type": "array",
"items": {
"$ref": "#/definitions/protoListOptionValue"
}
}
}
},
"protoMultiChoiceListSetting": {
"type": "object",
"properties": {
@@ -482,11 +489,8 @@
"string_value": {
"type": "string"
},
"int_list_value": {
"$ref": "#/definitions/protoIntListValue"
},
"string_list_value": {
"$ref": "#/definitions/protoStringListValue"
"list_value": {
"$ref": "#/definitions/protoListValue"
}
},
"title": "payloads for settings values"
@@ -502,17 +506,6 @@
}
}
},
"protoStringListValue": {
"type": "object",
"properties": {
"value": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"protoStringSetting": {
"type": "object",
"properties": {

View File

@@ -32,7 +32,7 @@ func (s Store) ReadValue(identifier *proto.Identifier) (*proto.SettingsValue, er
// Writes the given SettingsValue into a file within the mountPath
func (s Store) WriteValue(value *proto.SettingsValue) (*proto.SettingsValue, error) {
if len(value.Identifier.AccountUuid) < 1 || len(value.Identifier.Extension) < 1 || len(value.Identifier.BundleKey) < 1 || len(value.Identifier.SettingKey) < 1 {
s.Logger.Error().Msg("account-uuid, extension, bundle and setting are required")
s.Logger.Error().Msg("all identifier keys are required")
return nil, gstatus.Errorf(codes.InvalidArgument, "Missing a required identifier attribute")
}

View File

@@ -27,7 +27,7 @@
class="oc-checkbox"
:value="option"
v-model="selectedOptions"
@input="onSelectedOption"
@change="onSelectedOption"
/>
{{ option.displayValue }}
</label>
@@ -38,6 +38,7 @@
</template>
<script>
import isNil from 'lodash/isNil'
export default {
name: 'SettingMultiChoice',
props: {
@@ -54,33 +55,77 @@ export default {
required: false
}
},
data() {
data () {
return {
selectedOptions: null
}
},
computed: {
selectedOptionsDisplayValues() {
selectedOptionsDisplayValues () {
return Array.from(this.selectedOptions).map(option => option.displayValue).join(', ')
},
dropElementId() {
dropElementId () {
return `multi-choice-drop-${this.bundle.identifier.bundleKey}-${this.setting.settingKey}`
},
buttonElementId() {
buttonElementId () {
return `multi-choice-toggle-${this.bundle.identifier.bundleKey}-${this.setting.settingKey}`
},
}
},
methods: {
getOptionElementId(index) {
getOptionElementId (index) {
return `${this.bundle.identifier.bundleKey}-${this.setting.settingKey}-${index}`
},
onSelectedOption() {
// TODO: propagate selection to parent
async onSelectedOption () {
const values = []
if (!isNil(this.selectedOptions)) {
this.selectedOptions.forEach(option => {
if (option.value.intValue) {
values.push({ intValue: option.value.intValue })
}
if (option.value.stringValue) {
values.push({ stringValue: option.value.stringValue })
}
})
}
await this.$emit('onSave', {
bundle: this.bundle,
setting: this.setting,
value: {
listValue: {
values
}
}
})
// TODO: show a spinner while the request for saving the value is running!
}
},
mounted() {
this.selectedOptions = null
mounted () {
if (!isNil(this.persistedValue) && !isNil(this.persistedValue.listValue)) {
const selectedValues = []
if (this.persistedValue.listValue.values) {
this.persistedValue.listValue.values.forEach(value => {
if (value.intValue) {
selectedValues.push(value.intValue)
}
if (value.stringValue) {
selectedValues.push(value.stringValue)
}
})
}
if (selectedValues.length === 0) {
this.selectedOptions = []
} else {
this.selectedOptions = this.setting.multiChoiceValue.options.filter(option => {
if (option.value.intValue) {
return selectedValues.includes(option.value.intValue)
}
if (option.value.stringValue) {
return selectedValues.includes(option.value.stringValue)
}
return false
})
}
}
// TODO: load the settings value of the authenticated user and set it in `selectedOptions`
// if not set, yet, apply defaults from settings bundle definition
if (this.selectedOptions === null) {

View File

@@ -74,40 +74,39 @@ export default {
return `${this.bundle.identifier.bundleKey}-${this.setting.settingKey}-${index}`
},
async onSelectedOption () {
const value = {}
if (this.selectedOption) {
if (!isNil(this.selectedOption.intValue)) {
value.intListValue = {
value: [this.selectedOption ? this.selectedOption.intValue : null]
}
} else {
value.stringListValue = {
value: [this.selectedOption ? this.selectedOption.stringValue : null]
}
const values = []
if (!isNil(this.selectedOption)) {
if (this.selectedOption.value.intValue) {
values.push({ intValue: this.selectedOption.value.intValue })
}
if (this.selectedOption.value.stringValue) {
values.push({ stringValue: this.selectedOption.value.stringValue })
}
}
await this.$emit('onSave', {
bundle: this.bundle,
setting: this.setting,
value
value: {
listValue: {
values
}
}
})
// TODO: show a spinner while the request for saving the value is running!
}
},
mounted () {
if (!isNil(this.persistedValue)) {
if (!isNil(this.persistedValue.intListValue)) {
const selected = this.persistedValue.intListValue.value[0]
const filtered = this.setting.singleChoiceValue.options.filter(option => option.intValue === selected)
if (filtered.length > 0) {
this.selectedOption = filtered[0]
}
} else {
const selected = this.persistedValue.stringListValue.value[0]
const filtered = this.setting.singleChoiceValue.options.filter(option => option.stringValue === selected)
if (filtered.length > 0) {
this.selectedOption = filtered[0]
if (!isNil(this.persistedValue) && !isNil(this.persistedValue.listValue)) {
const selected = this.persistedValue.listValue.values[0]
const filtered = this.setting.singleChoiceValue.options.filter(option => {
if (selected.intValue) {
return option.value.intValue === selected.intValue
} else {
return option.value.stringValue === selected.stringValue
}
})
if (filtered.length > 0) {
this.selectedOption = filtered[0]
}
}
// if not set, yet, apply default from settings bundle definition