|
@@ -1,6 +1,7 @@
|
|
|
import { mathUtil } from "../Util/MathUtil";
|
|
|
import { dataService } from "../Service/DataService";
|
|
|
import { textService } from "../Service/TextService";
|
|
|
+import Constant from "../Constant";
|
|
|
|
|
|
export default class HistoryUtil {
|
|
|
constructor() {}
|
|
@@ -83,6 +84,66 @@ export default class HistoryUtil {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ isDifferentForRoadPoints(roadPoint1, roadPoint2) {
|
|
|
+ if (
|
|
|
+ mathUtil.equalPoint(roadPoint1, roadPoint2) &&
|
|
|
+ JSON.stringify(roadPoint1.parent) == JSON.stringify(roadPoint2.parent)
|
|
|
+ ) {
|
|
|
+ return false;
|
|
|
+ } else {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ isDifferentForRoadEdges(roadEdge1, roadEdge2) {
|
|
|
+ if (
|
|
|
+ mathUtil.equalPoint(roadEdge1.start, roadEdge2.start) &&
|
|
|
+ mathUtil.equalPoint(roadEdge1.end, roadEdge2.end) &&
|
|
|
+ roadEdge1.parent == roadEdge2.parent
|
|
|
+ ) {
|
|
|
+ return false;
|
|
|
+ } else {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ isDifferentForRoads(road1, road2) {
|
|
|
+ if (
|
|
|
+ road1.startId == road2.startId &&
|
|
|
+ road1.endId == road2.endId &&
|
|
|
+ road1.leftEdgeId == road2.leftEdgeId &&
|
|
|
+ road1.rightEdgeId == road2.rightEdgeId &&
|
|
|
+ road1.way == road2.way
|
|
|
+ ) {
|
|
|
+ if (road1.way == Constant.oneWay) {
|
|
|
+ if (
|
|
|
+ road1.singleRoadWidth == road2.singleRoadWidth &&
|
|
|
+ road1.singleRoadDrivewayCount == road2.singleRoadDrivewayCount
|
|
|
+ ) {
|
|
|
+ return false;
|
|
|
+ } else {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ } else if (road1.way == Constant.twoWay) {
|
|
|
+ if (
|
|
|
+ road1.leftWidth == road2.leftWidth &&
|
|
|
+ road1.rightWidth == road2.rightWidth &&
|
|
|
+ road1.leftDrivewayCount == road2.leftDrivewayCount &&
|
|
|
+ road1.rightDrivewayCount == road2.rightDrivewayCount &&
|
|
|
+ road1.midDivide.midDivideWidth == road2.midDivide.midDivideWidth
|
|
|
+ ) {
|
|
|
+ return false;
|
|
|
+ } else {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
// // road2赋值给road1
|
|
|
// assignRoadFromRoad(road1, road2) {
|
|
|
// const roadInfo = {};
|
|
@@ -147,6 +208,50 @@ export default class HistoryUtil {
|
|
|
this.setSVGInfo(svgInfo);
|
|
|
}
|
|
|
|
|
|
+ assignRoadPointFromRoadPoint(roadPoint1, roadPoint2) {
|
|
|
+ const roadPointInfo = {};
|
|
|
+ roadPointInfo.vectorId = roadPoint1.vectorId;
|
|
|
+ roadPointInfo.position = {
|
|
|
+ x: roadPoint2.position.x,
|
|
|
+ y: roadPoint2.position.y,
|
|
|
+ };
|
|
|
+ roadPointInfo.parent = JSON.parse(JSON.stringify(roadPoint2.parent));
|
|
|
+ this.setRoadPointInfo(roadPointInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ assignRoadEdgeFromRoadEdge(roadEdge1, roadEdge2) {
|
|
|
+ const roadEdgeInfo = {};
|
|
|
+ roadEdgeInfo.vectorId = roadEdge1.vectorId;
|
|
|
+ roadEdgeInfo.start = { x: roadEdge2.start.x, y: roadEdge2.start.y };
|
|
|
+ roadEdgeInfo.end = { x: roadEdge2.end.x, y: roadEdge2.end.y };
|
|
|
+ roadEdgeInfo.parent = roadEdge2.parent;
|
|
|
+ this.setRoadEdgeInfo(roadEdgeInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ assignRoadFromRoad(road1, road2) {
|
|
|
+ const roadInfo = {};
|
|
|
+ roadInfo.vectorId = road1.vectorId;
|
|
|
+ roadInfo.startId = road2.startId;
|
|
|
+ roadInfo.endId = road2.endId;
|
|
|
+ roadInfo.leftEdgeId = road2.leftEdgeId;
|
|
|
+ roadInfo.rightEdgeId = road2.rightEdgeId;
|
|
|
+ roadInfo.way = road2.way;
|
|
|
+ if (road2.way == Constant.oneWay) {
|
|
|
+ roadInfo.singleRoadWidth = road2.singleRoadWidth;
|
|
|
+ roadInfo.singleRoadDrivewayCount = road2.singleRoadDrivewayCount;
|
|
|
+ roadInfo.singleLanes = JSON.parse(JSON.stringify(road2.singleLanes));
|
|
|
+ } else if (road2.way == Constant.twoWay) {
|
|
|
+ roadInfo.leftWidth = road2.leftWidth;
|
|
|
+ roadInfo.rightWidth = road2.rightWidth;
|
|
|
+ roadInfo.leftDrivewayCount = road2.leftDrivewayCount;
|
|
|
+ roadInfo.rightDrivewayCount = road2.rightDrivewayCount;
|
|
|
+ roadInfo.midDivide = JSON.parse(JSON.stringify(road2.midDivide));
|
|
|
+ roadInfo.leftLanes = JSON.parse(JSON.stringify(road2.leftLanes));
|
|
|
+ roadInfo.rightLanes = JSON.parse(JSON.stringify(road2.rightLanes));
|
|
|
+ }
|
|
|
+ this.setRoadInfo(roadInfo);
|
|
|
+ }
|
|
|
+
|
|
|
getDataForPoint(point) {
|
|
|
const data = {};
|
|
|
data.id = point.vectorId;
|
|
@@ -211,12 +316,52 @@ export default class HistoryUtil {
|
|
|
return data;
|
|
|
}
|
|
|
|
|
|
- // setRoadInfo(roadInfo) {
|
|
|
- // let road = dataService.getRoad(roadInfo.vectorId);
|
|
|
- // road.start = roadInfo.start;
|
|
|
- // road.end = roadInfo.end;
|
|
|
- // return road;
|
|
|
- // }
|
|
|
+ getDataForRoadPoint(roadPoint) {
|
|
|
+ const data = {};
|
|
|
+ data.id = roadPoint.vectorId;
|
|
|
+ data.type = roadPoint.geoType;
|
|
|
+ data.position = {};
|
|
|
+ mathUtil.clonePoint(data.position, roadPoint);
|
|
|
+ data.parent = JSON.parse(JSON.stringify(roadPoint.parent));
|
|
|
+ return data;
|
|
|
+ }
|
|
|
+
|
|
|
+ getDataForRoadEdge(roadEdge) {
|
|
|
+ const data = {};
|
|
|
+ data.id = roadEdge.vectorId;
|
|
|
+ data.type = roadEdge.geoType;
|
|
|
+ data.parent = roadEdge.parent;
|
|
|
+ data.start = {};
|
|
|
+ data.start = JSON.parse(JSON.stringify(roadEdge.start));
|
|
|
+ data.end = {};
|
|
|
+ data.end = JSON.parse(JSON.stringify(roadEdge.end));
|
|
|
+ return data;
|
|
|
+ }
|
|
|
+
|
|
|
+ getDataForRoad(road) {
|
|
|
+ const data = {};
|
|
|
+ data.id = road.vectorId;
|
|
|
+ data.type = road.geoType;
|
|
|
+ data.startId = road.startId;
|
|
|
+ data.endId = road.endId;
|
|
|
+ data.leftEdgeId = road.leftEdgeId;
|
|
|
+ data.rightEdgeId = road.rightEdgeId;
|
|
|
+ data.way = road.way;
|
|
|
+ if (road.way == Constant.oneWay) {
|
|
|
+ data.singleRoadWidth = road.singleRoadWidth;
|
|
|
+ data.singleRoadDrivewayCount = road.singleRoadDrivewayCount;
|
|
|
+ data.singleLanes = JSON.parse(JSON.stringify(road.singleLanes));
|
|
|
+ } else if (road.way == Constant.twoWay) {
|
|
|
+ data.leftWidth = road.leftWidth;
|
|
|
+ data.rightWidth = road.rightWidth;
|
|
|
+ data.leftDrivewayCount = road.leftDrivewayCount;
|
|
|
+ data.rightDrivewayCount = road.rightDrivewayCount;
|
|
|
+ data.midDivide = JSON.parse(JSON.stringify(road.midDivide));
|
|
|
+ data.leftLanes = JSON.parse(JSON.stringify(road.leftLanes));
|
|
|
+ data.rightLanes = JSON.parse(JSON.stringify(road.rightLanes));
|
|
|
+ }
|
|
|
+ return data;
|
|
|
+ }
|
|
|
|
|
|
setPointInfo(pointInfo) {
|
|
|
let point = dataService.getPoint(pointInfo.vectorId);
|
|
@@ -266,6 +411,44 @@ export default class HistoryUtil {
|
|
|
svg.center = JSON.parse(JSON.stringify(svgInfo.center));
|
|
|
svg.name = svgInfo.name;
|
|
|
}
|
|
|
+
|
|
|
+ setRoadPointInfo(roadPointInfo) {
|
|
|
+ let roadPoint = dataService.getRoadPoint(roadPointInfo.vectorId);
|
|
|
+ roadPoint.vectorId = roadPointInfo.vectorId;
|
|
|
+ mathUtil.clonePoint(roadPoint, roadPointInfo.position);
|
|
|
+ roadPoint.parent = JSON.parse(JSON.stringify(roadPointInfo.parent));
|
|
|
+ }
|
|
|
+
|
|
|
+ setRoadEdgeInfo(roadEdgeInfo) {
|
|
|
+ let roadEdge = dataService.getRoadEdge(roadEdgeInfo.vectorId);
|
|
|
+ roadEdge.vectorId = roadEdgeInfo.vectorId;
|
|
|
+ mathUtil.clonePoint(roadEdge.start, roadEdgeInfo.start);
|
|
|
+ mathUtil.clonePoint(roadEdge.end, roadEdgeInfo.end);
|
|
|
+ roadEdge.name = roadEdgeInfo.name;
|
|
|
+ }
|
|
|
+
|
|
|
+ setRoadInfo(roadInfo) {
|
|
|
+ let road = dataService.getRoad(roadInfo.vectorId);
|
|
|
+ road.vectorId = roadInfo.vectorId;
|
|
|
+ road.startId = roadInfo.startId;
|
|
|
+ road.endId = roadInfo.endId;
|
|
|
+ road.leftEdgeId = roadInfo.leftEdgeId;
|
|
|
+ road.rightEdgeId = roadInfo.rightEdgeId;
|
|
|
+ road.way = roadInfo.way;
|
|
|
+ if (road.way == Constant.oneWay) {
|
|
|
+ road.singleRoadWidth = roadInfo.singleRoadWidth;
|
|
|
+ road.singleRoadDrivewayCount = roadInfo.singleRoadDrivewayCount;
|
|
|
+ road.singleLanes = JSON.parse(JSON.stringify(roadInfo.singleLanes));
|
|
|
+ } else if (road.way == Constant.twoWay) {
|
|
|
+ road.leftWidth = roadInfo.leftWidth;
|
|
|
+ road.rightWidth = roadInfo.rightWidth;
|
|
|
+ road.leftDrivewayCount = roadInfo.leftDrivewayCount;
|
|
|
+ road.rightDrivewayCount = roadInfo.rightDrivewayCount;
|
|
|
+ road.midDivide = JSON.parse(JSON.stringify(roadInfo.midDivide));
|
|
|
+ road.leftLanes = JSON.parse(JSON.stringify(roadInfo.leftLanes));
|
|
|
+ road.rightLanes = JSON.parse(JSON.stringify(roadInfo.rightLanes));
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
const historyUtil = new HistoryUtil();
|