Sync with SVG-edit
This commit is contained in:
parent
de3008d3e4
commit
bad5beec29
8 changed files with 386 additions and 60 deletions
|
@ -9,8 +9,8 @@
|
|||
|
||||
$(function() {
|
||||
svgCanvas.addExtension("Connector", function(S) {
|
||||
var svgcontent = S.content,
|
||||
svgroot = S.root,
|
||||
var svgcontent = S.svgcontent,
|
||||
svgroot = S.svgroot,
|
||||
getNextId = S.getNextId,
|
||||
getElem = S.getElem,
|
||||
addElem = S.addSvgElementFromJson,
|
||||
|
@ -104,14 +104,29 @@ $(function() {
|
|||
svgCanvas.removeFromSelection($(conn_sel).toArray());
|
||||
}
|
||||
|
||||
// Loop through selected elements
|
||||
while(i--) {
|
||||
var elem = all_els[i];
|
||||
if(!elem) continue;
|
||||
|
||||
// Element was deleted, so delete connector
|
||||
var was_deleted = !elem.parentNode;
|
||||
|
||||
// Skip connector
|
||||
if($(elem).data('c_start')) continue;
|
||||
|
||||
// Loop through connectors to see if one is connected to the element
|
||||
connectors.each(function() {
|
||||
var start = $(this).data("c_start");
|
||||
var end = $(this).data("c_end");
|
||||
|
||||
// Connector found for this element
|
||||
if(start == elem.id || end == elem.id) {
|
||||
|
||||
if(was_deleted) {
|
||||
$(this).remove();
|
||||
return;
|
||||
}
|
||||
var bb = svgCanvas.getStrokedBBox([elem]);
|
||||
connections.push({
|
||||
elem: elem,
|
||||
|
@ -138,8 +153,8 @@ $(function() {
|
|||
var line = conn.connector;
|
||||
var elem = conn.elem;
|
||||
|
||||
var pre = conn.is_start?'start':'end';
|
||||
var sw = line.getAttribute('stroke-width');
|
||||
var pre = conn.is_start?'start':'end';
|
||||
|
||||
// Update bbox for this element
|
||||
var bb = svgCanvas.getStrokedBBox([elem]);
|
||||
|
@ -458,6 +473,7 @@ $(function() {
|
|||
se_ns = svgCanvas.getEditorNS(true);
|
||||
cur_line.setAttributeNS(se_ns, "se:connector", conn_str);
|
||||
cur_line.setAttribute('class', conn_sel.substr(1));
|
||||
cur_line.setAttribute('opacity', 1);
|
||||
svgCanvas.addToSelection([cur_line]);
|
||||
svgCanvas.moveToBottomSelectedElement();
|
||||
selManager.requestSelector(cur_line).showGrips(false);
|
||||
|
@ -507,11 +523,40 @@ $(function() {
|
|||
elem.getAttribute("marker-end")
|
||||
)) {
|
||||
var start = elem.getAttribute("marker-start");
|
||||
var mid = elem.getAttribute("marker-mid");
|
||||
var end = elem.getAttribute("marker-end");
|
||||
cur_line = elem;
|
||||
$(elem)
|
||||
.data("start_off", !!start)
|
||||
.data("end_off", !!end);
|
||||
|
||||
if(elem.tagName == "line" && mid) {
|
||||
// Convert to polyline to accept mid-arrow
|
||||
|
||||
var x1 = elem.getAttribute('x1')-0;
|
||||
var x2 = elem.getAttribute('x2')-0;
|
||||
var y1 = elem.getAttribute('y1')-0;
|
||||
var y2 = elem.getAttribute('y2')-0;
|
||||
var id = elem.id;
|
||||
|
||||
var mid_pt = (' '+((x1+x2)/2)+','+((y1+y2)/2) + ' ');
|
||||
var pline = addElem({
|
||||
"element": "polyline",
|
||||
"attr": {
|
||||
"points": (x1+','+y1+ mid_pt +x2+','+y2),
|
||||
"stroke": elem.getAttribute('stroke'),
|
||||
"stroke-width": elem.getAttribute('stroke-width'),
|
||||
"marker-mid": mid,
|
||||
"fill": "none",
|
||||
"opacity": elem.getAttribute('opacity') || 1
|
||||
}
|
||||
});
|
||||
$(elem).after(pline).remove();
|
||||
svgCanvas.clearSelection();
|
||||
pline.id = id;
|
||||
svgCanvas.addToSelection([pline]);
|
||||
}
|
||||
|
||||
}
|
||||
updateConnectors();
|
||||
},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue