Source code for shyft.dashboard.time_series.tools.ts_viewer_tools
from typing import Any, Optional
import abc
from bokeh.models import Button
from bokeh.layouts import column
from shyft.dashboard.time_series.tools.base import BaseTool
from shyft.dashboard.base import constants
from shyft.dashboard.base.app import LayoutComponents
from shyft.dashboard.base.ports import States
[docs]
class TsViewerTool(BaseTool):
"""
Base tool class for TsViewer
"""
[docs]
def __init__(self, logger=None):
"""
Parameters
----------
logger:
Optional logger
"""
super().__init__(logger=logger)
[docs]
class ResetTool(TsViewerTool):
"""
A tool to reset the views back to the default viewing
"""
[docs]
def __init__(self,
width: int=80,
height: int=30,
padding: Optional[int]=None,
sizing_mode: Optional[str]=None,
logger=None):
"""
Parameters
----------
logger:
Optional logger
width:
Optional width of the button
"""
super().__init__(logger=logger)
padding = padding or constants.widget_padding
sizing_mode = sizing_mode or constants.sizing_mode
self.reset_button = Button(label='Reset', width=width, height=height)
self.reset_button.on_click(self.on_click)
self.layout = column(self.reset_button, height=height, width=width+padding, sizing_mode=sizing_mode)
@property
def layout_components(self) -> LayoutComponents:
return {'widgets': [self.reset_button],
'figures': []}
[docs]
def on_click(self) -> None:
""" If Reset button is clicked"""
if self._state == States.DEACTIVE:
return
for parent in self.parents:
parent.plot()