|
import gradio as gr |
|
|
|
with gr.Blocks() as demo: |
|
|
|
tasks = gr.State([]) |
|
new_task = gr.Textbox(label="Task Name", autofocus=True) |
|
|
|
def add_task(tasks, new_task_name): |
|
return tasks + [{"name": new_task_name, "complete": False}], "" |
|
|
|
new_task.submit(add_task, [tasks, new_task], [tasks, new_task]) |
|
|
|
@gr.render(inputs=tasks) |
|
def render_todos(task_list): |
|
complete = [task for task in task_list if task["complete"]] |
|
incomplete = [task for task in task_list if not task["complete"]] |
|
gr.Markdown(f"### Incomplete Tasks ({len(incomplete)})") |
|
for task in incomplete: |
|
with gr.Row(): |
|
gr.Textbox(task['name'], show_label=False, container=False) |
|
done_btn = gr.Button("Done", scale=0) |
|
def mark_done(task=task): |
|
task["complete"] = True |
|
return task_list |
|
done_btn.click(mark_done, None, [tasks]) |
|
|
|
delete_btn = gr.Button("Delete", scale=0, variant="stop") |
|
def delete(task=task): |
|
task_list.remove(task) |
|
return task_list |
|
delete_btn.click(delete, None, [tasks]) |
|
|
|
gr.Markdown(f"### Complete Tasks ({len(complete)})") |
|
for task in complete: |
|
gr.Textbox(task['name'], show_label=False, container=False) |
|
|
|
if __name__ == "__main__": |
|
demo.launch() |
|
|