Exemple #1
0
def card_place_order(q: Q) -> ui.FormCard:
    item_list = []
    for i, item in enumerate(q.client.items.keys()):
        text = ui.text_xl(f'{item}')
        gpo_order = ui.slider(name=f'gpo_order_{i}',
                              label='How many to order from GPO?',
                              min=0,
                              max=q.client.items[item].max_storage,
                              value=random.randint(0, q.client.max_storage))
        alt_order = ui.slider(name=f'alt_order_{i}',
                              label='How many to order from alt?',
                              min=0,
                              max=q.client.items[item].max_storage,
                              value=random.randint(0, q.client.max_storage))
        item_list.extend([text, gpo_order, alt_order])

    buttons = ui.buttons([
        ui.button(name='make_order', label='Place Order', primary=True),
        ui.button(name='go_home', label='Back', primary=True)
    ])
    item_list.append(buttons)
    card = ui.FormCard(
        box=box_sidebar,
        items=item_list,
    )

    return card
Exemple #2
0
async def serve(q: Q):
    if not q.client.initialized:  # First visit
        q.client.initialized = True
        q.client.points = 25
        q.client.alpha = 50

        q.page['controls'] = ui.form_card(
            box='1 1 2 3',
            items=[
                ui.text_xl("Lets make some plots"),
                ui.slider(name='points',
                          label='Points',
                          min=5,
                          max=50,
                          step=1,
                          value=q.client.points,
                          trigger=True),
                ui.slider(name='alpha',
                          label='Alpha',
                          min=5,
                          max=100,
                          step=1,
                          value=q.client.alpha,
                          trigger=True),
            ])
        q.page['plot'] = ui.markdown_card(box='3 1 2 3',
                                          title='Your plot!',
                                          content='')

    if q.args.points is not None:
        q.client.points = q.args.points

    if q.args.alpha is not None:
        q.client.alpha = q.args.alpha

    n = q.client.points

    # Render plot
    plt.figure(figsize=(2, 2))
    plt.scatter(np.random.rand(n),
                np.random.rand(n),
                s=(30 * np.random.rand(n))**2,
                c=np.random.rand(n),
                alpha=q.client.alpha / 100.0)
    image_filename = f'{str(uuid.uuid4())}.png'
    plt.savefig(image_filename)

    # Upload
    image_path, = await q.site.upload([image_filename])

    # Clean up
    os.remove(image_filename)

    # Display our plot in our markdown card
    q.page['plot'].content = f'![plot]({image_path})'

    # Save page
    await q.page.save()
Exemple #3
0
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()
Exemple #4
0
async def serve(q: Q):
    hilbert_curve = make_hilbert_curve(300, q.args.depth or 5)

    if not q.client.initialized:
        q.page['curve'] = ui.graphics_card(
            box='1 1 4 6',
            view_box='0 0 300 300',
            width='100%',
            height='100%',
            scene=g.scene(hilbert_curve=g.path(
                d=hilbert_curve, fill='none', stroke='#333')),
        )
        q.page['form'] = ui.form_card(
            box='1 7 4 1',
            items=[
                ui.slider(name='depth',
                          label='Play with this Hilbert curve!',
                          min=1,
                          max=6,
                          value=5,
                          trigger=True),
            ],
        )
        q.client.initialized = True
    else:
        g.draw(q.page['curve'].scene.hilbert_curve, d=hilbert_curve)

    await q.page.save()
Exemple #5
0
async def get_inputs(q: Q):
    q.page['main'] = ui.form_card(
        box="1 2 8 5",
        items=[
            ui.text_xl('Enter your text input for generation:'),
            ui.textbox(name="input_text",
                       label='',
                       value=q.app.input_text,
                       multiline=True),
            ui.separator(),
            ui.slider(
                name="num_words_to_generate",
                label=
                "Maximum number of words to generate (including input text)",
                min=5,
                max=50,
                step=1,
                value=q.app.num_words_to_generate
                if q.app.num_words_to_generate else 12,
            ),
            ui.separator(),
            ui.buttons([
                ui.button(name="generate_text", label='Generate',
                          primary=True),
            ])
        ])
