Parishri07 commited on
Commit
7efb0fd
Β·
verified Β·
1 Parent(s): b89610e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -18
app.py CHANGED
@@ -52,62 +52,60 @@ def display_quantity_info(quantity, data_dict):
52
  def reset_all():
53
  return (
54
  None, None, None, None, None, None, None,
55
- gr.update(choices=[], visible=False),
56
- "", {}
57
  )
58
 
59
- # UI
60
  with gr.Blocks(title="RetailGenie Navigator") as demo:
61
  gr.Markdown("## 🧞 RetailGenie – Multi-Store Smart Inventory Assistant")
62
 
63
  with gr.Row():
64
  country = gr.Dropdown(label="🌍 Country", choices=get_subfolders(BASE_DIR), value=None)
65
- state = gr.Dropdown(label="πŸ™οΈ State", choices=[], visible=True, interactive=False)
66
- city = gr.Dropdown(label="🏘️ City", choices=[], visible=True, interactive=False)
67
- store = gr.Dropdown(label="πŸͺ Store", choices=[], visible=True, interactive=False)
68
- category = gr.Dropdown(label="πŸ›οΈ Category", choices=[], visible=True, interactive=False)
69
- product = gr.Dropdown(label="πŸ“¦ Product", choices=[], visible=True, interactive=False)
70
- brand = gr.Dropdown(label="🏷️ Brand", choices=[], visible=True, interactive=False)
71
  quantity = gr.Dropdown(label="πŸ”’ Quantity", visible=False)
72
 
73
  result = gr.Textbox(label="πŸ” Product Info", lines=5)
74
  data_state = gr.State()
75
-
76
  reset_btn = gr.Button("πŸ”„ Reset All")
77
 
78
- # Logic chaining
79
  country.change(
80
- lambda c: gr.update(choices=get_subfolders(os.path.join(BASE_DIR, c)), value=None, interactive=True),
81
  inputs=country,
82
  outputs=state
83
  )
84
 
85
  state.change(
86
- lambda c, s: gr.update(choices=get_subfolders(os.path.join(BASE_DIR, c, s)), value=None, interactive=True),
87
  inputs=[country, state],
88
  outputs=city
89
  )
90
 
91
  city.change(
92
- lambda c, s, ci: gr.update(choices=get_subfolders(os.path.join(BASE_DIR, c, s, ci)), value=None, interactive=True),
93
  inputs=[country, state, city],
94
  outputs=store
95
  )
96
 
97
  store.change(
98
- lambda c, s, ci, st: gr.update(choices=get_subfolders(os.path.join(BASE_DIR, c, s, ci, st)), value=None, interactive=True),
99
  inputs=[country, state, city, store],
100
  outputs=category
101
  )
102
 
103
  category.change(
104
- lambda c, s, ci, st, cat: gr.update(choices=get_subfolders(os.path.join(BASE_DIR, c, s, ci, st, cat)), value=None, interactive=True),
105
  inputs=[country, state, city, store, category],
106
  outputs=product
107
  )
108
 
109
  product.change(
110
- lambda c, s, ci, st, cat, prod: gr.update(choices=get_csv_files(os.path.join(BASE_DIR, c, s, ci, st, cat, prod)), value=None, interactive=True),
111
  inputs=[country, state, city, store, category, product],
112
  outputs=brand
113
  )
@@ -115,7 +113,7 @@ with gr.Blocks(title="RetailGenie Navigator") as demo:
115
  brand.change(
116
  lambda c, s, ci, st, cat, prod, b: get_quantities_from_csv(
117
  os.path.join(BASE_DIR, c, s, ci, st, cat, prod, f"{b}.csv")
118
- ),
119
  inputs=[country, state, city, store, category, product, brand],
120
  outputs=[quantity, data_state]
121
  )
 
52
  def reset_all():
53
  return (
54
  None, None, None, None, None, None, None,
55
+ gr.update(choices=[], visible=False), "", {}
 
56
  )
57
 
58
+ # Interface
59
  with gr.Blocks(title="RetailGenie Navigator") as demo:
60
  gr.Markdown("## 🧞 RetailGenie – Multi-Store Smart Inventory Assistant")
61
 
62
  with gr.Row():
63
  country = gr.Dropdown(label="🌍 Country", choices=get_subfolders(BASE_DIR), value=None)
64
+ state = gr.Dropdown(label="πŸ™οΈ State", choices=[], interactive=False)
65
+ city = gr.Dropdown(label="🏘️ City", choices=[], interactive=False)
66
+ store = gr.Dropdown(label="πŸͺ Store", choices=[], interactive=False)
67
+ category = gr.Dropdown(label="πŸ›οΈ Category", choices=[], interactive=False)
68
+ product = gr.Dropdown(label="πŸ“¦ Product", choices=[], interactive=False)
69
+ brand = gr.Dropdown(label="🏷️ Brand", choices=[], interactive=False)
70
  quantity = gr.Dropdown(label="πŸ”’ Quantity", visible=False)
71
 
72
  result = gr.Textbox(label="πŸ” Product Info", lines=5)
73
  data_state = gr.State()
 
74
  reset_btn = gr.Button("πŸ”„ Reset All")
75
 
76
+ # Logic chaining with safety checks
77
  country.change(
78
+ lambda c: gr.update(choices=get_subfolders(os.path.join(BASE_DIR, c)) if c else [], value=None, interactive=True),
79
  inputs=country,
80
  outputs=state
81
  )
82
 
83
  state.change(
84
+ lambda c, s: gr.update(choices=get_subfolders(os.path.join(BASE_DIR, c, s)) if c and s else [], value=None, interactive=True),
85
  inputs=[country, state],
86
  outputs=city
87
  )
88
 
89
  city.change(
90
+ lambda c, s, ci: gr.update(choices=get_subfolders(os.path.join(BASE_DIR, c, s, ci)) if c and s and ci else [], value=None, interactive=True),
91
  inputs=[country, state, city],
92
  outputs=store
93
  )
94
 
95
  store.change(
96
+ lambda c, s, ci, st: gr.update(choices=get_subfolders(os.path.join(BASE_DIR, c, s, ci, st)) if c and s and ci and st else [], value=None, interactive=True),
97
  inputs=[country, state, city, store],
98
  outputs=category
99
  )
100
 
101
  category.change(
102
+ lambda c, s, ci, st, cat: gr.update(choices=get_subfolders(os.path.join(BASE_DIR, c, s, ci, st, cat)) if c and s and ci and st and cat else [], value=None, interactive=True),
103
  inputs=[country, state, city, store, category],
104
  outputs=product
105
  )
106
 
107
  product.change(
108
+ lambda c, s, ci, st, cat, prod: gr.update(choices=get_csv_files(os.path.join(BASE_DIR, c, s, ci, st, cat, prod)) if c and s and ci and st and cat and prod else [], value=None, interactive=True),
109
  inputs=[country, state, city, store, category, product],
110
  outputs=brand
111
  )
 
113
  brand.change(
114
  lambda c, s, ci, st, cat, prod, b: get_quantities_from_csv(
115
  os.path.join(BASE_DIR, c, s, ci, st, cat, prod, f"{b}.csv")
116
+ ) if all([c, s, ci, st, cat, prod, b]) else (gr.update(choices=[], visible=False), {}),
117
  inputs=[country, state, city, store, category, product, brand],
118
  outputs=[quantity, data_state]
119
  )