コード例 #1
0
def get_app(app):
    app = app

    dash.register_page(
        "multi_layout1",
        layout=html.Div("text for multi_layout1", id="text_multi_layout1"),
        path="/",
        title="Supplied Title",
        description="This is the supplied description",
        name="Supplied name",
        image="birds.jpeg",
        id="multi_layout1",
    )
    dash.register_page(
        "multi_layout2",
        layout=html.Div("text for multi_layout2", id="text_multi_layout2"),
        path="/layout2",
        id="multi_layout2",
    )

    app.layout = html.Div([
        html.Div([
            html.Div(
                dcc.Link(
                    f"{page['name']} - {page['path']}",
                    id=page["id"],
                    href=page["relative_path"],
                )) for page in dash.page_registry.values()
        ]),
        dash.page_container,
        dcc.Location(id="url", refresh=True),
    ])
    return app
コード例 #2
0
ファイル: test_integration.py プロジェクト: plotly/dash
def test_inin027_multi_page_without_pages_folder(dash_duo):
    app = Dash(__name__, pages_folder="")

    # test for storing arbitrary keyword arguments: An `id` prop is defined for every page
    # test for defining multiple pages within a single file: layout is passed directly to `register_page`
    # in the following two modules:
    dash.register_page(
        "multi_layout1",
        layout=html.Div("text for multi_layout1", id="text_multi_layout1"),
        path="/",
        title="Supplied Title",
        description="This is the supplied description",
        name="Supplied name",
        image="birds.jpeg",
        id="multi_layout1",
    )
    dash.register_page(
        "multi_layout2",
        layout=html.Div("text for multi_layout2", id="text_multi_layout2"),
        path="/layout2",
        id="multi_layout2",
    )

    app.layout = html.Div([
        html.Div([
            html.Div(
                dcc.Link(
                    f"{page['name']} - {page['path']}",
                    id=page["id"],
                    href=page["path"],
                )) for page in dash.page_registry.values()
        ]),
        dash.page_container,
    ])

    dash_duo.start_server(app)
    # test layout and title for each page in `page_registry` with link navigation
    for page in dash.page_registry.values():
        dash_duo.find_element("#" + page["id"]).click()
        dash_duo.wait_for_text_to_equal("#text_" + page["id"],
                                        "text for " + page["id"])
        assert dash_duo.driver.title == page[
            "title"], "check that page title updates"

    assert not dash_duo.get_logs()
コード例 #3
0
ファイル: test_pages_layout.py プロジェクト: plotly/dash
def get_app(path1="/", path2="/layout2"):
    app = Dash(__name__, use_pages=True)

    # test for storing arbitrary keyword arguments: An `id` prop is defined for every page
    # test for defining multiple pages within a single file: layout is passed directly to `register_page`
    # in the following two modules:
    dash.register_page(
        "multi_layout1",
        layout=html.Div("text for multi_layout1", id="text_multi_layout1"),
        path=path1,
        title="Supplied Title",
        description="This is the supplied description",
        name="Supplied name",
        image="birds.jpeg",
        id="multi_layout1",
    )
    dash.register_page(
        "multi_layout2",
        layout=html.Div("text for multi_layout2", id="text_multi_layout2"),
        path=path2,
        id="multi_layout2",
    )

    app.layout = html.Div([
        html.Div([
            html.Div(
                dcc.Link(
                    f"{page['name']} - {page['path']}",
                    id=page["id"],
                    href=page["path"],
                )) for page in dash.page_registry.values()
        ]),
        dash.page_container,
        dcc.Location(id="url", refresh=True),
    ])
    return app
