Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/maps.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArne Hamann <git@arne.email>2022-04-01 15:20:40 +0300
committerArne Hamann <git@arne.email>2022-04-01 15:20:40 +0300
commit0983bcadf49afd3f501869101981e02958fbba8a (patch)
tree7c90a0ca9c5cf7d75ae3525d690b25a48c15a236
parente7dfe463923c591756f1d28dea6f751ba880cfae (diff)
Use bin search to filter Track Segmentsenh/vue-rewrite
Signed-off-by: Arne Hamann <git@arne.email>
-rw-r--r--src/components/map/TrackLayer.vue10
-rw-r--r--src/tracksUtils.js1
-rw-r--r--src/views/App.vue2
3 files changed, 11 insertions, 2 deletions
diff --git a/src/components/map/TrackLayer.vue b/src/components/map/TrackLayer.vue
index e936bef9..f4637ddf 100644
--- a/src/components/map/TrackLayer.vue
+++ b/src/components/map/TrackLayer.vue
@@ -51,6 +51,7 @@ import ActionButton from '@nextcloud/vue/dist/Components/ActionButton'
import moment from '@nextcloud/moment'
import optionsController from '../../optionsController'
+import { binSearch } from '../../utils/common'
const TRACK_MARKER_VIEW_SIZE = 40
@@ -127,11 +128,18 @@ export default {
} else {
this.track.data.tracks.forEach((trk) => {
trk.segments.forEach((segment) => {
+ const lastNullIndex = binSearch(segment.points, (p) => !p.timestamp)
+ const firstShownIndex = binSearch(segment.points, (p) => (p.timestamp || 0) < this.start) + 1
+ const lastShownIndex = binSearch(segment.points, (p) => (p.timestamp || 0) < this.end)
+ const points = [
+ ...segment.points.slice(0, lastNullIndex + 1),
+ ...segment.points.slice(firstShownIndex, lastShownIndex + 1),
+ ]
// add track name to each segment
trkSegments.push({
...segment,
name: trk.name,
- points: segment.points.filter((point) => (!point.timestamp || (point.timestamp >= this.start && point.timestamp <= this.end))),
+ points,
})
})
})
diff --git a/src/tracksUtils.js b/src/tracksUtils.js
index c47a32ed..05f4bdeb 100644
--- a/src/tracksUtils.js
+++ b/src/tracksUtils.js
@@ -61,6 +61,7 @@ function parseTrkseg(e) {
}
}
})
+ seg.points.sort((a, b) => (a.timestamp || 0) - (b.timestamp || 0))
return seg
}
diff --git a/src/views/App.vue b/src/views/App.vue
index 9e01b66d..cab5ffc5 100644
--- a/src/views/App.vue
+++ b/src/views/App.vue
@@ -162,7 +162,7 @@ import AppNavigationTracksItem from '../components/AppNavigationTracksItem'
import AppNavigationDevicesItem from '../components/AppNavigationDevicesItem'
import optionsController from '../optionsController'
import { getLetterColor, hslToRgb, Timer, getDeviceInfoFromUserAgent2, isComputer, isPhone } from '../utils'
-import { binSearch } from "../utils/common"
+import { binSearch } from '../utils/common'
import { poiSearchData } from '../utils/poiData'
import { processGpx } from '../tracksUtils'