File size: 3,487 Bytes
e841ba5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
85
86
87
88
89
90
import json

import gradio as gr
import modelscope_studio.components.antd as antd
import modelscope_studio.components.base as ms

gutters = {}
vgutters = {}
col_counts = {}

for i, v in enumerate([8, 16, 24, 32, 40, 48]):
    gutters[str(i)] = vgutters[str(i)] = v

for i, v in enumerate([2, 3, 4, 6, 8, 12]):
    col_counts[str(i)] = v

with gr.Blocks() as demo:
    with ms.Application():
        with antd.ConfigProvider():
            ms.Span("Horizontal Gutter (px): ")
            with ms.Div(elem_style=dict(width="50%")):
                horizontal_slider = antd.Slider(
                    value=1,
                    min=0,
                    max=len(gutters) - 1,
                    marks=gutters,
                    step=None,
                    tooltip=dict(
                        formatter=f"(value) => ({json.dumps(gutters)}[value])")
                )
            ms.Span("Vertical Gutter (px): ")
            with ms.Div(elem_style=dict(width="50%")):
                vertical_slider = antd.Slider(
                    value=1,
                    min=0,
                    max=len(vgutters) - 1,
                    marks=vgutters,
                    step=None,
                    tooltip=dict(
                        formatter=f"(value) => ({json.dumps(vgutters)}[value])"
                    ))
            ms.Span("Column Count: ")
            with ms.Div(elem_style=dict(width="50%", marginBottom=48)):
                count_slider = antd.Slider(
                    value=1,
                    min=0,
                    max=len(col_counts) - 1,
                    marks=col_counts,
                    step=None,
                    tooltip=dict(
                        formatter=
                        f"(value) => ({json.dumps(col_counts)}[value])"))
            with antd.Row(gutter=[gutters["1"], vgutters["1"]]) as row:
                with ms.Each(value=[{
                        "span": 8
                }, {
                        "span": 8
                }, {
                        "span": 8
                }] * 2) as cols:
                    with antd.Col(elem_style=dict(background="transparent",
                                                  border=0)):
                        ms.Div("Column",
                               elem_style=dict(height=120,
                                               fontSize=14,
                                               lineHeight='120px',
                                               background="#0092ff",
                                               borderRadius=4,
                                               color="#fff",
                                               textAlign='center'))

            def on_change(_horizontal_slider, _vertical_slider, _count_slider):
                return gr.update(gutter=[
                    gutters[str(_horizontal_slider)], vgutters[str(
                        _vertical_slider)]
                ]), gr.update(
                    value=[{
                        "span": int(24 / col_counts[str(_count_slider)])
                    } for _ in range(col_counts[str(_count_slider)])] * 2)

            gr.on([
                horizontal_slider.change, vertical_slider.change,
                count_slider.change
            ],
                  fn=on_change,
                  inputs=[horizontal_slider, vertical_slider, count_slider],
                  outputs=[row, cols])
if __name__ == "__main__":
    demo.queue().launch()