diff --git a/src/Plotly.NET/Layout/ObjectAbstractions/Common/Padding.fs b/src/Plotly.NET/CommonAbstractions/Padding.fs similarity index 67% rename from src/Plotly.NET/Layout/ObjectAbstractions/Common/Padding.fs rename to src/Plotly.NET/CommonAbstractions/Padding.fs index 92391032d..53d71900b 100644 --- a/src/Plotly.NET/Layout/ObjectAbstractions/Common/Padding.fs +++ b/src/Plotly.NET/CommonAbstractions/Padding.fs @@ -1,4 +1,4 @@ -namespace Plotly.NET.LayoutObjects +namespace Plotly.NET open DynamicObj open System.Runtime.InteropServices @@ -7,7 +7,7 @@ type Padding() = inherit DynamicObj() /// - /// Set the padding of the slider component along each side + /// Returns a new Padding object with the given styling. Set the padding of the component along each side /// /// The amount of padding (in px) along the bottom of the component /// The amount of padding (in px) on the left side of the component @@ -22,6 +22,13 @@ type Padding() = ) = Padding() |> Padding.style (?B = B, ?L = L, ?R = R, ?T = T) + /// + /// Returns a function that applies the given styles to a Padding object. Set the padding of the component along each side + /// + /// The amount of padding (in px) along the bottom of the component + /// The amount of padding (in px) on the left side of the component + /// The amount of padding (in px) on the right side of the component + /// The amount of padding (in px) along the top of the component static member style ( [] ?B: int, diff --git a/src/Plotly.NET/CommonAbstractions/Title.fs b/src/Plotly.NET/CommonAbstractions/Title.fs index 8f0ae6883..aee71e189 100644 --- a/src/Plotly.NET/CommonAbstractions/Title.fs +++ b/src/Plotly.NET/CommonAbstractions/Title.fs @@ -8,88 +8,98 @@ type Title() = inherit DynamicObj() /// - /// Returns a new Title object with the given styles. Note that this is a multi-purpose object that can be used as plot or different axis titles, with some attributes being only used in some layouts. + /// Returns a new Title object with the given styling. Note that this is a multi-purpose object that can be used as plot or different axis titles, with some attributes being only used in some layouts Note that this is a multi-purpose object that can be used as plot or different axis titles, with some attributes being only used in some layouts /// /// For all titles: Sets the plot's title. Note that before the existence of `title.text`, the title's contents used to be defined as the `title` attribute itself. This behavior has been deprecated. - /// For plot titles: Determines whether the title can automatically push the figure margins. If `yref='paper'` then the margin will expand to ensure that the title doesn’t overlap with the edges of the container. If `yref='container'` then the margins will ensure that the title doesn’t overlap with the plot area, tick labels, and axis titles. If `automargin=true` and the margins need to be expanded, then y will be set to a default 1 and yanchor will be set to an appropriate default to ensure that minimal margin space is needed. Note that when `yref='paper'`, only 1 or 0 are allowed y values. Invalid values will be reset to the default 1. /// For all titles: Sets the title font. Note that the title's font used to be customized by the now deprecated `titlefont` attribute. - /// For axis titles: Sets the standoff distance (in px) between the axis labels and the title text The default value is a function of the axis tick labels, the title `font.size` and the axis `linewidth`. Note that the axis title position is always constrained within the margins, so the actual standoff distance is always less than the set or default value. By setting `standoff` and turning on `automargin`, plotly.js will push the margins to fit the axis title at given standoff distance. - /// For colorbar titles: Determines the location of color bar's title with respect to the color bar. Defaults to "top" when `orientation` if "v" and defaults to "right" when `orientation` if "h". Note that the title's location used to be set by the now deprecated `titleside` attribute. + /// For plot titles: Determines whether the title can automatically push the figure margins. If `yref='paper'` then the margin will expand to ensure that the title doesn’t overlap with the edges of the container. If `yref='container'` then the margins will ensure that the title doesn’t overlap with the plot area, tick labels, and axis titles. If `automargin=true` and the margins need to be expanded, then y will be set to a default 1 and yanchor will be set to an appropriate default to ensure that minimal margin space is needed. Note that when `yref='paper'`, only 1 or 0 are allowed y values. Invalid values will be reset to the default 1. + /// For plot titles: Sets the padding of the title. Each padding value only applies when the corresponding `xanchor`/`yanchor` value is set accordingly. E.g. for left padding to take effect, `xanchor` must be set to "left". The same rule applies if `xanchor`/`yanchor` is determined automatically. Padding is muted if the respective anchor value is "middle"/"center". /// For plot titles: Sets the x position with respect to `xref` in normalized coordinates from "0" (left) to "1" (right). /// For plot titles: Sets the title's horizontal alignment with respect to its x position. "left" means that the title starts at x, "right" means that the title ends at x and "center" means that the title's center is at x. "auto" divides `xref` by three and calculates the `xanchor` value automatically based on the value of `x`. /// For plot titles: Sets the container `x` refers to. "container" spans the entire `width` of the plot. "paper" refers to the width of the plotting area only. /// For plot titles: Sets the y position with respect to `yref` in normalized coordinates from "0" (bottom) to "1" (top). "auto" places the baseline of the title onto the vertical center of the top margin. /// For plot titles: Sets the title's vertical alignment with respect to its y position. "top" means that the title's cap line is at y, "bottom" means that the title's baseline is at y and "middle" means that the title's midline is at y. "auto" divides `yref` by three and calculates the `yanchor` value automatically based on the value of `y`. /// For plot titles: Sets the container `y` refers to. "container" spans the entire `height` of the plot. "paper" refers to the height of the plotting area only. + /// For axis titles: Sets the standoff distance (in px) between the axis labels and the title text The default value is a function of the axis tick labels, the title `font.size` and the axis `linewidth`. Note that the axis title position is always constrained within the margins, so the actual standoff distance is always less than the set or default value. By setting `standoff` and turning on `automargin`, plotly.js will push the margins to fit the axis title at given standoff distance. + /// For colorbar titles: Determines the location of color bar's title with respect to the color bar. Defaults to "top" when `orientation` if "v" and defaults to "right" when `orientation` if "h". Note that the title's location used to be set by the now deprecated `titleside` attribute. static member init ( [] ?Text: string, - [] ?AutoMargin: bool, [] ?Font: Font, - [] ?Standoff: int, - [] ?Side: StyleParam.Side, + [] ?AutoMargin: bool, + [] ?Pad: Padding, [] ?X: float, [] ?XAnchor: StyleParam.XAnchorPosition, [] ?XRef: string, [] ?Y: float, [] ?YAnchor: StyleParam.YAnchorPosition, - [] ?YRef: string + [] ?YRef: string, + // For axis titles + [] ?Standoff: int, + // For colorbar titles + [] ?Side: StyleParam.Side ) = Title() |> Title.style ( ?Text = Text, - ?AutoMargin = AutoMargin, ?Font = Font, - ?Standoff = Standoff, - ?Side = Side, + ?AutoMargin = AutoMargin, + ?Pad = Pad, ?X = X, ?XAnchor = XAnchor, ?XRef = XRef, ?Y = Y, ?YAnchor = YAnchor, - ?YRef = YRef + ?YRef = YRef, + ?Standoff = Standoff, + ?Side = Side ) /// /// Returns a function that applies the given styles to a Title object. Note that this is a multi-purpose object that can be used as plot or different axis titles, with some attributes being only used in some layouts /// /// For all titles: Sets the plot's title. Note that before the existence of `title.text`, the title's contents used to be defined as the `title` attribute itself. This behavior has been deprecated. - /// For plot titles: Determines whether the title can automatically push the figure margins. If `yref='paper'` then the margin will expand to ensure that the title doesn’t overlap with the edges of the container. If `yref='container'` then the margins will ensure that the title doesn’t overlap with the plot area, tick labels, and axis titles. If `automargin=true` and the margins need to be expanded, then y will be set to a default 1 and yanchor will be set to an appropriate default to ensure that minimal margin space is needed. Note that when `yref='paper'`, only 1 or 0 are allowed y values. Invalid values will be reset to the default 1. /// For all titles: Sets the title font. Note that the title's font used to be customized by the now deprecated `titlefont` attribute. - /// For axis titles: Sets the standoff distance (in px) between the axis labels and the title text The default value is a function of the axis tick labels, the title `font.size` and the axis `linewidth`. Note that the axis title position is always constrained within the margins, so the actual standoff distance is always less than the set or default value. By setting `standoff` and turning on `automargin`, plotly.js will push the margins to fit the axis title at given standoff distance. - /// For colorbar titles: Determines the location of color bar's title with respect to the color bar. Defaults to "top" when `orientation` if "v" and defaults to "right" when `orientation` if "h". Note that the title's location used to be set by the now deprecated `titleside` attribute. + /// For plot titles: Determines whether the title can automatically push the figure margins. If `yref='paper'` then the margin will expand to ensure that the title doesn’t overlap with the edges of the container. If `yref='container'` then the margins will ensure that the title doesn’t overlap with the plot area, tick labels, and axis titles. If `automargin=true` and the margins need to be expanded, then y will be set to a default 1 and yanchor will be set to an appropriate default to ensure that minimal margin space is needed. Note that when `yref='paper'`, only 1 or 0 are allowed y values. Invalid values will be reset to the default 1. + /// For plot titles: Sets the padding of the title. Each padding value only applies when the corresponding `xanchor`/`yanchor` value is set accordingly. E.g. for left padding to take effect, `xanchor` must be set to "left". The same rule applies if `xanchor`/`yanchor` is determined automatically. Padding is muted if the respective anchor value is "middle"/"center". /// For plot titles: Sets the x position with respect to `xref` in normalized coordinates from "0" (left) to "1" (right). /// For plot titles: Sets the title's horizontal alignment with respect to its x position. "left" means that the title starts at x, "right" means that the title ends at x and "center" means that the title's center is at x. "auto" divides `xref` by three and calculates the `xanchor` value automatically based on the value of `x`. /// For plot titles: Sets the container `x` refers to. "container" spans the entire `width` of the plot. "paper" refers to the width of the plotting area only. /// For plot titles: Sets the y position with respect to `yref` in normalized coordinates from "0" (bottom) to "1" (top). "auto" places the baseline of the title onto the vertical center of the top margin. /// For plot titles: Sets the title's vertical alignment with respect to its y position. "top" means that the title's cap line is at y, "bottom" means that the title's baseline is at y and "middle" means that the title's midline is at y. "auto" divides `yref` by three and calculates the `yanchor` value automatically based on the value of `y`. /// For plot titles: Sets the container `y` refers to. "container" spans the entire `height` of the plot. "paper" refers to the height of the plotting area only. + /// For axis titles: Sets the standoff distance (in px) between the axis labels and the title text The default value is a function of the axis tick labels, the title `font.size` and the axis `linewidth`. Note that the axis title position is always constrained within the margins, so the actual standoff distance is always less than the set or default value. By setting `standoff` and turning on `automargin`, plotly.js will push the margins to fit the axis title at given standoff distance. + /// For colorbar titles: Determines the location of color bar's title with respect to the color bar. Defaults to "top" when `orientation` if "v" and defaults to "right" when `orientation` if "h". Note that the title's location used to be set by the now deprecated `titleside` attribute. static member style ( [] ?Text: string, - [] ?AutoMargin: bool, [] ?Font: Font, - [] ?Standoff: int, - [] ?Side: StyleParam.Side, + [] ?AutoMargin: bool, + [] ?Pad: Padding, [] ?X: float, [] ?XAnchor: StyleParam.XAnchorPosition, [] ?XRef: string, [] ?Y: float, [] ?YAnchor: StyleParam.YAnchorPosition, - [] ?YRef: string + [] ?YRef: string, + // For axis titles + [] ?Standoff: int, + // For colorbar titles + [] ?Side: StyleParam.Side ) = (fun (title: Title) -> Text |> DynObj.setValueOpt title "text" - AutoMargin |> DynObj.setValueOpt title "automargin" Font |> DynObj.setValueOpt title "font" - Standoff |> DynObj.setValueOpt title "standoff" - Side |> DynObj.setValueOptBy title "side" StyleParam.Side.convert + AutoMargin |> DynObj.setValueOpt title "automargin" + Pad |> DynObj.setValueOpt title "pad" X |> DynObj.setValueOpt title "x" XAnchor |> DynObj.setValueOptBy title "xanchor" StyleParam.XAnchorPosition.convert XRef |> DynObj.setValueOpt title "xref" Y |> DynObj.setValueOpt title "y" YAnchor |> DynObj.setValueOptBy title "yanchor" StyleParam.YAnchorPosition.convert YRef |> DynObj.setValueOpt title "yref" + Standoff |> DynObj.setValueOpt title "standoff" + Side |> DynObj.setValueOptBy title "side" StyleParam.Side.convert title) diff --git a/src/Plotly.NET/Plotly.NET.fsproj b/src/Plotly.NET/Plotly.NET.fsproj index 21c7e7450..a526e4a84 100644 --- a/src/Plotly.NET/Plotly.NET.fsproj +++ b/src/Plotly.NET/Plotly.NET.fsproj @@ -50,10 +50,10 @@ + -