style specific port in jointjs
Asked Answered
T

1

0

1) I'm using JointJS diagramming lib. I want to change the css of a particular inPort when using joint.shapes.devs.

For linking sourcePort to the target I'm using

source: { id: source.id, selector: source.getPortSelector(sourcePort)}

It's giving me accurate source port, but how to apply css on this particular port after knowing it as my source connector? Is there a way?

2) Can we fit/wrap the label automatically inside the element if its width is longer than the element-width? I'm using joint.shapes.devs.Atomic element(s).

I came across foreignobject but don't know how to use it? Can anyone throw some light on it?

Tanney answered 27/2, 2014 at 13:7 Comment(0)
M
2

1)

myShape.attr('[port="a"]/fill', 'blue')

where the first part of the first argument before slash is a CSS selector pointing to the port circle SVG element, the second part is an SVG attribute to be set on that element and the second argument is a value to be set for that attribute. An alternative syntax for doing the same thing would be:

myShape.attr({ '[port="a"]': { fill: 'blue' } })

See the attr() method reference for details: http://jointjs.com/api#joint.dia.Element:attr.

2) The joint.shapes.devs.Atomic shape does not automatically do that. You would have to create your own shape and do it there either via foreighObject or programmatically in JavaScript. As a reference for using foreignObject, please see the joint.shapes.basic.TextBlock shape that is defined in this file: https://github.com/DavidDurman/joint/blob/master/plugins/joint.shapes.basic.js.

Matejka answered 27/2, 2014 at 21:13 Comment(1)
1) Perfectly answered! 2) I didn't get how to wrap text in joint.shapes.devs? Didn't even find an example to use foreignObject to wrap text. Can you please help me on that.Tanney

© 2022 - 2024 — McMap. All rights reserved.