From 26ebef24f023a80f5be5ff27c93585f70688f6ee Mon Sep 17 00:00:00 2001
From: jinlin <jinlin>
Date: 星期二, 22 十月 2024 14:45:39 +0800
Subject: [PATCH] 关于修改可靠性产品重复
---
web/public/SVGOrigin/Method-Draw-master/editor/extensions/ext-connector.js | 158 ++++++++++++++++++++++++++--------------------------
1 files changed, 79 insertions(+), 79 deletions(-)
diff --git a/web/public/SVGOrigin/Method-Draw-master/editor/extensions/ext-connector.js b/web/public/SVGOrigin/Method-Draw-master/editor/extensions/ext-connector.js
index ffd54df..52f77eb 100644
--- a/web/public/SVGOrigin/Method-Draw-master/editor/extensions/ext-connector.js
+++ b/web/public/SVGOrigin/Method-Draw-master/editor/extensions/ext-connector.js
@@ -6,7 +6,7 @@
* Copyright(c) 2010 Alexis Deveria
*
*/
-
+
methodDraw.addExtension("Connector", function(S) {
var svgcontent = S.svgcontent,
svgroot = S.svgroot,
@@ -26,9 +26,9 @@
se_ns,
// connect_str = "-SE_CONNECT-",
selElems = [];
-
+
elData = $.data;
-
+
var lang_list = {
"en":[
{"id": "mode_connect", "title": "Connect two objects" }
@@ -37,7 +37,7 @@
{"id": "mode_connect", "title": "Connecter deux objets"}
]
};
-
+
function getOffset(side, line) {
var give_offset = !!line.getAttribute('marker-' + side);
// var give_offset = $(line).data(side+'_off');
@@ -46,16 +46,16 @@
var size = line.getAttribute('stroke-width') * 5;
return give_offset ? size : 0;
}
-
+
function showPanel(on) {
var conn_rules = $('#connector_rules');
if(!conn_rules.length) {
conn_rules = $('<style id="connector_rules"><\/style>').appendTo('head');
- }
+ }
conn_rules.text(!on?"":"#tool_clone, #tool_topath, #tool_angle, #xy_panel { display: none !important; }");
$('#connector_panel').toggle(on);
}
-
+
function setPoint(elem, pos, x, y, setMid) {
var pts = elem.points;
var pt = svgroot.createSVGPoint();
@@ -73,9 +73,9 @@
pt_arr[i] = x + ',' + y;
}
}
- elem.setAttribute("points",pt_arr.join(" "));
+ elem.setAttribute("points",pt_arr.join(" "));
}
-
+
if(setMid) {
// Add center point
var pt_start = pts.getItem(0);
@@ -83,7 +83,7 @@
setPoint(elem, 1, (pt_end.x + pt_start.x)/2, (pt_end.y + pt_start.y)/2);
}
}
-
+
function updateLine(diff_x, diff_y) {
// Update line with element
var i = connections.length;
@@ -91,34 +91,34 @@
var conn = connections[i];
var line = conn.connector;
var elem = conn.elem;
-
+
var pre = conn.is_start?'start':'end';
// var sw = line.getAttribute('stroke-width') * 5;
-
+
// Update bbox for this element
var bb = elData(line, pre+'_bb');
bb.x = conn.start_x + diff_x;
bb.y = conn.start_y + diff_y;
elData(line, pre+'_bb', bb);
-
+
var alt_pre = conn.is_start?'end':'start';
-
+
// Get center pt of connected element
var bb2 = elData(line, alt_pre+'_bb');
var src_x = bb2.x + bb2.width/2;
var src_y = bb2.y + bb2.height/2;
-
+
// Set point of element being moved
var pt = getBBintersect(src_x, src_y, bb, getOffset(pre, line)); // $(line).data(pre+'_off')?sw:0
setPoint(line, conn.is_start?0:'end', pt.x, pt.y, true);
-
+
// Set point of connected element
var pt2 = getBBintersect(pt.x, pt.y, elData(line, alt_pre + '_bb'), getOffset(alt_pre, line));
setPoint(line, conn.is_start?'end':0, pt2.x, pt2.y, true);
}
}
-
+
function findConnectors(elems) {
if(!elems) elems = selElems;
var connectors = $(svgcontent).find(conn_sel);
@@ -128,7 +128,7 @@
connectors.each(function() {
var start = elData(this, "c_start");
var end = elData(this, "c_end");
-
+
var parts = [getElem(start), getElem(end)];
for(var i=0; i<2; i++) {
var c_elem = parts[i];
@@ -140,7 +140,7 @@
add_this = true;
}
});
-
+
if(!c_elem || !c_elem.parentNode) {
$(this).remove();
continue;
@@ -153,12 +153,12 @@
is_start: (i === 0),
start_x: bb.x,
start_y: bb.y
- });
+ });
}
}
});
}
-
+
function updateConnectors(elems) {
// Updates connector lines based on selected elements
// Is not used on mousemove, as it runs getStrokedBBox every time,
@@ -174,29 +174,29 @@
var sw = line.getAttribute('stroke-width') * 5;
var pre = conn.is_start?'start':'end';
-
+
// Update bbox for this element
var bb = svgCanvas.getStrokedBBox([elem]);
bb.x = conn.start_x;
bb.y = conn.start_y;
elData(line, pre+'_bb', bb);
var add_offset = elData(line, pre+'_off');
-
+
var alt_pre = conn.is_start?'end':'start';
-
+
// Get center pt of connected element
var bb2 = elData(line, alt_pre+'_bb');
var src_x = bb2.x + bb2.width/2;
var src_y = bb2.y + bb2.height/2;
-
+
// Set point of element being moved
var pt = getBBintersect(src_x, src_y, bb, getOffset(pre, line));
setPoint(line, conn.is_start?0:'end', pt.x, pt.y, true);
-
+
// Set point of connected element
var pt2 = getBBintersect(pt.x, pt.y, elData(line, alt_pre + '_bb'), getOffset(alt_pre, line));
setPoint(line, conn.is_start?'end':0, pt2.x, pt2.y, true);
-
+
// Update points attribute manually for webkit
if(navigator.userAgent.indexOf('AppleWebKit') != -1) {
var pts = line.points;
@@ -205,14 +205,14 @@
for(var j=0; j< len; j++) {
var pt = pts.getItem(j);
pt_arr[j] = pt.x + ',' + pt.y;
- }
- line.setAttribute("points",pt_arr.join(" "));
+ }
+ line.setAttribute("points",pt_arr.join(" "));
}
}
}
}
-
+
function getBBintersect(x, y, bb, offset) {
if(offset) {
offset -= 0;
@@ -222,54 +222,54 @@
bb.x -= offset/2;
bb.y -= offset/2;
}
-
+
var mid_x = bb.x + bb.width/2;
var mid_y = bb.y + bb.height/2;
var len_x = x - mid_x;
var len_y = y - mid_y;
-
+
var slope = Math.abs(len_y/len_x);
-
+
var ratio;
-
+
if(slope < bb.height/bb.width) {
ratio = (bb.width/2) / Math.abs(len_x);
} else {
ratio = (bb.height/2) / Math.abs(len_y);
}
-
-
+
+
return {
x: mid_x + len_x * ratio,
y: mid_y + len_y * ratio
}
}
-
+
// Do once
(function() {
var gse = svgCanvas.groupSelectedElements;
-
+
svgCanvas.groupSelectedElements = function() {
svgCanvas.removeFromSelection($(conn_sel).toArray());
return gse.apply(this, arguments);
}
-
+
var mse = svgCanvas.moveSelectedElements;
-
+
svgCanvas.moveSelectedElements = function() {
svgCanvas.removeFromSelection($(conn_sel).toArray());
var cmd = mse.apply(this, arguments);
updateConnectors();
return cmd;
}
-
+
se_ns = svgCanvas.getEditorNS();
}());
-
+
// Do on reset
function init() {
// Make sure all connectors have data set
- $(svgcontent).find('*').each(function() {
+ $(svgcontent).find('*').each(function() {
var conn = this.getAttributeNS(se_ns, "connector");
if(conn) {
this.setAttribute('class', conn_sel.substr(1));
@@ -285,18 +285,18 @@
});
// updateConnectors();
}
-
+
// $(svgroot).parent().mousemove(function(e) {
-// // if(started
+// // if(started
// // || svgCanvas.getMode() != "connector"
// // || e.target.parentNode.parentNode != svgcontent) return;
-//
+//
// console.log('y')
// // if(e.target.parentNode.parentNode === svgcontent) {
-// //
+// //
// // }
// });
-
+
return {
name: "Connector",
svgicons: "images/conn.svg",
@@ -326,27 +326,27 @@
start_x = opts.start_x,
start_y = opts.start_y;
var mode = svgCanvas.getMode();
-
+
if(mode == "connector") {
-
+
if(started) return;
-
+
var mouse_target = e.target;
-
+
var parents = $(mouse_target).parents();
-
+
if($.inArray(svgcontent, parents) != -1) {
// Connectable element
-
+
// If child of foreignObject, use parent
var fo = $(mouse_target).closest("foreignObject");
start_elem = fo.length ? fo[0] : mouse_target;
-
+
// Get center of source element
var bb = svgCanvas.getStrokedBBox([start_elem]);
var x = bb.x + bb.width/2;
var y = bb.y + bb.height/2;
-
+
started = true;
cur_line = addElem({
"element": "polyline",
@@ -374,27 +374,27 @@
var e = opts.event;
var x = opts.mouse_x/zoom;
var y = opts.mouse_y/zoom;
-
+
var diff_x = x - start_x,
diff_y = y - start_y;
-
+
var mode = svgCanvas.getMode();
-
+
if(mode == "connector" && started) {
-
+
var sw = cur_line.getAttribute('stroke-width') * 3;
// Set start point (adjusts based on bb)
var pt = getBBintersect(x, y, elData(cur_line, 'start_bb'), getOffset('start', cur_line));
start_x = pt.x;
start_y = pt.y;
-
+
setPoint(cur_line, 0, pt.x, pt.y, true);
-
+
// Set end point
setPoint(cur_line, 'end', x, y, true);
} else if(mode == "select") {
var slen = selElems.length;
-
+
while(slen--) {
var elem = selElems[slen];
// Look for selected connector elements
@@ -408,9 +408,9 @@
if(connections.length) {
updateLine(diff_x, diff_y);
-
+
}
- }
+ }
},
mouseUp: function(opts) {
var zoom = svgCanvas.getZoom();
@@ -418,11 +418,11 @@
x = opts.mouse_x/zoom,
y = opts.mouse_y/zoom,
mouse_target = e.target;
-
+
if(svgCanvas.getMode() == "connector") {
var fo = $(mouse_target).closest("foreignObject");
if(fo.length) mouse_target = fo[0];
-
+
var parents = $(mouse_target).parents();
if(mouse_target == start_elem) {
@@ -432,7 +432,7 @@
keep: true,
element: null,
started: started
- }
+ }
} else if($.inArray(svgcontent, parents) === -1) {
// Not a valid target element, so remove line
$(cur_line).remove();
@@ -445,7 +445,7 @@
} else {
// Valid end element
end_elem = mouse_target;
-
+
var start_id = start_elem.id, end_id = end_elem.id;
var conn_str = start_id + " " + end_id;
var alt_str = end_id + " " + start_id;
@@ -462,9 +462,9 @@
started: false
}
}
-
+
var bb = svgCanvas.getStrokedBBox([end_elem]);
-
+
var pt = getBBintersect(start_x, start_y, bb, getOffset('start', cur_line));
setPoint(cur_line, 'end', pt.x, pt.y, true);
$(cur_line)
@@ -490,16 +490,16 @@
selectedChanged: function(opts) {
// TODO: Find better way to skip operations if no connectors are in use
if(!$(svgcontent).find(conn_sel).length) return;
-
+
if(svgCanvas.getMode() == 'connector') {
svgCanvas.setMode('select');
}
-
+
// Use this to update the current selected elements
selElems = opts.elems;
-
+
var i = selElems.length;
-
+
while(i--) {
var elem = selElems[i];
if(elem && elData(elem, 'c_start')) {
@@ -523,7 +523,7 @@
svgcontent = elem;
init();
}
-
+
// Has marker, so change offset
if(elem && (
elem.getAttribute("marker-start") ||
@@ -537,16 +537,16 @@
$(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",
--
Gitblit v1.9.1