Source code for highcharts_core.utility_classes.zones

from typing import Optional
from decimal import Decimal

from validator_collection import validators

from highcharts_core import constants, errors
from highcharts_core.decorators import class_sensitive
from highcharts_core.metaclasses import HighchartsMeta
from highcharts_core.utility_classes.gradients import Gradient
from highcharts_core.utility_classes.patterns import Pattern
from highcharts_core.utility_classes.markers import Marker


[docs]class Zone(HighchartsMeta): """A zone defined within a series. Zones can be applied to the X axis, Y axis or Z axis for bubbles, according to the :meth:`zone_axis <AreaOptions.zone_axis>` option. """ def __init__(self, **kwargs): self._class_name = None self._color = None self._dash_style = None self._fill_color = None self._value = None self.class_name = kwargs.get('class_name', None) self.color = kwargs.get('color', None) self.dash_style = kwargs.get('dash_style', None) self.fill_color = kwargs.get('fill_color', None) self.value = kwargs.get('value', None) @property def class_name(self) -> Optional[str]: """A custom class name for the zone. .. warning:: Supported in :term:`styled mode` only. :rtype: :class:`str <python:str>` or :obj:`None <python:None>` """ return self._class_name @class_name.setter def class_name(self, value): self._class_name = validators.string(value, allow_empty = True) @property def color(self) -> Optional[str | Gradient | Pattern]: """Defines the color of the series. Defaults to :obj:`None <python:None>`. :rtype: :class:`str <python:str>`, :class:`Gradient`, :class:`Pattern``, or :obj:`None <python:None>` """ return self._color @color.setter def color(self, value): from highcharts_core import utility_functions self._color = utility_functions.validate_color(value) @property def dash_style(self) -> Optional[str]: """Name of the dash style to use for the graph, or for some series types the outline of each shape. Defaults to :obj:`None <python:None>`. Accepts one of the following values: * 'Dash', * 'DashDot', * 'Dot', * 'LongDash', * 'LongDashDot', * 'LongDashDotDot', * 'ShortDash', * 'ShortDashDot', * 'ShortDashDotDot', * 'ShortDot', * 'Solid' :rtype: :class:`str <python:str>` or :obj:`None <python:None>` """ return self._dash_style @dash_style.setter def dash_style(self, value): if not value: self._dash_style = None else: value = validators.string(value) if value not in constants.SUPPORTED_DASH_STYLE_VALUES: raise errors.HighchartsValueError(f'dash_style expects a recognized value' f', but received: {value}') self._dash_style = value @property def fill_color(self) -> Optional[str | Gradient | Pattern]: """Fill color or gradient for the area. :rtype: :obj:`None <python:None>`, :class:`Gradient`, :class:`Pattern` """ return self._fill_color @fill_color.setter def fill_color(self, value): from highcharts_core import utility_functions self._fill_color = utility_functions.validate_color(value) @property def value(self) -> Optional[int | float | Decimal]: """The value up to where the zone extends. If :obj:`None <python:None>`, the zone stretches to the last value in the series. Defaults to :obj:`None <python:None>`. :rtype: numeric or :obj:`None <python:None>` """ return self._value @value.setter def value(self, value_): self._value = validators.numeric(value_, allow_empty = True) @classmethod def _get_kwargs_from_dict(cls, as_dict): kwargs = { 'class_name': as_dict.get('className', None), 'color': as_dict.get('color', None), 'dash_style': as_dict.get('dashStyle', None), 'fill_color': as_dict.get('fillColor', None), 'value': as_dict.get('value', None) } return kwargs def _to_untrimmed_dict(self, in_cls = None) -> dict: untrimmed = { 'className': self.class_name, 'color': self.color, 'dashStyle': self.dash_style, 'fillColor': self.fill_color, 'value': self.value } return untrimmed
[docs]class ClusterZone(HighchartsMeta): """A zone defined for a group of Clusters.""" def __init__(self, **kwargs): self._class_name = None self._from = None self._marker = None self._to = None self.class_name = kwargs.get('class_name', None) self.from_ = kwargs.get('from_', None) self.marker = kwargs.get('marker', None) self.to = kwargs.get('to', None) @property def class_name(self) -> Optional[str]: """A custom class name for the zone. .. warning:: Supported in :term:`styled mode` only. :rtype: :class:`str <python:str>` or :obj:`None <python:None>` """ return self._class_name @class_name.setter def class_name(self, value): self._class_name = validators.string(value, allow_empty = True) @property def from_(self) -> Optional[int | float | Decimal]: """The value where the zone starts. :rtype: numeric or :obj:`None <python:None>` """ return self._from @from_.setter def from_(self, value): self._from = validators.numeric(value, allow_empty = True) @property def marker(self) -> Optional[Marker]: """Settings for the cluster marker belonging to the zone. :rtype: :class:`Marker` or :obj:`None <python:None>` """ return self._marker @marker.setter @class_sensitive(Marker) def marker(self, value): self._marker = value @property def to(self) -> Optional[int | float | Decimal]: """The value where the zone ends. :rtype: numeric or :obj:`None <python:None>` """ return self._to @to.setter def to(self, value): self._to = validators.numeric(value, allow_empty = True) @classmethod def _get_kwargs_from_dict(cls, as_dict): kwargs = { 'class_name': as_dict.get('className', None), 'from_': as_dict.get('from', None), 'marker': as_dict.get('marker', None), 'to': as_dict.get('to', None) } return kwargs def _to_untrimmed_dict(self, in_cls = None) -> dict: untrimmed = { 'className': self.class_name, 'from': self.from_, 'marker': self.marker, 'to': self.to } return untrimmed