fix segment highlight when no match for last message lat/lon

This commit is contained in:
Norbert Renner 2015-03-08 09:37:39 +01:00
parent bfe5770193
commit 597303a6d3

View file

@ -73,7 +73,7 @@ BR.TrackMessages = L.Class.extend({
}); });
// highlight track segment (graph edge) on row hover // highlight track segment (graph edge) on row hover
this._setEdges(this._table, polyline); this._setEdges(polyline, segments);
$('#datatable tbody tr').hover(L.bind(this._handleHover, this), L.bind(this._handleHoverOut, this)); $('#datatable tbody tr').hover(L.bind(this._handleHover, this), L.bind(this._handleHoverOut, this));
console.timeEnd('datatable'); console.timeEnd('datatable');
@ -139,37 +139,45 @@ BR.TrackMessages = L.Class.extend({
return empty; return empty;
}, },
_getRowLatLng: function(row) { _getMessageLatLng: function(message) {
var data = row.data(), var lon = message[0] / 1000000,
lon = data[0] / 1000000, lat = message[1] / 1000000;
lat = data[1] / 1000000;
return L.latLng(lat, lon); return L.latLng(lat, lon);
}, },
_setEdges: function(table, polyline) { _setEdges: function(polyline, segments) {
var trackLatLngs = polyline.getLatLngs(), var messages, segLatLngs, length, si, mi, latLng, i, segIndex,
index = 0; baseIndex = 0;
this._track = polyline;
// track latLngs index for end node of edge // track latLngs index for end node of edge
this._edges = []; this._edges = [];
this._track = polyline;
table.rows().indexes().each(L.bind(function(rowIndex) { for (si = 0; si < segments.length; si++) {
var row = table.row(rowIndex), messages = segments[si].feature.properties.messages;
latLng = this._getRowLatLng(row), segLatLngs = segments[si].getLatLngs();
i; length = segLatLngs.length;
segIndex = 0;
for (i = index; i < trackLatLngs.length; i++) { for (mi = 1; mi < messages.length; mi++) {
if (latLng.equals(trackLatLngs[i])) { latLng = this._getMessageLatLng(messages[mi]);
for (i = segIndex; i < length; i++) {
if (latLng.equals(segLatLngs[i])) {
break; break;
} }
} }
if (i === length) {
i = length - 1;
if (mi !== messages.length - 1) debugger;
}
this._edges.push(i); segIndex = i + 1;
this._edges.push(baseIndex + i);
index = i; }
}, this)); baseIndex += length;
}
}, },
_handleHover: function(evt) { _handleHover: function(evt) {