diff --git a/.github/workflows/cibuild.yml b/.github/workflows/cibuild.yml
index b69d998eca7..37e37a84945 100644
--- a/.github/workflows/cibuild.yml
+++ b/.github/workflows/cibuild.yml
@@ -121,7 +121,7 @@ jobs:
- name: Build GTFS GraphQL API documentation
run: |
- npm install -g @magidoc/cli@6.0.0
+ npm install -g @magidoc/cli@6.1.0
magidoc generate --stacktrace
- name: Deploy compiled HTML to Github pages
diff --git a/DEVELOPMENT_DECISION_RECORDS.md b/DEVELOPMENT_DECISION_RECORDS.md
index 10b9e005809..44aa031954f 100644
--- a/DEVELOPMENT_DECISION_RECORDS.md
+++ b/DEVELOPMENT_DECISION_RECORDS.md
@@ -16,7 +16,7 @@ tests. Expect to include some code cleanup as part of all PRs.
## Follow-Naming-Conventions
Use established terminology from GTFS, NeTEx or the existing OTP code. Make sure the code is easy
-to read and understand. [Follow naming conventions](CODE_CONVENTIONS.md#naming-conventions) .
+to read and understand. [Follow naming conventions](doc/dev/decisionrecords/NamingConventions.md#naming-conventions) .
## Write-Code-Documentation - Use JavaDoc
@@ -32,7 +32,7 @@ notes on `private` members and as inline comments.
**See also**
- [Developers-Guide > Code comments](doc/user/Developers-Guide.md#code-comments).
- - [Codestyle > Javadoc Guidlines](doc/dev/decisionrecords/Codestyle.md#javadoc-guidlines) - JavaDoc checklist
+ - [Codestyle > Javadoc Guidelines](doc/dev/decisionrecords/Codestyle.md#javadoc-guidlines) - JavaDoc checklist
## Document-Config-and-APIs
diff --git a/client/.env.development b/client/.env.development
index 1cb7d9235e3..e3b3585a5eb 100644
--- a/client/.env.development
+++ b/client/.env.development
@@ -1,3 +1,3 @@
VITE_API_URL=http://localhost:8080/otp/transmodel/v3
VITE_DEBUG_STYLE_URL=http://localhost:8080/otp/routers/default/inspector/vectortile/style.json
-VITE_GRAPHIQL_URL=http://localhost:8080/graphiql?flavor=transmodel
\ No newline at end of file
+VITE_GRAPHIQL_URL=http://localhost:8080/graphiql?flavor=transmodel
diff --git a/client/package-lock.json b/client/package-lock.json
index 5619317e0bd..00490ce16d6 100644
--- a/client/package-lock.json
+++ b/client/package-lock.json
@@ -9,6 +9,7 @@
"version": "0.0.0",
"dependencies": {
"@googlemaps/polyline-codec": "1.0.28",
+ "@js-temporal/polyfill": "0.4.4",
"bootstrap": "5.3.3",
"graphql": "16.9.0",
"graphql-request": "7.1.0",
@@ -2958,6 +2959,18 @@
"@jridgewell/sourcemap-codec": "^1.4.14"
}
},
+ "node_modules/@js-temporal/polyfill": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/@js-temporal/polyfill/-/polyfill-0.4.4.tgz",
+ "integrity": "sha512-2X6bvghJ/JAoZO52lbgyAPFj8uCflhTo2g7nkFzEQdXd/D8rEeD4HtmTEpmtGCva260fcd66YNXBOYdnmHqSOg==",
+ "dependencies": {
+ "jsbi": "^4.3.0",
+ "tslib": "^2.4.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/@kamilkisiela/fast-url-parser": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/@kamilkisiela/fast-url-parser/-/fast-url-parser-1.1.4.tgz",
@@ -8269,6 +8282,11 @@
"js-yaml": "bin/js-yaml.js"
}
},
+ "node_modules/jsbi": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/jsbi/-/jsbi-4.3.0.tgz",
+ "integrity": "sha512-SnZNcinB4RIcnEyZqFPdGPVgrg2AcnykiBy0sHVJQKHYeaLUvi3Exj+iaPpLnFVkDPZIV4U0yvgC9/R4uEAZ9g=="
+ },
"node_modules/jsdom": {
"version": "25.0.0",
"resolved": "https://registry.npmjs.org/jsdom/-/jsdom-25.0.0.tgz",
diff --git a/client/package.json b/client/package.json
index 2cd0d1f8937..0e822b4a641 100644
--- a/client/package.json
+++ b/client/package.json
@@ -18,6 +18,7 @@
},
"dependencies": {
"@googlemaps/polyline-codec": "1.0.28",
+ "@js-temporal/polyfill": "0.4.4",
"bootstrap": "5.3.3",
"graphql": "16.9.0",
"graphql-request": "7.1.0",
diff --git a/client/src/components/ItineraryList/ItineraryHeaderContent.tsx b/client/src/components/ItineraryList/ItineraryHeaderContent.tsx
index cf3ca227b63..fdfea81e7e4 100644
--- a/client/src/components/ItineraryList/ItineraryHeaderContent.tsx
+++ b/client/src/components/ItineraryList/ItineraryHeaderContent.tsx
@@ -1,8 +1,9 @@
import { TripPattern } from '../../gql/graphql.ts';
import { TIME_BOX_WIDTH, useHeaderContentStyleCalculations } from './useHeaderContentStyleCalculations.ts';
import { ItineraryHeaderLegContent } from './ItineraryHeaderLegContent.tsx';
-import { useMemo } from 'react';
+import { useContext, useMemo } from 'react';
import { formatTime } from '../../util/formatTime.ts';
+import { TimeZoneContext } from '../../hooks/TimeZoneContext.ts';
export function ItineraryHeaderContent({
tripPattern,
@@ -24,14 +25,16 @@ export function ItineraryHeaderContent({
latestEndTime,
);
+ const timeZone = useContext(TimeZoneContext);
+
const formattedStartTime = useMemo(
- () => formatTime(tripPattern.expectedStartTime, 'short'),
- [tripPattern.expectedStartTime],
+ () => formatTime(tripPattern.expectedStartTime, timeZone, 'short'),
+ [tripPattern.expectedStartTime, timeZone],
);
const formattedEndTime = useMemo(
- () => formatTime(tripPattern.expectedEndTime, 'short'),
- [tripPattern.expectedEndTime],
+ () => formatTime(tripPattern.expectedEndTime, timeZone, 'short'),
+ [tripPattern.expectedEndTime, timeZone],
);
return (
diff --git a/client/src/components/ItineraryList/ItineraryListContainer.tsx b/client/src/components/ItineraryList/ItineraryListContainer.tsx
index feaf29aa514..b474d2eb5ec 100644
--- a/client/src/components/ItineraryList/ItineraryListContainer.tsx
+++ b/client/src/components/ItineraryList/ItineraryListContainer.tsx
@@ -5,6 +5,8 @@ import { ItineraryHeaderContent } from './ItineraryHeaderContent.tsx';
import { useEarliestAndLatestTimes } from './useEarliestAndLatestTimes.ts';
import { ItineraryDetails } from './ItineraryDetails.tsx';
import { ItineraryPaginationControl } from './ItineraryPaginationControl.tsx';
+import { useContext } from 'react';
+import { TimeZoneContext } from '../../hooks/TimeZoneContext.ts';
export function ItineraryListContainer({
tripQueryResult,
@@ -21,6 +23,7 @@ export function ItineraryListContainer({
}) {
const [earliestStartTime, latestEndTime] = useEarliestAndLatestTimes(tripQueryResult);
const { containerRef, containerWidth } = useContainerWidth();
+ const timeZone = useContext(TimeZoneContext);
return (
{timeZone}
+
* Otherwise, recompute and return it.
*/
- public T get(@Nonnull Supplier