HistoryUtil.js 28 KB

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