Update front/back for new network data format
This commit is contained in:
parent
f8e8b18591
commit
01af546b72
|
@ -44,12 +44,6 @@ const stopsSet = new Set(
|
|||
|
||||
/** Guess whether a stop comes directly before another one. */
|
||||
const isPenultimateStop = (stop, finalStop) => {
|
||||
// If there is a standard segment linking both stops, it’s certainly
|
||||
// the penultimate stop
|
||||
if ((stop + "-" + finalStop) in network.segments) {
|
||||
return true;
|
||||
}
|
||||
|
||||
const route = routing.findPath(stop, finalStop);
|
||||
|
||||
// If there is no way to link both stops, it can’t be
|
||||
|
|
|
@ -79,12 +79,6 @@ class Course {
|
|||
|
||||
const name = `${this.departureStop}-${this.arrivalStop}`;
|
||||
|
||||
// Use predefined segment if it exists
|
||||
if (name in network.segments) {
|
||||
this.segment = network.segments[name];
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(this.departureStop in network.stops)) {
|
||||
console.warn(`Unknown stop: ${this.departureStop}`);
|
||||
this.segment = null;
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import network from "../../data/network.json";
|
||||
import * as routing from "../../data/routing.js";
|
||||
import { cacheStyle, makeBorderColor, sizes } from "./common";
|
||||
|
||||
import GeoJSON from "ol/format/GeoJSON";
|
||||
|
@ -79,13 +80,9 @@ export const getLayers = () => {
|
|||
const segmentsSource = new VectorSource();
|
||||
const stopsSource = new VectorSource();
|
||||
|
||||
// Turn GeoJSON stops list and segments list into vector sources
|
||||
const readFeatures = hash => Object.values(hash).map(json => {
|
||||
json.properties.lines = json.properties.routes.filter(
|
||||
// Only consider normal routes (excluding alternate routes)
|
||||
([lineRef, routeRef]) =>
|
||||
network.lines[lineRef].routes[routeRef].state === "normal"
|
||||
).map(([lineRef]) => lineRef);
|
||||
// Turn GeoJSON stops list into a vector source
|
||||
const readStops = hash => Object.values(hash).map(json => {
|
||||
json.properties.lines = json.properties.routes.map(([lineRef]) => lineRef);
|
||||
|
||||
if (json.properties.lines.length >= 1) {
|
||||
json.properties.colors = json.properties.lines.map(
|
||||
|
@ -98,8 +95,27 @@ export const getLayers = () => {
|
|||
return geojsonReader.readFeature(json);
|
||||
});
|
||||
|
||||
segmentsSource.addFeatures(readFeatures(network.segments));
|
||||
stopsSource.addFeatures(readFeatures(network.stops));
|
||||
stopsSource.addFeatures(readStops(network.stops));
|
||||
|
||||
// Link stops with segments
|
||||
const makeSegments = function* (lines) {
|
||||
for (const [lineRef, line] of Object.entries(network.lines)) {
|
||||
for (const route of line.routes) {
|
||||
for (let i = 0; i + 1 < route.stops.length; ++i) {
|
||||
const stop1 = network.stops[route.stops[i]].id;
|
||||
const stop2 = network.stops[route.stops[i + 1]].id;
|
||||
|
||||
const segment = routing.findSegment(stop1, stop2);
|
||||
segment.properties.lines = [lineRef];
|
||||
segment.properties.colors = [line.color];
|
||||
|
||||
yield geojsonReader.readFeature(segment);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
segmentsSource.addFeatures([...makeSegments(network.lines)]);
|
||||
|
||||
// Background layer on which the darker borders of line segments are drawn
|
||||
const segmentsBorderLayer = new VectorImageLayer({
|
||||
|
|
Loading…
Reference in New Issue