async def serve(q: Q): if not q.client.initialized: q.page['form'] = ui.form_card( box='1 1 -1 11', items=[ ui.textbox(name='search', label='Search', placeholder='Enter a keyword...', trigger=True), ui.table(name='issues', columns=[ ui.table_column(name=name, label=name) for name in column_names ], rows=df_to_rows(addresses)) ]) q.client.initialized = True else: items = q.page['form'].items search_box = items[0].textbox table = items[1].table term: str = q.args.search term = term.strip() if term else '' search_box.value = term table.rows = df_to_rows( search_df(addresses, term) if len(term) else addresses) await q.page.save()
async def serve(q: Q): q.page['example'] = ui.form_card(box='1 1 4 10', items=[ ui.textbox(name='text', label='English', value=q.args.text or '', multiline=True, trigger=True), ui.label('Pig Latin'), ui.text(to_pig_latin(q.args.text) or '*Type in some text above to translate to Pig Latin!*'), ]) 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 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 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 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()
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()
async def render(self, q: Q): """ Render card in Wave. Args: q: Wave server """ card = ui.form_card( box=self.box, items=[ ui.textbox(name='input_text', label='Enter text', value=self.input_text, multiline=True), ui.button(name='analyze_text', label='Analyze', primary=True) ], title=self.title, commands=self.commands ) q.page[self.name] = card
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) ])
def card_add() -> ui.FormCard: company = ui.textbox(name='company', label='Company Name', required=True) button = ui.button(name='add_company', label='Add Company', primary=True) card = ui.form_card(box=box_sidebar, items=[company, button]) return card
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, )
] page = site['/demo'] page['header1'] = ui.header_card( box='1 1 9 1', title='Transparent header', subtitle='And now for something completely different!', image= 'https://www.h2o.ai/wp-content/themes/h2o2018/templates/dist/images/h2o_logo.svg', items=[ ui.button(name='btn1', label='Button 1'), ui.button(name='btn2', label='Button 2'), ui.button(name='btn3', label='Button 3'), ], secondary_items=[ ui.textbox(name='search', icon='Search', width='300px', placeholder='Search...') ], color='transparent') page['header2'] = ui.header_card( box='1 2 9 1', title='Card color header', subtitle='And now for something completely different!', items=[ui.menu(image=image, items=commands)], secondary_items=[ ui.button(name='btn1', label='Link 1', link=True), ui.button(name='btn2', label='Link 2', link=True), ui.button(name='btn3', label='Link 3', link=True), ], nav=[ ui.nav_group('Menu',
async def showManufacturers(q: Q): items = [ui.tabs(name='menu', value=q.args.menu, items=tabs)] print('---------------------------') print('== MANUFACTURER TAB == ') ## when user is adding new manufacturer if q.args.show_inputs: items.extend([ ui.text_xl(content='Add Manufacturer'), ui.textbox(name='manufacturer', label='Manufacturer'), ui.textbox(name='product', label='Product'), # ui.dropdown(name='uom', label='Unit of Measurement', choices=[ # ui.choice(name=x, label=x) for x in uom # ]), ui.button(name='show_tables', label='Submit', primary=True) ]) # ## when user is editing existing manufacturer # elif q.args.edit_button: # items.extend([ui.text_xl(content='Edit Manufacturer'), # ui.textbox(name='manufacturer', label='Manufacturer'), # # ui.textbox(name='product', label='Product'), # # ui.dropdown(name='uom', label='Unit of Measurement', choices=[ # # ui.choice(name=x, label=x) for x in uom # # ]), # ui.button(name='show_tables', label='Submit', primary=True)]) ## default goes here else: ## user have click has clicked 'Submit' button after adding supplier if q.args.show_tables: l_manufacturers.append([q.args.manufacturer, q.args.product]) m = Manufacturers(q.args.manufacturer, q.args.product) manufacturers.append(m) items.append( ui.message_bar(type='success', text='You have successfully added a product')) ## GET ALL MANUFACTURERS DATA ## default view (if there's a manufacturer data) if len(manufacturers) > 0: items.append( ui.table(name='manufacturers', columns=column_manufacturer_table, rows=[ ui.table_row(name=manufacturer.id, cells=[ manufacturer.manufacturer, manufacturer.product ]) for manufacturer in manufacturers ], groupable=True, downloadable=True, resettable=True, height='500px')) ## GET ALL MANUFACTURERS DATA ## default view (if there's no manufacturer data) else: items.append(ui.text_l(content='No Manufacturer found')) # items.append(ui.button(name='show_inputs', label='Add Manufacturer', primary=True)) items.append( ui.buttons([ ui.button(name='show_inputs', label='Add Manufacturer', primary=True), ui.button(name='delete_button', label='Delete Manufacturer'), ui.button(name='edit_button', label='Edit Manufacturer'), ])) 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()
def home_content(q: Q): # The meta card's 'zones' attribute defines placeholder zones to lay out cards for different viewport sizes. # We define four layout schemes here. q.page['twitter_app'] = ui.meta_card( box='', layouts=[ ui.layout( # If the viewport width >= 0: breakpoint='xs', width='400px', zones=[ # 80px high header ui.zone('header', size='80px'), ui.zone( 'search_bar', direction=ui.ZoneDirection.ROW, size=80, zones=[ # 400px wide search_text_area ui.zone('search_text_area', size='400px', direction=ui.ZoneDirection.ROW), ]), ui.zone( 'search_button_area', direction=ui.ZoneDirection.ROW, size=80, zones=[ # 400px wide search_button ui.zone('search_button', size='400px', direction=ui.ZoneDirection.ROW), ]), # Use remaining space for body ui.zone('body', direction=ui.ZoneDirection.COLUMN, size='450px', zones=create_twitter_card_slots(12, 1)), ]), ui.layout( # If the viewport width >= 768: breakpoint='m', width='768px', zones=[ # 80px high header ui.zone('header', size='80px'), ui.zone( 'search_bar', direction=ui.ZoneDirection.ROW, size=80, zones=[ # 600px wide search_text_area ui.zone('search_text_area', size='600px', direction=ui.ZoneDirection.ROW), # 160px wide search_button ui.zone('search_button', size='200px', direction=ui.ZoneDirection.ROW), ]), # Use remaining space for body ui.zone('body', direction=ui.ZoneDirection.COLUMN, size='800px', zones=create_twitter_card_slots(6, 2)) ]), ui.layout( # If the viewport width >= 1200: breakpoint='xl', width='1200px', zones=[ # 80px high header ui.zone('header', size='80px'), ui.zone( 'search_bar', direction=ui.ZoneDirection.ROW, size=80, zones=[ # 1000px wide search_text_area ui.zone('search_text_area', size='1000px', direction=ui.ZoneDirection.ROW), # 215px wide search_button ui.zone('search_button', size='215px', direction=ui.ZoneDirection.ROW), ]), # Use remaining space for body ui.zone('body', direction=ui.ZoneDirection.COLUMN, size='1200px', zones=create_twitter_card_slots(4, 3)) ]), ui.layout( # If the viewport width >= 1600: breakpoint='1600px', width='1600px', zones=[ # 80px high header ui.zone('header', size='80px'), ui.zone( 'search_bar', direction=ui.ZoneDirection.ROW, size=80, zones=[ # 1400px wide search_text_area ui.zone('search_text_area', size='1400px', direction=ui.ZoneDirection.ROW), # 230px wide search_button ui.zone('search_button', size='230px', direction=ui.ZoneDirection.ROW), ]), # Use remaining space for body ui.zone('body', direction=ui.ZoneDirection.COLUMN, size='1600px', zones=create_twitter_card_slots(3, 4)) ]) ]) q.page['header'] = ui.header_card( box='header', title=config.title, subtitle=config.subtitle, icon=config.icon, icon_color=config.color, ) q.page["search_text_area"] = ui.form_card(box=ui.boxes('search_text_area'), items=[ ui.textbox( name='text', label='', placeholder='#h2oai', value=q.args.text, multiline=False, trigger=False) ]) q.page["search_button"] = ui.form_card( box=ui.boxes('search_button'), items=[ui.button(name="search", label="search", primary=True)]) for tweet_count in range(0, config.max_tweet_count): q.page[f'twitter_card_{tweet_count}'] = ui.form_card( box=f'content_{tweet_count}', items=[])
def get_form_items(txt: Optional[str]): return [ ui.textbox(name='text', label='English', multiline=True, trigger=True), ui.label('Pig Latin'), ui.text(to_pig_latin(txt)), ]
async def render(self, q: Q): """ Render card in Wave. Args: q: Wave server """ card = ui.form_card(box=self.box, items=[ ui.toggle(name='split_sentences', label='Split Sentences', value=self.split_sentences, trigger=True), ui.toggle(name='fine_grained', label='Fine Grained', value=self.fine_grained, trigger=True), ui.toggle(name='add_lemma', label='Add Lemma', value=self.add_lemma, trigger=True), ui.toggle(name='collapse_punct', label='Merge Punctuation', value=self.collapse_punct, trigger=True), ui.toggle(name='collapse_phrases', label='Merge Phrases', value=self.collapse_phrases, trigger=True), ui.toggle(name='compact', label='Make Compact', value=self.compact, trigger=True), ui.inline(items=[ ui.textbox(name='color', label='Visualizer Color', value=self.color, trigger=True), ui.textbox(name='bg', label='Background Color', value=self.bg, trigger=True) ]), ui.inline(items=[ ui.textbox(name='font', label='Font', value=self.font, trigger=True), ui.textbox(name='offset_x', label='Offset-X', value=str(self.offset_x), trigger=True) ]), ui.inline(items=[ ui.textbox(name='arrow_stroke', label='Arrow Stroke', value=str(self.arrow_stroke), suffix='px', trigger=True), ui.textbox(name='arrow_width', label='Arrow Width', value=str(self.arrow_width), suffix='px', trigger=True), ui.textbox(name='arrow_spacing', label='Arrow Spacing', value=str(self.arrow_spacing), suffix='px', trigger=True) ]), ui.inline(items=[ ui.textbox(name='word_spacing', label='Word Spacing', value=str(self.word_spacing), suffix='px', trigger=True), ui.textbox(name='word_distance', label='Word Distance', value=str(self.word_distance), suffix='px', trigger=True) ]) ], title=self.title, commands=self.commands) q.page[self.name] = card
async def serve(q: Q): if q.args.show_inputs: q.page['example'].items = [ ui.text(f'textbox={q.args.textbox}'), ui.text(f'textbox_disabled={q.args.textbox_disabled}'), ui.text(f'textbox_readonly={q.args.textbox_readonly}'), ui.text(f'textbox_required={q.args.textbox_required}'), ui.text(f'textbox_error={q.args.textbox_error}'), ui.text(f'textbox_mask={q.args.textbox_mask}'), ui.text(f'textbox_icon={q.args.textbox_icon}'), ui.text(f'textbox_prefix={q.args.textbox_prefix}'), ui.text(f'textbox_suffix={q.args.textbox_suffix}'), ui.text(f'textbox_placeholder={q.args.textbox_placeholder}'), ui.text( f'textbox_disabled_placeholder={q.args.textbox_disabled_placeholder}' ), ui.text(f'textbox_multiline={q.args.textbox_multiline}'), ui.button(name='show_form', label='Back', primary=True), ] else: q.page['example'] = ui.form_card( box='1 1 4 10', items=[ ui.textbox(name='textbox', label='Standard'), ui.textbox(name='textbox_disabled', label='Disabled', value='I am disabled', disabled=True), ui.textbox(name='textbox_readonly', label='Read-only', value='I am read-only', readonly=True), ui.textbox(name='textbox_required', label='Required', required=True), ui.textbox(name='textbox_error', label='With error message', error='I have an error'), ui.textbox(name='textbox_mask', label='With input mask', mask='(999) 999 - 9999'), ui.textbox(name='textbox_icon', label='With icon', icon='Calendar'), ui.textbox(name='textbox_prefix', label='With prefix', prefix='http://'), ui.textbox(name='textbox_suffix', label='With suffix', suffix='@h2o.ai'), ui.textbox(name='textbox_placeholder', label='With placeholder', placeholder='I need some input'), ui.textbox(name='textbox_disabled_placeholder', label='Disabled with placeholder', disabled=True, placeholder='I am disabled'), ui.textbox(name='textbox_multiline', label='Multiline textarea', multiline=True), ui.button(name='show_inputs', label='Submit', primary=True), ]) await q.page.save()
async def render(self, q: Q): """ Render card in Wave. Args: q: Wave server """ text_similarity = self.doc_1.similarity(self.doc_2) card = ui.form_card( box=self.box, items=[ ui.textbox(name='input_text_1', label='Text 1', value=str(self.doc_1), multiline=True), ui.textbox(name='input_text_2', label='Text 2', value=str(self.doc_2), multiline=True), ui.buttons( items=[ ui.button(name='compare_text', label='Compare', primary=True) ] ), ui.stats( items=[ ui.stat( label='Tokens 1', value=f'{len(self.doc_1)}', icon='TextField', icon_color=self.color ), ui.stat( label='Tokens 2', value=f'{len(self.doc_2)}' ) ] ), ui.stats( items=[ ui.stat( label='Sentences 1', value=f'{len(list(self.doc_1.sents))}', icon='TextBox', icon_color=self.color ), ui.stat( label='Sentences 2', value=f'{len(list(self.doc_2.sents))}' ) ] ), ui.stats( items=[ ui.stat( label='Overall Similarity', value=f'{round(text_similarity * 100)}%', icon='VennDiagram', icon_color=self.color ) ] ) ], title=self.title, commands=self.commands ) q.page[self.name] = card