示例#1
0
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()
示例#2
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()
示例#3
0
async def show_issue(q: Q, issue_id: str):
    issue = issue_lookup[issue_id]
    issue.views += 1

    q.client.active_issue_id = issue_id

    q.page['form'] = ui.form_card(
        box='1 1 4 -1',
        items=[
            ui.text_xl(f'Issue {issue.id}'),
            ui.text(issue.text),
            ui.text_xs(f'({issue.views} views)'),
            ui.buttons([
                ui.button(
                    name='close_issue'
                    if issue.status == 'Open' else 'reopen_issue',
                    label="Close Issue"
                    if issue.status == 'Open' else "Reopen Issue",
                    primary=True,
                ),
                ui.button(name='back', label='Back'),
            ]),
        ])

    await q.page.save()
示例#4
0
def render_content_changes(q: Q):

    q.page['sidebar'] = ui.form_card(
        box='1 2 2 8',
        items=[
            ui.separator('Button Counting'),
            ui.text(
                f'This button has been **clicked in this browser session {q.client.count}** times!'
            ),
            ui.text(
                f'This button has been **clicked by you {q.user.count}** times!'
            ),
            ui.text(f'This button has been **clicked {q.app.count}** times!'),
            ui.buttons([ui.button(name='button', label='Click Me!')],
                       justify='center')
        ])

    q.page['content'] = ui.form_card(
        box='3 2 9 8',
        items=[
            ui.tabs(name='header_tabs',
                    value=q.client.tab,
                    items=[
                        ui.tab(name=t.lower(), label=t)
                        for t in ['Home', 'Learn More', 'Contact Us']
                    ]),
            ui.frame(
                content=
                f'This is the {q.client.tab} section, it is still in development.'
            )
        ])
示例#5
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
示例#6
0
async def serve(q: Q):
    if not q.client.initialized:
        q.client.initialized = True
        q.page['nav'] = ui.markdown_card(
            box='1 1 4 2',
            title='Menu',
            content=
            '[Spam](#menu/spam) / [Ham](#menu/ham) / [Eggs](#menu/eggs) / [About](#about)',
        )
        q.page['blurb'] = ui.markdown_card(
            box='1 3 4 2',
            title='Description',
            content='Welcome to our store!',
        )
        q.page['cart'] = ui.form_card(
            box='1 5 4 2',
            title='Cart',
            items=[
                ui.text('Your cart is empty!'),
                ui.buttons([
                    ui.button(name=buy_now.__name__,
                              label='Buy Now!',
                              primary=True),
                    ui.button(name='empty_cart', label='Clear cart'),
                ])
            ],
        )
        await q.page.save()
    else:
        await handle_on(q)
示例#7
0
async def serve(q: Q):
    if q.args.tall_article:
        q.page['example'] = ui.form_card(box='1 1 4 6',
                                         items=[
                                             ui.button(name='back',
                                                       label='Go back',
                                                       primary=True),
                                         ])
    else:
        q.page['example'] = ui.tall_article_preview_card(
            box='1 1 4 6',
            title='Tall article preview',
            subtitle='Click the card',
            value='$19',
            name='tall_article',
            image=
            'https://images.pexels.com/photos/3225517/pexels-photo-3225517.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260',  # noqa
            content=content,
            items=[
                ui.buttons(items=[
                    ui.button(name='like', label='Like'),
                    ui.button(name='comment', label='Comment'),
                    ui.button(name='share', label='Share'),
                ]),
            ])

    await q.page.save()
示例#8
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),
            ])
        ])
async def show_issues(q: Q):
    q.page['form'] = ui.form_card(
        box='1 1 4 -1',
        items=[
            make_issue_table(),
            ui.buttons([ui.button(name='edit_multiple', label='Edit Multiple...', primary=True)]),
        ]
    )
    await q.page.save()
