diff options
author | Arne Hamann <git@arne.email> | 2022-04-01 15:20:40 +0300 |
---|---|---|
committer | Arne Hamann <git@arne.email> | 2022-04-01 15:20:40 +0300 |
commit | 0983bcadf49afd3f501869101981e02958fbba8a (patch) | |
tree | 7c90a0ca9c5cf7d75ae3525d690b25a48c15a236 | |
parent | e7dfe463923c591756f1d28dea6f751ba880cfae (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.vue | 10 | ||||
-rw-r--r-- | src/tracksUtils.js | 1 | ||||
-rw-r--r-- | src/views/App.vue | 2 |
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' |