from typing import Optional
from validator_collection import validators
from highcharts_core.global_options.language import Language as LanguageCore
from highcharts_stock.decorators import class_sensitive
from highcharts_stock.global_options.language.stock_tools import StockToolsLanguageOptions
class LanguageBase(LanguageCore):
"""Collection of configuration settings for UI strings that can be adapted for
display in specific languages.
.. note::
The :class:`Language` object is a global setting in Highcharts and it *cannot* be
set on each chart initialization. Instead, it has to be set using (in JavaScript)
``Highcharts.setOptions(...)`` before any chart is initialized.
"""
def __init__(self, **kwargs):
self._range_selector_from = None
self._range_selector_to = None
self._range_selector_zoom = None
self.range_selector_from = kwargs.get('range_selector_from', None)
self.range_selector_to = kwargs.get('range_selector_to', None)
self.range_selector_zoom = kwargs.get('range_selector_zoom', None)
super().__init__(**kwargs)
@property
def range_selector_from(self) -> Optional[str]:
"""The text for the label for the "from" input box in the :term:`range selector`.
Defaults to ``''`` (an empty string).
.. note::
By default, this string is empty as the label is not rendered by default.
:rtype: :class:`str <python:str>` or :obj:`None <python:None>`
"""
return self._range_selector_from
@range_selector_from.setter
def range_selector_from(self, value):
self._range_selector_from = validators.string(value, allow_empty = True)
@property
def range_selector_to(self) -> Optional[str]:
"""The text for the label for the "to" input box in the :term:`range selector`.
Defaults to ``'→'``.
:rtype: :class:`str <python:str>` or :obj:`None <python:None>`
"""
return self._range_selector_to
@range_selector_to.setter
def range_selector_to(self, value):
self._range_selector_to = validators.string(value, allow_empty = True)
@property
def range_selector_zoom(self) -> Optional[str]:
"""The text for the label :term:`range selector` buttons. Defaults to ``'Zoom'``.
:rtype: :class:`str <python:str>` or :obj:`None <python:None>`
"""
return self._range_selector_zoom
@range_selector_zoom.setter
def range_selector_zoom(self, value):
self._range_selector_zoom = validators.string(value, allow_empty = True)
@classmethod
def _get_kwargs_from_dict(cls, as_dict):
kwargs = {
'accessibility': as_dict.get('accessibility', None),
'context_button_title': as_dict.get('contextButtonTitle', None),
'decimal_point': as_dict.get('decimalPoint', None),
'download_csv': as_dict.get('downloadCSV', None),
'download_jpeg': as_dict.get('downloadJPEG', None),
'download_pdf': as_dict.get('downloadPDF', None),
'download_png': as_dict.get('downloadPNG', None),
'download_svg': as_dict.get('downloadSVG', None),
'download_xls': as_dict.get('downloadXLS', None),
'drillup_text': as_dict.get('drillUpText', None),
'exit_fullscreen': as_dict.get('exitFullscreen', None),
'export_data': as_dict.get('exportData', None),
'hide_data': as_dict.get('hideData', None),
'invalid_date': as_dict.get('invalidDate', None),
'loading': as_dict.get('loading', None),
'main_breadcrumb': as_dict.get('mainBreadcrumb', None),
'months': as_dict.get('months', None),
'navigation': as_dict.get('navigation', None),
'no_data': as_dict.get('noData', None),
'numeric_symbol_magnitude': as_dict.get('numericSymbolMagnitude', None),
'numeric_symbols': as_dict.get('numericSymbols', None),
'print_chart': as_dict.get('printChart', None),
'reset_zoom': as_dict.get('resetZoom', None),
'reset_zoom_title': as_dict.get('resetZoomTitle', None),
'short_months': as_dict.get('shortMonths', None),
'short_weekdays': as_dict.get('shortWeekdays', None),
'thousands_separator': as_dict.get('thousandsSep', None),
'view_data': as_dict.get('viewData', None),
'view_fullscreen': as_dict.get('viewFullscreen', None),
'weekdays': as_dict.get('weekdays', None),
'range_selector_from': as_dict.get('rangeSelectorFrom', None),
'range_selector_to': as_dict.get('rangeSelectorTo', None),
'range_selector_zoom': as_dict.get('rangeSelectorZoom', None),
}
return kwargs
def _to_untrimmed_dict(self, in_cls = None) -> dict:
untrimmed = {
'rangeSelectorFrom': self.range_selector_from,
'rangeSelectorTo': self.range_selector_to,
'rangeSelectorZoom': self.range_selector_zoom,
}
parent_as_dict = super()._to_untrimmed_dict(in_cls = in_cls)
for key in parent_as_dict:
untrimmed[key] = parent_as_dict[key]
return untrimmed
[docs]class Language(LanguageBase):
"""Collection of configuration settings for UI strings that can be adapted for
display in specific languages.
.. note::
The :class:`Language` object is a global setting in Highcharts and it *cannot* be
set on each chart initialization. Instead, it has to be set using (in JavaScript)
``Highcharts.setOptions(...)`` before any chart is initialized.
"""
def __init__(self, **kwargs):
self._range_selector_from = None
self._range_selector_to = None
self._range_selector_zoom = None
self._stock_tools = None
self.range_selector_from = kwargs.get('range_selector_from', None)
self.range_selector_to = kwargs.get('range_selector_to', None)
self.range_selector_zoom = kwargs.get('range_selector_zoom', None)
self.stock_tools = kwargs.get('stock_tools', None)
super().__init__(**kwargs)
@property
def stock_tools(self) -> Optional[StockToolsLanguageOptions]:
"""Settings to configure the :term:`Stock Tools GUI` titles (hints) in the chart.
:rtype: :class:`StockToolLanguageOptions <highcharts_stock.global_options.language.stock_tools.StockToolsLanguageOptions>`
or :obj:`None <python:None>`
"""
return self._stock_tools
@stock_tools.setter
@class_sensitive(StockToolsLanguageOptions)
def stock_tools(self, value):
self._stock_tools = value
@classmethod
def _get_kwargs_from_dict(cls, as_dict):
kwargs = {
'accessibility': as_dict.get('accessibility', None),
'context_button_title': as_dict.get('contextButtonTitle', None),
'decimal_point': as_dict.get('decimalPoint', None),
'download_csv': as_dict.get('downloadCSV', None),
'download_jpeg': as_dict.get('downloadJPEG', None),
'download_pdf': as_dict.get('downloadPDF', None),
'download_png': as_dict.get('downloadPNG', None),
'download_svg': as_dict.get('downloadSVG', None),
'download_xls': as_dict.get('downloadXLS', None),
'drillup_text': as_dict.get('drillUpText', None),
'exit_fullscreen': as_dict.get('exitFullscreen', None),
'export_data': as_dict.get('exportData', None),
'hide_data': as_dict.get('hideData', None),
'invalid_date': as_dict.get('invalidDate', None),
'loading': as_dict.get('loading', None),
'main_breadcrumb': as_dict.get('mainBreadcrumb', None),
'months': as_dict.get('months', None),
'navigation': as_dict.get('navigation', None),
'no_data': as_dict.get('noData', None),
'numeric_symbol_magnitude': as_dict.get('numericSymbolMagnitude', None),
'numeric_symbols': as_dict.get('numericSymbols', None),
'print_chart': as_dict.get('printChart', None),
'reset_zoom': as_dict.get('resetZoom', None),
'reset_zoom_title': as_dict.get('resetZoomTitle', None),
'short_months': as_dict.get('shortMonths', None),
'short_weekdays': as_dict.get('shortWeekdays', None),
'thousands_separator': as_dict.get('thousandsSep', None),
'view_data': as_dict.get('viewData', None),
'view_fullscreen': as_dict.get('viewFullscreen', None),
'weekdays': as_dict.get('weekdays', None),
'range_selector_from': as_dict.get('rangeSelectorFrom', None),
'range_selector_to': as_dict.get('rangeSelectorTo', None),
'range_selector_zoom': as_dict.get('rangeSelectorZoom', None),
'stock_tools': as_dict.get('stock_tools', None),
}
return kwargs
def _to_untrimmed_dict(self, in_cls = None) -> dict:
untrimmed = {
'stockTools': self.stock_tools,
}
parent_as_dict = super()._to_untrimmed_dict(in_cls = in_cls)
for key in parent_as_dict:
untrimmed[key] = parent_as_dict[key]
return untrimmed