Source code for highcharts_gantt.options.series.data.connect

from typing import Optional

from validator_collection import validators

from highcharts_gantt.metaclasses import HighchartsMeta
from highcharts_gantt.options.plot_options.connectors import ConnectorOptions


[docs]class DataConnection(ConnectorOptions): """Configuration of the connection between two data points.""" def __init__(self, **kwargs): self._to = None self._type = None self.to = kwargs.get('to', None) self.type = kwargs.get('type', None) super().__init__(**kwargs) @property def to(self) -> Optional[str]: """The ID of the data point to connect to. Defaults to :obj:`None <python:None>` :rtype: :class:`str <python:str>` or :obj:`None <python:None>` """ return self._to @to.setter def to(self, value): self._to = validators.string(value, allow_empty = True) @property def type(self) -> Optional[str]: """Determines the pathfinder algorithm to use to find a connection between the data points. By default, accepts the following values: * ``'straight'`` which draws a straight line between the connecting points. Does *not* avoid other data points when drawing. * ``'simpleConnect'`` which draws a path between the two points using right angles only. Takes only the starting/ending points into account, and will *not* avoid other points. * ``'fastAvoid'`` which draws a path between the two points using right angles only. Will attempt to avoid other data points, but it priorities performance over accuracy. Best to use for less-dense datasets. .. note:: It is possible to define your own custom pathfinder algorithm by using the :meth:`chart.add_pathfinder_algorithm() <highcharts_gantt.chart.add_pathfinder_algorithm>` method. .. warning:: This method does not validate that the value supplied matches a defined algorithm name. Defaults to :obj:`None <python:None>`, which applies ``'straight'`` for most series types and ``'simpleConnect'`` for :class:`GanttSeries <highcharts_gantt.options.series.gantt.GanttSeries>`. :rtype: :class:`str <python:str>` or :obj:`None <python:None>` """ return self._type @type.setter def type(self, value): self._type = validators.variable_name(value, allow_empty = True) @classmethod def _get_kwargs_from_dict(cls, as_dict): kwargs = { 'dash_style': as_dict.get('dashStyle', None), 'end_marker': as_dict.get('endMarker', None), 'line_color': as_dict.get('lineColor', None), 'line_width': as_dict.get('lineWidth', None), 'marker': as_dict.get('marker', None), 'start_marker': as_dict.get('startMarker', None), 'to': as_dict.get('to', None), 'type': as_dict.get('type', None), } return kwargs def _to_untrimmed_dict(self, in_cls = None) -> dict: untrimmed = { 'to': self.to, 'type': self.type, } parent_as_dict = super()._to_untrimmed_dict(in_cls = in_cls) or {} for key in parent_as_dict: untrimmed[key] = parent_as_dict[key] return untrimmed