设计器快捷调整间距bug解决及细节完善

This commit is contained in:
yangl 2022-09-08 11:28:32 +08:00
parent 569b360daf
commit 95bfd19f42
2 changed files with 32 additions and 26 deletions

View File

@ -80,6 +80,7 @@ Designer.addFunction("selectVertical", function() {
var canvas = $("#designer_canvas");
container.bind('mousemove.drag',function (a) {
Designer.op.destroy()
let pos = Utils.getRelativePos(a.pageX, a.pageY, canvas)
subline1.css({
display : "block",
@ -92,6 +93,7 @@ Designer.addFunction("selectVertical", function() {
top : pos.y
});
container.bind('mousedown.drag',function (b) {
Designer.op.destroy()
container.unbind("mousemove.drag");
let pos1 = Utils.getRelativePos(b.pageX, b.pageY, canvas)
sublinePos = pos1.y
@ -118,6 +120,7 @@ Designer.addFunction("selectVertical", function() {
cursor: 'move'
});
container.bind('mousemove.drag',function (e) {
Designer.op.destroy()
var newPos = Utils.getRelativePos(e.pageX, e.pageY, canvas);
if (newPos.y >= sublinePos) { // 增加
subline1.css({
@ -205,16 +208,16 @@ Designer.addFunction("selectVertical", function() {
含有泳池泳道时要改变泳池泳道的高()
*/
function isLineBelowOrRight(line,type,pos) {
function isLineBelowOrRight(line,type,pos) { // 筛选出要移动的线
let flag = false
if(line.from[type] > pos) {
if(line.from[type] >= pos) {
flag = true
}
if(line.to[type] > pos) {
if(line.to[type] >= pos) {
flag = true
}
for (let i = 0; i < line.points.length; i++) {
if (line.points[i][type] > pos) {
if (line.points[i][type] >= pos) {
flag = true
}
}
@ -247,24 +250,24 @@ function filterShapeAndLine(type,sublinePos) {
}
for (let i = 0; i < shapeArr.length; i++) {
if(type == 'x') {
if (shapeArr[i].props[type] >= sublinePos) {
movingShapes.push(shapeArr[i])
} else if(shapeArr[i].props.x + shapeArr[i].props.w/2>= sublinePos) {
if (shapeArr[i].props[type] > sublinePos) {
movingShapes.push(shapeArr[i]) // 在辅助线右侧--移动
} else if((shapeArr[i].props.x <= sublinePos) && (shapeArr[i].props.x + shapeArr[i].props.w/2>= sublinePos)) { // 辅助线穿过图形左半部分---移动
passedShapes.push(shapeArr[i])
movingShapes.push(shapeArr[i])
} else if(shapeArr[i].props.x + shapeArr[i].props.w/2 < sublinePos && shapeArr[i].props.x + shapeArr[i].props.w > sublinePos) {
} else if(shapeArr[i].props.x + shapeArr[i].props.w/2 < sublinePos && shapeArr[i].props.x + shapeArr[i].props.w >= sublinePos) { // 辅助线穿过图形右半部分---不移动
passedMoreShapes.push(shapeArr[i])
}
else {
sublineSideShape.push(shapeArr[i])
sublineSideShape.push(shapeArr[i]) // 在辅助线左侧--不需要移动
}
} else if(type == 'y') {
if (shapeArr[i].props[type] >= sublinePos) { // 辅助线以下
if (shapeArr[i].props[type] > sublinePos) { // 辅助线以下
movingShapes.push(shapeArr[i])
} else if(shapeArr[i].props.y + shapeArr[i].props.h/2>= sublinePos) { // 辅助线穿过图形上半
} else if((shapeArr[i].props.y <= sublinePos) && (shapeArr[i].props.y + shapeArr[i].props.h/2>= sublinePos)) { // 辅助线穿过图形上半
passedShapes.push(shapeArr[i])
movingShapes.push(shapeArr[i])
} else if(shapeArr[i].props.y + shapeArr[i].props.h/2 < sublinePos && shapeArr[i].props.y + shapeArr[i].props.h > sublinePos) {
} else if(shapeArr[i].props.y + shapeArr[i].props.h/2 < sublinePos && shapeArr[i].props.y + shapeArr[i].props.h >= sublinePos) {
passedMoreShapes.push(shapeArr[i])
}
else {
@ -272,7 +275,7 @@ function filterShapeAndLine(type,sublinePos) {
}
}
}
for (let i = 0; i < lineArr.length; i++) {
for (let i = 0; i < lineArr.length; i++) { // 在所有的线中筛选出要移动的线
let index = movingLines.findIndex(item => item.id == lineArr[i].id)
if(isLineBelowOrRight(lineArr[i],type,sublinePos) && index == -1) {
movingLines.push(lineArr[i])
@ -332,8 +335,8 @@ function moveShapeAndFile(type,sublinePos,movedDistance) {
let fromIndex = passedShapes.findIndex(item => item.id == movingLines[i].from.id)
let toIndex = passedShapes.findIndex(item => item.id == movingLines[i].to.id)
let moreFromIndex = passedMoreShapes.findIndex(item => item.id == movingLines[i].from.id)
let moreToIndex = passedMoreShapes.findIndex(item => item.id == movingLines[i].to.id)
let moreFromIndex = passedMoreShapes.findIndex(item => item.id == movingLines[i].from.id) // 该线是否是不需要移动的形状上的起点
let moreToIndex = passedMoreShapes.findIndex(item => item.id == movingLines[i].to.id) // 上同
for (let j = 0; j < movingLines[i].points.length; j++) {
if(movingLines[i].points[j][type] > sublinePos ) {
@ -360,12 +363,14 @@ function moveShapeAndFile(type,sublinePos,movedDistance) {
}
}
movingLines[i].to[type] += movedDistance
}
Designer.painter.renderLinker(movingLines[i])
}
Designer.op.hideTip();
Utils.unselect();
var movedArr = movingShapes.concat(movingLines)
if (movedArr.length > 0) {
Model.updateMulti(movedArr);
@ -662,6 +667,7 @@ Designer.addFunction("selectHorizontal", function() {
var canvas = $("#designer_canvas");
container.bind('mousemove.drag',function (a) {
Designer.op.destroy()
let pos = Utils.getRelativePos(a.pageX, a.pageY, canvas)
subline1.css({
display : "block",
@ -674,6 +680,7 @@ Designer.addFunction("selectHorizontal", function() {
top : 0
});
container.bind('mousedown.drag',function (b) {
Designer.op.destroy()
container.unbind("mousemove.drag");
let pos1 = Utils.getRelativePos(b.pageX, b.pageY, canvas)
sublinePos = pos1.x
@ -700,6 +707,7 @@ Designer.addFunction("selectHorizontal", function() {
cursor: 'move'
});
container.bind('mousemove.drag',function (e) {
Designer.op.destroy()
var newPos = Utils.getRelativePos(e.pageX, e.pageY, canvas);
if (newPos.x >= sublinePos) { // 增加
subline1.css({
@ -757,16 +765,14 @@ Designer.addFunction("selectHorizontal", function() {
subline1.hide()
subline2.hide()
var edgePos = getCanvasContentEdge()
var pageSize = Model.define.page;
console.log(edgePos.right)
console.log(pageSize.width)
if(edgePos.right > pageSize.width - pageSize.padding) {
Designer.setPageStyle({
width: edgePos.right + pageSize.padding + 30
});
$("#page_size_w").spinner('value',edgePos.right + pageSize.padding + 30);
}
var edgePos = getCanvasContentEdge()
var pageSize = Model.define.page;
if(edgePos.right > pageSize.width - pageSize.padding) {
Designer.setPageStyle({
width: edgePos.right + pageSize.padding + 30
});
$("#page_size_w").spinner('value',edgePos.right + pageSize.padding + 30);
}
$(document).unbind("mouseup.drop")
})
})