aartstudio commited on
Commit
2f495f4
·
verified ·
1 Parent(s): ec2ba6b

Upload 2 files

Browse files
Files changed (2) hide show
  1. app.py +71 -0
  2. requirements.txt +1 -0
app.py ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ import gradio as gr
3
+
4
+ MAX_QUEUE_SIZE = 3
5
+
6
+ def add_to_queue(name, age, queue_state):
7
+ if queue_state is None:
8
+ queue_state = []
9
+
10
+ if not name:
11
+ return ("Please enter your name.", queue_state, queue_state)
12
+
13
+ try:
14
+ age = int(age)
15
+ if age <= 0:
16
+ raise ValueError
17
+ except Exception:
18
+ return ("Please enter a valid positive age.", queue_state, queue_state)
19
+
20
+ if len(queue_state) >= MAX_QUEUE_SIZE:
21
+ return ("Queue is full. Only 3 people are allowed.", queue_state, queue_state)
22
+
23
+ queue_number = len(queue_state) + 1
24
+ person = {
25
+ "Queue No.": queue_number,
26
+ "Name": name,
27
+ "Age": age
28
+ }
29
+ queue_state.append(person)
30
+
31
+ message = f"Welcome, {name}! Your queue number is {queue_number}."
32
+ return message, queue_state, queue_state
33
+
34
+ def reset_queue():
35
+ return "Queue has been reset.", [], []
36
+
37
+ with gr.Blocks() as demo:
38
+ gr.Markdown("# Simple Queue System (First Come, First Served)")
39
+ gr.Markdown("Enter your name and age. Only 3 people can join the queue.")
40
+
41
+ queue_state = gr.State([])
42
+
43
+ with gr.Row():
44
+ name_input = gr.Textbox(label="Name")
45
+ age_input = gr.Number(label="Age", precision=0)
46
+
47
+ submit_btn = gr.Button("Join Queue")
48
+ reset_btn = gr.Button("Reset Queue")
49
+
50
+ status_output = gr.Textbox(label="Status", interactive=False)
51
+ queue_table = gr.Dataframe(
52
+ headers=["Queue No.", "Name", "Age"],
53
+ label="Current Queue",
54
+ datatype=["number", "str", "number"],
55
+ wrap=True
56
+ )
57
+
58
+ submit_btn.click(
59
+ fn=add_to_queue,
60
+ inputs=[name_input, age_input, queue_state],
61
+ outputs=[status_output, queue_state, queue_table]
62
+ )
63
+
64
+ reset_btn.click(
65
+ fn=reset_queue,
66
+ inputs=None,
67
+ outputs=[status_output, queue_state, queue_table]
68
+ )
69
+
70
+ if __name__ == "__main__":
71
+ demo.launch()
requirements.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ gradio>=4.0.0