feat: port el-ui vessels — rename crates→vessels, add El source + manifests
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
// edge.el — Edge type definitions and visual encoding.
|
||||
//
|
||||
// Edges are directed (source -> target) with a weight and optional relation label.
|
||||
|
||||
// ── Edge JSON accessors ──────────────────────────────────────────────────────
|
||||
//
|
||||
// Edges are passed as JSON objects: { source_id, target_id, weight, relation }
|
||||
|
||||
fn edge_source(e_json: String) -> String {
|
||||
let s: String = json_get_string(e_json, "source_id")
|
||||
if !str_eq(s, "") { return s }
|
||||
json_get_string(e_json, "source")
|
||||
}
|
||||
|
||||
fn edge_target(e_json: String) -> String {
|
||||
let t: String = json_get_string(e_json, "target_id")
|
||||
if !str_eq(t, "") { return t }
|
||||
json_get_string(e_json, "target")
|
||||
}
|
||||
|
||||
fn edge_weight(e_json: String) -> Float {
|
||||
let w: Float = json_get_float(e_json, "weight")
|
||||
if w == int_to_float(0) { return int_to_float(1) }
|
||||
w
|
||||
}
|
||||
|
||||
fn edge_relation(e_json: String) -> String {
|
||||
json_get_string(e_json, "relation")
|
||||
}
|
||||
|
||||
// ── Edge visual encoding ─────────────────────────────────────────────────────
|
||||
|
||||
// Stroke width clamped to [1, 4] based on weight.
|
||||
fn edge_stroke_width(weight: Float) -> Float {
|
||||
let min_w: Float = int_to_float(1)
|
||||
let max_w: Float = int_to_float(4)
|
||||
let range: Float = max_w - min_w
|
||||
let clamped: Float = if weight < min_w { min_w } else { if weight > max_w { max_w } else { weight } }
|
||||
clamped
|
||||
}
|
||||
|
||||
fn edge_stroke_color() -> String { "#3a4a5a" }
|
||||
|
||||
fn edge_stroke_color_highlight() -> String { "#5a7a9a" }
|
||||
Reference in New Issue
Block a user