| | |
| | | "use strict"; |
| | | 'use strict'; |
| | | |
| | | var ttss_refresh = 10000; // 10 seconds |
| | | var ttss_position_type = 'RAW'; |
| | |
| | | var vehicles_info = {}; |
| | | |
| | | var stops_xhr = null; |
| | | var stops_ignored = ['131', '744']; |
| | | var stops_ignored = ['131', '744', '1263', '3039']; |
| | | var stops_style = { |
| | | 'sb': new ol.style.Style({ |
| | | image: new ol.style.Circle({ |
| | |
| | | fill = '#05B'; |
| | | } |
| | | if(selected) { |
| | | fill = '#292'; |
| | | fill = '#922'; |
| | | } |
| | | |
| | | var image = '<svg xmlns="http://www.w3.org/2000/svg" height="30" width="20"><polygon points="10,0 20,23 0,23" style="fill:'+fill+';stroke:'+color_type+';stroke-width:3" /></svg>'; |
| | |
| | | |
| | | var feature, prefix; |
| | | for(var i = 0; i < stops.length; i++) { |
| | | feature = null; |
| | | if(stops[i].getId) { |
| | | feature = stops[i]; |
| | | } else { |
| | |
| | | function updateStopSource(stops, prefix) { |
| | | var source = stops_source[prefix]; |
| | | var mapping = stops_mapping[prefix]; |
| | | var stop; |
| | | for(var i = 0; i < stops.length; i++) { |
| | | var stop = stops[i]; |
| | | stop = stops[i]; |
| | | |
| | | if(stop.category == 'other') continue; |
| | | if(stops_ignored.includes(stop.shortName)) continue; |
| | |
| | | }).fail(fail_ajax); |
| | | } |
| | | |
| | | function vehiclePath(feature, tripId) { |
| | | function vehiclePath(feature) { |
| | | if(path_xhr) path_xhr.abort(); |
| | | |
| | | var featureId = feature.getId(); |
| | |
| | | return; |
| | | } |
| | | |
| | | var coordinates = feature.getGeometry().getCoordinates(); |
| | | |
| | | var div = document.createElement('div'); |
| | | |
| | | var typeName; |
| | | var name = normalizeName(feature.get('name')); |
| | | var additional; |
| | | var table = document.createElement('table'); |
| | |
| | | loader.colSpan = thead.childNodes.length; |
| | | |
| | | addParaWithText(div, typeName).className = 'type'; |
| | | addParaWithText(div, name).className = 'name'; |
| | | |
| | | var nameElement = addParaWithText(div, name + ' '); |
| | | nameElement.className = 'name'; |
| | | |
| | | var showOnMapElement = addElementWithText(nameElement, 'a', lang.show_on_map); |
| | | var showOnMapFunction = function() { |
| | | setTimeout(function () {map.getView().animate({ |
| | | center: feature.getGeometry().getCoordinates(), |
| | | })}, 10); |
| | | }; |
| | | showOnMapElement.addEventListener('click', showOnMapFunction); |
| | | showOnMapElement.className = 'icon-zoom pad-left-icon'; |
| | | showOnMapElement.title = lang.show_on_map; |
| | | |
| | | if(additional) { |
| | | div.appendChild(additional); |
| | |
| | | window.location.hash = '#!' + feature.getId(); |
| | | } |
| | | |
| | | setTimeout(function () {map.getView().animate({ |
| | | center: feature.getGeometry().getCoordinates(), |
| | | }) }, 10); |
| | | |
| | | showOnMapFunction(); |
| | | |
| | | panel.show(div, function() { |
| | | if(!ignore_hashchange) { |
| | |
| | | if(feature.getId()) features.push(feature); |
| | | }); |
| | | |
| | | var feature = features[0]; |
| | | |
| | | if(features.length > 1) { |
| | | featureClicked(); |
| | | |
| | |
| | | |
| | | addParaWithText(div, lang.select_feature); |
| | | |
| | | var feature, p, a, full_type, typeName; |
| | | var p, a, full_type, typeName; |
| | | for(var i = 0; i < features.length; i++) { |
| | | feature = features[i]; |
| | | |
| | |
| | | if(typeof typeName === 'undefined') { |
| | | typeName = ''; |
| | | } |
| | | if(feature.get('vehicle_type')) { |
| | | typeName += ' ' + feature.get('vehicle_type').num; |
| | | } |
| | | |
| | | addElementWithText(a, 'span', typeName).className = 'small'; |
| | | a.appendChild(document.createTextNode(' ')); |
| | |
| | | return; |
| | | } |
| | | |
| | | var feature = features[0]; |
| | | if(!feature) { |
| | | stops_type.forEach(function(type) { |
| | | if(stops_layer[type].getVisible()) { |
| | |
| | | }); |
| | | vehicles_layer[type] = new ol.layer.Vector({ |
| | | source: vehicles_source[type], |
| | | renderMode: 'image', |
| | | }); |
| | | vehicles_last_update[type] = 0; |
| | | }); |
| | |
| | | }); |
| | | |
| | | // Change layer visibility on zoom |
| | | var change_resolution = function(e) { |
| | | var change_resolution = function() { |
| | | stops_type.forEach(function(type) { |
| | | if(type.startsWith('p')) { |
| | | stops_layer[type].setVisible(map.getView().getZoom() >= 16); |
| | |
| | | window.addEventListener('hashchange', hash); |
| | | |
| | | setTimeout(function() { |
| | | if(trams_xhr) trams_xhr.abort(); |
| | | if(trams_timer) clearTimeout(trams_timer); |
| | | if(buses_xhr) buses_xhr.abort(); |
| | | if(buses_timer) clearTimeout(buses_timer); |
| | | |
| | | 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); |
| | | } |