Waterfall
ChartEl puente entre un valor inicial y uno final: cada barra flota sobre la suma de las anteriores. Las etapas suben (verde) o bajan (rojo); las filas marcadas como «total» son descansillos neutros.
Uso básico
El saldo de apertura y el beneficio final son total (barras neutras que arrancan del cero); lo de en medio son saltos que suben (verde) o bajan (rojo). El beneficio se deja en 0 en el dato: se calcula solo. Los conectores enlazan el final de cada barra con el principio de la siguiente.
| Categoría | importe |
|---|---|
| Ingresos | 128k |
| Coste de ventas | -47k |
| Marketing | -18,5k |
| Personal | -31k |
| Otros ingresos | 9,2k |
| Impuestos | -12,4k |
| Beneficio | 28,3k |
<x-kore::chart :data="$pyl" x="concepto" height="20rem" aria-label="Cuenta de resultados por concepto">
<x-kore::chart.waterfall y="importe" total="total" />
<x-kore::chart.axis-y :ticks="5" format="compact" />
<x-kore::chart.axis-x />
<x-kore::chart.tooltip />
</x-kore::chart><x-kore::chart :data="$pyl" x="concepto" height="20rem" aria-label="Cuenta de resultados por concepto">
<x-kore::chart.waterfall y="importe" total="total" />
<x-kore::chart.axis-y :ticks="5" format="compact" />
<x-kore::chart.axis-x />
<x-kore::chart.tooltip />
</x-kore::chart>Sin conectores
Lo mismo, pero mirando de dónde salió una desviación: del presupuesto al real, y por qué. Con :connectors='false' se apagan las líneas que enlazan una barra con la siguiente.
| Categoría | delta |
|---|---|
| Presupuesto | 50k |
| Más pedidos | 8,2k |
| Menos precio | -3,1k |
| Devoluciones | -1,8k |
| Real | 53,3k |
<x-kore::chart :data="$varianza" x="motivo" height="16rem" aria-label="Varianza contra presupuesto">
<x-kore::chart.waterfall y="delta" total="total" :connectors="false" />
<x-kore::chart.axis-y :ticks="4" format="compact" />
<x-kore::chart.axis-x />
<x-kore::chart.tooltip />
</x-kore::chart><x-kore::chart :data="$varianza" x="motivo" height="16rem" aria-label="Varianza contra presupuesto">
<x-kore::chart.waterfall y="delta" total="total" :connectors="false" />
<x-kore::chart.axis-y :ticks="4" format="compact" />
<x-kore::chart.axis-x />
<x-kore::chart.tooltip />
</x-kore::chart>Totales calculados solos
La columna «total» es booleana: las filas ciertas son descansillos que van del cero al acumulado y no mueven la suma. Si dejas el importe vacío («0»), sale la suma de todo lo anterior — no hay que repetir la cuenta en el dato. Y si traes tú el valor (por ejemplo, el saldo de apertura), se usa ése, así el primer total no queda clavado en cero.
['concepto' => 'Beneficio', 'importe' => 0, 'total' => true],
// 128000 - 47000 - 18500 - 31000 + 9200 - 12400 = 28300 → se calcula solo['concepto' => 'Beneficio', 'importe' => 0, 'total' => true],
// 128000 - 47000 - 18500 - 31000 + 9200 - 12400 = 28300 → se calcula soloColor: aquí es el único sitio del módulo donde una serie usa los tokens semánticos, y es legítimo: --kore-success significa «esto suma», que es exactamente lo que dice una barra que sube. No es pintar la serie 2 de verde por gusto.
No comparte gráfico: cada barra flota sobre la suma de las anteriores, así que superponerle una línea o unas barras normales mezclaría dos sistemas de coordenadas. Como el donut, vive sola — y si le pones otra marca, lanza una excepción.
Props
| Prop | Tipo | Default | Descripción |
|---|---|---|---|
y
|
string | — | La columna del salto de cada etapa |
total
|
string|null | null | La columna booleana que marca los totales |
connectors
|
bool | true | Las líneas que enlazan una barra con la siguiente |
show
|
bool | true | Apaga la marca |