Files
primitives_gallery/playground/tables/data_table_logic.h
T
2026-05-11 16:30:43 +02:00

45 lines
1.3 KiB
C++

// Logica pura del playground data_table. Sin ImGui — testable headless.
// Cuando se promueva al registry, esto sera la base de data_table_cpp_viz.
#pragma once
#include <string>
#include <vector>
namespace data_table {
enum class Op { Eq, Neq, Gt, Gte, Lt, Lte };
const char* op_label(Op o);
struct Filter {
int col;
Op op;
std::string value;
};
struct ColorRule {
int col;
std::string equals;
unsigned int color; // ImU32 (ABGR para ImGui)
};
struct State {
std::vector<Filter> filters;
std::vector<ColorRule> color_rules;
std::vector<bool> col_visible; // size = col_count; auto-init en render
int sort_col = -1; // -1 = sin sort
bool sort_desc = false;
};
// Parse "1.23" -> 1.23, true. False si la celda no es numero completo.
bool parse_number(const char* s, double& out);
// Compara dos celdas con operador. Numerico si ambas parseables; lexical si no.
bool compare(const char* a, const char* b, Op op);
// Aplica filtros y ordena. Devuelve indices de filas visibles.
std::vector<int> compute_visible_rows(const char* const* cells,
int rows, int cols,
const State& st);
} // namespace data_table