Exemple #6
0
async def start_new_game(q: Q):
    q.client.game = Game(q.user.player.player_id)
    q.user.player.games[q.client.game.game_id] = q.client.game

    q.page['starting_game'] = ui.form_card(
        box='4 4 3 3',
        items=[
            ui.text_l('I am thinking of a number between 1 and 100'),
            ui.text_m('can you guess what it is?'),
            ui.text_xs('Рађ'),
            ui.slider(
                name='guess',
                label='your guess',
                min=1,
                max=100,
                value=100,
                trigger=True,
            ),
            ui.text_xs('Рађ'),
            ui.buttons(
                items=[
                    ui.button(name='quit_game', label='Quit', primary=True)
                ],
                justify='center',
            ),
        ],
    )
    await q.page.save()
Exemple #7
0
async def serve(q: Q):
    if not q.client.initialized:  # First visit
        q.client.initialized = True
        q.client.points = 25
        q.client.plotly_controls = False

        q.page['controls'] = ui.form_card(box='1 1 4 2',
                                          items=[
                                              ui.slider(name='points',
                                                        label='Points',
                                                        min=5,
                                                        max=50,
                                                        step=1,
                                                        value=q.client.points,
                                                        trigger=True),
                                              ui.toggle(
                                                  name='plotly_controls',
                                                  label='Plotly Controls',
                                                  trigger=True),
                                          ])
        q.page['plot'] = ui.frame_card(box='1 3 4 5', title='', content='')

    if q.args.points:
        q.client.points = q.args.points

    if q.args.plotly_controls is not None:
        q.client.plotly_controls = q.args.plotly_controls

    n = q.client.points

    # Create plot with plotly
    fig = go.Figure(data=go.Scatter(
        x=np.random.rand(n),
        y=np.random.rand(n),
        mode='markers',
        marker=dict(size=(8 * np.random.rand(n))**2, color=np.random.rand(n)),
        opacity=0.8,
    ))
    _ = fig.update_layout(
        margin=dict(l=10, r=10, t=10, b=10),
        paper_bgcolor='rgb(255, 255, 255)',
        plot_bgcolor='rgb(255, 255, 255)',
    )
    config = {
        'scrollZoom': q.client.plotly_controls,
        'showLink': q.client.plotly_controls,
        'displayModeBar': q.client.plotly_controls
    }
    html = pio.to_html(fig,
                       validate=False,
                       include_plotlyjs='cdn',
                       config=config)

    q.page['plot'].content = html

    # Save page
    await q.page.save()
Exemple #8
0
def form_default(q: Q):
    # display when app is initialized
    return [
        ui.text(content=DATASET_TEXT),
        ui.dropdown(name='dai_instance_id', label='Select Driverless AI instance', value=q.client.dai_instance_id,
                    choices=q.client.choices_dai_instances, required=True),
        ui.text(content=STEAM_TEXT, visible=q.client.disable_training),
        ui.slider(name='dai_interpretability', label='Interpretability', min=1, max=10, step=1, value=7),
        ui.toggle(name='dai_reproducible', label='Reproducible', value=False),
        ui.buttons(items=[
            ui.button(name='train', label='Train', primary=True, disabled=q.client.disable_training),
            ui.button(name='predict', label='Predict', primary=True, disabled=True),
        ])
    ]
Exemple #9
0
async def show_slider(q: Q, message: str):
    q.page['output'] = ui.form_card(box='1 1 3 2',
                                    title="Party Meter",
                                    items=[
                                        ui.slider(
                                            name='temperature',
                                            label='Temperature (°C)',
                                            max=50,
                                            value=q.args.temperature,
                                            trigger=True,
                                        ),
                                        ui.text(message),
                                    ])
    await q.page.save()
Exemple #10
0
async def serve(q: Q):
    if q.args.show_inputs:
        q.page['example'].items = [
            ui.text(f'slider={q.args.slider}'),
            ui.text(f'slider_zero={q.args.slider_zero}'),
            ui.text(f'slider_disabled={q.args.slider_disabled}'),
            ui.button(name='show_form', label='Back', primary=True),
        ]
    else:
        q.page['example'] = ui.form_card(box='1 1 4 10',
                                         items=[
                                             ui.slider(name='slider',
                                                       label='Standard slider',
                                                       min=0,
                                                       max=100,
                                                       step=10,
                                                       value=30),
                                             ui.slider(
                                                 name='slider_zero',
                                                 label='Origin from zero',
                                                 min=-10,
                                                 max=10,
                                                 step=1,
                                                 value=-3),
                                             ui.slider(name='slider_disabled',
                                                       label='Disabled slider',
                                                       min=0,
                                                       max=100,
                                                       step=10,
                                                       value=30,
                                                       disabled=True),
                                             ui.button(name='show_inputs',
                                                       label='Submit',
                                                       primary=True),
                                         ])
    await q.page.save()
