|
@@ -351,6 +351,33 @@ let JpcCanvasOutput = {
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
+ highlightConflictArea: function (pageObj, pageIdx) {
|
|
|
+ if (pageObj && pageObj.items.length > 0 && pageObj.items.length >= pageIdx) {
|
|
|
+ let private_create_conflict_line = function () {
|
|
|
+ return {"LineWeight": "1", "DashStyle": "SOLID", "Color": "RED"};
|
|
|
+ };
|
|
|
+ let page = pageObj.items[pageIdx - 1],
|
|
|
+ styleConflict = {"Left": private_create_conflict_line(), "Right": private_create_conflict_line(), "Top": private_create_conflict_line(), "Bottom": private_create_conflict_line()}
|
|
|
+ ;
|
|
|
+ pageObj[JV.NODE_STYLE_COLLECTION]["ConflictCell"] = styleConflict;
|
|
|
+ let conflictIds = [];
|
|
|
+ for (let j = 0; j < page.cells.length; j++) {
|
|
|
+ if (conflictIds.indexOf(j) < 0) {
|
|
|
+ let cell1 = page.cells[j];
|
|
|
+ for (let k = j + 1; k < page.cells.length; k++) {
|
|
|
+ let cell2 = page.cells[k];
|
|
|
+ //判断area是否有交叉
|
|
|
+ if (areaConflict(cell1[JV.PROP_AREA], cell2[JV.PROP_AREA])) {
|
|
|
+ conflictIds.push(j);
|
|
|
+ conflictIds.push(k);
|
|
|
+ cell1[JV.PROP_STYLE] = "ConflictCell";
|
|
|
+ cell2[JV.PROP_STYLE] = "ConflictCell";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
drawPageBorder: function(rptTpl, canvas, resolution) {
|
|
|
let me = this;
|
|
|
let size = me.getReportSizeInPixel(rptTpl, resolution);
|
|
@@ -378,4 +405,20 @@ let JpcCanvasOutput = {
|
|
|
rst[1] = Math.round(resolution[0] * rst[1]);
|
|
|
return rst;
|
|
|
}
|
|
|
-};
|
|
|
+};
|
|
|
+
|
|
|
+function areaConflict(area1,area2) {
|
|
|
+ let maxX,maxY,minX,minY,
|
|
|
+ w1 = area1[JV.PROP_RIGHT] - area1[JV.PROP_LEFT],
|
|
|
+ w2 = area2[JV.PROP_RIGHT] - area2[JV.PROP_LEFT],
|
|
|
+ h1 = area1[JV.PROP_BOTTOM] - area1[JV.PROP_TOP],
|
|
|
+ h2 = area2[JV.PROP_BOTTOM] - area2[JV.PROP_TOP]
|
|
|
+ ;
|
|
|
+ //1. 求2个矩形的最小外包矩形
|
|
|
+ minX = (area1[JV.PROP_LEFT] <= area2[JV.PROP_LEFT]) ? area1[JV.PROP_LEFT] : area2[JV.PROP_LEFT];
|
|
|
+ minY = (area1[JV.PROP_TOP] <= area2[JV.PROP_TOP]) ? area1[JV.PROP_TOP] : area2[JV.PROP_TOP];
|
|
|
+ maxX = (area1[JV.PROP_RIGHT] >= area2[JV.PROP_RIGHT]) ? area1[JV.PROP_RIGHT] : area2[JV.PROP_RIGHT];
|
|
|
+ maxY = (area1[JV.PROP_BOTTOM] >= area2[JV.PROP_BOTTOM]) ? area1[JV.PROP_BOTTOM] : area2[JV.PROP_BOTTOM];
|
|
|
+ //2. 判断外包矩形与高与宽是否小于俩矩形的高与宽之和(这里的边界条件是小于,等于的话不算;而且是高与宽都得符合条件!)
|
|
|
+ return (maxX - minX < w1 + w2 && maxY - minY < h1 + h2);
|
|
|
+}
|