Skip to main content

Site / Async

Update any page on a site from within an app using an AsyncSite instance.

from .synth import FakePercentfrom h2o_wave import Q, app, main, ui, AsyncSite
site = AsyncSite()
# Grab a reference to the /stats pagestats_page = site['/stats']
# A flag to indicate whether to pause or resume updating the page at '/stats'update_stats = False

async def update_stats_page(q, page):    f = FakePercent()    card = page['example']    while update_stats:        await q.sleep(1)        price, percent = = price = percent        card.progress = percent        await

@app('/demo')async def serve(q: Q):    if not q.client.initialized:        # Set up up the page at /stats        stats_page.drop()  # Clear any existing page        stats_page['example'] = ui.wide_gauge_stat_card(            box='1 1 2 1',            title='Stats',            value='=${{intl price minimum_fraction_digits=2 maximum_fraction_digits=2}}',            aux_value='={{intl percent style="percent" minimum_fraction_digits=2 maximum_fraction_digits=2}}',            plot_color='$red',            progress=0,            data=dict(price=0, percent=0),        )        await
        # Set up this app's UI['form'] = ui.form_card(box='1 1 12 10', items=[            ui.frame(path='/stats', height='110px'),            ui.button(name='toggle', label='Start updates', primary=True),        ])        await
        q.client.initialized = True
    if q.args.toggle:        global update_stats        update_stats = not update_stats['form'].items[1].button.label = 'Stop updates' if update_stats else 'Start updates'        await        await update_stats_page(q, stats_page)

Tags: โ€‚site