示例#10
0
async def serve(q: Q):
    if q.args.train:
        # train WaveML Model using H2O-3 AutoML
        copy_expando(q.args, q.client)
        q.client.wave_model = build_model(
            train_df=q.client.train_df,
            target_column='target',
            model_type=ModelType.H2O3,
            _h2o3_max_runtime_secs=30,
            _h2o3_nfolds=2,
            _h2o3_include_algos=[q.client.algo]
        )
        model_id = q.client.wave_model.model.model_id
        accuracy = round(100 - q.client.wave_model.model.mean_per_class_error() * 100, 2)

        # show training details and prediction option
        q.page['example'].items[1].choice_group.value = q.client.algo
        q.page['example'].items[2].buttons.items[1].button.disabled = False
        q.page['example'].items[3].message_bar.type = 'success'
        q.page['example'].items[3].message_bar.text = 'Training successfully completed!'
        q.page['example'].items[4].text.content = f'''**H2O AutoML model id:** {model_id} <br />
            **Accuracy:** {accuracy}%'''
        q.page['example'].items[5].text.content = ''
    elif q.args.predict:
        # predict on test data
        preds = q.client.wave_model.predict(test_df=q.client.test_df)

        # show predictions
        q.page['example'].items[3].message_bar.text = 'Prediction successfully completed!'
        q.page['example'].items[5].text.content = f'''**Example predictions:** <br />
            {preds[0]} <br /> {preds[1]} <br /> {preds[2]}'''
    else:
        # prepare sample train and test dataframes
        data = load_wine(as_frame=True)['frame']
        q.client.train_df, q.client.test_df = train_test_split(data, train_size=0.8)

        # algos
        algo_choices = [ui.choice(x, x) for x in ['DRF', 'GLM', 'XGBoost', 'GBM', 'DeepLearning']]

        # display ui
        q.page['example'] = ui.form_card(
            box='1 1 -1 -1',
            items=[
                ui.text(content='''The sample dataset used is the
                    <a href="https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_wine.html" target="_blank">wine dataset</a>.'''),
                ui.choice_group(name='algo', label='Select Algo', choices=algo_choices, value='DRF'),
                ui.buttons(items=[
                    ui.button(name='train', label='Train', primary=True),
                    ui.button(name='predict', label='Predict', primary=True, disabled=True),
                ]),
                ui.message_bar(type='warning', text='Training will take a few seconds'),
                ui.text(content=''),
                ui.text(content='')
            ]
        )

    await q.page.save()
示例#11
0
async def serve(q: Q):
    if (not q.client.initialized
        ):  # First visit, create an empty form card for our wizard
        q.page['wizard'] = ui.form_card(box='1 1 2 4', items=[])
        q.client.initialized = True

    wizard = q.page['wizard']  # Get a reference to the wizard form
    if q.args.step1:
        wizard.items = [
            ui.text_xl('Wizard - Step 1'),
            ui.text('What is your name?', name='text'),
            ui.textbox(name='nickname', label='My name is...',
                       value='Gandalf'),
            ui.buttons([ui.button(name='step2', label='Next', primary=True)]),
        ]
    elif q.args.step2:
        q.client.nickname = q.args.nickname
        wizard.items = [
            ui.text_xl('Wizard - Step 2'),
            ui.text(f'Hi {q.args.nickname}! How do you feel right now?',
                    name='text'),
            ui.textbox(name='feeling', label='I feel...', value='magical'),
            ui.buttons([ui.button(name='step3', label='Next', primary=True)]),
        ]
    elif q.args.step3:
        wizard.items = [
            ui.text_xl('Wizard - Done'),
            ui.text(
                f'What a coincidence, {q.client.nickname}! I feel {q.args.feeling} too!',
                name='text',
            ),
            ui.buttons(
                [ui.button(name='step1', label='Try Again', primary=True)]),
        ]
    else:
        wizard.items = [
            ui.text_xl('Wizard Example'),
            ui.text("Let's have a conversation, shall we?"),
            ui.buttons(
                [ui.button(name='step1', label='Of course!', primary=True)]),
        ]

    await q.page.save()
