#!/usr/bin/env python

import gradio as gr

from paper_list import PaperList

DESCRIPTION = "# NAACL 2022 Papers"
NOTES = """
- [NAACL 2022](https://2022.naacl.org/)
- [NAACL'22 Reproducibility Track](https://naacl2022-reproducibility-track.github.io/results/)
"""

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",
        ],
    )
    paper_category_names = [
        "Long Paper",
        "Short Paper",
        "Special Theme Paper",
        "Findings",
        "Industry Track",
    ]
    paper_categories = gr.CheckboxGroup(
        label="Paper Categories", choices=paper_category_names, value=paper_category_names
    )
    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,
            paper_categories,
        ],
        outputs=[
            number_of_papers,
            table,
        ],
    )
    search_button.click(
        fn=paper_list.render,
        inputs=[
            search_box,
            case_sensitive,
            filter_names,
            paper_categories,
        ],
        outputs=[
            number_of_papers,
            table,
        ],
    )

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