feat(kotlin-compose): finalize design system + apps + sync sub-repo gitlinks
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
// 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
|
||||
Reference in New Issue
Block a user