restructured app

This commit is contained in:
Brian Bjarke Jensen
2024-02-24 00:04:34 +01:00
parent 20de0376b6
commit 14be5cfffc
+58 -21
View File
@@ -1,28 +1,65 @@
from dash import Dash, html, Input, Output, State, page_container, page_registry
from dash import Dash, Input, Output
import dash_bootstrap_components as dbc
import dash_mantine_components as dmc
from .header import generate_header
from .body import generate_body
import logging
from .layout import app_layout
from src.database import (
connect,
get_visual_communication,
NoDocumentFoundException
)
# setup app
app = Dash(__name__, external_stylesheets=[dbc.themes.BOOTSTRAP])
app.title = "visual critical discourse analysis".title()
app.layout = app_layout
server = app.server
app.layout = dmc.MantineProvider(
theme={
'fontFamily': '"Inter", sans-serif',
"components": {
"NavLink":{'styles':{'label':{'color':'#c2c7d0'}}}
},
},
children=[
dmc.Container(
[
generate_header(),
generate_body(),
], fluid=True
),
],
# connect to database
collection, db, client = connect()
# define callbacks
@app.callback(
Output("alert-element", "is_open"),
Output("alert-element", "children"),
Input("alert-message", "data")
)
def show_alert(
msg: str | None
):
if msg is None:
return False, ""
return True, msg
@app.callback(
Output("alert-message", "data"),
Output("visual-communication-name", "data"),
Output("image-container", "src"),
Input("next-button", "n_clicks"),
prevent_initial_call=True
)
def load_unannotated_visual_communication_data(
n_clicks: int
):
global collection
try:
vis_com = get_visual_communication(
collection=collection,
with_annotation=False
)
except NoDocumentFoundException:
return (
"Did not find any unannotated data in database",
None,
""
)
# prepare return values
alert_message = None
vis_com_name = vis_com.name
img_src = f"data:image/png;base64, {vis_com.webencoded_image()}"
logging.info("updated visual communication")
return (
alert_message,
vis_com_name,
img_src
)