Пример #1
0
def test_parse_element_configuration_updater():
    page = Page()
    page.new('''
        Text:
        - [updater: {$: fn}]
    ''', inputs={'fn': lambda: None})
    assert page._element_updater.threads
Пример #2
0
def main():
    title = 'Awe Examples'
    page = Page(title, width=900)
    page.register(HighlightJS)
    page.new('h1').new_text(title)
    page.new_text('Examples page was created with awe.\n')
    collapse = page.new_collapse()
    for example in examples.examples_order:
        config = examples.exported_examples[example]
        this_dir = os.path.dirname(__file__)
        py_file = os.path.join(this_dir, '{}.py'.format(example))
        md_file = os.path.join(this_dir, '{}.md'.format(example))
        github_link = 'https://github.com/dankilman/awe/blob/master/examples/{}.py'.format(
            example)
        static_url = 'https://s3.amazonaws.com/awe-static-files/examples/{}.html'.format(
            example)
        image_url = 'https://s3.amazonaws.com/awe-static-files/examples/{}.{}'.format(
            example, config['extension'])
        panel = collapse.new_panel('examples/{}.py'.format(example),
                                   active=True)
        (panel.new('h2').s.new_link(github_link).new_inline(
            'examples/{}.py'.format(example)).n.new_inline(' ').new_link(
                static_url).new_inline(' [static demo]').p)
        with open(md_file) as f:
            panel.new_markdown(f.read())
        panel.new('img', props={'src': image_url}, style={'maxWidth': '100%'})
        panel.new_divider()
        with open(py_file) as f:
            panel.new('pre').new('code').new_inline(
                f.read(),
                style={'borderRadius': '2px'},
                props={'className': 'python'},
            )
    page.start(block=True)
Пример #3
0
def test_export_with_custom_element():
    js_code = 'register((e) => <div {...e.props}>text</div>)'

    class TestElement(CustomElement):
        @classmethod
        def _js(cls):
            return js_code

    page = Page()
    page.new(TestElement)
    assert js_code in page.export()
Пример #4
0
def test_inputs():
    page = Page()
    fn = lambda: None
    text1 = 'Text Input 1'
    text2 = 'Text Input 2'
    input3 = 'Input 3 Value'
    inputs = {
        'fn1': fn,
        'text1': text1,
        'text2': text2,
        'input3': input3
    }
    layout = '''
        - Button: [[button1, function: {$: fn1}]]
        - Text: {$: text1}
        - Inline:
          - [text2]
          - {$: text2}
        - Inline:
          - [text3]
          - {$: [text3, default: {$: input3}]}
    '''
    top_level = page.new(layout, inputs=inputs)
    ref = top_level.ref
    assert top_level.children[1].text == text1
    assert ref.button1._function is fn
    assert ref.text2.children[0].text == text2
    assert ref.text3.children[0].text == input3
Пример #5
0
def test_parse_element_configuration_element_prop():
    page = Page()
    result = page.new('''
        Divider:
        - [prop1: Prop1 Value]
    ''')
    assert result.props['prop1'] == 'Prop1 Value'
Пример #6
0
def test_parse_element_configuration_init_arg():
    page = Page()
    result = page.new('''
        Text:
        - [text: Hello Text]
    ''')
    assert result.text == 'Hello Text'
Пример #7
0
def test_parse_element_configuration_id():
    page = Page()
    result = page.new('''
        Divider:
        - [id: divider1]
    ''')
    assert result.id == 'divider1'
Пример #8
0
def test_text_child():
    page = Page()
    result = page.new('''
        Card:
        - Card Text
    ''')
    assert result.children[0].text == 'Card Text'
Пример #9
0
def test_parse_children():
    page = Page()
    result = page.new(['Divider', 'Text'])
    children = result.children
    assert len(children) == 2
    divider, text = children
    assert isinstance(divider, view.Divider)
    assert isinstance(text, view.Text)
Пример #10
0
def test_parse_element_configuration_variable_and_more():
    page = Page()
    result = page.new('''
        Divider:
        - [divider_var1, id: divider1]
    ''')
    assert result.ref.divider_var1 is result
    assert result.id == 'divider1'
Пример #11
0
def test_parse_element_configuration_cols():
    page = Page()
    result = page.new('''
        Grid:
        - [columns: 3]
        - Text: [[cols: 2]]
    ''')
    assert result.data['childColumns'] == [2]
Пример #12
0
def test_parse_element_configuration_element_value():
    page = Page()
    result = page.new('''
        Divider:
        - [prop1: {_: {Divider: [[inner_divider]]}}]
    ''')
    assert isinstance(result.ref.inner_divider, view.Divider)
    assert result._prop_children['prop1'] == result.ref.inner_divider.root_id
Пример #13
0
def test_parse_inline_text():
    page = Page()
    result = page.new('span: Hello There')
    assert isinstance(result, view.Raw)
    assert len(result.children) == 1
    child = result.children[0]
    assert isinstance(child, view.Inline)
    assert child.text == 'Hello There'
Пример #14
0
def main():
    page = Page()
    popover = page.new(Popover, title='Some Title')
    popover.new_button(lambda: None, 'Hover Me!')
    content = popover.new_prop('content')
    content.new_text('line 1')
    content.new(Moment)
    page.start(block=True)
Пример #15
0
def test_parser_yaml_string_input():
    page = Page()
    result = page.new('''
        - Divider
        - span: hello
    ''')
    assert isinstance(result, view.Raw)
    assert result.data['tag'] == 'div'
    assert len(result.children) == 2
Пример #16
0
def test_parse_element_configuration_element_value_init_arg():
    page = Page()
    result = page.new('''
        Collapse:
        - Panel: [[panel1, header: {_: {Text: Text 1}}]]
    ''')
    panel1 = result.ref.panel1
    assert panel1._prop_children
    assert panel1.header.children[0].text == 'Text 1'
Пример #17
0
def test_parse_custom_element():
    class TestElement(view.CustomElement):
        @classmethod
        def _js(cls):
            pass

    page = Page()
    page.register(TestElement)
    result = page.new('TestElement')
    assert isinstance(result, TestElement)
Пример #18
0
def main():
    page = Page()
    b = page.element_builder
    page.new('h1').new_text('Simple Report')
    page.new_text('''Things weren't always so good for Foxy Fox.
                     There were days when Fox had to do {thing}, which was hard and not very satisfying.
    '''.format(thing='documentation'))
    page.new('div').s.new_inline('But things are ').n.new('em').new_inline(
        'better').n.new_inline(' now.')
    page.new_text()
    table = page.new_table(['Day', 'Number Of Emotions'])
    for i in range(5):
        number = random.randint(0, 1000)
        url = 'https://www.google.com/search?q={}'.format(number)
        table.append([
            'Day {}'.format(i),
            b.link(url).s.new('em').new_inline(
                str(number)).n.new_inline(' Emotions')
        ])
    page.start(block=True)
Пример #19
0
def test_parse_element_configuration_variables():
    page = Page()
    result = page.new('''
        - Divider:
          - [divider1]
        - span:
          - [span1]
          - Inline: Hello There
    ''')
    assert isinstance(result.ref.divider1, view.Divider)
    assert isinstance(result.ref.span1, view.Raw)
Пример #20
0
def start(ctx, title, width, open_browser, obj, params, style, host, port,
          websocket_port):
    """
    Start a new page.
    """
    try:
        page = Page(title=title,
                    width=width,
                    host=host,
                    port=port,
                    websocket_port=websocket_port,
                    style=ctx.parse_object(style))
        page.start(open_browser=open_browser)
        if obj:
            obj = ctx.parse_object(obj)
            params = ctx.parse_object(params)
            page.new(obj, **params)
        page.block()
    except Exception:
        if ctx.quiet:
            sys.exit(1)
        else:
            raise
Пример #21
0
def test_parse_element_configuration_and_children():
    page = Page()
    result = page.new('''
        Card:
        - [id: card1]
        - Text
        - Inline
    ''')
    assert result.id == 'card1'
    children = result.children
    assert len(children) == 2
    text, inline = children
    assert isinstance(text, view.Text)
    assert isinstance(inline, view.Inline)
Пример #22
0
def run():
    page = Page()
    content = page.new(page_layout)
    ref = content.ref
    page.start()
    for i in range(1000):
        ref.table1.append([i, i**2, i**3])
        ref.table2.prepend([-i, -i * 12])
        ref.table3.append([-i, -i**2, -i**3])
        ref.table4.append([i, i * 12])
        ref.text1.text = '4 Text: {}'.format(i * 3)
        ref.text2.text = '4 Text {}'.format(i * 4)
        ref.card1.children[0].text = '{} Time: {}'.format(i, time.time())
        ref.divider1.update_prop('dashed',
                                 not ref.divider1.props.get('dashed'))
        time.sleep(5)
Пример #23
0
def test_parse_raw_element_dict_text_value():
    page = Page()
    result = page.new('span: Hello There')
    assert len(result.children) == 1
    assert isinstance(result.children[0], view.Inline)
    assert result.children[0].text == 'Hello There'
Пример #24
0
def test_parser_list_input():
    page = Page()
    result = page.new(['Divider', {'span': 'hello'}])
    assert isinstance(result, view.Raw)
    assert result.data['tag'] == 'div'
    assert len(result.children) == 2
Пример #25
0
def test_parser_object_input():
    page = Page()
    result = page.new({'Divider': None})
    assert isinstance(result, view.Divider)
Пример #26
0
def test_parser_string_input():
    page = Page()
    result = page.new('Divider')
    assert isinstance(result, view.Divider)
Пример #27
0
def test_parse_first_init_arg_as_dict_value():
    page = Page()
    result = page.new('Text: Hello There')
    assert result.text == 'Hello There'
Пример #28
0
def test_chart():
    page = Page()
    c = page.new('Chart')
    assert isinstance(c, chart.Chart)