gioser-graph: fix panic slicing multi-byte chars (á, ñ, etc)
- Use .chars().take(18) instead of byte slicing &node.name[..18]
which panics on accented characters
2588673caf57bede06a28f7f2eb8c282533caf82 · ruwaq Sergio · (5 killa ñawpaq) · tayta fa2bedf85 · kay commitpi sach'ata qhaway
Semántico sayk'uy · 1
crates/modules/gioser/gioser-graph-web/src/lib.rs
- ukhunpi t'ikrakurqan fn render
diff --git a/crates/apps/gioser-web/pkg/gioser_web_bg.wasm b/crates/apps/gioser-web/pkg/gioser_web_bg.wasm
index 4dfe114..fa7efc8 100644
Binary files a/crates/apps/gioser-web/pkg/gioser_web_bg.wasm and b/crates/apps/gioser-web/pkg/gioser_web_bg.wasm differ
diff --git a/crates/modules/gioser/gioser-graph-web/src/lib.rs b/crates/modules/gioser/gioser-graph-web/src/lib.rs
index 7c0ce4c..43b92cd 100644
--- a/crates/modules/gioser/gioser-graph-web/src/lib.rs
+++ b/crates/modules/gioser/gioser-graph-web/src/lib.rs
@@ -248,8 +248,9 @@ impl GraphWidget {
for (i, node) in self.nodes.iter().enumerate() {
let Some((cx, cy)) = positions.get(i).map(|(_, p)| *p) else { continue; };
let color = camino_color(&node.camino).to_string();
- let label = if node.name.len() > 20 {
- format!("{}…", &node.name[..18])
+ let label = if node.name.chars().count() > 20 {
+ let cutoff: String = node.name.chars().take(18).collect();
+ format!("{}…", cutoff)
} else {
node.name.clone()
};