async def serve(q: Q): if q.args.menu: q.page['example'].items = [ ui.tabs(name='menu', value=q.args.menu, items=tabs), get_tab_content(q.args.menu), ] else: q.page['example'] = ui.form_card(box='1 1 4 10', items=[ ui.tabs(name='menu', value='email', items=tabs), get_tab_content('email'), ]) 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.' ) ])
ui.nav_item(name='#menu/spam', label='Spam'), ui.nav_item(name='#menu/ham', label='Ham'), ui.nav_item(name='#menu/eggs', label='Eggs'), ]), ui.nav_group('Help', items=[ ui.nav_item(name='#about', label='About'), ui.nav_item(name='#support', label='Support'), ]) ], color='card', ) page['header3'] = ui.header_card( box='1 3 9 1', title='Primary color header', subtitle='And now for something completely different!', icon='Cycling', icon_color='$violet', items=[ui.menu(icon='Add', items=commands)], secondary_items=[ ui.tabs(name='menu', value='email', link=True, items=[ ui.tab(name='email', label='Mail', icon='Mail'), ui.tab(name='events', label='Events', icon='Calendar'), ui.tab(name='spam', label='Spam', icon='Heart'), ]), ]) 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()
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()
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()
async def serve(q: Q): if not q.client.initialized: image = 'https://images.pexels.com/photos/220453/pexels-photo-220453.jpeg?auto=compress&h=750&w=1260' f = FakeCategoricalSeries() q.client.primary = '#000000' q.client.page = '#e2e2e2' q.client.card = '#ffffff' q.client.text = '#000000' q.page['meta'] = ui.meta_card( box='', theme='custom', layouts=[ ui.layout(breakpoint='xs', zones=[ ui.zone('header'), ui.zone('content', direction=ui.ZoneDirection.ROW, zones=[ ui.zone('colors', size='340px'), ui.zone('preview') ]), ui.zone('footer') ]) ]) q.page['header'] = ui.header_card(box='header', title='Theme generator', subtitle='Color your app easily', icon='Color', icon_color='$card') q.page['form'] = ui.form_card(box='colors', items=[ ui.color_picker( name='primary', label='Primary', trigger=True, alpha=False, inline=True, value=q.client.primary), ui.color_picker(name='text', label='Text', trigger=True, alpha=False, inline=True, value=q.client.text), ui.color_picker(name='card', label='Card', trigger=True, alpha=False, inline=True, value=q.client.card), ui.color_picker(name='page', label='Page', trigger=True, alpha=False, inline=True, value=q.client.page), ui.text_xl('Check contrast'), get_contrast('text', 'card', q), get_contrast('card', 'primary', q), get_contrast('text', 'page', q), get_contrast('page', 'primary', q), ui.text_xl('Copy code'), ui.frame(content=get_theme_code(q), height='180px'), ]) q.page['sample'] = ui.form_card( box='preview', items=[ ui.text_xl(content='Sample App to show colors'), ui.progress(label='A progress bar'), ui.inline([ ui.checkbox(name='checkbox1', label='A checkbox', value=True), ui.checkbox(name='checkbox2', label='Another checkbox'), ui.checkbox(name='checkbox3', label='Yet another checkbox'), ui.toggle(name='toggle', label='Toggle', value=True), ]), ui.inline([ ui.date_picker(name='date_picker', label='Date picker'), ui.picker(name='picker', label='Picker', choices=[ ui.choice('choice1', label='Choice 1'), ui.choice('choice2', label='Choice 2'), ui.choice('choice3', label='Choice 3'), ]), ui.combobox(name='combobox', label='Combobox', choices=['Choice 1', 'Choice 2', 'Choice 3']), ui.persona(title='John Doe', subtitle='Data Scientist', size='s', image=image), ]), ui.slider(name='slider', label='Slider', value=70), ui.link(label='Link'), ui.inline(justify='between', items=[ ui.stepper(name='stepper', width='500px', items=[ ui.step(label='Step 1', icon='MailLowImportance'), ui.step( label='Step 2', icon='TaskManagerMirrored'), ui.step(label='Step 3', icon='Cafe'), ]), ui.tabs(name='menu', value='email', items=[ ui.tab(name='email', label='Mail', icon='Mail'), ui.tab(name='events', label='Events', icon='Calendar'), ui.tab(name='spam', label='Spam'), ]), ]), ui.inline(items=[ ui.table( name='table', width='50%', columns=[ ui.table_column( name='name', label='Name', min_width='80px'), ui.table_column(name='surname', label='Surname', filterable=True), ui.table_column(name='age', label='Age', sortable=True), ui.table_column( name='progress', label='Progress', cell_type=ui.progress_table_cell_type( color='$themePrimary')), ], rows=[ ui.table_row(name='row1', cells=['John', 'Doe', '25', '0.90']), ui.table_row(name='row2', cells=['Ann', 'Doe', '35', '0.75']), ui.table_row( name='row3', cells=['Casey', 'Smith', '40', '0.33']), ], height='330px', ), ui.visualization( width='50%', plot=ui.plot([ ui.mark(type='interval', x='=product', y='=price', y_min=0) ]), data=data(fields='product price', rows=[(c, x) for c, x, _ in [f.next() for _ in range(20)]], pack=True), ), ]), ui.buttons([ ui.button(name='primary_button', label='Primary', primary=True), ui.button(name='standard_button', label='Standard'), ui.button(name='standard_disabled_button', label='Disabled', disabled=True), ui.button(name='icon_button', icon='Heart', caption='Tooltip text'), ]), ]) q.page['footer'] = ui.footer_card( box='footer', caption='(c) 2021 H2O.ai. All rights reserved.') q.client.themes = [ ui.theme(name='custom', text=q.client.text, card=q.client.card, page=q.client.page, primary=q.client.primary) ] q.client.initialized = True if q.args.primary: q.client.themes[0].primary = q.args.primary q.client.primary = q.args.primary if q.args.text: q.client.themes[0].text = q.args.text q.client.text = q.args.text if q.args.card: q.client.themes[0].card = q.args.card q.client.card = q.args.card if q.args.page: q.client.themes[0].page = q.args.page q.client.page = q.args.page q.page['meta'].themes = q.client.themes q.page['form'].items[5] = get_contrast('text', 'card', q) q.page['form'].items[6] = get_contrast('card', 'primary', q) q.page['form'].items[7] = get_contrast('text', 'page', q) q.page['form'].items[8] = get_contrast('page', 'primary', q) q.page['form'].items[10].frame.content = get_theme_code(q) await q.page.save()