Exemple #11
0
def form_training_completed(q: Q):
    # display when model training is completed
    return [
        ui.text(content=DATASET_TEXT),
        ui.dropdown(name='dai_instance_id', label='Select Driverless AI instance', value=q.client.dai_instance_id,
                    choices=q.client.choices_dai_instances, required=True),
        ui.slider(name='dai_interpretability', label='Interpretability', min=1, max=10, step=1,
                  value=q.client.dai_interpretability),
        ui.toggle(name='dai_reproducible', label='Reproducible', value=q.client.dai_reproducible),
        ui.buttons(items=[
            ui.button(name='train', label='Train', primary=True),
            ui.button(name='predict', label='Predict', primary=True)
        ]),
        ui.message_bar(type='success', text='Training successfully completed!'),
        ui.text(content=q.client.model_details)
    ]
Exemple #12
0
def form_training_progress(q: Q):
    # display when model training is in progress
    return [
        ui.text(content=DATASET_TEXT),
        ui.dropdown(name='dai_instance_id', label='Select Driverless AI instance', value=q.client.dai_instance_id,
                    choices=q.client.choices_dai_instances, required=True),
        ui.slider(name='dai_interpretability', label='Interpretability', min=1, max=10, step=1,
                  value=q.client.dai_interpretability),
        ui.toggle(name='dai_reproducible', label='Reproducible', value=q.client.dai_reproducible),
        ui.buttons(items=[
            ui.button(name='train', label='Train', primary=True, disabled=True),
            ui.button(name='predict', label='Predict', primary=True, disabled=True)
        ]),
        ui.progress(label='Training in progress...', caption='This can take a few minutes...'),
        ui.text(content=q.client.model_details)
    ]
Exemple #13
0
def get_user_input_items(sales_data, user_inputs, progress=False):
    return [
        ui.text_l('**Select Area of Interest**'),
        ui.dropdown(
            name='stores',
            label='Store IDs',
            values=[str(x) for x in user_inputs.stores],
            choices=[ui.choice(name=str(x), label=str(x)) for x in sales_data.stores_unique],
            tooltip='Select the Stores to include in the prediction',
            trigger=True,
        ),
        ui.text_xs('⠀'),
        ui.dropdown(
            name='departments',
            label='Product IDs',
            values=[str(x) for x in user_inputs.departments],
            choices=[ui.choice(name=str(x), label=str(x)) for x in sales_data.departments_unique],
            tooltip='Select the Products to include in the prediction',
            trigger=True,
        ),
        ui.frame(content=' ', height="40px"),
        ui.text_l('**Generate Sales Forecast**'),
        ui.slider(
            name='n_forecast_weeks',
            label='Number of Weeks',
            min=0,
            max=len(sales_data.prediction_dates) - 1,
            step=1,
            value=user_inputs.n_forecast_weeks,
            trigger=True,
            tooltip='Select the number of weeks into the future to predict'
        ),
        ui.text_xs('⠀'),
        ui.button(
            name='reset',
            label='Reset',
            primary=True,
            tooltip='Click to reset all values to defaults'
        ),
        ui.text_xs('⠀'),
        ui.progress(label='', caption='', visible=progress),
    ]
Exemple #14
0
def get_user_input_items(sales_data, user_inputs, progress=False):
    return [
        ui.text_l('**Prediction Configuration**'),
        ui.dropdown(
            name='stores',
            label='Store IDs',
            values=[str(x) for x in user_inputs.stores],
            choices=[
                ui.choice(name=str(x), label=str(x))
                for x in sales_data.stores_unique
            ],
            trigger=True,
        ),
        ui.dropdown(
            name='departments',
            label='Product IDs',
            values=[str(x) for x in user_inputs.departments],
            choices=[
                ui.choice(name=str(x), label=str(x))
                for x in sales_data.departments_unique
            ],
            trigger=True,
        ),
        ui.slider(
            name='n_forecast_weeks',
            label='Weeks to predict',
            min=0,
            max=len(sales_data.prediction_dates) - 1,
            step=1,
            value=user_inputs.n_forecast_weeks,
            trigger=True,
        ),
        ui.button(name='reset',
                  label='Reset',
                  primary=True,
                  tooltip='Click to reset all values to defaults'),
        ui.progress(label='', caption='', visible=progress),
    ]
