plesna/dashboard/pages/home.py

69 lines
1.8 KiB
Python
Raw Normal View History

2024-07-27 13:55:20 +00:00
from dash import html
2024-07-27 15:39:09 +00:00
from ..datalake import stages
from ..libs.stage.stage import AbstractStage
def html_list_schema(stage:AbstractStage, with_tables=True):
""" Build html list of schema in stage """
2024-07-27 16:45:20 +00:00
ul_classes = "ml-2"
2024-07-27 15:39:09 +00:00
if with_tables:
return html.Ul(
[
html.Li(
children = [
2024-07-27 16:45:20 +00:00
html.Span(
schema,
className="text-lg text-bold"
),
2024-07-27 15:39:09 +00:00
html_list_table(stage, schema)
2024-07-27 16:45:20 +00:00
],
className=""
2024-07-27 15:39:09 +00:00
) for schema in stage.schemas()
2024-07-27 16:45:20 +00:00
],
className=ul_classes
2024-07-27 15:39:09 +00:00
)
return html.Ul(
[
2024-07-27 16:45:20 +00:00
html.Li(
schema,
className="text-lg text-bold"
) for schema in stage.schemas()
],
className=ul_classes
2024-07-27 15:39:09 +00:00
)
def html_list_table(stage:AbstractStage, schema:str):
""" Build html list of table in stage """
return html.Ul(
[
html.Li(table) for table in stage.tables(schema=schema)
2024-07-27 16:45:20 +00:00
],
className="ml-4"
2024-07-27 15:39:09 +00:00
)
2024-07-27 13:55:20 +00:00
layout = html.Div([
2024-07-27 15:39:09 +00:00
html.Div(children=[
html.Ul(
children=[
html.Li(
children=[
2024-07-27 16:45:20 +00:00
html.Span(
stagename,
className="text-2xl text-center p-2 bg-amber-100 rounded shadow"
),
2024-07-27 15:39:09 +00:00
html_list_schema(stage)
2024-07-27 16:45:20 +00:00
],
className="flex-1 bg-gray-100 rounded flex flex-col shadow"
2024-07-27 15:39:09 +00:00
) for stagename, stage in stages.items()
2024-07-27 16:45:20 +00:00
],
className="flex flex-row space-x-2"
2024-07-27 15:39:09 +00:00
)
2024-07-27 16:45:20 +00:00
],
className="w-full mt-4 px-2"
),
2024-07-27 13:55:20 +00:00
])