Esempio n. 1
0
async def place_order(q):
    await drop_cards(q, droppable_cards)
    if q.client.items == {}:
        q.page['side'] = card_sim_missing()
    else:
        for j, item in enumerate(q.client.items.keys()):
            q.client.p = q.client.items[item]
            l1 = len(q.client.p.supply)
            l2 = len(q.client.p.expiring)
            for i in range(l1):
                if i == 0:
                    title = 'Current Inventory'
                else:
                    title = f'Arriving in {i} days'
                q.page[f'inv{i+j*l1}'] = ui.small_stat_card(
                    box=f'{4 + i} {3*j + 2} 1 1',
                    title=title,
                    value=str(q.client.p.supply[i]))
                q.page['side'] = card_place_order(q)
            for i in range(l2):
                title = f'Expiring in {i} days'
                q.page[f'exp{i+j*l2}'] = ui.small_stat_card(
                    box=f'{4 + i} {3*j + 3} 1 1',
                    title=title,
                    value=str(q.client.p.expiring[i]))
        q.page['side'] = card_place_order(q)
    await q.page.save()
Esempio n. 2
0
async def make_player_card(q: Q):
    q.page['player'] = ui.small_stat_card(
        box='4 1 6 1',
        title='Player Name',
        value=f'{q.user.player.first} {q.user.player.last}'.title(),
    )
    await q.page.save()
Esempio n. 3
0
def add_stat_card(box, key, value):
    value = str(value)
    return ui.small_stat_card(
        box=box,
        title=key,
        value='={{intl value}}',
        # aux_value='',
        data=dict(value=value),
        #caption=key + " of the customer"
    )
Esempio n. 4
0
async def make_order(q):
    for j, item in enumerate(q.client.items.keys()):

        q.client.p = q.client.items[item]
        s = q.client.p.supply[0]
        d, r = q.client.p.run_day(eval(f'q.args.gpo_order_{j}'),
                                  eval(f'q.args.alt_order_{j}'))
        q.client.records.loc[len(
            q.client.records.index)] = [q.client.p.day, item, s, d, r]
        l1 = len(q.client.p.supply)
        l2 = len(q.client.p.expiring)
        for i in range(l1):
            if i == 0:
                title = 'Current Inventory'
            else:
                title = f'Arriving in {i} days'
            q.page[f'inv{i+j*l1}'] = ui.small_stat_card(
                box=f'{4+i} {3*j + 2} 1 1',
                title=title,
                value=str(q.client.p.supply[i]))
        for i in range(l2):
            title = f'Expiring in {i} days'
            q.page[f'exp{i+j*l2}'] = ui.small_stat_card(
                box=f'{4+i} {3*j + 3} 1 1',
                title=title,
                value=str(q.client.p.expiring[i]))
        q.page[f'demand_{j}'] = ui.small_stat_card(box=f'{4} {3*j + 4} 1 1',
                                                   title='Today\'s demand',
                                                   value=str(d))
        q.page[f'reward_{j}'] = ui.small_stat_card(box=f'{5} {3*j + 4} 1 1',
                                                   title='Today\'s reward',
                                                   value=str(r))

        q.page['side'] = card_place_order(q)

        await q.page.save()
