async def serve(q: Q): if q.args.show_inputs: q.page['example'].items = [ ui.text(f'dropdown={q.args.dropdown}'), ui.text(f'dropdown_multi={q.args.dropdown_multi}'), ui.text(f'dropdown_disabled={q.args.dropdown_disabled}'), ui.button(name='show_form', label='Back', primary=True), ] else: q.page['example'] = ui.form_card(box='1 1 4 10', items=[ ui.dropdown(name='dropdown', label='Pick one', value='B', required=True, choices=choices), ui.dropdown(name='dropdown_multi', label='Pick multiple', values=['B', 'D'], required=True, choices=choices), ui.dropdown( name='dropdown_disabled', label='Pick one (Disabled)', value='B', choices=choices, disabled=True), ui.button(name='show_inputs', label='Submit', primary=True), ]) await q.page.save()
def init(q: Q): q.page['meta'] = ui.meta_card( box='', title='Explain Ratings', layouts=[ ui.layout(breakpoint='xs', zones=[ ui.zone('header'), ui.zone('body', direction=ui.ZoneDirection.ROW, size='calc(100vh - 70px)', zones=[ ui.zone('sidebar', size='350px'), ui.zone('content', direction=ui.ZoneDirection.ROW) ]) ]), ]) q.page['header'] = ui.header_card(box='header', title='Hotel Reviews', subtitle='Explains the hotel reviews', icon='ReviewSolid', icon_color='#00A8E0') q.client.review = config.review_column_list[0] form_filters = [] for column in config.filterable_columns: choices = [ui.choice(name='empty', label='All')] + [ ui.choice(name=str(column), label=str(column)) for column in config.dataset[column].drop_duplicates() ] form_filters.append( ui.dropdown(name=f'filter_{column}', label=config.column_mapping[column], trigger=True, value='empty', choices=choices)) sidebar_items = [ ui.dropdown(name='review', label='Review type', value=q.client.review, trigger=True, choices=[ ui.choice(name=column, label=config.column_mapping[column]) for column in config.dataset[config.review_column_list] ]), ui.separator('Filters') ] + form_filters q.page['sidebar'] = ui.form_card(box='sidebar', items=sidebar_items) q.page['original'] = ui.image_card(box='content', title='Original', type='png', image=plot_word_cloud( config.dataset[q.client.review], q))
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.dropdown(name='categorical_columns', label='Select categorical columns', choices=q.client.column_choices, values=[]), 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_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.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='Training successfully completed!'), ui.text(content=q.client.model_details) ]
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.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, 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) ]
async def render(self, q: Q): """ Render card in Wave. Args: q: Wave server """ model_choices = [ui.choice(name=str(x), label=str(x)) for x in self.input_models] card = ui.section_card( box=self.box, title=self.title, subtitle=self.subtitle, items=[ ui.dropdown( name='input_model', label='Select model', value=self.input_model, choices=model_choices, trigger=True ) ], commands=self.commands ) q.page[self.name] = card
def make_blurb(q: Q, example: Example): blurb_card = q.page['blurb'] blurb_card.title = example.title blurb_card.subtitle = example.description # HACK: Recreate dropdown every time (by dynamic name) to control value (needed for next / prev btn functionality). items = [ ui.dropdown(name=q.args['#'] or default_example_name, width='300px', value=example.name, trigger=True, choices=[ ui.choice(name=e.name, label=e.title) for e in catalog.values() ]) ] if example.previous_example: items.append( ui.button(name=f'#{example.previous_example.name}', label='Previous')) if example.next_example: items.append( ui.button(name=f'#{example.next_example.name}', label='Next', primary=True)) blurb_card.items = items
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()
def populate_dropdown_list(q: Q): filter_choices = [ ui.choice( name=json.dumps({"id": q.client.filter_count + 1, "attr": column, "attr_val": None}), label=config.column_mapping[column] ) for column in config.filterable_columns ] items = [ ui.text_l("Filter reviews"), ] for key, value in q.client.filters.items(): for attr, attr_val in value.items(): items.append(ui.dropdown( name="filter", label="Choose a review attribute", placeholder=config.column_mapping[attr], choices=[ ui.choice( name=json.dumps({'id': key, 'attr': column, 'attr_val': None}), label=config.column_mapping[column] ) for column in config.filterable_columns ], trigger=True, ), ) items.append(ui.dropdown( name="filter_value", label="Choose a value for selected review attribute", placeholder=attr_val, choices=[ui.choice(name=json.dumps({'id': key, 'attr': attr, 'attr_val': column}), label=column) for column in config.dataset[attr].drop_duplicates()], trigger=True, ), ) items.append(ui.separator()) if (q.args.add_filter and all(q.client.filters.values())) or q.args.review_choice or q.args.reset_filters: items.append(ui.dropdown( name="filter", label="Choose a review attribute", placeholder="Please select a category to filter", choices=filter_choices, trigger=True ), ) items.append(ui.button(name="compare_review_button", label="Compare Reviews", primary=True)) return items
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), ]
def add_sidebar_card(box, customer_ids): id_choices = [ui.choice(_, "Customer:" + str(_)) for _ in customer_ids] return ui.form_card(box=box, items=[ ui.text_xl(content='Select Customer Record'), ui.dropdown(name='customer_id', label='CustomerID', choices=id_choices), ui.button(name='predict', label='Generate', primary=True) ])
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), ]
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 render_home(q: Q): q.page["left_panel"] = ui.form_card(box=config.boxes['left_panel'], items=[ ui.text_xl("Hotel Reviews"), ui.dropdown( name="review_choice", label="Choose a review type", placeholder=config.column_mapping[q.client.review] if q.client.review else "please select a review type", choices=[ ui.choice(name=column, label=config.column_mapping[column]) for column in config.dataset[config.review_column_list] ], trigger=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.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 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) ]
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) ]
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.button(name='train', label='Train', primary=True, disabled=q.client.disable_training), ui.message_bar(type='success', text='Training successfully completed!'), ui.text(content=q.client.model_details), ui.text(content= f'**Download:** <a href="{q.client.path_autodoc}">AutoDoc</a>') ]
def add_sidebar_card(box, customer_ids, customer_names, customer_id, endpoint): id_choices = [ ui.choice(str(id), str(id) + ": " + name) for id, name in zip(customer_ids, customer_names) ] return ui.form_card(box=box, items=[ ui.text_xl(content='Select Customer'), ui.dropdown(name='customer_id', label='Customer', choices=id_choices, value=customer_id), ui.textbox(name='endpoint', label='MLOps Endpoint', value=endpoint, placeholder="URL to MLOps deployment"), ui.button(name='predict', label='Generate', primary=True) ])
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()
async def showSuppliers(q: Q): items = [ui.tabs(name='menu', value=q.args.menu, items=tabs)] print('items in supplier: ' + str(items)) ## if user clicks 'Add Supplier' if q.args.show_inputs: ## need to get manufacturer data first (later used for the dropdown when addiing new supplier) df_m = pd.DataFrame(l_manufacturers, columns=['manufacturer', 'product']) ## if there is no Manufacter data, then the user should add manufacturer data first 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) ]) ## there's a manufacturer data, then go here else: items.extend([ ui.text_xl(content='Add Supplier'), ui.textbox(name='supplier', label='Supplier'), ui.dropdown( name='manufacturer', label='Manufacturer', choices=[ ## dropdown existing manufacturers ui.choice(name=x, label=x) for x in df_m['manufacturer'].unique() ]), ui.dropdown( name='product', label='Product', choices=[ ## dropdown existing items ui.choice(name=x, label=x) for x in df_m['product'].unique() ]), ## product should based on the what manufacturer have # ui.dropdown(name='uom', label='Unit of Measurement', choices=[ ## dropdown unit of measurement based on UOM variable above # ui.choice(name=x, label=x) for x in uom # ]), # ui.textbox(name='selling_price', label='Price'), # ui.textbox(name='lead_time', label='Lead Time(days)'), # ui.textbox(name='delivery_time', label='Delivery Time(days)'), ui.button(name='show_tables', label='Submit', primary=True) ## submit button ]) ## user hasn't clicked 'Add suppliers' button else: ## user have click has clicked 'Submit' button after adding supplier if q.args.show_tables: l_suppliers.append( [q.args.supplier, q.args.manufacturer, q.args.product]) ## !!! s = Suppliers(q.args.supplier, q.args.manufacturer, q.args.product) suppliers.append(s) items.append( ui.message_bar(type='success', text='You have successfully added a supplier')) ## default view (if there's suppliers data) if len(suppliers) > 0: items.append( ui.table(name='suppliers', columns=column_supplier_table, rows=[ ui.table_row(name=supplier.id, cells=[ supplier.supplier, supplier.manufacturer, supplier.product ]) for supplier in suppliers ], groupable=True, downloadable=True, resettable=True, height='500px')) ## default view (if there's a supplier data) else: items.append(ui.text_l(content='No Supplier found')) # items.append(ui.button(name='show_inputs', label='Add Supplier', primary=True)) items.append( ui.buttons([ ui.button(name='show_inputs', label='Add Supplier', primary=True), ui.button(name='delete_button', label='Delete Supplier'), ui.button(name='edit_button', label='Edit Supplier'), ])) q.page['example'] = ui.form_card(box='1 2 -1 -1', items=items) 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()
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, categorical_columns=q.client.categorical_columns, _h2o3_max_runtime_secs=5, _h2o3_nfolds=2) 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].dropdown.values = q.client.categorical_columns 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) # columns column_choices = [ ui.choice(x, x) for x in q.client.train_df.columns if x not in ['target', 'magnesium', 'proline'] ] # 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.dropdown(name='categorical_columns', label='Select categorical columns', choices=column_choices, values=[]), 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 show_orange_dashboard(q: Q): q.page['meta'] = ui.meta_card( box='', layouts=[ ui.layout(breakpoint='xl', width='1200px', zones=[ ui.zone('header'), ui.zone('control'), ui.zone('top', direction=ui.ZoneDirection.ROW, size='385px', zones=[ ui.zone('top_left', direction=ui.ZoneDirection.ROW, size='66%'), ui.zone('top_right'), ]), ui.zone('middle', direction=ui.ZoneDirection.ROW, size='400px'), ui.zone('bottom', direction=ui.ZoneDirection.ROW, size='200px'), ui.zone('footer'), ]) ]) q.page['header'] = ui.header_card(box='header', title='H2O Wave Demo', subtitle='Orange Dashboard', nav=global_nav) q.page['section'] = ui.section_card( box='control', title=next(sample_title), subtitle=next(sample_caption), items=[ ui.checkbox(name='search', label=next(sample_title), value=True), ui.dropdown(name='distribution', label='', value='option0', choices=[ ui.choice(name=f'option{i}', label=next(sample_term)) for i in range(5) ]), ui.dropdown(name='source', label='', value='option0', choices=[ ui.choice(name=f'option{i}', label=next(sample_term)) for i in range(5) ]), ui.dropdown(name='range', label='', value='option0', choices=[ ui.choice(name=f'option{i}', label=next(sample_term)) for i in range(5) ]), ], ) user_days = generate_time_series(30) user_counts = generate_random_walk() q.page['unique_impressions'] = ui.tall_series_stat_card( box='top_left', title=next(sample_title), value=next(sample_amount), aux_value=next(sample_percent), plot_type='interval', plot_color='$orange', plot_category='date', plot_value='users', plot_zero_value=0, plot_data=data( fields=['date', 'users'], rows=[(next(user_days), next(user_counts)) for i in range(60)], pack=True, ), ) q.page['unique_clicks'] = ui.tall_series_stat_card( box='top_left', title=next(sample_title), value=next(sample_dollars), aux_value=next(sample_title), plot_type='interval', plot_color='$amber', plot_category='date', plot_value='users', plot_zero_value=0, plot_data=data( fields=['date', 'users'], rows=[(next(user_days), next(user_counts)) for i in range(60)], pack=True, ), ) q.page['popularity'] = ui.wide_series_stat_card( box='top_right', title=next(sample_term), value=next(sample_percent), aux_value=next(sample_amount), plot_type='area', plot_color='$tangerine', plot_category='date', plot_value='users', plot_zero_value=0, plot_data=data( fields=['date', 'users'], rows=[(next(user_days), next(user_counts)) for i in range(60)], pack=True, ), ) q.page['search_traffic'] = ui.wide_series_stat_card( box='top_right', title=next(sample_term), value=next(sample_percent), aux_value=next(sample_dollars), plot_type='interval', plot_color='$tangerine', plot_category='date', plot_value='users', plot_zero_value=0, plot_data=data( fields=['date', 'users'], rows=[(next(user_days), next(user_counts)) for i in range(60)], pack=True, ), ) q.page['social_media_traffic'] = ui.wide_series_stat_card( box='top_right', title=next(sample_title), value='68K', aux_value='Down 6%', plot_type='area', plot_color='$tangerine', plot_category='date', plot_value='users', plot_zero_value=0, plot_data=data( fields=['date', 'users'], rows=[(next(user_days), next(user_counts)) for i in range(60)], pack=True, ), ) audience_days1 = generate_time_series(60) audience_days2 = generate_time_series(60) audience_hits1 = generate_random_walk(10000, 20000, 0.2) audience_hits2 = generate_random_walk(8000, 15000) q.page['stats'] = ui.form_card( box='middle', title=next(sample_title), items=[ ui.stats(items=[ ui.stat(label=next(sample_term), value=next(sample_dollars)), ui.stat(label=next(sample_term), value=next(sample_percent)), ui.stat(label=next(sample_term), value=next(sample_amount)), ui.stat(label=next(sample_term), value=next(sample_dollars)), ui.stat(label=next(sample_term), value=next(sample_percent)), ui.stat(label=next(sample_term), value=next(sample_amount)), ui.stat(label=next(sample_term), value=next(sample_dollars)), ui.stat(label=next(sample_term), value=next(sample_percent)), ], justify=ui.StatsJustify.BETWEEN, inset=True), ui.visualization( plot=ui.plot([ ui.mark(type='area', x_scale='time', x='=date', y='=visitors', color='=site', color_range='$orange $amber', curve=ui.MarkCurve.SMOOTH), ui.mark(type='line', x_scale='time', x='=date', y='=visitors', color='=site', color_range='$orange $amber', curve=ui.MarkCurve.SMOOTH), ]), data=data( fields=['site', 'date', 'visitors'], rows=[ ('Online', next(audience_days1), next(audience_hits1)) for i in range(60) ] + [('In-store', next(audience_days2), next(audience_hits2)) for i in range(60)], pack=True), height='240px', ) ], ) q.page['click_through'] = ui.large_stat_card( box='bottom', title=next(sample_title), value=next(sample_amount), aux_value=next(sample_dollars), caption=' '.join([next(sample_caption) for i in range(3)]), ) q.page['view_through'] = ui.large_stat_card( box='bottom', title=next(sample_title), value=next(sample_amount), aux_value=next(sample_dollars), caption=' '.join([next(sample_caption) for i in range(3)]), ) q.page['total_conversions'] = ui.large_stat_card( box='bottom', title=next(sample_title), value=next(sample_amount), aux_value=next(sample_dollars), caption=' '.join([next(sample_caption) for i in range(3)]), ) q.page['footer'] = ui.footer_card( box='footer', caption='(c) 2021 H2O.ai. All rights reserved.') await q.page.save()
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
async def show_blue_dashboard(q: Q): q.page['meta'] = ui.meta_card( box='', layouts=[ ui.layout(breakpoint='xl', width='1200px', zones=[ ui.zone('header', size='80px'), ui.zone('title', size='0'), ui.zone('top', direction=ui.ZoneDirection.ROW, size='200px'), ui.zone('middle', direction=ui.ZoneDirection.ROW, size='385px'), ui.zone('bottom', direction=ui.ZoneDirection.ROW, size='385px'), ui.zone('footer', size='50px'), ]) ]) q.page['header'] = ui.header_card(box='header', title='H2O Wave Demo', subtitle='Blue Dashboard', nav=global_nav) q.page['title'] = ui.section_card( box='title', title=next(sample_title), subtitle=next(sample_caption), items=[ ui.toggle(name='search', label=next(sample_term), value=True), ui.dropdown(name='distribution', label='', value='option0', choices=[ ui.choice(name=f'option{i}', label=next(sample_term)) for i in range(5) ]), ui.date_picker(name='target_date', label='', value='2020-12-25'), ], ) sales_dates = generate_time_series(1000) sales_values = generate_random_walk() q.page['total_quantity'] = ui.tall_series_stat_card( box=ui.box('top', order=1), title=next(sample_term), value=next(sample_dollars), aux_value=next(sample_title), plot_type='area', plot_color='$blue', plot_category='date', plot_value='quantity', plot_zero_value=0, plot_data=data( fields=['date', 'quantity'], rows=[(next(sales_dates), next(sales_values)) for i in range(30)], pack=True, ), ) q.page['total_cost'] = ui.tall_series_stat_card( box=ui.box('top', order=2), title=next(sample_term), value=next(sample_amount), aux_value=next(sample_percent), plot_type='area', plot_color='$blue', plot_category='date', plot_value='cost', plot_zero_value=0, plot_data=data( fields=['date', 'cost'], rows=[(next(sales_dates), next(sales_values)) for i in range(30)], pack=True, ), ) q.page['total_revenue'] = ui.tall_series_stat_card( box=ui.box('top', order=3), title=next(sample_term), value=next(sample_dollars), aux_value=next(sample_title), plot_type='area', plot_color='$blue', plot_category='date', plot_value='revenue', plot_zero_value=0, plot_data=data( fields=['date', 'revenue'], rows=[(next(sales_dates), next(sales_values)) for i in range(30)], pack=True, ), ) q.page['total_profit'] = ui.tall_series_stat_card( box=ui.box('top', order=4), title=next(sample_term), value=next(sample_amount), aux_value=next(sample_title), plot_type='area', plot_color='$blue', plot_category='date', plot_value='profit', plot_zero_value=0, plot_data=data( fields=['date', 'profit'], rows=[(next(sales_dates), next(sales_values)) for i in range(30)], pack=True, ), ) ytd_revenue = generate_random_walk(0, 10000, 0.5) q.page['revenue_by_customer'] = ui.plot_card( box='middle', title=next(sample_title), data=data( fields=['channel', 'sessions'], rows=[(next(sample_term), next(ytd_revenue)) for i in range(10)], pack=True, ), plot=ui.plot([ ui.mark(type='interval', x='=sessions', y='=channel', y_min=0, color='$blue') ])) months = generate_sequence(['Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']) q.page['ytd_revenue'] = ui.plot_card( box=ui.box(zone='middle', width='66%', order=2), title=next(sample_title), data=data(fields=['month', 'channel', 'revenue'], rows=[(next(months), 'Online', next(ytd_revenue)) for i in range(6)] + [(next(months), 'In-store', next(ytd_revenue)) for i in range(6)], pack=True), plot=ui.plot([ ui.mark(type='interval', x='=month', y='=revenue', color='=channel', dodge='auto', y_min=0, color_range='$cyan $blue') ])) q.page['top_products'] = ui.stat_list_card( box='bottom', title=next(sample_title), subtitle=next(sample_caption), items=[ ui.stat_list_item(label=next(sample_term), caption=next(sample_title), value=next(sample_dollars), icon=next(sample_icon), icon_color=next(sample_color)) for i in range(5) ], ) q.page['recent_earnings'] = ui.stat_table_card( box=ui.box(zone='bottom', width='66%', order=2), title=next(sample_title), subtitle=next(sample_caption), columns=['Date', 'Sales', 'Earnings', 'Taxes'], items=[ ui.stat_table_item(label=next(sample_title), values=[ next(sample_dollars), next(sample_percent), next(sample_amount) ]) for i in range(8) ]) q.page['footer'] = ui.footer_card( box='footer', caption='(c) 2021 H2O.ai. All rights reserved.') await q.page.save()
async def show_cyan_dashboard(q: Q): q.page['meta'] = ui.meta_card(box='', layouts=[ ui.layout( breakpoint='xl', width='1200px', zones=[ ui.zone('header', size='0'), ui.zone('body', direction=ui.ZoneDirection.ROW, zones=[ ui.zone('content', size='75%', zones=[ ui.zone('top', size='600px'), ui.zone('middle', size='300px', direction=ui.ZoneDirection.ROW, zones=[ ui.zone('middle_left'), ui.zone('middle_right'), ]), ui.zone('bottom', size='500px'), ]), ui.zone('sidebar', size='25%'), ]), ui.zone('footer', size='0'), ] ) ]) q.page['header'] = ui.header_card(box='header', title='H2O Wave Demo', subtitle='Cyan Dashboard', nav=global_nav) q.page['section'] = ui.section_card( box=ui.box('top', order=1, size=0), title=next(sample_title), subtitle=next(sample_caption), items=[ ui.toggle(name='when', label=next(sample_term), value=False), ui.toggle(name='what', label=next(sample_term), value=True), ] ) trend_date = generate_time_series(300) trend_price = generate_random_walk(2000, 8000, 0.2) q.page['sales_overview'] = ui.form_card( box=ui.box('top', order=2), title=next(sample_title), items=[ ui.stats(items=[ ui.stat(label=next(sample_term), value=next(sample_percent), caption=next(sample_dollars)), ui.stat(label=next(sample_term), value=next(sample_dollars), caption=next(sample_percent)), ui.stat(label=next(sample_term), value=next(sample_amount), caption=next(sample_percent)), ui.stat(label=next(sample_term), caption=next(sample_caption)), ], inset=True), ui.visualization( plot=ui.plot([ ui.mark(type='area', x_scale='time', x='=date', y='=price', color='$cyan'), ]), data=data( fields=['date', 'price'], rows=[(next(trend_date), next(trend_price)) for i in range(120)], pack=True ), height='350px', ), ], ) q.page['ticket_sales'] = ui.form_card( box=ui.box('middle_left'), title=next(sample_title), items=[ ui.visualization( plot=ui.plot([ ui.mark(type='interval', x_scale='time', x='=date', y='=price', color='$cyan'), ]), data=data( fields=['date', 'price'], rows=[(next(trend_date), next(trend_price)) for i in range(120)], pack=True ), height='150px', ), ui.stats(items=[ ui.stat(label=next(sample_term), value=next(sample_percent)) for i in range(4) ], justify='between', inset=True), ], ) q.page['events_hosted'] = ui.wide_bar_stat_card( box=ui.box('middle_right', order=1), title=next(sample_title), value=next(sample_dollars), aux_value=next(sample_percent), progress=random.random(), plot_color='$cyan', ) q.page['points_earned'] = ui.wide_bar_stat_card( box=ui.box('middle_right', order=2), title=next(sample_title), value=next(sample_amount), aux_value=next(sample_percent), progress=random.random(), plot_color='$cyan', ) q.page['points_given'] = ui.wide_bar_stat_card( box=ui.box('middle_right', order=3), title=next(sample_title), value=next(sample_dollars), aux_value=next(sample_percent), progress=random.random(), plot_color='$cyan', ) session_count = generate_random_walk(1000, 8000) q.page['event_poll'] = ui.form_card( box='bottom', title=next(sample_title), items=[ ui.inline(items=[ ui.dropdown(name='region', label=next(sample_term), value='option0', choices=[ ui.choice(name=f'option{i}', label=next(sample_term)) for i in range(5) ]), ui.dropdown(name='age', label=next(sample_term), value='option0', choices=[ ui.choice(name=f'option{i}', label=next(sample_term)) for i in range(5) ]), ui.dropdown(name='response', label=next(sample_term), value='option0', choices=[ ui.choice(name=f'option{i}', label=next(sample_term)) for i in range(5) ]), ]), ui.visualization( plot=ui.plot([ ui.mark(type='interval', x='=sessions', y='=channel', y_min=0, color='$cyan') ]), data=data( fields=['channel', 'sessions'], rows=[(next(sample_term), next(session_count)) for i in range(10)], pack=True, ), height='350px', ), ], ) q.page['sidebar_section'] = ui.section_card( box=ui.box('sidebar', order=1, size='0'), title=next(sample_title), subtitle=next(sample_caption), ) q.page['filter'] = ui.form_card( box=ui.box('sidebar', height='335px', order=2), title=next(sample_title), items=[ ui.dropdown(name='region', label=next(sample_term), value='option0', choices=[ ui.choice(name=f'option{i}', label=next(sample_term)) for i in range(5) ]), ui.dropdown(name='age', label=next(sample_term), value='option0', choices=[ ui.choice(name=f'option{i}', label=next(sample_term)) for i in range(5) ]), ui.dropdown(name='response', label=next(sample_term), value='option0', choices=[ ui.choice(name=f'option{i}', label=next(sample_term)) for i in range(5) ]), ui.checkbox(name='plural', label=next(sample_title), value=True), ui.checkbox(name='annual', label=next(sample_title), value=True), ], ) event_icon = generate_random_choice(['MusicInCollection', 'Video', 'TVMonitor']) q.page['upcoming_events'] = ui.stat_list_card( box=ui.box('sidebar', order=3), title=next(sample_title), subtitle=next(sample_caption), items=[ui.stat_list_item(label=next(sample_title), caption=next(sample_caption), aux_value=f'{random.randint(1, 59)}m', icon=next(event_icon)) for i in range(10)], ) q.page['footer'] = ui.footer_card(box='footer', caption='(c) 2021 H2O.ai. All rights reserved.') await q.page.save()
def show_form(q: Q): q.page["meta"] = ui.meta_card( box="", title="Tennis Match Prediction", refresh=1, layouts=[ ui.layout( breakpoint="xs", width="1200px", zones=[ ui.zone("header"), ui.zone("tournament"), ui.zone( "players", direction=ui.ZoneDirection.ROW, zones=[ ui.zone("player1", size="50%"), ui.zone("player2", size="50%"), ], ), ui.zone("submit", size="50%"), ui.zone("result", size="50%"), ], ) ], ) q.page["header"] = ui.header_card( box="header", title="Tennis Match Prediction", subtitle="" ) q.page["tournament"] = ui.form_card( box="tournament", items=[ # Tournament name ui.dropdown( name="t_name", label="Tournament Name", placeholder="Wimbledon", choices=[ ui.choice(name=t_name, label=t_name) for t_name in tourn_ids.keys() ], trigger=False, ), # Round ui.dropdown( name="t_round", label="Round", placeholder="Final", choices=[ ui.choice(name=t_round, label=t_round) for t_round in round_list ], trigger=False, ), ], ) q.page["p1"] = ui.form_card( box="player1", items=[ ui.text_l("Player 1"), ui.dropdown( name="p1_name", label="Name", placeholder="Roger Federer", choices=[ ui.choice(name=p_name, label=p_name) for p_name in player_ids.keys() ], trigger=False, ), ui.textbox(name="p1_rank", label="Rank"), ui.textbox(name="p1_age", label="Age"), ], ) q.page["player2"] = ui.form_card( box="player2", items=[ ui.text_l("Player 2"), ui.dropdown( name="p2_name", label="Name", placeholder="Rafael Nadal", choices=[ ui.choice(name=p_name, label=p_name) for p_name in player_ids.keys() ], trigger=False, ), ui.textbox(name="p2_rank", label="Rank"), ui.textbox(name="p2_age", label="Age"), ], ) q.page["submit"] = ui.form_card( box="submit", items=[ ui.buttons( items=[ui.button(name="submit", label="Submit", primary=True)], justify="center", ) ], ) result_str = "" if not q.client.result_str else q.client.result_str q.page["result"] = ui.markdown_card( box="result", title="Results", content=result_str, )
async def show_mint_dashboard(q: Q): q.page['meta'] = ui.meta_card( box='', layouts=[ ui.layout(breakpoint='xl', width='1200px', zones=[ ui.zone('header'), ui.zone('main_section'), ui.zone('overview', direction=ui.ZoneDirection.ROW, size='425px'), ui.zone('tickers', direction=ui.ZoneDirection.ROW, size='175px'), ui.zone('transactions_section'), ui.zone('transactions', direction=ui.ZoneDirection.ROW, size='400px'), ui.zone('footer'), ]) ]) q.page['header'] = ui.header_card(box='header', title='H2O Wave Demo', subtitle='Mint Dashboard', nav=global_nav) q.page['main_section'] = ui.section_card( box='main_section', title=next(sample_title), subtitle=next(sample_caption), items=[ ui.tabs( name='currency', value='option0', items=[ ui.tab(name=f'option{i}', label=next(sample_term)) for i in range(4) ], ) ], ) trend_date = generate_time_series(60) trend_price = generate_random_walk(2000, 8000, 0.2) q.page['trends'] = ui.form_card( box=ui.box('overview', order=1, size=4), title=next(sample_title), items=[ ui.inline(inset=True, items=[ ui.checkbox(name='sent', label=next(sample_term), value=True), ui.checkbox(name='received', label=next(sample_term)), ui.dropdown(name='distribution', label='', value='option0', choices=[ ui.choice(name=f'option{i}', label=next(sample_term)) for i in range(5) ]), ]), ui.visualization( plot=ui.plot([ ui.mark(type='line', x_scale='time', x='=date', y='=price', color='$mint', curve=ui.MarkCurve.STEP), ]), data=data(fields=['date', 'price'], rows=[(next(trend_date), next(trend_price)) for i in range(60)], pack=True), height='215px', ), ui.stats(items=[ ui.stat(label=next(sample_term), value=next(sample_percent)), ui.stat(label=next(sample_term), value=next(sample_dollars)), ui.stat(label=next(sample_term), value=next(sample_amount)), ui.stat(label=next(sample_term), value=next(sample_percent)), ui.stat(label=next(sample_term), value=next(sample_dollars)), ], justify='between', inset=True), ]) stock_dates = generate_time_series(300) stock_prices = generate_random_walk() q.page['exchange_rate'] = ui.tall_series_stat_card( box=ui.box('overview', order=2), title=next(sample_title), value=next(sample_dollars), aux_value=next(sample_amount), plot_type=ui.TallSeriesStatCardPlotType.AREA, plot_color='$mint', plot_category='date', plot_value='price', plot_curve=ui.TallSeriesStatCardPlotCurve.STEP, plot_zero_value=0, plot_data=data( fields=['date', 'price'], rows=[(next(stock_dates), next(stock_prices)) for i in range(30)], pack=True, ), ) q.page['symbol1'] = ui.tall_series_stat_card( box=ui.box('tickers', order=1), title=next(sample_title), value=next(sample_amount), aux_value=next(sample_percent), plot_type=ui.TallSeriesStatCardPlotType.AREA, plot_color='$mint', plot_category='date', plot_value='price', plot_curve=ui.TallSeriesStatCardPlotCurve.STEP, plot_zero_value=0, plot_data=data( fields=['date', 'price'], rows=[(next(stock_dates), next(stock_prices)) for i in range(30)], pack=True, ), ) q.page['symbol2'] = ui.tall_series_stat_card( box=ui.box('tickers', order=2), title=next(sample_title), value=next(sample_percent), aux_value=next(sample_title), plot_type=ui.TallSeriesStatCardPlotType.AREA, plot_color='$green', plot_category='date', plot_value='price', plot_curve=ui.TallSeriesStatCardPlotCurve.STEP, plot_zero_value=0, plot_data=data( fields=['date', 'price'], rows=[(next(stock_dates), next(stock_prices)) for i in range(30)], pack=True, ), ) q.page['symbol3'] = ui.tall_series_stat_card( box=ui.box('tickers', order=3), title=next(sample_title), value=next(sample_dollars), aux_value=next(sample_percent), plot_type=ui.TallSeriesStatCardPlotType.AREA, plot_color='$mint', plot_category='date', plot_value='price', plot_curve=ui.TallSeriesStatCardPlotCurve.STEP, plot_zero_value=0, plot_data=data( fields=['date', 'price'], rows=[(next(stock_dates), next(stock_prices)) for i in range(30)], pack=True, ), ) q.page['transactions_section'] = ui.section_card( box='transactions_section', title=next(sample_title), subtitle=next(sample_caption), items=[ ui.tabs( name='time_period', value='option0', items=[ ui.tab(name=f'option{i}', label=next(sample_term)) for i in range(6) ], link=True, ), ], ) q.page['transactions'] = ui.stat_table_card( box=ui.box('transactions', order=1, size=2), title=next(sample_title), subtitle=next(sample_caption), columns=[next(sample_term) for i in range(4)], items=[ ui.stat_table_item(label=next(sample_title), caption=f'{random.randint(1, 5)} hours ago', values=[ next(sample_percent), next(sample_amount), next(sample_dollars) ], icon=next(sample_icon), icon_color='$mint') for i in range(6) ]) q.page['market'] = ui.stat_list_card( box=ui.box('transactions', order=2), title=next(sample_title), subtitle=next(sample_caption), items=[ ui.stat_list_item(label=next(sample_term), caption=next(sample_title), value=next(sample_dollars), aux_value=next(sample_percent), value_color=next(sample_color)) for i in range(5) ], ) q.page['footer'] = ui.footer_card( box='footer', caption='(c) 2021 H2O.ai. All rights reserved.') await q.page.save()