コード例 #4
0
ファイル: test_pages_order.py プロジェクト: plotly/dash
def test_paor001_order(dash_duo):

    app = Dash(__name__, use_pages=True)

    dash.register_page(
        "multi_layout1",
        layout=html.Div("text for multi_layout1", id="text_multi_layout1"),
        order=2,
        id="multi_layout1",
    )
    dash.register_page(
        "multi_layout2",
        layout=html.Div("text for multi_layout2", id="text_multi_layout2"),
        order=1,
        id="multi_layout2",
    )
    dash.register_page(
        "multi_layout3",
        layout=html.Div("text for multi_layout3", id="text_multi_layout3"),
        order=0,
        id="multi_layout3",
    )

    app.layout = html.Div([
        html.Div([
            html.Div(
                dcc.Link(
                    f"{page['name']} - {page['path']}",
                    id=page["id"],
                    href=page["path"],
                )) for page in dash.page_registry.values()
        ]),
        dash.page_container,
        dcc.Location(id="url", refresh=True),
    ])

    modules = [
        "multi_layout3",
        "multi_layout2",
        "multi_layout1",
        "pages.defaults",
        "pages.metas",
        "pages.not_found_404",
        "pages.page1",
        "pages.page2",
        "pages.path_variables",
        "pages.query_string",
        "pages.redirect",
    ]

    dash_duo.start_server(app)

    assert (list(dash.page_registry) == modules
            ), "check order of modules in dash.page_registry"

    assert dash_duo.get_logs() == [], "browser console should contain no error"
コード例 #5
0
ファイル: app.py プロジェクト: admariner/dash-labs
from dash import Dash, html, dcc
import dash
import dash_labs as dl

app = Dash(__name__, plugins=[dl.plugins.pages])

dash.register_page("another_home", layout=html.Div("We're home!"), path="/")
dash.register_page(
    "very_important", layout=html.Div("Don't miss it!"), path="/important", order=0
)

app.layout = html.Div(
    [
        html.H1("App Frame"),
        html.Div(
            [
                html.Div(
                    dcc.Link(f"{page['name']} - {page['path']}", href=page["path"])
                )
                for page in dash.page_registry.values()
                if page["module"] != "pages.not_found_404"
            ]
        ),
        dl.plugins.page_container,
    ]
)


if __name__ == "__main__":
    app.run_server(debug=True)
コード例 #6
0
import dash

dash.register_page(
    __name__,
    title="(birds) The title, headline or name of the page",
    description="(birds) A short description or summary 2-3 sentences",
)


def layout():
    return """
    No image is specified but it's inferred from the module name.
    The module name is`birds.py` so it uses the `birds.jpeg` file in the assets folder.
    """
コード例 #7
0
ファイル: redirect.py プロジェクト: admariner/dash-labs
import dash
from dash import html

dash.register_page(
    __name__,
    description="Welcome to my app",
    redirect_from=["/old-home-page", "/v2"],
    extra_template_stuff="yup",
)

layout = html.Div(
    ["Home Page",
     html.Img(src="/assets/birds.jpeg", height="50px")])
コード例 #8
0
ファイル: home.py プロジェクト: admariner/dash-labs
from dash import html
import dash

dash.register_page(__name__, path="/", top_nav=True)

layout = html.Div("Home page content")
コード例 #9
0
ファイル: query_string.py プロジェクト: admariner/dash-labs
import dash

dash.register_page(__name__, path="/dashboard")


def layout(velocity=None, **other_unknown_query_strings):
    return dash.html.Div([dash.dcc.Input(id="velocity", value=velocity)])
コード例 #10
0
import dash
# Code from: https://github.com/plotly/dash-labs/tree/main/docs/demos/multi_page_example1
dash.register_page(__name__, path="/")

from dash import Dash, dcc, html, Input, Output, callback
import plotly.express as px

df = px.data.medals_wide(indexed=True)

layout = html.Div([
    html.P("Medals included:"),
    dcc.Checklist(
        id="heatmaps-medals",
        options=[{
            "label": x,
            "value": x
        } for x in df.columns],
        value=df.columns.tolist(),
    ),
    dcc.Graph(id="heatmaps-graph"),
])