示例#12
0
def card_sim_missing() -> ui.FormCard:
    text = ui.text('Please enter simulations details before beginning')
    buttons = ui.buttons(
        [ui.button(name='go_home', label='Back', primary=True)])

    item_list = [text, buttons]
    card = ui.FormCard(
        box=box_sidebar,
        items=item_list,
    )

    return card
示例#13
0
def card_sim_saved() -> ui.FormCard:
    text = ui.text('Details Saved')
    buttons = ui.buttons([
        ui.button(name='go_home', label='Return', primary=True),
    ])
    item_list = [text, buttons]
    card = ui.FormCard(
        box=box_sidebar,
        items=item_list,
    )

    return card
示例#14
0
文件: tour.py 项目: zeta1999/wave
def make_blurb(example: Example):
    buttons = []
    if example.previous_example:
        buttons.append(ui.button(name=f'#{example.previous_example.name}', label='Previous'))
    if example.next_example:
        buttons.append(ui.button(name=f'#{example.next_example.name}', label='Next', primary=True))

    return [
        ui.text(example.title, size='l'),
        ui.text(example.description),
        ui.buttons(buttons),
    ]
示例#15
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.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),
        ])
    ]
示例#16
0
async def serve(q: Q):
    if not q.client.initialized:
        q.page['example'] = ui.form_card(
            box='1 1 4 10',
            items=[
                ui.text_xl(content='First text'),
                ui.text_l(content='Second text'),
                ui.text_m(content='Third text'),
                ui.text_s(content='Fourth text'),
                ui.inline([
                    ui.button(name='left1', label='Left1'),
                    ui.button(name='left2', label='Left2'),
                    ui.button(name='left3', label='Left3'),
                ]),
                ui.buttons(justify='end',
                           items=[
                               ui.button(name='right1', label='Right1'),
                               ui.button(name='right2', label='Right2'),
                               ui.button(name='right3', label='Right3'),
                           ]),
                ui.buttons(items=[
                    ui.button(name='show', label='Show'),
                    ui.button(name='hide', label='Hide')
                ])
            ])
        q.client.initialized = True
    items = q.page['example'].items
    items_to_hide = [
        items[0].text_xl,
        items[2].text_m,
        items[4].inline.items[0].button,
        items[5].buttons.items[2].button,
    ]
    if q.args.hide:
        for i in items_to_hide:
            i.visible = False
    if q.args.show:
        for i in items_to_hide:
            i.visible = True
    await q.page.save()
async def edit_multiple(q: Q):
    q.page['form'] = ui.form_card(
        box='1 1 4 -1',
        items=[
            make_issue_table(allow_multiple_selection=True),  # This time, allow multiple selections
            ui.buttons([
                ui.button(name='reopen_issues', label='Reopen Selected', primary=True),
                ui.button(name='close_issues', label='Close Selected', primary=True),
                ui.button(name='back', label='Back to safety')
            ]),
        ]
    )
    await q.page.save()
示例#18
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.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)
    ]
示例#19
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.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)
    ]
示例#20
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),
        ])
    ]
示例#21
0
def form_prediction_completed(q: Q):
    # display when model prediction 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.dropdown(name='categorical_columns', label='Select categorical columns',
                    choices=q.client.column_choices, values=q.client.categorical_columns),
        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='Prediction successfully completed!'),
        ui.text(content=q.client.model_details),
        ui.text(content=f'''**Example predictions:** <br />
            {q.client.preds[0]} <br /> {q.client.preds[1]} <br /> {q.client.preds[2]}''')
    ]
async def serve(q: Q):
    if 'standard_button' in q.args:
        q.page['example'].items = [
            ui.text(f'primary_button={q.args.primary_button}'),
            ui.text(f'standard_button={q.args.standard_button}'),
            ui.text(f'standard_disabled_button={q.args.standard_disabled_button}'),
            ui.button(name='show_form', label='Back', primary=True),
        ]
    else:
        q.page['example'] = ui.form_card(box='1 1 4 10', items=[
            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),
            ]),
        ])
    await q.page.save()
