Backend Paging with Filtering and Multi-Column Sorting Example is not working with version 0.39.0
Aperta
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
import dash
from dash.dependencies import Input, Output
import dash_table
import pandas as pd
app = dash.Dash(__name__)
df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/gapminder2007.csv')
PAGE_SIZE = 5
app.layout = dash_table.DataTable(
id='table-sorting-filtering',
columns=[
{'name': i, 'id': i, 'deletable': True} for i in sorted(df.columns)
],
pagination_settings={
'current_page': 0,
'page_size': PAGE_SIZE
},
pagination_mode='be',
filtering='be',
filtering_settings='',
sorting='be',
sorting_type='multi',
sorting_settings=[]
)
@app.callback(
Output('table-sorting-filtering', 'data'),
[Input('table-sorting-filtering', 'pagination_settings'),
Input('table-sorting-filtering', 'sorting_settings'),
Input('table-sorting-filtering', 'filtering_settings')])
def update_graph(pagination_settings, sorting_settings, filtering_settings):
filtering_expressions = filtering_settings.split(' && ')
dff = df
for filter in filtering_expressions:
if ' eq ' in filter:
col_name = filter.split(' eq ')[0]
filter_value = filter.split(' eq ')[1]
dff = dff.loc[dff[col_name] == filter_value]
if ' > ' in filter:
col_name = filter.split(' > ')[0]
filter_value = float(filter.split(' > ')[1])
dff = dff.loc[dff[col_name] > filter_value]
if ' < ' in filter:
col_name = filter.split(' < ')[0]
filter_value = float(filter.split(' < ')[1])
dff = dff.loc[dff[col_name] < filter_value]
if len(sorting_settings):
dff = dff.sort_values(
[col['column_id'] for col in sorting_settings],
ascending=[
col['direction'] == 'asc'
for col in sorting_settings
],
inplace=False
)
return dff.iloc[
pagination_settings['current_page']*pagination_settings['page_size']:
(pagination_settings['current_page'] + 1)*pagination_settings['page_size']
].to_dict('rows')
if __name__ == '__main__':
app.run_server(debug=True)
This example is not working for new version. I have to add replace for col_name to make it work.
filtering_expressions = filtering_settings.split(' && ')
dff = df
for filter in filtering_expressions:
if ' eq ' in filter:
col_name = filter.split(' eq ')[0].replace("\"","")
print(col_name)
filter_value = filter.split(' eq ')[1]
dff = dff.loc[dff[col_name] == filter_value]
if ' > ' in filter:
col_name = filter.split(' > ')[0].replace("\"","")
filter_value = float(filter.split(' > ')[1])
dff = dff.loc[dff[col_name] > filter_value]
if ' < ' in filter:
col_name = filter.split(' < ')[0].replace("\"","")
filter_value = float(filter.split(' < ')[1])
dff = dff.loc[dff[col_name] < filter_value]
if len(sorting_settings):
dff = dff.sort_values(
[col['column_id'] for col in sorting_settings],
ascending=[
col['direction'] == 'asc'
for col in sorting_settings
],
inplace=False
)
return dff.iloc[
pagination_settings['current_page'] * pagination_settings['page_size']:
(pagination_settings['current_page'] + 1) * pagination_settings['page_size']
].to_dict('rows')
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Esegui l’esempio Backend Paging with Filtering and Multi-Column Sorting con la versione 0.39.0 e ispeziona i valori di filtering_settings passati a update_graph. Confrontali con il workaround di update_table; il lavoro è completato quando il filtraggio funziona senza rimuovere manualmente le virgolette dai nomi delle colonne.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- pandas, python
- Ambito
- data-visualization
- Tipo di issue
- Bug
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 38/100