HistoryUtil.js 33 KB

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