示例#23
0
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="")])
    ])
示例#24
0
文件: todo.py 项目: srisatish/wave
async def new_todo(q: Q):
    # Display an input form
    q.page['form'] = ui.form_card(box='1 1 4 10',
                                  items=[
                                      ui.text_l('Add To Do'),
                                      ui.textbox(
                                          name='label',
                                          label='What needs to be done?',
                                          multiline=True),
                                      ui.buttons([
                                          ui.button(name='add_todo',
                                                    label='Add',
                                                    primary=True),
                                          ui.button(name='show_todos',
                                                    label='Back'),
                                      ]),
                                  ])
    await q.page.save()
示例#25
0
def form_prediction_completed(q: Q):
    # display when model prediction 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='Prediction successfully completed!'),
        ui.text(content=q.client.model_details),
        ui.text(content=f'''**Example predictions:** <br />
            {q.client.preds[0]} <br /> {q.client.preds[1]} <br /> {q.client.preds[2]}''')
    ]
示例#26
0
def render_customer_page(q: Q):
    init(q)

    selected_row = int(q.args.risk_table[0])
    training_df = predictor.get_testing_data_as_pd_frame()
    predictions_df = predictor.predicted_df.as_data_frame()
    contributions_df = predictor.contributions_df.as_data_frame()
    del contributions_df['BiasTerm']

    q.client.selected_customer_id = training_df.loc[selected_row]["ID"]
    print("selected id : ", q.client.selected_customer_id)
    score = predictions_df.loc[selected_row]["predict"]
    approve = bool(score < config.approval_threshold)

    drop_column_from_df(training_df, 'default.payment.next.month')
    add_column_to_df(training_df, predictions_df, 'Default Prediction Rate',
                     'predict')
    training_df = round_df_column(training_df, 'Default Prediction Rate', 4)

    render_customer_details_table(q, training_df, selected_row)

    shap_plot = predictor.get_shap_explanation(selected_row)
    q.page["shap_plot"] = ui.image_card(
        box='shap_plot',
        title="Effectiveness of each attribute on defaulting next payment",
        type="png",
        image=get_image_from_matplotlib(shap_plot, dpi=85),
    )

    render_customer_summary(q, training_df, contributions_df, selected_row,
                            approve)

    q.page["buttons"] = ui.form_card(box='button_group',
                                     items=[
                                         ui.buttons([
                                             ui.button(name='reject_btn',
                                                       label='Reject',
                                                       primary=not approve),
                                             ui.button(name='approve_btn',
                                                       label='Approve',
                                                       primary=approve),
                                         ])
                                     ])
示例#27
0
async def make_welcome_card(q):
    q.page['hello'] = ui.form_card(
        box='4 4 3 3',
        items=[
            ui.text_l(f'Hello {q.user.player.first.title()},'),
            ui.text_xs('Рађ'),
            ui.text_m('Do you want to play a guessing game?'),
            ui.text_xs('Рађ'),
            ui.buttons(
                items=[
                    ui.button('start_game', label='Play', primary=True),
                    ui.button('leaderboard',
                              label='View Scores',
                              primary=False),
                ],
                justify='center',
            ),
        ],
    )
    await q.page.save()
示例#28
0
async def show_results(q: Q):
    q.page['main'] = ui.form_card(box="1 2 4 5",
                                  items=[
                                      ui.text_xl("Input Text:"),
                                      ui.separator(),
                                      ui.text(q.app.input_text),
                                      ui.separator(),
                                      ui.buttons([
                                          ui.button(name="get_inputs",
                                                    label='Try Again!',
                                                    primary=True),
                                      ])
                                  ])

    result = q.app.model(q.app.input_text,
                         max_length=q.app.num_words_to_generate,
                         do_sample=False)[0]
    q.app.generated_text = result["generated_text"]
    q.page['visualization'] = ui.form_card(box="5 2 4 5",
                                           items=[
                                               ui.text_xl("Generated Text:"),
                                               ui.separator(''),
                                               ui.text(q.app.generated_text)
                                           ])
