Seite 1 von 1

Links in Dash

Verfasst: Mittwoch 16. Dezember 2020, 16:37
von MacGruber
Moinsen,

ich bin gerade dabei eine Web App mit Dash aufzubauen. Ganz oben soll eine Liste mit Verlinkungen sein, mit denen ich zu den entsprechenden Punkten im Dokument springe.

Meine Idee für das Menü war folgendes:

Code: Alles auswählen

html.Ul(id="Menue", children=[
                                    html.Li(dcc.Link('Number of Idents', href='#headerIdents')),
                                    html.Li(dcc.Link('Number of TC', href='#headerTC')),
                                    html.Li(dcc.Link('Parts Increase', href='#headerIncrease')),
                                    html.Li(dcc.Link('Number of State and TC-Type', href='#headerPies'))
                                ])
Beim Klicken auf einen der Listeneinträge sollte das Sichtfeld des Browsers dann auf eine der Überschriften springen, wie z.B. diese...

Code: Alles auswählen

html.Center(html.H2(id='headerIdents', children='Number of Idents'))
Hier der gesamte Code:

Code: Alles auswählen

import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
import pandas as pd
from pandas import DataFrame, Series
import json


#Test DF
df = DataFrame({"Fahrzeuge":["RX70 16-20","RX70 20-35","RX70 35-50","RX70 60-80"],
                "Status S":[1200,1250,1500,1700],
                "Status U":[400,250,300,100],
                "S-TC":[190,80,130,40],
                "U-TC":[85,60,35,10]})

df_increase = DataFrame({"Parts":[4000,4500,4650,4710],
                        "Unique Parts":[1800,2400,2800,2720]},
                        index=["Q1-20","Q2-20","Q3-20","Q4-20"])

#Leere App
app = dash.Dash()

#App befüllen
app.layout = html.Div(children=[
                                #Menü
                                html.Ul(id="Menue", children=[
                                    html.Li(dcc.Link('Number of Idents', href='#headerIdents')),
                                    html.Li(dcc.Link('Number of TC', href='#headerTC')),
                                    html.Li(dcc.Link('Parts Increase', href='#headerIncrease')),
                                    html.Li(dcc.Link('Number of State and TC-Type', href='#headerPies'))
                                ]),

                                #Überschrift
                                html.Center(html.H1('Series Report')),

                                #Überschriften für Dropdown
                                html.Div([html.P("Plant")],style={'width':'31%','display':'inline-block'}),
                                html.Div([html.P("Brand")],style={'width':'31%','display':'inline-block'}),
                                html.Div([html.P("Type")],style={'width':'31%','display':'inline-block'}),
                                
                                #Drop-Down
                                html.Div([
                                    dcc.Dropdown(id='dropdown_Werk',
                                                options=[{"value":i, "label":i} for  i in ["All","Aschaffenburg","Chatellerault","Hamburg","Luzzara","Reutlingen"]],
                                                value='All')
                                ], style={'width':'31%','display':'inline-block'}
                                ),
                                html.Div([
                                    dcc.Dropdown(id='dropdown_Brand',
                                                options=[{"value":i, "label":i} for  i in ["All","Linde","Still"]],
                                                value='All')
                                ], style={'width':'31%','display':'inline-block'}
                                ),
                                html.Div([
                                    dcc.Dropdown(id='dropdown_Type',
                                                options=[{"value":i, "label":i} for  i in ["All","E-Truck","IC-Truck"]],
                                                value='All')
                                ], style={'width':'31%','display':'inline-block'}),

                                html.Hr(),

                                #Header für Number of Idents
                                html.Center(html.H2(id='headerIdents', children='Number of Idents')),

                                #Number of Idents (S & U)
                                html.Div(
                                    dcc.Graph(id='Idents',
                                                figure={'data':[{'x':df['Fahrzeuge'],'y':df['Status S'],'type':'bar','name':'S'},
                                                                {'x':df['Fahrzeuge'],'y':df['Status U'],'type':'bar','name':'U'}],
                                                        'layout':{'barmode':'stack'}})
                                ),

                                html.Hr(),

                                #Header für Number of TC
                                html.Center(html.H2(id='headerTC', children='Number of TC')),

                                #Number of TC
                                html.Div(
                                    dcc.Graph(id='TC',
                                                figure={'data':[{'x':df['Fahrzeuge'],'y':df['S-TC'],'type':'bar','name':'S-TC'},
                                                                {'x':df['Fahrzeuge'],'y':df['U-TC'],'type':'bar','name':'U-TC'}],
                                                        'layout':{'barmode':'stack'}})
                                ),

                                html.Hr(),
                                
                                #Header für Number of Idents
                                html.Center(html.H2(id='headerIncrease', children='Parts Increase')),

                                #Line Chart
                                html.Div(
                                    dcc.Graph(id='Parts Increase',
                                                figure={'data':[{'x':df_increase.index,'y':df_increase["Parts"],'type':'line','name':'Parts'},
                                                                {'x':df_increase.index,'y':df_increase["Unique Parts"],'type':'line','name':'Unique Parts'}],
                                                        'layout':{'title':'Parts Increase'}})
                                ),

                                html.Hr(),
                                
                                #Header für Pie Charts
                                html.Center(html.H2(id='headerPies', children='State and TC-Type')),
                                
                                #Pie Charts
                                html.Div([
                                    dcc.Graph(id='Status Pie',
                                                figure={'data':[{'values':[2000,400,30,80,150], 'labels':['S','U','C','A','P'], 'type':'pie'}],
                                                        'layout':{'title':'Material Status'}})
                                    ], style={'width':'48%','display':'inline-block'}),

                                html.Div([
                                    dcc.Graph(id='TC Pie',
                                                figure={'data':[{'values':[2300,1400], 'labels':['S-TC','U-TC'], 'type':'pie'}],
                                                        'layout':{'title':'Material Status'}})
                                    ], style={'width':'48%','display':'inline-block'})
                        ])

if __name__ == '__main__':
    app.run_server(debug=True)
Schon im Voraus vielen Dank für eure Hilfe.
Gruß MacGruber

Re: Links in Dash

Verfasst: Mittwoch 16. Dezember 2020, 17:14
von noisefloor
Hallo,

was ist denn genau die Frage...? Du beschreibst, was du machst und was das Ziel ist - aber die Frage oder die Beschreibung deines Problems fehlen.

Gruß, noisefloor

Re: Links in Dash

Verfasst: Mittwoch 16. Dezember 2020, 17:31
von MacGruber
Da hast du absolut recht. Mein Problem ist, die Verlinkungen gehen nicht. Beim KLicken auf die Listeneinträge ändert sich zwar der Pfad im Explorer, aber das Bild springt nicht auf den entsprechenden Eintrag um. Was mache ich da falsch?

Re: Links in Dash

Verfasst: Mittwoch 16. Dezember 2020, 17:48
von noisefloor
Hallo,

als erstes würde ich mal in das HTML schauen, was generiert wird. Also ob da wirklich die id und a href= ... richtig eingebaut werden.

Gruß, noisefloor

Re: Links in Dash

Verfasst: Mittwoch 16. Dezember 2020, 18:19
von MacGruber
Hi,

ich denke ich habe es jetzt. Ich habe mir, wie du gesagt hast, den HTML Code angesehen. Das a-Element ist nicht vorhanden. Ich habe wohl die Bedeutung von dcc.Link() misverstanden. Richtig wäre html.A().

Richtig sieht es jetzt so aus.

Code: Alles auswählen

html.Li(html.A('Number of Idents', href='#headerIdents'))