Esempio n. 5
0
def populate_customer_churn_stats(cust_phone_no, df, q):
    df["Total Charges"] = (df.Total_Day_charge + df.Total_Eve_Charge +
                           df.Total_Night_Charge + df.Total_Intl_Charge)

    df = df[[
        "Total_Day_charge",
        "Total_Eve_Charge",
        "Total_Night_Charge",
        "Total_Intl_Charge",
        config.id_column,
        "Total Charges",
    ]]

    df.columns = [
        "Day Charges", "Evening Charges", "Night Charges", "Int'l Charges",
        config.id_column, "Total Charges"
    ]

    q.page["day_stat"] = wide_stat_card_dollars(df, cust_phone_no,
                                                "Day Charges",
                                                config.boxes["day_stat"],
                                                config.color)
    q.page["eve_stat"] = wide_stat_card_dollars(df, cust_phone_no,
                                                "Evening Charges",
                                                config.boxes["eve_stat"],
                                                config.color)
    q.page["night_stat"] = wide_stat_card_dollars(df, cust_phone_no,
                                                  "Night Charges",
                                                  config.boxes["night_stat"],
                                                  config.color)
    q.page["intl_stat"] = wide_stat_card_dollars(df, cust_phone_no,
                                                 "Int'l Charges",
                                                 config.boxes["intl_stat"],
                                                 config.color)
    q.page["total_stat"] = tall_stat_card_dollars(
        df,
        cust_phone_no,
        "Total Charges",
        config.boxes["total_stat"],
        config.total_gauge_color,
    )
    q.page["customer"] = ui.small_stat_card(box=config.boxes["customer"],
                                            title="Customer",
                                            value=str(cust_phone_no))

    q.page["churn_rate"] = ui.small_stat_card(
        box=config.boxes["churn_rate"],
        title="Churn Rate",
        value=
        f"{churn_predictor.get_churn_rate_of_customer(q.client.selected_customer_index)}%",
    )

    labels = [
        "Day Charges", "Evening Charges", "Night Charges", "Int'l Charges"
    ]
    values = [
        df[df[config.id_column] == cust_phone_no][labels[0]].values[0],
        df[df[config.id_column] == cust_phone_no][labels[1]].values[0],
        df[df[config.id_column] == cust_phone_no][labels[2]].values[0],
        df[df[config.id_column] == cust_phone_no][labels[3]].values[0],
    ]

    html_plot = generate_figure_pie_of_target_percent("", labels, values,
                                                      get_figure_layout())

    q.page["stat_pie"] = ui.frame_card(
        box=config.boxes["stat_pie"],
        title="Total call charges breakdown",
        content=convert_plot_to_html(config.figure_config, html_plot, "cdn",
                                     False),
    )