示例#29
0
async def serve(q: Q):
    if q.args.train:
        # train WaveML Model using H2O-3 AutoML
        wave_model = build_model(train_df=q.client.train_df,
                                 target_column='target',
                                 model_type=ModelType.H2O3,
                                 _h2o3_max_runtime_secs=5,
                                 _h2o3_nfolds=2)
        model_id = wave_model.model.model_id
        accuracy = round(100 - wave_model.model.mean_per_class_error() * 100,
                         2)

        # save model to local folder
        q.client.path_model = save_model(model=wave_model,
                                         output_dir_path='./mymodelfolder')

        # show training details and prediction option
        q.page['example'].items[1].buttons.items[1].button.disabled = False
        q.page['example'].items[2].message_bar.type = 'success'
        q.page['example'].items[
            2].message_bar.text = 'Training successfully completed!'
        q.page['example'].items[
            3].text.content = f'''**H2O AutoML model id:** {model_id} <br />
            **Accuracy:** {accuracy}%'''
        q.page['example'].items[4].text.content = ''
    elif q.args.predict:
        # load model from local path
        wave_model = load_model(file_path=q.client.path_model)

        # predict on test data
        preds = wave_model.predict(test_df=q.client.test_df)

        # show predictions
        q.page['example'].items[
            2].message_bar.text = 'Prediction successfully completed!'
        q.page['example'].items[
            4].text.content = f'''**Example predictions:** <br />
            {preds[0]} <br /> {preds[1]} <br /> {preds[2]}'''
    else:
        # prepare sample train and test dataframes
        data = load_wine(as_frame=True)['frame']
        q.client.train_df, q.client.test_df = train_test_split(data,
                                                               train_size=0.8)

        # display ui
        q.page['example'] = ui.form_card(
            box='1 1 -1 -1',
            items=[
                ui.text(content='''The sample dataset used is the
                    <a href="https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_wine.html" target="_blank">wine dataset</a>.'''
                        ),
                ui.buttons(items=[
                    ui.button(name='train', label='Train', primary=True),
                    ui.button(name='predict',
                              label='Predict',
                              primary=True,
                              disabled=True),
                ]),
                ui.message_bar(type='warning',
                               text='Training will take a few seconds'),
                ui.text(content=''),
                ui.text(content='')
            ])

    await q.page.save()
