File size: 3,273 Bytes
6823c27
ccb8025
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ecf632b
ccb8025
 
 
 
 
ecf632b
ccb8025
 
 
 
46720b8
dfa7448
 
 
ccb8025
 
 
 
 
 
 
 
 
 
 
 
 
e272c90
 
 
 
ccb8025
 
3616763
 
ccb8025
 
 
 
 
 
 
 
 
 
46720b8
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
import gradio as gr
from interface.rebalancing_interface import (
    input as rebalancing_inputs, 
    output as rebalancing_output,     
    update_output as rebalancing_update_output,
    examples as rebalancing_examples, 
    component_rows as rebalancing_component_rows
)
from interface.share_price_trend_interface import (
    input as share_price_trend_inputs, 
    output as share_price_trend_output, 
    update_output as share_price_trend_update_output,
    examples as share_price_trend_examples, 
    component_rows as share_price_trend_component_rows
)
from interface.dollar_cost_averaging_interface import (
    input as dollar_cost_averaging_inputs, 
    output as dollar_cost_averaging_output, 
    update_output as dollar_cost_averaging_update_output,
    examples as dollar_cost_averaging_examples,
    component_rows as dollar_cost_averaging_component_rows
)
from interface.retirement_planning_interface import (
    input as retirement_planning_inputs, 
    output as retirement_planning_output,
    update_output as retirement_update_output,
    examples as retirement_planning_examples,  
    component_rows as retirement_planning_component_rows,    
)
from interface.about_interface import render_about_tab
from modules.utils import create_tab

tabs_configuration = [
    ("πŸš€ Re-Balancing Calculator", rebalancing_inputs, rebalancing_output, rebalancing_update_output, rebalancing_examples, rebalancing_component_rows),
    ("πŸ“ˆ Share Price Trend", share_price_trend_inputs, share_price_trend_output, share_price_trend_update_output, share_price_trend_examples, share_price_trend_component_rows),
    ("πŸ“‰ Dollar Cost Averaging Calculator", dollar_cost_averaging_inputs, dollar_cost_averaging_output, dollar_cost_averaging_update_output, dollar_cost_averaging_examples, dollar_cost_averaging_component_rows),
    ("🎯 Retirement Planning", retirement_planning_inputs, retirement_planning_output, retirement_update_output, retirement_planning_examples, retirement_planning_component_rows),
]

def initial_load(*args):
    idx = 0
    rebalancing_results = rebalancing_update_output(*args[idx:idx+len(rebalancing_inputs)])
    idx += len(rebalancing_inputs)
    share_price_trend_results = share_price_trend_update_output(*args[idx:idx+len(share_price_trend_inputs)])
    idx += len(share_price_trend_inputs)
    dollar_cost_averaging_results = dollar_cost_averaging_update_output(*args[idx:idx+len(dollar_cost_averaging_inputs)])
    idx += len(dollar_cost_averaging_inputs)
    retirement_results = retirement_update_output(*args[idx:])
    
    return (rebalancing_results, share_price_trend_results, dollar_cost_averaging_results, retirement_results)

with gr.Blocks(css='style.css') as demo:
    with gr.Column(elem_id="col-container"):
        with gr.Tabs():
            for tab in tabs_configuration:
                create_tab(*tab)
            render_about_tab()

    demo.load(
        initial_load, 
        inputs=rebalancing_inputs + share_price_trend_inputs + dollar_cost_averaging_inputs + retirement_planning_inputs,
        outputs=[
            rebalancing_output,
            share_price_trend_output,
            dollar_cost_averaging_output,
            retirement_planning_output
        ]
    )
demo.launch(share=True)