Esempio n. 6
0
async def show_grey_dashboard(q: Q):
    q.page['meta'] = ui.meta_card(box='', layouts=[
        ui.layout(
            breakpoint='xl',
            min_width='800px',
            zones=[
                ui.zone('header', size='0'),
                ui.zone('body', size='1000px', zones=[
                    ui.zone('title', size='0'),
                    ui.zone('top', direction=ui.ZoneDirection.ROW, size='25%'),
                    ui.zone('middle', direction=ui.ZoneDirection.ROW, size='25%'),
                    ui.zone('middle2', direction=ui.ZoneDirection.ROW, size='25%'),
                    ui.zone('bottom', direction=ui.ZoneDirection.ROW, size='20%'),
                ]),
                ui.zone('footer', size='0'),
            ]
        )
    ])

    q.page['header'] = ui.header_card(box='header', title='H2O Wave Demo', subtitle='Grey Dashboard',
                                      nav=global_nav)
    q.page['section'] = ui.section_card(
        box='title',
        title=next(sample_title),
        subtitle=next(sample_caption),
        items=[
            ui.label(label='Start:'),
            ui.date_picker(name='target_date', label='', value='2020-12-20'),
            ui.label(label='End:'),
            ui.date_picker(name='target_date', label='', value='2020-12-25'),
        ],
    )

    stock_dates = generate_time_series(10000)
    stock_prices = generate_random_walk()

    q.page['small'] = ui.small_stat_card(
        box=ui.box('top', order=1),
        title=next(sample_term),
        value=next(sample_dollars),
    )
    q.page['small_series'] = ui.small_series_stat_card(
        box=ui.box('top', order=2),
        title=next(sample_term),
        value=next(sample_dollars),
        plot_category='date',
        plot_value='price',
        plot_data=data(
            fields=['date', 'price'],
            rows=[(next(stock_dates), next(stock_prices)) for i in range(30)],
            pack=True,
        ),
    )
    q.page['small_series_interval'] = ui.small_series_stat_card(
        box=ui.box('top', order=3),
        title=next(sample_term),
        value=next(sample_dollars),
        plot_category='date',
        plot_value='price',
        plot_type=ui.SmallSeriesStatCardPlotType.INTERVAL,
        plot_data=data(
            fields=['date', 'price'],
            rows=[(next(stock_dates), next(stock_prices)) for i in range(30)],
            pack=True,
        ),
    )
    q.page['wide_series'] = ui.wide_series_stat_card(
        box=ui.box('middle', order=1),
        title=next(sample_term),
        value=next(sample_dollars),
        aux_value=next(sample_percent),
        plot_category='date',
        plot_value='price',
        plot_data=data(
            fields=['date', 'price'],
            rows=[(next(stock_dates), next(stock_prices)) for i in range(30)],
            pack=True,
        ),
    )
    q.page['wide_bar'] = ui.wide_bar_stat_card(
        box=ui.box('middle', order=2),
        title=next(sample_term),
        value=next(sample_dollars),
        aux_value=next(sample_percent),
        progress=random.random(),
    )
    q.page['wide_gauge'] = ui.wide_gauge_stat_card(
        box=ui.box('middle', order=3),
        title=next(sample_term),
        value=next(sample_dollars),
        aux_value=next(sample_percent),
        progress=random.random(),
    )
    q.page['tall_series'] = ui.tall_series_stat_card(
        box=ui.box('middle2', order=1),
        title=next(sample_term),
        value=next(sample_dollars),
        aux_value=next(sample_percent),
        plot_category='date',
        plot_value='price',
        plot_data=data(
            fields=['date', 'price'],
            rows=[(next(stock_dates), next(stock_prices)) for i in range(30)],
            pack=True,
        ),
    )
    q.page['tall_gauge'] = ui.tall_gauge_stat_card(
        box=ui.box('middle2', order=2),
        title=next(sample_term),
        value=next(sample_dollars),
        aux_value=next(sample_percent),
        progress=random.random(),
    )
    q.page['large'] = ui.large_stat_card(
        box=ui.box('bottom', order=1),
        title=next(sample_term),
        value=next(sample_dollars),
        aux_value=next(sample_percent),
        caption=next(sample_caption),
    )
    q.page['large_bar'] = ui.large_bar_stat_card(
        box=ui.box('bottom', order=2),
        title=next(sample_term),
        value=next(sample_dollars),
        value_caption=next(sample_term),
        aux_value=next(sample_dollars),
        aux_value_caption=next(sample_term),
        progress=random.random(),
        caption=next(sample_caption),
    )

    q.page['footer'] = ui.footer_card(box='footer', caption='(c) 2021 H2O.ai. All rights reserved.')

    await q.page.save()
Esempio n. 7
0
# Stat / Small
# Create a stat card displaying a single value.
# #stat_card
# ---
import time

from faker import Faker

from synth import FakePercent
from h2o_wave import site, ui

page = site['/demo']

fake = Faker()
f = FakePercent()
val, _ = f.next()
c = page.add('example', ui.small_stat_card(
    box='1 1 1 1',
    title=fake.cryptocurrency_name(),
    value=f'${val:.2f}',
))
page.save()

while True:
    time.sleep(1)
    val, _ = f.next()
    c.value = f'${val:.2f}'
    page.save()
