plotly / plotly/dash

Can not read properties of undefined ...

Aperta
#2,209 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

bug P3
Lingua principale
Python
Stelle
24.4k
Fork
2.3k
Merge medio
2g 7h
PR unite (30g)
13

Descrizione

Using virtualization=True and style_data_conditional throws an error of 'can not read properties of undefined column_name'. Here is an MWE to test with, scroll down a bit on the table and then select a cell in the last column. I created a topic on the community forum and the results were it seems to be a bug. Community Topic.

import dash
import dash_table
import dash_html_components as html
from dash.dependencies import Input, Output, State, MATCH, ALL
import pandas as pd

app = dash.Dash(__name__)

df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/Emissions%20Data.csv').reset_index()
df['Emission'] = df['Emission'].map(lambda x: '{0:.2f}'.format(x))

app.layout = html.Div([html.Div([], id='test'), dash_table.DataTable(
    id='table',
        data=df.to_dict('records'),
        columns=[{'id': c, 'name': c} for c in df.columns],
        editable=True,
        filter_action="native",
        sort_action="native",
        sort_mode="multi",
        page_action="none",
		fixed_rows={'headers': True, 'data': 0},
		#sort_action='native',
		export_format="xlsx",
		export_headers="display",
		export_columns='all',
		#filter_action='native',		
        virtualization=True,
		style_data_conditional=[{
					'if': {
						'filter_query': '{Emission} > 0',
						'column_id': 'Emission'
					},
					'color': 'green'
				},
				{
					'if': {
						'filter_query': '{Emission} < 0',
						'column_id': 'Emission'
					},
					'color': 'red'
				}],
		tooltip_conditional=[
			{
				'if': {
					'filter_query': '{Emission} < 0',
						'column_id': 'Emission'
						},
				'value': 'Further review required, calculated demand is 20% lower than the 3 year average units sold'
			},
			{
				'if': {
					'filter_query': '{Emission} > 0',
						'column_id': 'Emission'
						},
				'value': 'Further review required, calculated demand is 20% higher than the 3 year average units sold'
			},
		]
)
])


@app.callback(Output('test', 'children'), [Input('table', 'active_cell')])
def updateIT(ac):
	if ac:
		return ac['column_id']
	else:
		return ''
	
	
if __name__ == '__main__':
	app.run_server(debug=True)

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia eseguendo il MWE Python e riproduci l'errore scorrendo la DataTable virtualizzata e selezionando una cella nell'ultima colonna. Esamina la gestione di active_cell della tabella e il callback updateIT, che legge column_id. Il lavoro è completato quando l'interazione non segnala più un errore undefined column_name e il callback continua a restituire la colonna selezionata.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
python
Ambito
data-visualization, frontend
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.