File size: 2,227 Bytes
d1855f9
 
cdcdabb
d1855f9
4859488
cab3205
 
c946de7
cab3205
d1855f9
 
face2f0
54a53e6
984842d
cab3205
 
a5675de
c946de7
 
 
 
 
54a53e6
984842d
cab3205
 
a5675de
984842d
54a53e6
984842d
 
 
 
 
 
 
 
54a53e6
 
cdcdabb
 
 
 
 
54a53e6
984842d
c946de7
 
984842d
face2f0
54a53e6
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
from textwrap import dedent

from gradio import Blocks, Markdown, TabbedInterface, Number, render, Accordion

from src.dataset_data import DatasetData
from src.presenter.addons_number_presenter import AddonsNumberPresenter
from src.presenter.svelte_addons_number_presenter import SvelteAddonsNumberPresenter
from src.presenter.tests_count_addons_number_presenter import TestsCountAddonsNumberPresenter
from src.presenter.top_by_rating_presenter import TopByRatingPresenter

data: DatasetData = DatasetData()

with Blocks() as addons_number_block:
    Markdown("## Number of Anki addons")
    addons_number_presenter: AddonsNumberPresenter = AddonsNumberPresenter(data)
    addons_number_presenter.present()

with Blocks() as tests_count_block:
    Markdown("## Number of Anki addons having unit-tests")
    tests_count_addons_number_presenter: TestsCountAddonsNumberPresenter = TestsCountAddonsNumberPresenter(data)
    tests_count_addons_number_presenter.present()

with Blocks() as svelte_block:
    Markdown("## Number of Anki addons using Svelte")
    svelte_addons_number_presenter: SvelteAddonsNumberPresenter = SvelteAddonsNumberPresenter(data)
    svelte_addons_number_presenter.present()

top_by_rating_presenter: TopByRatingPresenter = TopByRatingPresenter(data)
with Blocks() as top_rating_block:
    top_input: Number = Number(value=10, precision=0, label="Show addons:", minimum=1, maximum=100)


    @render(inputs=top_input)
    def _render_top_by_rating(top: int):
        top_int: int = int(top) if top is not None else 10
        Markdown(f"## Top {top_int} addons by rating")
        top_by_rating_presenter.present(top_int)

with Blocks() as demo:
    Markdown("# Visualizations for Anki Addons Dataset")
    with Accordion("Information", open=False):
        Markdown(dedent("""\
                    - [Anki Addons Dataset at HuggingFace](https://huggingface.co/datasets/Ya-Alex/anki-addons)
                    - [Anki Addons Dataset at GitHub](https://github.com/Aleks-Ya/anki-addons-dataset)
                    """))
    TabbedInterface(
        [addons_number_block, tests_count_block, svelte_block, top_rating_block],
        ["Addons number", "Unit-Tests", "Svelte", "Rating"],
    )

demo.launch()