from dash import html 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 """ ul_classes = "ml-2" if with_tables: return html.Ul( [ html.Li( children = [ html.Span( schema, className="text-lg text-bold" ), html_list_table(stage, schema) ], className="" ) for schema in stage.schemas() ], className=ul_classes ) return html.Ul( [ html.Li( schema, className="text-lg text-bold" ) for schema in stage.schemas() ], className=ul_classes ) 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) ], className="ml-4" ) layout = html.Div([ html.Div(children=[ html.Ul( children=[ html.Li( children=[ html.Span( stagename, className="text-2xl text-center p-2 bg-amber-100 rounded shadow" ), html_list_schema(stage) ], className="flex-1 bg-gray-100 rounded flex flex-col shadow" ) for stagename, stage in stages.items() ], className="flex flex-row space-x-2" ) ], className="w-full mt-4 px-2" ), ])