Esempio n. 8
0
def create_dashboard(update_freq=0.0):
    page = site['/demo']

    simples = []
    for i in range(1, 7):
        f = FakePercent()
        val, pc = f.next()
        c = page.add(
            f'a{i}',
            ui.small_stat_card(
                box=f'{i} 1 1 1',
                title=fake.cryptocurrency_name(),
                value=f'${val:.2f}',
            ))
        simples.append((f, c))

    simples_colored = []
    for i in range(1, 7):
        f = FakeCategoricalSeries()
        cat, val, pc = f.next()
        c = page.add(
            f'aa{i}',
            ui.small_series_stat_card(
                box=f'{6 + i} 1 1 1',
                title=fake.cryptocurrency_code(),
                value=
                '=${{intl qux minimum_fraction_digits=2 maximum_fraction_digits=2}}',
                data=dict(qux=val, quux=pc / 100),
                plot_category='foo',
                plot_value='qux',
                plot_color=next_color(),
                plot_data=data('foo qux', -15),
                plot_zero_value=0,
                plot_curve=next_curve(),
            ))
        simples_colored.append((f, c))

    lines = []
    for i in range(1, 13, 2):
        f = FakeCategoricalSeries()
        cat, val, pc = f.next()
        c = page.add(
            f'b{i}',
            ui.wide_series_stat_card(
                box=f'{i} 2 2 1',
                title=fake.cryptocurrency_name(),
                value=
                '=${{intl qux minimum_fraction_digits=2 maximum_fraction_digits=2}}',
                aux_value=
                '={{intl quux style="percent" minimum_fraction_digits=1 maximum_fraction_digits=1}}',
                data=dict(qux=val, quux=pc / 100),
                plot_category='foo',
                plot_value='qux',
                plot_color=next_color(),
                plot_data=data('foo qux', -15),
                plot_zero_value=0,
                plot_curve=next_curve(),
            ))
        lines.append((f, c))

    bars = []
    for i in range(1, 13, 2):
        f = FakeCategoricalSeries()
        cat, val, pc = f.next()
        c = page.add(
            f'c{i}',
            ui.wide_series_stat_card(
                box=f'{i} 3 2 1',
                title=fake.cryptocurrency_name(),
                value=
                '=${{intl qux minimum_fraction_digits=2 maximum_fraction_digits=2}}',
                aux_value=
                '={{intl quux style="percent" minimum_fraction_digits=1 maximum_fraction_digits=1}}',
                data=dict(qux=val, quux=pc),
                plot_type='interval',
                plot_category='foo',
                plot_value='qux',
                plot_color=next_color(),
                plot_data=data('foo qux', -25),
                plot_zero_value=0))
        bars.append((f, c))

    large_pcs = []
    for i in range(1, 13):
        f = FakePercent()
        val, pc = f.next()
        c = page.add(
            f'd{i}',
            ui.tall_gauge_stat_card(
                box=f'{i} 4 1 2',
                title=fake.cryptocurrency_name(),
                value=
                '=${{intl foo minimum_fraction_digits=2 maximum_fraction_digits=2}}',
                aux_value=
                '={{intl bar style="percent" minimum_fraction_digits=2 maximum_fraction_digits=2}}',
                plot_color=next_color(),
                progress=pc,
                data=dict(foo=val, bar=pc / 100),
            ))
        large_pcs.append((f, c))

    large_lines = []
    for i in range(1, 13):
        f = FakeCategoricalSeries()
        cat, val, pc = f.next()
        c = page.add(
            f'e{i}',
            ui.tall_series_stat_card(
                box=f'{i} 6 1 2',
                title=fake.cryptocurrency_name(),
                value=
                '=${{intl qux minimum_fraction_digits=2 maximum_fraction_digits=2}}',
                aux_value=
                '={{intl quux style="percent" minimum_fraction_digits=1 maximum_fraction_digits=1}}',
                data=dict(qux=val, quux=pc),
                plot_type='area',
                plot_category='foo',
                plot_value='qux',
                plot_color=next_color(),
                plot_data=data('foo qux', -15),
                plot_zero_value=0,
                plot_curve=next_curve(),
            ))
        large_lines.append((f, c))

    small_pcs = []
    for i in range(1, 7, 2):
        f = FakePercent()
        val, pc = f.next()
        c = page.add(
            f'f{i}',
            ui.wide_gauge_stat_card(
                box=f'{i} 8 2 1',
                title=fake.cryptocurrency_name(),
                value=
                '=${{intl foo minimum_fraction_digits=2 maximum_fraction_digits=2}}',
                aux_value=
                '={{intl bar style="percent" minimum_fraction_digits=2 maximum_fraction_digits=2}}',
                plot_color=next_color(),
                progress=pc,
                data=dict(foo=val, bar=pc / 100),
            ))
        small_pcs.append((f, c))

    small_pbs = []
    for i in range(7, 13, 2):
        f = FakePercent()
        val, pc = f.next()
        c = page.add(
            f'f{i}',
            ui.wide_bar_stat_card(
                box=f'{i} 8 2 1',
                title=fake.cryptocurrency_name(),
                value=
                '=${{intl foo minimum_fraction_digits=2 maximum_fraction_digits=2}}',
                aux_value=
                '={{intl bar style="percent" minimum_fraction_digits=2 maximum_fraction_digits=2}}',
                plot_color=next_color(),
                progress=pc,
                data=dict(foo=val, bar=pc / 100),
            ))
        small_pbs.append((f, c))

    large_cards = []
    for i in range(1, 7, 2):
        f = FakePercent()
        val, pc = f.next()
        c = page.add(
            f'g{i}',
            ui.large_stat_card(
                box=f'{i} 9 2 2',
                title=fake.cryptocurrency_name(),
                value=
                '=${{intl qux minimum_fraction_digits=2 maximum_fraction_digits=2}}',
                aux_value=
                '={{intl quux style="percent" minimum_fraction_digits=1 maximum_fraction_digits=1}}',
                data=dict(qux=val, quux=pc / 100),
                caption=' '.join(fake.sentences()),
            ))
        large_cards.append((f, c))

    large_pbs = []
    for i in range(7, 13, 2):
        f = FakePercent()
        val, pc = f.next()
        c = page.add(
            f'g{i}',
            ui.large_bar_stat_card(
                box=f'{i} 9 2 2',
                title=fake.cryptocurrency_name(),
                value=
                '=${{intl foo minimum_fraction_digits=2 maximum_fraction_digits=2}}',
                value_caption='This Month',
                aux_value=
                '={{intl bar style="percent" minimum_fraction_digits=2 maximum_fraction_digits=2}}',
                aux_value_caption='Previous Month',
                plot_color=next_color(),
                progress=pc,
                data=dict(foo=val, bar=pc / 100),
                caption=' '.join(fake.sentences(2)),
            ))
        large_pbs.append((f, c))

    page.save()

    while update_freq > 0:
        time.sleep(update_freq)

        for f, c in simples:
            val, pc = f.next()
            c.value = f'${val:.2f}',

        for f, c in simples_colored:
            cat, val, pc = f.next()
            c.data.qux = val
            c.data.quux = pc / 100
            c.plot_data[-1] = [cat, val]

        for f, c in lines:
            cat, val, pc = f.next()
            c.data.qux = val
            c.data.quux = pc / 100
            c.plot_data[-1] = [cat, val]

        for f, c in bars:
            cat, val, pc = f.next()
            c.data.qux = val
            c.data.quux = pc / 100
            c.plot_data[-1] = [cat, val]

        for f, c in large_lines:
            cat, val, pc = f.next()
            c.data.qux = val
            c.data.quux = pc / 100
            c.plot_data[-1] = [cat, val]

        for f, c in large_pcs:
            val, pc = f.next()
            c.data.foo = val
            c.data.bar = pc
            c.progress = pc

        for f, c in small_pcs:
            val, pc = f.next()
            c.data.foo = val
            c.data.bar = pc
            c.progress = pc

        for f, c in small_pbs:
            val, pc = f.next()
            c.data.foo = val
            c.data.bar = pc
            c.progress = pc

        for f, c in large_cards:
            val, pc = f.next()
            c.data.qux = val
            c.data.quux = pc

        for f, c in large_pbs:
            val, pc = f.next()
            c.data.foo = val
            c.data.bar = pc
            c.progress = pc

        page.save()
# Stat / Small
# Create a stat card displaying a single value.
# ---
import time

from faker import Faker

from synth import FakePercent
from h2o_wave import site, ui

page = site['/demo']

fake = Faker()
f = FakePercent()
val, _ = f.next()
c = page.add(
    'example',
    ui.small_stat_card(
        box='1 1 1 1',
        title=fake.cryptocurrency_name(),
        value=f'${val:.2f}',
    ))
page.save()

while True:
    time.sleep(1)
    val, _ = f.next()
    c.value = f'${val:.2f}'
    page.save()