async def show_slider(q: Q, message: str): q.page['output'] = ui.form_card(box='1 1 3 2', title="Party Meter", items=[ ui.slider( name='temperature', label='Temperature (°C)', max=50, value=q.args.temperature, trigger=True, ), ui.text(message), ]) await q.page.save()
async def serve(q: Q): if not q.client.initialized: q.client.tab = 'a' q.page['tabs'] = ui.tab_card( # Initialize once box='1 1 4 1', items=[ui.tab(name=f'#{t}', label=t.upper()) for t in TABS]) q.client.initialized = True if q.args['#']: q.client.tab = str(q.args['#']) await remove_cards(q) await display_tab(q) await q.page.save()
async def serve(q: Q): if not q.client.initialized: q.client.initialized = True q.page['table'] = ui.form_card( box='1 1 4 7', items=[ ui.text_l('Airline Passenger Counts'), ui.text( make_markdown_table( fields=air_passengers_fields, rows=add_links_to_cells(air_passengers_rows), )), ], ) q.page['message'] = ui.markdown_card( box='1 8 4 1', title='', content='Click on a cell in the table above!', ) await handle_on(q) await q.page.save()
async def serve(q: Q): if q.args.train: # train WaveML Model using H2O-3 AutoML q.client.wave_model = build_model( train_df=q.client.train_df, target_column='target', model_type=ModelType.H2O3, _h2o3_max_runtime_secs=5, _h2o3_nfolds=2 ) model_id = 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].buttons.items[1].button.disabled = False q.page['example'].items[2].message_bar.type = 'success' q.page['example'].items[2].message_bar.text = 'Training successfully completed!' q.page['example'].items[3].text.content = f'''**H2O AutoML model id:** {model_id} <br /> **Accuracy:** {accuracy}%''' q.page['example'].items[4].text.content = '' elif q.args.predict: # predict on test data preds = q.client.wave_model.predict(test_df=q.client.test_df) # show predictions q.page['example'].items[2].message_bar.text = 'Prediction successfully completed!' q.page['example'].items[4].text.content = f'''**Example predictions:** <br /> {preds[0]} <br /> {preds[1]} <br /> {preds[2]}''' else: # prepare sample train and test dataframes data = load_wine(as_frame=True)['frame'] q.client.train_df, q.client.test_df = train_test_split(data, train_size=0.8) # display ui q.page['example'] = ui.form_card( box='1 1 -1 -1', items=[ ui.text(content='''The sample dataset used is the <a href="https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_wine.html" target="_blank">wine dataset</a>.'''), ui.buttons(items=[ ui.button(name='train', label='Train', primary=True), ui.button(name='predict', label='Predict', primary=True, disabled=True), ]), ui.message_bar(type='warning', text='Training will take a few seconds'), ui.text(content=''), ui.text(content='') ] ) await q.page.save()
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, ), ])
async def init(q: Q): if not q.client.app_initialized: q.app.model = pipeline("text-generation") q.client.app_initialized = True q.page.drop() q.page["title"] = ui.header_card( box="1 1 8 1", title="Text Generation", subtitle="Generate text using Huggingface pipelines", icon="AddNotes", icon_color="Blue", )
async def serve(q: Q): # Track how many times the button has been clicked. if q.client.count is None: q.client.count = 0 if not q.client.initialized: # Add our script to the page. q.page['meta'] = ui.meta_card( box='', script=ui.inline_script( # The Javascript code for this script. content=counter_onclick, # Execute this script only if the 'counter' element is available. targets=['counter'], )) q.page['form'] = ui.form_card( box='1 1 2 2', title='Counter', items=[ # Display our custom button. ui.markup(content=counter_html), ui.text(''), ], ) q.client.initialized = True else: # Do we have an event from the counter? if q.events.counter: # Is 'clicked' True? if q.events.counter.clicked: # Increment the count. q.client.count += 1 # Display the latest count. q.page['form'].items[ 1].text.content = f'You clicked {q.client.count} times.' await q.page.save()
async def show_homepage(q: Q): if q.client.initialise is None: ######## all logics / preprocessing goes here ######### input_path = 'datasets/Credit_Scoring_Dataset-test.csv' q.user.dataset = pd.read_csv(input_path).fillna(0) customer_ids = list(q.user.dataset['CustomerID'])[:10] if not os.path.isfile('datasets/credit_predictions.csv'): dp = DriverlessPredict( config={ "username": "", "password": "", "experiment_key": "", "address": "" }) predictions = dp.dai_predict(input_path=input_path) else: predictions = pd.read_csv("datasets/credit_predictions.csv") q.user.dataset = pd.concat([q.user.dataset, predictions], axis=1) target_col = [_ for _ in q.user.dataset.columns if ".1" in _][0] q.user.dataset['prediction'] = q.user.dataset[target_col] q.user.dataset = q.user.dataset.dropna() q.user.fe = pd.read_csv("datasets/feature_importance.txt").dropna() q.user.about_text = 'This score and the dashboard is generated by driverless-ai model in which the past \ The training dataset contains credit details of about 250,000 borrowers along with the target column - if they managed to repay the loan or not.' ######## all logics / preprocessing ends here ######### q.page['header'] = add_header_card(box='1 1 11 1') q.page['sidebar'] = add_sidebar_card(box='1 2 2 -1', customer_ids=customer_ids) q.page['content'] = add_text_card(box='3 2 9 -1', text="") q.client.initialise = True await q.page.save()
async def initialize_app(q: Q): """ Initialize app. """ path = path_data file_name = 'marketing.pkl' out_file = path / file_name if not os.path.exists(out_file): df = pd.read_csv(path_data / 'All_People.csv') people = [] for company in companies: dfc = df[df['Company Name'] == company] for index, row in dfc.iterrows(): people.append( Person( cid=row['Id'], status=row['Status'], name=row['Full Name'], title=row['Job Title'], company=row['Company Name'], email=row['Email Address'], phone=row['Phone Number'], source=row['Person Source'], last_contact=row['Last Interesting Moment Date'], )) ql = QLearn(actions=marketing_options) output = open(path / file_name, 'wb') pickle.dump([people, ql, 'assignment'], output) output.close() state = open(out_file, 'rb') q.client.people, q.client.ql, q.client.pos = pickle.load(state) q.page['meta'] = home_cards.card_meta() q.page['title'] = home_cards.card_title() q.page['navbar'] = home_cards.card_navbar() q.page['home'] = home_cards.card_home() q.page['side'] = home_cards.card_sidebar() await q.page.save()
async def serve(q: Q): count = q.user.count or 0 if 'increment' in q.args: count += 1 q.user.count = count items = pack([ui.button(name='increment', label=f'Count={count}')]) if count > 0: form = q.page['example'] form.items = items else: q.page['example'] = ui.form_card(box='1 1 12 10', items=items) await q.page.save()
async def serve2(q: Q): if '#' in q.args: hash_ = q.args['#'] q.page['nav'] = ui.form_card(box='1 1 2 5', items=[ ui.text(f'#={hash_}'), ui.button(name='show_nav', label='Back', primary=True), ]) else: q.page['nav'] = ui.nav_card( box='1 1 2 5', value='#menu/spam', items=[ ui.nav_group('Menu', items=[ 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_item(name='#menu/toast', label='Toast', disabled=True), ]), ui.nav_group('Help', items=[ ui.nav_item(name='#about', label='About', icon='Info'), ui.nav_item(name='#support', label='Support', icon='Help'), ]) ], ) await q.page.save()
async def serve(q: Q): if not q.client.initialized: # Create an empty meta_card to hold the dialog q.page['meta'] = ui.meta_card(box='') # Display a button to launch dialog dialog q.page['example'] = ui.form_card(box='1 1 2 1', items=[ ui.button(name='launch_dialog', label='Launch dialog', primary=True) ]) q.client.initialized = True # Was the launch_dialog button clicked? if q.args.launch_dialog: # Create a dialog with a close button q.page['meta'].dialog = ui.dialog( title='Hello!', name='my_dialog', items=[ ui.text('Click the X button to close this dialog.'), ], # Enable a close button (displayed at the top-right of the dialog) closable=True, # Get notified when the dialog is dismissed. events=['dismissed'], ) # Did we get events from the dialog? if q.events.my_dialog: # Was the dialog dismissed? if q.events.my_dialog.dismissed: # Delete the dialog q.page['meta'].dialog = None await q.page.save()
async def serve(q: Q): if q.args.preview_card: q.page['example'] = ui.form_card(box='1 1 3 4', items=[ ui.button(name='back', label='Back', primary=True), ]) else: q.page['example'] = ui.preview_card( name='preview_card', box='1 1 3 4', image='https://images.pexels.com/photos/1269968/pexels-photo-1269968.jpeg?auto=compress', title='Post title', items=[ui.mini_buttons([ ui.mini_button(name='like', label='4', icon='Heart'), ui.mini_button(name='comment', label='2', icon='Comment'), ui.mini_button(name='share', label='1', icon='Share'), ]) ], caption=''' Lorem ipsum dolor sit amet, coectetur adipiscing elit. Etiam ut hendrerit lectus.As Etiam venenatis id nulla a molestie. Lorem ipsum dolor sit amet, coectetur adipiscing elit. Etiam ut hendrerit lectus.As Etiam venenatis id nulla a molestie. ''', label='Click me' ) await q.page.save()
async def serve(q: Q): hash = q.args['#'] if hash == 'form': q.page['navigation'] = ui.form_card(box='1 1 -1 11', items=[ ui.table( name='issues', columns=columns, rows=[ui.table_row( name=issue.id, cells=[issue.to_sid, issue.from_sid, issue.quote, issue.author, issue.quote_category, issue.vote, str(issue.quote_length), str(issue.num_unique_words)] ) for issue in issues], groupable=True, downloadable=False, resettable=True, height='800px' ), ui.button(name='show_tabs', label='Back', primary=True), ]) elif hash == 'home': q.page['navigation'] = ui.form_card(box='1 1 4 -1', items=[ ui.text(sample_markdown), ui.button(name='show_tabs', label='Back', primary=True), ]) else: q.page['navigation'] = ui.tab_card( box='1 1 4 1', items=[ ui.tab(name='#home', label='Home'), ui.tab(name='#form', label='Quote Table') ], link = True, ) await q.page.save()
async def show_results(q: Q): q.page['main'] = ui.form_card(box="1 2 4 5", items=[ ui.text_xl("Input Text:"), ui.separator(), ui.text(q.app.input_text), ui.separator(), ui.buttons([ ui.button(name="get_inputs", label='Try Again!', primary=True), ]) ]) result = q.app.model(q.app.input_text, max_length=q.app.num_words_to_generate, do_sample=False)[0] q.app.generated_text = result["generated_text"] q.page['visualization'] = ui.form_card(box="5 2 4 5", items=[ ui.text_xl("Generated Text:"), ui.separator(''), ui.text(q.app.generated_text) ])
async def _initialize_client(self, q: Q): q.client.input_models = self.input_model_card.input_models q.client.input_model = self.input_model_card.input_model await self._load_model(q) q.client.input_text = self.input_text_card.input_text q.client.input_text_1 = self.input_text_card.input_text q.client.input_text_2 = self.input_text_card.input_text await self._process_text(q) q.page['meta'] = self.meta_card q.page['header'] = self.header_card q.page['footer'] = self.footer_card q.client.select_ents = sorted( list(set([x.label_ for x in q.client.doc.ents]))) q.client.split_sentences = self.dependency_settings_card.split_sentences q.client.fine_grained = self.dependency_settings_card.fine_grained q.client.add_lemma = self.dependency_settings_card.add_lemma q.client.collapse_punct = self.dependency_settings_card.collapse_punct q.client.collapse_phrases = self.dependency_settings_card.collapse_phrases q.client.compact = self.dependency_settings_card.compact q.client.color = self.dependency_settings_card.color q.client.bg = self.dependency_settings_card.bg q.client.font = self.dependency_settings_card.font q.client.offset_x = self.dependency_settings_card.offset_x q.client.arrow_stroke = self.dependency_settings_card.arrow_stroke q.client.arrow_width = self.dependency_settings_card.arrow_width q.client.arrow_spacing = self.dependency_settings_card.arrow_spacing q.client.word_spacing = self.dependency_settings_card.word_spacing q.client.word_distance = self.dependency_settings_card.word_distance await self._update_all_cards(q)
async def serve(q: Q): content = 'Welcome to our store!' location = q.args['#'] if location: if location == 'menu/spam': content = "Sorry, we're out of spam!" elif location == 'menu/ham': content = "Sorry, we're out of ham!" elif location == 'menu/eggs': content = "Sorry, we're out of eggs!" elif location == 'about': content = 'Everything here is gluten-free!' if not q.client.initialized: q.page['nav'] = ui.tab_card( box='1 1 4 1', items=[ ui.tab(name='#menu/spam', label='Spam'), ui.tab(name='#menu/ham', label='Ham'), ui.tab(name='#menu/eggs', label='Eggs'), ui.tab(name='#about', label='About'), ], value=f'#{location}' if location else None, ) q.page['blurb'] = ui.markdown_card( box='1 2 4 2', title='Store', content=content, ) q.client.initialized = True elif location: blurb = q.page['blurb'] blurb.content = content await q.page.save()
async def serve(q: Q): q.page['form'] = ui.form_card( box='1 1 -1 11', items=[ ui.table(name='issues', columns=columns, rows=[ ui.table_row(name=issue.id, cells=[ issue.text, issue.status, issue.notifications, issue.icon, str(issue.views), issue.progress ]) for issue in issues ]) ]) await q.page.save()
async def serve(q: Q): if q.args.user_files: q.page['example'].items = [ ui.text_xl('Files uploaded!'), ui.text(make_link_list(q.args.user_files)), ui.button(name='back', label='Back', primary=True), ] else: q.page['example'] = ui.form_card(box='1 1 4 10', items=[ ui.text_xl('Upload some files'), ui.file_upload(name='user_files', label='Upload', multiple=True), ]) await q.page.save()
async def serve(q: Q): if not q.client.initialized: q.page['example'] = ui.form_card( box='1 1 4 10', items=[ ui.text(f'date_trigger={q.args.date_trigger}'), ui.date_picker(name='date_trigger', label='Pick a date', trigger=True), ]) q.client.initialized = True else: q.page['example'].items[ 0].text.content = f'Selected date: {q.args.date_trigger}' q.page['example'].items[1].date_picker.value = q.args.date_trigger await q.page.save()
async def update_dashboard(q: Q): customer_record = q.user.dataset[q.user.dataset['CustomerID'] == q.args.customer_id].iloc(0)[0] q.page['content'] = add_text_card(box='3 2 9 1', text="Credit Score for CustomerID: " + str(q.args.customer_id)) q.page['row11'] = add_gauge_card(box='3 3 1 2', key='Credit Score', value=1 - customer_record['prediction']) q.page['row12'] = add_stat_card(box='4 3 2 2', key='MonthlyIncome', value=customer_record['MonthlyIncome']) q.page['row13'] = add_stat_card(box='6 3 2 2', key='Age', value=customer_record['Age']) q.page['row14'] = add_stat_card(box='8 3 2 2', key='DebtRatio', value=customer_record['DebtRatio']) q.page['row15'] = add_stat_card( box='10 3 2 2', key='TotalCreditBalance', value=customer_record['TotalCreditBalance']) q.page['row21'] = add_chart(box='3 5 4 4', title="Global Credit Scores", plot_type='area') q.page['row22'] = add_chart(box='7 5 5 4', title="Global Feature Importance") q.page['row31'] = add_text_card(box='3 9 9 -1', text=q.user.about_text) q.page['row21'].data = [(x, y) for x, y in zip( q.user.dataset["CustomerID"], q.user.dataset['prediction'])][:100] q.page['row22'].data = [(x, y) for x, y in zip( q.user.fe["Original Feature"], q.user.fe['Relative Importance'])][:10] await q.page.save()
async def serve(q: Q): if q.args.show_inputs: q.page['example'].items = [ ui.text(f'selected={q.args.issues}'), ui.button(name='show_form', label='Back', primary=True), ] else: q.page['example'] = ui.form_card(box='1 1 -1 11', items=[ ui.table( name='issues', columns=columns, rows=[ui.table_row(name=issue.id, cells=[issue.text]) for issue in issues], values=['I1', 'I2', 'I3'] ), ui.button(name='show_inputs', label='Submit', primary=True) ]) await q.page.save()
async def serve(q: Q): if 'standard_button' in q.args: q.page['example'].items = [ ui.text(f'primary_button={q.args.primary_button}'), ui.text(f'standard_button={q.args.standard_button}'), ui.text(f'standard_disabled_button={q.args.standard_disabled_button}'), ui.button(name='show_form', label='Back', primary=True), ] else: q.page['example'] = ui.form_card(box='1 1 4 10', items=[ ui.buttons([ ui.button(name='primary_button', label='Primary', primary=True), ui.button(name='standard_button', label='Standard'), ui.button(name='standard_disabled_button', label='Standard', disabled=True), ]), ]) await q.page.save()
def render_leaderboard(q: Q): logger.debug("Creating leaderboard") for c in q.client.cards: del q.page[c] # Create columns for our issue table. columns = [ ui.table_column(name="user", label="User"), ui.table_column(name="total", label="Total Count", sortable=True, data_type="number"), ] + [ ui.table_column( name=t.common_name, label=t.common_name.title(), sortable=True, data_type="number", ) for t in q.client.trees.trees ] rows = [] for filename in os.listdir(q.user.user.user_dir): trees = Trees(file=os.path.join(q.user.user.user_dir, filename)) rows += [ ui.table_row( name="row", cells=[q.user.user.name, str(trees.get_total_trees())] + [str(t.count) for t in trees.trees], ) ] table = ui.table( name="tree_table", columns=columns, rows=rows, downloadable=True, ) q.page["leaderboard"] = ui.form_card(box=ui.boxes(ui.box("body"), ui.box("top"), ui.box("top")), items=[table]) q.client.cards.append("leaderboard")
async def edit_multiple(q: Q): q.page['form'] = ui.form_card( box='1 1 4 -1', items=[ make_issue_table(allow_multiple_selection=True ), # This time, allow multiple selections ui.buttons([ ui.button(name='reopen_issues', label='Reopen Selected', primary=True), ui.button(name='close_issues', label='Close Selected', primary=True), ui.button(name='back', label='Back to safety') ]), ]) await q.page.save()
async def init(q: Q): if not q.client.app_initialized: (q.app.header_png,) = await q.site.upload([config.image_path]) (q.app.training_file_url,) = await q.site.upload([config.training_path]) reset_filters(q) config.init_dataset() q.client.app_initialized = True q.page.drop() q.page["title"] = ui.header_card( box=config.boxes["banner"], title=config.title, subtitle=config.subtitle, icon=config.icon, icon_color=config.color, )
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 serve(q: Q): if q.args.show_inputs: q.page['example'].items = [ ui.text(f'date={q.args.date}'), ui.text(f'date_placeholder={q.args.date_placeholder}'), ui.text(f'date_disabled={q.args.date_disabled}'), ui.text(f'date_boundaries={q.args.date_boundaries}'), ui.button(name='show_form', label='Back', primary=True), ] else: q.page['example'] = ui.form_card(box='1 1 4 10', items=[ ui.date_picker(name='date', label='Standard date picker', value='2017-10-19'), ui.date_picker(name='date_placeholder', label='Date picker with placeholder', placeholder='Pick a date'), ui.date_picker(name='date_disabled', label='Disabled date picker', value='2017-10-19', disabled=True), ui.date_picker(name='date_boundaries', label='Date with boundaries', value='2017-10-19', min="2017-10-19", max="2017-10-25"), ui.button(name='show_inputs', label='Submit', primary=True), ]) await q.page.save()
async def serve(q: Q): if q.args.show_inputs: q.page['example'].items = [ ui.text(f'swatch={q.args.swatch}'), ui.button(name='show_form', label='Back', primary=True), ] else: q.page['example'] = ui.form_card(box='1 1 4 10', items=[ ui.color_picker( name='swatch', label='Pick a swatch', choices=[ '#011627', '#2EC4B6', '#E71D36', '#FF9F1C', '#50514F', '#F25F5C', '#FFE066', '#247BA0', '#70C1B3', '#FDFFFC', ]), ui.button(name='show_inputs', label='Submit', primary=True), ]) await q.page.save()
async def serve(q: Q): if q.args.show_inputs: q.page['example'].items = [ ui.text(f'color={q.args.color}'), ui.button(name='show_form', label='Back', primary=True), ] else: q.page['example'] = ui.form_card(box='1 1 4 10', items=[ ui.color_picker( name='color', label='Pick a color', value='#F25F5C'), ui.button(name='show_inputs', label='Submit', primary=True), ]) await q.page.save()