async def serve(q: Q):
    if q.args.generate_csv:
        # Generate
        write_csv('squares.csv', [[x, x * x] for x in range(1, 1 + q.args.row_count)])
        # Upload
        download_path, = await q.site.upload(['squares.csv'])
        # Clean up
        os.remove('squares.csv')

        # Display link
        q.page['example'].items = [
            ui.text_xl('Squares Generated!'),
            ui.text(f'[Download my {q.args.row_count} squares!]({download_path})'),
            ui.button(name='show_form', label='Back', primary=True),
        ]
    else:
        # Accept a row count from the user
        q.page['example'] = ui.form_card(box='1 1 4 10', items=[
            ui.text_xl('Square Generator'),
            ui.slider(name='row_count', label='Squares to generate', min=0, max=100, step=10, value=30),
            ui.button(name='generate_csv', label='Generate', primary=True),
        ])
    await q.page.save()
Exemple #16
0
async def serve(q: Q):
    if not q.client.initialized:
        image = 'https://images.pexels.com/photos/220453/pexels-photo-220453.jpeg?auto=compress&h=750&w=1260'
        f = FakeCategoricalSeries()
        q.client.primary = '#000000'
        q.client.page = '#e2e2e2'
        q.client.card = '#ffffff'
        q.client.text = '#000000'
        q.page['meta'] = ui.meta_card(
            box='',
            theme='custom',
            layouts=[
                ui.layout(breakpoint='xs',
                          zones=[
                              ui.zone('header'),
                              ui.zone('content',
                                      direction=ui.ZoneDirection.ROW,
                                      zones=[
                                          ui.zone('colors', size='340px'),
                                          ui.zone('preview')
                                      ]),
                              ui.zone('footer')
                          ])
            ])
        q.page['header'] = ui.header_card(box='header',
                                          title='Theme generator',
                                          subtitle='Color your app easily',
                                          icon='Color',
                                          icon_color='$card')
        q.page['form'] = ui.form_card(box='colors',
                                      items=[
                                          ui.color_picker(
                                              name='primary',
                                              label='Primary',
                                              trigger=True,
                                              alpha=False,
                                              inline=True,
                                              value=q.client.primary),
                                          ui.color_picker(name='text',
                                                          label='Text',
                                                          trigger=True,
                                                          alpha=False,
                                                          inline=True,
                                                          value=q.client.text),
                                          ui.color_picker(name='card',
                                                          label='Card',
                                                          trigger=True,
                                                          alpha=False,
                                                          inline=True,
                                                          value=q.client.card),
                                          ui.color_picker(name='page',
                                                          label='Page',
                                                          trigger=True,
                                                          alpha=False,
                                                          inline=True,
                                                          value=q.client.page),
                                          ui.text_xl('Check contrast'),
                                          get_contrast('text', 'card', q),
                                          get_contrast('card', 'primary', q),
                                          get_contrast('text', 'page', q),
                                          get_contrast('page', 'primary', q),
                                          ui.text_xl('Copy code'),
                                          ui.frame(content=get_theme_code(q),
                                                   height='180px'),
                                      ])
        q.page['sample'] = ui.form_card(
            box='preview',
            items=[
                ui.text_xl(content='Sample App to show colors'),
                ui.progress(label='A progress bar'),
                ui.inline([
                    ui.checkbox(name='checkbox1',
                                label='A checkbox',
                                value=True),
                    ui.checkbox(name='checkbox2', label='Another checkbox'),
                    ui.checkbox(name='checkbox3',
                                label='Yet another checkbox'),
                    ui.toggle(name='toggle', label='Toggle', value=True),
                ]),
                ui.inline([
                    ui.date_picker(name='date_picker', label='Date picker'),
                    ui.picker(name='picker',
                              label='Picker',
                              choices=[
                                  ui.choice('choice1', label='Choice 1'),
                                  ui.choice('choice2', label='Choice 2'),
                                  ui.choice('choice3', label='Choice 3'),
                              ]),
                    ui.combobox(name='combobox',
                                label='Combobox',
                                choices=['Choice 1', 'Choice 2', 'Choice 3']),
                    ui.persona(title='John Doe',
                               subtitle='Data Scientist',
                               size='s',
                               image=image),
                ]),
                ui.slider(name='slider', label='Slider', value=70),
                ui.link(label='Link'),
                ui.inline(justify='between',
                          items=[
                              ui.stepper(name='stepper',
                                         width='500px',
                                         items=[
                                             ui.step(label='Step 1',
                                                     icon='MailLowImportance'),
                                             ui.step(
                                                 label='Step 2',
                                                 icon='TaskManagerMirrored'),
                                             ui.step(label='Step 3',
                                                     icon='Cafe'),
                                         ]),
                              ui.tabs(name='menu',
                                      value='email',
                                      items=[
                                          ui.tab(name='email',
                                                 label='Mail',
                                                 icon='Mail'),
                                          ui.tab(name='events',
                                                 label='Events',
                                                 icon='Calendar'),
                                          ui.tab(name='spam', label='Spam'),
                                      ]),
                          ]),
                ui.inline(items=[
                    ui.table(
                        name='table',
                        width='50%',
                        columns=[
                            ui.table_column(
                                name='name', label='Name', min_width='80px'),
                            ui.table_column(name='surname',
                                            label='Surname',
                                            filterable=True),
                            ui.table_column(name='age',
                                            label='Age',
                                            sortable=True),
                            ui.table_column(
                                name='progress',
                                label='Progress',
                                cell_type=ui.progress_table_cell_type(
                                    color='$themePrimary')),
                        ],
                        rows=[
                            ui.table_row(name='row1',
                                         cells=['John', 'Doe', '25', '0.90']),
                            ui.table_row(name='row2',
                                         cells=['Ann', 'Doe', '35', '0.75']),
                            ui.table_row(
                                name='row3',
                                cells=['Casey', 'Smith', '40', '0.33']),
                        ],
                        height='330px',
                    ),
                    ui.visualization(
                        width='50%',
                        plot=ui.plot([
                            ui.mark(type='interval',
                                    x='=product',
                                    y='=price',
                                    y_min=0)
                        ]),
                        data=data(fields='product price',
                                  rows=[(c, x) for c, x, _ in
                                        [f.next() for _ in range(20)]],
                                  pack=True),
                    ),
                ]),
                ui.buttons([
                    ui.button(name='primary_button',
                              label='Primary',
                              primary=True),
                    ui.button(name='standard_button', label='Standard'),
                    ui.button(name='standard_disabled_button',
                              label='Disabled',
                              disabled=True),
                    ui.button(name='icon_button',
                              icon='Heart',
                              caption='Tooltip text'),
                ]),
            ])
        q.page['footer'] = ui.footer_card(
            box='footer', caption='(c) 2021 H2O.ai. All rights reserved.')
        q.client.themes = [
            ui.theme(name='custom',
                     text=q.client.text,
                     card=q.client.card,
                     page=q.client.page,
                     primary=q.client.primary)
        ]
        q.client.initialized = True

    if q.args.primary:
        q.client.themes[0].primary = q.args.primary
        q.client.primary = q.args.primary
    if q.args.text:
        q.client.themes[0].text = q.args.text
        q.client.text = q.args.text
    if q.args.card:
        q.client.themes[0].card = q.args.card
        q.client.card = q.args.card
    if q.args.page:
        q.client.themes[0].page = q.args.page
        q.client.page = q.args.page

    q.page['meta'].themes = q.client.themes
    q.page['form'].items[5] = get_contrast('text', 'card', q)
    q.page['form'].items[6] = get_contrast('card', 'primary', q)
    q.page['form'].items[7] = get_contrast('text', 'page', q)
    q.page['form'].items[8] = get_contrast('page', 'primary', q)
    q.page['form'].items[10].frame.content = get_theme_code(q)
    await q.page.save()
