From 0bd33d6f00f135abfd2acd1cc981afcfb0a2f0a3 Mon Sep 17 00:00:00 2001
From: Jacek Kowalski <Jacek@jacekk.info>
Date: Sat, 04 May 2019 13:08:27 +0000
Subject: [PATCH] Switch to Nightwatch.js for browser tests
---
map.js | 128 +++++++++++++++++++-----------------------
1 files changed, 57 insertions(+), 71 deletions(-)
diff --git a/map.js b/map.js
index 1496bb5..c6f8bdc 100644
--- a/map.js
+++ b/map.js
@@ -20,7 +20,7 @@
var vehicles_info = {};
var stops_xhr = null;
-var stops_ignored = ['131'];
+var stops_ignored = ['131', '744'];
var stops_style = {
'sb': new ol.style.Style({
image: new ol.style.Circle({
@@ -151,9 +151,9 @@
function fail_ajax_generic(data, fnc) {
// abort() is not a failure
- if(data.readyState == 0 && data.statusText == 'abort') return;
+ if(data.readyState === 0) return;
- if(data.status == 0) {
+ if(data.status === 0) {
fnc(lang.error_request_failed_connectivity, data);
} else if (data.statusText) {
fnc(lang.error_request_failed_status.replace('$status', data.statusText), data);
@@ -226,8 +226,7 @@
stop_selected_layer.setStyle(style);
- var feature = null;
- var prefix = null;
+ var feature, prefix;
for(var i = 0; i < stops.length; i++) {
feature = null;
if(stops[i].getId) {
@@ -247,7 +246,7 @@
function unstyleSelectedFeatures() {
stop_selected_source.clear();
route_source.clear();
- if(feature_clicked && ttss_types.indexOf(feature_clicked.getId().substr(0, 1)) >= 0) {
+ if(feature_clicked && ttss_types.includes(feature_clicked.getId().substr(0, 1))) {
styleVehicle(feature_clicked);
}
}
@@ -279,7 +278,7 @@
var vehicle_name_space = vehicle.name.indexOf(' ');
vehicle.line = vehicle.name.substr(0, vehicle_name_space);
- vehicle.direction = vehicle.name.substr(vehicle_name_space+1);
+ vehicle.direction = normalizeName(vehicle.name.substr(vehicle_name_space+1));
if(special_directions[vehicle.direction]) {
vehicle.line = special_directions[vehicle.direction];
}
@@ -315,7 +314,7 @@
var stop = stops[i];
if(stop.category == 'other') continue;
- if(stops_ignored.indexOf(stop.shortName) >= 0) continue;
+ if(stops_ignored.includes(stop.shortName)) continue;
stop.geometry = getGeometry(stop);
var stop_feature = new ol.Feature(stop);
@@ -360,7 +359,7 @@
).done(function(data) {
if(!data || !data.paths || !data.paths[0] || !data.paths[0].wayPoints) return;
- var point = null;
+ var point;
var points = [];
for(var i = 0; i < data.paths[0].wayPoints.length; i++) {
point = data.paths[0].wayPoints[i];
@@ -375,6 +374,7 @@
}));
route_layer.setVisible(true);
});
+ return path_xhr;
}
function vehicleTable(feature, table) {
@@ -389,40 +389,45 @@
+ '?tripId=' + encodeURIComponent(feature.get('tripId'))
+ '&mode=departure'
).done(function(data) {
- if(!data.routeName || !data.directionText) {
+ if(typeof data.old === "undefined" || typeof data.actual === "undefined") {
return;
}
deleteChildren(table);
- for(var i = 0, il = data.old.length; i < il; i++) {
- var tr = document.createElement('tr');
- addCellWithText(tr, data.old[i].actualTime || data.old[i].plannedTime);
- addCellWithText(tr, data.old[i].stop_seq_num + '. ' + data.old[i].stop.name);
-
- tr.className = 'active';
- table.appendChild(tr);
- }
-
+ var all_departures = data.old.concat(data.actual);
+ var tr;
var stopsToMark = [];
-
- for(var i = 0, il = data.actual.length; i < il; i++) {
- var tr = document.createElement('tr');
- addCellWithText(tr, data.actual[i].actualTime || data.actual[i].plannedTime);
- addCellWithText(tr, data.actual[i].stop_seq_num + '. ' + data.actual[i].stop.name);
+ for(var i = 0, il = all_departures.length; i < il; i++) {
+ tr = document.createElement('tr');
+ addCellWithText(tr, all_departures[i].actualTime || all_departures[i].plannedTime);
+ addCellWithText(tr, all_departures[i].stop_seq_num + '. ' + normalizeName(all_departures[i].stop.name));
- stopsToMark.push('s' + ttss_type + data.actual[i].stop.id);
+ if(i >= data.old.length) {
+ stopsToMark.push('s' + ttss_type + all_departures[i].stop.id);
+ }
- if(data.actual[i].status == 'STOPPING') {
+ if(i < data.old.length) {
+ tr.className = 'active';
+ } else if(all_departures[i].status === 'STOPPING') {
tr.className = 'success';
}
table.appendChild(tr);
+ }
+
+ if(all_departures.length === 0) {
+ tr = document.createElement('tr');
+ table.appendChild(tr);
+ tr = addCellWithText(tr, lang.no_data);
+ tr.colSpan = '2';
+ tr.className = 'active';
}
markStops(stopsToMark, ttss_type, true);
feature_timer = setTimeout(function() { vehicleTable(feature, table); }, ttss_refresh);
}).fail(fail_ajax_popup);
+ return feature_xhr;
}
function stopTable(stopType, stopId, table, ttss_type) {
@@ -436,32 +441,22 @@
).done(function(data) {
deleteChildren(table);
- for(var i = 0, il = data.old.length; i < il; i++) {
- var tr = document.createElement('tr');
- addCellWithText(tr, data.old[i].patternText);
- var dir_cell = addCellWithText(tr, data.old[i].direction);
- var vehicle = parseVehicle(data.old[i].vehicleId);
+ 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++) {
+ tr = document.createElement('tr');
+ addCellWithText(tr, all_departures[i].patternText);
+ dir_cell = addCellWithText(tr, normalizeName(all_departures[i].direction));
+ vehicle = parseVehicle(all_departures[i].vehicleId);
dir_cell.appendChild(displayVehicle(vehicle));
- var status = parseStatus(data.old[i]);
- addCellWithText(tr, status);
- addCellWithText(tr, '');
+ status = parseStatus(all_departures[i]);
+ status_cell = addCellWithText(tr, status);
+ delay = parseDelay(all_departures[i]);
+ delay_cell = addCellWithText(tr, delay);
- tr.className = 'active';
- table.appendChild(tr);
- }
-
- for(var i = 0, il = data.actual.length; i < il; i++) {
- var tr = document.createElement('tr');
- addCellWithText(tr, data.actual[i].patternText);
- var dir_cell = addCellWithText(tr, data.actual[i].direction);
- var vehicle = parseVehicle(data.actual[i].vehicleId);
- dir_cell.appendChild(displayVehicle(vehicle));
- var status = parseStatus(data.actual[i]);
- var status_cell = addCellWithText(tr, status);
- var delay = parseDelay(data.actual[i]);
- var delay_cell = addCellWithText(tr, delay);
-
- if(status == lang.boarding_sign) {
+ if(i < data.old.length) {
+ tr.className = 'active';
+ } else if(status === lang.boarding_sign) {
tr.className = 'success';
status_cell.className = 'status-boarding';
} else if(parseInt(delay) > 9) {
@@ -476,6 +471,7 @@
feature_timer = setTimeout(function() { stopTable(stopType, stopId, table, ttss_type); }, ttss_refresh);
}).fail(fail_ajax_popup);
+ return feature_xhr;
}
function featureClicked(feature) {
@@ -493,7 +489,7 @@
var div = document.createElement('div');
var typeName;
- var name = feature.get('name');
+ var name = normalizeName(feature.get('name'));
var additional;
var table = document.createElement('table');
var thead = document.createElement('thead');
@@ -517,7 +513,7 @@
typeName = '';
}
// Vehicle
- else if(ttss_types.indexOf(type) >= 0) {
+ else if(ttss_types.includes(type)) {
var span = displayVehicle(feature.get('vehicle_type'));
additional = document.createElement('p');
@@ -537,7 +533,7 @@
styleVehicle(feature, true);
}
// Stop or stop point
- else if(['s', 'p'].indexOf(type) >= 0) {
+ else if(['s', 'p'].includes(type)) {
var ttss_type = feature.getId().substr(1, 1);
if(type == 's') {
var second_type = lang.departures_for_buses;
@@ -561,7 +557,6 @@
);
}
} else {
-
stopTable('stopPoint', feature.get('stopPoint'), tbody, ttss_type);
additional = document.createElement('p');
@@ -640,25 +635,26 @@
addParaWithText(div, lang.select_feature);
+ var feature, p, a, full_type, typeName;
for(var i = 0; i < features.length; i++) {
- var feature = features[i];
+ feature = features[i];
- var p = document.createElement('p');
- var a = document.createElement('a');
+ p = document.createElement('p');
+ a = document.createElement('a');
p.appendChild(a);
a.addEventListener('click', function(feature) { return function() {
featureClicked(feature);
}}(feature));
- var full_type = feature.getId().match(/^[a-z]+/)[0];
- var typeName = lang.types[full_type];
+ full_type = feature.getId().match(/^[a-z]+/)[0];
+ typeName = lang.types[full_type];
if(typeof typeName === 'undefined') {
typeName = '';
}
addElementWithText(a, 'span', typeName).className = 'small';
a.appendChild(document.createTextNode(' '));
- addElementWithText(a, 'span', feature.get('name'));
+ addElementWithText(a, 'span', normalizeName(feature.get('name')));
div.appendChild(p);
}
@@ -770,16 +766,6 @@
}
function init() {
- if(!window.jQuery) {
- fail(lang.jquery_not_loaded);
- return;
- }
-
- $.ajaxSetup({
- dataType: 'json',
- timeout: 10000,
- });
-
panel = new Panel(document.getElementById('panel'));
route_source = new ol.source.Vector({
@@ -948,7 +934,7 @@
stops_type.forEach(function(type) {
future_requests.push(updateStops(type.substr(0,1), type.substr(1,1)));
});
- $.when(future_requests).done(hash);
+ Deferred.all(future_requests).done(hash);
window.addEventListener('hashchange', hash);
--
Gitblit v1.9.1