diff --git a/frontend/src/Components/Form/ProviderFieldFormGroup.js b/frontend/src/Components/Form/ProviderFieldFormGroup.js index 0364659c8..4fa86583e 100644 --- a/frontend/src/Components/Form/ProviderFieldFormGroup.js +++ b/frontend/src/Components/Form/ProviderFieldFormGroup.js @@ -63,6 +63,7 @@ function ProviderFieldFormGroup(props) { name, label, helpText, + helpTextWarning, helpLink, placeholder, value, @@ -96,6 +97,7 @@ function ProviderFieldFormGroup(props) { name={name} label={label} helpText={helpText} + helpTextWarning={helpTextWarning} helpLink={helpLink} placeholder={placeholder} value={value} @@ -122,6 +124,7 @@ ProviderFieldFormGroup.propTypes = { name: PropTypes.string.isRequired, label: PropTypes.string.isRequired, helpText: PropTypes.string, + helpTextWarning: PropTypes.string, helpLink: PropTypes.string, placeholder: PropTypes.string, value: PropTypes.any, diff --git a/src/NzbDrone.Api.Test/ClientSchemaTests/SchemaBuilderFixture.cs b/src/NzbDrone.Api.Test/ClientSchemaTests/SchemaBuilderFixture.cs index 5122239b3..755411a24 100644 --- a/src/NzbDrone.Api.Test/ClientSchemaTests/SchemaBuilderFixture.cs +++ b/src/NzbDrone.Api.Test/ClientSchemaTests/SchemaBuilderFixture.cs @@ -27,19 +27,47 @@ public void schema_should_have_proper_fields() var schema = SchemaBuilder.ToSchema(model); - schema.Should().Contain(c => c.Order == 1 && c.Name == "lastName" && c.Label == "Last Name" && c.HelpText == "Your Last Name" && (string)c.Value == "Poop"); - schema.Should().Contain(c => c.Order == 0 && c.Name == "firstName" && c.Label == "First Name" && c.HelpText == "Your First Name" && (string)c.Value == "Bob"); + schema.Should().Contain(c => c.Order == 1 && c.Name == "lastName" && c.Label == "Last Name" && c.HelpText == "Your Last Name" && c.HelpTextWarning == "Mandatory Last Name" && (string)c.Value == "Poop"); + schema.Should().Contain(c => c.Order == 0 && c.Name == "firstName" && c.Label == "First Name" && c.HelpText == "Your First Name" && c.HelpTextWarning == "Mandatory First Name" && (string)c.Value == "Bob"); + } + + [Test] + public void schema_should_have_nested_fields() + { + var model = new NestedTestModel + { + Name = + { + FirstName = "Bob", + LastName = "Poop" + } + }; + + var schema = SchemaBuilder.ToSchema(model); + + schema.Should().Contain(c => c.Order == 0 && c.Name == "name.firstName" && c.Label == "First Name" && c.HelpText == "Your First Name" && c.HelpTextWarning == "Mandatory First Name" && (string)c.Value == "Bob"); + schema.Should().Contain(c => c.Order == 1 && c.Name == "name.lastName" && c.Label == "Last Name" && c.HelpText == "Your Last Name" && c.HelpTextWarning == "Mandatory Last Name" && (string)c.Value == "Poop"); + schema.Should().Contain(c => c.Order == 2 && c.Name == "quote" && c.Label == "Quote" && c.HelpText == "Your Favorite Quote"); } } public class TestModel { - [FieldDefinition(0, Label = "First Name", HelpText = "Your First Name")] + [FieldDefinition(0, Label = "First Name", HelpText = "Your First Name", HelpTextWarning = "Mandatory First Name")] public string FirstName { get; set; } - [FieldDefinition(1, Label = "Last Name", HelpText = "Your Last Name")] + [FieldDefinition(1, Label = "Last Name", HelpText = "Your Last Name", HelpTextWarning = "Mandatory Last Name")] public string LastName { get; set; } public string Other { get; set; } } + + public class NestedTestModel + { + [FieldDefinition(0)] + public TestModel Name { get; set; } = new TestModel(); + + [FieldDefinition(1, Label = "Quote", HelpText = "Your Favorite Quote")] + public string Quote { get; set; } + } } diff --git a/src/NzbDrone.Core/Annotations/FieldDefinitionAttribute.cs b/src/NzbDrone.Core/Annotations/FieldDefinitionAttribute.cs index bb56e1a02..d35409c0b 100644 --- a/src/NzbDrone.Core/Annotations/FieldDefinitionAttribute.cs +++ b/src/NzbDrone.Core/Annotations/FieldDefinitionAttribute.cs @@ -15,6 +15,7 @@ public FieldDefinitionAttribute(int order) public string Label { get; set; } public string Unit { get; set; } public string HelpText { get; set; } + public string HelpTextWarning { get; set; } public string HelpLink { get; set; } public FieldType Type { get; set; } public bool Advanced { get; set; } diff --git a/src/Radarr.Http/ClientSchema/Field.cs b/src/Radarr.Http/ClientSchema/Field.cs index e8d6c503a..38b830caf 100644 --- a/src/Radarr.Http/ClientSchema/Field.cs +++ b/src/Radarr.Http/ClientSchema/Field.cs @@ -10,6 +10,7 @@ public class Field public string Label { get; set; } public string Unit { get; set; } public string HelpText { get; set; } + public string HelpTextWarning { get; set; } public string HelpLink { get; set; } public object Value { get; set; } public string Type { get; set; } diff --git a/src/Radarr.Http/ClientSchema/SchemaBuilder.cs b/src/Radarr.Http/ClientSchema/SchemaBuilder.cs index c6eee62b1..f53b198ae 100644 --- a/src/Radarr.Http/ClientSchema/SchemaBuilder.cs +++ b/src/Radarr.Http/ClientSchema/SchemaBuilder.cs @@ -99,6 +99,7 @@ private static FieldMapping[] GetFieldMapping(Type type, string prefix, Func