gtfs-to-html 2.1.9 → 2.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +15 -20
- package/.husky/pre-commit +4 -0
- package/CHANGELOG.md +268 -2
- package/README.md +59 -41
- package/app/index.js +46 -24
- package/bin/gtfs-to-html.js +5 -7
- package/config-sample.json +1 -0
- package/lib/file-utils.js +52 -15
- package/lib/formatters.js +123 -28
- package/lib/geojson-utils.js +32 -17
- package/lib/gtfs-to-html.js +96 -34
- package/lib/log-utils.js +23 -15
- package/lib/template-functions.js +80 -17
- package/lib/time-utils.js +10 -2
- package/lib/utils.js +763 -371
- package/package.json +27 -9
- package/public/css/timetable_styles.css +55 -49
- package/public/js/system-map.js +73 -60
- package/public/js/timetable-map.js +103 -96
- package/public/js/timetable-menu.js +32 -8
- package/views/default/formatting_functions.pug +0 -17
- package/views/default/overview_full.pug +2 -2
- package/views/default/timetable_stoptime.pug +2 -1
- package/views/default/timetablepage_full.pug +2 -2
- package/www/blog/2021-11-06-CSV-Export.md +26 -0
- package/www/docs/configuration.md +95 -84
- package/www/docs/current-usage.md +33 -32
- package/www/docs/introduction.md +13 -10
- package/www/docs/related-libraries.md +9 -2
- package/www/docs/reviewing-changes.md +12 -3
- package/www/docs/support.md +12 -0
- package/www/package.json +2 -5
- package/www/sidebars.js +3 -2
- package/www/static/img/gtfs-to-html-logo.svg +15 -61
- package/www/yarn.lock +1600 -2609
|
@@ -3,7 +3,7 @@ id: configuration
|
|
|
3
3
|
title: Configuration Options
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
GTFS-to-HTML reads its configuration from a JSON file. To get started, copy `config-sample.json` to `config.json` and then add your project's configuration to `config.json`.
|
|
6
|
+
GTFS-to-HTML reads its configuration from a JSON file. To get started, copy `config-sample.json` to `config.json` and then add your project's configuration to `config.json`.
|
|
7
7
|
|
|
8
8
|
cp config-sample.json config.json
|
|
9
9
|
|
|
@@ -13,52 +13,53 @@ Ensure that your config.json is [valid JSON](https://jsonformatter.curiousconcep
|
|
|
13
13
|
All files starting with `config*.json` are .gitignored - so you can create multiple configuration files such as `config-caltrain.json`.
|
|
14
14
|
:::
|
|
15
15
|
|
|
16
|
-
| option
|
|
17
|
-
|
|
|
18
|
-
| [`agencies`](#agencies)
|
|
19
|
-
| [`allowEmptyTimetables`](#allowemptytimetables)
|
|
20
|
-
| [`beautify`](#beautify)
|
|
21
|
-
| [`coordinatePrecision`](#coordinateprecision)
|
|
22
|
-
| [`dateFormat`](#dateformat)
|
|
23
|
-
| [`dayShortStrings`](#dayshortstrings)
|
|
24
|
-
| [`dayStrings`](#daystrings)
|
|
25
|
-
| [`debug`](#debug)
|
|
26
|
-
| [`defaultOrientation`](#defaultorientation)
|
|
27
|
-
| [`effectiveDate`](#effectivedate)
|
|
28
|
-
| [`interpolatedStopSymbol`](#interpolatedstopsymbol)
|
|
29
|
-
| [`interpolatedStopText`](#interpolatedstoptext)
|
|
30
|
-
| [`linkStopUrls`](#linkStopurls)
|
|
31
|
-
| [`logFunction`](#logfunction)
|
|
32
|
-
| [`mapboxAccessToken`](#mapboxaccesstoken)
|
|
33
|
-
| [`menuType`](#menutype)
|
|
34
|
-
| [`noDropoffSymbol`](#nodropoffsymbol)
|
|
35
|
-
| [`noDropoffText`](#nodropofftext)
|
|
36
|
-
| [`noHead`](#nohead)
|
|
37
|
-
| [`noServiceSymbol`](#noservicesymbol)
|
|
38
|
-
| [`noServiceText`](#noservicetext)
|
|
39
|
-
| [`outputFormat`](#outputformat)
|
|
40
|
-
| [`noPickupSymbol`](#nopickupsymbol)
|
|
41
|
-
| [`noPickupText`](#nopickuptext)
|
|
42
|
-
| [`requestDropoffSymbol`](#requestdropoffsymbol)
|
|
43
|
-
| [`requestDropoffText`](#requestdropofftext)
|
|
44
|
-
| [`requestPickupSymbol`](#requestpickupsymbol)
|
|
45
|
-
| [`requestPickupText`](#requestpickuptext)
|
|
46
|
-
| [`serviceNotProvidedOnText`](#servicenotprovidedontext)
|
|
47
|
-
| [`serviceProvidedOnText`](#serviceprovidedontext)
|
|
48
|
-
| [`showArrivalOnDifference`](#showarrivalondifference)
|
|
49
|
-
| [`showMap`](#showmap)
|
|
50
|
-
| [`showOnlyTimepoint`](#showonlytimepoint)
|
|
51
|
-
| [`showRouteTitle`](#showroutetitle)
|
|
52
|
-
| [`showStopCity`](#showstopcity)
|
|
53
|
-
| [`showStopDescription`](#showstopdescription)
|
|
54
|
-
| [`
|
|
55
|
-
| [`
|
|
56
|
-
| [`
|
|
57
|
-
| [`
|
|
58
|
-
| [`
|
|
59
|
-
| [`
|
|
60
|
-
| [`
|
|
61
|
-
| [`
|
|
16
|
+
| option | type | description |
|
|
17
|
+
| --------------------------------------------------------------- | ---------------- | ------------------------------------------------------------------------------------------------ |
|
|
18
|
+
| [`agencies`](#agencies) | array | An array of GTFS files to be imported. |
|
|
19
|
+
| [`allowEmptyTimetables`](#allowemptytimetables) | boolean | Whether or not to generate timetables that have no trips. |
|
|
20
|
+
| [`beautify`](#beautify) | boolean | Whether or not to beautify the HTML output. |
|
|
21
|
+
| [`coordinatePrecision`](#coordinateprecision) | integer | Number of decimal places to include in geoJSON map output. |
|
|
22
|
+
| [`dateFormat`](#dateformat) | string | A string defining date format in moment.js style. |
|
|
23
|
+
| [`dayShortStrings`](#dayshortstrings) | array of strings | An array defining contractions of weekdays names from Monday to Sunday. |
|
|
24
|
+
| [`dayStrings`](#daystrings) | array of strings | An array defining weekdays names from Monday to Sunday. |
|
|
25
|
+
| [`debug`](#debug) | boolean | Enable logging of SQL queries and other info. |
|
|
26
|
+
| [`defaultOrientation`](#defaultorientation) | string | Specify timetable orientation, when not specified in `timetables.txt`. |
|
|
27
|
+
| [`effectiveDate`](#effectivedate) | string | A date to print at the top of the timetable. |
|
|
28
|
+
| [`interpolatedStopSymbol`](#interpolatedstopsymbol) | string | The symbol used to indicate that a timepoint isn't fixed, but just interpolated. |
|
|
29
|
+
| [`interpolatedStopText`](#interpolatedstoptext) | string | The text used to describe a timepoint isn't fixed, but just interpolated. |
|
|
30
|
+
| [`linkStopUrls`](#linkStopurls) | boolean | Whether or not to hyperlink timetable stop names to the `stop_url` defined in `stops.txt`. |
|
|
31
|
+
| [`logFunction`](#logfunction) | function | A custom logging function for handling output of logs. |
|
|
32
|
+
| [`mapboxAccessToken`](#mapboxaccesstoken) | string | The Mapbox access token for generating a map of the route. |
|
|
33
|
+
| [`menuType`](#menutype) | string | The type of menu to use for selecting timetables on a timetable page. |
|
|
34
|
+
| [`noDropoffSymbol`](#nodropoffsymbol) | string | The symbol used to indicate ta stop where no drop off is available. |
|
|
35
|
+
| [`noDropoffText`](#nodropofftext) | string | The text used to describe a stop where no drop off is available. |
|
|
36
|
+
| [`noHead`](#nohead) | boolean | Whether or not to skip the header and footer of the HTML document. |
|
|
37
|
+
| [`noServiceSymbol`](#noservicesymbol) | string | The symbol used when a specific trip does not serve a specified stop. |
|
|
38
|
+
| [`noServiceText`](#noservicetext) | string | The text used to describe a stop which is not served by a specific trip. |
|
|
39
|
+
| [`outputFormat`](#outputformat) | string | The file format of the timetables generated. Either `html`, `pdf` or `csv`. |
|
|
40
|
+
| [`noPickupSymbol`](#nopickupsymbol) | string | The symbol used to indicate a stop where no pickup is available. |
|
|
41
|
+
| [`noPickupText`](#nopickuptext) | string | The text used to describe a stop where no pickup is available. |
|
|
42
|
+
| [`requestDropoffSymbol`](#requestdropoffsymbol) | string | The symbol used to indicate a stop where riders must request a drop off. |
|
|
43
|
+
| [`requestDropoffText`](#requestdropofftext) | string | The text used to describe a stop where riders must request a drop off. |
|
|
44
|
+
| [`requestPickupSymbol`](#requestpickupsymbol) | string | The symbol used to indicate a stop where riders must request a pickup. |
|
|
45
|
+
| [`requestPickupText`](#requestpickuptext) | string | The text used to describe a stop where riders must request a pickup. |
|
|
46
|
+
| [`serviceNotProvidedOnText`](#servicenotprovidedontext) | string | The text used to label days where service is not provided. |
|
|
47
|
+
| [`serviceProvidedOnText`](#serviceprovidedontext) | string | The text used to label days where service is provided. |
|
|
48
|
+
| [`showArrivalOnDifference`](#showarrivalondifference) | float | Defines a difference between departure and arrival, on which arrival column/row will be shown. |
|
|
49
|
+
| [`showMap`](#showmap) | boolean | Whether or not to show a map of the route on the timetable. |
|
|
50
|
+
| [`showOnlyTimepoint`](#showonlytimepoint) | boolean | Whether or not all stops should be shown, or only stops with a `timepoint` value in `stops.txt`. |
|
|
51
|
+
| [`showRouteTitle`](#showroutetitle) | boolean | Whether or not to show the route title at the top of the timetable page. |
|
|
52
|
+
| [`showStopCity`](#showstopcity) | boolean | Whether or not to show each stop's city. |
|
|
53
|
+
| [`showStopDescription`](#showstopdescription) | boolean | Whether or not to show a stop description. |
|
|
54
|
+
| [`showStoptimesForRequestStops`](#showstoptimesforrequeststops) | boolean | Whether or not to show times for stops that require a request for pickup or dropoff. |
|
|
55
|
+
| [`skipImport`](#skipimport) | boolean | Whether or not to skip importing GTFS data into SQLite. |
|
|
56
|
+
| [`sortingAlgorithm`](#sortingalgorithm) | string | Defines the trip-sorting algorithm. |
|
|
57
|
+
| [`sqlitePath`](#sqlitepath) | string | A path to an SQLite database. Optional, defaults to using an in-memory database. |
|
|
58
|
+
| [`templatePath`](#templatepath) | string | Path to custom pug template for rendering timetable. |
|
|
59
|
+
| [`timeFormat`](#timeformat) | string | A string defining time format in moment.js style. |
|
|
60
|
+
| [`useParentStation`](#useparentstation) | boolean | Whether or not to use a stop's `parent_station`. |
|
|
61
|
+
| [`verbose`](#verbose) | boolean | Whether or not to print output to the console. |
|
|
62
|
+
| [`zipOutput`](#zipoutput) | boolean | Whether or not to zip the output into one zip file. |
|
|
62
63
|
|
|
63
64
|
### agencies
|
|
64
65
|
|
|
@@ -70,7 +71,8 @@ To find an agency's GTFS file, visit [transitfeeds.com](http://transitfeeds.com)
|
|
|
70
71
|
URL from the agency's website or you can use a URL generated from the transitfeeds.com
|
|
71
72
|
API along with your API token.
|
|
72
73
|
|
|
73
|
-
|
|
74
|
+
- Specify a download URL:
|
|
75
|
+
|
|
74
76
|
```
|
|
75
77
|
{
|
|
76
78
|
"agencies": [
|
|
@@ -82,7 +84,8 @@ API along with your API token.
|
|
|
82
84
|
}
|
|
83
85
|
```
|
|
84
86
|
|
|
85
|
-
|
|
87
|
+
- Specify a path to a zipped GTFS file:
|
|
88
|
+
|
|
86
89
|
```
|
|
87
90
|
{
|
|
88
91
|
"agencies": [
|
|
@@ -93,7 +96,9 @@ API along with your API token.
|
|
|
93
96
|
]
|
|
94
97
|
}
|
|
95
98
|
```
|
|
96
|
-
|
|
99
|
+
|
|
100
|
+
- Specify a path to an unzipped GTFS file:
|
|
101
|
+
|
|
97
102
|
```
|
|
98
103
|
{
|
|
99
104
|
"agencies": [
|
|
@@ -105,7 +110,7 @@ API along with your API token.
|
|
|
105
110
|
}
|
|
106
111
|
```
|
|
107
112
|
|
|
108
|
-
|
|
113
|
+
- Exclude files - if you don't want all GTFS files to be imported, you can specify an array of files to exclude.
|
|
109
114
|
|
|
110
115
|
```
|
|
111
116
|
{
|
|
@@ -122,7 +127,7 @@ API along with your API token.
|
|
|
122
127
|
}
|
|
123
128
|
```
|
|
124
129
|
|
|
125
|
-
|
|
130
|
+
- Optionally specify a proj4 projection string to correct poorly formed coordinates in the GTFS file
|
|
126
131
|
|
|
127
132
|
```
|
|
128
133
|
{
|
|
@@ -136,7 +141,7 @@ API along with your API token.
|
|
|
136
141
|
}
|
|
137
142
|
```
|
|
138
143
|
|
|
139
|
-
|
|
144
|
+
- Specify multiple agencies to be imported. Note that it is often better to have one configuration file per agency and call gtfs-to-html multiple times rather than have two different agencies in the same config file. If agencies have conflicting ids for routes, stops, calendars or more, GTFS-to-HTML will fail.
|
|
140
145
|
|
|
141
146
|
```
|
|
142
147
|
{
|
|
@@ -187,7 +192,7 @@ API along with your API token.
|
|
|
187
192
|
|
|
188
193
|
### daysShortStrings
|
|
189
194
|
|
|
190
|
-
{Array \[String\]} An array of strings defining contractions of weekday names. Specify from Monday to Sunday.
|
|
195
|
+
{Array \[String\]} An array of strings defining contractions of weekday names. Specify from Monday to Sunday.
|
|
191
196
|
|
|
192
197
|
```
|
|
193
198
|
"daysShortStrings": ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
|
|
@@ -195,7 +200,7 @@ API along with your API token.
|
|
|
195
200
|
|
|
196
201
|
### daysStrings
|
|
197
202
|
|
|
198
|
-
{Array \[String\]} An array of strings defining contractions of weekday names. Specify from Monday to Sunday.
|
|
203
|
+
{Array \[String\]} An array of strings defining contractions of weekday names. Specify from Monday to Sunday.
|
|
199
204
|
|
|
200
205
|
```
|
|
201
206
|
"daysStrings": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
|
|
@@ -251,28 +256,26 @@ API along with your API token.
|
|
|
251
256
|
|
|
252
257
|
### logFunction
|
|
253
258
|
|
|
254
|
-
{Function} If you want to route logs to a custom function, you can pass a function that takes a single `text` argument as `logFunction`. This can't be used when running GTFS-to-HTML as a command-line utility, only when included as part of a node.js app and passed in a config object to `gtfsToHtml()`.
|
|
259
|
+
{Function} If you want to route logs to a custom function, you can pass a function that takes a single `text` argument as `logFunction`. This can't be used when running GTFS-to-HTML as a command-line utility, only when included as part of a node.js app and passed in a config object to `gtfsToHtml()`. For example:
|
|
255
260
|
|
|
256
261
|
```javascript
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
gtfsToHtml(config);
|
|
262
|
+
import gtfsToHtml from 'gtfs-to-html';
|
|
263
|
+
|
|
264
|
+
const config = {
|
|
265
|
+
agencies: [
|
|
266
|
+
{
|
|
267
|
+
agency_key: 'county-connection',
|
|
268
|
+
url: 'http://countyconnection.com/GTFS/google_transit.zip',
|
|
269
|
+
exclude: ['shapes'],
|
|
270
|
+
},
|
|
271
|
+
],
|
|
272
|
+
logFunction: function (text) {
|
|
273
|
+
// Do something with the logs here, like save it or send it somewhere
|
|
274
|
+
console.log(text);
|
|
275
|
+
},
|
|
276
|
+
};
|
|
277
|
+
|
|
278
|
+
gtfsToHtml(config);
|
|
276
279
|
```
|
|
277
280
|
|
|
278
281
|
### mapboxAccessToken
|
|
@@ -309,7 +312,7 @@ API along with your API token.
|
|
|
309
312
|
|
|
310
313
|
### noHead
|
|
311
314
|
|
|
312
|
-
{Boolean} Whether or not to skip the HTML head and footer when generating the HTML. This is useful for creating embeddable HTML without `<html>`, `<head>` or `<body>` tags. Defaults to `false`. Ignored if `outputFormat` is set to `pdf`.
|
|
315
|
+
{Boolean} Whether or not to skip the HTML head and footer when generating the HTML. This is useful for creating embeddable HTML without `<html>`, `<head>` or `<body>` tags. Defaults to `false`. Ignored if `outputFormat` is set to `pdf` or `csv`.
|
|
313
316
|
|
|
314
317
|
```
|
|
315
318
|
"noHead": false
|
|
@@ -349,7 +352,7 @@ API along with your API token.
|
|
|
349
352
|
|
|
350
353
|
### outputFormat
|
|
351
354
|
|
|
352
|
-
{String} The file format of the timetables generated. Either `html` or `
|
|
355
|
+
{String} The file format of the timetables generated. Either `html`, `pdf` or `csv`. Defaults to `html`.
|
|
353
356
|
|
|
354
357
|
```
|
|
355
358
|
"outputFormat": "html"
|
|
@@ -453,6 +456,14 @@ If you'd rather just get all stops and route info as geoJSON, see [gtfs-to-geojs
|
|
|
453
456
|
"showStopDescription": false
|
|
454
457
|
```
|
|
455
458
|
|
|
459
|
+
### showStoptimesForRequestStops
|
|
460
|
+
|
|
461
|
+
{Boolean} Whether or not to show times for stops that require a request for pickup or dropoff. Some agencies prefer to hide the actual stoptimes from stops that require a quest and instead just show the request pickup or dropoff symbols. See [`requestDropoffSymbol`](#requestdropoffsymbol) and [`requestPickupSymbol`](#requestpickupsymbol) for how to customize appearance. Defaults to `true`.
|
|
462
|
+
|
|
463
|
+
```
|
|
464
|
+
"showStoptimesForRequestStops": true
|
|
465
|
+
```
|
|
466
|
+
|
|
456
467
|
### skipImport
|
|
457
468
|
|
|
458
469
|
{Boolean} Whether or not to skip importing from GTFS into SQLite. Useful for re-running the script if the GTFS data has not changed. If you use this option and the GTFS file hasn't been imported or you don't have an `sqlitePath` to a non-in-memory database specified, you'll get an error. Defaults to `false`.
|
|
@@ -465,11 +476,11 @@ If you'd rather just get all stops and route info as geoJSON, see [gtfs-to-geojs
|
|
|
465
476
|
|
|
466
477
|
{String} Defines trip-sorting algorithm used to determine the order that trips are shown in timetables.
|
|
467
478
|
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
479
|
+
- `common` finds a common stop used by all trips and sorts by stoptimes at that stop. If there is no common stop for all trips, then `beginning` algorithm is used.
|
|
480
|
+
- `beginning` uses the first stoptime of each trip, which can be from different stops if not all trips have the same first stop. If a multiple trips have identical first stoptimes, the trip with the earlier last stoptimes comes first.
|
|
481
|
+
- `end` uses the last stoptime of each trip, which can be from different stops if not all trips have the same last stop. If a multiple trips have identical last stoptimes, the trip with the earlier first stoptimes comes first.
|
|
482
|
+
- `first` uses the first stop of the longest trip and sorts by stoptimes at that stop.
|
|
483
|
+
- `last` uses the last stop of the longest trip and sorts by stoptimes at that stop.
|
|
473
484
|
|
|
474
485
|
The default trip-sorting algorithm is `common`.
|
|
475
486
|
|
|
@@ -479,7 +490,7 @@ The default trip-sorting algorithm is `common`.
|
|
|
479
490
|
|
|
480
491
|
### sqlitePath
|
|
481
492
|
|
|
482
|
-
{String} A path to an SQLite database. Optional, defaults to using an in-memory database with a value of `:memory:`. If you want the data imported to
|
|
493
|
+
{String} A path to an SQLite database. Optional, defaults to using an in-memory database with a value of `:memory:`. If you want the data imported to persist, you need to specify a value for `sqlitePath`
|
|
483
494
|
|
|
484
495
|
```
|
|
485
496
|
"sqlitePath": "/tmp/gtfs"
|
|
@@ -487,7 +498,7 @@ The default trip-sorting algorithm is `common`.
|
|
|
487
498
|
|
|
488
499
|
### templatePath
|
|
489
500
|
|
|
490
|
-
{String} Path to a folder containing (pug)[https://pugjs.org/] template for rendering timetables. This is optional. Defaults to using the templates provided in `views/default`. All files within the `/views/custom` folder will be .gitignored, so you can copy the `views/default` folder to `views/custom/myagency` and make any modifications needed. Any custom views folder should contain pug templates called `timetablepage.pug`, `timetablepage_full.pug`,
|
|
501
|
+
{String} Path to a folder containing (pug)[https://pugjs.org/] template for rendering timetables. This is optional. Defaults to using the templates provided in `views/default`. All files within the `/views/custom` folder will be .gitignored, so you can copy the `views/default` folder to `views/custom/myagency` and make any modifications needed. Any custom views folder should contain pug templates called `timetablepage.pug`, `timetablepage_full.pug`, `overview.pug`, and `overview_full.pug`.
|
|
491
502
|
|
|
492
503
|
```
|
|
493
504
|
"templatePath": "views/custom/my-agency/"
|
|
@@ -5,41 +5,42 @@ title: Current Usage
|
|
|
5
5
|
|
|
6
6
|
## Transit agencies using GTFS-to-HTML
|
|
7
7
|
|
|
8
|
-
Many transit agencies use
|
|
8
|
+
Many transit agencies use GTFS-to-HTML to generate the schedule pages used on their websites, including:
|
|
9
9
|
|
|
10
|
-
| Agency
|
|
11
|
-
|
|
|
12
|
-
| [Advance Transit](https://advancetransit.com)
|
|
13
|
-
| [Brockton Area Transit Authority](https://ridebat.com)
|
|
14
|
-
| [Capital Transit](http://www.ridethecapitalt.org)
|
|
15
|
-
| [Capital Transit](https://juneaucapitaltransit.org)
|
|
16
|
-
| [Central Transit](https://centraltransit.org)
|
|
17
|
-
| [County Connection](https://countyconnection.com)
|
|
18
|
-
| [El Dorado Transit](http://eldoradotransit.com)
|
|
19
|
-
| [Greater Attleboro-Taunton Regional Transit Authority](https://www.gatra.org) | Attleboro-Taunton, Massachusetts
|
|
20
|
-
| [Humboldt Transit Authority](http://hta.org)
|
|
21
|
-
| [Kings Area Rural Transit (KART)](https://www.kartbus.org)
|
|
22
|
-
| [Madera County Connection](http://mcctransit.com)
|
|
23
|
-
| [Marin Transit](https://marintransit.org)
|
|
24
|
-
| [Morongo Basin Transit Authority](https://mbtabus.com)
|
|
25
|
-
| [Mountain Transit](http://mountaintransit.org)
|
|
26
|
-
| [MVgo](https://mvgo.org)
|
|
27
|
-
| [NW Connector](http://www.nworegontransit.org)
|
|
28
|
-
| [Palo Verde Valley Transit Agency](http://pvvta.com)
|
|
29
|
-
| [Petaluma Transit](http://transit.cityofpetaluma.net)
|
|
30
|
-
| [RTC Washoe](https://www.rtcwashoe.com)
|
|
31
|
-
| [Santa Barbara Metropolitan Transit District](https://sbmtd.gov)
|
|
32
|
-
| [Sonoma County Transit](http://sctransit.com)
|
|
33
|
-
| [Tahoe
|
|
34
|
-
| [
|
|
35
|
-
| [
|
|
36
|
-
| [
|
|
37
|
-
| [
|
|
10
|
+
| Agency | Location |
|
|
11
|
+
| ----------------------------------------------------------------------------- | ----------------------------------- |
|
|
12
|
+
| [Advance Transit](https://advancetransit.com) | Vermont |
|
|
13
|
+
| [Brockton Area Transit Authority](https://ridebat.com) | Brockton, Massachusetts |
|
|
14
|
+
| [Capital Transit](http://www.ridethecapitalt.org) | Helena, Montana |
|
|
15
|
+
| [Capital Transit](https://juneaucapitaltransit.org) | Juneau, Alaska |
|
|
16
|
+
| [Central Transit](https://centraltransit.org) | Ellensburg, Washington |
|
|
17
|
+
| [County Connection](https://countyconnection.com) | Contra Costa County, California |
|
|
18
|
+
| [El Dorado Transit](http://eldoradotransit.com) | El Dorado County, California |
|
|
19
|
+
| [Greater Attleboro-Taunton Regional Transit Authority](https://www.gatra.org) | Attleboro-Taunton, Massachusetts |
|
|
20
|
+
| [Humboldt Transit Authority](http://hta.org) | Humboldt County, California |
|
|
21
|
+
| [Kings Area Rural Transit (KART)](https://www.kartbus.org) | Kings County, California |
|
|
22
|
+
| [Madera County Connection](http://mcctransit.com) | Madera County, California |
|
|
23
|
+
| [Marin Transit](https://marintransit.org) | Marin County, California |
|
|
24
|
+
| [Morongo Basin Transit Authority](https://mbtabus.com) | Morongo Basin, California |
|
|
25
|
+
| [Mountain Transit](http://mountaintransit.org) | Big Bear Valley, California |
|
|
26
|
+
| [MVgo](https://mvgo.org) | Mountain View, California |
|
|
27
|
+
| [NW Connector](http://www.nworegontransit.org) | Northwest Oregon |
|
|
28
|
+
| [Palo Verde Valley Transit Agency](http://pvvta.com) | Palo Verde Valley, California |
|
|
29
|
+
| [Petaluma Transit](http://transit.cityofpetaluma.net) | Petaluma, California |
|
|
30
|
+
| [RTC Washoe](https://www.rtcwashoe.com) | Reno, Nevada |
|
|
31
|
+
| [Santa Barbara Metropolitan Transit District](https://sbmtd.gov) | Santa Barbara, California |
|
|
32
|
+
| [Sonoma County Transit](http://sctransit.com) | Sonoma County, California |
|
|
33
|
+
| [Tahoe Transportation District](https://www.tahoetransportation.org) | Lake Tahoe, California |
|
|
34
|
+
| [Tahoe Truckee Area Regional Transit](https://tahoetruckeetransit.com) | Truckee, California |
|
|
35
|
+
| [Transcollines](https://transcollines.ca) | Les Collines-de-l'Outaouais, Quebec |
|
|
36
|
+
| [Tulare County Area Transit](https://ridetcat.org) | Tulare County, California |
|
|
37
|
+
| [Victor Valley Transit](https://vvta.org) | Victory Valley, California |
|
|
38
|
+
| [Worcester Regional Transit Authority](https://therta.com) | Worcester, Massachusetts |
|
|
38
39
|
|
|
39
|
-
Are you using
|
|
40
|
+
Are you using GTFS-to-HTML? Let us know via email (brendan@blinktag.com) and we'll add you to this list.
|
|
40
41
|
|
|
41
42
|
## Projects using GTFS-to-HTML
|
|
42
43
|
|
|
43
|
-
|
|
44
|
+
- [`transit-custom-posts`](https://trilliumtransit.github.io/transit-custom-posts/) - a GTFS-optimized Wordpress plugin for transit websites. GTFS-to-HTML is used for generating the schedule pages.
|
|
44
45
|
|
|
45
|
-
|
|
46
|
+
- [run.gtfstohtml.com](https://run.gtfstohtml.com) provides a web based interface using GTFS-to-HTML. Find GTFS feeds for agenices, set configuration and generate a previewable and downloadable set of timetables all using your browser. Use GTFS-to-HTML without actually downloading any code or doing any configuration!
|
package/www/docs/introduction.md
CHANGED
|
@@ -4,33 +4,36 @@ title: Introduction
|
|
|
4
4
|
slug: /
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
GTFS-to-HTML creates human-readable, user-friendly transit timetables in HTML, PDF or CSV format directly from [GTFS transit data](https://developers.google.com/transit/gtfs/). Most transit agencies have schedule data in GTFS format but need to show each route's schedule to users on a website. This project automates the process of creating nicely formatted HTML timetables for inclusion on a transit agency website. This makes it easy to keep timetables up to date and accurate when schedule changes happen and reduces the likelihood of errors.
|
|
9
8
|
|
|
10
9
|
## Configurable and customizable
|
|
11
|
-
|
|
10
|
+
|
|
11
|
+
GTFS-to-HTML has many options that configure how timetables are presented. It also allows using a completely custom template which makes it easy to build chunks of HTML that will fit perfectly into any website using any HTML structure and classes that you'd like. Or, create printable PDF versions or CSV exports of timetables using the `outputFormat` config option.
|
|
12
12
|
|
|
13
13
|
## Accessibility for all
|
|
14
|
-
|
|
14
|
+
|
|
15
|
+
GTFS-to-HTML properly formats timetables to ensure they are screen-reader accessible and WCAG 2.0 compliant.
|
|
15
16
|
|
|
16
17
|
## Mobile responsiveness built in
|
|
17
|
-
|
|
18
|
+
|
|
19
|
+
Built-in styling makes GTFS-to-HTML timetables ready to size and scroll easily on mobile phones and tablets.
|
|
18
20
|
|
|
19
21
|
## Schedule changes? A cinch.
|
|
22
|
+
|
|
20
23
|
By generating future timetables and including dates in table metadata, your timetables can appear in advance of a schedule change, and you can validate that your new timetables and GTFS are correct.
|
|
21
24
|
|
|
22
25
|
## Notes
|
|
26
|
+
|
|
23
27
|
Custom notes, like "No express service during a full moon" can be programatically attached to stops, trips, timepoints or routes can be added using [additional files](/docs/additional-files).
|
|
24
28
|
|
|
25
29
|
## Auto-generated maps
|
|
26
|
-
|
|
30
|
+
|
|
31
|
+
GTFS-to-HTML can also generate a map for each route that can be included with the schedule page. The map shows all stops for the route and lists all routes that serve each stop. See the `showMap` configuration option below.
|
|
27
32
|
|
|
28
33
|
Note: If you only want maps of GTFS data, use the [gtfs-to-geojson](https://github.com/blinktaginc/gtfs-to-geojson) package instead and skip making timetables entirely. If offers many different formats of GeoJSON for routes and stops.
|
|
29
34
|
|
|
30
|
-
|
|
35
|
+
GTFS-to-HTML uses the [`node-gtfs`](https://github.com/blinktaginc/node-gtfs) library to handle importing and querying GTFS data.
|
|
31
36
|
|
|
32
37
|
## GTFS-to-HTML on the web
|
|
33
38
|
|
|
34
|
-
If you'd like to try out GTFS-to-HTML, you can do so entirely in your browser. [run.gtfstohtml.com](https://run.gtfstohtml.com) provides a web based interface for finding GTFS feeds, setting configuration and then generating downloadable sets of timetables. Use
|
|
35
|
-
|
|
36
|
-
|
|
39
|
+
If you'd like to try out GTFS-to-HTML, you can do so entirely in your browser. [run.gtfstohtml.com](https://run.gtfstohtml.com) provides a web based interface for finding GTFS feeds, setting configuration and then generating downloadable sets of timetables. Use GTFS-to-HTML without actually downloading any code or doing any configuration!
|
|
@@ -21,8 +21,15 @@ title: Related Libraries
|
|
|
21
21
|
|
|
22
22
|
[`https://github.com/blinktaginc/gtfs-to-chart`](https://github.com/blinktaginc/gtfs-to-chart)
|
|
23
23
|
|
|
24
|
-
##
|
|
24
|
+
## Transit Arrivals Widget
|
|
25
25
|
|
|
26
|
-
[
|
|
26
|
+
The [Transit Arrivals Widget](https://github.com/BlinkTagInc/transit-arrivals-widget) generates a user-friendly transit realtime arrival widget in HTML format directly from GTFS and GTFS-RT transit data. Most transit agencies have schedule data in GTFS format and many publish realtime arrivals using GTFS-RT. This project generates HTML, JS and CSS for use on a transit agency website to allow users to see when the next vehicle is arriving at a specific stop and includes features like caching, auto-refresh, url parameters and custom templates.
|
|
27
27
|
|
|
28
28
|
[`https://github.com/BlinkTagInc/transit-arrivals-widget`](https://github.com/BlinkTagInc/transit-arrivals-widget)
|
|
29
|
+
|
|
30
|
+
## GTFS Text-to-Speech Tester
|
|
31
|
+
|
|
32
|
+
The [GTFS Text-to-Speech Tester](https://github.com/BlinkTagInc/node-gtfs-tts) is a command-line tool that will read all GTFS stop names using Text-to-Speech and allow flagging which names need Text-to-Speech values for tts_stop_name in stops.txt. Using this tool is the quickest way to determine which stops need phoenetic spellings, abbreviations written out, large digits written as words, ordinals written out or other changes so that they can be read.
|
|
33
|
+
|
|
34
|
+
[`https://github.com/BlinkTagInc/node-gtfs-tts`](https://github.com/BlinkTagInc/node-gtfs-tts)
|
|
35
|
+
|
|
@@ -1,11 +1,20 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: reviewing-changes
|
|
3
|
-
title: Reviewing changes
|
|
3
|
+
title: Reviewing changes between schedule updates
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
When an agency releases an updated GTFS file, it can be useful to review what has changed when generating HTML timetables.
|
|
6
|
+
When an agency updates their schedule and releases an updated GTFS file, it can be useful to review what has changed when generating HTML timetables. There are two ways to review what has changed:
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
## Use `git`
|
|
9
|
+
|
|
10
|
+
Use git to version control the output of GTFS-to-HTML. Make a git repository for this purpose and check in a set of timetable HTML files. Then, when generating updated timetables overwrite the old timetables and review the changes using your favorite git tool, such as [Github Desktop](https://desktop.github.com).
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
## Use `diff2html`
|
|
14
|
+
|
|
15
|
+
`diff2html` is a command line tool to easily compare two folders of html timetables.
|
|
16
|
+
|
|
17
|
+
First generate two folders of GTFS-to-HTML output to compare. To make it easy to see what has changed, set the `beautify` option to `true` in the config file for both sets of output.
|
|
9
18
|
|
|
10
19
|
Then, install diff2html:
|
|
11
20
|
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: contact
|
|
3
|
+
title: Questions, Feedback and Support
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Issues
|
|
7
|
+
|
|
8
|
+
GTFS-to-HTML is an open source project. If you encounter an issue when using it, please [open an issue on github](https://github.com/BlinkTagInc/gtfs-to-html/issues). Pull requests are welcome!
|
|
9
|
+
|
|
10
|
+
# Questions, Feedback and Support
|
|
11
|
+
|
|
12
|
+
Have questions about GTFS-to-HTML or need help integrating it into your agency's website? Email us at brendan@blinktag.com.
|
package/www/package.json
CHANGED
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
"deploy": "docusaurus deploy"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@docusaurus/core": "^2.0.0-beta.
|
|
13
|
-
"@docusaurus/preset-classic": "^2.0.0-beta.
|
|
12
|
+
"@docusaurus/core": "^2.0.0-beta.9",
|
|
13
|
+
"@docusaurus/preset-classic": "^2.0.0-beta.9",
|
|
14
14
|
"clsx": "^1.1.1",
|
|
15
15
|
"react": "^17.0.2",
|
|
16
16
|
"react-dom": "^17.0.2"
|
|
@@ -26,8 +26,5 @@
|
|
|
26
26
|
"last 1 firefox version",
|
|
27
27
|
"last 1 safari version"
|
|
28
28
|
]
|
|
29
|
-
},
|
|
30
|
-
"resolutions": {
|
|
31
|
-
"node-fetch": "2.6.1"
|
|
32
29
|
}
|
|
33
30
|
}
|
package/www/sidebars.js
CHANGED
|
@@ -3,7 +3,8 @@ module.exports = {
|
|
|
3
3
|
'Getting Started': ['introduction', 'quick-start', 'current-usage'],
|
|
4
4
|
Configuration: ['configuration', 'custom-templates'],
|
|
5
5
|
'Additional GTFS Files': ['additional-files', 'timetables', 'timetable-stop-order', 'timetable-pages', 'stop-attributes', 'timetable-notes', 'timetable-notes-references'],
|
|
6
|
-
'Tips &
|
|
7
|
-
'Related Libraries': ['related-libraries']
|
|
6
|
+
'Tips & Tricks': ['previewing-html-output', 'processing-large-gtfs', 'logging-sql-queries', 'reviewing-changes'],
|
|
7
|
+
'Related Libraries': ['related-libraries'],
|
|
8
|
+
'Questions, Feedback and Support': ['contact']
|
|
8
9
|
}
|
|
9
10
|
};
|