RobotNet/RobotNet.WebApp/Charts/Models/Common/Plugins/ChartPluginsTooltip.cs
2025-10-15 15:15:53 +07:00

177 lines
5.7 KiB
C#

using RobotNet.WebApp.Charts.Enums;
using System.Text.Json.Serialization;
namespace RobotNet.WebApp.Charts.Models.Common.Plugins;
public class ChartPluginsTooltip
{
/// <summary>
/// Background color of the tooltip.
/// </summary>
public string BackgroundColor { get; set; } = "rgba(0, 0, 0, 0.8)";
/// <summary>
/// Gets or sets which elements appear in the tooltip.
/// </summary>
public InteractionMode Mode { get; set; }
/// <summary>
/// Gets or sets the value indicating if the hover mode only applies when the mouse position intersects an item on the chart.
/// </summary>
public bool? Intersect { get; set; }
/// <summary>
/// The mode for positioning the tooltip.
/// </summary>
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public TooltipPosition? Position { get; set; } = TooltipPosition.Average;
/// <summary>
/// Horizontal alignment of the body text lines. left/right/center.
/// </summary>
public TooltipXAlignment BodyAlign { get; set; } = TooltipXAlignment.Left;
/// <summary>
/// Color of body text.
/// </summary>
public string BodyColor { get; set; } = "#fff";
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public ChartFont? BodyFont { get; set; }
/// <summary>
/// Spacing to add to top and bottom of each tooltip item.
/// </summary>
public int BodySpacing { get; set; } = 2;
/// <summary>
/// Padding for Tooltips
/// </summary>
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public ChartPadding? Padding { get; set; }
/// <summary>
/// Extra distance to move the end of the tooltip arrow away from the tooltip point.
/// </summary>
public int CaretPadding { get; set; } = 2;
/// <summary>
/// Size, in px, of the tooltip arrow.
/// </summary>
public int CaretSize { get; set; } = 5;
/// <summary>
/// If <see langword="true" />, color boxes are shown in the tooltip.
/// </summary>
public bool DisplayColors { get; set; } = true;
/// <summary>
/// Are on-canvas tooltips enabled?
/// </summary>
public bool Enabled { get; set; } = true;
/// <summary>
/// Horizontal alignment of the footer text lines. left/right/center.
/// </summary>
public TooltipXAlignment FooterAlign { get; set; } = TooltipXAlignment.Left;
/// <summary>
/// Color of footer text.
/// </summary>
public string FooterColor { get; set; } = "#fff";
public ChartFont FooterFont { get; set; } = new();
/// <summary>
/// Margin to add before drawing the footer.
/// </summary>
public int FooterMarginTop { get; set; } = 6;
/// <summary>
/// Spacing to add to top and bottom of each footer line.
/// </summary>
public int FooterSpacing { get; set; } = 2;
/// <summary>
/// Horizontal alignment of the title text lines. left/right/center.
/// </summary>
public TooltipXAlignment TitleAlign { get; set; } = TooltipXAlignment.Left;
/// <summary>
/// Color of title text.
/// </summary>
public string TitleColor { get; set; } = "#fff";
public ChartFont TitleFont { get; set; } = new();
/// <summary>
/// Margin to add on bottom of title section.
/// </summary>
public int TitleMarginBottom { get; set; } = 6;
/// <summary>
/// Spacing to add to top and bottom of each title line.
/// </summary>
public int TitleSpacing { get; set; } = 2;
/// <summary>
/// Position of the tooltip caret in the X direction. left/center/right.
/// </summary>
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public TooltipXAlignment? XAlign { get; set; }
/// <summary>
/// Position of the tooltip caret in the Y direction. top/center/bottom.
/// </summary>
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public TooltipYAlignment? YAlign { get; set; }
/// <summary>
/// Width of the color box if displayColors is true.
/// </summary>
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public int? BoxWidth { get; set; }
/// <summary>
/// Height of the color box if displayColors is true.
/// </summary>
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public int? BoxHeight { get; set; }
/// <summary>
/// Padding between the color box and the text.
/// </summary>
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public int? BoxPadding { get; set; }
/// <summary>
/// Size of the border.
/// </summary>
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public int? BorderWidth { get; set; }
/// <summary>
/// Color of the border.
/// </summary>
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? BorderColor { get; set; }
/// <summary>
/// Use the corresponding point style (from dataset options) instead of color boxes, ex: star, triangle etc. (size is based on the minimum value between boxWidth and boxHeight).
/// </summary>
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public bool? UsePointStyle { get; set; } = false;
/// <summary>
/// true for rendering the tooltip from right to left.
/// </summary>
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public bool? Rtl { get; set; }
/// <summary>
/// This will force the text direction 'rtl' or 'ltr' on the canvas for rendering the tooltips, regardless of the css specified on the canvas
/// </summary>
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? TextDirection { get; set; }
}