jsoncanvas icon indicating copy to clipboard operation
jsoncanvas copied to clipboard

Proposal: Edges additional properties

Open chainlist opened this issue 11 months ago • 3 comments

I think some properties are missing to have the JSONCanvas standard to be adopted by awider range of apps.

type property

It would be a good addition to have another property on the Edge object:

type which could have those values:

  • sharp for sharp turns
  • curved for smooth turns (the default one)
  • straight no turns, a straight line between fromNode and toNode

See the example:

//edge object
{
   ...properties,
  "type": "curved"
},
{
   ...properties,
   "type": "sharp"
}

style property

Having a canvas style would add more variety on edge styles.

style would somehow follow the border CSS property style:

  • solid: For a solid line (the default one)
  • dotted: For a dotted line
  • dashed: For a dashed line
  • mixed: A mix between dotted and dashed
  • none: To hide the edge without removing it

e.g:

//edge object
{
   ...properties,
   "style": "solid"
},
{
   ...properties,
   "style": "dashed"
},
{
   ...properties,
  "style": "dotted"
},
{
   ...properties,
  "style": "mixed"
},
{
   ...properties,
   type: "none"
}

fromLabel & toLabel properties

For now we can only set a label to an edge, that would be supposedly displayed at the middle of it. What if we want to display a label that at the end or the beginning of the edge, or even both?

They would work like the label property but used to be displayed at the start or/and the end of an edge. Think about SQL schema n-m relationships. Those property would not be self exclusive and using the 3 labels properties would work.


{
   ...properties,
  "fromLabel": "1",
  "toLabel": "n",
  "label": "1-n relationship"
},
{
   ...properties,
  "fromLabel": "1"
},
{
   ...properties,
   "toLabel": "*"
}

chainlist avatar Mar 16 '24 13:03 chainlist