using RobotNet.WebApp.Charts.Enums;
using RobotNet.WebApp.Charts.Models.Common;
using System.Text.Json.Serialization;

namespace RobotNet.WebApp.Charts.Models.BarChart.Axes;

public class ChartAxesTicks
{
    [JsonPropertyName("align")]
    public TicksAlignment Alignment { get; set; } = TicksAlignment.Center;  

    /// <summary>
    /// Color of label backdrops
    /// </summary>
    [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
    public string? BackdropColor { get; set; }

    /// <summary>
    /// Padding of label backdrop
    /// </summary>
    [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
    public int? BackdropPadding { get; set; }

    /// <summary>
    /// Color of ticks
    /// </summary>
    [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
    public string? Color { get; set; }

    /// <summary>
    /// If <see langword="true" />, show tick labels.
    /// </summary>
    public bool Display { get; set; } = true;

    /// <summary>
    /// defines options for the major tick marks that are generated by the axis.
    /// </summary>
    [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
    public ChartAxesTicksMajor? Major { get; set; }

    /// <summary>
    /// Sets the offset of the tick labels from the axis
    /// </summary>
    [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
    public ChartPadding? Padding { get; set; }

    /// <summary>
    /// If <see langword="true" />, draw a background behind the tick labels.
    /// </summary>
    [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
    public bool? ShowLabelBackdrop { get; set; }

    /// <summary>
    /// The color of the stroke around the text.
    /// </summary>
    [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
    public string? TextStrokeColor { get; set; }

    /// <summary>
    /// Stroke width around the text.
    /// </summary>
    [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
    public int? TextStrokeWidth { get; set; }
}
