jsPlumb has a mechanism that allows you to set/get parameters on a per-connection basis. These are not parameters that affect the appearance of operation of the object on which they are set; they are a means for you to associate information with jsPlumb objects. This can be achieved in a few different ways:
jsPlumb.connect
calljsPlumb.addEndpoint
call to/from which a connection is subsequently established using the mousesetParameter
or setParameters
method on a ConnectionGetting parameters is achieved through either the getParameter(key)
or getParameters
method on a Connection.
Parameters can be passed in via an object literal to a jsPlumb.connect call:
var myConnection = jsPlumb.connect({
source:"foo",
target:"bar",
parameters:{
"p1":34,
"p2":new Date(),
"p3":function() { console.log("i am p3"); }
}
});
Note that they can be any valid Javascript objects - it's just an object literal. You then access them like this:
myConnection.getParameter("p3")(); // prints 'i am p3' to the console.
The information in this section also applies to the makeSource
and makeTarget
functions.
Using jsPlumb.addEndpoint
, you can set parameters that will be copied in to any Connections that are established from or to the given Endpoint using the mouse. (If you set parameters on both a source and target Endpoints and then connect them, the parameters set on the target Endpoint are copied in first, followed by those on the source. So the source Endpoint's parameters take precedence if they happen to have one or more with the same keys as those in the target).
Consider this example:
var e1 = jsPlumb.addEndpoint("d1", {
isSource:true,
parameters:{
"p1":34,
"p2":new Date(),
"p3":function() { console.log("i am p3"); }
}
});
var e2 = jsPlumb.addEndpoint("d2", {
isTarget:true,
parameters:{
"p5":343,
"p3":function() { console.log("FOO FOO FOO"); }
}
});
var conn = jsPlumb.connect({source:e1, target:e2});
'conn' will have four parameters set on it, with the value for "p3" coming from the source Endpoint:
var params = conn.getParameters();
console.log(params.p1); // 34
console.log(params.p2); // Mon May 14 2012 12:57:12 GMT+1000 (EST) (or however your console prints out a Date)
console.log((params.p3)()); // "i am p3" (note: we executed the function after retrieving it)
console.log(params.p5); // 343