HistoryUtil.js 33 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003
  1. import { mathUtil } from "../Util/MathUtil";
  2. import { dataService } from "../Service/DataService";
  3. import { textService } from "../Service/TextService";
  4. import Constant from "../Constant";
  5. import Settings from "../Settings";
  6. export default class HistoryUtil {
  7. constructor() {}
  8. isDifferentForPoints(point1, point2) {
  9. if (
  10. point1.x == point2.x &&
  11. point1.y == point2.y &&
  12. mathUtil.equalJSON(point1.parent, point1.parent) &&
  13. point1.category == point2.category &&
  14. point1.locationMode == point2.locationMode &&
  15. point1.linkedBasePointId == point2.linkedBasePointId &&
  16. point1.linkedTestPointId == point2.linkedTestPointId
  17. ) {
  18. return false;
  19. } else {
  20. return true;
  21. }
  22. }
  23. isDifferentForLines(line1, line2) {
  24. if (
  25. line1.startId == line2.startId &&
  26. line1.endId == line2.endId &&
  27. line1.category == line2.category &&
  28. line1.locationMode == line2.locationMode
  29. ) {
  30. return false;
  31. } else {
  32. return true;
  33. }
  34. }
  35. isDifferentForCurvePoints(curvePoint1, curvePoint2) {
  36. if (
  37. curvePoint1.x == curvePoint2.x &&
  38. curvePoint1.y == curvePoint2.y &&
  39. curvePoint1.parent == curvePoint2.parent &&
  40. curvePoint1.index == curvePoint2.index
  41. ) {
  42. return false;
  43. } else {
  44. return true;
  45. }
  46. }
  47. isDifferentForCurveLines(curveLine1, curveLine2) {
  48. if (
  49. curveLine1.startId == curveLine2.startId &&
  50. curveLine1.endId == curveLine2.endId &&
  51. mathUtil.equalJSON(curveLine1.points, curveLine2.points)
  52. ) {
  53. return false;
  54. } else {
  55. return true;
  56. }
  57. }
  58. isDifferentForCircles(circle1, circle2) {
  59. if (
  60. mathUtil.equalPoint(circle1.center, circle2.center) &&
  61. circle1.radiusX == circle2.radiusX &&
  62. circle1.radiusY == circle2.radiusY &&
  63. circle1.color == circle2.color
  64. ) {
  65. return false;
  66. } else {
  67. return true;
  68. }
  69. }
  70. isDifferentForTexts(text1, text2) {
  71. if (
  72. mathUtil.equalPoint(text1.center, text2.center) &&
  73. text1.value == text2.value &&
  74. text1.angle == text2.angle &&
  75. text1.fontSize == text2.fontSize &&
  76. text1.color == text2.color
  77. ) {
  78. return false;
  79. } else {
  80. return true;
  81. }
  82. }
  83. isDifferentForMagnifiers(magnifier1, magnifier2) {
  84. if (
  85. mathUtil.equalPoint(magnifier1.position, magnifier2.position) &&
  86. magnifier1.photoUrl == magnifier2.photoUrl &&
  87. mathUtil.equalPoint(magnifier1.popPosition, magnifier2.popPosition)
  88. ) {
  89. return false;
  90. } else {
  91. return true;
  92. }
  93. }
  94. isDifferentForSVGs(svg1, svg2) {
  95. if (
  96. mathUtil.equalPoint(svg1.center, svg2.center) &&
  97. svg1.type == svg2.type &&
  98. svg1.angle == svg2.angle &&
  99. svg1.scale == svg2.scale
  100. ) {
  101. return false;
  102. } else {
  103. return true;
  104. }
  105. }
  106. isDifferentForRoadPoints(roadPoint1, roadPoint2) {
  107. if (
  108. mathUtil.equalPoint(roadPoint1, roadPoint2) &&
  109. mathUtil.equalJSON(roadPoint1.parent, roadPoint2.parent)
  110. ) {
  111. return false;
  112. } else {
  113. return true;
  114. }
  115. }
  116. isDifferentForRoadEdges(roadEdge1, roadEdge2) {
  117. if (
  118. mathUtil.equalPoint(roadEdge1.start, roadEdge2.start) &&
  119. mathUtil.equalPoint(roadEdge1.end, roadEdge2.end) &&
  120. roadEdge1.parent == roadEdge2.parent &&
  121. roadEdge1.style == roadEdge2.style
  122. ) {
  123. return false;
  124. } else {
  125. return true;
  126. }
  127. }
  128. isDifferentForRoads(road1, road2) {
  129. if (
  130. road1.startId == road2.startId &&
  131. road1.endId == road2.endId &&
  132. road1.leftEdgeId == road2.leftEdgeId &&
  133. road1.rightEdgeId == road2.rightEdgeId &&
  134. road1.way == road2.way
  135. ) {
  136. if (road1.way == Constant.oneWay) {
  137. if (
  138. road1.singleRoadWidth == road2.singleRoadWidth &&
  139. road1.singleRoadDrivewayCount == road2.singleRoadDrivewayCount &&
  140. road1.singleLanes.length == road2.singleLanes.length
  141. ) {
  142. for (let i = 0; i < road1.singleLanes.length; ++i) {
  143. if (
  144. !mathUtil.equalPoint(
  145. road1.singleLanes[i].start,
  146. road2.singleLanes[i].start
  147. ) ||
  148. !mathUtil.equalPoint(
  149. road1.singleLanes[i].end,
  150. road2.singleLanes[i].end
  151. )
  152. ) {
  153. return true;
  154. }
  155. }
  156. return false;
  157. } else {
  158. return true;
  159. }
  160. } else if (road1.way == Constant.twoWay) {
  161. if (
  162. road1.leftWidth == road2.leftWidth &&
  163. road1.rightWidth == road2.rightWidth &&
  164. road1.leftDrivewayCount == road2.leftDrivewayCount &&
  165. road1.rightDrivewayCount == road2.rightDrivewayCount &&
  166. road1.midDivide.midDivideWidth == road2.midDivide.midDivideWidth &&
  167. mathUtil.clonePoint(
  168. road1.midDivide.leftMidDivide.start,
  169. road2.midDivide.leftMidDivide.start
  170. ) &&
  171. mathUtil.clonePoint(
  172. road1.midDivide.leftMidDivide.end,
  173. road2.midDivide.leftMidDivide.end
  174. ) &&
  175. mathUtil.clonePoint(
  176. road1.midDivide.rightMidDivide.start,
  177. road2.midDivide.rightMidDivide.start
  178. ) &&
  179. mathUtil.clonePoint(
  180. road1.midDivide.rightMidDivide.end,
  181. road2.midDivide.rightMidDivide.end
  182. ) &&
  183. road1.leftLanes.length == road2.leftLanes.length &&
  184. road1.rightLanes.length == road2.rightLanes.length
  185. ) {
  186. for (let i = 0; i < road1.leftLanes.length; ++i) {
  187. if (
  188. !mathUtil.equalPoint(
  189. road1.leftLanes[i].start,
  190. road2.leftLanes[i].start
  191. ) ||
  192. !mathUtil.equalPoint(
  193. road1.leftLanes[i].end,
  194. road2.leftLanes[i].end
  195. )
  196. ) {
  197. return true;
  198. }
  199. }
  200. for (let i = 0; i < road1.rightLanes.length; ++i) {
  201. if (
  202. !mathUtil.equalPoint(
  203. road1.rightLanes[i].start,
  204. road2.rightLanes[i].start
  205. ) ||
  206. !mathUtil.equalPoint(
  207. road1.rightLanes[i].end,
  208. road2.rightLanes[i].end
  209. )
  210. ) {
  211. return true;
  212. }
  213. }
  214. return false;
  215. } else {
  216. return true;
  217. }
  218. } else {
  219. return true;
  220. }
  221. } else {
  222. return true;
  223. }
  224. }
  225. isDifferentForCurveRoadPoints(curveRoadPoint1, curveRoadPoint2) {
  226. if (
  227. mathUtil.equalPoint(curveRoadPoint1, curveRoadPoint2) &&
  228. mathUtil.equalJSON(curveRoadPoint1.parent, curveRoadPoint2.parent) &&
  229. curveRoadPoint1.index == curveRoadPoint2.index
  230. ) {
  231. return false;
  232. } else {
  233. return true;
  234. }
  235. }
  236. isDifferentForCurveRoadEdges(curveRoadEdge1, curveRoadEdge2) {
  237. if (
  238. mathUtil.equalPoint(curveRoadEdge1.start, curveRoadEdge2.start) &&
  239. mathUtil.equalPoint(curveRoadEdge1.end, curveRoadEdge2.end) &&
  240. mathUtil.equalPoints(curveRoadEdge1.points, curveRoadEdge2.points) &&
  241. curveRoadEdge1.parent == curveRoadEdge2.parent &&
  242. curveRoadEdge1.style == curveRoadEdge2.style
  243. ) {
  244. return false;
  245. } else {
  246. return true;
  247. }
  248. }
  249. isDifferentForCurveRoads(curveRoad1, curveRoad2) {
  250. if (
  251. curveRoad1.startId == curveRoad2.startId &&
  252. curveRoad1.endId == curveRoad2.endId &&
  253. mathUtil.equalPoints(curveRoad1.points, curveRoad2.points) &&
  254. curveRoad1.leftEdgeId == curveRoad2.leftEdgeId &&
  255. curveRoad1.rightEdgeId == curveRoad2.rightEdgeId &&
  256. curveRoad1.way == curveRoad2.way
  257. ) {
  258. if (curveRoad1.way == Constant.oneWay) {
  259. if (
  260. curveRoad1.singleRoadWidth == curveRoad2.singleRoadWidth &&
  261. curveRoad1.singleRoadDrivewayCount ==
  262. curveRoad2.singleRoadDrivewayCount
  263. ) {
  264. return false;
  265. } else {
  266. return true;
  267. }
  268. } else if (curveRoad1.way == Constant.twoWay) {
  269. if (
  270. curveRoad1.leftWidth == curveRoad2.leftWidth &&
  271. curveRoad1.rightWidth == curveRoad2.rightWidth &&
  272. curveRoad1.leftDrivewayCount == curveRoad2.leftDrivewayCount &&
  273. curveRoad1.rightDrivewayCount == curveRoad2.rightDrivewayCount &&
  274. curveRoad1.midDivide.midDivideWidth ==
  275. curveRoad2.midDivide.midDivideWidth
  276. ) {
  277. return false;
  278. } else {
  279. return true;
  280. }
  281. } else {
  282. return true;
  283. }
  284. } else {
  285. return true;
  286. }
  287. }
  288. isDifferentForCrossPoints(crossPoint1, crossPoint2) {
  289. if (
  290. mathUtil.equalPoint(crossPoint1, crossPoint2) &&
  291. mathUtil.equalPoint(crossPoint1.extremePoint, crossPoint2.extremePoint) &&
  292. crossPoint1.edgeInfo1.id == crossPoint2.edgeInfo1.id &&
  293. crossPoint1.edgeInfo1.dir == crossPoint2.edgeInfo1.dir &&
  294. crossPoint1.edgeInfo2.id == crossPoint2.edgeInfo2.id &&
  295. crossPoint1.edgeInfo2.dir == crossPoint2.edgeInfo2.dir
  296. ) {
  297. return false;
  298. } else {
  299. return true;
  300. }
  301. }
  302. isDifferentForSettings(settings1, settings2) {
  303. if (
  304. settings1.selectLineCategory == settings2.selectLineCategory &&
  305. settings1.selectPointCategory == settings2.selectPointCategory &&
  306. settings1.selectLocationMode == settings2.selectLocationMode &&
  307. settings1.baseLineId == settings2.baseLineId &&
  308. settings1.selectBasePointId == settings2.selectBasePointId
  309. ) {
  310. return false;
  311. } else {
  312. return true;
  313. }
  314. }
  315. assignPointFromPoint(point1, point2) {
  316. const pointInfo = {};
  317. pointInfo.vectorId = point1.vectorId;
  318. pointInfo.position = { x: point2.x, y: point2.y };
  319. pointInfo.parent = JSON.parse(JSON.stringify(point2.parent));
  320. pointInfo.locationMode = point2.locationMode;
  321. pointInfo.linkedBasePointId = point2.linkedBasePointId;
  322. pointInfo.linkedTestPointId = point2.linkedTestPointId;
  323. pointInfo.category = point2.category;
  324. this.setPointInfo(pointInfo);
  325. }
  326. assignLineFromLine(line1, line2) {
  327. const lineInfo = {};
  328. lineInfo.vectorId = line1.vectorId;
  329. lineInfo.start = line2.start;
  330. lineInfo.end = line2.end;
  331. lineInfo.category = line2.category;
  332. lineInfo.locationMode = line2.locationMode;
  333. lineInfo.value = line2.value;
  334. this.setLineInfo(lineInfo);
  335. }
  336. assignCurvePointFromCurvePoint(curvePoint1, curvePoint2) {
  337. const curvePointInfo = {};
  338. curvePointInfo.vectorId = curvePoint1.vectorId;
  339. curvePointInfo.position = { x: curvePoint2.x, y: curvePoint2.y };
  340. curvePointInfo.parent = curvePoint2.parent;
  341. curvePointInfo.index = curvePoint2.index;
  342. this.setCurvePointInfo(curvePointInfo);
  343. }
  344. assignCurveLineFromCurveLine(curveLine1, curveLine2) {
  345. const curveLineInfo = {};
  346. curveLineInfo.vectorId = curveLine1.vectorId;
  347. curveLineInfo.startId = curveLine2.startId;
  348. curveLineInfo.endId = curveLine2.endId;
  349. curveLineInfo.points = JSON.parse(JSON.stringify(curveLine2.points));
  350. curveLineInfo.curves = JSON.parse(JSON.stringify(curveLine2.curves));
  351. this.setCurveLineInfo(curveLineInfo);
  352. }
  353. assignCircleFromCircle(circle1, circle2) {
  354. const circleInfo = {};
  355. circleInfo.vectorId = circle1.vectorId;
  356. circleInfo.center = circle2.center;
  357. circleInfo.radiusX = circle2.radiusX;
  358. circleInfo.radiusY = circle2.radiusY;
  359. circleInfo.points = JSON.parse(JSON.stringify(circle2.points));
  360. circleInfo.color = circle2.color;
  361. this.setCircleInfo(circleInfo);
  362. }
  363. assignTextFromText(text1, text2) {
  364. const textInfo = {};
  365. textInfo.vectorId = text1.vectorId;
  366. textInfo.value = text2.value;
  367. textInfo.center = JSON.parse(JSON.stringify(text2.center));
  368. textInfo.angle = text2.angle;
  369. textInfo.color = text2.color;
  370. textInfo.fontSize = text2.fontSize;
  371. this.setTextInfo(textInfo);
  372. }
  373. assignMagnifierFromMagnifier(magnifier1, magnifier2) {
  374. const magnifierInfo = {};
  375. magnifierInfo.vectorId = magnifier1.vectorId;
  376. magnifierInfo.photoUrl = magnifier2.photoUrl;
  377. magnifierInfo.position = JSON.parse(JSON.stringify(magnifier2.position));
  378. magnifierInfo.popPosition = JSON.parse(
  379. JSON.stringify(magnifier2.popPosition)
  380. );
  381. this.setMagnifierInfo(magnifierInfo);
  382. }
  383. assignSVGFromSVG(svg1, svg2) {
  384. const svgInfo = {};
  385. svgInfo.vectorId = svg1.vectorId;
  386. svgInfo.type = svg2.type;
  387. svgInfo.center = JSON.parse(JSON.stringify(svg2.center));
  388. svgInfo.points = JSON.parse(JSON.stringify(svg2.points));
  389. svgInfo.angle = svg2.angle;
  390. svgInfo.scale = svg2.scale;
  391. this.setSVGInfo(svgInfo);
  392. }
  393. assignRoadPointFromRoadPoint(roadPoint1, roadPoint2) {
  394. const roadPointInfo = {};
  395. roadPointInfo.vectorId = roadPoint1.vectorId;
  396. roadPointInfo.position = {
  397. x: roadPoint2.position.x,
  398. y: roadPoint2.position.y,
  399. };
  400. roadPointInfo.parent = JSON.parse(JSON.stringify(roadPoint2.parent));
  401. this.setRoadPointInfo(roadPointInfo);
  402. }
  403. assignRoadEdgeFromRoadEdge(roadEdge1, roadEdge2) {
  404. const roadEdgeInfo = {};
  405. roadEdgeInfo.vectorId = roadEdge1.vectorId;
  406. roadEdgeInfo.style = roadEdge2.style;
  407. roadEdgeInfo.start = { x: roadEdge2.start.x, y: roadEdge2.start.y };
  408. roadEdgeInfo.end = { x: roadEdge2.end.x, y: roadEdge2.end.y };
  409. roadEdgeInfo.parent = roadEdge2.parent;
  410. this.setRoadEdgeInfo(roadEdgeInfo);
  411. }
  412. assignRoadFromRoad(road1, road2) {
  413. const roadInfo = {};
  414. roadInfo.vectorId = road1.vectorId;
  415. roadInfo.startId = road2.startId;
  416. roadInfo.endId = road2.endId;
  417. roadInfo.leftEdgeId = road2.leftEdgeId;
  418. roadInfo.rightEdgeId = road2.rightEdgeId;
  419. roadInfo.way = road2.way;
  420. if (road2.way == Constant.oneWay) {
  421. roadInfo.singleRoadWidth = road2.singleRoadWidth;
  422. roadInfo.singleRoadDrivewayCount = road2.singleRoadDrivewayCount;
  423. roadInfo.singleLanes = JSON.parse(JSON.stringify(road2.singleLanes));
  424. } else if (road2.way == Constant.twoWay) {
  425. roadInfo.leftWidth = road2.leftWidth;
  426. roadInfo.rightWidth = road2.rightWidth;
  427. roadInfo.leftDrivewayCount = road2.leftDrivewayCount;
  428. roadInfo.rightDrivewayCount = road2.rightDrivewayCount;
  429. roadInfo.midDivide = JSON.parse(JSON.stringify(road2.midDivide));
  430. roadInfo.leftLanes = JSON.parse(JSON.stringify(road2.leftLanes));
  431. roadInfo.rightLanes = JSON.parse(JSON.stringify(road2.rightLanes));
  432. }
  433. this.setRoadInfo(roadInfo);
  434. }
  435. assignCurveRoadPointFromCurveRoadPoint(curveRoadPoint1, curveRoadPoint2) {
  436. const curveRoadPointInfo = {};
  437. curveRoadPointInfo.vectorId = curveRoadPoint1.vectorId;
  438. curveRoadPointInfo.position = {
  439. x: curveRoadPoint2.position.x,
  440. y: curveRoadPoint2.position.y,
  441. };
  442. curveRoadPointInfo.parent = JSON.parse(
  443. JSON.stringify(curveRoadPoint2.parent)
  444. );
  445. curveRoadPointInfo.index = curveRoadPoint2.index;
  446. this.setCurveRoadPointInfo(curveRoadPointInfo);
  447. }
  448. assignCurveRoadEdgeFromCurveRoadEdge(curveRoadEdge1, curveRoadEdge2) {
  449. const curveRoadEdgeInfo = {};
  450. curveRoadEdgeInfo.vectorId = curveRoadEdge1.vectorId;
  451. curveRoadEdgeInfo.start = {
  452. x: curveRoadEdge2.start.x,
  453. y: curveRoadEdge2.start.y,
  454. };
  455. curveRoadEdgeInfo.end = {
  456. x: curveRoadEdge2.end.x,
  457. y: curveRoadEdge2.end.y,
  458. };
  459. curveRoadEdgeInfo.points = JSON.parse(
  460. JSON.stringify(curveRoadEdge2.points)
  461. );
  462. curveRoadEdgeInfo.curves = JSON.parse(
  463. JSON.stringify(curveRoadEdge2.curves)
  464. );
  465. curveRoadEdgeInfo.parent = curveRoadEdge2.parent;
  466. curveRoadEdgeInfo.style = curveRoadEdge2.style;
  467. this.setCurveRoadEdgeInfo(curveRoadEdgeInfo);
  468. }
  469. assignCurveRoadFromCurveRoad(curveRoad1, curveRoad2) {
  470. const curveRoadInfo = {};
  471. curveRoadInfo.vectorId = curveRoad1.vectorId;
  472. curveRoadInfo.startId = curveRoad2.startId;
  473. curveRoadInfo.endId = curveRoad2.endId;
  474. curveRoadInfo.leftEdgeId = curveRoad2.leftEdgeId;
  475. curveRoadInfo.rightEdgeId = curveRoad2.rightEdgeId;
  476. curveRoadInfo.points = JSON.parse(JSON.stringify(curveRoad2.points));
  477. curveRoadInfo.curves = JSON.parse(JSON.stringify(curveRoad2.curves));
  478. curveRoadInfo.way = curveRoad2.way;
  479. if (curveRoad2.way == Constant.oneWay) {
  480. curveRoadInfo.singleCurveRoadWidth = curveRoad2.singleCurveRoadWidth;
  481. curveRoadInfo.singleCurveRoadDrivewayCount =
  482. curveRoad2.singleCurveRoadDrivewayCount;
  483. curveRoadInfo.singleLanesCurves = JSON.parse(
  484. JSON.stringify(curveRoad2.singleLanesCurves)
  485. );
  486. } else if (curveRoad2.way == Constant.twoWay) {
  487. curveRoadInfo.leftWidth = curveRoad2.leftWidth;
  488. curveRoadInfo.rightWidth = curveRoad2.rightWidth;
  489. curveRoadInfo.leftDrivewayCount = curveRoad2.leftDrivewayCount;
  490. curveRoadInfo.rightDrivewayCount = curveRoad2.rightDrivewayCount;
  491. curveRoadInfo.midDivide = JSON.parse(
  492. JSON.stringify(curveRoad2.midDivide)
  493. );
  494. curveRoadInfo.leftLanesCurves = JSON.parse(
  495. JSON.stringify(curveRoad2.leftLanesCurves)
  496. );
  497. curveRoadInfo.rightLanesCurves = JSON.parse(
  498. JSON.stringify(curveRoad2.rightLanesCurves)
  499. );
  500. }
  501. curveRoadInfo.points = [];
  502. for (let i = 0; i < curveRoad2.points.length; ++i) {
  503. curveRoadInfo.points[i] = {};
  504. // curveRoadInfo.points[i].vectorId = curveRoad2.points[i].vectorId;
  505. curveRoadInfo.points[i] = curveRoad2.points[i];
  506. }
  507. this.setCurveRoadInfo(curveRoadInfo);
  508. }
  509. assignCrossPointFromCrossPoint(crossPoint1, crossPoint2) {
  510. const crossPointInfo = {};
  511. crossPointInfo.vectorId = crossPoint1.vectorId;
  512. crossPointInfo.position = {
  513. x: crossPoint2.position.x,
  514. y: crossPoint2.position.y,
  515. };
  516. crossPointInfo.edgeInfo1 = JSON.parse(
  517. JSON.stringify(crossPoint2.edgeInfo1)
  518. );
  519. crossPointInfo.edgeInfo2 = JSON.parse(
  520. JSON.stringify(crossPoint2.edgeInfo2)
  521. );
  522. crossPoint1.edgeInfo1 = JSON.parse(JSON.stringify(crossPoint2.edgeInfo1));
  523. crossPoint1.edgeInfo2 = JSON.parse(JSON.stringify(crossPoint2.edgeInfo2));
  524. dataService.addCrossPoint(crossPoint1);
  525. crossPointInfo.extremePoint = {
  526. x: crossPoint2.extremePoint.x,
  527. y: crossPoint2.extremePoint.y,
  528. };
  529. crossPointInfo.curves = JSON.parse(JSON.stringify(crossPoint2.curves));
  530. this.setCrossPointInfo(crossPointInfo);
  531. }
  532. assignSettingsFromSettings(settings1, settings2) {
  533. settings1.selectLineCategory = settings2.selectLineCategory;
  534. settings1.selectPointCategory = settings2.selectPointCategory;
  535. settings1.selectLocationMode = settings2.selectLocationMode;
  536. settings1.baseLineId = settings2.baseLineId;
  537. settings1.selectBasePointId = settings2.selectBasePointId;
  538. }
  539. getDataForPoint(point) {
  540. const data = {};
  541. data.id = point.vectorId;
  542. mathUtil.clonePoint(data, point);
  543. data.parent = JSON.parse(JSON.stringify(point.parent));
  544. data.category = point.category;
  545. data.locationMode = point.locationMode;
  546. data.linkedBasePointId = point.linkedBasePointId;
  547. data.linkedTestPointId = point.linkedTestPointId;
  548. data.type = point.geoType;
  549. return data;
  550. }
  551. getDataForLine(line) {
  552. const data = {};
  553. data.id = line.vectorId;
  554. data.start = line.startId;
  555. data.end = line.endId;
  556. data.category = line.category;
  557. data.locationMode = line.locationMode;
  558. data.type = line.geoType;
  559. return data;
  560. }
  561. getDataForCurvePoint(curvePoint) {
  562. const data = {};
  563. data.id = curvePoint.vectorId;
  564. mathUtil.clonePoint(data, curvePoint);
  565. data.parent = curvePoint.parent;
  566. data.index = curvePoint.index;
  567. data.type = curvePoint.geoType;
  568. return data;
  569. }
  570. getDataForCurveLine(curveLine) {
  571. const data = {};
  572. data.id = curveLine.vectorId;
  573. data.startId = curveLine.startId;
  574. data.endId = curveLine.endId;
  575. data.points = JSON.parse(JSON.stringify(curveLine.points));
  576. data.curves = JSON.parse(JSON.stringify(curveLine.curves));
  577. data.type = curveLine.geoType;
  578. return data;
  579. }
  580. getDataForCircle(circle) {
  581. const data = {};
  582. data.id = circle.vectorId;
  583. data.center = {};
  584. mathUtil.clonePoint(data.center, circle.center);
  585. data.radiusX = circle.radiusX;
  586. data.radiusY = circle.radiusY;
  587. data.points = circle.points;
  588. data.color = circle.color;
  589. data.type = circle.geoType;
  590. return data;
  591. }
  592. getDataForText(text) {
  593. const data = {};
  594. data.id = text.vectorId;
  595. data.type = text.geoType;
  596. data.angle = text.angle;
  597. data.center = {};
  598. mathUtil.clonePoint(data.center, text.center);
  599. data.value = text.value;
  600. data.fontSize = text.fontSize
  601. data.color = text.color
  602. return data;
  603. }
  604. getDataForMagnifier(magnifier) {
  605. const data = {};
  606. data.id = magnifier.vectorId;
  607. data.type = magnifier.geoType;
  608. data.position = {};
  609. data.popPosition = {};
  610. mathUtil.clonePoint(data.position, magnifier.position);
  611. mathUtil.clonePoint(data.popPosition, magnifier.popPosition);
  612. data.photoUrl = magnifier.photoUrl;
  613. return data;
  614. }
  615. getDataForSVG(svg) {
  616. const data = {};
  617. data.id = svg.vectorId;
  618. data.type = svg.geoType;
  619. data.center = {};
  620. mathUtil.clonePoint(data.center, svg.center);
  621. data.points = [];
  622. data.points[0] = {};
  623. mathUtil.clonePoint(data.points[0], svg.points[0]);
  624. data.points[1] = {};
  625. mathUtil.clonePoint(data.points[1], svg.points[1]);
  626. data.points[2] = {};
  627. mathUtil.clonePoint(data.points[2], svg.points[2]);
  628. data.points[3] = {};
  629. mathUtil.clonePoint(data.points[3], svg.points[3]);
  630. data.type = svg.type;
  631. data.angle = svg.angle;
  632. data.scale = svg.scale;
  633. return data;
  634. }
  635. getDataForRoadPoint(roadPoint) {
  636. const data = {};
  637. data.id = roadPoint.vectorId;
  638. data.type = roadPoint.geoType;
  639. data.position = {};
  640. mathUtil.clonePoint(data.position, roadPoint);
  641. data.parent = JSON.parse(JSON.stringify(roadPoint.parent));
  642. return data;
  643. }
  644. getDataForRoadEdge(roadEdge) {
  645. const data = {};
  646. data.id = roadEdge.vectorId;
  647. data.type = roadEdge.geoType;
  648. data.parent = roadEdge.parent;
  649. data.start = {};
  650. data.start = JSON.parse(JSON.stringify(roadEdge.start));
  651. data.end = {};
  652. data.end = JSON.parse(JSON.stringify(roadEdge.end));
  653. return data;
  654. }
  655. getDataForRoad(road) {
  656. const data = {};
  657. data.id = road.vectorId;
  658. data.type = road.geoType;
  659. data.startId = road.startId;
  660. data.endId = road.endId;
  661. data.leftEdgeId = road.leftEdgeId;
  662. data.rightEdgeId = road.rightEdgeId;
  663. data.way = road.way;
  664. if (road.way == Constant.oneWay) {
  665. data.singleRoadWidth = road.singleRoadWidth;
  666. data.singleRoadDrivewayCount = road.singleRoadDrivewayCount;
  667. data.singleLanes = JSON.parse(JSON.stringify(road.singleLanes));
  668. } else if (road.way == Constant.twoWay) {
  669. data.leftWidth = road.leftWidth;
  670. data.rightWidth = road.rightWidth;
  671. data.leftDrivewayCount = road.leftDrivewayCount;
  672. data.rightDrivewayCount = road.rightDrivewayCount;
  673. data.midDivide = JSON.parse(JSON.stringify(road.midDivide));
  674. data.leftLanes = JSON.parse(JSON.stringify(road.leftLanes));
  675. data.rightLanes = JSON.parse(JSON.stringify(road.rightLanes));
  676. }
  677. return data;
  678. }
  679. getDataForCurveRoadPoint(curveRoadPoint) {
  680. const data = {};
  681. data.id = curveRoadPoint.vectorId;
  682. data.type = curveRoadPoint.geoType;
  683. data.position = {};
  684. mathUtil.clonePoint(data.position, curveRoadPoint);
  685. data.parent = curveRoadPoint.parent;
  686. data.index = curveRoadPoint.index;
  687. return data;
  688. }
  689. getDataForCurveRoadEdge(curveRoadEdge) {
  690. const data = {};
  691. data.id = curveRoadEdge.vectorId;
  692. data.type = curveRoadEdge.geoType;
  693. data.parent = curveRoadEdge.parent;
  694. data.start = JSON.parse(JSON.stringify(curveRoadEdge.start));
  695. data.end = JSON.parse(JSON.stringify(curveRoadEdge.end));
  696. data.points = JSON.parse(JSON.stringify(curveRoadEdge.points));
  697. data.curves = JSON.parse(JSON.stringify(curveRoadEdge.curves));
  698. return data;
  699. }
  700. getDataForCurveRoad(curveRoad) {
  701. const data = {};
  702. data.id = curveRoad.vectorId;
  703. data.type = curveRoad.geoType;
  704. data.startId = curveRoad.startId;
  705. data.endId = curveRoad.endId;
  706. data.leftEdgeId = curveRoad.leftEdgeId;
  707. data.rightEdgeId = curveRoad.rightEdgeId;
  708. data.points = JSON.parse(JSON.stringify(curveRoad.points));
  709. data.curves = JSON.parse(JSON.stringify(curveRoad.curves));
  710. data.way = curveRoad.way;
  711. if (curveRoad.way == Constant.oneWay) {
  712. data.singleCurveRoadWidth = curveRoad.singleRoadWidth;
  713. data.singleCurveRoadDrivewayCount = curveRoad.singleRoadDrivewayCount;
  714. data.singleLanesCurves = JSON.parse(
  715. JSON.stringify(curveRoad.singleLanesCurves)
  716. );
  717. } else if (curveRoad.way == Constant.twoWay) {
  718. data.leftWidth = curveRoad.leftWidth;
  719. data.rightWidth = curveRoad.rightWidth;
  720. data.leftDrivewayCount = curveRoad.leftDrivewayCount;
  721. data.rightDrivewayCount = curveRoad.rightDrivewayCount;
  722. data.midDivide = JSON.parse(JSON.stringify(curveRoad.midDivide));
  723. data.leftLanesCurves = JSON.parse(
  724. JSON.stringify(curveRoad.leftLanesCurves)
  725. );
  726. data.rightLanesCurves = JSON.parse(
  727. JSON.stringify(curveRoad.rightLanesCurves)
  728. );
  729. }
  730. return data;
  731. }
  732. getDataForCrossPoint(crossPoint) {
  733. const data = {};
  734. data.id = crossPoint.vectorId;
  735. data.type = crossPoint.geoType;
  736. data.position = {};
  737. mathUtil.clonePoint(data.position, crossPoint);
  738. data.extremePoint = {};
  739. mathUtil.clonePoint(data.extremePoint, crossPoint.extremePoint);
  740. data.edgeInfo1 = JSON.parse(JSON.stringify(crossPoint.edgeInfo1));
  741. data.edgeInfo2 = JSON.parse(JSON.stringify(crossPoint.edgeInfo2));
  742. data.curves = JSON.parse(JSON.stringify(crossPoint.curves));
  743. return data;
  744. }
  745. getDataForSettings(settings) {
  746. const data = {};
  747. data.selectLineCategory = settings.selectLineCategory;
  748. data.selectPointCategory = settings.selectPointCategory;
  749. data.selectLocationMode = settings.selectLocationMode;
  750. data.baseLineId = settings.baseLineId;
  751. data.selectBasePointId = settings.selectBasePointId;
  752. return data;
  753. }
  754. setPointInfo(pointInfo) {
  755. let point = dataService.getPoint(pointInfo.vectorId);
  756. mathUtil.clonePoint(point, pointInfo.position);
  757. point.parent = JSON.parse(JSON.stringify(pointInfo.parent));
  758. point.category = pointInfo.category;
  759. point.locationMode = pointInfo.locationMode;
  760. point.linkedBasePointId = pointInfo.linkedBasePointId;
  761. point.linkedTestPointId = pointInfo.linkedTestPointId;
  762. return point;
  763. }
  764. setLineInfo(lineInfo) {
  765. let line = dataService.getLine(lineInfo.vectorId);
  766. line.startId = lineInfo.start;
  767. line.endId = lineInfo.end;
  768. line.category = lineInfo.category;
  769. line.locationMode = lineInfo.locationMode;
  770. line.value = lineInfo.value;
  771. return line;
  772. }
  773. setCurvePointInfo(curvePointInfo) {
  774. let curvePoint = dataService.getCurvePoint(curvePointInfo.vectorId);
  775. mathUtil.clonePoint(curvePoint, curvePointInfo.position);
  776. curvePoint.parent = curvePointInfo.parent;
  777. curvePoint.index = curvePointInfo.index;
  778. return curvePoint;
  779. }
  780. setCurveLineInfo(curveLineInfo) {
  781. let curveLine = dataService.getCurveLine(curveLineInfo.vectorId);
  782. curveLine.startId = curveLineInfo.start;
  783. curveLine.endId = curveLineInfo.end;
  784. for (let i = 0; i < curveLineInfo.points.length; ++i) {
  785. curveLine.points[i] = dataService.getCurvePoint(
  786. curveLineInfo.points[i].vectorId
  787. );
  788. }
  789. curveLine.curves = JSON.parse(JSON.stringify(curveLineInfo.curves));
  790. return curveLine;
  791. }
  792. setCircleInfo(circleInfo) {
  793. let circle = dataService.getCircle(circleInfo.vectorId);
  794. circle.center = circleInfo.center;
  795. circle.radius = circleInfo.radius;
  796. circle.color = circleInfo.color;
  797. circle.radiusX = circleInfo.radiusX;
  798. circle.radiusY = circleInfo.radiusY;
  799. circle.points = circleInfo.points;
  800. return circle;
  801. }
  802. setTextInfo(textInfo) {
  803. let text = dataService.getText(textInfo.vectorId);
  804. text.vectorId = textInfo.vectorId;
  805. text.center = JSON.parse(JSON.stringify(textInfo.center));
  806. text.value = textInfo.value;
  807. text.angle = textInfo.angle;
  808. text.fontSize = textInfo.fontSize;
  809. text.color = textInfo.color;
  810. }
  811. setMagnifierInfo(magnifierInfo) {
  812. let magnifier = dataService.getMagnifier(magnifierInfo.vectorId);
  813. magnifier.vectorId = magnifierInfo.vectorId;
  814. magnifier.position = JSON.parse(JSON.stringify(magnifierInfo.position));
  815. magnifier.popPosition = JSON.parse(
  816. JSON.stringify(magnifierInfo.popPosition)
  817. );
  818. magnifier.photoUrl = magnifierInfo.photoUrl;
  819. }
  820. setSVGInfo(svgInfo) {
  821. let svg = dataService.getSVG(svgInfo.vectorId);
  822. svg.vectorId = svgInfo.vectorId;
  823. svg.center = JSON.parse(JSON.stringify(svgInfo.center));
  824. svg.points = JSON.parse(JSON.stringify(svgInfo.points));
  825. svg.type = svgInfo.type;
  826. svg.angle = svgInfo.angle;
  827. svg.scale = svgInfo.scale;
  828. }
  829. setRoadPointInfo(roadPointInfo) {
  830. let roadPoint = dataService.getRoadPoint(roadPointInfo.vectorId);
  831. roadPoint.vectorId = roadPointInfo.vectorId;
  832. mathUtil.clonePoint(roadPoint, roadPointInfo.position);
  833. roadPoint.parent = JSON.parse(JSON.stringify(roadPointInfo.parent));
  834. }
  835. setRoadEdgeInfo(roadEdgeInfo) {
  836. let roadEdge = dataService.getRoadEdge(roadEdgeInfo.vectorId);
  837. roadEdge.vectorId = roadEdgeInfo.vectorId;
  838. mathUtil.clonePoint(roadEdge.start, roadEdgeInfo.start);
  839. mathUtil.clonePoint(roadEdge.end, roadEdgeInfo.end);
  840. roadEdge.type = roadEdgeInfo.type;
  841. roadEdge.style = roadEdgeInfo.style;
  842. }
  843. setRoadInfo(roadInfo) {
  844. let road = dataService.getRoad(roadInfo.vectorId);
  845. road.vectorId = roadInfo.vectorId;
  846. road.startId = roadInfo.startId;
  847. road.endId = roadInfo.endId;
  848. road.leftEdgeId = roadInfo.leftEdgeId;
  849. road.rightEdgeId = roadInfo.rightEdgeId;
  850. road.way = roadInfo.way;
  851. if (road.way == Constant.oneWay) {
  852. road.singleRoadWidth = roadInfo.singleRoadWidth;
  853. road.singleRoadDrivewayCount = roadInfo.singleRoadDrivewayCount;
  854. road.singleLanes = JSON.parse(JSON.stringify(roadInfo.singleLanes));
  855. } else if (road.way == Constant.twoWay) {
  856. road.leftWidth = roadInfo.leftWidth;
  857. road.rightWidth = roadInfo.rightWidth;
  858. road.leftDrivewayCount = roadInfo.leftDrivewayCount;
  859. road.rightDrivewayCount = roadInfo.rightDrivewayCount;
  860. road.midDivide = JSON.parse(JSON.stringify(roadInfo.midDivide));
  861. road.leftLanes = JSON.parse(JSON.stringify(roadInfo.leftLanes));
  862. road.rightLanes = JSON.parse(JSON.stringify(roadInfo.rightLanes));
  863. }
  864. }
  865. setCurveRoadPointInfo(curveRoadPointInfo) {
  866. let curveRoadPoint = dataService.getCurveRoadPoint(
  867. curveRoadPointInfo.vectorId
  868. );
  869. curveRoadPoint.vectorId = curveRoadPointInfo.vectorId;
  870. mathUtil.clonePoint(curveRoadPoint, curveRoadPointInfo.position);
  871. curveRoadPoint.parent = JSON.parse(
  872. JSON.stringify(curveRoadPointInfo.parent)
  873. );
  874. curveRoadPoint.index = curveRoadPointInfo.index;
  875. }
  876. setCurveRoadEdgeInfo(curveRoadEdgeInfo) {
  877. let curveRoadEdge = dataService.getCurveRoadEdge(
  878. curveRoadEdgeInfo.vectorId
  879. );
  880. curveRoadEdge.vectorId = curveRoadEdgeInfo.vectorId;
  881. mathUtil.clonePoint(curveRoadEdge.start, curveRoadEdgeInfo.start);
  882. mathUtil.clonePoint(curveRoadEdge.end, curveRoadEdgeInfo.end);
  883. mathUtil.clonePoints(curveRoadEdge.points, curveRoadEdgeInfo.points);
  884. curveRoadEdge.curves = JSON.parse(JSON.stringify(curveRoadEdgeInfo.curves));
  885. curveRoadEdge.type = curveRoadEdgeInfo.type;
  886. curveRoadEdge.style = curveRoadEdgeInfo.style;
  887. }
  888. setCurveRoadInfo(curveRoadInfo) {
  889. let curveRoad = dataService.getCurveRoad(curveRoadInfo.vectorId);
  890. curveRoad.vectorId = curveRoadInfo.vectorId;
  891. curveRoad.startId = curveRoadInfo.startId;
  892. curveRoad.endId = curveRoadInfo.endId;
  893. curveRoad.leftEdgeId = curveRoadInfo.leftEdgeId;
  894. curveRoad.rightEdgeId = curveRoadInfo.rightEdgeId;
  895. for (let i = 0; i < curveRoadInfo.points.length; ++i) {
  896. curveRoad.points[i] = dataService.getCurveRoadPoint(
  897. curveRoadInfo.points[i].vectorId
  898. );
  899. }
  900. //curveRoad.points = JSON.parse(JSON.stringify(curveRoadInfo.points));
  901. curveRoad.curves = JSON.parse(JSON.stringify(curveRoadInfo.curves));
  902. if (curveRoad.way == Constant.oneWay) {
  903. curveRoad.singleCurveRoadWidth = curveRoadInfo.singleCurveRoadWidth;
  904. curveRoad.singleCurveRoadDrivewayCount =
  905. curveRoadInfo.singleCurveRoadDrivewayCount;
  906. curveRoad.singleLanesCurves = JSON.parse(
  907. JSON.stringify(curveRoadInfo.singleLanesCurves)
  908. );
  909. } else if (curveRoad.way == Constant.twoWay) {
  910. curveRoad.leftWidth = curveRoadInfo.leftWidth;
  911. curveRoad.rightWidth = curveRoadInfo.rightWidth;
  912. curveRoad.leftDrivewayCount = curveRoadInfo.leftDrivewayCount;
  913. curveRoad.rightDrivewayCount = curveRoadInfo.rightDrivewayCount;
  914. curveRoad.midDivide = JSON.parse(JSON.stringify(curveRoadInfo.midDivide));
  915. curveRoad.leftLanesCurves = JSON.parse(
  916. JSON.stringify(curveRoadInfo.leftLanesCurves)
  917. );
  918. curveRoad.rightLanesCurves = JSON.parse(
  919. JSON.stringify(curveRoadInfo.rightLanesCurves)
  920. );
  921. }
  922. }
  923. setCrossPointInfo(crossPointInfo) {
  924. let crossPoint = dataService.getCrossPoint3(crossPointInfo.vectorId);
  925. crossPoint.vectorId = crossPointInfo.vectorId;
  926. mathUtil.clonePoint(crossPoint, crossPointInfo.position);
  927. crossPoint.extremePoint = {};
  928. mathUtil.clonePoint(crossPoint.extremePoint, crossPointInfo.extremePoint);
  929. crossPoint.edgeInfo1 = JSON.parse(JSON.stringify(crossPointInfo.edgeInfo1));
  930. crossPoint.edgeInfo2 = JSON.parse(JSON.stringify(crossPointInfo.edgeInfo2));
  931. crossPoint.curves = JSON.parse(JSON.stringify(crossPointInfo.curves));
  932. }
  933. }
  934. const historyUtil = new HistoryUtil();
  935. export { historyUtil };