don't update table when data tab hidden, update when shown

This commit is contained in:
Norbert Renner 2014-09-05 19:19:14 +02:00
parent 2ab15561a8
commit 44900f9bd5
3 changed files with 56 additions and 6 deletions

View file

@ -1,14 +1,34 @@
BR.Tabs = BR.Control.extend({ BR.Tabs = BR.Control.extend({
options: { options: {
divId: 'tabs_div' divId: 'tabs_div',
// tab a.hash > instance
tabs: {}
},
initialize: function (options) {
L.setOptions(this, options);
}, },
onAdd: function (map) { onAdd: function (map) {
$('#tab a').click(function (e) { $('#tab a').click(function (e) {
e.preventDefault(); e.preventDefault();
$(this).tab('show'); $(this).tab('show');
}); });
// e.target = activated tab
// e.relatedTarget = previous tab
$('#tab a').on('shown.bs.tab', L.bind(function (e) {
var tab = this.options.tabs[e.target.hash],
prevTab = this.options.tabs[e.relatedTarget.hash];
if (tab && tab.show) {
tab.show();
}
if (prevTab && prevTab.hide) {
prevTab.hide();
}
}, this));
return BR.Control.prototype.onAdd.call(this, map); return BR.Control.prototype.onAdd.call(this, map);
} }
}); });

View file

@ -1,4 +1,6 @@
BR.TrackMessages = L.Class.extend({ BR.TrackMessages = L.Class.extend({
// true when tab is shown, false when hidden
active: false,
columnOptions: { columnOptions: {
'Longitude': { visible: false }, 'Longitude': { visible: false },
@ -10,7 +12,9 @@ BR.TrackMessages = L.Class.extend({
'TurnCost': { title: 'turncost', className: 'dt-body-right' } 'TurnCost': { title: 'turncost', className: 'dt-body-right' }
}, },
initialize: function () { initialize: function (options) {
L.setOptions(this, options);
var table = document.getElementById('datatable'); var table = document.getElementById('datatable');
this.tableClassName = table.className; this.tableClassName = table.className;
this.tableParent = table.parentElement; this.tableParent = table.parentElement;
@ -24,6 +28,9 @@ BR.TrackMessages = L.Class.extend({
headings, headings,
table; table;
if (!this.active)
return;
for (i = 0; segments && i < segments.length; i++) { for (i = 0; segments && i < segments.length; i++) {
messages = segments[i].feature.properties.messages; messages = segments[i].feature.properties.messages;
data = data.concat(messages.slice(1)); data = data.concat(messages.slice(1));
@ -54,6 +61,15 @@ BR.TrackMessages = L.Class.extend({
console.timeEnd('datatable'); console.timeEnd('datatable');
}, },
show: function() {
this.active = true;
this.options.requestUpdate(this);
},
hide: function() {
this.active = false;
},
_destroyTable: function() { _destroyTable: function() {
var ele; var ele;

View file

@ -107,6 +107,13 @@
routing.rerouteAllSegments(onUpdate); routing.rerouteAllSegments(onUpdate);
} }
function requestUpdate(updatable) {
var track = routing.toPolyline(),
segments = routing.getSegments();
updatable.update(track, segments);
}
routingOptions = new BR.RoutingOptions(); routingOptions = new BR.RoutingOptions();
routingOptions.on('update', updateRoute); routingOptions.on('update', updateRoute);
@ -141,7 +148,9 @@
BR.message.hideError(); BR.message.hideError();
routingOptions.setCustomProfile(null); routingOptions.setCustomProfile(null);
}); });
trackMessages = new BR.TrackMessages(); trackMessages = new BR.TrackMessages({
requestUpdate: requestUpdate
});
routing = new BR.Routing({ routing = new BR.Routing({
routing: { routing: {
@ -199,7 +208,12 @@
stats.addTo(map); stats.addTo(map);
download.addTo(map); download.addTo(map);
elevation.addTo(map); elevation.addTo(map);
map.addControl(new BR.Tabs()); map.addControl(new BR.Tabs({
tabs: {
'#tab_profile': profile,
'#tab_data': trackMessages
}
}));
nogos.addTo(map); nogos.addTo(map);
routing.addTo(map); routing.addTo(map);