Source code for highcharts_core.utility_classes.animation

from typing import Optional

from validator_collection import validators

from highcharts_core.decorators import class_sensitive
from highcharts_core.metaclasses import HighchartsMeta
from highcharts_core.utility_classes.javascript_functions import CallbackFunction


[docs]class AnimationOptions(HighchartsMeta): """An animation configuration. .. note:: Animation configurations can also be defined as :class:`bool <python:bool>`, where ``False`` turns off animation and ``True`` defaults to a duration of 500ms and defer of 0ms. """ def __init__(self, **kwargs): self._complete = None self._defer = None self._duration = None self._easing = None self._step = None self.complete = kwargs.get('complete', None) self.defer = kwargs.get('defer', None) self.duration = kwargs.get('duration', None) self.easing = kwargs.get('easing', None) self.step = kwargs.get('step', None) @property def complete(self) -> Optional[CallbackFunction]: """A JavaScript callback function to execute when the animation finishes. :rtype: :class:`CallbackFunction` or :obj:`None <python:None>` """ return self._complete @complete.setter @class_sensitive(CallbackFunction) def complete(self, value): self._complete = value @property def defer(self) -> Optional[int]: """The number of milliseconds to defer the animation. Defaults to ``0``. :rtype: :class:`int <python:int>` or :obj:`None <python:None>` :raises ValueError: if set to a negative number """ return self._defer @defer.setter def defer(self, value): self._defer = validators.integer(value, allow_empty = True, minimum = 0, coerce_value = True) @property def duration(self) -> Optional[int]: """The animation duration, expressed in milliseconds. Defaults to ``500``. :rtype: :class:`int <python:int>` or :obj:`None <python:None>` :raises ValueError: if set to a negative number """ return self._duration @duration.setter def duration(self, value): self._duration = validators.integer(value, allow_empty = True, minimum = 0, coerce_value = True) @property def easing(self) -> Optional[str]: """The name of an easing function as defined on the JavaScript ``Math`` object. :rtype: :class:`str <python:str>` or :obj:`None <python:None>` """ return self._easing @easing.setter def easing(self, value): self._easing = validators.string(value, allow_empty = True) @property def step(self) -> Optional[CallbackFunction]: """A JavaScript callback function to execute on each step of each attribute or CSS property that is being animated. The first argument contains information about the animation and progress. :rtype: :class:`CallbackFunction` or :obj:`None <python:None>` """ return self._step @step.setter @class_sensitive(CallbackFunction) def step(self, value): self._step = value @classmethod def _get_kwargs_from_dict(cls, as_dict): kwargs = { 'complete': as_dict.get('complete', None), 'defer': as_dict.get('defer', None), 'duration': as_dict.get('duration', None), 'easing': as_dict.get('easing', None), 'step': as_dict.get('step', None) } return kwargs def _to_untrimmed_dict(self, in_cls = None) -> dict: untrimmed = { 'complete': self.complete, 'defer': self.defer, 'duration': self.duration, 'easing': self.easing, 'step': self.step } return untrimmed