All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.vaadin.flow.component.charts.model.PlotOptionsFunnel Maven / Gradle / Ivy

There is a newer version: 24.5.4
Show newest version
/**
 * Copyright 2000-2024 Vaadin Ltd.
 *
 * This program is available under Vaadin Commercial License and Service Terms.
 *
 * See {@literal } for the full
 * license.
 */
package com.vaadin.flow.component.charts.model;

import java.util.ArrayList;
import java.util.Arrays;

import com.vaadin.flow.component.charts.model.style.Color;

/**
 * Funnel charts are a type of chart often used to visualize stages in a sales
 * project, where the top are the initial stages with the most clients. It
 * requires that the modules/funnel.js file is loaded.
 */
public class PlotOptionsFunnel extends PyramidOptions {

    private Boolean allowPointSelect;
    private Number animationLimit;
    private Color borderColor;
    private Number borderWidth;
    private String[] center;
    private String className;
    private Boolean clip;
    private Number colorIndex;
    private String colorKey;
    private ArrayList colors;
    private Boolean crisp;
    private Cursor cursor;
    private DataLabelsFunnel dataLabels;
    private Number depth;
    private String description;
    private Boolean enableMouseTracking;
    private Boolean exposeElementToA11y;
    private Dimension findNearestPointBy;
    private Boolean getExtremesFromAll;
    private String height;
    private Boolean ignoreHiddenPoint;
    private ArrayList keys;
    private String linkedTo;
    private Number minSize;
    private String neckHeight;
    private String neckWidth;
    private Number opacity;
    private String _fn_pointDescriptionFormatter;
    private Boolean reversed;
    private Boolean selected;
    private Boolean shadow;
    private Boolean showInLegend;
    private Boolean skipKeyboardNavigation;
    private Number slicedOffset;
    private States states;
    private Boolean stickyTracking;
    private SeriesTooltip tooltip;
    private Boolean visible;
    private String width;
    private ZoneAxis zoneAxis;
    private ArrayList zones;

    public PlotOptionsFunnel() {
    }

    @Override
    public ChartType getChartType() {
        return ChartType.FUNNEL;
    }

    /**
     * @see #setAllowPointSelect(Boolean)
     */
    public Boolean getAllowPointSelect() {
        return allowPointSelect;
    }

