-
Notifications
You must be signed in to change notification settings - Fork 5
/
ptna-list.js
120 lines (96 loc) · 4.32 KB
/
ptna-list.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
function ptnalistdownload( include_agency ) {
var feed = document.getElementById("feed").firstChild.data;
var filename = feed + "-PTNA-CSV-List.txt";
var release_date = feed.match( /20\d\d-[0-1]\d-[0-3]\d$/ );
if ( release_date == null ) {
release_date = feed.match( /long-term$/ );
if ( release_date == null ) {
release_date = "";
} else {
feed = feed.replace( /-long-term$/, '' );
}
} else {
feed = feed.replace( / - 20\d\d-[0-1]\d-[0-3]\d$/, '' );
}
var ptna_list = "";
var r_table = document.getElementById( "gtfs-routes" );
if ( r_table ) {
var r_listnode = r_table.getElementsByTagName( "tbody" )[0];
var r_list = r_listnode.getElementsByTagName( "tr" );
// evaluate all gtfs-routes rows
for ( var i = 0; i < r_list.length; i++ ) {
var r_node = r_list[i];
var sub_span = r_node.getElementsByTagName( "span" );
var route_id = "unknown";
var route_short_name = "unknown";
var route_type = "bus";
var route_long_name = "unknown";
var agency_name = "unknown";
var valid_from = "";
var valid_until = "";
var valid_string = "";
// evaluate all columns of gtfs-routes rows
for ( var j = 0; j < sub_span.length; j++ )
{
var keyvalue = sub_span[j];
if ( keyvalue.firstChild ) {
var value = keyvalue.firstChild.data;
} else {
var value = "-1";
}
var key = keyvalue.getAttribute("class");
if ( key == "route_id" ) {
if ( value.match(';') != null ) {
route_id = '"' + value + '"';
} else {
route_id = value;
}
} else if ( key == "route_short_name" ) {
if ( value.match(';') != null ) {
route_short_name = '"' + value + '"';
} else {
route_short_name = value;
}
} else if ( key == "route_type" ) { // this is anyway the OSM route-type column wich appears after the GTFS route_type column
route_type = value.toLowerCase();
} else if ( key == "route_long_name") {
// if ( value.match(';') != null ) {
// route_long_name = '"' + value + '"';
// } else {
route_long_name = value;
// }
} else if ( key == "agency_name") {
if ( value.match(';') != null ) {
agency_name = '"' + value + '"';
} else {
agency_name = value;
}
} else if ( key == "valid_from") {
if ( value.match(/^20\d\d-[0-1]\d-[0-3]\d$/) != null ) {
valid_from = value;
}
} else if ( key == "valid_until") {
if ( value.match(/^20\d\d-[0-1]\d-[0-3]\d$/) != null ) {
valid_until = value;
}
}
}
if ( valid_from && valid_until ) {
valid_string = valid_from + ' - ' + valid_until + ': ';
}
if ( include_agency ) {
ptna_list += route_short_name + ';' + route_type + ';"' + valid_string + route_long_name + '";;;' + agency_name + ';' + feed + ';' + route_id + ";" + release_date + "\r\n";
} else {
ptna_list += route_short_name + ';' + route_type + ';"' + valid_string + route_long_name + '";;;;' + feed + ';' + route_id + ';' + release_date + "\r\n";
}
}
}
// create file
var element = document.createElement('a');
element.setAttribute( 'href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(ptna_list) );
element.setAttribute('download', filename);
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
}