File size: 2,533 Bytes
0638f4b
9a8af44
b305c27
b31f2bf
670df4a
b31f2bf
 
 
de3f3b9
b31f2bf
b305c27
b31f2bf
7b45b46
8db7e82
 
9a8af44
7b45b46
8db7e82
 
670df4a
 
 
 
0dc1ccf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
670df4a
8db7e82
 
 
 
 
670df4a
8db7e82
de3f3b9
670df4a
 
 
 
8db7e82
 
 
 
 
 
 
f6e11f0
670df4a
8db7e82
670df4a
 
 
f6e11f0
9a8af44
 
 
20481f7
f6e11f0
 
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
72
73
74
75
76
77
78
79
80
81
82
83
84
import gradio as gr
from task_functions import add_task, delete_task, get_tasks

# Initialize Gradio app with dark tech-inspired theme
with gr.Blocks() as demo:
    gr.Markdown(
        """
        <div style="text-align: center; font-size: 28px; font-weight: bold; color: #FFA500;">
            📝 Futuristic To-Do List Tracker
        </div>
        """
    )

    # Create an empty DataFrame display
    task_table = gr.DataFrame(
        headers=["Task", "Priority", "Status", "Due Date"],
        label="Current Tasks",
        elem_id="task-table",
        interactive=False
    )

    # Add Task Section
    with gr.Row():
        with gr.Column(scale=3):
            task_input = gr.Textbox(
                label="Task",
                placeholder="Enter your task...",
                elem_id="input-box"
            )
        with gr.Column(scale=1):
            priority_input = gr.Dropdown(
                choices=["Low", "Medium", "High"],
                label="Priority",
                value="Medium",
                elem_id="dropdown"
            )
            status_input = gr.Dropdown(
                choices=["Not Started", "In Progress", "Completed"],
                label="Status",
                value="Not Started",
                elem_id="dropdown"
            )
        with gr.Column(scale=2):
            due_date_input = gr.Textbox(
                label="Due Date (YYYY-MM-DD)",
                placeholder="YYYY-MM-DD",
                elem_id="input-box"
            )
        with gr.Column(scale=1):
            add_button = gr.Button("Add Task", elem_id="button")

    # Button click to add task and update DataFrame
    def update_task_table(task, priority, status, due_date):
        add_task(task, priority, status, due_date)
        return get_tasks()

    add_button.click(
        fn=update_task_table,
        inputs=[task_input, priority_input, status_input, due_date_input],
        outputs=task_table
    )

    # Delete Task Section
    delete_index = gr.Number(label="Task Index to Delete", value=0, elem_id="input-box")
    delete_button = gr.Button("Delete Task", elem_id="button")

    # Button click to delete task and update DataFrame
    def update_after_delete(index):
        delete_task(index)
        return get_tasks()

    delete_button.click(
        fn=update_after_delete,
        inputs=delete_index,
        outputs=task_table
    )

# Load external CSS file
with open("styles.css", "r") as f:
    demo.css = f.read()

# Launch the Gradio app
demo.launch()