bpm.table
Tableau de données avec tri, lignes alternées, survol et lignes cliquables pour accéder au détail.
| Produit | Prix | Stock | Statut |
|---|---|---|---|
| Widget A | 29,99 | 142 | En stock |
| Widget B | 49,99 | 38 | Stock bas |
| Widget C | 9,99 | 500 | En stock |
| Widget D | 79,99 | 0 | Rupture |
| Widget E | 19,99 | 210 | En stock |
Cliquez sur une ligne pour afficher le détail.
Python
import bpm
import pandas as pd
df = pd.DataFrame({
"Produit": ["Widget A", "Widget B", "Widget C"],
"Prix": [29.99, 49.99, 9.99],
"Stock": [142, 38, 500],
})
bpm.table(df, striped=true, hover=true)| Prop | Type | Défaut | Requis | Description |
|---|---|---|---|---|
columns | Column[] | — | Oui | Définition des colonnes (key, label, align, decimals optionnels). Par défaut : texte à gauche, chiffres à droite. |
data | Record<string, unknown>[] | [] | Non | Données à afficher. |
striped | boolean | true | Non | Lignes alternées. |
hover | boolean | true | Non | Surbrillance au survol. |
onRowClick | (row) => void | — | Non | Callback au clic sur une ligne. |
defaultSortColumn | string | null | null | Non | Colonne de tri initiale. |
defaultSortDirection | 'asc' | 'desc' | 'asc' | Non | Direction du tri initial. |
valueLocale | string | fr-FR | Non | Locale pour formater les nombres (ex. fr-FR → 1 000,50, en-US → 1,000.50). |
valueDecimals | number | 0 | Non | Décimales par défaut pour les cellules numériques. Surcharge possible par colonne (decimals). |
valueGrouping | boolean | true | Non | Séparateur de milliers (false = 1000,50 sans espace). |
Exemples
bpm.table(df, striped=True, hover=True)
# Clic sur une ligne pour ouvrir le détail
bpm.table(df, on_row_click=lambda row: bpm.write(row["id"]))# Tri initial par colonne "Prix" décroissant
bpm.table(df, default_sort_column="Prix", default_sort_direction="desc")# Format des nombres (comme bpm.metric)
bpm.table(df, value_locale="en-US", value_decimals=2, value_grouping=True)# Alignement par colonne (left | center | right)
bpm.table(df, columns=[{"key": "Nom", "label": "Nom"}, {"key": "Montant", "label": "Montant", "align": "right"}])