async def serve(q: Q):
    q.page['example'] = ui.form_card(box='1 1 4 10', items=[
        ui.text_xl(content='Extra-large text, for headings.'),
        ui.text_l(content='Large text, for sub-headings.'),
        ui.text_m(content='Body text, for paragraphs and other content.'),
        ui.text_s(content='Small text, for small print.'),
        ui.text_xs(content='Extra-small text, for really small print.'),
        ui.separator(label='A separator sections forms'),
        ui.progress(label='A progress bar'),
        ui.progress(label='A progress bar'),
        ui.message_bar(type='success', text='Message bar'),
        ui.textbox(name='textbox', label='Textbox'),
        ui.label(label='Checkboxes'),
        ui.checkbox(name='checkbox1', label='A checkbox'),
        ui.checkbox(name='checkbox1', label='Another checkbox'),
        ui.checkbox(name='checkbox1', label='Yet another checkbox'),
        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.dropdown(name='dropdown', label='Multi-valued Dropdown', values=[], choices=[
            ui.choice(name=x, label=x) for x in ['Egg', 'Bacon', 'Spam']
        ]),
        ui.combobox(name='combobox', label='Combobox', choices=['Choice 1', 'Choice 2', 'Choice 3']),
        ui.slider(name='slider', label='Slider'),
        ui.range_slider(name='range_slider', label='Range slider', max=99),
        ui.spinbox(name='spinbox', label='Spinbox'),
        ui.date_picker(name='date_picker', label='Date picker'),
        ui.color_picker(name='color_picker', label='Color picker'),
        ui.buttons([
            ui.button(name='primary_button', label='Primary', primary=True),
            ui.button(name='standard_button', label='Standard'),
            ui.button(name='standard_disabled_button', label='Standard', disabled=True),
        ]),
        ui.file_upload(name='file_upload', label='File upload'),
        ui.table(name='table', columns=[
            ui.table_column(name='col1', label='Column 1'),
            ui.table_column(name='col2', label='Column 2'),
        ], rows=[
            ui.table_row(name='row1', cells=['Text A', 'Text B']),
            ui.table_row(name='row2', cells=['Text C', 'Text D']),
            ui.table_row(name='row3', cells=['Text E', 'Text F']),
        ]),
        ui.link(label='Link'),
        ui.tabs(name='tabs', items=[
            ui.tab(name='email', label='Mail', icon='Mail'),
            ui.tab(name='events', label='Events', icon='Calendar'),
            ui.tab(name='spam', label='Spam'),
        ]),
        ui.expander(name='expander', label='Expander'),
        ui.frame(path='https://example.com'),
        ui.markup(content=html),
        ui.template(
            content=menu,
            data=pack(dict(dishes=[
                dict(name='Spam', price='$2.00'),
                dict(name='Ham', price='$3.45'),
                dict(name='Eggs', price='$1.75'),
            ]))
        ),
        ui.picker(name='picker', label='Picker', choices=[
            ui.choice('choice1', label='Choice 1'),
            ui.choice('choice2', label='Choice 2'),
            ui.choice('choice3', label='Choice 3'),
        ]),
        ui.stepper(name='stepper', items=[
            ui.step(label='Step 1', icon='MailLowImportance'),
            ui.step(label='Step 2', icon='TaskManagerMirrored'),
            ui.step(label='Step 3', icon='Cafe'),
        ]),
        ui.visualization(
            plot=ui.plot([ui.mark(type='interval', x='=product', y='=price', y_min=0)]),
            data=data(fields='product price', rows=[(c, x) for c, x, _ in [f.next() for _ in range(n)]], pack=True),
        ),
        ui.vega_visualization(
            specification=spec,
            data=data(fields=["a", "b"], rows=[
                ["A", rnd()], ["B", rnd()], ["C", rnd()],
                ["D", rnd()], ["E", rnd()], ["F", rnd()],
                ["G", rnd()], ["H", rnd()], ["I", rnd()]
            ], pack=True),
        ),
        ui.button(name='show_inputs', label='Submit', primary=True),
    ])
    await q.page.save()
