import gradio as gr from src.arguments import init_args from src.GradioApp import GradioApp app = GradioApp() demo = gr.Blocks(**init_args.main_block) with demo: with gr.Tabs() as tabs: # =============== # # Upload Data Tab # # =============== # with gr.TabItem('Upload Data', id=0): # Data uploader with gr.Row(): with gr.Column(): data_requirements = gr.Markdown( **init_args.data_requirements) with gr.Row(): data_example_btn = gr.Button( **init_args.data_example_btn) data_example_b_btn = gr.Button( **init_args.data_example_b_btn) data_uploader = gr.File( **init_args.data_uploader) # Data Preview data_table = gr.Dataframe( **init_args.data_table) # Data visualization with gr.Column(**init_args.data_viz_col) as data_viz_col: data_viz_header = gr.Markdown( '## Visualization') sku_plot_selector = gr.Dropdown( **init_args.sku_plot_selector) data_viz_plot = gr.Plot( **init_args.data_viz_plot) demand_fcst_btn = gr.Button( **init_args.demand_fcst_btn) # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # # Upload Data Tab Event Listeners # # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # data_example_btn.click( app.data_example_btn__click, [], [data_table]) data_example_b_btn.click( app.data_example_b_btn__click, [], [data_table]) data_uploader.upload( app.data_uploader__upload, [data_uploader], [data_table]) sku_plot_selector.change( app.sku_plot_selector__change, [sku_plot_selector], [data_viz_plot]) # with gr.TabItem('Data Analytics', id=1): # pass # ====================== # # Demand Forecasting Tab # # ====================== # with gr.TabItem('Demand Forecasting', id=2): gr.Markdown('# Select SKU for forecasting') with gr.Row(): with gr.Column(): skus_to_fcst_dropdown = gr.Dropdown( **init_args.skus_to_fcst_dropdown) freq_options_radio = gr.Radio( **init_args.freq_options_radio) freq_convention_opt_radio = gr.Radio( **init_args.freq_convention_opt_radio) fcst_button = gr.Button( **init_args.fcst_button) freq_convention_opt_radio.change( app.set_freq_convention, [freq_convention_opt_radio], []) with gr.Column(): fcst_data_prev_df = gr.Dataframe( **init_args.fcst_data_prev_df) gr.Markdown('# View Forecasting Results') with gr.Row(): # View Forecasted SKUS Dropdown skus_fcsted_dropdown = gr.Dropdown( **init_args.skus_fcsted_dropdown) skus_fcsted_df = gr.Dataframe( **init_args.skus_fcsted_df) skus_fcsted_plot = gr.Plot() inventory_toggle_btn = gr.Button( **init_args.inventory_toggle_btn) # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # # Demand Forecasting Tab Event Listeners # # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # fcst_button.click( app.fcst_button__click, [], [skus_fcsted_dropdown, skus_fcsted_df, skus_fcsted_plot]) skus_fcsted_dropdown.change( app.skus_fcsted_dropdown__change, [skus_fcsted_dropdown], [skus_fcsted_df, skus_fcsted_plot]) freq_options_radio.change( app.freq_options_radio__change, [freq_options_radio], []) # ========================== # # Inventory Optimization Tab # # ========================== # with gr.TabItem('Inventory Optimization', id=3) as io_tab: with gr.Row(): gr.Markdown(**init_args.inventory_markdown) with gr.Column(): inventory_storage_capacity = gr.Number( **init_args.inventory_storage_capacity) inventory_budget_constraint = gr.Number( **init_args.inventory_budget_constraint) inventory_dataframe = gr.Dataframe( **init_args.inventory_dataframe) with gr.Row(): inventory_demo_button = gr.Button( **init_args.inventory_demo_button) inventory_cta_button = gr.Button( **init_args.inventory_cta_button) inventory_recommendations_md = gr.Markdown( **init_args.inventory_recommendations_md) inventory_recommendations_df = gr.Dataframe( **init_args.inventory_recommendations_df) inventory_viz = gr.Plot( **init_args.inventory_viz) # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # # Inventory Optimization Event Listeners # # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # inventory_storage_capacity.change( app.inventory_storage_capacity__change, [inventory_storage_capacity], []) inventory_budget_constraint.change( app.inventory_budget_constraint__change, [inventory_budget_constraint], [] ) inventory_cta_button.click( app.inventory_cta_button__click, [inventory_dataframe], [inventory_recommendations_md, inventory_recommendations_df, inventory_viz] ) inventory_dataframe.input( app.inventory_dataframe__input, [inventory_dataframe], [] ) inventory_demo_button.click( app.inventory_demo_button__click, [], [inventory_dataframe, inventory_storage_capacity, inventory_budget_constraint] ) # ~~~~~~~~~~~~~~~~~~~~~~ # # ~~~~~~~~~~~~~~~~~~~~~~ # # Global Event Listeners # # ~~~~~~~~~~~~~~~~~~~~~~ # # ~~~~~~~~~~~~~~~~~~~~~~ # demand_fcst_btn.click( app.demand_fcst_btn__click, None, tabs) inventory_toggle_btn.click( app.inventory_toggle_btn__click, None, tabs) data_table.change( app.data_table__change, [], [sku_plot_selector, skus_to_fcst_dropdown, data_viz_col, data_viz_plot]) skus_to_fcst_dropdown.change( app.skus_to_fcst_dropdown__change, [skus_to_fcst_dropdown], [fcst_data_prev_df]) io_tab.select( app.io_tab__select, [], [inventory_dataframe]) gr.Markdown('Version 0.0.2 | Updated: 2024-Jan-31') demo.launch()