diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 5bf9d8a..68b4a26 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,152 +1,153 @@ add_subdirectory(graphql) set(kpublictransport_srcs departurereply.cpp departurerequest.cpp journeyreply.cpp journeyrequest.cpp locationreply.cpp locationrequest.cpp manager.cpp reply.cpp requestcontext.cpp vehiclelayoutreply.cpp vehiclelayoutrequest.cpp backends/abstractbackend.cpp backends/cache.cpp backends/deutschebahnbackend.cpp backends/deutschebahnvehiclelayoutparser.cpp backends/efabackend.cpp backends/efaparser.cpp backends/efacompactparser.cpp backends/efaxmlparser.cpp backends/hafasbackend.cpp backends/hafasparser.cpp backends/hafasmgatebackend.cpp backends/hafasmgateparser.cpp backends/hafasquerybackend.cpp backends/hafasqueryparser.cpp backends/navitiabackend.cpp backends/navitiaparser.cpp + backends/otp/otp.qrc backends/scopedxmlstreamreader.cpp datatypes/attribution.cpp datatypes/attributionutil.cpp datatypes/backend.cpp datatypes/departure.cpp datatypes/departureutil.cpp datatypes/disruption.cpp datatypes/journey.cpp datatypes/journeyutil.cpp datatypes/json.cpp datatypes/line.cpp datatypes/location.cpp datatypes/locationutil.cpp datatypes/mergeutil.cpp datatypes/notesutil.cpp datatypes/platform.cpp datatypes/platformutils.cpp datatypes/vehicle.cpp models/abstractquerymodel.cpp models/backendmodel.cpp models/departurequerymodel.cpp models/journeyquerymodel.cpp models/locationquerymodel.cpp models/vehiclelayoutquerymodel.cpp networks/networks.qrc ) ecm_qt_declare_logging_category(kpublictransport_srcs HEADER logging.h IDENTIFIER KPublicTransport::Log CATEGORY_NAME org.kde.kpublictransport) add_library(KPublicTransport ${kpublictransport_srcs}) generate_export_header(KPublicTransport BASE_NAME KPublicTransport) set_target_properties(KPublicTransport PROPERTIES VERSION ${KPUBLICTRANSPORT_VERSION_STRING} SOVERSION ${KPUBLICTRANSPORT_SOVERSION} EXPORT_NAME KPublicTransport ) target_include_directories(KPublicTransport PUBLIC "$") target_link_libraries(KPublicTransport PUBLIC Qt5::Gui PRIVATE Qt5::Network ZLIB::ZLIB ) ecm_generate_headers(KPublicTransport_FORWARDING_HEADERS HEADER_NAMES DepartureReply DepartureRequest JourneyReply JourneyRequest LocationReply LocationRequest Manager Reply VehicleLayoutReply VehicleLayoutRequest PREFIX KPublicTransport REQUIRED_HEADERS KPublicTransport_HEADERS ) # # ### for testing only ecm_generate_headers(KPublicTransport_Backends_FORWARDING_HEADERS HEADER_NAMES Cache HafasMgateParser NavitiaParser PREFIX KPublicTransport REQUIRED_HEADERS KPublicTransport_Backends_HEADERS RELATIVE backends ) ecm_generate_headers(KPublicTransport_Datatypes_FORWARDING_HEADERS HEADER_NAMES Attribution Backend Datatypes Departure Disruption Journey Line Location Platform Vehicle PREFIX KPublicTransport REQUIRED_HEADERS KPublicTransport_Datatypes_HEADERS RELATIVE datatypes ) ecm_generate_headers(KPublicTransport_Models_FORWARDING_HEADERS HEADER_NAMES AbstractQueryModel BackendModel DepartureQueryModel JourneyQueryModel LocationQueryModel VehicleLayoutQueryModel PREFIX KPublicTransport REQUIRED_HEADERS KPublicTransport_Models_HEADERS RELATIVE models ) install(TARGETS KPublicTransport EXPORT KPublicTransportTargets ${INSTALL_TARGETS_DEFAULT_ARGS}) install(FILES org_kde_kpublictransport.categories DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}) install(FILES ${KPublicTransport_FORWARDING_HEADERS} ${KPublicTransport_Datatypes_FORWARDING_HEADERS} ${KPublicTransport_Models_FORWARDING_HEADERS} DESTINATION ${KDE_INSTALL_INCLUDEDIR}/KPublicTransport ) install(FILES ${KPublicTransport_HEADERS} ${KPublicTransport_Datatypes_HEADERS} ${KPublicTransport_Models_HEADERS} ${CMAKE_CURRENT_BINARY_DIR}/kpublictransport_export.h DESTINATION ${KDE_INSTALL_INCLUDEDIR}/kpublictransport ) add_subdirectory(qmlplugin) if (TARGET Qt5::Quick) add_subdirectory(quick) endif() diff --git a/src/backends/otp/NOTES b/src/backends/otp/NOTES new file mode 100644 index 0000000..2712b11 --- /dev/null +++ b/src/backends/otp/NOTES @@ -0,0 +1 @@ +These queries can be tested interactively on https://api.digitransit.fi/graphiql/hsl for example. diff --git a/src/backends/otp/departure.graphql b/src/backends/otp/departure.graphql index 7770278..97ffcab 100644 --- a/src/backends/otp/departure.graphql +++ b/src/backends/otp/departure.graphql @@ -1,43 +1,48 @@ query departures($stopId: String!, $startTime: Long!) { - stop(id: $stopId) { + station(id: $stopId) { + gtfsId name lat lon + timezone stoptimesWithoutPatterns(startTime: $startTime, numberOfDepartures: 12) { + stop { + platformCode + } serviceDay scheduledArrival realtimeArrival scheduledDeparture realtimeDeparture realtime headsign trip { route { mode type desc shortName longName color textColor #bikesAllowed alerts { alertHeaderTextTranslations { language text } alertDescriptionTextTranslations { language text } alertEffect alertCause alertSeverityLevel } } tripHeadsign tripShortName } } } } diff --git a/src/backends/otp/journey.graphql b/src/backends/otp/journey.graphql index 7cda45a..7a8b9a0 100644 --- a/src/backends/otp/journey.graphql +++ b/src/backends/otp/journey.graphql @@ -1,57 +1,67 @@ query journeys($fromLat: Float!, $fromLon: Float!, $toLat: Float!, $toLon: Float!) { plan ( from: { lat: $fromLat, lon: $fromLon } to: { lat: $toLat, lon: $toLon } numItineraries: 3 ) { itineraries { legs { startTime endTime departureDelay arrivalDelay realTime distance mode transitLeg from { name lat lon + stop { + gtfsId + platformCode + timezone + } } to { name lat lon + stop { + gtfsId + platformCode + timezone + } } trip { route { mode type desc shortName longName color textColor #bikesAllowed alerts { alertHeaderTextTranslations { language text } alertDescriptionTextTranslations { language text } alertEffect alertCause alertSeverityLevel } } tripHeadsign tripShortName } } } } } diff --git a/src/backends/otp/otp.qrc b/src/backends/otp/otp.qrc new file mode 100644 index 0000000..3ec0981 --- /dev/null +++ b/src/backends/otp/otp.qrc @@ -0,0 +1,9 @@ + + + departure.graphql + journey.graphql + stationByCoordinate.graphql + stationByName.graphql + + + diff --git a/src/backends/otp/stationByCoordinate.graphql b/src/backends/otp/stationByCoordinate.graphql new file mode 100644 index 0000000..dde2665 --- /dev/null +++ b/src/backends/otp/stationByCoordinate.graphql @@ -0,0 +1,22 @@ +query stopsByCoordinate($lat: Float!, $lon: Float!) { + stopsByRadius(lat: $lat, lon: $lon, radius: 1000) { + edges { + node { + stop { + gtfsId + name + lat + lon + timezone + parentStation { + gtfsId + name + lat + lon + timezone + } + } + } + } + } +} diff --git a/src/backends/otp/stationByName.graphql b/src/backends/otp/stationByName.graphql new file mode 100644 index 0000000..44a88c4 --- /dev/null +++ b/src/backends/otp/stationByName.graphql @@ -0,0 +1,13 @@ +query stationsByName($name: String!) { + stations(name: $name) { + gtfsId + name + lat + lon + parentStation { gtfsId } + platformCode + #wheelchairBoarding + timezone + #alerts { alertHeaderText alertDescriptionText } + } +}