2
import QtQuick.XmlListModel 2.0
3
import Ubuntu.Components 0.1
4
import Ubuntu.Components.Popups 0.1
5
import Ubuntu.Components.ListItems 0.1 as ListItem
6
import "datetime.js" as Datetime
7
import "utils.js" as Utils
13
property real margins: parent.margins
14
property string coreUrl: "http://journeyplanner.tfl.gov.uk/user/XML_TRIP_REQUEST2"
23
margins: tabRoot.margins
36
KeyNavigation.tab: destinationInput
39
id: originPopoverTrigger
41
enabled: originModel.count > 1
44
PopupUtils.open(originPopover)
53
KeyNavigation.backtab: originInput
56
id: destinationPopoverTrigger
58
enabled: destinationModel.count > 1
61
PopupUtils.open(destinationPopover)
71
text: i18n.tr("Search")
74
property bool busy: false
77
searchButton.busy = true
80
var doc = new XMLHttpRequest();
81
doc.onreadystatechange = function() {
82
if (doc.readyState === XMLHttpRequest.DONE) {
83
//console.log(doc.responseText)
84
tripModel.xml = doc.responseText
86
searchButton.busy = false
89
doc.open("GET", tabRoot.coreUrl +
90
'?language=en&sessionID=0&type_origin=' +
91
Utils.inferInputType(originInput.text) +
94
'&type_destination=' +
95
Utils.inferInputType(destinationInput.text) +
96
'&name_destination=' +
97
destinationInput.text +
98
'&itdDate=' + Datetime.iso8601DateString(now) +
99
'&itdTime=' + Datetime.iso8601TimeString(now))
105
running: searchButton.busy === true || tripModel.status === XmlListModel.Loading ||
106
originModel.status === XmlListModel.Loading || destinationModel.status === XmlListModel.Loading
118
top: searchQuery.bottom
121
bottom: parent.bottom
122
topMargin: tabRoot.margins
129
Component.onCompleted: push(tripPage)
139
delegate: tripDelegate
151
delegate: journeyDelegate
161
query: "/itdRequest/itdTripRequest/itdItinerary/itdRouteList/itdRoute"
165
query: "@changes/string()"
169
query: "@publicDuration/string()"
173
query: "itdPartialRouteList/itdPartialRoute[1]/itdPoint[1]/itdDateTime/itdTime/@hour/string()"
177
query: "itdPartialRouteList/itdPartialRoute[1]/itdPoint[1]/itdDateTime/itdTime/@minute/string()"
180
name: "routeTripIndex"
181
query: "@routeTripIndex/string()"
185
if (status === XmlListModel.Loading) {
187
destinationModel.reload()
200
text: Datetime.displayTimeString(departHour, departMinute)
222
searchResults.push(journeyPage)
223
journeyModel.pageIndex = routeTripIndex
224
journeyModel.reload()
232
property int pageIndex
233
query: "/itdRequest/itdTripRequest/itdItinerary/itdRouteList/itdRoute["+pageIndex+"]/itdPartialRouteList/itdPartialRoute"
236
name: "departLocation"
237
query: "itdPoint[1]/@name/string()"
241
query: "itdPoint[1]/itdDateTime/itdTime/@hour/string()"
245
query: "itdPoint[1]/itdDateTime/itdTime/@minute/string()"
248
name: "arriveLocation"
249
query: "itdPoint[2]/@name/string()"
253
query: "itdPoint[2]/itdDateTime/itdTime/@hour/string()"
257
query: "itdPoint[2]/itdDateTime/itdTime/@minute/string()"
261
query: "itdMeansOfTransport/@productName/string()"
265
query: "itdMeansOfTransport/@shortname/string()"
273
height: journeyLegData.height + tabRoot.margins
282
text: Datetime.displayTimeString(departHour, departMinute)
286
text: Datetime.displayTimeString(arriveHour, arriveMinute)
297
text: i18n.tr("From")
312
text: transport + " (" + line + ")"
322
query: "/itdRequest/itdTripRequest/itdOdv[@usage='origin']/itdOdvName/odvNameElem"
326
query: "@stopID/string()"
335
if (status === XmlListModel.Ready) {
337
originInput.text = get(0).stopName
358
delegate: ListItem.Standard {
361
originInput.text = stopName
362
PopupUtils.close(popover)
373
query: "/itdRequest/itdTripRequest/itdOdv[@usage='destination']/itdOdvName/odvNameElem"
377
query: "@stopID/string()"
386
if (status === XmlListModel.Ready) {
388
destinationInput.text = get(0).stopName
395
id: destinationPopover
407
model: destinationModel
409
delegate: ListItem.Standard {
412
destinationInput.text = stopName
413
PopupUtils.close(popover)