Source code for shyft.dashboard.examples.slider_selector

from shyft.dashboard.widgets.sliders import SliderSelect, RangeSliderSelect, SliderData, RangeSliderData
from shyft.dashboard.base.ports import States, Receiver, Sender, connect_ports
from shyft.dashboard.base.app import AppBase
from typing import Tuple, Optional, Dict, Any
from bokeh.layouts import column
from shyft.dashboard.widgets.logger_box import LoggerBox

[docs] class SliderSelectorExample(AppBase):
[docs] def __init__(self, thread_pool, app_kwargs: Optional[Dict[str, Any]]=None): super().__init__(thread_pool=thread_pool)
@property def name(self) -> str: """ This property returns the name of the app """ return "slider_selector_example"
[docs] def get_layout(self, doc: "bokeh.document.Document", logger: Optional[LoggerBox]=None) -> "bokeh.layouts.LayoutDOM": """ This function returns the full page layout for the app """ doc.title = self.name def _receive_parameters1(tala: int): if tala: print(f"Slider: {tala}") if logger: logger.info(f"Slider: {tala}") def _receive_parameters2(tala: Tuple[float, float]): if tala: print(f"RangeSlider: {tala}") if logger: logger.info(f"Slider: {tala}") receive_parameters1 = Receiver(parent='self', name='prent', func=_receive_parameters1, signal_type=int) receive_parameters2 = Receiver(parent='self', name='prent', func=_receive_parameters2, signal_type=Tuple[float, float]) slider_view = SliderSelect(width=300, title="Buffer distance (km)", start=0, step=1, end=50, logger=logger) range_slider_view = RangeSliderSelect(width=300, title="Elevation (m)", start=0, step=1, end=2500, logger=logger) send_parameters1 = Sender(parent='parent', name='parameters', signal_type=SliderData) send_parameters2 = Sender(parent='parent', name='parameters', signal_type=RangeSliderData) connect_ports(send_parameters1, slider_view.receive_param) connect_ports(send_parameters2, range_slider_view.receive_param) connect_ports(slider_view.send_slider_value, receive_parameters1) connect_ports(range_slider_view.send_slider_value, receive_parameters2) gogn1 = SliderData(start=0, end=50, step=1, value=5) gogn2 = RangeSliderData(start=0, end=2500, step=1, range=(100, 200)) send_parameters1(gogn1) send_parameters2(gogn2) return column(slider_view.layout_components['widgets'][0], range_slider_view.layout_components['widgets'][0], width=300)