示例#30
0
async def showProducts(q: Q):
    global filter_product
    global filter_manufacturer
    global filter_supplier
    global unit_measure
    global gqty

    items = [ui.tabs(name='menu', value=q.args.menu, items=tabs)]

    print('---------------------------')
    print('== PRODUCT TAB == ')
    print('q.args.show_tables: ' + str(q.args.show_tables) +
          ', q.args.show_inputs: ' + str(q.args.show_inputs))

    ## the user have clicked 'Add' button but haven't clicked 'Submit' button yet
    if (q.args.show_tables == None or q.args.show_tables == False) and (
            q.args.show_inputs or q.args.product or q.args.manufacturer
            or q.args.supplier or q.args.qty):

        ## need to get manufacturer data first (later used for the dropdown when adding new supplier)
        df_m = pd.DataFrame(l_manufacturers,
                            columns=['manufacturer', 'product'])
        df_s = pd.DataFrame(l_suppliers,
                            columns=['supplier', 'manufacturer', 'product'])

        ## if there is no manufacturer data
        if len(df_m) == 0:
            items.extend([
                ui.message_bar(type='info',
                               text='Try adding manufacturer first'),
                ui.button(name='goto_manufacturer',
                          label='Close',
                          primary=True)
            ])

        ## if there is no supplier data
        elif len(df_s) == 0:
            items.extend([
                ui.message_bar(type='info', text='Try adding supplier first'),
                ui.button(name='goto_supplier', label='Close', primary=True)
            ])

        ## if there is data on manufacturer and supplier, when the user click 'Add Product' button
        else:
            items.append(ui.text_xl(content='Add Product'))
            print('q.args.product: ' + str(q.args.product) +
                  ', q.args.manufacturer: ' + str(q.args.manufacturer) +
                  ', q.args.supplier: ' + str(q.args.supplier))

            if q.args.product and (filter_product == None
                                   or q.args.product != filter_product):
                filter_product = q.args.product
                filter_manufacturer = None
                filter_supplier = None
                unit_measure = None
                # selling_price = None
                gqty = None
            elif q.args.manufacturer and (
                    filter_manufacturer == None
                    or q.args.manufacturer != filter_manufacturer):
                filter_manufacturer = q.args.manufacturer
                filter_supplier = None
                unit_measure = None
                # selling_price = None
                gqty = None
            elif q.args.supplier and (filter_supplier == None
                                      or q.args.supplier != filter_supplier):
                filter_supplier = q.args.supplier
                unit_measure = None
                # selling_price = None
                gqty = None
            if q.args.qty:
                gqty = q.args.qty

            print(filter_product, filter_manufacturer, filter_supplier)

            ## PRODUCT
            if filter_product != None:
                items.append(
                    ui.dropdown(name='product',
                                label='Product',
                                choices=[
                                    ui.choice(name=x, label=x)
                                    for x in df_m['product'].unique()
                                ],
                                trigger=True,
                                value=filter_product))
                tmp_m = df_m[df_m['product'] ==
                             q.args.product]['manufacturer'].unique()

            else:
                items.append(
                    ui.dropdown(name='product',
                                label='Product',
                                choices=[
                                    ui.choice(name=x, label=x)
                                    for x in df_m['product'].unique()
                                ],
                                trigger=True))
                tmp_m = df_m['manufacturer'].unique()

            ## MANUFACTURER
            if filter_manufacturer != None:
                items.append(
                    ui.dropdown(
                        name='manufacturer',
                        label='Manufacturer',
                        choices=[ui.choice(name=x, label=x) for x in tmp_m],
                        trigger=True,
                        value=filter_manufacturer))
                tmp_s = df_s[(df_s['product'] == filter_product)
                             & (df_s['manufacturer'] == filter_manufacturer
                                )]['supplier'].unique()

            else:
                items.append(
                    ui.dropdown(
                        name='manufacturer',
                        label='Manufacturer',
                        choices=[ui.choice(name=x, label=x) for x in tmp_m],
                        trigger=True))
                tmp_s = df_s['supplier'].unique()

            ## SUPPLIER
            if filter_supplier != None:
                items.append(
                    ui.dropdown(
                        name='supplier',
                        label='Supplier',
                        choices=[ui.choice(name=x, label=x) for x in tmp_s],
                        trigger=True,
                        value=filter_supplier))
                # selling_price = df_s[(df_s['product']==filter_product)&(df_s['manufacturer']==filter_manufacturer)
                #                   &(df_s['supplier']==filter_supplier)]['selling_price'].values[0]
                # unit_measure = df_s[(df_s['product']==filter_product)&(df_s['manufacturer']==filter_manufacturer)
                #                   &(df_s['supplier']==filter_supplier)]['uom'].values[0]

            else:
                items.append(
                    ui.dropdown(
                        name='supplier',
                        label='Supplier',
                        choices=[ui.choice(name=x, label=x) for x in tmp_s],
                        trigger=True))
                # selling_price = None

            # items.append(ui.date_picker(name='purchase_date', label='Purchase Date'))
            # items.append(ui.textbox(name='qty', label='Qty'))

            # ## SELLING PRICE
            # if selling_price!=None:
            #   items.append(ui.textbox(name='selling_price', label='Selling Price', value = str(selling_price)))
            # else:
            #   items.append(ui.textbox(name='selling_price', label='Selling Price'))

            # ## UOM
            # if unit_measure!=None:
            #   items.append(ui.textbox(name='uom', label='Unit of Measurement', value = unit_measure, readonly = True))
            # else:
            #   items.append(ui.dropdown(name='uom', label='Unit of Measurement', choices=[
            #       ui.choice(name=x, label=x) for x in uom
            #   ]))

            # items.extend([
            #   # ui.date_picker(name='mfg_date', label='Mfg Date'),
            #   # ui.date_picker(name='exp_date', label='Exp Date'),
            #   ui.textbox(name='selling_price', label='Selling Price'),
            #   # ui.textbox(name='operational_cost', label='Operational Cost'),
            #   # ui.textbox(name='lvl', label='Order Point by level(%)'),
            #   # ui.textbox(name='schedule', label='Order Point Schedule (days)'),
            #   # ui.textbox(name='schedule_qty', label='Scheduled Qty'),
            #   # ui.textbox(name='rate', label='Avg. Consumption'),
            #   # ui.dropdown(name='freq', label='Consumption Frequency', choices=[
            #   #     ui.choice(name=x, label=x, value='daily', readonly=True) for x in consumption
            #   # ]),
            #   ui.button(name='show_tables', label='Submit', primary=True)])

            items.extend([
                # ui.textbox(name='selling_price', label='Selling Price'),
                ui.button(name='show_tables', label='Submit', primary=True)
            ])

    else:  ## first iteration goes here
        filter_product = None
        filter_manufacturer = None
        filter_supplier = None
        unit_measure = None
        selling_price = None
        gqty = None

        ## if q.args.show_tables == True
        if q.args.show_tables:
            # l_products.append([q.args.product, q.args.manufacturer, q.args.supplier, q.args.purchase_date, q.args.qty,
            #             q.args.uom, q.args.selling_price, q.args.mfg_date, q.args.exp_date, q.args.selling_price,
            #             q.args.operational_cost, q.args.lvl, q.args.schedule, q.args.schedule_qty, q.args.rate])
            # p = Products(q.args.product, q.args.manufacturer, q.args.supplier, q.args.purchase_date, q.args.qty,
            #             q.args.uom, q.args.selling_price, q.args.mfg_date, q.args.exp_date, q.args.selling_price,
            #             q.args.operational_cost, q.args.lvl, q.args.schedule, q.args.schedule_qty, q.args.rate)

            # l_products.append([q.args.product, q.args.manufacturer, q.args.supplier,
            #             q.args.uom])
            l_products.append(
                [q.args.product, q.args.manufacturer, q.args.supplier])
            # p = Products(q.args.product, q.args.manufacturer, q.args.supplier,
            #             q.args.uom)
            p = Products(q.args.product, q.args.manufacturer, q.args.supplier)
            products.append(p)
            items.append(
                ui.message_bar(type='success',
                               text='You have successfully added a product'))

        ## if there is a product data
        if len(products) > 0:
            items.append(
                ui.table(
                    name='products',
                    columns=column_product_table,
                    rows=[
                        ui.table_row(
                            name=product.id,
                            # cells=[product.product, product.manufacturer, product.supplier, product.selling_price,
                            #     product.uom]
                            cells=[
                                product.product, product.manufacturer,
                                product.supplier
                            ]) for product in products
                    ],
                    groupable=True,
                    downloadable=True,
                    resettable=True,
                    height='500px'))
        else:  ## if there is no product data
            items.append(ui.text_l(content='No Product found'))

        # items.append(ui.button(name='show_inputs', label='Add Product', primary=True))

        items.append(
            ui.buttons([
                ui.button(name='show_inputs',
                          label='Add Product',
                          primary=True),
                ui.button(name='delete_button', label='Delete Product'),
                ui.button(name='edit_button', label='Edit Product'),
            ]))

    q.page['example'] = ui.form_card(box='1 2 -1 -1', items=items)
    await q.page.save()