nakarte

Source code of https://map.sikmir.ru (fork)
git clone git://git.sikmir.ru/nakarte
Log | Files | Refs | LICENSE

commit 5ac418c9262ddc1c41f1ef6325f4da5036b9d135
parent ce79aca304b2ada02577253f239eaf284b2b3c53
Author: Sergey Orlov <wladimirych@gmail.com>
Date:   Wed, 16 Dec 2020 16:28:06 +0100

tracks: refactor track highlight code

Related to #408

* dispatch all hover events through knockout observables
* highlight track line also when mouse is over the line

Diffstat:
Msrc/lib/leaflet.control.track-list/track-list.css | 3+--
Msrc/lib/leaflet.control.track-list/track-list.js | 18++++++++++++------
2 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/src/lib/leaflet.control.track-list/track-list.css b/src/lib/leaflet.control.track-list/track-list.css @@ -268,8 +268,7 @@ } -.leaflet-control-tracklist .hover, -.leaflet-control-tracklist tr:hover { +.leaflet-control-tracklist .hover { background-color: rgb(93%, 93%, 93%); } diff --git a/src/lib/leaflet.control.track-list/track-list.js b/src/lib/leaflet.control.track-list/track-list.js @@ -1095,15 +1095,11 @@ L.Control.TrackList = L.Control.extend({ }, onTrackRowMouseEnter: function(track) { - this._highlightedTrack = track; - this.updateTrackHighlight(); + track.hover(true); }, onTrackRowMouseLeave: function(track) { - if (this._highlightedTrack === track) { - this._highlightedTrack = null; - this.updateTrackHighlight(); - } + track.hover(false); }, onTrackSegmentDrawEnd: function() { @@ -1173,6 +1169,7 @@ L.Control.TrackList = L.Control.extend({ if (!L.Browser.touch) { track.feature.bindTooltip(() => track.name(), {sticky: true, delay: 500}); } + track.hover.subscribe(this.onTrackHoverChanged.bind(this, track)); // this.onTrackColorChanged(track); this.onTrackVisibilityChanged(track); @@ -1181,6 +1178,15 @@ L.Control.TrackList = L.Control.extend({ return track; }, + onTrackHoverChanged: function(track, hover) { + if (hover) { + this._highlightedTrack = track; + } else if (this._highlightedTrack === track) { + this._highlightedTrack = null; + } + this.updateTrackHighlight(); + }, + updateTrackHighlight: function() { if (L.Browser.touch) { return;