@@ -7,17 +7,71 @@ export const namedRouteNetworks = [
77 "US:TX:Harris:HCTRA" ,
88] ;
99
10+ let AsianHighwayBorders = { } ;
11+
12+ export async function fetchFeatures ( baseURL ) {
13+ if ( Object . keys ( AsianHighwayBorders ) . length !== 0 ) {
14+ return ;
15+ }
16+
17+ let fetchFile = async function ( name ) {
18+ let response = await fetch ( `features/${ name } .geojson` ) ;
19+ if ( response . ok ) {
20+ AsianHighwayBorders [ name ] = await response . json ( ) ;
21+ } else {
22+ throw response ;
23+ }
24+ } ;
25+ await Promise . all ( [
26+ "az-cn-ir" , "id" , "in" , "jp-kr" ,
27+ ] . map ( f => fetchFile ( f ) ) ) ;
28+ }
29+
1030export function getImageNameExpression ( routeIndex ) {
31+ const nullIsland = { type : "Polygon" , coordinates : [ [ [ 0 , 0 ] , [ 0 , 0 ] , [ 0 , 0 ] ] ] } ;
32+
1133 return [
12- "concat " ,
13- "shield\n " ,
34+ "let " ,
35+ "route " ,
1436 [ "get" , "route_" + routeIndex ] ,
1537 [
16- "match" ,
17- [ "get" , "route_" + routeIndex ] ,
18- namedRouteNetworks . map ( ( n ) => n + "=" ) ,
19- [ "concat" , "\n" , [ "get" , "name" ] ] ,
20- "" ,
38+ "concat" ,
39+ "shield\n" ,
40+ [ "var" , "route" ] ,
41+ [
42+ "match" ,
43+ [ "var" , "route" ] ,
44+ namedRouteNetworks . map ( ( n ) => n + "=" ) ,
45+ [ "concat" , "\n" , [ "get" , "name" ] ] ,
46+ "" ,
47+ ] ,
48+ [
49+ "match" ,
50+ [ "slice" , [ "var" , "route" ] , 0 , [ "index-of" , "=" , [ "var" , "route" ] ] ] ,
51+ [ "AsianHighway" , "AH" ] ,
52+ [
53+ "concat" ,
54+ "\n" ,
55+ [
56+ "case" ,
57+ // Azerbaijan, China, Iran
58+ [ "within" , AsianHighwayBorders [ "az-cn-ir" ] || nullIsland ] ,
59+ "green" ,
60+ // Japan, South Korea
61+ [ "within" , AsianHighwayBorders [ "jp-kr" ] || nullIsland ] ,
62+ "white" ,
63+ // Indonesia
64+ [ "within" , AsianHighwayBorders . id || nullIsland ] ,
65+ "white_id" ,
66+ // India
67+ [ "within" , AsianHighwayBorders . in || nullIsland ] ,
68+ "green_in" ,
69+ // Armenia, Cambodia, Malaysia, Myanmar, Philippines, Russia, Thailand, Vietnam
70+ "blue" ,
71+ ] ,
72+ ] ,
73+ "" ,
74+ ] ,
2175 ] ,
2276 ] ;
2377}
@@ -43,6 +97,7 @@ export function parseImageName(imageName) {
4397 return { imageName, network, ref, name } ;
4498}
4599
100+ await fetchFeatures ( ) ;
46101let shieldTextField = [ "format" ] ;
47102for ( var i = 1 ; i <= 6 ; i ++ ) {
48103 shieldTextField . push ( routeConcurrency ( i ) ) ;
0 commit comments