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()
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()
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()
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.' ) ])
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
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)
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()
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()
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()
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()
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
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
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), ]
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), ]) ]
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()
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) ]
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) ]
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), ]) ]
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()
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="")]) ])
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()
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]}''') ]
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), ]) ])
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()
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) ])
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()
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()