HistoryUtil.js 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710
  1. import { mathUtil } from "../Util/MathUtil";
  2. import { dataService } from "../Service/DataService";
  3. import { textService } from "../Service/TextService";
  4. import Constant from "../Constant";
  5. export default class HistoryUtil {
  6. constructor() {}
  7. isDifferentForPoints(point1, point2) {
  8. if (
  9. point1.x == point2.x &&
  10. point1.y == point2.y &&
  11. mathUtil.equalJSON(point1.parent, point1.parent) &&
  12. point1.category == point2.category &&
  13. point1.locationMode == point2.locationMode &&
  14. point1.linkedBasePointId == point2.linkedBasePointId &&
  15. point1.linkedTestPointId == point2.linkedTestPointId
  16. ) {
  17. return false;
  18. } else {
  19. return true;
  20. }
  21. }
  22. isDifferentForLines(line1, line2) {
  23. if (
  24. line1.startId == line2.startId &&
  25. line1.endId == line2.endId &&
  26. line1.category == line2.category
  27. ) {
  28. return false;
  29. } else {
  30. return true;
  31. }
  32. }
  33. isDifferentForCircles(circle1, circle2) {
  34. if (
  35. mathUtil.equalPoint(circle1.center, circle2.center) &&
  36. circle1.radius == circle2.radius &&
  37. circle1.color == circle2.color
  38. ) {
  39. return false;
  40. } else {
  41. return true;
  42. }
  43. }
  44. isDifferentForTexts(text1, text2) {
  45. if (
  46. mathUtil.equalPoint(text1.center, text2.center) &&
  47. text1.value == text2.value
  48. ) {
  49. return false;
  50. } else {
  51. return true;
  52. }
  53. }
  54. isDifferentForMagnifiers(magnifier1, magnifier2) {
  55. if (
  56. mathUtil.equalPoint(magnifier1.position, magnifier2.position) &&
  57. magnifier1.photoUrl == magnifier2.photoUrl
  58. ) {
  59. return false;
  60. } else {
  61. return true;
  62. }
  63. }
  64. isDifferentForSVGs(svg1, svg2) {
  65. if (
  66. mathUtil.equalPoint(svg1.center, svg2.center) &&
  67. svg1.name == svg2.name
  68. ) {
  69. return false;
  70. } else {
  71. return true;
  72. }
  73. }
  74. isDifferentForRoadPoints(roadPoint1, roadPoint2) {
  75. if (
  76. mathUtil.equalPoint(roadPoint1, roadPoint2) &&
  77. mathUtil.equalJSON(roadPoint1.parent, roadPoint2.parent)
  78. ) {
  79. return false;
  80. } else {
  81. return true;
  82. }
  83. }
  84. isDifferentForRoadEdges(roadEdge1, roadEdge2) {
  85. if (
  86. mathUtil.equalPoint(roadEdge1.start, roadEdge2.start) &&
  87. mathUtil.equalPoint(roadEdge1.end, roadEdge2.end) &&
  88. roadEdge1.parent == roadEdge2.parent
  89. ) {
  90. return false;
  91. } else {
  92. return true;
  93. }
  94. }
  95. isDifferentForRoads(road1, road2) {
  96. if (
  97. road1.startId == road2.startId &&
  98. road1.endId == road2.endId &&
  99. road1.leftEdgeId == road2.leftEdgeId &&
  100. road1.rightEdgeId == road2.rightEdgeId &&
  101. road1.way == road2.way
  102. ) {
  103. if (road1.way == Constant.oneWay) {
  104. if (
  105. road1.singleRoadWidth == road2.singleRoadWidth &&
  106. road1.singleRoadDrivewayCount == road2.singleRoadDrivewayCount
  107. ) {
  108. return false;
  109. } else {
  110. return true;
  111. }
  112. } else if (road1.way == Constant.twoWay) {
  113. if (
  114. road1.leftWidth == road2.leftWidth &&
  115. road1.rightWidth == road2.rightWidth &&
  116. road1.leftDrivewayCount == road2.leftDrivewayCount &&
  117. road1.rightDrivewayCount == road2.rightDrivewayCount &&
  118. road1.midDivide.midDivideWidth == road2.midDivide.midDivideWidth
  119. ) {
  120. return false;
  121. } else {
  122. return true;
  123. }
  124. } else {
  125. return true;
  126. }
  127. } else {
  128. return true;
  129. }
  130. }
  131. isDifferentForCurveRoadPoints(curveRoadPoint1, curveRoadPoint2) {
  132. if (
  133. mathUtil.equalPoint(curveRoadPoint1, curveRoadPoint2) &&
  134. mathUtil.equalJSON(curveRoadPoint1.parent, curveRoadPoint2.parent) &&
  135. curveRoadPoint1.index == curveRoadPoint2.index
  136. ) {
  137. return false;
  138. } else {
  139. return true;
  140. }
  141. }
  142. isDifferentForCurveRoadEdges(curveRoadEdge1, curveRoadEdge2) {
  143. if (
  144. mathUtil.equalPoint(curveRoadEdge1.start, curveRoadEdge2.start) &&
  145. mathUtil.equalPoint(curveRoadEdge1.end, curveRoadEdge2.end) &&
  146. mathUtil.equalPoints(curveRoadEdge1.points, curveRoadEdge2.points) &&
  147. curveRoadEdge1.parent == curveRoadEdge2.parent
  148. ) {
  149. return false;
  150. } else {
  151. return true;
  152. }
  153. }
  154. isDifferentForCurveRoads(curveRoad1, curveRoad2) {
  155. if (
  156. curveRoad1.startId == curveRoad2.startId &&
  157. curveRoad1.endId == curveRoad2.endId &&
  158. mathUtil.equalPoints(curveRoad1.points, curveRoad2.points) &&
  159. curveRoad1.leftEdgeId == curveRoad2.leftEdgeId &&
  160. curveRoad1.rightEdgeId == curveRoad2.rightEdgeId &&
  161. curveRoad1.way == curveRoad2.way
  162. ) {
  163. if (curveRoad1.way == Constant.oneWay) {
  164. if (
  165. curveRoad1.singleRoadWidth == curveRoad2.singleRoadWidth &&
  166. curveRoad1.singleRoadDrivewayCount ==
  167. curveRoad2.singleRoadDrivewayCount
  168. ) {
  169. return false;
  170. } else {
  171. return true;
  172. }
  173. } else if (curveRoad1.way == Constant.twoWay) {
  174. if (
  175. curveRoad1.leftWidth == curveRoad2.leftWidth &&
  176. curveRoad1.rightWidth == curveRoad2.rightWidth &&
  177. curveRoad1.leftDrivewayCount == curveRoad2.leftDrivewayCount &&
  178. curveRoad1.rightDrivewayCount == curveRoad2.rightDrivewayCount &&
  179. curveRoad1.midDivide.midDivideWidth ==
  180. curveRoad2.midDivide.midDivideWidth
  181. ) {
  182. return false;
  183. } else {
  184. return true;
  185. }
  186. } else {
  187. return true;
  188. }
  189. } else {
  190. return true;
  191. }
  192. }
  193. isDifferentForCrossPoints(crossPoint1, crossPoint2) {
  194. if (
  195. mathUtil.equalPoint(crossPoint1, crossPoint2) &&
  196. mathUtil.equalPoint(crossPoint1.extremePoint, crossPoint2.extremePoint) &&
  197. crossPoint1.edgeInfo1.id == crossPoint2.edgeInfo1.id &&
  198. crossPoint1.edgeInfo1.dir == crossPoint2.edgeInfo1.dir &&
  199. crossPoint1.edgeInfo2.id == crossPoint2.edgeInfo2.id &&
  200. crossPoint1.edgeInfo2.dir == crossPoint2.edgeInfo2.dir
  201. ) {
  202. return false;
  203. } else {
  204. return true;
  205. }
  206. }
  207. assignPointFromPoint(point1, point2) {
  208. const pointInfo = {};
  209. pointInfo.vectorId = point1.vectorId;
  210. pointInfo.position = { x: point2.x, y: point2.y };
  211. pointInfo.parent = JSON.parse(JSON.stringify(point2.parent));
  212. pointInfo.locationMode = point2.locationMode;
  213. pointInfo.linkedBasePointId = point2.linkedBasePointId;
  214. pointInfo.linkedTestPointId = point2.linkedTestPointId;
  215. pointInfo.category = point2.category;
  216. this.setPointInfo(pointInfo);
  217. }
  218. assignLineFromLine(line1, line2) {
  219. const lineInfo = {};
  220. lineInfo.vectorId = line1.vectorId;
  221. lineInfo.start = line2.start;
  222. lineInfo.end = line2.end;
  223. lineInfo.category = line2.category;
  224. lineInfo.value = line2.value;
  225. this.setLineInfo(lineInfo);
  226. }
  227. assignCircleFromCircle(circle1, circle2) {
  228. const circleInfo = {};
  229. circleInfo.vectorId = circle1.vectorId;
  230. circleInfo.center = circle2.center;
  231. circleInfo.radius = circle2.radius;
  232. circleInfo.points = JSON.parse(JSON.stringify(circle2.points));
  233. circleInfo.color = circle2.color;
  234. this.setCircleInfo(circleInfo);
  235. }
  236. assignTextFromText(text1, text2) {
  237. const textInfo = {};
  238. textInfo.vectorId = text1.vectorId;
  239. textInfo.value = text2.value;
  240. textInfo.center = JSON.parse(JSON.stringify(text2.center));
  241. this.setTextInfo(textInfo);
  242. }
  243. assignMagnifierFromMagnifier(magnifier1, magnifier2) {
  244. const magnifierInfo = {};
  245. magnifierInfo.vectorId = magnifier1.vectorId;
  246. magnifierInfo.photoUrl = magnifier2.photoUrl;
  247. magnifierInfo.position = JSON.parse(JSON.stringify(magnifier2.position));
  248. magnifierInfo.popPosition = JSON.parse(
  249. JSON.stringify(magnifier2.popPosition)
  250. );
  251. this.setMagnifierInfo(magnifierInfo);
  252. }
  253. assignSVGFromSVG(svg1, svg2) {
  254. const svgInfo = {};
  255. svgInfo.vectorId = svg1.vectorId;
  256. svgInfo.name = svg2.name;
  257. svgInfo.center = JSON.parse(JSON.stringify(svg2.center));
  258. this.setSVGInfo(svgInfo);
  259. }
  260. assignRoadPointFromRoadPoint(roadPoint1, roadPoint2) {
  261. const roadPointInfo = {};
  262. roadPointInfo.vectorId = roadPoint1.vectorId;
  263. roadPointInfo.position = {
  264. x: roadPoint2.position.x,
  265. y: roadPoint2.position.y,
  266. };
  267. roadPointInfo.parent = JSON.parse(JSON.stringify(roadPoint2.parent));
  268. this.setRoadPointInfo(roadPointInfo);
  269. }
  270. assignRoadEdgeFromRoadEdge(roadEdge1, roadEdge2) {
  271. const roadEdgeInfo = {};
  272. roadEdgeInfo.vectorId = roadEdge1.vectorId;
  273. roadEdgeInfo.start = { x: roadEdge2.start.x, y: roadEdge2.start.y };
  274. roadEdgeInfo.end = { x: roadEdge2.end.x, y: roadEdge2.end.y };
  275. roadEdgeInfo.parent = roadEdge2.parent;
  276. this.setRoadEdgeInfo(roadEdgeInfo);
  277. }
  278. assignRoadFromRoad(road1, road2) {
  279. const roadInfo = {};
  280. roadInfo.vectorId = road1.vectorId;
  281. roadInfo.startId = road2.startId;
  282. roadInfo.endId = road2.endId;
  283. roadInfo.leftEdgeId = road2.leftEdgeId;
  284. roadInfo.rightEdgeId = road2.rightEdgeId;
  285. roadInfo.way = road2.way;
  286. if (road2.way == Constant.oneWay) {
  287. roadInfo.singleRoadWidth = road2.singleRoadWidth;
  288. roadInfo.singleRoadDrivewayCount = road2.singleRoadDrivewayCount;
  289. roadInfo.singleLanes = JSON.parse(JSON.stringify(road2.singleLanes));
  290. } else if (road2.way == Constant.twoWay) {
  291. roadInfo.leftWidth = road2.leftWidth;
  292. roadInfo.rightWidth = road2.rightWidth;
  293. roadInfo.leftDrivewayCount = road2.leftDrivewayCount;
  294. roadInfo.rightDrivewayCount = road2.rightDrivewayCount;
  295. roadInfo.midDivide = JSON.parse(JSON.stringify(road2.midDivide));
  296. roadInfo.leftLanes = JSON.parse(JSON.stringify(road2.leftLanes));
  297. roadInfo.rightLanes = JSON.parse(JSON.stringify(road2.rightLanes));
  298. }
  299. this.setRoadInfo(roadInfo);
  300. }
  301. assignCurveRoadPointFromCurveRoadPoint(curveRoadPoint1, curveRoadPoint2) {
  302. const curveRoadPointInfo = {};
  303. curveRoadPointInfo.vectorId = curveRoadPoint1.vectorId;
  304. curveRoadPointInfo.position = {
  305. x: curveRoadPoint2.position.x,
  306. y: curveRoadPoint2.position.y,
  307. };
  308. curveRoadPointInfo.parent = JSON.parse(
  309. JSON.stringify(curveRoadPoint2.parent)
  310. );
  311. curveRoadPointInfo.index = curveRoadPoint1.index;
  312. this.setCurveRoadPointInfo(curveRoadPointInfo);
  313. }
  314. assignCurveRoadEdgeFromCurveRoadEdge(curveRoadEdge1, curveRoadEdge2) {
  315. const curveRoadEdgeInfo = {};
  316. curveRoadEdgeInfo.vectorId = curveRoadEdge1.vectorId;
  317. curveRoadEdgeInfo.start = {
  318. x: curveRoadEdge2.start.x,
  319. y: curveRoadEdge2.start.y,
  320. };
  321. curveRoadEdgeInfo.end = {
  322. x: curveRoadEdge2.end.x,
  323. y: curveRoadEdge2.end.y,
  324. };
  325. curveRoadEdgeInfo.points = JSON.parse(
  326. JSON.stringify(curveRoadEdge2.points)
  327. );
  328. curveRoadEdgeInfo.curves = JSON.parse(
  329. JSON.stringify(curveRoadEdge2.curves)
  330. );
  331. curveRoadEdgeInfo.parent = curveRoadEdge2.parent;
  332. this.setCurveRoadEdgeInfo(curveRoadEdgeInfo);
  333. }
  334. assignCurveRoadFromCurveRoad(curveRoad1, curveRoad2) {
  335. const curveRoadInfo = {};
  336. curveRoadInfo.vectorId = curveRoad1.vectorId;
  337. curveRoadInfo.startId = curveRoad2.startId;
  338. curveRoadInfo.endId = curveRoad2.endId;
  339. curveRoadInfo.leftEdgeId = curveRoad2.leftEdgeId;
  340. curveRoadInfo.rightEdgeId = curveRoad2.rightEdgeId;
  341. curveRoadInfo.way = curveRoad2.way;
  342. if (curveRoad2.way == Constant.oneWay) {
  343. curveRoadInfo.singleRoadWidth = curveRoad2.singleRoadWidth;
  344. curveRoadInfo.singleRoadDrivewayCount =
  345. curveRoad2.singleRoadDrivewayCount;
  346. curveRoadInfo.singleLanes = JSON.parse(
  347. JSON.stringify(curveRoad2.singleLanes)
  348. );
  349. } else if (curveRoad2.way == Constant.twoWay) {
  350. curveRoadInfo.leftWidth = curveRoad2.leftWidth;
  351. curveRoadInfo.rightWidth = curveRoad2.rightWidth;
  352. curveRoadInfo.leftDrivewayCount = curveRoad2.leftDrivewayCount;
  353. curveRoadInfo.rightDrivewayCount = curveRoad2.rightDrivewayCount;
  354. curveRoadInfo.midDivide = JSON.parse(
  355. JSON.stringify(curveRoad2.midDivide)
  356. );
  357. curveRoadInfo.leftLanes = JSON.parse(
  358. JSON.stringify(curveRoad2.leftLanes)
  359. );
  360. curveRoadInfo.rightLanes = JSON.parse(
  361. JSON.stringify(curveRoad2.rightLanes)
  362. );
  363. }
  364. curveRoadInfo.points = [];
  365. for (let i = 0; i < curveRoad2.points.length; ++i) {
  366. curveRoadInfo.points[i] = {};
  367. curveRoadInfo.points[i].vectorId = curveRoad2.points[i].vectorId;
  368. }
  369. this.setCurveRoadInfo(curveRoadInfo);
  370. }
  371. assignCrossPointFromCrossPoint(crossPoint1, crossPoint2) {
  372. const crossPointInfo = {};
  373. crossPointInfo.vectorId = crossPoint1.vectorId;
  374. crossPointInfo.position = {
  375. x: crossPoint2.position.x,
  376. y: crossPoint2.position.y,
  377. };
  378. crossPointInfo.edgeInfo1 = JSON.parse(
  379. JSON.stringify(crossPoint2.edgeInfo1)
  380. );
  381. crossPointInfo.edgeInfo2 = JSON.parse(
  382. JSON.stringify(crossPoint2.edgeInfo2)
  383. );
  384. crossPoint1.edgeInfo1 = JSON.parse(JSON.stringify(crossPoint2.edgeInfo1));
  385. crossPoint1.edgeInfo2 = JSON.parse(JSON.stringify(crossPoint2.edgeInfo2));
  386. dataService.addCrossPoint(crossPoint1);
  387. crossPointInfo.extremePoint = {
  388. x: crossPoint2.extremePoint.x,
  389. y: crossPoint2.extremePoint.y,
  390. };
  391. crossPointInfo.curves = JSON.parse(JSON.stringify(crossPoint2.curves));
  392. this.setCrossPointInfo(crossPointInfo);
  393. }
  394. getDataForPoint(point) {
  395. const data = {};
  396. data.id = point.vectorId;
  397. mathUtil.clonePoint(data, point);
  398. data.parent = JSON.parse(JSON.stringify(point.parent));
  399. data.category = point.category;
  400. data.locationMode = point.locationMode;
  401. data.linkedBasePointId = point.linkedBasePointId;
  402. data.linkedTestPointId = point.linkedTestPointId;
  403. data.type = point.geoType;
  404. return data;
  405. }
  406. getDataForLine(line) {
  407. const data = {};
  408. data.id = line.vectorId;
  409. data.start = line.startId;
  410. data.end = line.endId;
  411. data.category = line.category;
  412. data.type = line.geoType;
  413. return data;
  414. }
  415. getDataForCircle(circle) {
  416. const data = {};
  417. data.id = circle.vectorId;
  418. data.center = {};
  419. mathUtil.clonePoint(data.center, circle.center);
  420. data.radius = circle.radius;
  421. data.points = circle.points;
  422. data.color = circle.color;
  423. data.type = circle.geoType;
  424. return data;
  425. }
  426. getDataForText(text) {
  427. const data = {};
  428. data.id = text.vectorId;
  429. data.type = text.geoType;
  430. data.center = {};
  431. mathUtil.clonePoint(data.center, text.center);
  432. data.value = text.value;
  433. return data;
  434. }
  435. getDataForMagnifier(magnifier) {
  436. const data = {};
  437. data.id = magnifier.vectorId;
  438. data.type = magnifier.geoType;
  439. data.position = {};
  440. data.popPosition = {};
  441. mathUtil.clonePoint(data.position, magnifier.position);
  442. mathUtil.clonePoint(data.popPosition, magnifier.popPosition);
  443. data.photoUrl = magnifier.photoUrl;
  444. return data;
  445. }
  446. getDataForSVG(svg) {
  447. const data = {};
  448. data.id = svg.vectorId;
  449. data.type = svg.geoType;
  450. data.center = {};
  451. mathUtil.clonePoint(data.center, svg.center);
  452. data.name = svg.name;
  453. return data;
  454. }
  455. getDataForRoadPoint(roadPoint) {
  456. const data = {};
  457. data.id = roadPoint.vectorId;
  458. data.type = roadPoint.geoType;
  459. data.position = {};
  460. mathUtil.clonePoint(data.position, roadPoint);
  461. data.parent = JSON.parse(JSON.stringify(roadPoint.parent));
  462. return data;
  463. }
  464. getDataForRoadEdge(roadEdge) {
  465. const data = {};
  466. data.id = roadEdge.vectorId;
  467. data.type = roadEdge.geoType;
  468. data.parent = roadEdge.parent;
  469. data.start = {};
  470. data.start = JSON.parse(JSON.stringify(roadEdge.start));
  471. data.end = {};
  472. data.end = JSON.parse(JSON.stringify(roadEdge.end));
  473. return data;
  474. }
  475. getDataForRoad(road) {
  476. const data = {};
  477. data.id = road.vectorId;
  478. data.type = road.geoType;
  479. data.startId = road.startId;
  480. data.endId = road.endId;
  481. data.leftEdgeId = road.leftEdgeId;
  482. data.rightEdgeId = road.rightEdgeId;
  483. data.way = road.way;
  484. if (road.way == Constant.oneWay) {
  485. data.singleRoadWidth = road.singleRoadWidth;
  486. data.singleRoadDrivewayCount = road.singleRoadDrivewayCount;
  487. data.singleLanes = JSON.parse(JSON.stringify(road.singleLanes));
  488. } else if (road.way == Constant.twoWay) {
  489. data.leftWidth = road.leftWidth;
  490. data.rightWidth = road.rightWidth;
  491. data.leftDrivewayCount = road.leftDrivewayCount;
  492. data.rightDrivewayCount = road.rightDrivewayCount;
  493. data.midDivide = JSON.parse(JSON.stringify(road.midDivide));
  494. data.leftLanes = JSON.parse(JSON.stringify(road.leftLanes));
  495. data.rightLanes = JSON.parse(JSON.stringify(road.rightLanes));
  496. }
  497. return data;
  498. }
  499. getDataForCrossPoint(crossPoint) {
  500. const data = {};
  501. data.id = crossPoint.vectorId;
  502. data.type = crossPoint.geoType;
  503. data.position = {};
  504. mathUtil.clonePoint(data.position, crossPoint);
  505. data.extremePoint = {};
  506. mathUtil.clonePoint(data.extremePoint, crossPoint.extremePoint);
  507. data.edgeInfo1 = JSON.parse(JSON.stringify(crossPoint.edgeInfo1));
  508. data.edgeInfo2 = JSON.parse(JSON.stringify(crossPoint.edgeInfo2));
  509. data.curves = JSON.parse(JSON.stringify(crossPoint.curves));
  510. return data;
  511. }
  512. setPointInfo(pointInfo) {
  513. let point = dataService.getPoint(pointInfo.vectorId);
  514. mathUtil.clonePoint(point, pointInfo.position);
  515. point.parent = JSON.parse(JSON.stringify(pointInfo.parent));
  516. point.category = pointInfo.category;
  517. point.locationMode = pointInfo.locationMode;
  518. point.linkedBasePointId = pointInfo.linkedBasePointId;
  519. point.linkedTestPointId = pointInfo.linkedTestPointId;
  520. return point;
  521. }
  522. setLineInfo(lineInfo) {
  523. let line = dataService.getLine(lineInfo.vectorId);
  524. line.startId = lineInfo.start;
  525. line.endId = lineInfo.end;
  526. line.category = lineInfo.category;
  527. line.value = lineInfo.value;
  528. return line;
  529. }
  530. setCircleInfo(circleInfo) {
  531. let circle = dataService.getCircle(circleInfo.vectorId);
  532. circle.center = circleInfo.center;
  533. circle.radius = circleInfo.radius;
  534. circle.color = circleInfo.color;
  535. circle.points = circleInfo.points;
  536. return circle;
  537. }
  538. setTextInfo(textInfo) {
  539. let text = dataService.getText(textInfo.vectorId);
  540. text.vectorId = textInfo.vectorId;
  541. text.center = JSON.parse(JSON.stringify(textInfo.center));
  542. text.value = textInfo.value;
  543. }
  544. setMagnifierInfo(magnifierInfo) {
  545. let magnifier = dataService.getMagnifier(magnifierInfo.vectorId);
  546. magnifier.vectorId = magnifierInfo.vectorId;
  547. magnifier.position = JSON.parse(JSON.stringify(magnifierInfo.position));
  548. magnifier.popPosition = JSON.parse(
  549. JSON.stringify(magnifierInfo.popPosition)
  550. );
  551. magnifier.photoUrl = magnifierInfo.photoUrl;
  552. }
  553. setSVGInfo(svgInfo) {
  554. let svg = dataService.getSVG(svgInfo.vectorId);
  555. svg.vectorId = svgInfo.vectorId;
  556. svg.center = JSON.parse(JSON.stringify(svgInfo.center));
  557. svg.name = svgInfo.name;
  558. }
  559. setRoadPointInfo(roadPointInfo) {
  560. let roadPoint = dataService.getRoadPoint(roadPointInfo.vectorId);
  561. roadPoint.vectorId = roadPointInfo.vectorId;
  562. mathUtil.clonePoint(roadPoint, roadPointInfo.position);
  563. roadPoint.parent = JSON.parse(JSON.stringify(roadPointInfo.parent));
  564. }
  565. setRoadEdgeInfo(roadEdgeInfo) {
  566. let roadEdge = dataService.getRoadEdge(roadEdgeInfo.vectorId);
  567. roadEdge.vectorId = roadEdgeInfo.vectorId;
  568. mathUtil.clonePoint(roadEdge.start, roadEdgeInfo.start);
  569. mathUtil.clonePoint(roadEdge.end, roadEdgeInfo.end);
  570. roadEdge.name = roadEdgeInfo.name;
  571. }
  572. setRoadInfo(roadInfo) {
  573. let road = dataService.getRoad(roadInfo.vectorId);
  574. road.vectorId = roadInfo.vectorId;
  575. road.startId = roadInfo.startId;
  576. road.endId = roadInfo.endId;
  577. road.leftEdgeId = roadInfo.leftEdgeId;
  578. road.rightEdgeId = roadInfo.rightEdgeId;
  579. road.way = roadInfo.way;
  580. if (road.way == Constant.oneWay) {
  581. road.singleRoadWidth = roadInfo.singleRoadWidth;
  582. road.singleRoadDrivewayCount = roadInfo.singleRoadDrivewayCount;
  583. road.singleLanes = JSON.parse(JSON.stringify(roadInfo.singleLanes));
  584. } else if (road.way == Constant.twoWay) {
  585. road.leftWidth = roadInfo.leftWidth;
  586. road.rightWidth = roadInfo.rightWidth;
  587. road.leftDrivewayCount = roadInfo.leftDrivewayCount;
  588. road.rightDrivewayCount = roadInfo.rightDrivewayCount;
  589. road.midDivide = JSON.parse(JSON.stringify(roadInfo.midDivide));
  590. road.leftLanes = JSON.parse(JSON.stringify(roadInfo.leftLanes));
  591. road.rightLanes = JSON.parse(JSON.stringify(roadInfo.rightLanes));
  592. }
  593. }
  594. setCurveRoadPointInfo(curveRoadPointInfo) {
  595. let curveRoadPoint = dataService.getCurveRoadPoint(
  596. curveRoadPointInfo.vectorId
  597. );
  598. curveRoadPoint.vectorId = curveRoadPointInfo.vectorId;
  599. mathUtil.clonePoint(curveRoadPoint, curveRoadPointInfo.position);
  600. curveRoadPoint.parent = JSON.parse(
  601. JSON.stringify(curveRoadPointInfo.parent)
  602. );
  603. curveRoadPoint.index = curveRoadPointInfo.index;
  604. }
  605. setCurveRoadEdgeInfo(curveRoadEdgeInfo) {
  606. let curveRoadEdge = dataService.getCurveRoadEdge(
  607. curveRoadEdgeInfo.vectorId
  608. );
  609. curveRoadEdge.vectorId = curveRoadEdgeInfo.vectorId;
  610. mathUtil.clonePoint(curveRoadEdge.start, curveRoadEdgeInfo.start);
  611. mathUtil.clonePoint(curveRoadEdge.end, curveRoadEdgeInfo.end);
  612. mathUtil.clonePoints(curveRoadEdge.points, curveRoadEdgeInfo.points);
  613. curveRoadEdge.name = curveRoadEdgeInfo.name;
  614. }
  615. setCurveRoadInfo(curveRoadInfo) {
  616. let curveRoad = dataService.getCurveRoad(curveRoadInfo.vectorId);
  617. curveRoad.vectorId = curveRoadInfo.vectorId;
  618. curveRoad.startId = curveRoadInfo.startId;
  619. curveRoad.endId = curveRoadInfo.endId;
  620. curveRoad.leftEdgeId = curveRoadInfo.leftEdgeId;
  621. curveRoad.rightEdgeId = curveRoadInfo.rightEdgeId;
  622. for (let i = 0; i < curveRoadInfo.points.length; ++i) {
  623. curveRoad.points[i] = dataService.getCurveRoadPoint(
  624. curveRoadInfo.points[i]
  625. );
  626. }
  627. curveRoad.way = curveRoadInfo.way;
  628. if (curveRoad.way == Constant.oneWay) {
  629. curveRoad.singleRoadWidth = curveRoadInfo.singleRoadWidth;
  630. curveRoad.singleRoadDrivewayCount = curveRoadInfo.singleRoadDrivewayCount;
  631. curveRoad.singleLanes = JSON.parse(
  632. JSON.stringify(curveRoadInfo.singleLanes)
  633. );
  634. } else if (curveRoad.way == Constant.twoWay) {
  635. curveRoad.leftWidth = curveRoadInfo.leftWidth;
  636. curveRoad.rightWidth = curveRoadInfo.rightWidth;
  637. curveRoad.leftDrivewayCount = curveRoadInfo.leftDrivewayCount;
  638. curveRoad.rightDrivewayCount = curveRoadInfo.rightDrivewayCount;
  639. curveRoad.midDivide = JSON.parse(JSON.stringify(curveRoadInfo.midDivide));
  640. curveRoad.leftLanes = JSON.parse(JSON.stringify(curveRoadInfo.leftLanes));
  641. curveRoad.rightLanes = JSON.parse(
  642. JSON.stringify(curveRoadInfo.rightLanes)
  643. );
  644. }
  645. }
  646. setCrossPointInfo(crossPointInfo) {
  647. let crossPoint = dataService.getCrossPoint3(crossPointInfo.vectorId);
  648. crossPoint.vectorId = crossPointInfo.vectorId;
  649. mathUtil.clonePoint(crossPoint, crossPointInfo.position);
  650. crossPoint.extremePoint = {};
  651. mathUtil.clonePoint(crossPoint.extremePoint, crossPointInfo.extremePoint);
  652. crossPoint.edgeInfo1 = JSON.parse(JSON.stringify(crossPointInfo.edgeInfo1));
  653. crossPoint.edgeInfo2 = JSON.parse(JSON.stringify(crossPointInfo.edgeInfo2));
  654. crossPoint.curves = JSON.parse(JSON.stringify(crossPointInfo.curves));
  655. }
  656. }
  657. const historyUtil = new HistoryUtil();
  658. export { historyUtil };