From 81acfdb5b68eb991a62f3da74bb3266db6a342ea Mon Sep 17 00:00:00 2001 From: Brian Bjarke Jensen Date: Wed, 28 Feb 2024 20:49:18 +0100 Subject: [PATCH 1/2] added progressbar --- src/web/layout/header.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/web/layout/header.py b/src/web/layout/header.py index e97c367..a4436f5 100644 --- a/src/web/layout/header.py +++ b/src/web/layout/header.py @@ -1,5 +1,6 @@ from __future__ import annotations +import dash_bootstrap_components as dbc import dash_mantine_components as dmc from dash import dcc from dash import html @@ -14,6 +15,17 @@ title_element = dmc.Center( ], ) +progress_bar_element = dbc.Progress( + id='progress-bar', + max=100, + value=0, + color='lime', + label='', + style={ + 'width': '400px', + }, +) + upload_button_element = dcc.Upload( children=[ dmc.Button( @@ -37,6 +49,7 @@ header_element = dmc.Header( dmc.Group( children=[ title_element, + progress_bar_element, upload_button_element, ], position='apart', From a29a21667643cca98cff47c881424efd12d220ea Mon Sep 17 00:00:00 2001 From: Brian Bjarke Jensen Date: Wed, 28 Feb 2024 21:12:04 +0100 Subject: [PATCH 2/2] added progressbar --- src/web/app.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/web/app.py b/src/web/app.py index 57b1cc9..4f2d4f9 100644 --- a/src/web/app.py +++ b/src/web/app.py @@ -17,6 +17,8 @@ from src.database import connect from src.database import get_visual_communication from src.database import ModelOutputs from src.database import NoDocumentFoundException +from src.database import total_annotated +from src.database import total_documents from src.database import upsert_annotations from src.database import upsert_visual_communication from src.database import VisualCommunication @@ -66,6 +68,27 @@ def show_success( return True, msg +@app.callback( + Output('progress-bar', 'value'), + Output('progress-bar', 'max'), + Output('progress-bar', 'label'), + Input('next-button', 'n_clicks'), + Input('upload-data', 'filename'), +) +def update_progress_bar( + n_clicks: int, + filename_list: list[str] | None, +): + logging.info('began updating progress bar') + global collection + # get values from database + num_total = total_documents(collection=collection) + num_handled = total_annotated(collection=collection) + limit = int(num_total/20) + label_str = f"{num_handled}/{num_total}" if num_handled >= limit else '' + return num_handled, num_total, label_str + + @app.callback( Output('success-message', 'data', allow_duplicate=True), Output('alert-message', 'data', allow_duplicate=True),