using RobotNet.WebApp.Charts.Models.BarChart.Axes;
using System.Text.Json.Serialization;

namespace RobotNet.WebApp.Charts.Models.RadarChart.Axis;

public class RadialTicks : ChartAxesTicks
{
    /// <summary>
    /// Gets or sets the horizontal padding of label backdrop.
    /// </summary>
    [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
    public int? BackdropPaddingX { get; set; }

    /// <summary>
    /// Gets or sets the vertical padding of label backdrop.
    /// </summary>
    [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
    public int? BackdropPaddingY { get; set; }

    /// <summary>
    /// Gets or sets the value indicating whether the scale will include 0 if it is not already included.
    /// </summary>
    [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
    public bool? BeginAtZero { get; set; }

    /// <summary>
    /// Gets or sets the user defined minimum number for the scale, overrides minimum value from data.
    /// </summary>
    [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
    public double? Min { get; set; }

    /// <summary>
    /// Gets or sets the user defined maximum number for the scale, overrides minimum value from data.
    /// </summary>
    [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
    public double? Max { get; set; }

    /// <summary>
    /// Gets or sets the maximum number of ticks and gridlines to show.
    /// </summary>
    [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
    public int? MaxTicksLimit { get; set; }

    /// <summary>
    /// If defined and <see cref="StepSize"/> is not specified, the step size will be rounded to this many decimal places.
    /// </summary>
    [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
    public int? Precision { get; set; }

    /// <summary>
    /// Gets or sets the user defined fixed step size for the scale.
    /// </summary>
    [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
    public double? StepSize { get; set; }

    /// <summary>
    /// Gets or sets the adjustment used when calculating the maximum data value.
    /// </summary>
    [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
    public double? SuggestedMax { get; set; }

    /// <summary>
    /// Gets or sets the adjustment used when calculating the minimum data value.
    /// </summary>
    [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
    public double? SuggestedMin { get; set; }
}