@callback(Output("heatmaps-graph", "figure"), Input("heatmaps-medals",
                                                    "value"))
def filter_heatmap(cols):
    fig = px.imshow(df[cols])
    return fig
コード例 #11
0
ファイル: not_found_404.py プロジェクト: plotly/dash
from dash import html
import dash

dash.register_page(__name__, path="/404", id="not_found_404")

layout = html.Div("text for not_found_404", id="text_not_found_404")
コード例 #12
0
import dash
import dash_labs as dl
import dash_bootstrap_components as dbc

app = dash.Dash(__name__,
                plugins=[dl.plugins.pages],
                external_stylesheets=[dbc.themes.BOOTSTRAP])

dash.register_page("home", layout="We're home!", path="/")

navbar = dbc.NavbarSimple(
    dbc.DropdownMenu(
        [
            dbc.DropdownMenuItem(page["name"], href=page["path"])
            for page in dash.page_registry.values()
            if page["module"] != "pages.not_found_404"
        ],
        nav=True,
        label="More Pages",
    ),
    brand="Multi Page App Plugin Demo",
    color="primary",
    dark=True,
    className="mb-2",
)

app.layout = dbc.Container(
    [
        navbar,
        dl.plugins.page_container,
    ],
コード例 #13
0
from dash import html

import dash
import dash_bootstrap_components as dbc

from .side_bar import sidebar

dash.register_page(
    __name__,
    name="Topics",
    top_nav=True,
)


def layout():
    return dbc.Row([
        dbc.Col(sidebar(), width=2),
        dbc.Col(html.Div("Topics Home Page"), width=10)
    ])
コード例 #14
0
ファイル: query_string.py プロジェクト: plotly/dash
import dash
from dash import html

dash.register_page(__name__, id="query_string")


def layout(velocity=None, **other_unknown_query_strings):
    return html.Div([
        html.Div("text for query_string", id="text_query_string"),
        dash.dcc.Input(id="velocity", value=velocity),
    ])
コード例 #15
0
import dash

dash.register_page(__name__, icon="fas fa-chart-bar")

from dash import Dash, dcc, html, Input, Output, callback
import plotly.express as px

df = px.data.tips()
days = df.day.unique()

layout = html.Div([
    dcc.Dropdown(
        id="dropdown",
        options=[{
            "label": x,
            "value": x
        } for x in days],
        value=days[0],
        clearable=False,
    ),
    dcc.Graph(id="bar-chart"),
])


@callback(Output("bar-chart", "figure"), Input("dropdown", "value"))
def update_bar_chart(day):
    mask = df["day"] == day
    fig = px.bar(df[mask],
                 x="sex",
                 y="total_bill",
                 color="smoker",
コード例 #16
0
ファイル: defaults.py プロジェクト: plotly/dash
import dash
from dash import html

dash.register_page(__name__, id="defaults")

layout = html.Div("text for defaults", id="text_defaults")
コード例 #17
0
ファイル: outlook.py プロジェクト: admariner/dash-labs
import dash

dash.register_page(
    __name__,
    title="Forward Outlook",
    description="This is the forward outlook",  # should accept callable too
    path="/forward-outlook",
    image="birds.jpeg",
)


def layout():
    return "Forward outlook"
コード例 #18
0
ファイル: path_variables.py プロジェクト: admariner/dash-labs
import dash

dash.register_page(
    __name__,
    path_template="/asset/<asset_id>/department/<dept_id>",
    title="Asset by location analysis",
    description="This is a longer description",
    # path="/asset/inventory/department/branch-1001"
)


def layout(asset_id=None, dept_id=None, **other_unknown_query_strings):
    return dash.html.Div(
        f"variables from pathname:  asset_id: {asset_id} dept_id: {dept_id}")
コード例 #19
0
ファイル: about.py プロジェクト: admariner/dash-labs
from dash import html
import dash

dash.register_page(__name__, top_nav=True)

layout = html.Div("About page content")
コード例 #20
0
from dash import Dash, html, dcc
import dash
import dash_labs as dl

app = Dash(__name__, plugins=[dl.plugins.pages])

dash.register_page("home", layout="We're home!", path="/")
dash.register_page("very_important",
                   layout="Don't miss it!",
                   path="/important",
                   order=0)

app.layout = html.Div([
    html.H1("App Frame"),
    html.Div([
        html.Div(
            dcc.Link(f"{page['name']} - {page['path']}", href=page["path"]))
        for page in dash.page_registry.values()
        if page["module"] != "pages.not_found_404"
    ]),
    dl.plugins.page_container,
])

if __name__ == "__main__":
    app.run_server(debug=True)
コード例 #21
0
ファイル: home.py プロジェクト: admariner/dash-labs
import dash
from dash import html

dash.register_page(
    __name__,
    path="/",
    image="birdhouse.jpeg",
    title="(home) The title, headline or name of the page",
    description="(home) A short description or summary 2-3 sentences",
)

layout = html.Div(
    "The image for the home page is specified as `birdhouse.jpeg'")
コード例 #22
0
ファイル: home.py プロジェクト: plotly/dash-oil-and-gas-demo
import dash_bootstrap_components as dbc
from dash import dcc
from dash import html
import plotly.graph_objs as go
from dash import dash_table
import plotly.express as px
import numpy as np
import os
import pandas as pd
from app import app
import plotly.graph_objects as go

# app = dash.Dash(__name__)
# server = app.server

dash.register_page(__name__, path='/')

df = pd.read_csv(
        'https://raw.githubusercontent.com/mcgovernplotly/DinoDashboard/main/DinoData.csv')

Period_list = list(df["Period"].unique())
Period_list.sort()
# df2 = df.groupby(['Latitude', 'Longitude','Period'], as_index=False).count()
# df2['LatLongPeriodCount']=df2['name_old']
# df3 = df.groupby(df['Period','Type'], as_index=False)
#df3['LatLongTypeCount']=df3['name_old']
Type_list = list(df["Type"].unique())
totalFossilsFounds = len(df.axes[0])

# fig = px.scatter_geo(df, lat='Latitude', lon='Longitude', color="Country",
#                      hover_name="Country",
コード例 #23
0
ファイル: redirect.py プロジェクト: plotly/dash
import dash
from dash import html

dash.register_page(__name__,
                   redirect_from=["/old-home-page", "/v2"],
                   id="redirect")

layout = html.Div("text for redirect", id="text_redirect")
コード例 #24
0
import dash
from dash import html

dash.register_page(__name__, id="page2")

layout = html.Div("text for page2", id="text_page2")
コード例 #25
0
ファイル: bar_chart.py プロジェクト: admariner/dash-labs
import dash

dash.register_page(__name__)

from dash import Dash, dcc, html, Input, Output, callback
import plotly.express as px

df = px.data.tips()
days = df.day.unique()


def layout(day=days[0], **other_unknown_query_strings):
    return html.Div([
        dcc.Dropdown(
            id="dropdown",
            options=[{
                "label": x,
                "value": x
            } for x in days],
            value=day,
            clearable=False,
        ),
        dcc.Graph(id="bar-chart"),
    ])


@callback(Output("bar-chart", "figure"), Input("dropdown", "value"))
def update_bar_chart(day):
    mask = df["day"] == day
    fig = px.bar(df[mask],
                 x="sex",
コード例 #26
0
ファイル: path_variables.py プロジェクト: plotly/dash
import dash
from dash import html

dash.register_page(__name__,
                   path_template="/a/<id_a>/b/<id_b>",
                   id="register_page")


def layout(id_a=None, id_b=None, **other_unknown_query_strings):
    return html.Div([
        html.Div("text for register_page", id="text_register_page"),
        html.Div(f"variables from pathname:{id_a} {id_b}", id="path_vars"),
    ])