ctucx.git: trainsearch

web based trip-planner, fork of https://cyberchaos.dev/yuka/trainsearch

commit 4192507a9dd421ff0d4bf0bc53670a48bb81f68b
parent 230110dd11683b4d74a35014be23a35a182c37bd
Author: Yureka <yuka@yuka.dev>
Date: Sun, 20 Feb 2022 18:21:40 +0100

canvas: render load factor
1 file changed, 19 insertions(+), 0 deletions(-)
M
src/canvas.js
|
19
+++++++++++++++++++
diff --git a/src/canvas.js b/src/canvas.js
@@ -18,6 +18,12 @@ const colorFor = (leg, type) => {
 	const product = leg.line && leg.line.product || 'walk';
 	return colors[type][product] || colors[type].default;
 };
+const loadFactorColors = {
+	"low-to-medium": [ "#777", "#ccc", "#ccc" ],
+	"high": [ "#777", "#777", "#ccc" ],
+	"very-high": [ "#ee8800", "#ee8800", "#ee8800"  ],
+	"exceptionally-high": [ "#cc3300", "#cc3300", "#cc3300" ],
+};
 
 const flatten = (arr) => [].concat(...arr);
 

@@ -287,6 +293,19 @@ const renderJourneys = () => {
 				ctx.drawImage(preRenderedText, Math.ceil(dpr * (x + ((rectWidth - preRenderedText.width/dpr)) / 2)), dpr * (y - 7.5));
 				ctx.scale(dpr, dpr);
 			}
+
+			if (leg.loadFactor) {
+				ctx.shadowColor = '#00000090';
+				ctx.shadowBlur = 2;
+				[ "#777", "#aaa", "#aaa" ];
+				for (let i = 0; i < 3; i++) {
+					ctx.beginPath();
+					ctx.fillStyle = loadFactorColors[leg.loadFactor][i];
+					ctx.arc(x + (i + 3) * rectWidth / 8, y + duration - 9.5, 5, 0, 2 * Math.PI, false);
+					ctx.fill();
+				}
+				ctx.shadowBlur = 0;
+			}
 		}
 
 		journey.legs.reverse();