From 47324068427b7b7250fdcf9d5d34e673587e4b9a Mon Sep 17 00:00:00 2001
From: Yuriy Maksymets <iurii.maksymets@gmail.com>
Date: Sun, 27 Oct 2019 18:21:55 +0000
Subject: [PATCH] Merging intervals locally

---
 src/app.js  | 38 +++++++++++++-------------------------
 src/room.js | 10 ++--------
 2 files changed, 15 insertions(+), 33 deletions(-)

diff --git a/src/app.js b/src/app.js
index ed4a96d..5cbed56 100644
--- a/src/app.js
+++ b/src/app.js
@@ -36,17 +36,11 @@ function eraseAt(x, y, room) {
       ERASERRADIUS,
     )
 
-    console.log(prevPathIntervals, newPathIntervals)
-
     const erasureIntervalsForPath = combineErasureIntervals(
       prevPathIntervals,
       newPathIntervals,
     )
 
-    // if (!TEST_ERASE_INTERVAL[pathID]) TEST_ERASE_INTERVAL[pathID] = {}
-    // TEST_ERASE_INTERVAL[pathID] = erasureIntervalsForPath
-    console.log("erasureIntervalsForPath")
-    console.log(erasureIntervalsForPath)
     Object.keys(erasureIntervalsForPath).forEach((pointID) =>
       room.extendErasureIntervals(
         pathID,
@@ -55,11 +49,6 @@ function eraseAt(x, y, room) {
       ),
     )
 
-    // room.dispatchEvent(
-    //   new CustomEvent("removedIntervalsChange", {
-    //     detail: { id: pathID, points },
-    //   }),
-    // )
     points.forEach((point) => {
       const distanceToPoint = getDistance(mousePos, point)
       if (distanceToPoint <= ERASERRADIUS) {
@@ -184,9 +173,9 @@ function needToDrawLastPoint(points, pathID) {
 
 function generatePointsForPathElem(pathElem, pathID, dataPoints) {
   const points = dataPoints
-  document.getElementById("console").innerText = JSON.stringify(
-    TEST_ERASE_INTERVAL,
-  )
+  //   document.getElementById("console").innerText = JSON.stringify(
+  //     TEST_ERASE_INTERVAL,
+  //   )
   const appendToWholePath = (subPath) => {
     if (!(subPath && subPath.length)) return
     const subpathElem = generateSvgForSubpath(subPath)
@@ -322,11 +311,10 @@ function handleRoomConnectionEstablished(room) {
   room.addEventListener(
     "removedIntervalsChange",
     ({ detail: { id, intervals, points } }) => {
-      console.log("got the event for id", id)
-      console.log(intervals)
-
-      TEST_ERASE_INTERVAL[id] = intervals
-      console.log(pathElems, id, points)
+      TEST_ERASE_INTERVAL[id] = combineErasureIntervals(
+        TEST_ERASE_INTERVAL[id] || {},
+        intervals,
+      )
       addOrUpdatePathElem(pathElems, id, points)
     },
   )
@@ -425,12 +413,12 @@ function handleRoomConnectionEstablished(room) {
   }
   HTML.roomConnectButton.addEventListener("click", roomConnectButtonOnClick)
 
-  let pid = room.addPath([100, 100])
-  room.extendPath(pid, [800, 200])
-  room.extendPath(pid, [100, 300])
-  room.extendPath(pid, [800, 400])
-  room.extendPath(pid, [800, 450])
-  room.extendPath(pid, [800, 500])
+  //   let pid = room.addPath([100, 100])
+  //   room.extendPath(pid, [800, 200])
+  //   room.extendPath(pid, [100, 300])
+  //   room.extendPath(pid, [800, 400])
+  //   room.extendPath(pid, [800, 450])
+  //   room.extendPath(pid, [800, 500])
 }
 
 function handleRoomConnectionError(err) {
diff --git a/src/room.js b/src/room.js
index 62901af..bb13068 100644
--- a/src/room.js
+++ b/src/room.js
@@ -49,11 +49,8 @@ class Room extends EventTarget {
     const pathIntervals = yGetOrSet(this.sharedMergeIntervals, pathID, Y.Map)
     const pointIntervals = yGetOrSet(pathIntervals, pointID, Y.Array)
 
-    // pointIntervals.delete(0, pointIntervals.length)
-    newIntervals.forEach((newInterval) => pointIntervals.push([newInterval]))
-
-    console.log("pointIntervals")
-    console.log(pointIntervals.toArray())
+    pointIntervals.delete(0, pointIntervals.length)
+    pointIntervals.push(newIntervals)
   }
 
   getPaths() {
@@ -106,11 +103,8 @@ class Room extends EventTarget {
   _generateRemovedIntervals(id) {
     const intervals = this.sharedMergeIntervals.get(id)
     if (!intervals) return []
-    console.log(intervals)
     const json = intervals.toJSON()
 
-    console.log("json")
-    console.log(json)
     return typeof json === "string" ? JSON.parse(json) : json
   }
 
-- 
GitLab