Source code for shyft.dashboard.apps.water_route_app.water_route_app

from typing import Optional

from bokeh.models import Div

from bokeh.document import Document
from bokeh.layouts import LayoutDOM, column

from shyft.dashboard.apps.water_route_app.example_hps import get_example_hps

from shyft.dashboard.apps.water_route_app.simplified_water_route import SimplifiedWaterRouteGraph
from shyft.dashboard.util.find_free_port import find_free_port
from shyft.dashboard.widgets.logger_box import LoggerBox

from shyft.dashboard.base.app import AppBase, start_bokeh_apps
from shyft.dashboard.widgets.water_route_widget import WaterRouteWidget


[docs] class WaterRouteApp(AppBase):
[docs] def __init__(self, thread_pool, app_kwargs): super().__init__(thread_pool=thread_pool) self.logger = None
@property def name(self) -> str: """ This property returns the name of the app """ return "water_course_graph_example"
[docs] def get_layout(self, doc: Document, logger: Optional[LoggerBox] = None) -> LayoutDOM: doc.title = "Water course graph" # -------------------------------------------------------------------------------------------------------------- # Creating a simple water course # -------------------------------------------------------------------------------------------------------------- hps = get_example_hps() # -------------------------------------------------------------------------------------------------------------- # Using the custom water-route-graph-app to visualize the water course # -------------------------------------------------------------------------------------------------------------- water_route_graph = SimplifiedWaterRouteGraph() water_route_widget = WaterRouteWidget(water_route_graph=water_route_graph) water_route_widget.receive_selected_water_route([hps]) div = Div(text="Water course graph") layout = column(div, water_route_widget.layout) return layout
if __name__ == "__main__": start_bokeh_apps(apps=[WaterRouteApp], port=find_free_port())