Exemple #18
0
async def run_app(q: Q):
    if q.args.start_game:
        if q.args.submit_game:
            q.client.game.is_public = True
            q.app.games[q.client.game.game_id] = q.client.game
        del q.page['leaderboard']
        del q.page['hello']
        await start_new_game(q)
    elif q.args.quit_game:
        del q.page['starting_game']
        await make_welcome_card(q)
    elif q.args.guess:
        message = q.client.game.guess(q.args.guess)
        if message == 'You Got It!':
            q.page['starting_game'].items = [
                ui.text_l(
                    f'­ЪЈЁ ­ЪјЅ ­Ъјѓ You Got It, The number is **{q.client.game.number}**'
                ),
                ui.text_m(
                    f'You made **{len(q.client.game.guesses)}** guesses in'),
                ui.text_m(f'{q.client.game.game_time()}.'),
                ui.toggle(
                    name='submit_game',
                    label='Submit your game to Public Scoreboard',
                    trigger=False,
                ),
                ui.text_xs('Рађ'),
                ui.buttons(
                    items=[
                        ui.button(
                            name='leaderboard',
                            label='View Scores',
                            primary=True,
                        ),
                        ui.button(
                            name='start_game',
                            label='Play Again',
                            primary=False,
                        ),
                    ],
                    justify='center',
                ),
            ]
        else:
            previous_guesses = [str(x) for x in q.client.game.guesses]
            if len(previous_guesses) > 16:
                previous_guesses = previous_guesses[-16:]
                previous_guesses[0] = '...'
            guesses_str = ", ".join(previous_guesses)
            q.page['starting_game'].items = [
                ui.text_l(message),
                ui.text_m(guesses_str),
                ui.text_xs('Рађ'),
                ui.slider(
                    name='guess',
                    label='your guess',
                    min=1,
                    max=100,
                    value=q.args.guess,
                    trigger=True,
                ),
                ui.text_xs('Рађ'),
                ui.buttons(
                    items=[
                        ui.button(name='quit_game', label='Quit', primary=True)
                    ],
                    justify='center',
                ),
            ]
    elif q.args.leaderboard:
        if q.args.submit_game:
            q.client.game.is_public = True
            q.app.games[q.client.game.game_id] = q.client.game
        del q.page['starting_game']
        await show_leaderboard(q)
    elif q.args.private_leaderboard:
        await show_private_leaderboard(q)

    await q.page.save()
