Merge lp:~martin-borho/ubuntu-weather-app/TimeAndDate into lp:ubuntu-weather-app/obsolete.trunk
- TimeAndDate
- Merge into trunk
Status: | Merged |
---|---|
Approved by: | Martin Borho |
Approved revision: | 119 |
Merged at revision: | 120 |
Proposed branch: | lp:~martin-borho/ubuntu-weather-app/TimeAndDate |
Merge into: | lp:ubuntu-weather-app/obsolete.trunk |
Diff against target: |
514 lines (+191/-99) 7 files modified
components/CurrentWeather.qml (+2/-1) components/LastUpdatedComponent.qml (+2/-2) components/LocationManagerSheet.qml (+1/-1) components/LocationTab.qml (+8/-35) components/WeatherApi.js (+164/-46) tests/autopilot/ubuntu_weather_app/tests/test_settings.py (+12/-12) tests/autopilot/ubuntu_weather_app/tests/weatherdata.py (+2/-2) |
To merge this branch: | bzr merge lp:~martin-borho/ubuntu-weather-app/TimeAndDate |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Ubuntu Phone Apps Jenkins Bot | continuous-integration | Approve | |
Raúl Yeguas | Approve | ||
David Planella | Needs Fixing | ||
Review via email: mp+185907@code.launchpad.net |
Commit message
Locations now with their local date and time, "Updated" label now relative
Description of the change
* dates in weather data are now relating to the local time of the location
* "Updated" label now relative
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote : | # |
David Planella (dpm) wrote : | # |
29 + updatedLabel += i18n.tr("just now")
Both the calculator and the RSS reader use the same functions for relative time. I'd suggest to reuse those, which also take care of message plurals for internationaliz
Although I believe that the calculator app's design got recently changed not to use the relative times, RSS still does, and it might be worth sharing the code.
Martin Borho (martin-borho) wrote : | # |
OKay, I'll will have a look at it!
Martin Borho (martin-borho) wrote : | # |
Using the wording for the updated label as it was, like discussed in the design meeting.
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote : | # |
PASSED: Continuous integration, rev:118
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
Raúl Yeguas (neokore) wrote : | # |
Looks good. Great work, Martin!
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote : | # |
FAILED: Autolanding.
More details in the following jenkins job:
http://
Executed test runs:
FAILURE: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
- 119. By Martin Borho
-
merged from trunk
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote : | # |
PASSED: Continuous integration, rev:119
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
Preview Diff
1 | === modified file 'components/CurrentWeather.qml' |
2 | --- components/CurrentWeather.qml 2013-09-18 17:12:55 +0000 |
3 | +++ components/CurrentWeather.qml 2013-09-20 16:48:49 +0000 |
4 | @@ -86,7 +86,8 @@ |
5 | var temp = currentWeather.hourly.get(hourIndex)[mainView.settings["units"]].temp; |
6 | currentConditionTempContent.currentTemp = temp; |
7 | adjustBackground(Math.round(temp)); |
8 | - var dateTime = new Date(currentWeather.hourly.get(hourIndex).date); |
9 | + var dateData = currentWeather.hourly.get(hourIndex).date; |
10 | + var dateTime = new Date(dateData.year, dateData.month, dateData.date, dateData.hours, dateData.minutes) |
11 | var dateTimeString = Qt.formatDateTime(dateTime, 'dddd, dd MMMM - HH:mm'); |
12 | dateComponent.dateString = dateTimeString; |
13 | dateComponent.renderText(); |
14 | |
15 | === modified file 'components/LastUpdatedComponent.qml' |
16 | --- components/LastUpdatedComponent.qml 2013-09-06 11:50:23 +0000 |
17 | +++ components/LastUpdatedComponent.qml 2013-09-20 16:48:49 +0000 |
18 | @@ -30,12 +30,12 @@ |
19 | |
20 | onUpdateDateChanged: { |
21 | var updatedLabel = i18n.tr("Updated: "), |
22 | - updated = new Date(updateDate*1000), |
23 | + updated = new Date(parseInt(updateDate)), |
24 | updateTime = Qt.formatTime(updated, 'HH:mm'); |
25 | if(Qt.formatDateTime(updated, "yyyy-MM-dd") === Qt.formatDateTime(new Date(), "yyyy-MM-dd")) { |
26 | updatedLabel += i18n.tr("Today, ")+updateTime; |
27 | } else { |
28 | - updatedLabel += Qt.formatDate(updated, 'dddd, dd MMMM ')+updateTime |
29 | + updatedLabel += Qt.formatDate(updated, 'dddd, dd MMMM ')+updateTime; |
30 | } |
31 | lastUpdatedLabel.text = updatedLabel |
32 | } |
33 | |
34 | === modified file 'components/LocationManagerSheet.qml' |
35 | --- components/LocationManagerSheet.qml 2013-09-12 16:20:32 +0000 |
36 | +++ components/LocationManagerSheet.qml 2013-09-20 16:48:49 +0000 |
37 | @@ -134,7 +134,7 @@ |
38 | anchors.fill: parent |
39 | onClicked: { |
40 | // add dummy location |
41 | - addLocation({"service_id":2643743,"name":"London","country":"GB","service":"openweathermap"}) |
42 | + addLocation({"coord":{"lon":-0.12574,"lat":51.50853},"service_id":2643743,"name":"London","country":"GB","service":"openweathermap"}) |
43 | lookupItemAddButton.visible = false; |
44 | } |
45 | } |
46 | |
47 | === modified file 'components/LocationTab.qml' |
48 | --- components/LocationTab.qml 2013-09-10 18:21:23 +0000 |
49 | +++ components/LocationTab.qml 2013-09-20 16:48:49 +0000 |
50 | @@ -29,16 +29,11 @@ |
51 | property int locationIndex: 0 |
52 | property var locationData: {} |
53 | |
54 | - function formatTimestamp(timestamp, format) { |
55 | - var date = new Date(timestamp*1000); |
56 | + function formatTimestamp(dateData, format) { |
57 | + var date = new Date(dateData.year, dateData.month, dateData.date, dateData.hours, dateData.minutes) |
58 | return Qt.formatDate(date, format) |
59 | } |
60 | |
61 | - function formatTimestampToTime(timestamp, format) { |
62 | - var date = new Date(timestamp*1000); |
63 | - return Qt.formatTime(date, format) |
64 | - } |
65 | - |
66 | onVisibleChanged: { |
67 | var currentIndex = dailyForecastList.currentIndex; |
68 | if(visible == true && currentIndex > -1) { |
69 | @@ -52,42 +47,20 @@ |
70 | units = (mainView.settings.units === 'imperial') ? 'imperial' : 'metric', |
71 | wind_units = (mainView.settings.wind_units === 'mph') ? 'imperial' : 'metric', |
72 | dailyForecasts = locData.data, |
73 | - dailyLength = dailyForecasts.length; |
74 | + dailyLength = (dailyForecasts) ? dailyForecasts.length : 0; |
75 | |
76 | // set location data as property |
77 | locationData = locData; |
78 | |
79 | + // set last updated label |
80 | + lastUpdatedComponent.updateDate = (locationData.updated) ? locationData.updated : new Date().getTime() |
81 | + |
82 | // set daily forecasts |
83 | for(var x=0;x<dailyLength;x++) { |
84 | - var direction = "?"; |
85 | - var degrees = dailyForecasts[x].windDeg; |
86 | - if(degrees >=0 && degrees <= 30){ |
87 | - direction = "N"; |
88 | - } else if(degrees >30 && degrees <= 60){ |
89 | - direction = "NE"; |
90 | - } else if(degrees >60 && degrees <= 120){ |
91 | - direction = "E"; |
92 | - } else if(degrees >120 && degrees <= 150){ |
93 | - direction = "SE"; |
94 | - } else if(degrees >150 && degrees <= 210){ |
95 | - direction = "S"; |
96 | - } else if(degrees >210 && degrees <= 240){ |
97 | - direction = "SW"; |
98 | - } else if(degrees >240 && degrees <= 300){ |
99 | - direction = "W"; |
100 | - } else if(degrees >300 && degrees <= 330){ |
101 | - direction = "NW"; |
102 | - }else if(degrees >330 && degrees <= 360){ |
103 | - direction = "N"; |
104 | - } |
105 | - // set last updated label |
106 | - if(x===0 && dailyForecasts[x].current) { |
107 | - lastUpdatedComponent.updateDate = dailyForecasts[x].current.timestamp; |
108 | - } |
109 | // |
110 | dayForecastModel.append({ |
111 | dateRel: "",//Tomorrow", |
112 | - date: formatTimestamp(dailyForecasts[x].timestamp, 'dddd, dd MMMM'), |
113 | + date: formatTimestamp(dailyForecasts[x].date, 'dddd, dd MMMM'), |
114 | temp: (dailyForecasts[x]["current"] === undefined) ? dailyForecasts[x][units].tempMax : |
115 | dailyForecasts[x]["current"][units].temp, |
116 | tempMin: dailyForecasts[x][units].tempMin, |
117 | @@ -96,7 +69,7 @@ |
118 | cond: dailyForecasts[x].condition.id, |
119 | condIcon: dailyForecasts[x].icon, |
120 | wind_speed: dailyForecasts[x][wind_units].windSpeed, |
121 | - wind_dir: direction, |
122 | + wind_dir: dailyForecasts[x].windDir, |
123 | humid: dailyForecasts[x].humidity, |
124 | precip: +(dailyForecasts[x][units].rain || dailyForecasts[x][units].snow || 0).toFixed(2), |
125 | press: dailyForecasts[x].pressure, |
126 | |
127 | === modified file 'components/WeatherApi.js' |
128 | --- components/WeatherApi.js 2013-09-18 17:04:41 +0000 |
129 | +++ components/WeatherApi.js 2013-09-20 16:48:49 +0000 |
130 | @@ -3,7 +3,7 @@ |
131 | * Version of the response data format. |
132 | * Increase this number to force a refresh. |
133 | */ |
134 | -var RESPONSE_DATA_VERSION = 20130827; |
135 | +var RESPONSE_DATA_VERSION = 20130916; |
136 | |
137 | /** |
138 | * Helper functions |
139 | @@ -11,15 +11,95 @@ |
140 | function calcFahrenheit(celsius) { |
141 | return celsius * 1.8 + 32; |
142 | } |
143 | +// |
144 | function calcMph(ms) { |
145 | return ms*2.24; |
146 | } |
147 | +// |
148 | function calcInch(mm) { |
149 | return mm/25.4; |
150 | } |
151 | +// |
152 | function calcKmh(ms) { |
153 | return ms*3.6; |
154 | } |
155 | +// |
156 | +function calcWindDir(degrees) { |
157 | + var direction = "?"; |
158 | + if(degrees >=0 && degrees <= 30){ |
159 | + direction = "N"; |
160 | + } else if(degrees >30 && degrees <= 60){ |
161 | + direction = "NE"; |
162 | + } else if(degrees >60 && degrees <= 120){ |
163 | + direction = "E"; |
164 | + } else if(degrees >120 && degrees <= 150){ |
165 | + direction = "SE"; |
166 | + } else if(degrees >150 && degrees <= 210){ |
167 | + direction = "S"; |
168 | + } else if(degrees >210 && degrees <= 240){ |
169 | + direction = "SW"; |
170 | + } else if(degrees >240 && degrees <= 300){ |
171 | + direction = "W"; |
172 | + } else if(degrees >300 && degrees <= 330){ |
173 | + direction = "NW"; |
174 | + } else if(degrees >330 && degrees <= 360){ |
175 | + direction = "N"; |
176 | + } |
177 | + return direction; |
178 | +} |
179 | + |
180 | +// |
181 | +function getLocationTime(tstamp) { |
182 | + var locTime = new Date(tstamp); |
183 | + return { |
184 | + year: locTime.getUTCFullYear(), |
185 | + month: locTime.getUTCMonth(), |
186 | + date: locTime.getUTCDate(), |
187 | + hours: locTime.getUTCHours(), |
188 | + minutes: locTime.getUTCMinutes() |
189 | + } |
190 | +} |
191 | + |
192 | +var Timezones = (function() { |
193 | + var _apiBase = "http://api.geonames.org/timezoneJSON?username=uweatherdev" |
194 | + function _callUri(url, onSuccess, onError) { |
195 | + try { |
196 | + var xmlHttp = new XMLHttpRequest(); |
197 | + if (xmlHttp) { |
198 | + console.log("geonames.org: "+url); |
199 | + xmlHttp.open('GET', url, true); |
200 | + xmlHttp.onreadystatechange = function () { |
201 | + try { |
202 | + if (xmlHttp.readyState == 4) { |
203 | + if(xmlHttp.status === 200) { |
204 | + // using rawOffset, ignoring DST |
205 | + var json = JSON.parse(xmlHttp.responseText), |
206 | + offset = json.rawOffset*60*60*1000; |
207 | + onSuccess(offset) |
208 | + } else { |
209 | + onError({ |
210 | + msg: "timezones: wrong response http code, got "+xmlHttp.status, |
211 | + request: request |
212 | + }); |
213 | + } |
214 | + } |
215 | + } catch (e) { |
216 | + onError({msg: "something bad happened while calling geonames.org"}); |
217 | + } |
218 | + }; |
219 | + xmlHttp.send(null); |
220 | + } |
221 | + } catch (e) { |
222 | + onError({msg: "cannot call geonames.org"}); |
223 | + } |
224 | + } |
225 | + return { |
226 | + getTzOffset: function(coord, onSuccess, onError) { |
227 | + var apiUri = _apiBase+"&lat="+coord.lat+"&lng="+coord.lon; |
228 | + _callUri(apiUri, onSuccess, onError); |
229 | + } |
230 | + } |
231 | +})() |
232 | |
233 | var OpenWeatherMapApi = (function() { |
234 | /** |
235 | @@ -64,10 +144,10 @@ |
236 | return searchResult; |
237 | } |
238 | // |
239 | - function _buildDataPoint(data) { |
240 | + function _buildDataPoint(date, data) { |
241 | var result = { |
242 | timestamp: data.dt, |
243 | - date: Qt.formatDateTime(new Date(data.dt*1000), "yyyy-MM-dd hh:mm"), |
244 | + date: date, |
245 | metric: { |
246 | temp:data.main.temp, |
247 | windSpeed: calcKmh(data.main.speed), |
248 | @@ -83,6 +163,7 @@ |
249 | humidity: data.main.humidity, |
250 | pressure: data.main.pressure, |
251 | windDeg: data.main.deg, |
252 | + windDir: calcWindDir(data.main.deg), |
253 | icon: _icon_map[data.weather[0].icon], |
254 | condition: data.weather[0] |
255 | }; |
256 | @@ -116,26 +197,41 @@ |
257 | icon: _icon_map[data.weather[0].icon], |
258 | condition: data.weather[0], |
259 | windDeg: data.deg, |
260 | + windDir: calcWindDir(data.deg), |
261 | hourly: [] |
262 | } |
263 | return result; |
264 | } |
265 | // |
266 | - function formatResult(data) { |
267 | + function formatResult(data, location) { |
268 | var tmpResult = {}, |
269 | result = [], |
270 | day=null, |
271 | - today = Qt.formatDateTime(new Date(), "yyyy-MM-dd"); |
272 | + offset=(location.tzinfo && location.tzinfo.offset) ? location.tzinfo.offset: 0, |
273 | + localNow = getLocationTime(new Date().getTime()+offset), |
274 | + todayDate; |
275 | + print("["+location.name+"] "+JSON.stringify(localNow)) |
276 | data["daily"]["list"].forEach(function(dayData) { |
277 | - day = Qt.formatDateTime(new Date(dayData.dt*1000), "yyyy-MM-dd") |
278 | - tmpResult[day] = _buildDayFormat(day, dayData); |
279 | + var date = getLocationTime(((dayData.dt*1000)-1000)+offset), // minus 1 sec to handle +/-12 TZ |
280 | + day = date.year+"-"+date.month+"-"+date.date; |
281 | + if(!todayDate) { |
282 | + if(localNow.year+"-"+localNow.month+"-"+localNow.date > day) { |
283 | + // skip "yesterday" |
284 | + return; |
285 | + } |
286 | + todayDate = date; |
287 | + } |
288 | + tmpResult[day] = _buildDayFormat(date, dayData); |
289 | }) |
290 | - tmpResult[today]["current"] = _buildDataPoint(data["current"]); |
291 | + var today = todayDate.year+"-"+todayDate.month+"-"+todayDate.date |
292 | + tmpResult[today]["current"] = _buildDataPoint(todayDate, data["current"]); |
293 | if(data["forecast"] !== undefined) { |
294 | data["forecast"]["list"].forEach(function(hourData) { |
295 | - var date = new Date(hourData.dt*1000) |
296 | - day = Qt.formatDateTime(date, "yyyy-MM-dd"); |
297 | - tmpResult[day]["hourly"].push(_buildDataPoint(hourData)); |
298 | + var dateData = getLocationTime((hourData.dt*1000)+offset), |
299 | + day = dateData.year+"-"+dateData.month+"-"+dateData.date; |
300 | + if(tmpResult[day]) { |
301 | + tmpResult[day]["hourly"].push(_buildDataPoint(dateData, hourData)); |
302 | + } |
303 | }) |
304 | } |
305 | for(var d in tmpResult) { |
306 | @@ -185,10 +281,9 @@ |
307 | var formattedResult; |
308 | respData[request.type] = data; |
309 | if(respData["current"] !== undefined |
310 | - // |
311 | && respData["forecast"] !== undefined |
312 | && respData["daily"] !== undefined) { |
313 | - response["data"] = formatResult(respData) |
314 | + response["data"] = formatResult(respData, params.location) |
315 | onSuccess(response); |
316 | } |
317 | }), |
318 | @@ -199,11 +294,29 @@ |
319 | console.log("retry of "+err.request.url); |
320 | var retryFunc = handlerMap[err.request.type]; |
321 | apiCaller(retryFunc, addDataToResponse, onErrorHandler); |
322 | - }) |
323 | - apiCaller(handlerMap.current, addDataToResponse, retryHandler); |
324 | - // |
325 | - apiCaller(handlerMap.forecast, addDataToResponse, retryHandler); |
326 | - apiCaller(handlerMap.daily, addDataToResponse, retryHandler); |
327 | + }), |
328 | + callApi = function() { |
329 | + apiCaller(handlerMap.current, addDataToResponse, retryHandler); |
330 | + apiCaller(handlerMap.forecast, addDataToResponse, retryHandler); |
331 | + apiCaller(handlerMap.daily, addDataToResponse, retryHandler); |
332 | + } |
333 | + |
334 | + if(!params.location.tzinfo && params.location.coord) { |
335 | + // get the timezone offset for the location |
336 | + var tzSuccess = (function(offset) { |
337 | + if(offset !== undefined) { |
338 | + params.location.tzinfo = {offset: parseInt(offset)}; |
339 | + } |
340 | + callApi() |
341 | + }), |
342 | + tzError = (function(err) { |
343 | + print(JSON.stringify(err)); |
344 | + callApi() |
345 | + }); |
346 | + Timezones.getTzOffset(params.location.coord, tzSuccess, tzError) |
347 | + } else { |
348 | + callApi() |
349 | + } |
350 | } |
351 | } |
352 | |
353 | @@ -217,40 +330,40 @@ |
354 | function _getService(name) { |
355 | if(_services[name] !== undefined) { |
356 | return _services[name]; |
357 | - } |
358 | + } |
359 | return _services["openweathermap"]; |
360 | } |
361 | // |
362 | - function _sendRequest(request, onSuccess, onError) { |
363 | - var xmlHttp = new XMLHttpRequest(); |
364 | - if (xmlHttp) { |
365 | - console.log(request.url); |
366 | - xmlHttp.open('GET', request.url, true); |
367 | - xmlHttp.onreadystatechange = function () { |
368 | - try { |
369 | - if (xmlHttp.readyState == 4) { |
370 | - //console.log(xmlHttp.responseText); |
371 | - var json = JSON.parse(xmlHttp.responseText); |
372 | - if(xmlHttp.status === 200) { |
373 | - onSuccess(request,json); |
374 | - } else { |
375 | - onError({ |
376 | - msg: "wrong response http code, got "+xmlHttp.status, |
377 | - request: request |
378 | - }); |
379 | - } |
380 | + function _sendRequest(request, onSuccess, onError) { |
381 | + var xmlHttp = new XMLHttpRequest(); |
382 | + if (xmlHttp) { |
383 | + console.log(request.url); |
384 | + xmlHttp.open('GET', request.url, true); |
385 | + xmlHttp.onreadystatechange = function () { |
386 | + try { |
387 | + if (xmlHttp.readyState == 4) { |
388 | + //console.log(xmlHttp.responseText); |
389 | + var json = JSON.parse(xmlHttp.responseText); |
390 | + if(xmlHttp.status === 200) { |
391 | + onSuccess(request,json); |
392 | + } else { |
393 | + onError({ |
394 | + msg: "wrong response http code, got "+xmlHttp.status, |
395 | + request: request |
396 | + }); |
397 | } |
398 | - } catch (e) { |
399 | - onError({msg: "wrong response data format", request: request}); |
400 | } |
401 | - }; |
402 | - xmlHttp.send(null); |
403 | - } |
404 | + } catch (e) { |
405 | + onError({msg: "wrong response data format", request: request}); |
406 | + } |
407 | + }; |
408 | + xmlHttp.send(null); |
409 | + } |
410 | } |
411 | // |
412 | return { |
413 | // |
414 | - search: function(mode, params, onSuccess, onError) { |
415 | + search: function(mode, params, onSuccess, onError) { |
416 | var service = _getService(); |
417 | service.search(mode, params, _sendRequest, onSuccess, onError); |
418 | }, |
419 | @@ -272,7 +385,7 @@ |
420 | if(typeof WorkerScript != "undefined") { |
421 | WorkerScript.onMessage = function(message) { |
422 | // handles the response data |
423 | - var finished = function(result) { |
424 | + var finished = function(result) { |
425 | WorkerScript.sendMessage({ |
426 | action: message.action, |
427 | result: result |
428 | @@ -300,8 +413,13 @@ |
429 | if(locLength > 0) { |
430 | message.params.locations.forEach(function(loc) { |
431 | var updatedHnd = function (newData, cached) { |
432 | - locUpdated += 1; |
433 | - newData["save"] = (cached === true) ? false : true; |
434 | + locUpdated += 1; |
435 | + if(cached === true) { |
436 | + newData["save"] = false; |
437 | + } else { |
438 | + newData["save"] = true; |
439 | + newData["updated"] = new Date().getTime(); |
440 | + } |
441 | result.push(newData); |
442 | if(locUpdated === locLength) { |
443 | result.sort(sortDataResults); |
444 | |
445 | === modified file 'tests/autopilot/ubuntu_weather_app/tests/test_settings.py' |
446 | --- tests/autopilot/ubuntu_weather_app/tests/test_settings.py 2013-09-15 18:39:54 +0000 |
447 | +++ tests/autopilot/ubuntu_weather_app/tests/test_settings.py 2013-09-20 16:48:49 +0000 |
448 | @@ -39,11 +39,11 @@ |
449 | self.assertThat(lambda: self.main_window.get_objects('QQuickText', 'CurrentTempText'), Eventually(Not(Is(None)))) |
450 | current_temps = self.main_window.get_objects('QQuickText', 'CurrentTempText') |
451 | if units == "imperial": |
452 | - self.assertThat(current_temps[0].text, Eventually(Equals(u'72'))) |
453 | - self.assertThat(current_temps[1].text, Eventually(Equals(u'74'))) |
454 | + self.assertThat(current_temps[0].text, Eventually(Equals(u'56'))) |
455 | + self.assertThat(current_temps[1].text, Eventually(Equals(u'60'))) |
456 | else: |
457 | - self.assertThat(current_temps[0].text, Eventually(Equals(u'22'))) |
458 | - self.assertThat(current_temps[1].text, Eventually(Equals(u'24'))) |
459 | + self.assertThat(current_temps[0].text, Eventually(Equals(u'13'))) |
460 | + self.assertThat(current_temps[1].text, Eventually(Equals(u'16'))) |
461 | |
462 | def _check_wind_units(self, wind_units): |
463 | """Checks selected units by values from the first location tab""" |
464 | @@ -54,11 +54,11 @@ |
465 | self.assertThat(lambda: wind_component.get_object('QQuickText', 'WeatherDetailValue'), Eventually(Not(Is(None)))) |
466 | wind_value = wind_component.get_object('QQuickText', 'WeatherDetailValue') |
467 | if wind_units == "mph": |
468 | - self.assertThat(wind_unit.text, Eventually(Equals(u'mph NW'))) |
469 | - self.assertThat(wind_value.text, Eventually(Equals(u'3'))) |
470 | + self.assertThat(wind_unit.text, Eventually(Equals(u'mph W'))) |
471 | + self.assertThat(wind_value.text, Eventually(Equals(u'12'))) |
472 | else: |
473 | - self.assertThat(wind_unit.text, Eventually(Equals(u'km/h NW'))) |
474 | - self.assertThat(wind_value.text, Eventually(Equals(u'4'))) |
475 | + self.assertThat(wind_unit.text, Eventually(Equals(u'km/h W'))) |
476 | + self.assertThat(wind_value.text, Eventually(Equals(u'19'))) |
477 | |
478 | |
479 | def test_switch_scale(self): |
480 | @@ -192,11 +192,11 @@ |
481 | # while it's opened, units_selector returns false |
482 | # self.assertThat(units_selector.expanded, Eventually(Equals(True))) |
483 | |
484 | - # click celsius option |
485 | + # click kmh option |
486 | self._move_pointer_around() |
487 | self.assertThat(lambda: units_selector.select_many('ShapeItem')[1], Eventually(Not(Is(None)))) |
488 | - metric_option = units_selector.select_many('ShapeItem')[1] |
489 | - self.pointing_device.click_object(metric_option) |
490 | + kmh_option = units_selector.select_many('ShapeItem')[1] |
491 | + self.pointing_device.click_object(kmh_option) |
492 | |
493 | # confirm |
494 | self.assertThat(units_selector.selectedIndex, Eventually(Equals(0))) |
495 | @@ -205,5 +205,5 @@ |
496 | # wait for reload and check the metric values again |
497 | load_indicator = self.main_window.get_object('ActivityIndicator', 'LoadingSpinner') |
498 | self.assertThat(load_indicator.running, Eventually(Equals(False))) |
499 | - self._check_units('metric') |
500 | + self._check_wind_units('kmh') |
501 | |
502 | |
503 | === modified file 'tests/autopilot/ubuntu_weather_app/tests/weatherdata.py' |
504 | --- tests/autopilot/ubuntu_weather_app/tests/weatherdata.py 2013-08-28 18:48:35 +0000 |
505 | +++ tests/autopilot/ubuntu_weather_app/tests/weatherdata.py 2013-09-20 16:48:49 +0000 |
506 | @@ -6,6 +6,6 @@ |
507 | # by the Free Software Foundation. |
508 | locations_data = [] |
509 | |
510 | -locations_data.append("""{"updated":1377714141824,"save":false,"db":{"updated":"2013-08-28T18:22:21.824Z","id":1},"data":[{"icon":"few_clouds_day","timestamp":1377634835,"hourly":[{"icon":"few_clouds_day","timestamp":1377712800,"pressure":1026.61,"metric":{"temp":22.3,"windSpeed":null},"date":"2013-08-28 20:00","condition":{"icon":"02d","description":"sky is clear","id":800,"main":"Clear"},"humidity":47,"imperial":{"rain":null,"temp":72.14,"windSpeed":null}},{"icon":"few_clouds_night","timestamp":1377723600,"pressure":1027.08,"metric":{"temp":15.13,"windSpeed":null},"date":"2013-08-28 23:00","condition":{"icon":"02n","description":"sky is clear","id":800,"main":"Clear"},"humidity":72,"imperial":{"rain":null,"temp":59.234,"windSpeed":null}}],"windDeg":315,"pressure":1026.61,"current":{"icon":"clear_day","timestamp":1377713524,"pressure":1022,"service_id":2643743,"metric":{"temp":22.3,"windSpeed":null},"date":"2013-08-28 20:12","condition":{"icon":"01d","description":"Sky is Clear","id":800,"main":"Clear"},"humidity":43,"imperial":{"rain":null,"temp":72.14,"windSpeed":null},"service":"openweathermap"},"metric":{"tempMin":11.78,"windSpeed":4.32,"tempMax":22.3},"date":"2013-08-28","condition":{"icon":"02d","description":"sky is clear","id":800,"main":"Clear"},"humidity":47,"imperial":{"rain":null,"tempMin":53.204,"windSpeed":2.688,"tempMax":72.14}},{"icon":"few_clouds_day","timestamp":1377777600,"hourly":[{"icon":"clear_night","timestamp":1377734400,"pressure":1027,"metric":{"temp":11.78,"windSpeed":null},"date":"2013-08-29 02:00","condition":{"icon":"01n","description":"sky is clear","id":800,"main":"Clear"},"humidity":85,"imperial":{"rain":null,"temp":53.204,"windSpeed":null}},{"icon":"scattered_clouds_night","timestamp":1377745200,"pressure":1026.3,"metric":{"temp":10.95,"windSpeed":null},"date":"2013-08-29 05:00","condition":{"icon":"03n","description":"scattered clouds","id":802,"main":"Clouds"},"humidity":87,"imperial":{"rain":null,"temp":51.71,"windSpeed":null}},{"icon":"broken_clouds_day","timestamp":1377756000,"pressure":1026.82,"metric":{"temp":13.86,"windSpeed":null},"date":"2013-08-29 08:00","condition":{"icon":"04d","description":"overcast clouds","id":804,"main":"Clouds"},"humidity":92,"imperial":{"rain":null,"temp":56.948,"windSpeed":null}},{"icon":"scattered_clouds_day","timestamp":1377766800,"pressure":1026.97,"metric":{"temp":20.04,"windSpeed":null},"date":"2013-08-29 11:00","condition":{"icon":"03d","description":"scattered clouds","id":802,"main":"Clouds"},"humidity":68,"imperial":{"rain":null,"temp":68.072,"windSpeed":null}},{"icon":"few_clouds_day","timestamp":1377777600,"pressure":1026.1,"metric":{"temp":22.94,"windSpeed":null},"date":"2013-08-29 14:00","condition":{"icon":"02d","description":"sky is clear","id":800,"main":"Clear"},"humidity":56,"imperial":{"rain":null,"temp":73.292,"windSpeed":null}},{"icon":"clear_day","timestamp":1377788400,"pressure":1024.91,"metric":{"temp":23.6,"windSpeed":null},"date":"2013-08-29 17:00","condition":{"icon":"01d","description":"sky is clear","id":800,"main":"Clear"},"humidity":52,"imperial":{"rain":null,"temp":74.48,"windSpeed":null}},{"icon":"scattered_clouds_day","timestamp":1377799200,"pressure":1024.47,"metric":{"temp":21.96,"windSpeed":null},"date":"2013-08-29 20:00","condition":{"icon":"03d","description":"scattered clouds","id":802,"main":"Clouds"},"humidity":56,"imperial":{"rain":null,"temp":71.528,"windSpeed":null}},{"icon":"scattered_clouds_night","timestamp":1377810000,"pressure":1025.12,"metric":{"temp":18.95,"windSpeed":null},"date":"2013-08-29 23:00","condition":{"icon":"03n","description":"scattered clouds","id":802,"main":"Clouds"},"humidity":72,"imperial":{"rain":null,"temp":66.11,"windSpeed":null}}],"windDeg":250,"pressure":1026.1,"metric":{"tempMin":13.86,"windSpeed":11.34,"tempMax":23.6},"date":"2013-08-29","condition":{"icon":"02d","description":"sky is clear","id":800,"main":"Clear"},"humidity":56,"imperial":{"rain":null,"tempMin":56.948,"windSpeed":7.056,"tempMax":74.48}},{"icon":"clear_day","timestamp":1377864000,"hourly":[{"icon":"broken_clouds_night","timestamp":1377820800,"pressure":1024.86,"metric":{"temp":17.52,"windSpeed":null},"date":"2013-08-30 02:00","condition":{"icon":"04n","description":"overcast clouds","id":804,"main":"Clouds"},"humidity":84,"imperial":{"rain":null,"temp":63.536,"windSpeed":null}},{"icon":"few_clouds_night","timestamp":1377831600,"pressure":1024.75,"metric":{"temp":15.94,"windSpeed":null},"date":"2013-08-30 05:00","condition":{"icon":"02n","description":"few clouds","id":801,"main":"Clouds"},"humidity":92,"imperial":{"rain":null,"temp":60.692,"windSpeed":null}},{"icon":"scattered_clouds_day","timestamp":1377842400,"pressure":1024.38,"metric":{"temp":14.08,"windSpeed":null},"date":"2013-08-30 08:00","condition":{"icon":"03d","description":"scattered clouds","id":802,"main":"Clouds"},"humidity":98,"imperial":{"rain":null,"temp":57.344,"windSpeed":null}},{"icon":"scattered_clouds_day","timestamp":1377853200,"pressure":1024.66,"metric":{"temp":19.03,"windSpeed":null},"date":"2013-08-30 11:00","condition":{"icon":"03d","description":"scattered clouds","id":802,"main":"Clouds"},"humidity":71,"imperial":{"rain":null,"temp":66.254,"windSpeed":null}},{"icon":"clear_day","timestamp":1377864000,"pressure":1024.04,"metric":{"temp":21.58,"windSpeed":null},"date":"2013-08-30 14:00","condition":{"icon":"01d","description":"sky is clear","id":800,"main":"Clear"},"humidity":61,"imperial":{"rain":null,"temp":70.844,"windSpeed":null}},{"icon":"clear_day","timestamp":1377874800,"pressure":1023.15,"metric":{"temp":23.16,"windSpeed":null},"date":"2013-08-30 17:00","condition":{"icon":"01d","description":"sky is clear","id":800,"main":"Clear"},"humidity":56,"imperial":{"rain":null,"temp":73.688,"windSpeed":null}},{"icon":"clear_day","timestamp":1377885600,"pressure":1023.18,"metric":{"temp":22.16,"windSpeed":null},"date":"2013-08-30 20:00","condition":{"icon":"01d","description":"sky is clear","id":800,"main":"Clear"},"humidity":57,"imperial":{"rain":null,"temp":71.888,"windSpeed":null}},{"icon":"broken_clouds_night","timestamp":1377896400,"pressure":1024.55,"metric":{"temp":19.65,"windSpeed":null},"date":"2013-08-30 23:00","condition":{"icon":"04n","description":"overcast clouds","id":804,"main":"Clouds"},"humidity":71,"imperial":{"rain":null,"temp":67.37,"windSpeed":null}}],"windDeg":256,"pressure":1024.04,"metric":{"tempMin":14.08,"windSpeed":8.82,"tempMax":23.16},"date":"2013-08-30","condition":{"icon":"01d","description":"sky is clear","id":800,"main":"Clear"},"humidity":61,"imperial":{"rain":null,"tempMin":57.344,"windSpeed":5.488000000000001,"tempMax":73.688}},{"icon":"clear_day","timestamp":1377950400,"hourly":[{"icon":"scattered_clouds_night","timestamp":1377918000,"pressure":1026.39,"metric":{"temp":16.78,"windSpeed":null},"date":"2013-08-31 05:00","condition":{"icon":"03n","description":"scattered clouds","id":802,"main":"Clouds"},"humidity":73,"imperial":{"rain":null,"temp":62.20400000000001,"windSpeed":null}},{"icon":"clear_day","timestamp":1377928800,"pressure":1027.81,"metric":{"temp":13.42,"windSpeed":null},"date":"2013-08-31 08:00","condition":{"icon":"01d","description":"sky is clear","id":800,"main":"Clear"},"humidity":81,"imperial":{"rain":null,"temp":56.156,"windSpeed":null}},{"icon":"clear_day","timestamp":1377939600,"pressure":1029.01,"metric":{"temp":16.28,"windSpeed":null},"date":"2013-08-31 11:00","condition":{"icon":"01d","description":"sky is clear","id":800,"main":"Clear"},"humidity":64,"imperial":{"rain":null,"temp":61.304,"windSpeed":null}},{"icon":"clear_day","timestamp":1377950400,"pressure":1029,"metric":{"temp":18.34,"windSpeed":null},"date":"2013-08-31 14:00","condition":{"icon":"01d","description":"sky is clear","id":800,"main":"Clear"},"humidity":55,"imperial":{"rain":null,"temp":65.012,"windSpeed":null}},{"icon":"clear_day","timestamp":1377961200,"pressure":1028.6,"metric":{"temp":19.32,"windSpeed":null},"date":"2013-08-31 17:00","condition":{"icon":"01d","description":"sky is clear","id":800,"main":"Clear"},"humidity":49,"imperial":{"rain":null,"temp":66.77600000000001,"windSpeed":null}},{"icon":"clear_day","timestamp":1377972000,"pressure":1029.02,"metric":{"temp":17.88,"windSpeed":null},"date":"2013-08-31 20:00","condition":{"icon":"01d","description":"sky is clear","id":800,"main":"Clear"},"humidity":50,"imperial":{"rain":null,"temp":64.184,"windSpeed":null}},{"icon":"scattered_clouds_night","timestamp":1377982800,"pressure":1030.63,"metric":{"temp":15.39,"windSpeed":null},"date":"2013-08-31 23:00","condition":{"icon":"03n","description":"scattered clouds","id":802,"main":"Clouds"},"humidity":61,"imperial":{"rain":null,"temp":59.702,"windSpeed":null}}],"windDeg":314,"pressure":1029,"metric":{"tempMin":13.42,"windSpeed":9.9,"tempMax":19.32},"date":"2013-08-31","condition":{"icon":"01d","description":"sky is clear","id":800,"main":"Clear"},"humidity":55,"imperial":{"rain":null,"tempMin":56.156,"windSpeed":6.16,"tempMax":66.77600000000001}},{"icon":"clear_day","timestamp":1378036800,"hourly":[{"icon":"scattered_clouds_night","timestamp":1377993600,"pressure":1031.14,"metric":{"temp":13.6,"windSpeed":null},"date":"2013-09-01 02:00","condition":{"icon":"03n","description":"scattered clouds","id":802,"main":"Clouds"},"humidity":68,"imperial":{"rain":null,"temp":56.480000000000004,"windSpeed":null}},{"icon":"clear_night","timestamp":1378004400,"pressure":1031.39,"metric":{"temp":12.5,"windSpeed":null},"date":"2013-09-01 05:00","condition":{"icon":"01n","description":"sky is clear","id":800,"main":"Clear"},"humidity":75,"imperial":{"rain":null,"temp":54.5,"windSpeed":null}},{"icon":"broken_clouds_day","timestamp":1378015200,"pressure":1031.64,"metric":{"temp":10.94,"windSpeed":null},"date":"2013-09-01 08:00","condition":{"icon":"04d","description":"broken clouds","id":803,"main":"Clouds"},"humidity":79,"imperial":{"rain":null,"temp":51.692,"windSpeed":null}},{"icon":"scattered_clouds_day","timestamp":1378026000,"pressure":1032.45,"metric":{"temp":15.35,"windSpeed":null},"date":"2013-09-01 11:00","condition":{"icon":"03d","description":"scattered clouds","id":802,"main":"Clouds"},"humidity":59,"imperial":{"rain":null,"temp":59.629999999999995,"windSpeed":null}},{"icon":"clear_day","timestamp":1378036800,"pressure":1031.68,"metric":{"temp":18.63,"windSpeed":null},"date":"2013-09-01 14:00","condition":{"icon":"01d","description":"sky is clear","id":800,"main":"Clear"},"humidity":56,"imperial":{"rain":null,"temp":65.53399999999999,"windSpeed":null}},{"icon":"clear_day","timestamp":1378047600,"pressure":1030.42,"metric":{"temp":20.06,"windSpeed":null},"date":"2013-09-01 17:00","condition":{"icon":"01d","description":"sky is clear","id":800,"main":"Clear"},"humidity":50,"imperial":{"rain":null,"temp":68.108,"windSpeed":null}},{"icon":"few_clouds_day","timestamp":1378058400,"pressure":1029.96,"metric":{"temp":18.82,"windSpeed":null},"date":"2013-09-01 20:00","condition":{"icon":"02d","description":"few clouds","id":801,"main":"Clouds"},"humidity":51,"imperial":{"rain":null,"temp":65.876,"windSpeed":null}},{"icon":"broken_clouds_night","timestamp":1378069200,"pressure":1030.51,"metric":{"temp":15.97,"windSpeed":null},"date":"2013-09-01 23:00","condition":{"icon":"04n","description":"broken clouds","id":803,"main":"Clouds"},"humidity":61,"imperial":{"rain":null,"temp":60.746,"windSpeed":null}}],"windDeg":303,"pressure":1031.68,"metric":{"tempMin":10.94,"windSpeed":10.836,"tempMax":20.06},"date":"2013-09-01","condition":{"icon":"01d","description":"sky is clear","id":800,"main":"Clear"},"humidity":56,"imperial":{"rain":null,"tempMin":51.692,"windSpeed":6.7424,"tempMax":68.108}},{"icon":"rain_day","timestamp":1378119600,"hourly":[{"icon":"scattered_clouds_night","timestamp":1378080000,"pressure":1030.71,"metric":{"temp":13.64,"windSpeed":null},"date":"2013-09-02 02:00","condition":{"icon":"03n","description":"scattered clouds","id":802,"main":"Clouds"},"humidity":71,"imperial":{"rain":null,"temp":56.55200000000001,"windSpeed":null}}],"windDeg":300,"pressure":1037.92,"metric":{"tempMin":12.18,"windSpeed":14.112,"tempMax":20.77},"date":"2013-09-02","condition":{"icon":"10d","description":"light rain","id":500,"main":"Rain"},"humidity":0,"imperial":{"rain":null,"tempMin":53.924,"windSpeed":8.780800000000001,"tempMax":69.386}},{"icon":"rain_day","timestamp":1378206000,"hourly":[],"windDeg":289,"pressure":1037.1,"metric":{"rain":0.97,"tempMin":11.18,"windSpeed":13.751999999999999,"tempMax":20.56},"date":"2013-09-03","condition":{"icon":"10d","description":"light rain","id":500,"main":"Rain"},"humidity":0,"imperial":{"rain":0.03818897637795276,"tempMin":52.123999999999995,"windSpeed":8.5568,"tempMax":69.008}},{"icon":"rain_day","timestamp":1378292400,"hourly":[],"windDeg":259,"pressure":1036.97,"metric":{"rain":0.65,"tempMin":12.59,"windSpeed":8.784,"tempMax":20.56},"date":"2013-09-04","condition":{"icon":"10d","description":"light rain","id":500,"main":"Rain"},"humidity":0,"imperial":{"rain":0.025590551181102365,"tempMin":54.662,"windSpeed":5.4656,"tempMax":69.008}},{"icon":"clear_day","timestamp":1378378800,"hourly":[],"windDeg":269,"pressure":1029.24,"metric":{"tempMin":12.69,"windSpeed":18.936,"tempMax":21.59},"date":"2013-09-05","condition":{"icon":"01d","description":"sky is clear","id":800,"main":"Clear"},"humidity":0,"imperial":{"rain":null,"tempMin":54.842,"windSpeed":11.7824,"tempMax":70.862}},{"icon":"clear_day","timestamp":1378465200,"hourly":[],"windDeg":273,"pressure":1024.02,"metric":{"tempMin":10.49,"windSpeed":9.972,"tempMax":20.99},"date":"2013-09-06","condition":{"icon":"01d","description":"sky is clear","id":800,"main":"Clear"},"humidity":0,"imperial":{"rain":null,"tempMin":50.882000000000005,"windSpeed":6.2048000000000005,"tempMax":69.782}}],"format":20130827,"location":{"service_id":2643743,"name":"London","country":"GB","service":"openweathermap"}}""") |
511 | +locations_data.append("""{"location":{"coord":{"lon":-0.12574,"lat":51.50853},"service_id":2643743,"name":"London","tzinfo":{"offset":0},"country":"GB","dbId":0,"service":"openweathermap"},"db":{"updated":"2013-09-16T12:13:31.725Z","id":3},"format":20130916,"data":[{"date":{"year":2013,"month":8,"date":15,"hours":10,"minutes":59},"timestamp":1379329200,"metric":{"tempMin":12.25,"tempMax":15.4,"windSpeed":18.576,"rain":0,"snow":0},"imperial":{"tempMin":54.05,"tempMax":59.72,"windSpeed":11.5584,"rain":0,"snow":0},"pressure":1004.86,"humidity":71,"icon":"scattered_clouds_day","condition":{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03d"},"windDeg":275,"windDir":"W","hourly":[{"timestamp":1379322000,"date":{"year":2013,"month":8,"date":16,"hours":9,"minutes":0},"metric":{"temp":14.52,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":58.135999999999996,"windSpeed":null,"rain":0,"snow":0},"humidity":84,"pressure":1005.79,"windDir":"?","icon":"scattered_clouds_day","condition":{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03d"}},{"timestamp":1379332800,"date":{"year":2013,"month":8,"date":16,"hours":12,"minutes":0},"metric":{"temp":15.51,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":59.918,"windSpeed":null,"rain":0,"snow":0},"humidity":71,"pressure":1004.86,"windDir":"?","icon":"scattered_clouds_day","condition":{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03d"}},{"timestamp":1379343600,"date":{"year":2013,"month":8,"date":16,"hours":15,"minutes":0},"metric":{"temp":15.39,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":59.702,"windSpeed":null,"rain":0,"snow":0},"humidity":67,"pressure":1004.44,"windDir":"?","icon":"scattered_clouds_day","condition":{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03d"}},{"timestamp":1379354400,"date":{"year":2013,"month":8,"date":16,"hours":18,"minutes":0},"metric":{"temp":13.88,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":56.984,"windSpeed":null,"rain":0,"snow":0},"humidity":68,"pressure":1004.55,"windDir":"?","icon":"scattered_clouds_day","condition":{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03d"}},{"timestamp":1379365200,"date":{"year":2013,"month":8,"date":16,"hours":21,"minutes":0},"metric":{"temp":12.8,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":55.040000000000006,"windSpeed":null,"rain":0,"snow":0},"humidity":71,"pressure":1005.72,"windDir":"?","icon":"few_clouds_night","condition":{"id":801,"main":"Clouds","description":"few clouds","icon":"02n"}}],"current":{"timestamp":1379330400,"date":{"year":2013,"month":8,"date":16,"hours":10,"minutes":59},"metric":{"temp":13.23,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":55.814,"windSpeed":null,"rain":0,"snow":0},"humidity":50,"pressure":1001,"windDir":"?","icon":"scattered_clouds_day","condition":{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03d"},"service":"openweathermap","service_id":2643743}},{"date":{"year":2013,"month":8,"date":17,"hours":10,"minutes":59},"timestamp":1379415600,"metric":{"tempMin":11.69,"tempMax":15.62,"windSpeed":18.576,"rain":0,"snow":0},"imperial":{"tempMin":53.042,"tempMax":60.116,"windSpeed":11.5584,"rain":0,"snow":0},"pressure":1002.12,"humidity":70,"icon":"broken_clouds_day","condition":{"id":803,"main":"Clouds","description":"broken clouds","icon":"04d"},"windDeg":269,"windDir":"W","hourly":[{"timestamp":1379376000,"date":{"year":2013,"month":8,"date":17,"hours":0,"minutes":0},"metric":{"temp":12.34,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":54.212,"windSpeed":null,"rain":0,"snow":0},"humidity":72,"pressure":1005.67,"windDir":"?","icon":"clear_night","condition":{"id":800,"main":"Clear","description":"sky is clear","icon":"01n"}},{"timestamp":1379386800,"date":{"year":2013,"month":8,"date":17,"hours":3,"minutes":0},"metric":{"temp":11.95,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":53.51,"windSpeed":null,"rain":0,"snow":0},"humidity":72,"pressure":1005.35,"windDir":"?","icon":"few_clouds_night","condition":{"id":801,"main":"Clouds","description":"few clouds","icon":"02n"}},{"timestamp":1379408400,"date":{"year":2013,"month":8,"date":17,"hours":9,"minutes":0},"metric":{"temp":14.28,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":57.704,"windSpeed":null,"rain":0,"snow":0},"humidity":71,"pressure":1003.83,"windDir":"?","icon":"few_clouds_day","condition":{"id":801,"main":"Clouds","description":"few clouds","icon":"02d"}},{"timestamp":1379419200,"date":{"year":2013,"month":8,"date":17,"hours":12,"minutes":0},"metric":{"temp":15.7,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":60.26,"windSpeed":null,"rain":0,"snow":0},"humidity":70,"pressure":1002.12,"windDir":"?","icon":"broken_clouds_day","condition":{"id":803,"main":"Clouds","description":"broken clouds","icon":"04d"}},{"timestamp":1379430000,"date":{"year":2013,"month":8,"date":17,"hours":15,"minutes":0},"metric":{"temp":15.38,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":59.684,"windSpeed":null,"rain":0,"snow":0},"humidity":71,"pressure":1001.27,"windDir":"?","icon":"scattered_clouds_day","condition":{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03d"}},{"timestamp":1379440800,"date":{"year":2013,"month":8,"date":17,"hours":18,"minutes":0},"metric":{"temp":14.09,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":57.362,"windSpeed":null,"rain":0,"snow":0},"humidity":70,"pressure":1001.97,"windDir":"?","icon":"scattered_clouds_day","condition":{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03d"}},{"timestamp":1379451600,"date":{"year":2013,"month":8,"date":17,"hours":21,"minutes":0},"metric":{"temp":13.06,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":55.508,"windSpeed":null,"rain":0,"snow":0},"humidity":71,"pressure":1003.36,"windDir":"?","icon":"scattered_clouds_night","condition":{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03n"}}]},{"date":{"year":2013,"month":8,"date":18,"hours":10,"minutes":59},"timestamp":1379502000,"metric":{"tempMin":7.06,"tempMax":16.27,"windSpeed":10.296,"rain":0,"snow":0},"imperial":{"tempMin":44.708,"tempMax":61.286,"windSpeed":6.4064000000000005,"rain":0,"snow":0},"pressure":1006.65,"humidity":73,"icon":"clear_day","condition":{"id":800,"main":"Clear","description":"sky is clear","icon":"01d"},"windDeg":323,"windDir":"NW","hourly":[{"timestamp":1379462400,"date":{"year":2013,"month":8,"date":18,"hours":0,"minutes":0},"metric":{"temp":11.74,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":53.132000000000005,"windSpeed":null,"rain":0,"snow":0},"humidity":71,"pressure":1003.92,"windDir":"?","icon":"clear_night","condition":{"id":800,"main":"Clear","description":"sky is clear","icon":"01n"}},{"timestamp":1379473200,"date":{"year":2013,"month":8,"date":18,"hours":3,"minutes":0},"metric":{"temp":10.64,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":51.152,"windSpeed":null,"rain":0,"snow":0},"humidity":76,"pressure":1004.29,"windDir":"?","icon":"few_clouds_night","condition":{"id":801,"main":"Clouds","description":"few clouds","icon":"02n"}},{"timestamp":1379484000,"date":{"year":2013,"month":8,"date":18,"hours":6,"minutes":0},"metric":{"temp":9.12,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":48.416,"windSpeed":null,"rain":0,"snow":0},"humidity":81,"pressure":1004.5,"windDir":"?","icon":"clear_day","condition":{"id":800,"main":"Clear","description":"sky is clear","icon":"01d"}},{"timestamp":1379494800,"date":{"year":2013,"month":8,"date":18,"hours":9,"minutes":0},"metric":{"temp":13.02,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":55.436,"windSpeed":null,"rain":0,"snow":0},"humidity":75,"pressure":1005.46,"windDir":"?","icon":"few_clouds_day","condition":{"id":800,"main":"Clear","description":"sky is clear","icon":"02d"}},{"timestamp":1379505600,"date":{"year":2013,"month":8,"date":18,"hours":12,"minutes":0},"metric":{"temp":15.71,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":60.278000000000006,"windSpeed":null,"rain":0,"snow":0},"humidity":73,"pressure":1006.65,"windDir":"?","icon":"clear_day","condition":{"id":800,"main":"Clear","description":"sky is clear","icon":"01d"}},{"timestamp":1379516400,"date":{"year":2013,"month":8,"date":18,"hours":15,"minutes":0},"metric":{"temp":16.29,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":61.322,"windSpeed":null,"rain":0,"snow":0},"humidity":69,"pressure":1007.53,"windDir":"?","icon":"few_clouds_day","condition":{"id":801,"main":"Clouds","description":"few clouds","icon":"02d"}},{"timestamp":1379527200,"date":{"year":2013,"month":8,"date":18,"hours":18,"minutes":0},"metric":{"temp":13.96,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":57.128,"windSpeed":null,"rain":0,"snow":0},"humidity":72,"pressure":1009.26,"windDir":"?","icon":"clear_day","condition":{"id":800,"main":"Clear","description":"sky is clear","icon":"01d"}},{"timestamp":1379538000,"date":{"year":2013,"month":8,"date":18,"hours":21,"minutes":0},"metric":{"temp":10.41,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":50.738,"windSpeed":null,"rain":0,"snow":0},"humidity":90,"pressure":1011.39,"windDir":"?","icon":"few_clouds_night","condition":{"id":801,"main":"Clouds","description":"few clouds","icon":"02n"}}]},{"date":{"year":2013,"month":8,"date":19,"hours":10,"minutes":59},"timestamp":1379588400,"metric":{"tempMin":5.17,"tempMax":16.58,"windSpeed":5.760000000000001,"rain":0,"snow":0},"imperial":{"tempMin":41.306,"tempMax":61.843999999999994,"windSpeed":3.5840000000000005,"rain":0,"snow":0},"pressure":1017.26,"humidity":75,"icon":"clear_day","condition":{"id":800,"main":"Clear","description":"sky is clear","icon":"01d"},"windDeg":284,"windDir":"W","hourly":[{"timestamp":1379548800,"date":{"year":2013,"month":8,"date":19,"hours":0,"minutes":0},"metric":{"temp":7.06,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":44.708,"windSpeed":null,"rain":0,"snow":0},"humidity":91,"pressure":1012.74,"windDir":"?","icon":"clear_night","condition":{"id":800,"main":"Clear","description":"sky is clear","icon":"01n"}},{"timestamp":1379559600,"date":{"year":2013,"month":8,"date":19,"hours":3,"minutes":0},"metric":{"temp":5.69,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":42.242000000000004,"windSpeed":null,"rain":0,"snow":0},"humidity":90,"pressure":1013.77,"windDir":"?","icon":"clear_night","condition":{"id":800,"main":"Clear","description":"sky is clear","icon":"01n"}},{"timestamp":1379570400,"date":{"year":2013,"month":8,"date":19,"hours":6,"minutes":0},"metric":{"temp":5.17,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":41.306,"windSpeed":null,"rain":0,"snow":0},"humidity":88,"pressure":1015.32,"windDir":"?","icon":"broken_clouds_day","condition":{"id":803,"main":"Clouds","description":"broken clouds","icon":"04d"}},{"timestamp":1379581200,"date":{"year":2013,"month":8,"date":19,"hours":9,"minutes":0},"metric":{"temp":12.6,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":54.68,"windSpeed":null,"rain":0,"snow":0},"humidity":81,"pressure":1016.66,"windDir":"?","icon":"scattered_clouds_day","condition":{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03d"}},{"timestamp":1379592000,"date":{"year":2013,"month":8,"date":19,"hours":12,"minutes":0},"metric":{"temp":16.1,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":60.980000000000004,"windSpeed":null,"rain":0,"snow":0},"humidity":75,"pressure":1017.26,"windDir":"?","icon":"clear_day","condition":{"id":800,"main":"Clear","description":"sky is clear","icon":"01d"}},{"timestamp":1379602800,"date":{"year":2013,"month":8,"date":19,"hours":15,"minutes":0},"metric":{"temp":16.58,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":61.843999999999994,"windSpeed":null,"rain":0,"snow":0},"humidity":71,"pressure":1017.48,"windDir":"?","icon":"few_clouds_day","condition":{"id":800,"main":"Clear","description":"sky is clear","icon":"02d"}},{"timestamp":1379613600,"date":{"year":2013,"month":8,"date":19,"hours":18,"minutes":0},"metric":{"temp":13.31,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":55.958,"windSpeed":null,"rain":0,"snow":0},"humidity":76,"pressure":1018.1,"windDir":"?","icon":"clear_day","condition":{"id":800,"main":"Clear","description":"sky is clear","icon":"01d"}},{"timestamp":1379624400,"date":{"year":2013,"month":8,"date":19,"hours":21,"minutes":0},"metric":{"temp":8.23,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":46.814,"windSpeed":null,"rain":0,"snow":0},"humidity":89,"pressure":1019.2,"windDir":"?","icon":"clear_night","condition":{"id":800,"main":"Clear","description":"sky is clear","icon":"01n"}}]},{"date":{"year":2013,"month":8,"date":20,"hours":10,"minutes":59},"timestamp":1379674800,"metric":{"tempMin":4.94,"tempMax":14.7,"windSpeed":5.6160000000000005,"rain":0,"snow":0},"imperial":{"tempMin":40.892,"tempMax":58.46,"windSpeed":3.4944000000000006,"rain":0,"snow":0},"pressure":1020.42,"humidity":79,"icon":"few_clouds_day","condition":{"id":800,"main":"Clear","description":"sky is clear","icon":"02d"},"windDeg":152,"windDir":"S","hourly":[{"timestamp":1379635200,"date":{"year":2013,"month":8,"date":20,"hours":0,"minutes":0},"metric":{"temp":6.46,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":43.628,"windSpeed":null,"rain":0,"snow":0},"humidity":86,"pressure":1019.53,"windDir":"?","icon":"clear_night","condition":{"id":800,"main":"Clear","description":"sky is clear","icon":"01n"}},{"timestamp":1379646000,"date":{"year":2013,"month":8,"date":20,"hours":3,"minutes":0},"metric":{"temp":5.42,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":41.756,"windSpeed":null,"rain":0,"snow":0},"humidity":87,"pressure":1019.78,"windDir":"?","icon":"clear_night","condition":{"id":800,"main":"Clear","description":"sky is clear","icon":"01n"}},{"timestamp":1379656800,"date":{"year":2013,"month":8,"date":20,"hours":6,"minutes":0},"metric":{"temp":4.94,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":40.892,"windSpeed":null,"rain":0,"snow":0},"humidity":86,"pressure":1019.95,"windDir":"?","icon":"few_clouds_day","condition":{"id":800,"main":"Clear","description":"sky is clear","icon":"02d"}},{"timestamp":1379667600,"date":{"year":2013,"month":8,"date":20,"hours":9,"minutes":0},"metric":{"temp":14.7,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":58.46,"windSpeed":null,"rain":0,"snow":0},"humidity":79,"pressure":1020.42,"windDir":"?","icon":"few_clouds_day","condition":{"id":800,"main":"Clear","description":"sky is clear","icon":"02d"}},{"timestamp":1379710800,"date":{"year":2013,"month":8,"date":20,"hours":21,"minutes":0},"metric":{"temp":11.97,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":53.54600000000001,"windSpeed":null,"rain":0,"snow":0},"humidity":94,"pressure":1022.65,"windDir":"?","icon":"few_clouds_night","condition":{"id":801,"main":"Clouds","description":"few clouds","icon":"02n"}}]},{"date":{"year":2013,"month":8,"date":21,"hours":10,"minutes":59},"timestamp":1379761200,"metric":{"tempMin":6.38,"tempMax":16,"windSpeed":19.116,"rain":0,"snow":0},"imperial":{"tempMin":43.484,"tempMax":60.8,"windSpeed":11.894400000000001,"rain":0,"snow":0},"pressure":1029.36,"humidity":0,"icon":"clear_day","condition":{"id":800,"main":"Clear","description":"sky is clear","icon":"01d"},"windDeg":331,"windDir":"N","hourly":[{"timestamp":1379721600,"date":{"year":2013,"month":8,"date":21,"hours":0,"minutes":0},"metric":{"temp":8.76,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":47.768,"windSpeed":null,"rain":0,"snow":0},"humidity":89,"pressure":1024.1,"windDir":"?","icon":"few_clouds_night","condition":{"id":800,"main":"Clear","description":"sky is clear","icon":"02n"}}]},{"date":{"year":2013,"month":8,"date":22,"hours":10,"minutes":59},"timestamp":1379847600,"metric":{"tempMin":5.66,"tempMax":16.89,"windSpeed":12.708,"rain":0.74,"snow":0},"imperial":{"tempMin":42.188,"tempMax":62.402,"windSpeed":7.9072000000000005,"rain":0.029133858267716535,"snow":0},"pressure":1030.97,"humidity":0,"icon":"rain_day","condition":{"id":500,"main":"Rain","description":"light rain","icon":"10d"},"windDeg":221,"windDir":"SW","hourly":[]},{"date":{"year":2013,"month":8,"date":23,"hours":10,"minutes":59},"timestamp":1379934000,"metric":{"tempMin":7.39,"tempMax":18.19,"windSpeed":15.768,"rain":0,"snow":0},"imperial":{"tempMin":45.302,"tempMax":64.742,"windSpeed":9.811200000000001,"rain":0,"snow":0},"pressure":1023.65,"humidity":0,"icon":"clear_day","condition":{"id":800,"main":"Clear","description":"sky is clear","icon":"01d"},"windDeg":197,"windDir":"S","hourly":[]},{"date":{"year":2013,"month":8,"date":24,"hours":10,"minutes":59},"timestamp":1380020400,"metric":{"tempMin":8.38,"tempMax":15.51,"windSpeed":10.8,"rain":0.83,"snow":0},"imperial":{"tempMin":47.084,"tempMax":59.918,"windSpeed":6.720000000000001,"rain":0.03267716535433071,"snow":0},"pressure":1020.61,"humidity":0,"icon":"rain_day","condition":{"id":500,"main":"Rain","description":"light rain","icon":"10d"},"windDeg":243,"windDir":"W","hourly":[]},{"date":{"year":2013,"month":8,"date":25,"hours":10,"minutes":59},"timestamp":1380106800,"metric":{"tempMin":5.66,"tempMax":16.71,"windSpeed":11.988000000000001,"rain":1.64,"snow":0},"imperial":{"tempMin":42.188,"tempMax":62.078,"windSpeed":7.459200000000001,"rain":0.06456692913385827,"snow":0},"pressure":1030.57,"humidity":0,"icon":"rain_day","condition":{"id":500,"main":"Rain","description":"light rain","icon":"10d"},"windDeg":190,"windDir":"S","hourly":[]}],"save":true}""") |
512 | |
513 | -locations_data.append("""{"updated":1377714141863,"save":false,"db":{"updated":"2013-08-28T18:22:21.863Z","id":2},"data":[{"icon":"broken_clouds_day","timestamp":1377634835,"hourly":[{"icon":"broken_clouds_day","timestamp":1377702000,"pressure":1028.58,"metric":{"temp":21.6,"windSpeed":null},"date":"2013-08-28 17:00","condition":{"icon":"04d","description":"overcast clouds","id":804,"main":"Clouds"},"humidity":54,"imperial":{"rain":null,"temp":70.88,"windSpeed":null}},{"icon":"broken_clouds_day","timestamp":1377712800,"pressure":1028.72,"metric":{"temp":20.52,"windSpeed":null},"date":"2013-08-28 20:00","condition":{"icon":"04d","description":"overcast clouds","id":804,"main":"Clouds"},"humidity":53,"imperial":{"rain":null,"temp":68.936,"windSpeed":null}},{"icon":"broken_clouds_night","timestamp":1377723600,"pressure":1030,"metric":{"temp":18.83,"windSpeed":null},"date":"2013-08-28 23:00","condition":{"icon":"04n","description":"broken clouds","id":803,"main":"Clouds"},"humidity":59,"imperial":{"rain":null,"temp":65.894,"windSpeed":null}}],"windDeg":344,"pressure":1028.58,"current":{"icon":"few_clouds_day","timestamp":1377712211,"pressure":1019,"service_id":2911298,"metric":{"temp":21.6,"windSpeed":null},"date":"2013-08-28 19:50","condition":{"icon":"02d","description":"few clouds","id":801,"main":"Clouds"},"humidity":52,"imperial":{"rain":null,"temp":70.88,"windSpeed":null},"service":"openweathermap"},"metric":{"tempMin":14.16,"windSpeed":10.116,"tempMax":21.6},"date":"2013-08-28","condition":{"icon":"04d","description":"overcast clouds","id":804,"main":"Clouds"},"humidity":54,"imperial":{"rain":null,"tempMin":57.488,"windSpeed":6.2944,"tempMax":70.88}},{"icon":"broken_clouds_day","timestamp":1377774000,"hourly":[{"icon":"clear_night","timestamp":1377734400,"pressure":1030.57,"metric":{"temp":14.16,"windSpeed":null},"date":"2013-08-29 02:00","condition":{"icon":"01n","description":"sky is clear","id":800,"main":"Clear"},"humidity":80,"imperial":{"rain":null,"temp":57.488,"windSpeed":null}},{"icon":"few_clouds_night","timestamp":1377745200,"pressure":1030.6,"metric":{"temp":10.76,"windSpeed":null},"date":"2013-08-29 05:00","condition":{"icon":"02n","description":"few clouds","id":801,"main":"Clouds"},"humidity":92,"imperial":{"rain":null,"temp":51.367999999999995,"windSpeed":null}},{"icon":"scattered_clouds_day","timestamp":1377756000,"pressure":1031.36,"metric":{"temp":12.75,"windSpeed":null},"date":"2013-08-29 08:00","condition":{"icon":"03d","description":"scattered clouds","id":802,"main":"Clouds"},"humidity":89,"imperial":{"rain":null,"temp":54.95,"windSpeed":null}},{"icon":"broken_clouds_day","timestamp":1377766800,"pressure":1031.75,"metric":{"temp":18.16,"windSpeed":null},"date":"2013-08-29 11:00","condition":{"icon":"04d","description":"broken clouds","id":803,"main":"Clouds"},"humidity":72,"imperial":{"rain":null,"temp":64.688,"windSpeed":null}},{"icon":"broken_clouds_day","timestamp":1377777600,"pressure":1031.04,"metric":{"temp":20.39,"windSpeed":null},"date":"2013-08-29 14:00","condition":{"icon":"04d","description":"broken clouds","id":803,"main":"Clouds"},"humidity":64,"imperial":{"rain":null,"temp":68.702,"windSpeed":null}},{"icon":"scattered_clouds_day","timestamp":1377788400,"pressure":1030.1,"metric":{"temp":20.98,"windSpeed":null},"date":"2013-08-29 17:00","condition":{"icon":"03d","description":"scattered clouds","id":802,"main":"Clouds"},"humidity":54,"imperial":{"rain":null,"temp":69.76400000000001,"windSpeed":null}},{"icon":"broken_clouds_day","timestamp":1377799200,"pressure":1029.82,"metric":{"temp":18.87,"windSpeed":null},"date":"2013-08-29 20:00","condition":{"icon":"04d","description":"broken clouds","id":803,"main":"Clouds"},"humidity":54,"imperial":{"rain":null,"temp":65.96600000000001,"windSpeed":null}},{"icon":"broken_clouds_night","timestamp":1377810000,"pressure":1029.82,"metric":{"temp":14.94,"windSpeed":null},"date":"2013-08-29 23:00","condition":{"icon":"04n","description":"broken clouds","id":803,"main":"Clouds"},"humidity":78,"imperial":{"rain":null,"temp":58.891999999999996,"windSpeed":null}}],"windDeg":270,"pressure":1031.04,"metric":{"tempMin":12.75,"windSpeed":11.700000000000001,"tempMax":20.98},"date":"2013-08-29","condition":{"icon":"04d","description":"broken clouds","id":803,"main":"Clouds"},"humidity":64,"imperial":{"rain":null,"tempMin":54.95,"windSpeed":7.280000000000001,"tempMax":69.76400000000001}},{"icon":"few_clouds_day","timestamp":1377860400,"hourly":[{"icon":"broken_clouds_night","timestamp":1377820800,"pressure":1029.32,"metric":{"temp":14.44,"windSpeed":null},"date":"2013-08-30 02:00","condition":{"icon":"04n","description":"overcast clouds","id":804,"main":"Clouds"},"humidity":79,"imperial":{"rain":null,"temp":57.992000000000004,"windSpeed":null}},{"icon":"broken_clouds_night","timestamp":1377831600,"pressure":1028.97,"metric":{"temp":14.65,"windSpeed":null},"date":"2013-08-30 05:00","condition":{"icon":"04n","description":"broken clouds","id":803,"main":"Clouds"},"humidity":75,"imperial":{"rain":null,"temp":58.370000000000005,"windSpeed":null}},{"icon":"broken_clouds_day","timestamp":1377842400,"pressure":1028.83,"metric":{"temp":15.36,"windSpeed":null},"date":"2013-08-30 08:00","condition":{"icon":"04d","description":"broken clouds","id":803,"main":"Clouds"},"humidity":75,"imperial":{"rain":null,"temp":59.647999999999996,"windSpeed":null}},{"icon":"clear_day","timestamp":1377853200,"pressure":1028.47,"metric":{"temp":20.99,"windSpeed":null},"date":"2013-08-30 11:00","condition":{"icon":"01d","description":"sky is clear","id":800,"main":"Clear"},"humidity":64,"imperial":{"rain":null,"temp":69.782,"windSpeed":null}},{"icon":"few_clouds_day","timestamp":1377864000,"pressure":1027.36,"metric":{"temp":23.17,"windSpeed":null},"date":"2013-08-30 14:00","condition":{"icon":"02d","description":"few clouds","id":801,"main":"Clouds"},"humidity":53,"imperial":{"rain":null,"temp":73.706,"windSpeed":null}},{"icon":"scattered_clouds_day","timestamp":1377874800,"pressure":1026.31,"metric":{"temp":23.28,"windSpeed":null},"date":"2013-08-30 17:00","condition":{"icon":"03d","description":"scattered clouds","id":802,"main":"Clouds"},"humidity":49,"imperial":{"rain":null,"temp":73.904,"windSpeed":null}},{"icon":"scattered_clouds_day","timestamp":1377885600,"pressure":1026.26,"metric":{"temp":20.72,"windSpeed":null},"date":"2013-08-30 20:00","condition":{"icon":"03d","description":"scattered clouds","id":802,"main":"Clouds"},"humidity":54,"imperial":{"rain":null,"temp":69.29599999999999,"windSpeed":null}},{"icon":"broken_clouds_night","timestamp":1377896400,"pressure":1026.82,"metric":{"temp":17.14,"windSpeed":null},"date":"2013-08-30 23:00","condition":{"icon":"04n","description":"overcast clouds","id":804,"main":"Clouds"},"humidity":90,"imperial":{"rain":null,"temp":62.852000000000004,"windSpeed":null}}],"windDeg":245,"pressure":1027.36,"metric":{"tempMin":15.36,"windSpeed":19.98,"tempMax":23.28},"date":"2013-08-30","condition":{"icon":"02d","description":"few clouds","id":801,"main":"Clouds"},"humidity":53,"imperial":{"rain":null,"tempMin":59.647999999999996,"windSpeed":12.432,"tempMax":73.904}},{"icon":"rain_day","timestamp":1377946800,"hourly":[{"icon":"rain_night","timestamp":1377918000,"pressure":1025.99,"metric":{"temp":14.89,"windSpeed":null},"date":"2013-08-31 05:00","condition":{"icon":"10n","description":"light rain","id":500,"main":"Rain"},"humidity":96,"imperial":{"rain":null,"temp":58.80200000000001,"windSpeed":null}},{"icon":"broken_clouds_day","timestamp":1377928800,"pressure":1025.86,"metric":{"temp":15.17,"windSpeed":null},"date":"2013-08-31 08:00","condition":{"icon":"04d","description":"broken clouds","id":803,"main":"Clouds"},"humidity":94,"imperial":{"rain":null,"temp":59.306,"windSpeed":null}},{"icon":"broken_clouds_day","timestamp":1377939600,"pressure":1025.68,"metric":{"temp":18.18,"windSpeed":null},"date":"2013-08-31 11:00","condition":{"icon":"04d","description":"broken clouds","id":803,"main":"Clouds"},"humidity":85,"imperial":{"rain":null,"temp":64.724,"windSpeed":null}},{"icon":"scattered_clouds_day","timestamp":1377950400,"pressure":1025.92,"metric":{"temp":18.59,"windSpeed":null},"date":"2013-08-31 14:00","condition":{"icon":"03d","description":"scattered clouds","id":802,"main":"Clouds"},"humidity":84,"imperial":{"rain":null,"temp":65.462,"windSpeed":null}},{"icon":"scattered_clouds_day","timestamp":1377961200,"pressure":1026.25,"metric":{"temp":20.07,"windSpeed":null},"date":"2013-08-31 17:00","condition":{"icon":"03d","description":"scattered clouds","id":802,"main":"Clouds"},"humidity":64,"imperial":{"rain":null,"temp":68.126,"windSpeed":null}},{"icon":"rain_day","timestamp":1377972000,"pressure":1027.56,"metric":{"temp":16.63,"windSpeed":null},"date":"2013-08-31 20:00","condition":{"icon":"10d","description":"light rain","id":500,"main":"Rain"},"humidity":67,"imperial":{"rain":null,"temp":61.934,"windSpeed":null}},{"icon":"clear_night","timestamp":1377982800,"pressure":1028.84,"metric":{"temp":14.09,"windSpeed":null},"date":"2013-08-31 23:00","condition":{"icon":"01n","description":"sky is clear","id":800,"main":"Clear"},"humidity":76,"imperial":{"rain":null,"temp":57.362,"windSpeed":null}}],"windDeg":296,"pressure":1025.92,"metric":{"rain":1,"tempMin":12.8,"windSpeed":19.44,"tempMax":20.07},"date":"2013-08-31","condition":{"icon":"10d","description":"light rain","id":500,"main":"Rain"},"humidity":84,"imperial":{"rain":0.03937007874015748,"tempMin":55.040000000000006,"windSpeed":12.096000000000002,"tempMax":68.126}},{"icon":"broken_clouds_day","timestamp":1378033200,"hourly":[{"icon":"scattered_clouds_night","timestamp":1377993600,"pressure":1028.87,"metric":{"temp":12.8,"windSpeed":null},"date":"2013-09-01 02:00","condition":{"icon":"03n","description":"scattered clouds","id":802,"main":"Clouds"},"humidity":90,"imperial":{"rain":null,"temp":55.040000000000006,"windSpeed":null}},{"icon":"broken_clouds_night","timestamp":1378004400,"pressure":1028.71,"metric":{"temp":13.3,"windSpeed":null},"date":"2013-09-01 05:00","condition":{"icon":"04n","description":"broken clouds","id":803,"main":"Clouds"},"humidity":88,"imperial":{"rain":null,"temp":55.94,"windSpeed":null}},{"icon":"scattered_clouds_day","timestamp":1378015200,"pressure":1028.88,"metric":{"temp":14.04,"windSpeed":null},"date":"2013-09-01 08:00","condition":{"icon":"03d","description":"scattered clouds","id":802,"main":"Clouds"},"humidity":84,"imperial":{"rain":null,"temp":57.272,"windSpeed":null}},{"icon":"scattered_clouds_day","timestamp":1378026000,"pressure":1028.97,"metric":{"temp":16.8,"windSpeed":null},"date":"2013-09-01 11:00","condition":{"icon":"03d","description":"scattered clouds","id":802,"main":"Clouds"},"humidity":75,"imperial":{"rain":null,"temp":62.24,"windSpeed":null}},{"icon":"broken_clouds_day","timestamp":1378036800,"pressure":1028.6,"metric":{"temp":17.13,"windSpeed":null},"date":"2013-09-01 14:00","condition":{"icon":"04d","description":"broken clouds","id":803,"main":"Clouds"},"humidity":69,"imperial":{"rain":null,"temp":62.834,"windSpeed":null}},{"icon":"broken_clouds_day","timestamp":1378047600,"pressure":1028.15,"metric":{"temp":17.31,"windSpeed":null},"date":"2013-09-01 17:00","condition":{"icon":"04d","description":"broken clouds","id":803,"main":"Clouds"},"humidity":60,"imperial":{"rain":null,"temp":63.158,"windSpeed":null}},{"icon":"broken_clouds_day","timestamp":1378058400,"pressure":1027.93,"metric":{"temp":15.67,"windSpeed":null},"date":"2013-09-01 20:00","condition":{"icon":"04d","description":"broken clouds","id":803,"main":"Clouds"},"humidity":70,"imperial":{"rain":null,"temp":60.206,"windSpeed":null}},{"icon":"broken_clouds_night","timestamp":1378069200,"pressure":1027.99,"metric":{"temp":15.32,"windSpeed":null},"date":"2013-09-01 23:00","condition":{"icon":"04n","description":"overcast clouds","id":804,"main":"Clouds"},"humidity":71,"imperial":{"rain":null,"temp":59.576,"windSpeed":null}}],"windDeg":282,"pressure":1028.6,"metric":{"tempMin":14.04,"windSpeed":20.556,"tempMax":17.31},"date":"2013-09-01","condition":{"icon":"04d","description":"broken clouds","id":803,"main":"Clouds"},"humidity":69,"imperial":{"rain":null,"tempMin":57.272,"windSpeed":12.790400000000002,"tempMax":63.158}},{"icon":"rain_day","timestamp":1378119600,"hourly":[{"icon":"broken_clouds_night","timestamp":1378080000,"pressure":1027.3,"metric":{"temp":14.84,"windSpeed":null},"date":"2013-09-02 02:00","condition":{"icon":"04n","description":"overcast clouds","id":804,"main":"Clouds"},"humidity":78,"imperial":{"rain":null,"temp":58.712,"windSpeed":null}}],"windDeg":323,"pressure":1036.5,"metric":{"rain":0.76,"tempMin":8.87,"windSpeed":7.668,"tempMax":18.48},"date":"2013-09-02","condition":{"icon":"10d","description":"light rain","id":500,"main":"Rain"},"humidity":0,"imperial":{"rain":0.029921259842519688,"tempMin":47.966,"windSpeed":4.7712,"tempMax":65.26400000000001}},{"icon":"rain_day","timestamp":1378206000,"hourly":[],"windDeg":229,"pressure":1038.72,"metric":{"rain":2.14,"tempMin":10.38,"windSpeed":11.016,"tempMax":19.79},"date":"2013-09-03","condition":{"icon":"10d","description":"light rain","id":500,"main":"Rain"},"humidity":0,"imperial":{"rain":0.08425196850393701,"tempMin":50.684,"windSpeed":6.854400000000001,"tempMax":67.622}},{"icon":"rain_day","timestamp":1378292400,"hourly":[],"windDeg":301,"pressure":1035.96,"metric":{"rain":1.76,"tempMin":13.16,"windSpeed":20.772,"tempMax":18.82},"date":"2013-09-04","condition":{"icon":"10d","description":"light rain","id":500,"main":"Rain"},"humidity":0,"imperial":{"rain":0.06929133858267716,"tempMin":55.688,"windSpeed":12.9248,"tempMax":65.876}},{"icon":"rain_day","timestamp":1378378800,"hourly":[],"windDeg":255,"pressure":1028.02,"metric":{"rain":0.78,"tempMin":14.24,"windSpeed":33.156000000000006,"tempMax":19.07},"date":"2013-09-05","condition":{"icon":"10d","description":"light rain","id":500,"main":"Rain"},"humidity":0,"imperial":{"rain":0.030708661417322838,"tempMin":57.632000000000005,"windSpeed":20.630400000000005,"tempMax":66.326}},{"icon":"rain_day","timestamp":1378465200,"hourly":[],"windDeg":271,"pressure":1023.01,"metric":{"rain":0.69,"tempMin":15.27,"windSpeed":34.596,"tempMax":20.63},"date":"2013-09-06","condition":{"icon":"10d","description":"light rain","id":500,"main":"Rain"},"humidity":0,"imperial":{"rain":0.02716535433070866,"tempMin":59.486000000000004,"windSpeed":21.526400000000002,"tempMax":69.134}}],"format":20130827,"location":{"coord":{"lon":10,"lat":53.549999},"service_id":2911298,"name":"Hamburg","country":"DE","dbId":0,"service":"openweathermap"}}""") |
514 | +locations_data.append("""{"location":{"coord":{"lon":10,"lat":53.549999},"service_id":2911298,"name":"Hamburg","tzinfo":{"offset":3600000},"country":"DE","dbId":0,"service":"openweathermap"},"db":{"updated":"2013-09-16T12:11:40.768Z","id":2},"format":20130916,"data":[{"date":{"year":2013,"month":8,"date":15,"hours":11,"minutes":59},"timestamp":1379329200,"metric":{"tempMin":8.8,"tempMax":16.04,"windSpeed":25.236,"rain":0,"snow":0},"imperial":{"tempMin":47.84,"tempMax":60.872,"windSpeed":15.7024,"rain":0,"snow":0},"pressure":1005.83,"humidity":87,"icon":"few_clouds_day","condition":{"id":801,"main":"Clouds","description":"few clouds","icon":"02d"},"windDeg":239,"windDir":"SW","hourly":[{"timestamp":1379322000,"date":{"year":2013,"month":8,"date":16,"hours":10,"minutes":0},"metric":{"temp":13.5,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":56.3,"windSpeed":null,"rain":0,"snow":0},"humidity":96,"pressure":1006.12,"windDir":"?","icon":"clear_day","condition":{"id":800,"main":"Clear","description":"sky is clear","icon":"01d"}},{"timestamp":1379332800,"date":{"year":2013,"month":8,"date":16,"hours":13,"minutes":0},"metric":{"temp":14.61,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":58.298,"windSpeed":null,"rain":0,"snow":0},"humidity":87,"pressure":1005.83,"windDir":"?","icon":"few_clouds_day","condition":{"id":801,"main":"Clouds","description":"few clouds","icon":"02d"}},{"timestamp":1379343600,"date":{"year":2013,"month":8,"date":16,"hours":16,"minutes":0},"metric":{"temp":13.91,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":57.038,"windSpeed":null,"rain":0,"snow":0},"humidity":79,"pressure":1005.73,"windDir":"?","icon":"broken_clouds_day","condition":{"id":803,"main":"Clouds","description":"broken clouds","icon":"04d"}},{"timestamp":1379354400,"date":{"year":2013,"month":8,"date":16,"hours":19,"minutes":0},"metric":{"temp":11.32,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":52.376000000000005,"windSpeed":null,"rain":0,"snow":0},"humidity":78,"pressure":1005.68,"windDir":"?","icon":"clear_night","condition":{"id":800,"main":"Clear","description":"sky is clear","icon":"01n"}},{"timestamp":1379365200,"date":{"year":2013,"month":8,"date":16,"hours":22,"minutes":0},"metric":{"temp":8.36,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":47.048,"windSpeed":null,"rain":0,"snow":0},"humidity":88,"pressure":1005.96,"windDir":"?","icon":"few_clouds_night","condition":{"id":800,"main":"Clear","description":"sky is clear","icon":"02n"}}],"current":{"timestamp":1379330400,"date":{"year":2013,"month":8,"date":16,"hours":11,"minutes":59},"metric":{"temp":15,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":59,"windSpeed":null,"rain":0,"snow":0},"humidity":54,"pressure":997,"windDir":"?","icon":"few_clouds_day","condition":{"id":801,"main":"Clouds","description":"few clouds","icon":"02d"},"service":"openweathermap","service_id":2911298}},{"date":{"year":2013,"month":8,"date":17,"hours":11,"minutes":59},"timestamp":1379415600,"metric":{"tempMin":8.11,"tempMax":13.84,"windSpeed":30.636,"rain":2,"snow":0},"imperial":{"tempMin":46.598,"tempMax":56.912,"windSpeed":19.0624,"rain":0.07874015748031496,"snow":0},"pressure":1004.39,"humidity":85,"icon":"rain_day","condition":{"id":500,"main":"Rain","description":"light rain","icon":"10d"},"windDeg":230,"windDir":"SW","hourly":[{"timestamp":1379376000,"date":{"year":2013,"month":8,"date":17,"hours":1,"minutes":0},"metric":{"temp":7.67,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":45.806,"windSpeed":null,"rain":0,"snow":0},"humidity":91,"pressure":1005.67,"windDir":"?","icon":"few_clouds_night","condition":{"id":801,"main":"Clouds","description":"few clouds","icon":"02n"}},{"timestamp":1379386800,"date":{"year":2013,"month":8,"date":17,"hours":4,"minutes":0},"metric":{"temp":7.06,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":44.708,"windSpeed":null,"rain":0,"snow":0},"humidity":93,"pressure":1004.86,"windDir":"?","icon":"clear_night","condition":{"id":800,"main":"Clear","description":"sky is clear","icon":"01n"}},{"timestamp":1379408400,"date":{"year":2013,"month":8,"date":17,"hours":10,"minutes":0},"metric":{"temp":11.26,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":52.268,"windSpeed":null,"rain":0,"snow":0},"humidity":90,"pressure":1004.8,"windDir":"?","icon":"scattered_clouds_day","condition":{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03d"}},{"timestamp":1379419200,"date":{"year":2013,"month":8,"date":17,"hours":13,"minutes":0},"metric":{"temp":12.94,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":55.292,"windSpeed":null,"rain":0,"snow":0},"humidity":85,"pressure":1004.39,"windDir":"?","icon":"broken_clouds_day","condition":{"id":803,"main":"Clouds","description":"broken clouds","icon":"04d"}},{"timestamp":1379430000,"date":{"year":2013,"month":8,"date":17,"hours":16,"minutes":0},"metric":{"temp":12.3,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":54.14,"windSpeed":null,"rain":0,"snow":0},"humidity":80,"pressure":1004.11,"windDir":"?","icon":"broken_clouds_day","condition":{"id":803,"main":"Clouds","description":"broken clouds","icon":"04d"}},{"timestamp":1379440800,"date":{"year":2013,"month":8,"date":17,"hours":19,"minutes":0},"metric":{"temp":11.63,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":52.934,"windSpeed":null,"rain":0,"snow":0},"humidity":77,"pressure":1003.51,"windDir":"?","icon":"broken_clouds_night","condition":{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}},{"timestamp":1379451600,"date":{"year":2013,"month":8,"date":17,"hours":22,"minutes":0},"metric":{"temp":11.12,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":52.016,"windSpeed":null,"rain":0,"snow":0},"humidity":79,"pressure":1002.22,"windDir":"?","icon":"broken_clouds_night","condition":{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}}]},{"date":{"year":2013,"month":8,"date":18,"hours":11,"minutes":59},"timestamp":1379502000,"metric":{"tempMin":9.41,"tempMax":13.28,"windSpeed":18.036,"rain":2,"snow":0},"imperial":{"tempMin":48.938,"tempMax":55.903999999999996,"windSpeed":11.2224,"rain":0.07874015748031496,"snow":0},"pressure":999.43,"humidity":97,"icon":"rain_day","condition":{"id":500,"main":"Rain","description":"light rain","icon":"10d"},"windDeg":204,"windDir":"S","hourly":[{"timestamp":1379462400,"date":{"year":2013,"month":8,"date":18,"hours":1,"minutes":0},"metric":{"temp":9.87,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":49.766,"windSpeed":null,"rain":0,"snow":0},"humidity":98,"pressure":1000.84,"windDir":"?","icon":"rain_night","condition":{"id":500,"main":"Rain","description":"light rain","icon":"10n"}},{"timestamp":1379473200,"date":{"year":2013,"month":8,"date":18,"hours":4,"minutes":0},"metric":{"temp":9.85,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":49.730000000000004,"windSpeed":null,"rain":0,"snow":0},"humidity":98,"pressure":999.91,"windDir":"?","icon":"broken_clouds_night","condition":{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}},{"timestamp":1379484000,"date":{"year":2013,"month":8,"date":18,"hours":7,"minutes":0},"metric":{"temp":10,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":50,"windSpeed":null,"rain":0,"snow":0},"humidity":100,"pressure":999.56,"windDir":"?","icon":"broken_clouds_day","condition":{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04d"}},{"timestamp":1379494800,"date":{"year":2013,"month":8,"date":18,"hours":10,"minutes":0},"metric":{"temp":11.26,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":52.268,"windSpeed":null,"rain":0,"snow":0},"humidity":99,"pressure":999.55,"windDir":"?","icon":"rain_day","condition":{"id":500,"main":"Rain","description":"light rain","icon":"10d"}},{"timestamp":1379505600,"date":{"year":2013,"month":8,"date":18,"hours":13,"minutes":0},"metric":{"temp":12.98,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":55.364000000000004,"windSpeed":null,"rain":0,"snow":0},"humidity":97,"pressure":999.43,"windDir":"?","icon":"broken_clouds_day","condition":{"id":803,"main":"Clouds","description":"broken clouds","icon":"04d"}},{"timestamp":1379516400,"date":{"year":2013,"month":8,"date":18,"hours":16,"minutes":0},"metric":{"temp":13.03,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":55.454,"windSpeed":null,"rain":0,"snow":0},"humidity":95,"pressure":999.91,"windDir":"?","icon":"broken_clouds_day","condition":{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04d"}},{"timestamp":1379527200,"date":{"year":2013,"month":8,"date":18,"hours":19,"minutes":0},"metric":{"temp":12.07,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":53.726,"windSpeed":null,"rain":0,"snow":0},"humidity":92,"pressure":1002.29,"windDir":"?","icon":"broken_clouds_night","condition":{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}},{"timestamp":1379538000,"date":{"year":2013,"month":8,"date":18,"hours":22,"minutes":0},"metric":{"temp":10.04,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":50.072,"windSpeed":null,"rain":0,"snow":0},"humidity":94,"pressure":1004.67,"windDir":"?","icon":"clear_night","condition":{"id":800,"main":"Clear","description":"sky is clear","icon":"01n"}}]},{"date":{"year":2013,"month":8,"date":19,"hours":11,"minutes":59},"timestamp":1379588400,"metric":{"tempMin":9.02,"tempMax":15.9,"windSpeed":25.02,"rain":12,"snow":0},"imperial":{"tempMin":48.236000000000004,"tempMax":60.620000000000005,"windSpeed":15.568000000000001,"rain":0.4724409448818898,"snow":0},"pressure":1012.07,"humidity":83,"icon":"rain_day","condition":{"id":501,"main":"Rain","description":"moderate rain","icon":"10d"},"windDeg":278,"windDir":"W","hourly":[{"timestamp":1379548800,"date":{"year":2013,"month":8,"date":19,"hours":1,"minutes":0},"metric":{"temp":9.41,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":48.938,"windSpeed":null,"rain":0,"snow":0},"humidity":96,"pressure":1007.14,"windDir":"?","icon":"broken_clouds_night","condition":{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}},{"timestamp":1379559600,"date":{"year":2013,"month":8,"date":19,"hours":4,"minutes":0},"metric":{"temp":10.64,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":51.152,"windSpeed":null,"rain":0,"snow":0},"humidity":97,"pressure":1009.07,"windDir":"?","icon":"broken_clouds_night","condition":{"id":803,"main":"Clouds","description":"broken clouds","icon":"04n"}},{"timestamp":1379570400,"date":{"year":2013,"month":8,"date":19,"hours":7,"minutes":0},"metric":{"temp":9.02,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":48.236000000000004,"windSpeed":null,"rain":0,"snow":0},"humidity":94,"pressure":1010.69,"windDir":"?","icon":"clear_day","condition":{"id":800,"main":"Clear","description":"sky is clear","icon":"01d"}},{"timestamp":1379581200,"date":{"year":2013,"month":8,"date":19,"hours":10,"minutes":0},"metric":{"temp":13.45,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":56.21,"windSpeed":null,"rain":0,"snow":0},"humidity":99,"pressure":1011.97,"windDir":"?","icon":"broken_clouds_day","condition":{"id":803,"main":"Clouds","description":"broken clouds","icon":"04d"}},{"timestamp":1379592000,"date":{"year":2013,"month":8,"date":19,"hours":13,"minutes":0},"metric":{"temp":15.9,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":60.620000000000005,"windSpeed":null,"rain":0,"snow":0},"humidity":83,"pressure":1012.07,"windDir":"?","icon":"broken_clouds_day","condition":{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04d"}},{"timestamp":1379602800,"date":{"year":2013,"month":8,"date":19,"hours":16,"minutes":0},"metric":{"temp":13.38,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":56.084,"windSpeed":null,"rain":0,"snow":0},"humidity":88,"pressure":1012.53,"windDir":"?","icon":"rain_day","condition":{"id":500,"main":"Rain","description":"light rain","icon":"10d"}},{"timestamp":1379613600,"date":{"year":2013,"month":8,"date":19,"hours":19,"minutes":0},"metric":{"temp":12.71,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":54.878,"windSpeed":null,"rain":0,"snow":0},"humidity":96,"pressure":1011.05,"windDir":"?","icon":"rain_night","condition":{"id":501,"main":"Rain","description":"moderate rain","icon":"10n"}},{"timestamp":1379624400,"date":{"year":2013,"month":8,"date":19,"hours":22,"minutes":0},"metric":{"temp":14.98,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":58.964,"windSpeed":null,"rain":0,"snow":0},"humidity":97,"pressure":1011.74,"windDir":"?","icon":"rain_night","condition":{"id":501,"main":"Rain","description":"moderate rain","icon":"10n"}}]},{"date":{"year":2013,"month":8,"date":20,"hours":11,"minutes":59},"timestamp":1379674800,"metric":{"tempMin":13.92,"tempMax":15.7,"windSpeed":20.376,"rain":0,"snow":0},"imperial":{"tempMin":57.056,"tempMax":60.26,"windSpeed":12.678400000000002,"rain":0,"snow":0},"pressure":1019.61,"humidity":99,"icon":"broken_clouds_day","condition":{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04d"},"windDeg":316,"windDir":"NW","hourly":[{"timestamp":1379635200,"date":{"year":2013,"month":8,"date":20,"hours":1,"minutes":0},"metric":{"temp":14.76,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":58.568,"windSpeed":null,"rain":0,"snow":0},"humidity":96,"pressure":1014.1,"windDir":"?","icon":"broken_clouds_night","condition":{"id":803,"main":"Clouds","description":"broken clouds","icon":"04n"}},{"timestamp":1379646000,"date":{"year":2013,"month":8,"date":20,"hours":4,"minutes":0},"metric":{"temp":14.47,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":58.04600000000001,"windSpeed":null,"rain":0,"snow":0},"humidity":94,"pressure":1015.97,"windDir":"?","icon":"broken_clouds_night","condition":{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}},{"timestamp":1379656800,"date":{"year":2013,"month":8,"date":20,"hours":7,"minutes":0},"metric":{"temp":14.69,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":58.442,"windSpeed":null,"rain":0,"snow":0},"humidity":95,"pressure":1017.92,"windDir":"?","icon":"broken_clouds_day","condition":{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04d"}},{"timestamp":1379667600,"date":{"year":2013,"month":8,"date":20,"hours":10,"minutes":0},"metric":{"temp":15.7,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":60.26,"windSpeed":null,"rain":0,"snow":0},"humidity":99,"pressure":1019.61,"windDir":"?","icon":"broken_clouds_day","condition":{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04d"}},{"timestamp":1379710800,"date":{"year":2013,"month":8,"date":20,"hours":22,"minutes":0},"metric":{"temp":13.92,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":57.056,"windSpeed":null,"rain":0,"snow":0},"humidity":91,"pressure":1025.73,"windDir":"?","icon":"broken_clouds_night","condition":{"id":803,"main":"Clouds","description":"broken clouds","icon":"04n"}}]},{"date":{"year":2013,"month":8,"date":21,"hours":11,"minutes":59},"timestamp":1379761200,"metric":{"tempMin":12.5,"tempMax":15.19,"windSpeed":22.356,"rain":4.1,"snow":0},"imperial":{"tempMin":54.5,"tempMax":59.342,"windSpeed":13.910400000000001,"rain":0.16141732283464566,"snow":0},"pressure":1021.66,"humidity":0,"icon":"rain_day","condition":{"id":501,"main":"Rain","description":"moderate rain","icon":"10d"},"windDeg":235,"windDir":"SW","hourly":[{"timestamp":1379721600,"date":{"year":2013,"month":8,"date":21,"hours":1,"minutes":0},"metric":{"temp":12.26,"windSpeed":null,"rain":0,"snow":0},"imperial":{"temp":54.068,"windSpeed":null,"rain":0,"snow":0},"humidity":94,"pressure":1027.02,"windDir":"?","icon":"few_clouds_night","condition":{"id":800,"main":"Clear","description":"sky is clear","icon":"02n"}}]},{"date":{"year":2013,"month":8,"date":22,"hours":11,"minutes":59},"timestamp":1379847600,"metric":{"tempMin":10.24,"tempMax":16.24,"windSpeed":32.76,"rain":0.89,"snow":0},"imperial":{"tempMin":50.432,"tempMax":61.232,"windSpeed":20.384,"rain":0.03503937007874016,"snow":0},"pressure":1027.12,"humidity":0,"icon":"rain_day","condition":{"id":500,"main":"Rain","description":"light rain","icon":"10d"},"windDeg":317,"windDir":"NW","hourly":[]},{"date":{"year":2013,"month":8,"date":23,"hours":11,"minutes":59},"timestamp":1379934000,"metric":{"tempMin":9.24,"tempMax":16.19,"windSpeed":12.348,"rain":0.59,"snow":0},"imperial":{"tempMin":48.632000000000005,"tempMax":61.142,"windSpeed":7.683200000000001,"rain":0.023228346456692913,"snow":0},"pressure":1029.73,"humidity":0,"icon":"rain_day","condition":{"id":500,"main":"Rain","description":"light rain","icon":"10d"},"windDeg":276,"windDir":"W","hourly":[]},{"date":{"year":2013,"month":8,"date":24,"hours":11,"minutes":59},"timestamp":1380020400,"metric":{"tempMin":7.48,"tempMax":12.91,"windSpeed":12.852,"rain":0.54,"snow":0},"imperial":{"tempMin":45.464,"tempMax":55.238,"windSpeed":7.9968,"rain":0.021259842519685043,"snow":0},"pressure":1028.1,"humidity":0,"icon":"rain_day","condition":{"id":500,"main":"Rain","description":"light rain","icon":"10d"},"windDeg":178,"windDir":"S","hourly":[]},{"date":{"year":2013,"month":8,"date":25,"hours":11,"minutes":59},"timestamp":1380106800,"metric":{"tempMin":6.43,"tempMax":16.06,"windSpeed":11.628,"rain":0,"snow":0},"imperial":{"tempMin":43.574,"tempMax":60.908,"windSpeed":7.235200000000001,"rain":0,"snow":0},"pressure":1033.2,"humidity":0,"icon":"rain_day","condition":{"id":500,"main":"Rain","description":"light rain","icon":"10d"},"windDeg":328,"windDir":"NW","hourly":[]}],"save":true}""") |
PASSED: Continuous integration, rev:117 91.189. 93.70:8080/ job/ubuntu- weather- app-ci/ 45/ 91.189. 93.70:8080/ job/generic- mediumtests/ 385 91.189. 93.70:8080/ job/ubuntu- weather- app-precise- amd64-ci/ 43 91.189. 93.70:8080/ job/ubuntu- weather- app-quantal- amd64-ci/ 43 91.189. 93.70:8080/ job/ubuntu- weather- app-raring- amd64-ci/ 43 91.189. 93.70:8080/ job/ubuntu- weather- app-saucy- amd64-ci/ 43
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild: 91.189. 93.70:8080/ job/ubuntu- weather- app-ci/ 45/rebuild
http://