Compare commits
	
		
			No commits in common. "01af546b72db5330c2eacbba3e0b56075c3532bf" and "17d36a032ca7543adf547715ff17c86882adbd8c" have entirely different histories.
		
	
	
		
			01af546b72
			...
			17d36a032c
		
	
		| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
import express from "express";
 | 
					import express from "express";
 | 
				
			||||||
import * as courses from "../data/courses.js";
 | 
					import * as courses from "../tam/courses.js";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const app = express();
 | 
					const app = express();
 | 
				
			||||||
const port = 4321;
 | 
					const port = 4321;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
import network from "../data/network.json";
 | 
					import network from "../tam/network.json";
 | 
				
			||||||
import * as simulation from "../data/simulation.js";
 | 
					import * as simulation from "../tam/simulation.js";
 | 
				
			||||||
import * as map from "./map/index.js";
 | 
					import * as map from "./map/index.js";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Run courses simulation
 | 
					// Run courses simulation
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,7 +3,7 @@ import Point from "ol/geom/Point";
 | 
				
			||||||
import { fromExtent } from 'ol/geom/Polygon';
 | 
					import { fromExtent } from 'ol/geom/Polygon';
 | 
				
			||||||
import { Style, Icon } from "ol/style";
 | 
					import { Style, Icon } from "ol/style";
 | 
				
			||||||
import { sizes, cacheStyle, makeBorderColor, makeCourseColor } from "./common";
 | 
					import { sizes, cacheStyle, makeBorderColor, makeCourseColor } from "./common";
 | 
				
			||||||
import network from "../../data/network.json";
 | 
					import network from "../../tam/network.json";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const courseStyle = cacheStyle(
 | 
					const courseStyle = cacheStyle(
 | 
				
			||||||
    lineColor => {
 | 
					    lineColor => {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,4 @@
 | 
				
			||||||
import network from "../../data/network.json";
 | 
					import network from "../../tam/network.json";
 | 
				
			||||||
import * as routing from "../../data/routing.js";
 | 
					 | 
				
			||||||
import { cacheStyle, makeBorderColor, sizes } from "./common";
 | 
					import { cacheStyle, makeBorderColor, sizes } from "./common";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import GeoJSON from "ol/format/GeoJSON";
 | 
					import GeoJSON from "ol/format/GeoJSON";
 | 
				
			||||||
| 
						 | 
					@ -80,9 +79,13 @@ export const getLayers = () => {
 | 
				
			||||||
    const segmentsSource = new VectorSource();
 | 
					    const segmentsSource = new VectorSource();
 | 
				
			||||||
    const stopsSource = new VectorSource();
 | 
					    const stopsSource = new VectorSource();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Turn GeoJSON stops list into a vector source
 | 
					    // Turn GeoJSON stops list and segments list into vector sources
 | 
				
			||||||
    const readStops = hash => Object.values(hash).map(json => {
 | 
					    const readFeatures = hash => Object.values(hash).map(json => {
 | 
				
			||||||
        json.properties.lines = json.properties.routes.map(([lineRef]) => lineRef);
 | 
					        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);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (json.properties.lines.length >= 1) {
 | 
					        if (json.properties.lines.length >= 1) {
 | 
				
			||||||
            json.properties.colors = json.properties.lines.map(
 | 
					            json.properties.colors = json.properties.lines.map(
 | 
				
			||||||
| 
						 | 
					@ -95,27 +98,8 @@ export const getLayers = () => {
 | 
				
			||||||
        return geojsonReader.readFeature(json);
 | 
					        return geojsonReader.readFeature(json);
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    stopsSource.addFeatures(readStops(network.stops));
 | 
					    segmentsSource.addFeatures(readFeatures(network.segments));
 | 
				
			||||||
 | 
					    stopsSource.addFeatures(readFeatures(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
 | 
					    // Background layer on which the darker borders of line segments are drawn
 | 
				
			||||||
    const segmentsBorderLayer = new VectorImageLayer({
 | 
					    const segmentsBorderLayer = new VectorImageLayer({
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -44,6 +44,12 @@ const stopsSet = new Set(
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** Guess whether a stop comes directly before another one. */
 | 
					/** Guess whether a stop comes directly before another one. */
 | 
				
			||||||
const isPenultimateStop = (stop, finalStop) => {
 | 
					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);
 | 
					    const route = routing.findPath(stop, finalStop);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // If there is no way to link both stops, it can’t be
 | 
					    // If there is no way to link both stops, it can’t be
 | 
				
			||||||
| 
						 | 
					@ -79,6 +79,12 @@ class Course {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        const name = `${this.departureStop}-${this.arrivalStop}`;
 | 
					        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)) {
 | 
					        if (!(this.departureStop in network.stops)) {
 | 
				
			||||||
            console.warn(`Unknown stop: ${this.departureStop}`);
 | 
					            console.warn(`Unknown stop: ${this.departureStop}`);
 | 
				
			||||||
            this.segment = null;
 | 
					            this.segment = null;
 | 
				
			||||||
		Loading…
	
		Reference in New Issue