    /**
     * Allow this series' points to be selected by clicking on the markers, bars
     * or pie slices.
     * 

* Defaults to: false */ public void setAllowPointSelect(Boolean allowPointSelect) { this.allowPointSelect = allowPointSelect; } /** * @see #setAnimationLimit(Number) */ public Number getAnimationLimit() { return animationLimit; } /** * For some series, there is a limit that shuts down initial animation by * default when the total number of points in the chart is too high. For * example, for a column chart and its derivatives, animation doesn't run if * there is more than 250 points totally. To disable this cap, set * animationLimit to Infinity. */ public void setAnimationLimit(Number animationLimit) { this.animationLimit = animationLimit; } /** * @see #setBorderColor(Color) */ public Color getBorderColor() { return borderColor; } /** *

* The color of the border surrounding each slice. When null, * the border takes the same color as the slice fill. This can be used * together with a borderWidth to fill drawing gaps created by * antialiazing artefacts in borderless pies. *

* *

* In styled mode, the border stroke is given in the * .highcharts-point class. *

*

* Defaults to: #ffffff */ public void setBorderColor(Color borderColor) { this.borderColor = borderColor; } /** * @see #setBorderWidth(Number) */ public Number getBorderWidth() { return borderWidth; } /** *

* The width of the border surrounding each slice. *

* *

* When setting the border width to 0, there may be small gaps between the * slices due to SVG antialiasing artefacts. To work around this, keep the * border width at 0.5 or 1, but set the borderColor to * null instead. *

* *

* In styled mode, the border stroke width is given in the * .highcharts-point class. *

*

* Defaults to: 1 */ public void setBorderWidth(Number borderWidth) { this.borderWidth = borderWidth; } /** * The center of the series. By default, it is centered in the middle of the * plot area, so it fills the plot area height. *

* Defaults to: ["50%", "50%"] */ public void setCenter(String[] center) { this.center = center; } /** * @see #setClassName(String) */ public String getClassName() { return className; } /** * A class name to apply to the series' graphical elements. */ public void setClassName(String className) { this.className = className; } /** * @see #setClip(Boolean) */ public Boolean getClip() { return clip; } /** * Disable this option to allow series rendering in the whole plotting area. * Note that clipping should be always enabled when chart.zoomType is set. *

* Defaults to false. */ public void setClip(Boolean clip) { this.clip = clip; } /** * @see #setColorIndex(Number) */ public Number getColorIndex() { return colorIndex; } /** * Styled mode only. A specific color index to use for the series, so * its graphic representations are given the class name * highcharts-color-{n}. */ public void setColorIndex(Number colorIndex) { this.colorIndex = colorIndex; } /** * @see #setColorKey(String) */ public String getColorKey() { return colorKey; } /** * Determines what data value should be used to calculate point color if * colorAxis is used. Requires to set min and * max if some custom point property is used or if * approximation for data grouping is set to 'sum'. *

* Defaults to y. */ public void setColorKey(String colorKey) { this.colorKey = colorKey; } /** * @see #setColors(Color...) */ public Color[] getColors() { if (colors == null) { return new Color[] {}; } Color[] arr = new Color[colors.size()]; colors.toArray(arr); return arr; } /** * A series specific or series type specific color set to use instead of the * global colors. */ public void setColors(Color... colors) { this.colors = new ArrayList(Arrays.asList(colors)); } /** * Adds color to the colors array * * @param color * to add * @see #setColors(Color...) */ public void addColor(Color color) { if (this.colors == null) { this.colors = new ArrayList(); } this.colors.add(color); } /** * Removes first occurrence of color in colors array * * @param color * to remove * @see #setColors(Color...) */ public void removeColor(Color color) { this.colors.remove(color); } /** * @see #setCrisp(Boolean) */ public Boolean getCrisp() { return crisp; } /** * When true, each point or column edge is rounded to its nearest pixel in * order to render sharp on screen. In some cases, when there are a lot of * densely packed columns, this leads to visible difference in column widths * or distance between columns. In these cases, setting crisp * to false may look better, even though each column is * rendered blurry. *

* Defaults to true. */ public void setCrisp(Boolean crisp) { this.crisp = crisp; } /** * @see #setCursor(Cursor) */ public Cursor getCursor() { return cursor; } /** * You can set the cursor to "pointer" if you have click events attached to * the series, to signal to the user that the points and lines can be * clicked. */ public void setCursor(Cursor cursor) { this.cursor = cursor; } /** * @see #setDataLabels(DataLabelsFunnel) */ public DataLabelsFunnel getDataLabels() { if (dataLabels == null) { dataLabels = new DataLabelsFunnel(); } return dataLabels; } public void setDataLabels(DataLabelsFunnel dataLabels) { this.dataLabels = dataLabels; } /** * @see #setDepth(Number) */ public Number getDepth() { return depth; } /** * The thickness of a 3D pie. Requires highcharts-3d.js *

* Defaults to: 0 */ public void setDepth(Number depth) { this.depth = depth; } /** * @see #setDescription(String) */ public String getDescription() { return description; } /** *

* Requires Accessibility module *

*

* A description of the series to add to the screen reader information about * the series. *

*

* Defaults to: undefined */ public void setDescription(String description) { this.description = description; } /** * @see #setEnableMouseTracking(Boolean) */ public Boolean getEnableMouseTracking() { return enableMouseTracking; } /** * Enable or disable the mouse tracking for a specific series. This includes * point tooltips and click events on graphs and points. For large datasets * it improves performance. *

* Defaults to: true */ public void setEnableMouseTracking(Boolean enableMouseTracking) { this.enableMouseTracking = enableMouseTracking; } /** * @see #setExposeElementToA11y(Boolean) */ public Boolean getExposeElementToA11y() { return exposeElementToA11y; } /** *

* By default, series are exposed to screen readers as regions. By enabling * this option, the series element itself will be exposed in the same way as * the data points. This is useful if the series is not used as a grouping * entity in the chart, but you still want to attach a description to the * series. *

*

* Requires the Accessibility module. *

*

* Defaults to: undefined */ public void setExposeElementToA11y(Boolean exposeElementToA11y) { this.exposeElementToA11y = exposeElementToA11y; } /** * @see #setFindNearestPointBy(Dimension) */ public Dimension getFindNearestPointBy() { return findNearestPointBy; } /** *

* Determines whether the series should look for the nearest point in both * dimensions or just the x-dimension when hovering the series. Defaults to * 'xy' for scatter series and 'x' for most other * series. If the data has duplicate x-values, it is recommended to set this * to 'xy' to allow hovering over all points. *

*

* Applies only to series types using nearest neighbor search (not direct * hover) for tooltip. *

*/ public void setFindNearestPointBy(Dimension findNearestPointBy) { this.findNearestPointBy = findNearestPointBy; } /** * @see #setGetExtremesFromAll(Boolean) */ public Boolean getGetExtremesFromAll() { return getExtremesFromAll; } /** * Whether to use the Y extremes of the total chart width or only the zoomed * area when zooming in on parts of the X axis. By default, the Y axis * adjusts to the min and max of the visible data. Cartesian series only. *

* Defaults to: false */ public void setGetExtremesFromAll(Boolean getExtremesFromAll) { this.getExtremesFromAll = getExtremesFromAll; } /** * @see #setHeight(String) */ public String getHeight() { return height; } /** * The height of the funnel or pyramid. If it is a number it defines the * pixel height, if it is a percentage string it is the percentage of the * plot area height. */ public void setHeight(String height) { this.height = height; } /** * @see #setIgnoreHiddenPoint(Boolean) */ public Boolean getIgnoreHiddenPoint() { return ignoreHiddenPoint; } /** * This option tells whether the series shall be redrawn as if the hidden * point were null. *

* Defaults to true. */ public void setIgnoreHiddenPoint(Boolean ignoreHiddenPoint) { this.ignoreHiddenPoint = ignoreHiddenPoint; } /** * @see #setKeys(String...) */ public String[] getKeys() { if (keys == null) { return new String[] {}; } String[] arr = new String[keys.size()]; keys.toArray(arr); return arr; } /** * An array specifying which option maps to which key in the data point * array. This makes it convenient to work with unstructured data arrays * from different sources. */ public void setKeys(String... keys) { this.keys = new ArrayList(Arrays.asList(keys)); } /** * Adds key to the keys array * * @param key * to add * @see #setKeys(String...) */ public void addKey(String key) { if (this.keys == null) { this.keys = new ArrayList(); } this.keys.add(key); } /** * Removes first occurrence of key in keys array * * @param key * to remove * @see #setKeys(String...) */ public void removeKey(String key) { this.keys.remove(key); } /** * @see #setLinkedTo(String) */ public String getLinkedTo() { return linkedTo; } /** * The id of another series to link to. * Additionally, the value can be ":previous" to link to the previous * series. When two series are linked, only the first one appears in the * legend. Toggling the visibility of this also toggles the linked series. */ public void setLinkedTo(String linkedTo) { this.linkedTo = linkedTo; } /** * @see #setMinSize(Number) */ public Number getMinSize() { return minSize; } /** * The minimum size for a pie in response to auto margins. The pie will try * to shrink to make room for data labels in side the plot area, but only to * this size. *

* Defaults to: 80 */ public void setMinSize(Number minSize) { this.minSize = minSize; } /** * @see #setOpacity(Number) */ public Number getOpacity() { return opacity; } /** * Opacity of a series parts: line, fill (e.g. area) and dataLabels. *

* Defaults to 1. */ public void setOpacity(Number opacity) { this.opacity = opacity; } /** * @see #setNeckHeight(String) */ public String getNeckHeight() { return neckHeight; } /** * The height of the neck, the lower part of the funnel. A number defines * pixel width, a percentage string defines a percentage of the plot area * height. *

* Defaults to: 25% */ public void setNeckHeight(String neckHeight) { this.neckHeight = neckHeight; } /** * @see #setNeckWidth(String) */ public String getNeckWidth() { return neckWidth; } /** * The width of the neck, the lower part of the funnel. A number defines * pixel width, a percentage string defines a percentage of the plot area * width. *

* Defaults to: 30% */ public void setNeckWidth(String neckWidth) { this.neckWidth = neckWidth; } public String getPointDescriptionFormatter() { return _fn_pointDescriptionFormatter; } public void setPointDescriptionFormatter( String _fn_pointDescriptionFormatter) { this._fn_pointDescriptionFormatter = _fn_pointDescriptionFormatter; } /** * @see #setReversed(Boolean) */ public Boolean getReversed() { return reversed; } /** * A reversed funnel has the widest area down. A reversed funnel with no * neck width and neck height is a pyramid. *

* Defaults to: false */ public void setReversed(Boolean reversed) { this.reversed = reversed; } /** * @see #setSelected(Boolean) */ public Boolean getSelected() { return selected; } /** * Whether to select the series initially. If showCheckbox is * true, the checkbox next to the series name will be checked for a selected * series. *

* Defaults to: false */ public void setSelected(Boolean selected) { this.selected = selected; } /** * @see #setShadow(Boolean) */ public Boolean getShadow() { return shadow; } /** * Whether to apply a drop shadow to the graph line. Since 2.3 the shadow * can be an object configuration containing color, * offsetX, offsetY, opacity and * width. *

* Defaults to: false */ public void setShadow(Boolean shadow) { this.shadow = shadow; } /** * @see #setShowInLegend(Boolean) */ public Boolean getShowInLegend() { return showInLegend; } /** * Whether to display this particular series or series type in the legend. * Since 2.1, pies are not shown in the legend by default. *

* Defaults to: false */ public void setShowInLegend(Boolean showInLegend) { this.showInLegend = showInLegend; } /** * @see #setSkipKeyboardNavigation(Boolean) */ public Boolean getSkipKeyboardNavigation() { return skipKeyboardNavigation; } /** * If set to True, the accessibility module will skip past the * points in this series for keyboard navigation. */ public void setSkipKeyboardNavigation(Boolean skipKeyboardNavigation) { this.skipKeyboardNavigation = skipKeyboardNavigation; } /** * @see #setSlicedOffset(Number) */ public Number getSlicedOffset() { return slicedOffset; } /** * If a point is sliced, moved out from the center, how many pixels should * it be moved?. *

* Defaults to: 10 */ public void setSlicedOffset(Number slicedOffset) { this.slicedOffset = slicedOffset; } /** * @see #setStates(States) */ public States getStates() { if (states == null) { states = new States(); } return states; } /** * A wrapper object for all the series options in specific states. */ public void setStates(States states) { this.states = states; } /** * @see #setStickyTracking(Boolean) */ public Boolean getStickyTracking() { return stickyTracking; } /** * Sticky tracking of mouse events. When true, the mouseOut * event on a series isn't triggered until the mouse moves over another * series, or out of the plot area. When false, the mouseOut * event on a series is triggered when the mouse leaves the area around the * series' graph or markers. This also implies the tooltip. When * stickyTracking is false and tooltip.shared is * false, the tooltip will be hidden when moving the mouse between series. *

* Defaults to: false */ public void setStickyTracking(Boolean stickyTracking) { this.stickyTracking = stickyTracking; } /** * @see #setTooltip(SeriesTooltip) */ public SeriesTooltip getTooltip() { if (tooltip == null) { tooltip = new SeriesTooltip(); } return tooltip; } /** * A configuration object for the tooltip rendering of each single series. * Properties are inherited from tooltip, but only * the following properties can be defined on a series level. */ public void setTooltip(SeriesTooltip tooltip) { this.tooltip = tooltip; } /** * @see #setVisible(Boolean) */ public Boolean getVisible() { return visible; } /** * Set the initial visibility of the series. *

* Defaults to: true */ public void setVisible(Boolean visible) { this.visible = visible; } /** * @see #setWidth(String) */ public String getWidth() { return width; } /** * The width of the funnel compared to the width of the plot area, or the * pixel width if it is a number. *

* Defaults to: 90% */ public void setWidth(String width) { this.width = width; } /** * @see #setZoneAxis(ZoneAxis) */ public ZoneAxis getZoneAxis() { return zoneAxis; } /** * Defines the Axis on which the zones are applied. *

* Defaults to: y */ public void setZoneAxis(ZoneAxis zoneAxis) { this.zoneAxis = zoneAxis; } /** * @see #setZones(Zones...) */ public Zones[] getZones() { if (zones == null) { return new Zones[] {}; } Zones[] arr = new Zones[zones.size()]; zones.toArray(arr); return arr; } /** *

* An array defining zones within a series. Zones can be applied to the X * axis, Y axis or Z axis for bubbles, according to the * zoneAxis option. *

* *

* In styled mode, the color zones are styled with the * .highcharts-zone-{n} class, or custom classed from the * className option (view live demo). *

*/ public void setZones(Zones... zones) { this.zones = new ArrayList(Arrays.asList(zones)); } /** * Adds zone to the zones array * * @param zone * to add * @see #setZones(Zones...) */ public void addZone(Zones zone) { if (this.zones == null) { this.zones = new ArrayList(); } this.zones.add(zone); } /** * Removes first occurrence of zone in zones array * * @param zone * to remove * @see #setZones(Zones...) */ public void removeZone(Zones zone) { this.zones.remove(zone); } public void setCenter(String x, String y) { this.center = new String[] { x, y }; } public String[] getCenter() { return this.center; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy