コード例 #1
0
ファイル: home.py プロジェクト: RAHULRAOSHINDE/wave-apps
def init(q: Q):
    q.page.drop()
    q.page['meta'] = ui.meta_card(
        box='',
        layouts=[
            ui.layout(breakpoint='xs',
                      zones=[
                          ui.zone('title', size='80px'),
                          ui.zone('menu', size='80px'),
                          ui.zone('risk_table'),
                      ]),
            ui.layout(breakpoint='m',
                      width='1920px',
                      zones=[
                          ui.zone('header',
                                  size='80px',
                                  direction=ui.ZoneDirection.ROW,
                                  zones=[
                                      ui.zone('title', size='400px'),
                                      ui.zone('menu'),
                                  ]),
                          ui.zone('risk_table',
                                  direction=ui.ZoneDirection.ROW,
                                  size='800px'),
                      ])
        ])

    render_header(q)
コード例 #2
0
ファイル: meta_side_panel.py プロジェクト: srisatish/wave
async def serve(q: Q):
    if not q.client.initialized:
        q.page['meta'] = ui.meta_card(box='')
        q.page['example'] = ui.form_card(box='1 1 11 10', items=[
            ui.button(name='show_side_panel', label='Order donuts', primary=True)
        ])
        q.client.initialized = True
    else:
        if q.args.show_side_panel:
            q.page['meta'].side_panel = ui.side_panel(title='Welcome to store', items=[
                ui.text('Donuts cost $1.99. Proceed?'),
                ui.buttons([ui.button(name='next_step', label='Next', primary=True)])
            ])
        elif q.args.next_step:
            q.page['meta'].side_panel.items = [
                ui.text('You will be charged $1.99. Proceed?'),
                ui.buttons([
                    ui.button(name='cancel', label='Back to safety'),
                    ui.button(name='submit', label='Place order', primary=True),
                ])
            ]
        elif q.args.submit:
            q.page['example'].items = [ui.message_bar('success', 'Order placed!')]
            q.page['meta'].side_panel = None

        elif q.args.cancel:
            q.page['example'].items = [ui.message_bar('info', 'Order canceled!')]
            q.page['meta'].side_panel = None

    await q.page.save()
コード例 #3
0
ファイル: home_cards.py プロジェクト: tayduivn/q-rl-marketing
def card_meta() -> ui.MetaCard:
    """
    Card for meta information.
    """
    card = ui.meta_card(box='', title='RL Marketing')

    return card
コード例 #4
0
async def serve(q: Q):
    if not q.client.initialized:
        q.page['meta'] = ui.meta_card(box='')
        q.page['controls'] = ui.form_card(
            box='1 1 2 2',
            items=[
                ui.text_xl('This is normal theme'),
                ui.button(name='change',
                          label='Change to see neon theme',
                          primary=True)
            ])
        q.client.current_theme = 'light'
        q.client.initialized = True

    meta = q.page['meta']
    controls = q.page['controls']

    if q.args.change and q.client.current_theme != 'neon':
        meta.theme = 'neon'
        q.client.current_theme = 'neon'
        controls.items[0].text_xl.content = 'This is Neon theme!'
        controls.items[1].button.label = 'Back to normal'
    elif q.args.change:
        meta.theme = 'light'
        q.client.current_theme = 'light'
        controls.items[0].text_xl.content = 'This is normal theme'
        controls.items[1].button.label = 'Change to see neon theme'

    await q.page.save()
コード例 #5
0
async def initialize(q: Q):
    # Initialize H2O-3 model and tests data set
    churn_predictor.build_model(config.training_data_url, config.default_model)
    churn_predictor.set_testing_data_frame(config.testing_data_url)
    churn_predictor.predict()

    q.app.header_png = await q.site.upload([config.image_path])
    q.app.training_file_url = await q.site.upload([config.working_data])
    q.page["title"] = ui.header_card(
        box=config.boxes["banner"],
        title=config.title,
        subtitle=config.subtitle,
        icon=config.icon,
        icon_color=config.color,
    )

    q.page["nav_bar"] = ui.tab_card(
        box=config.boxes["navbar"],
        value=f'#{q.args["#"]}',
        items=[
            ui.tab(name="#profile", label="Customer Profiles"),
            ui.tab(name="#tour", label="Application Code"),
        ],
    )
    q.page['meta'] = ui.meta_card(box='', title='Telcom Churn Analytics')
    q.client.app_initialized = True
コード例 #6
0
ファイル: meta_theme.py プロジェクト: srisatish/wave
async def serve(q: Q):
    if not q.client.initialized:
        q.page['meta'] = ui.meta_card(box='', theme='neon')
        q.page['controls'] = ui.form_card(box='1 1 2 8', items=[
            ui.text_xl('Form'),
            ui.textbox(name='textbox', label='Textbox'),
            ui.toggle(name='toggle', label='Toggle'),
            ui.choice_group(name='choice_group', label='Choice group', choices=[
                ui.choice(name=x, label=x) for x in ['Egg', 'Bacon', 'Spam']
            ]),
            ui.checklist(name='checklist', label='Checklist', choices=[
                ui.choice(name=x, label=x) for x in ['Egg', 'Bacon', 'Spam']
            ]),
            ui.dropdown(name='dropdown', label='Dropdown', choices=[
                ui.choice(name=x, label=x) for x in ['Egg', 'Bacon', 'Spam']
            ]),
            ui.slider(name='slider', label='Slider'),
            ui.button(name='toggle_theme', label='Toggle Theme', primary=True)
        ])
        q.client.theme = 'default'
        q.client.initialized = True

    meta = q.page['meta']

    if q.args.toggle_theme:
        meta.theme = q.client.theme = 'neon' if q.client.theme == 'default' else 'default'

    await q.page.save()
コード例 #7
0
async def serve(q: Q):
    q.page['meta'] = ui.meta_card(box='', theme='neon')
    if q.page['error_message']:
        del q.page['error_message']
    if q.args.predict:
        await update_dashboard(q)
    else:
        await show_homepage(q)
コード例 #8
0
ファイル: app.py プロジェクト: h2oai/wave-apps
def init(q: Q):
    q.page['meta'] = ui.meta_card(
        box='',
        title='Explain Ratings',
        layouts=[
            ui.layout(breakpoint='xs',
                      zones=[
                          ui.zone('header'),
                          ui.zone('body',
                                  direction=ui.ZoneDirection.ROW,
                                  size='calc(100vh - 70px)',
                                  zones=[
                                      ui.zone('sidebar', size='350px'),
                                      ui.zone('content',
                                              direction=ui.ZoneDirection.ROW)
                                  ])
                      ]),
        ])
    q.page['header'] = ui.header_card(box='header',
                                      title='Hotel Reviews',
                                      subtitle='Explains the hotel reviews',
                                      icon='ReviewSolid',
                                      icon_color='#00A8E0')
    q.client.review = config.review_column_list[0]

    form_filters = []
    for column in config.filterable_columns:
        choices = [ui.choice(name='empty', label='All')] + [
            ui.choice(name=str(column), label=str(column))
            for column in config.dataset[column].drop_duplicates()
        ]
        form_filters.append(
            ui.dropdown(name=f'filter_{column}',
                        label=config.column_mapping[column],
                        trigger=True,
                        value='empty',
                        choices=choices))

    sidebar_items = [
        ui.dropdown(name='review',
                    label='Review type',
                    value=q.client.review,
                    trigger=True,
                    choices=[
                        ui.choice(name=column,
                                  label=config.column_mapping[column])
                        for column in config.dataset[config.review_column_list]
                    ]),
        ui.separator('Filters')
    ] + form_filters
    q.page['sidebar'] = ui.form_card(box='sidebar', items=sidebar_items)
    q.page['original'] = ui.image_card(box='content',
                                       title='Original',
                                       type='png',
                                       image=plot_word_cloud(
                                           config.dataset[q.client.review], q))
コード例 #9
0
ファイル: app.py プロジェクト: RAHULRAOSHINDE/wave-apps
async def initialize(q: Q):
    # Initialize H2O-3 model and tests data set
    churn_predictor.build_model(config.training_data_url, config.default_model)
    churn_predictor.set_testing_data_frame(config.testing_data_url)
    churn_predictor.predict()

    q.app.header_png = await q.site.upload([config.image_path])
    q.app.training_file_url = await q.site.upload([config.working_data])
    q.page['meta'] = ui.meta_card(box='', title='Telco Churn Analytics')
    q.client.app_initialized = True
コード例 #10
0
async def make_base_ui(q):
    q.page['meta'] = ui.meta_card(box='', title='Guess the Number')
    q.page['title'] = ui.header_card(
        box='1 1 3 1',
        title='Guess the Number',
        subtitle='',
        icon='ChatBot',
        icon_color=WaveColors.cyan,
    )
    await q.page.save()
コード例 #11
0
ファイル: app.py プロジェクト: h2oai/wave-apps
def init(q: Q):
    q.client.primary_color = '$blue'
    q.client.secondary_color = '$cyan'
    q.client.tertiary_color = '$azure'
    q.page['meta'] = ui.meta_card(
        box='',
        title='Telco Churn Analytics',
        layouts=[
            ui.layout(breakpoint='xs',
                      zones=[
                          ui.zone('header'),
                          ui.zone('title'),
                          ui.zone('content',
                                  zones=[
                                      ui.zone('code'),
                                      ui.zone('top',
                                              direction=ui.ZoneDirection.ROW,
                                              zones=[
                                                  ui.zone('top-plot',
                                                          size='70%'),
                                                  ui.zone('top-stats')
                                              ]),
                                      ui.zone('middle',
                                              direction=ui.ZoneDirection.ROW),
                                  ])
                      ])
        ])
    q.page['header'] = ui.header_card(
        box='header',
        title='Telecom Churn Analytics',
        subtitle='EDA & Churn Modeling with AutoML & Wave',
        nav=[
            ui.nav_group('Main Menu',
                         items=[
                             ui.nav_item(name='analysis', label='Analysis'),
                             ui.nav_item(name='code',
                                         label='Application Code'),
                         ])
        ])
    q.page['title'] = ui.section_card(
        box='title',
        title='Customer profiles from model predictions',
        subtitle='Customer: No customer chosen',
        items=[
            # TODO: Replace with dropdown after https://github.com/h2oai/wave/pull/303 merged.
            ui.picker(name='customers',
                      label='Customer Phone Number',
                      choices=[
                          ui.choice(name=str(phone), label=str(phone))
                          for phone in df['Phone']
                      ],
                      max_choices=1,
                      trigger=True),
            ui.toggle(name='theme', label='Dark Theme', trigger=True)
        ])
コード例 #12
0
def init_client(q: Q):
    q.client.initialized = True
    q.page['meta'] = ui.meta_card(
        box='',
        title='Credit Risk',
        layouts=[
            ui.layout(breakpoint='xs',
                      zones=[
                          ui.zone('header'),
                          ui.zone('customer_table'),
                          ui.zone('customer_page',
                                  zones=[
                                      ui.zone('customer_risk_explanation'),
                                      ui.zone('customer_shap_plot'),
                                      ui.zone('button_group'),
                                      ui.zone('customer_features'),
                                  ])
                      ]),
            ui.layout(breakpoint='m',
                      zones=[
                          ui.zone('header'),
                          ui.zone('customer_table'),
                          ui.zone(
                              'customer_page',
                              direction=ui.ZoneDirection.ROW,
                              zones=[
                                  ui.zone(
                                      'content',
                                      zones=[
                                          ui.zone('customer_risk_explanation'),
                                          ui.zone('customer_shap_plot'),
                                          ui.zone('button_group'),
                                      ]),
                                  ui.zone('customer_features', size='300px'),
                              ])
                      ])
        ])
    q.page['header'] = ui.header_card(
        box='header',
        title='Credit Card Risk',
        subtitle='Review customer ability to pay credit card bills',
        icon='PaymentCard',
        nav=[
            ui.nav_group('Navigation',
                         items=[
                             ui.nav_item(name='render_customer_selector',
                                         label='Customers'),
                         ]),
            ui.nav_group('Options',
                         items=[
                             ui.nav_item(name='dark_mode', label='Dark Mode'),
                             ui.nav_item(name='light_mode',
                                         label='Light Mode'),
                         ])
        ])
コード例 #13
0
ファイル: tour.py プロジェクト: srisatish/wave
async def serve(q: Q):
    if not q.client.initialized:
        q.client.initialized = True
        await setup_page(q)

    search = q.args[q.args['#'] or default_example_name]
    if search:
        q.page['meta'] = ui.meta_card(box='', redirect=f'#{search}')

    await show_example(q, catalog[search or q.args['#']
                                  or default_example_name])
コード例 #14
0
ファイル: tour.py プロジェクト: srisatish/wave
async def setup_page(q: Q):
    q.page['meta'] = ui.meta_card(
        box='',
        title=app_title,
        layouts=[
            ui.layout(breakpoint='xs',
                      zones=[
                          ui.zone('header'),
                          ui.zone('blurb'),
                          ui.zone('main',
                                  size='calc(100vh - 140px)',
                                  direction=ui.ZoneDirection.ROW,
                                  zones=[ui.zone('code'),
                                         ui.zone('preview')])
                      ])
        ])

    q.page['header'] = ui.header_card(
        box='header',
        title=app_title,
        subtitle=f'{len(catalog)} Interactive Examples',
        image=
        'https://www.h2o.ai/wp-content/themes/h2o2018/templates/dist/images/h2o_logo.svg',
        items=[
            ui.link(label='Wave docs',
                    path='https://wave.h2o.ai/docs/getting-started',
                    target='_blank'),
            ui.link(label='Discussions',
                    path='https://github.com/h2oai/wave/discussions',
                    target='_blank'),
            ui.link(label='Blog',
                    path='https://wave.h2o.ai/blog',
                    target='_blank'),
            ui.link(label='Hybrid Cloud',
                    path='https://www.h2o.ai/hybrid-cloud/',
                    target='_blank'),
            ui.link(label='H2O', path='https://www.h2o.ai/', target='_blank'),
        ])
    q.page['blurb'] = ui.section_card(box='blurb',
                                      title='',
                                      subtitle='',
                                      items=[])
    q.page['code'] = ui.frame_card(box='code', title='', content='')
    q.page['preview'] = ui.frame_card(box='preview',
                                      title='Preview',
                                      path=f'{_base_url}demo')

    await q.page.save()
コード例 #15
0
ファイル: wave-forecast.py プロジェクト: mjdhasan/wave-apps
async def initialize_app(q: Q):
    # Inputs for the app, Should be read from a config file
    walmart_train_s3 = "s3://h2o-benchmark/walmart-sales-forecasting/walmart_train.csv"
    walmart_predictions_s3 = "s3://h2o-benchmark/walmart-sales-forecasting/walmart_test_preds.csv"
    walmart_train = './walmart_train.csv'
    walmart_predictions = './walmart_test_preds.csv'

    # Setup UI elements on the page
    q.page['meta'] = ui.meta_card(box='', title='H2O Wave - Sales Forecasting')
    q.page['title'] = ui.header_card(
        box='1 1 12 1',
        title='Sales Forecasting',
        subtitle='Exploring historic demand and forecasts for supply chain optimization',
        icon='GiftBox',
        icon_color='#ffe600',
    )
    q.page['loading'] = ui.form_card(
        box='4 4 6 1',
        items=[ui.progress(label='Downloading sales data from AWS S3 ...', caption='')]
    )
    await q.page.save()

    # Download input data from S3
    train = download_file_from_s3(walmart_train_s3, walmart_train, overwrite=False)
    if train is None or not os.path.isfile(train):
        sys.exit(1)
    pred = download_file_from_s3(walmart_predictions_s3, walmart_predictions, overwrite=False)
    if pred is None or not os.path.isfile(pred):
        sys.exit(1)

    q.page['loading'].items[0].progress.label = 'Processing sales data ...'
    await q.page.save()

    # Create default UserInputs and SalesData
    q.app.user_inputs = UserInputs()
    q.app.user_inputs.reset()
    q.app.sales_data = SalesData(walmart_train, walmart_predictions)

    plot_data = q.app.sales_data.get_plot_data(**asdict(q.app.user_inputs))

    del q.page['loading']
    q.page['sidebar'] = ui.form_card(
        box='1 2 3 9',
        items=get_user_input_items(q.app.sales_data, q.app.user_inputs)
    )
    await draw_weekly_sales_plot(q, plot_data)
コード例 #16
0
ファイル: app.py プロジェクト: RAHULRAOSHINDE/wave-apps
def capture_credentials(q: Q):
    q.page['header'] = ui.header_card(
        box=config.boxes['banner'],
        title=config.title,
        subtitle=config.subtitle,
        icon=config.icon,
        icon_color=config.color,
    )
    q.page['twitter_app'] = ui.meta_card(box='')
    q.page['twitter_app'].dialog = ui.dialog(title='Twitter Credentials', primary=True, items=[
        ui.markup(name="request_access", visible=True, content=config.ask_for_access_text),
        ui.textbox(name='consumer_key', label='Consumer Key', required=True, password=True),
        ui.textbox(name='consumer_secret', label='Consumer Secret', required=True, password=True),
        ui.textbox(name='access_token', label='Access Token', required=True, password=True),
        ui.textbox(name='access_token_secret', label='Access Token Secret', required=True, password=True),
        ui.buttons([ui.button(name='submit', label='Configure', primary=True, tooltip="")])
    ])
コード例 #17
0
ファイル: meta_tracking.py プロジェクト: codavinci/wave
async def serve(q: Q):
    count = q.client.count or 0
    if not q.client.initialized:

        # Set up a tracker for the page using Google Analytics.
        # All browser events/activities are logged against the specified property ID.
        q.page['meta'] = ui.meta_card('', tracker=ui.tracker(type=ui.TrackerType.GA, id='G-W810CJL5GP'))
        # That's all you need to do - set up a tracker.
        # The rest of this example does not do anything special related to tracking.

        q.page['example'] = ui.form_card(box='1 1 -1 -1', items=[
            ui.button(name='increment', label=f'Count={count}')
        ])
        q.client.initialized = True
    else:
        if q.args.increment:
            q.client.count = count = count + 1
            q.page['example'].items[0].button.label = f'Count={count}'

    await q.page.save()
コード例 #18
0
async def setup_page(q: Q):
    q.page['meta'] = ui.meta_card(
        box='',
        title=app_title,
        layouts=[
            ui.layout(breakpoint='xs',
                      zones=[
                          ui.zone('header'),
                          ui.zone('blurb'),
                          ui.zone('main',
                                  size='calc(100vh - 130px)',
                                  direction=ui.ZoneDirection.ROW,
                                  zones=[ui.zone('code'),
                                         ui.zone('preview')])
                      ])
        ])

    q.page['header'] = ui.header_card(
        box='header',
        title=app_title,
        subtitle=f'{len(catalog)} Interactive Examples',
        nav=[
            ui.nav_group(label='Examples',
                         items=[
                             ui.nav_item(name=f'#{e.name}', label=e.title)
                             for e in catalog.values()
                         ])
        ],
    )

    q.page['blurb'] = ui.section_card(box='blurb',
                                      title='',
                                      subtitle='',
                                      items=[])
    q.page['code'] = ui.frame_card(box='code', title='', content='')
    q.page['preview'] = ui.frame_card(box='preview',
                                      title='Preview',
                                      path='/demo')

    await q.page.save()
コード例 #19
0
ファイル: wave_forecast.py プロジェクト: h2oai/wave-apps
async def initialize_app(q: Q):
    # Setup UI elements on the page
    q.page['meta'] = ui.meta_card(
        box='',
        title='H2O Wave - Sales Forecasting',
        layouts=[
            ui.layout(
                breakpoint='xs',
                zones=[
                    ui.zone('header'),
                    # vh means viewport height, 70px accounts for header and spacing between cards.
                    ui.zone('body',
                            size='calc(100vh - 70px)',
                            direction=ui.ZoneDirection.ROW,
                            zones=[
                                ui.zone('sidebar', size='350px'),
                                ui.zone('content'),
                            ]),
                ]),
        ])
    q.page['title'] = ui.header_card(
        box='header',
        title='Sales Forecasting',
        subtitle=
        'Exploring historic demand and forecasts for supply chain optimization',
        icon='GiftBox',
        icon_color='#ffe600',
    )

    # Create default UserInputs and SalesData
    q.app.user_inputs = UserInputs()
    q.app.user_inputs.reset()
    q.app.sales_data = SalesData(walmart_train, walmart_predictions)

    plot_data = q.app.sales_data.get_plot_data(**asdict(q.app.user_inputs))

    q.page['sidebar'] = ui.form_card(box='sidebar',
                                     items=get_user_input_items(
                                         q.app.sales_data, q.app.user_inputs))
    await draw_weekly_sales_plot(q, plot_data)
コード例 #20
0
async def serve(q: Q):
    if not q.client.initialized:
        q.page['meta'] = ui.meta_card(
            box='',
            # Load Sigma.js
            scripts=[
                ui.script(
                    path=
                    'https://cdnjs.cloudflare.com/ajax/libs/sigma.js/1.2.1/sigma.min.js'
                )
            ],
            # Call Javascript to render our graph using Sigma.js.
            script=ui.inline_script(
                content=render_graph,
                # Ensure that Sigma.js is available before running our script.
                requires=['sigma'],
                # Ensure that the 'graph' element is available before running our script.
                targets=['graph']))
        # Add a placeholder named 'graph' to house our rendered graph.
        q.page['vis'] = ui.markup_card(
            box='1 1 6 8',
            title='Select a node',
            content='<div id="graph" style="width: 800px; height: 500px;"/>')
        # Add another card to display which node was selected.
        q.page['details'] = ui.markdown_card(
            box='1 9 6 1',
            title='',
            content='The selected node will be displayed here.',
        )
        q.client.initialized = True
    else:
        if q.events.graph:
            selected_node = q.events.graph.node_clicked
            if selected_node:
                q.page[
                    'details'].content = f'You clicked on node {selected_node}'

    await q.page.save()
コード例 #21
0
ファイル: tour.py プロジェクト: zeta1999/wave
async def setup_page(q: Q):
    q.page['meta'] = ui.meta_card(
        box='',
        title=app_title
    )

    q.page['header'] = ui.header_card(
        box='1 1 2 1',
        title=app_title,
        subtitle=f'{len(catalog)} Interactive Examples',
    )

    q.page['examples'] = ui.nav_card(
        box='1 2 2 -1',
        items=[
            ui.nav_group(
                label='Examples',
                items=[ui.nav_item(name=f'#{e.name}', label=e.title) for e in catalog.values()]
            ),
        ],
    )

    q.page['blurb'] = ui.form_card(
        box='3 1 5 3',
        items=[],
    )

    q.page['code'] = ui.frame_card(
        box='3 4 5 -1',
        title='',
        content='',
    )
    q.page['preview'] = ui.frame_card(
        box='8 1 5 -1',
        title='Preview',
        path='/demo',
    )
    await q.page.save()
コード例 #22
0
async def serve(q: Q):
    # Track how many times the button has been clicked.
    if q.client.count is None:
        q.client.count = 0

    if not q.client.initialized:
        # Add our script to the page.
        q.page['meta'] = ui.meta_card(
            box='',
            script=ui.inline_script(
                # The Javascript code for this script.
                content=counter_onclick,
                # Execute this script only if the 'counter' element is available.
                targets=['counter'],
            ))
        q.page['form'] = ui.form_card(
            box='1 1 2 2',
            title='Counter',
            items=[
                # Display our custom button.
                ui.markup(content=counter_html),
                ui.text(''),
            ],
        )
        q.client.initialized = True
    else:
        # Do we have an event from the counter?
        if q.events.counter:
            # Is 'clicked' True?
            if q.events.counter.clicked:
                # Increment the count.
                q.client.count += 1
                # Display the latest count.
                q.page['form'].items[
                    1].text.content = f'You clicked {q.client.count} times.'

    await q.page.save()
コード例 #23
0
async def serve(q: Q):
    if not q.client.initialized:
        # Create an empty meta_card to hold the dialog
        q.page['meta'] = ui.meta_card(box='')
        # Display a button to launch dialog dialog
        q.page['example'] = ui.form_card(box='1 1 2 1',
                                         items=[
                                             ui.button(name='launch_dialog',
                                                       label='Launch dialog',
                                                       primary=True)
                                         ])
        q.client.initialized = True

    # Was the launch_dialog button clicked?
    if q.args.launch_dialog:
        # Create a dialog with a close button
        q.page['meta'].dialog = ui.dialog(
            title='Hello!',
            name='my_dialog',
            items=[
                ui.text('Click the X button to close this dialog.'),
            ],
            # Enable a close button (displayed at the top-right of the dialog)
            closable=True,
            # Get notified when the dialog is dismissed.
            events=['dismissed'],
        )

    # Did we get events from the dialog?
    if q.events.my_dialog:
        # Was the dialog dismissed?
        if q.events.my_dialog.dismissed:
            # Delete the dialog
            q.page['meta'].dialog = None

    await q.page.save()
コード例 #24
0
META_CARD = ui.meta_card(
    box='',
    title='WaCy',
    icon='https://raw.githubusercontent.com/thewaverguy/wacy/main/docs/source/_static/logo/logo_light_250_x_250.svg',
    layouts=[
        ui.layout(
            breakpoint='xs',
            zones=[
                ui.zone(name='header'),
                ui.zone(name='main', zones=[
                    ui.zone(name='input_row', zones=[
                        ui.zone(name='input_model'),
                        ui.zone(name='input_text')
                    ]),
                    ui.zone(name='entity_row', direction='row', zones=[
                        ui.zone(name='entity_settings', size='30%'),
                        ui.zone(name='entity_visualizer', size='70%')
                    ]),
                    ui.zone(name='dependency_row', direction='row', zones=[
                        ui.zone(name='dependency_settings', size='30%'),
                        ui.zone(name='dependency_visualizer', size='70%')
                    ]),
                    ui.zone(name='token_attributes'),
                    ui.zone(name='similarity_row', direction='row', zones=[
                        ui.zone(name='similarity_settings', size='30%'),
                        ui.zone(name='similarity_visualizer', size='70%')
                    ]),
                ]),
                ui.zone(name='footer')
            ]
        )
    ],
    theme='light'
)
コード例 #25
0
async def show_orange_dashboard(q: Q):
    q.page['meta'] = ui.meta_card(
        box='',
        layouts=[
            ui.layout(breakpoint='xl',
                      width='1200px',
                      zones=[
                          ui.zone('header'),
                          ui.zone('control'),
                          ui.zone('top',
                                  direction=ui.ZoneDirection.ROW,
                                  size='385px',
                                  zones=[
                                      ui.zone('top_left',
                                              direction=ui.ZoneDirection.ROW,
                                              size='66%'),
                                      ui.zone('top_right'),
                                  ]),
                          ui.zone('middle',
                                  direction=ui.ZoneDirection.ROW,
                                  size='400px'),
                          ui.zone('bottom',
                                  direction=ui.ZoneDirection.ROW,
                                  size='200px'),
                          ui.zone('footer'),
                      ])
        ])

    q.page['header'] = ui.header_card(box='header',
                                      title='H2O Wave Demo',
                                      subtitle='Orange Dashboard',
                                      nav=global_nav)

    q.page['section'] = ui.section_card(
        box='control',
        title=next(sample_title),
        subtitle=next(sample_caption),
        items=[
            ui.checkbox(name='search', label=next(sample_title), value=True),
            ui.dropdown(name='distribution',
                        label='',
                        value='option0',
                        choices=[
                            ui.choice(name=f'option{i}',
                                      label=next(sample_term))
                            for i in range(5)
                        ]),
            ui.dropdown(name='source',
                        label='',
                        value='option0',
                        choices=[
                            ui.choice(name=f'option{i}',
                                      label=next(sample_term))
                            for i in range(5)
                        ]),
            ui.dropdown(name='range',
                        label='',
                        value='option0',
                        choices=[
                            ui.choice(name=f'option{i}',
                                      label=next(sample_term))
                            for i in range(5)
                        ]),
        ],
    )

    user_days = generate_time_series(30)
    user_counts = generate_random_walk()

    q.page['unique_impressions'] = ui.tall_series_stat_card(
        box='top_left',
        title=next(sample_title),
        value=next(sample_amount),
        aux_value=next(sample_percent),
        plot_type='interval',
        plot_color='$orange',
        plot_category='date',
        plot_value='users',
        plot_zero_value=0,
        plot_data=data(
            fields=['date', 'users'],
            rows=[(next(user_days), next(user_counts)) for i in range(60)],
            pack=True,
        ),
    )

    q.page['unique_clicks'] = ui.tall_series_stat_card(
        box='top_left',
        title=next(sample_title),
        value=next(sample_dollars),
        aux_value=next(sample_title),
        plot_type='interval',
        plot_color='$amber',
        plot_category='date',
        plot_value='users',
        plot_zero_value=0,
        plot_data=data(
            fields=['date', 'users'],
            rows=[(next(user_days), next(user_counts)) for i in range(60)],
            pack=True,
        ),
    )

    q.page['popularity'] = ui.wide_series_stat_card(
        box='top_right',
        title=next(sample_term),
        value=next(sample_percent),
        aux_value=next(sample_amount),
        plot_type='area',
        plot_color='$tangerine',
        plot_category='date',
        plot_value='users',
        plot_zero_value=0,
        plot_data=data(
            fields=['date', 'users'],
            rows=[(next(user_days), next(user_counts)) for i in range(60)],
            pack=True,
        ),
    )
    q.page['search_traffic'] = ui.wide_series_stat_card(
        box='top_right',
        title=next(sample_term),
        value=next(sample_percent),
        aux_value=next(sample_dollars),
        plot_type='interval',
        plot_color='$tangerine',
        plot_category='date',
        plot_value='users',
        plot_zero_value=0,
        plot_data=data(
            fields=['date', 'users'],
            rows=[(next(user_days), next(user_counts)) for i in range(60)],
            pack=True,
        ),
    )
    q.page['social_media_traffic'] = ui.wide_series_stat_card(
        box='top_right',
        title=next(sample_title),
        value='68K',
        aux_value='Down 6%',
        plot_type='area',
        plot_color='$tangerine',
        plot_category='date',
        plot_value='users',
        plot_zero_value=0,
        plot_data=data(
            fields=['date', 'users'],
            rows=[(next(user_days), next(user_counts)) for i in range(60)],
            pack=True,
        ),
    )

    audience_days1 = generate_time_series(60)
    audience_days2 = generate_time_series(60)
    audience_hits1 = generate_random_walk(10000, 20000, 0.2)
    audience_hits2 = generate_random_walk(8000, 15000)

    q.page['stats'] = ui.form_card(
        box='middle',
        title=next(sample_title),
        items=[
            ui.stats(items=[
                ui.stat(label=next(sample_term), value=next(sample_dollars)),
                ui.stat(label=next(sample_term), value=next(sample_percent)),
                ui.stat(label=next(sample_term), value=next(sample_amount)),
                ui.stat(label=next(sample_term), value=next(sample_dollars)),
                ui.stat(label=next(sample_term), value=next(sample_percent)),
                ui.stat(label=next(sample_term), value=next(sample_amount)),
                ui.stat(label=next(sample_term), value=next(sample_dollars)),
                ui.stat(label=next(sample_term), value=next(sample_percent)),
            ],
                     justify=ui.StatsJustify.BETWEEN,
                     inset=True),
            ui.visualization(
                plot=ui.plot([
                    ui.mark(type='area',
                            x_scale='time',
                            x='=date',
                            y='=visitors',
                            color='=site',
                            color_range='$orange $amber',
                            curve=ui.MarkCurve.SMOOTH),
                    ui.mark(type='line',
                            x_scale='time',
                            x='=date',
                            y='=visitors',
                            color='=site',
                            color_range='$orange $amber',
                            curve=ui.MarkCurve.SMOOTH),
                ]),
                data=data(
                    fields=['site', 'date', 'visitors'],
                    rows=[
                        ('Online', next(audience_days1), next(audience_hits1))
                        for i in range(60)
                    ] +
                    [('In-store', next(audience_days2), next(audience_hits2))
                     for i in range(60)],
                    pack=True),
                height='240px',
            )
        ],
    )

    q.page['click_through'] = ui.large_stat_card(
        box='bottom',
        title=next(sample_title),
        value=next(sample_amount),
        aux_value=next(sample_dollars),
        caption=' '.join([next(sample_caption) for i in range(3)]),
    )

    q.page['view_through'] = ui.large_stat_card(
        box='bottom',
        title=next(sample_title),
        value=next(sample_amount),
        aux_value=next(sample_dollars),
        caption=' '.join([next(sample_caption) for i in range(3)]),
    )
    q.page['total_conversions'] = ui.large_stat_card(
        box='bottom',
        title=next(sample_title),
        value=next(sample_amount),
        aux_value=next(sample_dollars),
        caption=' '.join([next(sample_caption) for i in range(3)]),
    )

    q.page['footer'] = ui.footer_card(
        box='footer', caption='(c) 2021 H2O.ai. All rights reserved.')

    await q.page.save()
コード例 #26
0
ファイル: dashboard_grey.py プロジェクト: mswope63/wave
async def show_grey_dashboard(q: Q):
    q.page['meta'] = ui.meta_card(box='', layouts=[
        ui.layout(
            breakpoint='xl',
            min_width='800px',
            zones=[
                ui.zone('header', size='0'),
                ui.zone('body', size='1000px', zones=[
                    ui.zone('title', size='0'),
                    ui.zone('top', direction=ui.ZoneDirection.ROW, size='25%'),
                    ui.zone('middle', direction=ui.ZoneDirection.ROW, size='25%'),
                    ui.zone('middle2', direction=ui.ZoneDirection.ROW, size='25%'),
                    ui.zone('bottom', direction=ui.ZoneDirection.ROW, size='20%'),
                ]),
                ui.zone('footer', size='0'),
            ]
        )
    ])

    q.page['header'] = ui.header_card(box='header', title='H2O Wave Demo', subtitle='Grey Dashboard',
                                      nav=global_nav)
    q.page['section'] = ui.section_card(
        box='title',
        title=next(sample_title),
        subtitle=next(sample_caption),
        items=[
            ui.label(label='Start:'),
            ui.date_picker(name='target_date', label='', value='2020-12-20'),
            ui.label(label='End:'),
            ui.date_picker(name='target_date', label='', value='2020-12-25'),
        ],
    )

    stock_dates = generate_time_series(10000)
    stock_prices = generate_random_walk()

    q.page['small'] = ui.small_stat_card(
        box=ui.box('top', order=1),
        title=next(sample_term),
        value=next(sample_dollars),
    )
    q.page['small_series'] = ui.small_series_stat_card(
        box=ui.box('top', order=2),
        title=next(sample_term),
        value=next(sample_dollars),
        plot_category='date',
        plot_value='price',
        plot_data=data(
            fields=['date', 'price'],
            rows=[(next(stock_dates), next(stock_prices)) for i in range(30)],
            pack=True,
        ),
    )
    q.page['small_series_interval'] = ui.small_series_stat_card(
        box=ui.box('top', order=3),
        title=next(sample_term),
        value=next(sample_dollars),
        plot_category='date',
        plot_value='price',
        plot_type=ui.SmallSeriesStatCardPlotType.INTERVAL,
        plot_data=data(
            fields=['date', 'price'],
            rows=[(next(stock_dates), next(stock_prices)) for i in range(30)],
            pack=True,
        ),
    )
    q.page['wide_series'] = ui.wide_series_stat_card(
        box=ui.box('middle', order=1),
        title=next(sample_term),
        value=next(sample_dollars),
        aux_value=next(sample_percent),
        plot_category='date',
        plot_value='price',
        plot_data=data(
            fields=['date', 'price'],
            rows=[(next(stock_dates), next(stock_prices)) for i in range(30)],
            pack=True,
        ),
    )
    q.page['wide_bar'] = ui.wide_bar_stat_card(
        box=ui.box('middle', order=2),
        title=next(sample_term),
        value=next(sample_dollars),
        aux_value=next(sample_percent),
        progress=random.random(),
    )
    q.page['wide_gauge'] = ui.wide_gauge_stat_card(
        box=ui.box('middle', order=3),
        title=next(sample_term),
        value=next(sample_dollars),
        aux_value=next(sample_percent),
        progress=random.random(),
    )
    q.page['tall_series'] = ui.tall_series_stat_card(
        box=ui.box('middle2', order=1),
        title=next(sample_term),
        value=next(sample_dollars),
        aux_value=next(sample_percent),
        plot_category='date',
        plot_value='price',
        plot_data=data(
            fields=['date', 'price'],
            rows=[(next(stock_dates), next(stock_prices)) for i in range(30)],
            pack=True,
        ),
    )
    q.page['tall_gauge'] = ui.tall_gauge_stat_card(
        box=ui.box('middle2', order=2),
        title=next(sample_term),
        value=next(sample_dollars),
        aux_value=next(sample_percent),
        progress=random.random(),
    )
    q.page['large'] = ui.large_stat_card(
        box=ui.box('bottom', order=1),
        title=next(sample_term),
        value=next(sample_dollars),
        aux_value=next(sample_percent),
        caption=next(sample_caption),
    )
    q.page['large_bar'] = ui.large_bar_stat_card(
        box=ui.box('bottom', order=2),
        title=next(sample_term),
        value=next(sample_dollars),
        value_caption=next(sample_term),
        aux_value=next(sample_dollars),
        aux_value_caption=next(sample_term),
        progress=random.random(),
        caption=next(sample_caption),
    )

    q.page['footer'] = ui.footer_card(box='footer', caption='(c) 2021 H2O.ai. All rights reserved.')

    await q.page.save()
コード例 #27
0
ファイル: customer.py プロジェクト: mjdhasan/wave-apps
def init(q: Q):
    q.page.drop()
    q.page['meta'] = ui.meta_card(
        box='',
        layouts=[
            ui.layout(breakpoint='xs',
                      zones=[
                          ui.zone('title', size='80px'),
                          ui.zone('menu', size='80px'),
                          ui.zone('risk_table_selected', size='400px'),
                          ui.zone('risk_explanation', size='150px'),
                          ui.zone('shap_plot', size='600px'),
                          ui.zone('button_group', size='80px'),
                      ]),
            ui.layout(breakpoint='m',
                      width='1920px',
                      zones=[
                          ui.zone('header',
                                  size='80px',
                                  direction=ui.ZoneDirection.ROW,
                                  zones=[
                                      ui.zone('title', size='400px'),
                                      ui.zone('menu'),
                                      ui.zone('button_group', size='200px'),
                                  ]),
                          ui.zone('body',
                                  size='900px',
                                  direction=ui.ZoneDirection.ROW,
                                  zones=[
                                      ui.zone('risk_table_selected',
                                              size='400px'),
                                      ui.zone(
                                          'pane',
                                          direction=ui.ZoneDirection.COLUMN,
                                          zones=[
                                              ui.zone('risk_explanation',
                                                      size='150px'),
                                              ui.zone('shap_plot'),
                                          ])
                                  ]),
                      ]),
            ui.layout(breakpoint='xl',
                      width='1920px',
                      zones=[
                          ui.zone('header',
                                  size='80px',
                                  direction=ui.ZoneDirection.ROW,
                                  zones=[
                                      ui.zone('title', size='400px'),
                                      ui.zone('menu'),
                                      ui.zone('button_group', size='200px'),
                                  ]),
                          ui.zone('body',
                                  size='1200px',
                                  direction=ui.ZoneDirection.ROW,
                                  zones=[
                                      ui.zone('risk_table_selected',
                                              size='400px'),
                                      ui.zone(
                                          'pane',
                                          direction=ui.ZoneDirection.COLUMN,
                                          zones=[
                                              ui.zone('risk_explanation',
                                                      size='150px'),
                                              ui.zone('shap_plot'),
                                          ])
                                  ]),
                      ])
        ])

    render_header(q)
コード例 #28
0
ファイル: meta_redirect.py プロジェクト: torstenvolk/wave
# Meta / Redirect
# #Redirect the page to a new URL or hash. #meta
# ---
import time

from h2o_wave import site, ui

page = site['/demo']

page['meta'] = ui.meta_card(box='')

page['example'] = ui.markdown_card(
    box='1 1 2 2',
    title='Redirect a page',
    content=
    'This page should redirect to Wikipedia in a few seconds. Wait for it...',
)
page.save()

time.sleep(3)
# Redirect to a hash.
page['meta'].redirect = '#widgets'
page.save()

time.sleep(3)
# Redirect to a URL.
page['meta'].redirect = 'https://www.wikipedia.org'
page.save()
コード例 #29
0
ファイル: layout_responsive.py プロジェクト: sjzno1/wave
page['meta'] = ui.meta_card(box='', layouts=[
    ui.layout(
        # If the viewport width >= 0:
        breakpoint='xs',
        zones=[
            # 80px high header
            ui.zone('header', size='80px'),
            # Use remaining space for content
            ui.zone('content')
        ]
    ),
    ui.layout(
        # If the viewport width >= 768:
        breakpoint='m',
        zones=[
            # 80px high header
            ui.zone('header', size='80px'),
            # Use remaining space for body
            ui.zone('body', direction=ui.ZoneDirection.ROW, zones=[
                # 250px wide sidebar
                ui.zone('sidebar', size='250px'),
                # Use remaining space for content
                ui.zone('content'),
            ]),
            ui.zone('footer', size='0'),
        ]
    ),
    ui.layout(
        # If the viewport width >= 1200:
        breakpoint='xl',
        width='1200px',
        zones=[
            # 80px high header
            ui.zone('header', size='80px'),
            # Use remaining space for body
            ui.zone('body', direction=ui.ZoneDirection.ROW, zones=[
                # 300px wide sidebar
                ui.zone('sidebar', size='300px'),
                # Use remaining space for other widgets
                ui.zone('other', zones=[
                    # Use one half for charts
                    ui.zone('charts', direction=ui.ZoneDirection.ROW),
                    # Use other half for content
                    ui.zone('content'),
                ]),
            ]),
            ui.zone('footer', size='0'),
        ]
    )
])
コード例 #30
0
async def show_blue_dashboard(q: Q):
    q.page['meta'] = ui.meta_card(
        box='',
        layouts=[
            ui.layout(breakpoint='xl',
                      width='1200px',
                      zones=[
                          ui.zone('header', size='80px'),
                          ui.zone('title', size='0'),
                          ui.zone('top',
                                  direction=ui.ZoneDirection.ROW,
                                  size='200px'),
                          ui.zone('middle',
                                  direction=ui.ZoneDirection.ROW,
                                  size='385px'),
                          ui.zone('bottom',
                                  direction=ui.ZoneDirection.ROW,
                                  size='385px'),
                          ui.zone('footer', size='50px'),
                      ])
        ])

    q.page['header'] = ui.header_card(box='header',
                                      title='H2O Wave Demo',
                                      subtitle='Blue Dashboard',
                                      nav=global_nav)

    q.page['title'] = ui.section_card(
        box='title',
        title=next(sample_title),
        subtitle=next(sample_caption),
        items=[
            ui.toggle(name='search', label=next(sample_term), value=True),
            ui.dropdown(name='distribution',
                        label='',
                        value='option0',
                        choices=[
                            ui.choice(name=f'option{i}',
                                      label=next(sample_term))
                            for i in range(5)
                        ]),
            ui.date_picker(name='target_date', label='', value='2020-12-25'),
        ],
    )

    sales_dates = generate_time_series(1000)
    sales_values = generate_random_walk()

    q.page['total_quantity'] = ui.tall_series_stat_card(
        box=ui.box('top', order=1),
        title=next(sample_term),
        value=next(sample_dollars),
        aux_value=next(sample_title),
        plot_type='area',
        plot_color='$blue',
        plot_category='date',
        plot_value='quantity',
        plot_zero_value=0,
        plot_data=data(
            fields=['date', 'quantity'],
            rows=[(next(sales_dates), next(sales_values)) for i in range(30)],
            pack=True,
        ),
    )
    q.page['total_cost'] = ui.tall_series_stat_card(
        box=ui.box('top', order=2),
        title=next(sample_term),
        value=next(sample_amount),
        aux_value=next(sample_percent),
        plot_type='area',
        plot_color='$blue',
        plot_category='date',
        plot_value='cost',
        plot_zero_value=0,
        plot_data=data(
            fields=['date', 'cost'],
            rows=[(next(sales_dates), next(sales_values)) for i in range(30)],
            pack=True,
        ),
    )
    q.page['total_revenue'] = ui.tall_series_stat_card(
        box=ui.box('top', order=3),
        title=next(sample_term),
        value=next(sample_dollars),
        aux_value=next(sample_title),
        plot_type='area',
        plot_color='$blue',
        plot_category='date',
        plot_value='revenue',
        plot_zero_value=0,
        plot_data=data(
            fields=['date', 'revenue'],
            rows=[(next(sales_dates), next(sales_values)) for i in range(30)],
            pack=True,
        ),
    )
    q.page['total_profit'] = ui.tall_series_stat_card(
        box=ui.box('top', order=4),
        title=next(sample_term),
        value=next(sample_amount),
        aux_value=next(sample_title),
        plot_type='area',
        plot_color='$blue',
        plot_category='date',
        plot_value='profit',
        plot_zero_value=0,
        plot_data=data(
            fields=['date', 'profit'],
            rows=[(next(sales_dates), next(sales_values)) for i in range(30)],
            pack=True,
        ),
    )

    ytd_revenue = generate_random_walk(0, 10000, 0.5)

    q.page['revenue_by_customer'] = ui.plot_card(
        box='middle',
        title=next(sample_title),
        data=data(
            fields=['channel', 'sessions'],
            rows=[(next(sample_term), next(ytd_revenue)) for i in range(10)],
            pack=True,
        ),
        plot=ui.plot([
            ui.mark(type='interval',
                    x='=sessions',
                    y='=channel',
                    y_min=0,
                    color='$blue')
        ]))

    months = generate_sequence(['Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'])

    q.page['ytd_revenue'] = ui.plot_card(
        box=ui.box(zone='middle', width='66%', order=2),
        title=next(sample_title),
        data=data(fields=['month', 'channel', 'revenue'],
                  rows=[(next(months), 'Online', next(ytd_revenue))
                        for i in range(6)] +
                  [(next(months), 'In-store', next(ytd_revenue))
                   for i in range(6)],
                  pack=True),
        plot=ui.plot([
            ui.mark(type='interval',
                    x='=month',
                    y='=revenue',
                    color='=channel',
                    dodge='auto',
                    y_min=0,
                    color_range='$cyan $blue')
        ]))

    q.page['top_products'] = ui.stat_list_card(
        box='bottom',
        title=next(sample_title),
        subtitle=next(sample_caption),
        items=[
            ui.stat_list_item(label=next(sample_term),
                              caption=next(sample_title),
                              value=next(sample_dollars),
                              icon=next(sample_icon),
                              icon_color=next(sample_color)) for i in range(5)
        ],
    )

    q.page['recent_earnings'] = ui.stat_table_card(
        box=ui.box(zone='bottom', width='66%', order=2),
        title=next(sample_title),
        subtitle=next(sample_caption),
        columns=['Date', 'Sales', 'Earnings', 'Taxes'],
        items=[
            ui.stat_table_item(label=next(sample_title),
                               values=[
                                   next(sample_dollars),
                                   next(sample_percent),
                                   next(sample_amount)
                               ]) for i in range(8)
        ])

    q.page['footer'] = ui.footer_card(
        box='footer', caption='(c) 2021 H2O.ai. All rights reserved.')

    await q.page.save()