Exemple #19
0
def card_sim_details() -> ui.FormCard:
    choices = [
        'COVID Vaccine (100mg, Moderna Injection)', 'Ibuprofen (400mg, Oral)',
        'Aspirin (200mg, Tablet)', 'Syringes', 'Sutures'
    ]
    choices = [ui.choice(name=c, label=c) for c in choices]
    drug = ui.dropdown(name='item',
                       choices=choices,
                       label='Item name',
                       value=choices[0].name)
    max_storage = ui.slider(name='max_storage',
                            label='Inventory capacity',
                            min=1,
                            max=100,
                            value=7)
    expires = ui.slider(name='expires',
                        label='Days to expiry',
                        min=1,
                        max=100,
                        value=2)
    mu_d = ui.slider(name='mu_d',
                     label='Average demand per day',
                     min=1,
                     max=100,
                     value=5)
    gpo_delay = ui.slider(
        name='gpo_delay',
        label='How long between order and delivery for GPO supplier?',
        min=1,
        max=5,
        value=5)
    gpo_cost = ui.slider(name='gpo_cost',
                         label='GPO cost per item (in $)',
                         min=1,
                         max=100,
                         value=5)
    alt_delay = ui.slider(
        name='alt_delay',
        label='How long between order and delivery for alternative supplier?',
        min=1,
        max=5,
        value=2)
    alt_cost = ui.slider(name='alt_cost',
                         label='Alternative cost per item (in $)',
                         min=1,
                         max=100,
                         value=9)
    fulfill = ui.slider(name='fulfill',
                        label='Charge capture',
                        min=1,
                        max=100,
                        value=15)
    punish = ui.slider(name='punish',
                       label='Opportunity cost for failing to have inventory',
                       min=-100,
                       max=0,
                       value=-50)
    initial = ui.slider(name='initial',
                        label='Current inventory',
                        min=0,
                        max=100,
                        value=10)

    buttons = ui.buttons([
        ui.button(name='save', label='Save parameters', primary=True),
        ui.button(name='go_home', label='Back', primary=True)
    ])

    item_list = [
        drug, max_storage, initial, expires, mu_d, gpo_delay, gpo_cost,
        alt_delay, alt_cost, fulfill, punish, buttons
    ]
    card = ui.FormCard(
        box=box_sidebar,
        items=item_list,
    )

    return card