feat(table_core): Dirty tracking visual - blend naranja para filas con cambios pendientes
- Añadido dirty_row_id: ?i64 a DrawRowsConfig - drawRowsWithDataSource aplica blendColor(state_modified, 0.25) si dirty - VirtualAdvancedTable pasa row_edit_buffer.row_id cuando has_changes
This commit is contained in:
parent
d5edf2b962
commit
7642ffe7f7
2 changed files with 19 additions and 0 deletions
|
|
@ -501,6 +501,9 @@ pub const DrawRowsConfig = struct {
|
|||
apply_state_colors: bool = false,
|
||||
/// Dibujar borde inferior en cada fila
|
||||
draw_row_borders: bool = false,
|
||||
/// ID de fila con cambios pendientes (dirty tracking visual)
|
||||
/// Si no es null y coincide con el row_id actual, se aplica blend naranja
|
||||
dirty_row_id: ?i64 = null,
|
||||
};
|
||||
|
||||
/// Dibuja las filas de una tabla usando TableDataSource.
|
||||
|
|
@ -548,6 +551,15 @@ pub fn drawRowsWithDataSource(
|
|||
};
|
||||
}
|
||||
|
||||
// Dirty tracking: si la fila tiene cambios pendientes sin guardar
|
||||
if (config.dirty_row_id) |dirty_id| {
|
||||
const row_id = datasource.getRowId(row_idx);
|
||||
if (row_id == dirty_id) {
|
||||
// Blend naranja 25% para indicar cambios pendientes
|
||||
row_bg = blendColor(row_bg, config.colors.state_modified, 0.25);
|
||||
}
|
||||
}
|
||||
|
||||
// Aplicar selección (override del estado)
|
||||
if (is_selected) {
|
||||
row_bg = if (config.has_focus) config.colors.selected_row else config.colors.selected_row_unfocus;
|
||||
|
|
|
|||
|
|
@ -826,6 +826,12 @@ fn drawRows(
|
|||
// Buffer para valores de celda
|
||||
var cell_buffer: [256]u8 = undefined;
|
||||
|
||||
// Determinar dirty_row_id (fila con cambios pendientes)
|
||||
const dirty_id: ?i64 = if (list_state.row_edit_buffer.has_changes)
|
||||
list_state.row_edit_buffer.row_id
|
||||
else
|
||||
null;
|
||||
|
||||
// Llamar a la función unificada
|
||||
_ = table_core.drawRowsWithDataSource(
|
||||
ctx,
|
||||
|
|
@ -844,6 +850,7 @@ fn drawRows(
|
|||
.active_col = list_state.nav.active_col,
|
||||
.colors = render_colors,
|
||||
.columns = render_cols[0..num_cols],
|
||||
.dirty_row_id = dirty_id,
|
||||
},
|
||||
&cell_buffer,
|
||||
);
|
||||
|
|
|
|||
Loading…
Reference in a new issue