Check for empty names

This commit is contained in:
portree_kid 2020-04-16 20:54:50 +02:00
parent 826781647e
commit 4b908f57ce

View File

@ -44,7 +44,7 @@ async function checkGroundnet(data) {
var pushbackNodes = data.map(mapPushbackNodes).filter(n => n !== undefined); var pushbackNodes = data.map(mapPushbackNodes).filter(n => n !== undefined);
var edges = data.map(mapEdges).filter(n => n !== undefined); var edges = data.map(mapEdges).filter(n => n !== undefined);
this.max = parkings.length * runwayNodes.length + this.max = parkings.length * runwayNodes.length +
parkings.length; parkings.length;
this.postMessage(['max', this.max]); this.postMessage(['max', this.max]);
var graph = {}; var graph = {};
@ -69,14 +69,14 @@ async function checkGroundnet(data) {
logger('info', graph); logger('info', graph);
parkings.forEach(parkingNode => { parkings.forEach(parkingNode => {
runwayNodes.forEach(runwayNode => { runwayNodes.forEach(runwayNode => {
var ok = checkRoute(graph, parkingNode, runwayNode); var ok = checkRoute(graph, parkingNode, runwayNode);
if(ok) { if (ok) {
okNodes.push(parkingNode); okNodes.push(parkingNode);
okNodes.push(runwayNode); okNodes.push(runwayNode);
} else { } else {
console.log(`No route from ${parkingNode} to ${runwayNode}`); console.log(`No route from ${parkingNode} to ${runwayNode}`);
} }
this.postMessage(['progress', 1]); this.postMessage(['progress', 1]);
}); });
}); });
// Check forward parkings // Check forward parkings
@ -101,80 +101,87 @@ async function checkGroundnet(data) {
var okPushbacks = []; var okPushbacks = [];
parkings.forEach(parkingNode => { parkings.forEach(parkingNode => {
pushbackNodes.forEach(pushbackNode => { pushbackNodes.forEach(pushbackNode => {
var ok = checkRoute(noPushbackGraph, parkingNode, pushbackNode); var ok = checkRoute(noPushbackGraph, parkingNode, pushbackNode);
if(ok) { if (ok) {
okPushbacks.push(parkingNode); okPushbacks.push(parkingNode);
} }
this.postMessage(['progress', 1]); this.postMessage(['progress', 1]);
}); });
}); });
var wrongPushbackRoutes = parkings.filter( var wrongPushbackRoutes = parkings.filter(
function(e) { function (e) {
return this.indexOf(e) < 0; return this.indexOf(e) < 0;
} }
, okPushbacks ).map( , okPushbacks).map(
id => {return {id:id, message:'No way to pushback holdpoint'}} id => { return { id: id, message: 'No way to pushback holdpoint' } }
); );
okNodes = okNodes.filter((v,i) => okNodes.indexOf(v) === i); okNodes = okNodes.filter((v, i) => okNodes.indexOf(v) === i);
var allLegitimateEndNodes = parkings.concat(runwayNodes).concat(pushbackNodes); var allLegitimateEndNodes = parkings.concat(runwayNodes).concat(pushbackNodes);
var notOkNodes = parkings.concat(runwayNodes).filter( var notOkNodes = parkings.concat(runwayNodes).filter(
(v,i) => okNodes.indexOf(v) < 0 (v, i) => okNodes.indexOf(v) < 0
).map( ).map(
id => {return {id:id, message:'No way to each runway'}} id => { return { id: id, message: 'No way to each runway' } }
); );
if (parkings.length === 0) { if (parkings.length === 0) {
notOkNodes.push({id:0, message:'No parkings'}); notOkNodes.push({ id: 0, message: 'No parkings' });
} }
if (runwayNodes.length === 0) { if (runwayNodes.length === 0) {
notOkNodes.push({id:0, message:'No Runwaynodes'}); notOkNodes.push({ id: 0, message: 'No Runwaynodes' });
} }
var allEnds = Object.entries(graph).filter( var allEnds = Object.entries(graph).filter(
(v,i) => Object.keys(v[1]).length <= 1 (v, i) => Object.keys(v[1]).length <= 1
); );
// Ends that are not on Runway and not a Parking or Pushback // Ends that are not on Runway and not a Parking or Pushback
var danglingEnds = allEnds.filter( var danglingEnds = allEnds.filter(
(v,i) => allLegitimateEndNodes.indexOf(Number(v[0])) < 0 (v, i) => allLegitimateEndNodes.indexOf(Number(v[0])) < 0
).map( ).map(
v => {return {id:Number(v[0]), message:'Node not a legimate end'}} v => { return { id: Number(v[0]), message: 'Node not a legimate end' } }
); );
notOkNodes = notOkNodes.concat(danglingEnds); notOkNodes = notOkNodes.concat(danglingEnds);
// Ends that are not on Runway and not a Parking or Pushback // Ends that are not on Runway and not a Parking or Pushback
var wrongPushbackEnds = pushbackNodes.filter( var wrongPushbackEnds = pushbackNodes.filter(
(v,i) => allEnds.map(a => Number(a[0])).indexOf(Number(v)) < 0 (v, i) => allEnds.map(a => Number(a[0])).indexOf(Number(v)) < 0
).map( ).map(
v => {return {id:Number(v), message:'Pushback node not an end'}} v => { return { id: Number(v), message: 'Pushback node not an end' } }
); );
notOkNodes = notOkNodes.concat(wrongPushbackEnds).concat(wrongPushbackRoutes); notOkNodes = notOkNodes.concat(wrongPushbackEnds).concat(wrongPushbackRoutes);
var parkingNodes = data.map(mapParkingNode).filter(n => n !== undefined); var parkingNodes = data.map(mapParkingNode).filter(n => n !== undefined);
// Check for intersecting radii // Check for intersecting radii
parkingNodes.forEach(parkingNode => { parkingNodes.forEach(parkingNode => {
parkingNodes.forEach( parkingNode1 => { parkingNodes.forEach(parkingNode1 => {
console.log(parkingNode, parkingNode1); console.log(parkingNode, parkingNode1);
if(parkingNode.index !== parkingNode1.index) { if (parkingNode.index !== parkingNode1.index) {
var d = distance([parkingNode.lng, parkingNode.lat], var d = distance([parkingNode.lng, parkingNode.lat],
[parkingNode1.lng, parkingNode1.lat]); [parkingNode1.lng, parkingNode1.lat]);
if (d < parkingNode.radius + parkingNode1.radius) { if (d < parkingNode.radius + parkingNode1.radius) {
notOkNodes.push({id: parkingNode.index, message:'Intersecting node'}); notOkNodes.push({ id: parkingNode.index, message: 'Intersecting node' });
} }
} }
this.postMessage(['progress', 1]); this.postMessage(['progress', 1]);
}); });
}); });
// Check for intersecting radii
parkingNodes.forEach(parkingNode => {
if (!parkingNode.name || /^\s*$/.test(parkingNode.name)) {
notOkNodes.push({ id: parkingNode.index, message: 'Empty name' });
}
this.postMessage(['progress', 1]);
});
//Check for dual pushback/runway nodes //Check for dual pushback/runway nodes
runwayNodes.forEach(runwayNode => { runwayNodes.forEach(runwayNode => {
if( pushbackNodes.indexOf(runwayNode) >= 0 ) { if (pushbackNodes.indexOf(runwayNode) >= 0) {
notOkNodes.push({id: runwayNode, message:'Dual runway/ pushback node'}); notOkNodes.push({ id: runwayNode, message: 'Dual runway/ pushback node' });
} }
}); });
// check1(graph); // check1(graph);
// check2(); // check2();
// this.postMessage(['progress', 1]); // this.postMessage(['progress', 1]);
resolve(notOkNodes); resolve(notOkNodes);
} catch (error) { } catch (error) {
@ -187,7 +194,7 @@ async function checkGroundnet(data) {
function checkRoute(graph, from, to) { function checkRoute(graph, from, to) {
try { try {
var pathD = this.dijkstra.find_path(graph, from, to); var pathD = this.dijkstra.find_path(graph, from, to);
if (pathD.length>0) { if (pathD.length > 0) {
console.log(pathD); console.log(pathD);
} }
return true; return true;
@ -199,15 +206,15 @@ function checkRoute(graph, from, to) {
function check1(graph) { function check1(graph) {
var graph1 = { var graph1 = {
a: {b: 1, d: 1}, a: { b: 1, d: 1 },
b: {a: 1, c: 1, e: 1}, b: { a: 1, c: 1, e: 1 },
c: {b: 1, f: 1}, c: { b: 1, f: 1 },
d: {a: 1, e: 1, g: 1}, d: { a: 1, e: 1, g: 1 },
e: {b: 1, d: 1, f: 1, h: 1}, e: { b: 1, d: 1, f: 1, h: 1 },
f: {c: 1, e: 1, i: 1}, f: { c: 1, e: 1, i: 1 },
g: {d: 1, h: 1}, g: { d: 1, h: 1 },
h: {e: 1, g: 1, i: 1}, h: { e: 1, g: 1, i: 1 },
i: {f: 1, h: 1} i: { f: 1, h: 1 }
}; };
var path = this.dijkstra.find_path(graph, 'a', 'i'); var path = this.dijkstra.find_path(graph, 'a', 'i');
console.log(path); console.log(path);
@ -218,32 +225,34 @@ function check2(params) {
} }
var mapPushbackNodes = function (o) { var mapPushbackNodes = function (o) {
if(o.type === 'PushBack' ) if (o.type === 'PushBack')
return o.index; return o.index;
console.log(o); console.log(o);
} }
var mapParkings = function (o) { var mapParkings = function (o) {
if(o.type === 'parking') if (o.type === 'parking')
return o.index; return o.index;
console.log(o); console.log(o);
} }
var mapParkingNode = function (o) { var mapParkingNode = function (o) {
if(o.type === 'parking') if (o.type === 'parking')
return {index: o.index, lat:o.lat, lng:o.lng, radius: Number(o.radius)}; return { index: o.index, lat: o.lat, lng: o.lng, name: o.name, radius: Number(o.radius) };
console.log(o); console.log(o);
} }
var mapRunwayNodes = function (o) { var mapRunwayNodes = function (o) {
if(o.type === 'runway') if (o.type === 'runway')
return o.index; return o.index;
console.log(o); console.log(o);
} }
var mapEdges = function (o) { var mapEdges = function (o) {
if(o.type === 'poly') if (o.type === 'poly')
return {start: o.start, end: o.end, isPushBackRoute: o.isPushBackRoute !== undefined&& return {
o.isPushBackRoute!==0}; start: o.start, end: o.end, isPushBackRoute: o.isPushBackRoute !== undefined &&
o.isPushBackRoute !== 0
};
console.log(o); console.log(o);
} }