#!/usr/bin/env python

import gradio as gr

from paper_list import PaperList

DESCRIPTION = "# ICML 2022 Papers"
NOTES = """
- [ICML 2022](https://icml.cc/Conferences/2022/)
- [Proceedings](https://proceedings.mlr.press/v162/)
"""

paper_list = PaperList()

with gr.Blocks(css_paths="style.css") as demo:
    gr.Markdown(DESCRIPTION)

    search_box = gr.Textbox(
        label="Search Title", placeholder="You can search for titles with regular expressions. e.g. (?<!sur)face"
    )
    case_sensitive = gr.Checkbox(label="Case Sensitive")
    filter_names = gr.CheckboxGroup(
        label="Filter",
        choices=[
            "arXiv",
            "GitHub",
            "HF Space",
            "HF Model",
            "HF Dataset",
        ],
    )
    search_button = gr.Button("Search")

    number_of_papers = gr.Textbox(label="Number of Papers Found")
    table = gr.HTML(show_label=False)

    gr.Markdown(NOTES)

    demo.load(
        fn=paper_list.render,
        inputs=[
            search_box,
            case_sensitive,
            filter_names,
        ],
        outputs=[
            number_of_papers,
            table,
        ],
    )
    search_button.click(
        fn=paper_list.render,
        inputs=[
            search_box,
            case_sensitive,
            filter_names,
        ],
        outputs=[
            number_of_papers,
            table,
        ],
    )

if __name__ == "__main__":
    demo.queue().launch()