| | |
| | | |
| | | 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); |
| | | } |
| | | }); |
| | |
| | | }, |
| | | _removeFeature: function(feature) { |
| | | if(!feature) return; |
| | | this.source.removeFeature(feature); |
| | | if(this.selectedFeatureId === feature.getId()) { |
| | | this.deselect(); |
| | | } |
| | | this.source.removeFeature(feature); |
| | | }, |
| | | loadFullData: function(data) { |
| | | var self = this; |
| | |
| | | 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 featureSource = featureDiscriminator.substr(1, 1); |
| | | |
| | | feature_xhr = $.get( |
| | | api_url + '/stop/?type=' + featureSource + '&id=' + feature.getId() |
| | | api_url + '/schedule/?type=' + featureSource + '&id=' + feature.getId() |
| | | ).done(function(data) { |
| | | deleteChildren(table); |
| | | |
| | | var all_departures = data.old.concat(data.actual); |
| | | var tr, dir_cell, vehicle, status, status_cell, delay, delay_cell; |
| | | for(var i = 0, il = all_departures.length; i < il; i++) { |
| | | for(var i = 0, il = data.length; i < il; i++) { |
| | | tr = document.createElement('tr'); |
| | | addCellWithText(tr, all_departures[i].patternText); |
| | | dir_cell = addCellWithText(tr, normalizeName(all_departures[i].direction)); |
| | | addCellWithText(tr, data[i].line); |
| | | dir_cell = addCellWithText(tr, data[i].direction); |
| | | //vehicle = vehicles_info.getParsed(all_departures[i].vehicleId); |
| | | dir_cell.appendChild(displayVehicle(vehicle)); |
| | | status = parseStatus(all_departures[i]); |
| | | status_cell = addCellWithText(tr, status); |
| | | delay = parseDelay(all_departures[i]); |
| | | delay_cell = addCellWithText(tr, delay); |
| | | |
| | | //dir_cell.appendChild(displayVehicle(vehicle)); |
| | | //status = parseStatus(all_departures[i]); |
| | | status_cell = addCellWithText(tr, data[i].time); |
| | | //delay = parseDelay(all_departures[i]); |
| | | delay_cell = addCellWithText(tr, ''); |
| | | /* |
| | | if(i < data.old.length) { |
| | | tr.className = 'active'; |
| | | } else if(status === lang.boarding_sign) { |
| | |
| | | } else if(parseInt(delay) > 3) { |
| | | tr.className = 'warning'; |
| | | } |
| | | |
| | | */ |
| | | table.appendChild(tr); |
| | | } |
| | | |
| | |
| | | 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)); |
| | |
| | | |
| | | hash = new Hash(); |
| | | Deferred.all(future_requests).done(hash.ready.bind(hash)); |
| | | |
| | | setTimeout(function() { |
| | | ttss_types.forEach(function(type) { |
| | | if(vehicles_xhr[type]) { |
| | | vehicles_xhr[type].abort(); |
| | | } |
| | | if(vehicles_timer[type]) { |
| | | clearTimeout(vehicles_timer[type]); |
| | | } |
| | | }); |
| | | |
| | | fail(lang.error_refresh); |
| | | }, 1800000); |
| | | } |
| | | |
| | | init(); |