| | |
| | | |
| | | ttss_types.forEach(function(ttss_type) { |
| | | vehicles[ttss_type].source.forEachFeature(function(feature) { |
| | | if(feature.get('vehicle_type') && feature.get('vehicle_type').num.indexOf(query) > -1) { |
| | | if(feature.get('type') && feature.get('type').num.indexOf(query) > -1) { |
| | | features.push(feature); |
| | | } |
| | | }); |
| | |
| | | return path_xhr; |
| | | } |
| | | |
| | | function vehicleTable(feature, table) { |
| | | function vehicleTable(feature, table, post, trip) { |
| | | if(feature_xhr) feature_xhr.abort(); |
| | | if(feature_timer) clearTimeout(feature_timer); |
| | | |
| | |
| | | var featureSource = featureDiscriminator.substr(1, 1); |
| | | var featureStatus = feature.get('status'); |
| | | |
| | | var isTripCurrent = !trip || feature.get('trip') == trip; |
| | | |
| | | feature_xhr = $.get( |
| | | api_url + '/trip/?type=' + featureSource + '&id=' + feature.get('trip') |
| | | ).done(function(data) { |
| | | api_url + '/trip/?type=' + featureSource + '&id=' + (trip ? trip : feature.get('trip')) |
| | | ).done(function(results) { |
| | | var data = results['data']; |
| | | |
| | | deleteChildren(table); |
| | | |
| | | var tr; |
| | |
| | | |
| | | stopsToMark.push(data[i].stop); |
| | | |
| | | if(data[i].seq < feature.get('seq')) { |
| | | tr.className = 'active'; |
| | | } else if(data[i].seq == feature.get('seq') && featureStatus < 2) { |
| | | tr.className = 'success'; |
| | | if(isTripCurrent) { |
| | | if(data[i].seq < feature.get('seq')) { |
| | | tr.className = 'active'; |
| | | } else if(data[i].seq == feature.get('seq') && featureStatus < 2) { |
| | | tr.className = 'success'; |
| | | } |
| | | } |
| | | table.appendChild(tr); |
| | | } |
| | |
| | | tr.className = 'active'; |
| | | } |
| | | |
| | | deleteChildren(post); |
| | | |
| | | if(results['prev']) { |
| | | tr = addElementWithText(post, 'a', lang.trip_previous); |
| | | tr.className = 'left'; |
| | | tr.onclick = function() { |
| | | vehicleTable(feature, table, post, results['prev']); |
| | | }; |
| | | } else { |
| | | tr = document.createElement('span'); |
| | | post.appendChild(tr); |
| | | } |
| | | if(!isTripCurrent) { |
| | | tr = addElementWithText(post, 'a', lang.trip_current); |
| | | tr.className = 'center'; |
| | | tr.onclick = function() { |
| | | vehicleTable(feature, table, post); |
| | | }; |
| | | } else { |
| | | tr = document.createElement('span'); |
| | | post.appendChild(tr); |
| | | } |
| | | if(results['next']) { |
| | | tr = addElementWithText(post, 'a', lang.trip_next); |
| | | tr.className = 'right'; |
| | | tr.onclick = function() { |
| | | vehicleTable(feature, table, post, results['next']); |
| | | }; |
| | | } else { |
| | | tr = document.createElement('span'); |
| | | post.appendChild(tr); |
| | | } |
| | | |
| | | markStops(stopsToMark, featureSource, true); |
| | | |
| | | feature_timer = setTimeout(function() { vehicleTable(feature, table); }, api_refresh); |
| | | feature_timer = setTimeout(function() { vehicleTable(feature, table, post, trip); }, api_refresh); |
| | | }).fail(fail_ajax_popup); |
| | | return feature_xhr; |
| | | } |
| | |
| | | var tbody = document.createElement('tbody'); |
| | | table.appendChild(thead); |
| | | table.appendChild(tbody); |
| | | var post; |
| | | |
| | | var tabular_data = true; |
| | | |
| | |
| | | var span = displayVehicle(feature.get('type')); |
| | | |
| | | additional = document.createElement('p'); |
| | | if(span.title) { |
| | | setText(additional, span.title); |
| | | if(span.dataset.typeShort) { |
| | | setText(additional, span.dataset.typeShort); |
| | | additional.title = span.dataset.typeAdditional; |
| | | span.removeAttribute('title'); |
| | | } else { |
| | | setText(additional, feature.getId()); |
| | | } |
| | |
| | | addElementWithText(thead, 'th', lang.header_time); |
| | | addElementWithText(thead, 'th', lang.header_stop); |
| | | |
| | | vehicleTable(feature, tbody); |
| | | post = document.createElement('div'); |
| | | post.className = 'post-nav'; |
| | | |
| | | vehicleTable(feature, tbody, post); |
| | | //vehiclePath(feature); |
| | | } |
| | | // Stop or stop point |
| | |
| | | |
| | | if(tabular_data) { |
| | | div.appendChild(table); |
| | | } |
| | | |
| | | if(post) { |
| | | div.appendChild(post); |
| | | } |
| | | |
| | | showOnMapFunction(); |
| | |
| | | return false; |
| | | }, |
| | | _updateOld: function() { |
| | | if(window.location.hash.match(/^#![bt][0-9]{3}$/)) { |
| | | if(window.location.hash.match(/^#!s[bt][0-9]{1,3}$/)) { |
| | | this.go('s' + window.location.hash.charAt(3) + window.location.hash.substr(4).padStart(4, '0')); |
| | | } else if(window.location.hash.match(/^#![bt][0-9]{3}$/)) { |
| | | this.go('v' + window.location.hash.substr(2)); |
| | | } else if(window.location.hash.match(/^#![RHrh][A-Za-z][0-9]{3}$/)) { |
| | | this.go('vt'+ window.location.hash.substr(4)); |