Links in Dash

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
MacGruber
User
Beiträge: 63
Registriert: Sonntag 28. Mai 2017, 13:04

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
Benutzeravatar
noisefloor
User
Beiträge: 4194
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

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
MacGruber
User
Beiträge: 63
Registriert: Sonntag 28. Mai 2017, 13:04

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?
Benutzeravatar
noisefloor
User
Beiträge: 4194
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

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
MacGruber
User
Beiträge: 63
Registriert: Sonntag 28. Mai 2017, 13:04

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'))
Antworten