File size: 2,365 Bytes
615e9f1
 
 
 
ebef706
813fdb6
00a4c90
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a37d48b
00a4c90
a37d48b
ebef706
6bc613e
ebef706
00a4c90
 
a37d48b
 
 
 
 
 
 
6bc613e
 
a37d48b
6bc613e
 
 
a37d48b
d6aec26
 
 
 
 
00a4c90
cc5f9e3
a37d48b
 
00a4c90
a37d48b
 
 
 
 
 
 
 
 
 
00a4c90
 
615e9f1
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import streamlit as st
from torchvision.transforms import functional as F
import gc
import numpy as np

from modules.streamlit_utils import *


def main():
    is_mobile, screen_width = configure_page()
    display_banner(is_mobile)
    display_title(is_mobile)
    display_sidebar()
    initialize_session_state()

    cropped_image = None

    img_selected = load_example_image()
    uploaded_file = load_user_image(img_selected, is_mobile)
    if uploaded_file is not None:
        cropped_image = display_image(uploaded_file, screen_width, is_mobile)

    if uploaded_file is not None:
        get_score_threshold(is_mobile)
    
        if st.button("πŸš€ Launch Prediction"):
            st.session_state.image = launch_prediction(cropped_image, st.session_state.score_threshold, is_mobile, screen_width)
            st.session_state.original_prediction = st.session_state.prediction.copy()
            st.rerun()

    # Create placeholders for all sections
    prediction_result_placeholder = st.empty()
    additional_options_placeholder = st.empty()
    modeler_placeholder = st.empty()


    if 'prediction' in st.session_state and uploaded_file:
        if st.session_state.image != cropped_image:
            print('Image has changed')
            # Delete the prediction
            del st.session_state.prediction
            return

        with prediction_result_placeholder.container():
            if is_mobile:
                display_options(st.session_state.crop_image, st.session_state.score_threshold, is_mobile, int(5/6*screen_width))
            else:
                with st.expander("Show result of prediction"):
                    display_options(st.session_state.crop_image, st.session_state.score_threshold, is_mobile, int(5/6*screen_width))

        if not is_mobile:
            with additional_options_placeholder.container():
                modify_results()

        with modeler_placeholder.container():
            modeler_options(is_mobile)
            display_bpmn_modeler(is_mobile, screen_width)
    else:
        prediction_result_placeholder.empty()
        additional_options_placeholder.empty()
        modeler_placeholder.empty()
        # Create a lot of space for scrolling
        for _ in range(50):
            st.text("")

    gc.collect()

if __name__ == "__main__":
    print('Starting the app...')
    main()