Merge lp:~martin-borho/ubuntu-weather-app/FixedTestsNewScrolling into lp:ubuntu-weather-app/obsolete.trunk

Proposed by Martin Borho
Status: Merged
Approved by: Raúl Yeguas
Approved revision: 105
Merged at revision: 103
Proposed branch: lp:~martin-borho/ubuntu-weather-app/FixedTestsNewScrolling
Merge into: lp:ubuntu-weather-app/obsolete.trunk
Diff against target: 1167 lines (+92/-881)
6 files modified
components/CurrentWeather.qml (+70/-1)
components/LocationTab.qml (+4/-1)
components/WeatherApi.js (+5/-5)
components/WeatherConditionIconComponent.qml (+0/-860)
tests/autopilot/ubuntu_weather_app/tests/test_settings.py (+10/-10)
tests/autopilot/ubuntu_weather_app/tests/weatherdata.py (+3/-4)
To merge this branch: bzr merge lp:~martin-borho/ubuntu-weather-app/FixedTestsNewScrolling
Reviewer Review Type Date Requested Status
Ubuntu Phone Apps Jenkins Bot continuous-integration Approve
Raúl Yeguas Approve
Review via email: mp+182852@code.launchpad.net

This proposal supersedes a proposal from 2013-08-28.

Commit message

Implemented a new scroll following Michal's video and replaced the icon set with the new one (neokore). Fixed autopilot tests to work with new data format version (martin-borho).

Description of the change

Fixed autopilot tests to work with new data format version

To post a comment you must log in.
Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote : Posted in a previous version of this proposal
review: Approve (continuous-integration)
Revision history for this message
Raúl Yeguas (neokore) wrote : Posted in a previous version of this proposal

Thank you, Martin, you are a great teammate!

review: Approve
Revision history for this message
Martin Borho (martin-borho) wrote : Posted in a previous version of this proposal

Raul, you have to approve the review by yourself too! It won't merge without it, I guess.

Revision history for this message
Raúl Yeguas (neokore) wrote : Posted in a previous version of this proposal

Maybe we need to approve the other MP, I'll try.

Revision history for this message
Martin Borho (martin-borho) wrote :

i've removed the related branch, now it should work, after you've approved.

Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Raúl Yeguas (neokore) wrote :

I added the commit message. Will it work now? ;)

review: Approve
Revision history for this message
David Planella (dpm) wrote :

Raúl, once everyone is happy with the review, the last step is to top-approve. That is, approve not only in your individual review in the comments, but also at the top of the page using the link for the global approval.

I've changed it to "Needs Review" to "Approved" for you. I hope this serves as guidance, and nice work guys!

Revision history for this message
Raúl Yeguas (neokore) wrote :

Sorry David, I thought that I need to wait for Jenkins to approve the MP before I top-approve it. I'll consider that next time. Thank you!

Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Francis Ginther (fginther) wrote :

Fixed issue in generic-mediumtests, re-approving.

Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Francis Ginther (fginther) wrote :

Fixed another issue in generic-mediumtests, re-approving.

Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :
review: Needs Fixing (continuous-integration)
105. By Martin Borho

fixed scale setting related tests

Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) :
review: Approve (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'components/CurrentWeather.qml'
2--- components/CurrentWeather.qml 2013-08-22 12:15:21 +0000
3+++ components/CurrentWeather.qml 2013-08-29 19:28:28 +0000
4@@ -18,6 +18,7 @@
5 property int humidity
6 property real precipitation
7 property int pressure
8+ property variant hourly
9 property string tempScale: (mainView.settings["units"] === "imperial") ? "F" : "C"
10 property string speedScale: (mainView.settings["units"] === "imperial") ? "mph" : "km/h"
11 property string precipScale: (mainView.settings["units"] === "imperial") ? "in" : "mm"
12@@ -32,7 +33,75 @@
13
14 property bool flipped: false
15
16- MouseArea {anchors.fill: parent; onClicked: flipable.flipped = !flipable.flipped}
17+ Rectangle {
18+ id: holdFeedback
19+ opacity: 0
20+ width: units.gu(4)
21+ height: units.gu(4)
22+ radius: units.gu(2)
23+
24+ transform: Scale {
25+ id: scaleTransform
26+ property real scale: 0
27+ xScale: scale
28+ yScale: scale
29+ origin.x: units.gu(2)
30+ origin.y: units.gu(2)
31+ }
32+
33+ SequentialAnimation{
34+ id: holdFeedbackanim;
35+ running: false;
36+ ParallelAnimation {
37+ PropertyAnimation {target: scaleTransform; property: "scale"; duration: 200; easing.type: Easing.InOutQuad; from: 0.0; to: 1.0;}
38+ NumberAnimation {target: holdFeedback; property: "opacity"; duration: 200; easing.type: Easing.InOutQuad; to: 0.6;}
39+ }
40+ NumberAnimation {target: holdFeedback; property: "opacity"; duration: 100; easing.type: Easing.InOutQuad; to: 0;}
41+ }
42+ }
43+
44+ MouseArea {
45+ id: flippedarea
46+ property int pos: 0
47+ anchors.fill: parent
48+ onClicked: {
49+ mouse.accepted = true;
50+ flipable.flipped = !flipable.flipped;
51+ }
52+ onPressed: {
53+ pos = mouse.y;
54+ }
55+ onPositionChanged: {
56+ mouse.accepted = true;
57+ if(mouse.wasHeld){
58+ var movement = Math.round((pos - mouse.y)/30);
59+ if(movement > 1){
60+ if(currentWeather.hourly.get(movement) !== undefined) {
61+ currentConditionIcon.condition = currentWeather.hourly.get(movement).icon;
62+ var temp = currentWeather.hourly.get(movement)["metric"].temp;
63+ currentConditionTempContent.currentTemp = temp;
64+ adjustBackground(Math.round(temp));
65+ var dateTime = new Date(currentWeather.hourly.get(movement).date);
66+ var dateTimeString = Qt.formatDateTime(dateTime, 'dddd, dd MMMM yyyy - HH:mm');
67+ dateComponent.dateString = dateTimeString;
68+ dateComponent.renderText();
69+ }
70+ }
71+ }else{
72+ var movement = Math.round((pos - mouse.y) / 100);
73+ if(movement === 1)
74+ dailyForecastList.incrementCurrentIndex();
75+ else if(movement === -1)
76+ dailyForecastList.decrementCurrentIndex();
77+ dailyForecastList.positionViewAtIndex(dailyForecastList.currentIndex,ListView.SnapPosition);
78+ }
79+ }
80+ onPressAndHold: {
81+ holdFeedback.y = mouse.y-units.gu(2);
82+ holdFeedback.x = mouse.x-units.gu(2);
83+ holdFeedbackanim.start();
84+ }
85+ }
86
87 back:
88 Rectangle {
89
90=== modified file 'components/LocationTab.qml'
91--- components/LocationTab.qml 2013-08-23 19:09:01 +0000
92+++ components/LocationTab.qml 2013-08-29 19:28:28 +0000
93@@ -94,7 +94,8 @@
94 wind_dir: direction,
95 humid: dailyForecasts[x].humidity,
96 precip: (dailyForecasts[x][units].rain !== null && dailyForecasts[x][units].rain !== undefined) ? dailyForecasts[x][units].rain : 0,
97- press: dailyForecasts[x].pressure
98+ press: dailyForecasts[x].pressure,
99+ hours: dailyForecasts[x]["hourly"]
100 });
101 }
102 }
103@@ -123,6 +124,7 @@
104 }
105 }
106
107+ interactive: false
108 snapMode: ListView.SnapOneItem
109 highlightRangeMode: ListView.StrictlyEnforceRange
110 verticalLayoutDirection: ListView.TopToBottom
111@@ -158,6 +160,7 @@
112 humidity: humid
113 precipitation: precip
114 pressure: press
115+ hourly: hours
116 anchors.top: dateComponent.bottom
117 showMaxTemp: (index === 0)
118 }
119
120=== modified file 'components/WeatherApi.js'
121--- components/WeatherApi.js 2013-08-08 19:55:17 +0000
122+++ components/WeatherApi.js 2013-08-29 19:28:28 +0000
123@@ -3,7 +3,7 @@
124 * Version of the response data format.
125 * Increase this number to force a refresh.
126 */
127-var RESPONSE_DATA_VERSION = 20130808;
128+var RESPONSE_DATA_VERSION = 20130827;
129
130 /**
131 * Helper functions
132@@ -21,8 +21,6 @@
133 return ms*3.6;
134 }
135
136-
137-
138 var OpenWeatherMapApi = (function() {
139 /**
140 provides neccessary methods for requesting and preparing data from OpenWeatherMap.org
141@@ -176,7 +174,8 @@
142 var formattedResult;
143 respData[request.type] = data;
144 if(respData["current"] !== undefined
145- //&& respData["forecast"] !== undefined
146+ //
147+ && respData["forecast"] !== undefined
148 && respData["daily"] !== undefined) {
149 response["data"] = formatResult(respData)
150 onSuccess(response);
151@@ -191,7 +190,8 @@
152 apiCaller(retryFunc, addDataToResponse, onErrorHandler);
153 })
154 apiCaller(handlerMap.current, addDataToResponse, retryHandler);
155- //apiCaller(handlerMap.forecast, addDataToResponse, retryHandler);
156+ //
157+ apiCaller(handlerMap.forecast, addDataToResponse, retryHandler);
158 apiCaller(handlerMap.daily, addDataToResponse, retryHandler);
159 }
160 }
161
162=== added file 'components/WeatherConditionIconComponent.qml'
163--- components/WeatherConditionIconComponent.qml 1970-01-01 00:00:00 +0000
164+++ components/WeatherConditionIconComponent.qml 2013-08-29 19:28:28 +0000
165@@ -0,0 +1,39 @@
166+import QtQuick 2.0
167+import "./" as Components
168+
169+Rectangle {
170+ id: weatherCondition
171+ color: "transparent"
172+ state: ""
173+
174+ property string condition: ""
175+
176+ /* temporary icon map */
177+ property var conditionicon: {
178+ "clear_day": "02",
179+ "clear_night": "12",
180+ "few_clouds_day": "05",
181+ "few_clouds_night": "04",
182+ "scattered_clouds_day": "05",
183+ "scattered_clouds_night": "04",
184+ "broken_clouds_day": "03",
185+ "broken_clouds_night": "03",
186+ "shower_rain_day": "01",
187+ "shower_rain_night": "01",
188+ "rain_day": "09",
189+ "rain_night": "09",
190+ "thunderstorm_day": "13",
191+ "thunderstorm_night": "13",
192+ "snow_day": "14",
193+ "snow_night": "14",
194+ "mist_day": "06",
195+ "mist_night": "06"
196+ }
197+
198+ Image {
199+ id: icon
200+ anchors.fill: parent
201+ source: "../resources/images/"+conditionicon[condition]+".png";
202+ fillMode: Image.PreserveAspectFit
203+ }
204+}
205
206=== removed file 'components/WeatherConditionIconComponent.qml'
207--- components/WeatherConditionIconComponent.qml 2013-08-08 19:55:17 +0000
208+++ components/WeatherConditionIconComponent.qml 1970-01-01 00:00:00 +0000
209@@ -1,860 +0,0 @@
210-import QtQuick 2.0
211-import QtGraphicalEffects 1.0
212-import Ubuntu.Components 0.1
213-
214-Rectangle {
215- id: weatherCondition
216- color: "transparent"
217- state: ""
218-
219- property string condition: ""
220- property bool __sun: false
221- property bool __moon: false
222- property bool __fewClouds: true
223- property bool __scattered: false
224- property bool __broken: false
225- property bool __rain: false
226- property bool __storm: false
227- property bool __snow: false
228- property bool __fog: false
229-
230- onConditionChanged: {
231- weatherCondition.state = condition
232- }
233-
234- Image {
235- id: sun
236- width: weatherCondition.width
237- height: weatherCondition.height
238- anchors.horizontalCenter: weatherCondition.horizontalCenter
239- anchors.top: weatherCondition.top
240- opacity: 0
241- source: "../resources/images/sun.png"
242- fillMode: Image.PreserveAspectFit
243- }
244- Image {
245- id: moon
246- width: weatherCondition.width
247- height: weatherCondition.height
248- anchors.horizontalCenter: weatherCondition.horizontalCenter
249- anchors.top: weatherCondition.top
250- opacity: 0
251- source: "../resources/images/moon.png"
252- fillMode: Image.PreserveAspectFit
253- }
254- Image {
255- id: snowflake1
256- width: weatherCondition.width/6
257- height: weatherCondition.height/6
258- anchors {
259- left: weatherCondition.left
260- leftMargin: units.gu(0)
261- top: weatherCondition.top
262- topMargin:weatherCondition.height/1.5
263- }
264- source: "../resources/images/snow.png"
265- fillMode: Image.PreserveAspectFit
266- opacity: 0
267- //RotationAnimation { id: snowflake1_anim; running: false; targets: snowflake1; properties: "rotation"; from: 0; to: 360; duration: 30000; loops: Animation.Infinite}
268- }
269- Image {
270- id: snowflake2
271- width: weatherCondition.width/6
272- height: weatherCondition.height/6
273- anchors {
274- left: weatherCondition.left
275- leftMargin: weatherCondition.width/2.5
276- top: weatherCondition.top
277- topMargin:weatherCondition.height/1.5
278- }
279- source: "../resources/images/snow.png"
280- fillMode: Image.PreserveAspectFit
281- opacity: 0
282- //RotationAnimation { id: snowflake2_anim; running: false; targets: snowflake2; properties: "rotation"; from: 0; to: 360; duration: 30000; loops: Animation.Infinite}
283- }
284- Image {
285- id: snowflake3
286- width: weatherCondition.width/6
287- height: weatherCondition.height/6
288- anchors {
289- left: weatherCondition.left
290- leftMargin: weatherCondition.width/1.2
291- top: weatherCondition.top
292- topMargin:weatherCondition.height/1.5
293- }
294- source: "../resources/images/snow.png"
295- fillMode: Image.PreserveAspectFit
296- opacity: 0
297- //RotationAnimation { id: snowflake3_anim; running: false; targets: snowflake3; properties: "rotation"; from: 0; to: 360; duration: 30000; loops: Animation.Infinite}
298- }
299- Image {
300- id: cloud1
301- width: weatherCondition.width
302- height: weatherCondition.height
303- opacity: 0
304- anchors {
305- left: weatherCondition.left
306- leftMargin: weatherCondition.width/3.6
307- top: weatherCondition.top
308- topMargin: weatherCondition.height/7.5
309- }
310-
311- source: "../resources/images/cloud.png"
312- fillMode: Image.PreserveAspectFit
313- }
314- InnerShadow {
315- id: cloud1Glow
316- anchors.fill: cloud1
317- radius: weatherCondition.height/10
318- samples: 24
319- horizontalOffset: 0
320- verticalOffset: weatherCondition.height/-10
321- color: "#FFFFFFFF"
322- source: cloud1
323- opacity: 0
324- }
325- Image {
326- id: rain1
327- width: weatherCondition.width
328- height: weatherCondition.height
329- opacity: 0
330- anchors {
331- left: cloud1.left
332- top: cloud1.top
333- topMargin: weatherCondition.height/10
334- }
335-
336- source: "../resources/images/rain.png"
337- fillMode: Image.PreserveAspectFit
338- }
339- Image {
340- id: lightning
341- width: weatherCondition.width
342- height: weatherCondition.height
343- opacity: 0
344- anchors {
345- left: weatherCondition.left
346- top: weatherCondition.top
347- topMargin: weatherCondition.height/7.5
348- }
349-
350- source: "../resources/images/lightning.png"
351- fillMode: Image.PreserveAspectFit
352- }
353- ColorOverlay {
354- id: lightningfx
355- anchors.fill: lightning
356- source: lightning
357- color: "#FFFFFFFF"
358- opacity: 0
359- }
360- Glow {
361- id: lightningGlow
362- anchors.fill: lightning
363- radius: weatherCondition.width/3.6
364- samples: 24
365- color: "yellow"
366- source: lightning
367- opacity: 0
368- }
369- Image {
370- id: cloud2
371- width: weatherCondition.width/1.2
372- height: weatherCondition.height/1.2
373- opacity: 0
374- anchors {
375- left: weatherCondition.left
376- leftMargin: weatherCondition.width/3.6
377- top: weatherCondition.top
378- topMargin: weatherCondition.height/10
379- }
380- source: "../resources/images/cloud_darker.png"
381- fillMode: Image.PreserveAspectFit
382- }
383- Image {
384- id: cloud_dark1
385- width: weatherCondition.width/1.2
386- height: weatherCondition.height/1.2
387- opacity: 0
388- anchors {
389- left: weatherCondition.left
390- leftMargin: weatherCondition.width/3.6
391- top: weatherCondition.top
392- topMargin: weatherCondition.height/10
393- }
394- source: "../resources/images/cloud_dark.png"
395- fillMode: Image.PreserveAspectFit
396- }
397- InnerShadow {
398- id: cloud_dark1Glow
399- anchors.fill: cloud_dark1
400- radius: weatherCondition.height/10
401- samples: 24
402- horizontalOffset: 0
403- verticalOffset: weatherCondition.height/-10
404- color: "#FFFFFFFF"
405- source: cloud_dark1
406- opacity: 0
407- }
408- Image {
409- id: rain2
410- width: weatherCondition.width/1.2
411- height: weatherCondition.height/1.2
412- opacity: 0
413- anchors {
414- left: weatherCondition.left
415- leftMargin: weatherCondition.height/-15
416- top: weatherCondition.top
417- topMargin: weatherCondition.height/4.5
418- }
419-
420- source: "../resources/images/rain.png"
421- fillMode: Image.PreserveAspectFit
422- }
423- Image {
424- id: fog
425- width: weatherCondition.width
426- height: weatherCondition.width
427- anchors {
428- left:weatherCondition.left
429- top: weatherCondition.top
430- }
431- source: "../resources/images/fog.png"
432- fillMode: Image.PreserveAspectFit
433- opacity: 0
434- }
435- FastBlur {
436- id: fogBlur1
437- anchors.fill: fog
438- source: fog
439- radius: 24
440- opacity: 0
441- }
442- Image {
443- id: fog2
444- width: weatherCondition.width/1.5
445- height: weatherCondition.height/1.5
446- anchors {
447- left:weatherCondition.left
448- leftMargin: weatherCondition.width/2
449- top: weatherCondition.top
450- topMargin: weatherCondition.height/7.5
451- }
452- source: "../resources/images/fog.png"
453- fillMode: Image.PreserveAspectFit
454- opacity: 0
455- }
456- FastBlur {
457- id: fogBlur2
458- anchors.fill: fog2
459- source: fog2
460- radius: 18
461- opacity: 0
462- }
463-
464- // CONDITION ANIMATIONS
465- RotationAnimation {
466- id: anim_01
467- running: false
468- targets: sun
469- properties: "rotation"
470- from: 0
471- to: 10
472- //loops: Animation.Infinite
473- duration:1000
474- }
475- ParallelAnimation{
476- id: anim_02
477- running: false
478- paused: (running && !weatherCondition.visible)
479- SequentialAnimation {
480- loops: Animation.Infinite
481- ParallelAnimation{
482- SequentialAnimation {
483- NumberAnimation { targets: cloud1; properties: "opacity"; from: 0; to: 1; duration: 1000 }
484- PauseAnimation {duration: 13000}
485- NumberAnimation { targets: cloud1; properties: "opacity"; from: 1; to: 0; duration: 1000 }
486- }
487- NumberAnimation {target: cloud1; property: "anchors.leftMargin"; from: weatherCondition.width/3.6; to: weatherCondition.width/-3.6; duration: 15000 }
488- ScriptAction {script: cloud1.anchors.topMargin = weatherCondition.height/7.5;}
489- }
490- PauseAnimation {duration: 15000}
491- }
492- SequentialAnimation {
493- loops: Animation.Infinite
494- paused: (running && !weatherCondition.visible)
495- PauseAnimation {duration: 17000}
496- ParallelAnimation{
497- SequentialAnimation {
498- NumberAnimation { targets: cloud2; properties: "opacity"; from: 0; to: 1; duration: 1000 }
499- PauseAnimation {duration: 8000}
500- NumberAnimation { targets: cloud2; properties: "opacity"; from: 1; to: 0; duration: 1000 }
501- }
502- NumberAnimation { target: cloud2; property: "anchors.leftMargin"; from: weatherCondition.width/3.6; to: weatherCondition.height/-7.5; duration: 10000}
503- ScriptAction {script: cloud2.anchors.topMargin = weatherCondition.height/10;}
504- }
505- }
506- }
507- ParallelAnimation {
508- id: anim_11
509- running: false
510- loops: Animation.Infinite
511- paused: (running && !weatherCondition.visible)
512- SequentialAnimation{
513- PauseAnimation { duration: 2000 }
514- NumberAnimation {targets: cloud1Glow; properties: "opacity"; from: 0; to: 1; duration: 10}
515- NumberAnimation {targets: cloud1Glow; properties: "opacity"; from: 1; to: 0; duration: 1000}
516- }
517- SequentialAnimation{
518- PauseAnimation { duration: 3000 }
519- NumberAnimation {targets: cloud_dark1Glow; properties: "opacity"; from: 0; to: 1; duration: 10}
520- NumberAnimation {targets: cloud_dark1Glow; properties: "opacity"; from: 1; to: 0; duration: 1000}
521- }
522- SequentialAnimation{
523- PauseAnimation { duration: 2000 }
524- ParallelAnimation{
525- NumberAnimation {targets: lightning; properties: "opacity"; from: 0; to: 1; duration: 10}
526- NumberAnimation {targets: lightningfx; properties: "opacity"; from: 0; to: 1; duration: 10}
527- NumberAnimation {targets: lightningGlow; properties: "opacity"; from: 0; to: 1; duration: 10}
528- }
529- ParallelAnimation {
530- NumberAnimation {targets: lightningGlow; properties: "opacity"; from: 1; to: 0; duration: 1000}
531- NumberAnimation {targets: lightningfx; properties: "opacity"; from: 1; to: 0; duration: 1000}
532- NumberAnimation {targets: lightning; properties: "opacity"; to: 0; duration: 2000}
533- }
534- }
535- }
536- ParallelAnimation {
537- id: anim_13
538- running: false
539- paused: (running && !weatherCondition.visible)
540- SequentialAnimation {
541- //loops: Animation.Infinite
542-
543- //PauseAnimation { duration: 1000 }
544- ParallelAnimation{
545- NumberAnimation {target: snowflake1; properties: "anchors.topMargin"; from:weatherCondition.height/1.5; to:weatherCondition.height*0.83; duration: 2000}
546- NumberAnimation {target: snowflake1; properties: "anchors.leftMargin"; from:weatherCondition.width/6; to:weatherCondition.height/15; duration: 2000}
547- NumberAnimation {target: snowflake1; easing.type: Easing.InQuint; properties: "opacity"; from: 0; to: 1; duration: 2000}
548- }
549- }
550- SequentialAnimation {
551- //loops: Animation.Infinite
552-
553- PauseAnimation { duration: 1000 }
554- ParallelAnimation {
555- NumberAnimation {target: snowflake2; properties: "anchors.topMargin"; from:weatherCondition.height/1.5; to:weatherCondition.height*0.8; duration: 2000}
556- NumberAnimation {target: snowflake2; properties: "anchors.leftMargin"; from:weatherCondition.width/2; to:weatherCondition.width/2.5; duration: 2000}
557- NumberAnimation {target: snowflake2; easing.type: Easing.InQuint; properties: "opacity"; from: 0; to: 1; duration: 2000}
558- }
559- }
560- SequentialAnimation {
561- //loops: Animation.Infinite
562-
563- PauseAnimation { duration: 500 }
564- ParallelAnimation {
565- NumberAnimation {target: snowflake3; properties: "anchors.topMargin"; from:weatherCondition.height/1.5; to:weatherCondition.height*0.86; duration: 2000}
566- NumberAnimation {target: snowflake3; properties: "anchors.leftMargin"; from:weatherCondition.width/1.2; to:weatherCondition.width/1.4; duration: 2000}
567- NumberAnimation {target: snowflake3; easing.type: Easing.InQuint; properties: "opacity"; from: 0; to: 1; duration: 2000}
568- }
569- }
570- }
571- ParallelAnimation{
572- id: anim_50
573- running: false
574- paused: (running && !weatherCondition.visible)
575- SequentialAnimation {
576- loops: Animation.Infinite
577- ParallelAnimation{
578- SequentialAnimation {
579- NumberAnimation { targets: fogBlur1; properties: "opacity"; from: 0; to: 1; duration: 1000 }
580- PauseAnimation {duration: 13000}
581- NumberAnimation { targets: fogBlur1; properties: "opacity"; from: 1; to: 0; duration: 1000 }
582- }
583- NumberAnimation {target: fogBlur1; property: "anchors.leftMargin"; from: weatherCondition.width/-3.6; to: weatherCondition.width/3.6; duration: 15000 }
584- }
585- PauseAnimation {duration: 2000}
586- }
587- SequentialAnimation {
588- loops: Animation.Infinite
589- PauseAnimation {duration: 3000}
590- ParallelAnimation{
591- SequentialAnimation {
592- NumberAnimation { targets: fogBlur2; properties: "opacity"; from: 0; to: 0.8; duration: 1000 }
593- PauseAnimation {duration: 8000}
594- NumberAnimation { targets: fogBlur2; properties: "opacity"; from: 0.8; to: 0; duration: 1000 }
595- }
596- NumberAnimation { target: fogBlur2; property: "anchors.leftMargin"; from: weatherCondition.width/3.6; to: weatherCondition.height/-7.5; duration: 10000}
597- }
598- }
599- }
600-
601- // CONDITION TRANSITION ANIMATIONS
602- ParallelAnimation {
603- id: anim_sunIn
604- paused: (running && !weatherCondition.visible)
605- NumberAnimation { targets: sun; properties: "opacity"; to: 1; duration: 1000 }
606- ScriptAction {script:{sun.anchors.horizontalCenterOffset=0;sun.anchors.topMargin=0;__sun = true;anim_01.start();}}
607- }
608- ParallelAnimation {
609- id: anim_moonIn
610- paused: (running && !weatherCondition.visible)
611- NumberAnimation { targets: moon; properties: "opacity"; to: 1; duration: 1000 }
612- ScriptAction {script:{moon.anchors.horizontalCenterOffset=0;moon.anchors.topMargin=0;__moon = true;}}
613- }
614- ParallelAnimation {
615- id: anim_sunOut
616- paused: (running && !weatherCondition.visible)
617- NumberAnimation { targets: sun; properties: "opacity"; to: 0; duration: 1000 }
618- ScriptAction {script:{__sun = false;anim_01.stop();}}
619- }
620- ParallelAnimation {
621- id: anim_moonOut
622- paused: (running && !weatherCondition.visible)
623- NumberAnimation { targets: moon; properties: "opacity"; to: 0; duration: 1000 }
624- ScriptAction {script:__moon = false;}
625- }
626- SequentialAnimation {
627- id: anim_moon2sun
628- paused: (running && !weatherCondition.visible)
629- ParallelAnimation {
630- NumberAnimation { targets: moon; properties: "anchors.horizontalCenterOffset"; from: units.gu(0); to: weatherCondition.width/1.5; duration: 1000 }
631- NumberAnimation { easing.type: Easing.InQuad; targets: moon; properties: "anchors.topMargin"; from: units.gu(0); to: weatherCondition.height/2.5; duration: 1000 }
632- NumberAnimation { targets: moon; properties: "opacity"; from: 1; to: 0; duration: 1000 }
633- }
634- ParallelAnimation {
635- NumberAnimation { targets: sun; properties: "anchors.horizontalCenterOffset"; from: weatherCondition.width/-1.5; to: units.gu(0); duration: 1000}
636- NumberAnimation { easing.type: Easing.OutQuad; targets: sun; properties: "anchors.topMargin"; from: weatherCondition.height/2.5; to: units.gu(0); duration: 1000 }
637- NumberAnimation { targets: sun; properties: "opacity"; from: 0; to: 1; duration: 1000 }
638- }
639- ScriptAction {script:{__sun=true; __moon=false;anim_01.start();}}
640- }
641- SequentialAnimation {
642- id: anim_sun2moon
643- paused: (running && !weatherCondition.visible)
644- ParallelAnimation {
645- NumberAnimation { targets: sun; properties: "anchors.horizontalCenterOffset"; from: units.gu(0); to: weatherCondition.width/1.5; duration: 1000 }
646- NumberAnimation { easing.type: Easing.InQuad; targets: sun; properties: "anchors.topMargin"; from: units.gu(0); to: weatherCondition.height/2.5; duration: 1000 }
647- NumberAnimation { targets: sun; properties: "opacity"; from: 1; to: 0; duration: 1000 }
648- }
649- ParallelAnimation {
650- NumberAnimation { targets: moon; properties: "anchors.horizontalCenterOffset"; from: weatherCondition.width/-1.5; to: units.gu(0); duration: 1000}
651- NumberAnimation { easing.type: Easing.OutQuad; targets: moon; properties: "anchors.topMargin"; from: weatherCondition.height/2.5; to: units.gu(0); duration: 1000 }
652- NumberAnimation { targets: moon; properties: "opacity"; from: 0; to: 1; duration: 1000 }
653- }
654- ScriptAction {script:{__sun=false; __moon=true;anim_01.stop();}}
655- }
656- ParallelAnimation {
657- id: anim_fewCloudsIn
658- paused: (running && !weatherCondition.visible)
659- SequentialAnimation{
660- PauseAnimation {duration: 1000}
661- ScriptAction {script:{
662- anim_02.restart();
663- }}
664- }
665- ScriptAction {script:__fewClouds = true;}
666- }
667- ParallelAnimation {
668- id: anim_fewCloudsOut
669- paused: (running && !weatherCondition.visible)
670- NumberAnimation { targets: cloud1; properties: "opacity"; to: 0; duration: 1000}
671- NumberAnimation { targets: cloud2; properties: "opacity"; to: 0; duration: 1000}
672- SequentialAnimation{
673- PauseAnimation {duration: 1000}
674- ScriptAction {script:{
675- anim_02.stop();
676- }}
677- }
678- ScriptAction {script:__fewClouds = false;}
679- }
680- ParallelAnimation {
681- id: anim_scatCloudsIn
682- paused: (running && !weatherCondition.visible)
683- NumberAnimation { targets: cloud1; properties: "anchors.leftMargin"; to: weatherCondition.width/6; duration: 1000 }
684- NumberAnimation { target: cloud1; property: "anchors.topMargin"; to: weatherCondition.height/-15; duration: 1000 }
685- NumberAnimation { targets: cloud1; properties: "opacity"; to: 1; duration: 1000 }
686- NumberAnimation { targets: cloud2; properties: "anchors.leftMargin"; to: weatherCondition.width/-15; duration: 1000 }
687- NumberAnimation { target: cloud2; property: "anchors.topMargin"; to: weatherCondition.height/7.5; duration: 1000 }
688- NumberAnimation { targets: cloud2; properties: "opacity"; to: 1; duration: 1000 }
689- ScriptAction {script:__scattered = true;}
690- }
691- ParallelAnimation {
692- id: anim_scatCloudsOut
693- paused: (running && !weatherCondition.visible)
694- NumberAnimation { targets: cloud1; properties: "anchors.leftMargin"; from: weatherCondition.width/6; to: weatherCondition.width/1.5; duration: 1000 }
695- NumberAnimation { targets: cloud1; properties: "opacity"; to: 0; duration: 1000 }
696- NumberAnimation { targets: cloud2; properties: "anchors.leftMargin"; from: weatherCondition.width/-15; to: weatherCondition.width/-1.5; duration: 1000 }
697- NumberAnimation { targets: cloud2; properties: "opacity"; to: 0; duration: 1000 }
698- ScriptAction {script:__scattered = false;}
699- }
700- ParallelAnimation {
701- id: anim_brokenCloudsIn
702- paused: (running && !weatherCondition.visible)
703- NumberAnimation { targets: cloud1; properties: "anchors.leftMargin"; to: weatherCondition.width/6; duration: 1000 }
704- NumberAnimation { target: cloud1; property: "anchors.topMargin"; to: weatherCondition.height/-15; duration: 1000 }
705- NumberAnimation { targets: cloud1; properties: "opacity"; to: 1; duration: 1000 }
706- NumberAnimation { targets: cloud_dark1; properties: "anchors.leftMargin"; to: weatherCondition.height/-15; duration: 1000 }
707- NumberAnimation { target: cloud_dark1; property: "anchors.topMargin"; to: weatherCondition.height/7.5; duration: 1000 }
708- NumberAnimation { targets: cloud_dark1; properties: "opacity"; to: 1; duration: 1000 }
709- ScriptAction {script:__broken = true;}
710- }
711- ParallelAnimation {
712- id: anim_brokenCloudsOut
713- paused: (running && !weatherCondition.visible)
714- NumberAnimation { targets: cloud1; properties: "anchors.leftMargin"; from: weatherCondition.width/6; to: weatherCondition.width/1.5; duration: 1000 }
715- NumberAnimation { targets: cloud1; properties: "opacity"; to: 0; duration: 1000 }
716- NumberAnimation { targets: cloud_dark1; properties: "anchors.leftMargin"; from: weatherCondition.height/-15; to: weatherCondition.width/-1.5; duration: 1000 }
717- NumberAnimation { targets: cloud_dark1; properties: "opacity"; to: 0; duration: 1000 }
718- ScriptAction {script:__broken = false;}
719- }
720- ParallelAnimation {
721- id: anim_rainIn
722- paused: (running && !weatherCondition.visible)
723- NumberAnimation { targets: rain1; properties: "opacity"; to: 1; duration: 1000 }
724- NumberAnimation { targets: rain2; properties: "opacity"; to: 1; duration: 1000 }
725- ScriptAction {script:__rain = true;}
726- }
727- ParallelAnimation {
728- id: anim_rainOut
729- paused: (running && !weatherCondition.visible)
730- NumberAnimation { targets: rain1; properties: "opacity"; to: 0; duration: 1000 }
731- NumberAnimation { targets: rain2; properties: "opacity"; to: 0; duration: 1000 }
732- ScriptAction {script:__rain = false;}
733- }
734- ParallelAnimation {
735- id: anim_stormIn
736- paused: (running && !weatherCondition.visible)
737- ScriptAction {script:{__storm = true; anim_11.restart();}}
738- }
739- ParallelAnimation {
740- id: anim_stormOut
741- paused: (running && !weatherCondition.visible)
742- NumberAnimation { targets: lightning; properties: "opacity"; to: 0; duration: 1 }
743- NumberAnimation { targets: lightningfx; properties: "opacity"; to: 0; duration: 1 }
744- NumberAnimation { targets: lightningGlow; properties: "opacity"; to: 0; duration: 1 }
745- NumberAnimation { targets: cloud1Glow; properties: "opacity"; to: 0; duration: 1 }
746- NumberAnimation { targets: cloud_dark1Glow; properties: "opacity"; to: 0; duration: 1 }
747- ScriptAction {script:{__storm = false; anim_11.stop();}}
748- }
749- ParallelAnimation {
750- id: anim_snowIn
751- paused: (running && !weatherCondition.visible)
752- ScriptAction {script:{__snow = true; /*snowflake1_anim.start(); snowflake2_anim.start(); snowflake3_anim.start();*/ anim_13.start();}}
753- }
754- ParallelAnimation {
755- id: anim_snowOut
756- paused: (running && !weatherCondition.visible)
757- NumberAnimation {targets: snowflake1; properties: "opacity"; to:0; duration: 1000}
758- NumberAnimation {targets: snowflake2; properties: "opacity"; to:0; duration: 1000}
759- NumberAnimation {targets: snowflake3; properties: "opacity"; to:0; duration: 1000}
760- ScriptAction {script:{__snow = false; /*snowflake1_anim.stop(); snowflake2_anim.stop(); snowflake3_anim.stop();*/ /*anim_13.stop();*/}}
761- }
762- SequentialAnimation {
763- id: anim_fogIn
764- paused: (running && !weatherCondition.visible)
765- PauseAnimation {duration: 1000}
766- ScriptAction {script:{anim_50.restart(); script:__fog = true;}}
767- }
768- ParallelAnimation {
769- id: anim_fogOut
770- paused: (running && !weatherCondition.visible)
771- NumberAnimation { targets: fogBlur1; properties: "opacity"; to: 0; duration: 1000}
772- NumberAnimation { targets: fogBlur2; properties: "opacity"; to: 0; duration: 1000}
773- SequentialAnimation{
774- PauseAnimation {duration: 1000}
775- ScriptAction {script:{
776- anim_50.stop();
777- }}
778- }
779- ScriptAction {script:__fog = false;}
780- }
781-
782- states: [
783- State {
784- name: "clear_day"
785- StateChangeScript {
786- script: {
787- if(__moon) anim_moon2sun.start(); else if(!__sun) anim_sunIn.start();
788- if(__fewClouds) anim_fewCloudsOut.start();
789- if(__rain) anim_rainOut.start();
790- if(__storm) anim_stormOut.start();
791- if(__snow) anim_snowOut.start();
792- if(__broken) anim_brokenCloudsOut.start();
793- if(__scattered) anim_scatCloudsOut.start();
794- if(__fog) anim_fogOut.start();
795- }
796- }
797- },
798- State {
799- name: "clear_night"
800- StateChangeScript {
801- script: {
802- if(__sun) anim_sun2moon.start(); else if(!__moon) anim_moonIn.start();
803- if(__fewClouds) anim_fewCloudsOut.start();
804- if(__rain) anim_rainOut.start();
805- if(__storm) anim_stormOut.start();
806- if(__snow) anim_snowOut.start();
807- if(__broken) anim_brokenCloudsOut.start();
808- if(__scattered) anim_scatCloudsOut.start();
809- if(__fog) anim_fogOut.start();
810- }
811- }
812- },
813- State {
814- name: "few_clouds_day"
815- StateChangeScript {
816- script: {
817- if(__moon) anim_moon2sun.start(); else if(!__sun) anim_sunIn.start();
818- if(__scattered) anim_scatCloudsOut.start();
819- if(__rain) anim_rainOut.start();
820- if(__storm) anim_stormOut.start();
821- if(__snow) anim_snowOut.start();
822- if(__broken) anim_brokenCloudsOut.start();
823- if(__fog) anim_fogOut.start();
824- if(!__fewClouds) anim_fewCloudsIn.start();
825- }
826- }
827- },
828- State {
829- name: "few_clouds_night"
830- StateChangeScript {
831- script: {
832- if(__sun) anim_sun2moon.start(); else if(!__moon) anim_moonIn.start();
833- if(__scattered) anim_scatCloudsOut.start();
834- if(__rain) anim_rainOut.start();
835- if(__storm) anim_stormOut.start();
836- if(__snow) anim_snowOut.start();
837- if(__broken) anim_brokenCloudsOut.start();
838- if(__fog) anim_fogOut.start();
839- if(!__fewClouds) anim_fewCloudsIn.start();
840- }
841- }
842-
843- PropertyChanges {
844- target: lightning
845- opacity: 0
846- }
847- },
848- State {
849- name: "scattered_clouds_day"
850- StateChangeScript {
851- script: {
852- if(__moon) anim_moon2sun.start(); else if(!__sun) anim_sunIn.start();
853- if(__fewClouds) anim_fewCloudsOut.start();
854- if(__rain) anim_rainOut.start();
855- if(__storm) anim_stormOut.start();
856- if(__snow) anim_snowOut.start();
857- if(__broken) anim_brokenCloudsOut.start();
858- if(__fog) anim_fogOut.start();
859- if(!__scattered) anim_scatCloudsIn.start();
860- }
861- }
862- },
863- State {
864- name: "scattered_clouds_night"
865- StateChangeScript {
866- script: {
867- if(__sun) anim_sun2moon.start(); else if(!__moon) anim_moonIn.start();
868- if(__fewClouds) anim_fewCloudsOut.start();
869- if(__rain) anim_rainOut.start();
870- if(__storm) anim_stormOut.start();
871- if(__snow) anim_snowOut.start();
872- if(__broken) anim_brokenCloudsOut.start();
873- if(__fog) anim_fogOut.start();
874- if(!__scattered) anim_scatCloudsIn.start();
875- }
876- }
877- },
878- State {
879- name: "broken_clouds_day"
880- StateChangeScript {
881- script: {
882- if(__moon) anim_moonOut.start();
883- if(__sun) anim_sunOut.start();
884- if(__fewClouds) anim_fewCloudsOut.start();
885- if(__scattered) anim_scatCloudsOut.start();
886- if(__rain) anim_rainOut.start();
887- if(__storm) anim_stormOut.start();
888- if(__snow) anim_snowOut.start();
889- if(__fog) anim_fogOut.start();
890- if(!__broken) anim_brokenCloudsIn.start();
891- }
892- }
893- },
894- State {
895- name: "broken_clouds_night"
896- StateChangeScript {
897- script: {
898- if(__moon) anim_moonOut.start();
899- if(__sun) anim_sunOut.start();
900- if(__fewClouds) anim_fewCloudsOut.start();
901- if(__scattered) anim_scatCloudsOut.start();
902- if(__rain) anim_rainOut.start();
903- if(__storm) anim_stormOut.start();
904- if(__snow) anim_snowOut.start();
905- if(__fog) anim_fogOut.start();
906- if(!__broken) anim_brokenCloudsIn.start();
907- }
908- }
909- },
910- State {
911- name: "shower_rain_day"
912- StateChangeScript {
913- script: {
914- if(__moon) anim_moonOut.start();
915- if(__sun) anim_sunOut.start();
916- if(__fewClouds) anim_fewCloudsOut.start();
917- if(__scattered) anim_scatCloudsOut.start();
918- if(__storm) anim_stormOut.start();
919- if(__snow) anim_snowOut.start();
920- if(__fog) anim_fogOut.start();
921- if(!__broken) anim_brokenCloudsIn.start();
922- if(!__rain) anim_rainIn.start();
923- }
924- }
925- },
926- State {
927- name: "shower_rain_night"
928- StateChangeScript {
929- script: {
930- if(__moon) anim_moonOut.start();
931- if(__sun) anim_sunOut.start();
932- if(__fewClouds) anim_fewCloudsOut.start();
933- if(__scattered) anim_scatCloudsOut.start();
934- if(__storm) anim_stormOut.start();
935- if(__snow) anim_snowOut.start();
936- if(__fog) anim_fogOut.start();
937- if(!__broken) anim_brokenCloudsIn.start();
938- if(!__rain) anim_rainIn.start();
939- }
940- }
941- },
942- State {
943- name: "rain_day"
944- StateChangeScript {
945- script: {
946- if(__moon) anim_moon2sun.start(); else if(!__sun) anim_sunIn.start();
947- if(__fewClouds) anim_fewCloudsOut.start();
948- if(__broken) anim_brokenCloudsOut.start();
949- if(__storm) anim_stormOut.start();
950- if(__snow) anim_snowOut.start();
951- if(__fog) anim_fogOut.start();
952- if(!__scattered) anim_scatCloudsIn.start();
953- if(!__rain) anim_rainIn.start();
954- }
955- }
956- },
957- State {
958- name: "rain_night"
959- StateChangeScript {
960- script: {
961- if(__sun) anim_sun2moon.start(); else if(!__moon) anim_moonIn.start();
962- if(__fewClouds) anim_fewCloudsOut.start();
963- if(__broken) anim_brokenCloudsOut.start();
964- if(__storm) anim_stormOut.start();
965- if(__snow) anim_snowOut.start();
966- if(__fog) anim_fogOut.start();
967- if(!__scattered) anim_scatCloudsIn.start();
968- if(!__rain) anim_rainIn.start();
969- }
970- }
971- },
972- State {
973- name: "thunderstorm_day"
974- StateChangeScript {
975- script: {
976- if(__moon) anim_moonOut.start();
977- if(__sun) anim_sunOut.start();
978- if(__fewClouds) anim_fewCloudsOut.start();
979- if(__scattered) anim_scatCloudsOut.start();
980- if(__rain) anim_rainOut.start();
981- if(__snow) anim_snowOut.start();
982- if(__fog) anim_fogOut.start();
983- if(!__broken) anim_brokenCloudsIn.start();
984- if(!__storm) anim_stormIn.start();
985- }
986- }
987- },
988- State {
989- name: "thunderstorm_night"
990- StateChangeScript {
991- script: {
992- if(__moon) anim_moonOut.start();
993- if(__sun) anim_sunOut.start();
994- if(__fewClouds) anim_fewCloudsOut.start();
995- if(__scattered) anim_scatCloudsOut.start();
996- if(__rain) anim_rainOut.start();
997- if(__snow) anim_snowOut.start();
998- if(__fog) anim_fogOut.start();
999- if(!__broken) anim_brokenCloudsIn.start();
1000- if(!__storm) anim_stormIn.start();
1001- }
1002- }
1003- },
1004- State {
1005- name: "snow_day"
1006- StateChangeScript {
1007- script: {
1008- if(__moon) anim_moonOut.start();
1009- if(__sun) anim_sunOut.start();
1010- if(__fewClouds) anim_fewCloudsOut.start();
1011- if(__scattered) anim_scatCloudsOut.start();
1012- if(__rain) anim_rainOut.start();
1013- if(__storm) anim_stormOut.start();
1014- if(__fog) anim_fogOut.start();
1015- if(!__broken) anim_brokenCloudsIn.start();
1016- if(!__snow) anim_snowIn.start();
1017- }
1018- }
1019- },
1020- State {
1021- name: "snow_night"
1022- StateChangeScript {
1023- script: {
1024- if(__moon) anim_moonOut.start();
1025- if(__sun) anim_sunOut.start();
1026- if(__fewClouds) anim_fewCloudsOut.start();
1027- if(__scattered) anim_scatCloudsOut.start();
1028- if(__rain) anim_rainOut.start();
1029- if(__storm) anim_stormOut.start();
1030- if(__fog) anim_fogOut.start();
1031- if(!__broken) anim_brokenCloudsIn.start();
1032- if(!__snow) anim_snowIn.start();
1033- }
1034- }
1035- },
1036- State {
1037- name: "mist_day"
1038- StateChangeScript {
1039- script: {
1040- if(__moon) anim_moonOut.start();
1041- if(__sun) anim_sunOut.start();
1042- if(__fewClouds) anim_fewCloudsOut.start();
1043- if(__scattered) anim_scatCloudsOut.start();
1044- if(__rain) anim_rainOut.start();
1045- if(__storm) anim_stormOut.start();
1046- if(__broken) anim_brokenCloudsOut.start();
1047- if(__snow) anim_snowOut.start();
1048- if(!__fog) anim_fogIn.start();
1049- }
1050- }
1051- },
1052- State {
1053- name: "mist_night"
1054- StateChangeScript {
1055- script: {
1056- if(__moon) anim_moonOut.start();
1057- if(__sun) anim_sunOut.start();
1058- if(__fewClouds) anim_fewCloudsOut.start();
1059- if(__scattered) anim_scatCloudsOut.start();
1060- if(__rain) anim_rainOut.start();
1061- if(__storm) anim_stormOut.start();
1062- if(__broken) anim_brokenCloudsOut.start();
1063- if(__snow) anim_snowOut.start();
1064- if(!__fog) anim_fogIn.start();
1065- }
1066- }
1067- }
1068- ]
1069-}
1070
1071=== added file 'resources/images/01.png'
1072Binary files resources/images/01.png 1970-01-01 00:00:00 +0000 and resources/images/01.png 2013-08-29 19:28:28 +0000 differ
1073=== removed file 'resources/images/02-day.png'
1074Binary files resources/images/02-day.png 2013-03-09 15:30:09 +0000 and resources/images/02-day.png 1970-01-01 00:00:00 +0000 differ
1075=== removed file 'resources/images/02.jpg'
1076Binary files resources/images/02.jpg 2013-03-08 16:08:49 +0000 and resources/images/02.jpg 1970-01-01 00:00:00 +0000 differ
1077=== added file 'resources/images/02.png'
1078Binary files resources/images/02.png 1970-01-01 00:00:00 +0000 and resources/images/02.png 2013-08-29 19:28:28 +0000 differ
1079=== added file 'resources/images/03.png'
1080Binary files resources/images/03.png 1970-01-01 00:00:00 +0000 and resources/images/03.png 2013-08-29 19:28:28 +0000 differ
1081=== added file 'resources/images/04.png'
1082Binary files resources/images/04.png 1970-01-01 00:00:00 +0000 and resources/images/04.png 2013-08-29 19:28:28 +0000 differ
1083=== added file 'resources/images/05.png'
1084Binary files resources/images/05.png 1970-01-01 00:00:00 +0000 and resources/images/05.png 2013-08-29 19:28:28 +0000 differ
1085=== added file 'resources/images/06.png'
1086Binary files resources/images/06.png 1970-01-01 00:00:00 +0000 and resources/images/06.png 2013-08-29 19:28:28 +0000 differ
1087=== added file 'resources/images/07.png'
1088Binary files resources/images/07.png 1970-01-01 00:00:00 +0000 and resources/images/07.png 2013-08-29 19:28:28 +0000 differ
1089=== added file 'resources/images/08.png'
1090Binary files resources/images/08.png 1970-01-01 00:00:00 +0000 and resources/images/08.png 2013-08-29 19:28:28 +0000 differ
1091=== added file 'resources/images/09.png'
1092Binary files resources/images/09.png 1970-01-01 00:00:00 +0000 and resources/images/09.png 2013-08-29 19:28:28 +0000 differ
1093=== added file 'resources/images/10.png'
1094Binary files resources/images/10.png 1970-01-01 00:00:00 +0000 and resources/images/10.png 2013-08-29 19:28:28 +0000 differ
1095=== added file 'resources/images/11.png'
1096Binary files resources/images/11.png 1970-01-01 00:00:00 +0000 and resources/images/11.png 2013-08-29 19:28:28 +0000 differ
1097=== added file 'resources/images/13.png'
1098Binary files resources/images/13.png 1970-01-01 00:00:00 +0000 and resources/images/13.png 2013-08-29 19:28:28 +0000 differ
1099=== added file 'resources/images/14.png'
1100Binary files resources/images/14.png 1970-01-01 00:00:00 +0000 and resources/images/14.png 2013-08-29 19:28:28 +0000 differ
1101=== modified file 'tests/autopilot/ubuntu_weather_app/tests/test_settings.py'
1102--- tests/autopilot/ubuntu_weather_app/tests/test_settings.py 2013-08-19 18:58:45 +0000
1103+++ tests/autopilot/ubuntu_weather_app/tests/test_settings.py 2013-08-29 19:28:28 +0000
1104@@ -38,11 +38,11 @@
1105 """Checks selected units by values from the first location tab"""
1106 current_temps = self.main_window.get_objects('QQuickText', 'CurrentTempText')
1107 if units == "imperial":
1108- self.assertThat(current_temps[0].text, Eventually(Equals(u'70')))
1109- self.assertThat(current_temps[1].text, Eventually(Equals(u'73')))
1110+ self.assertThat(current_temps[0].text, Eventually(Equals(u'72')))
1111+ self.assertThat(current_temps[1].text, Eventually(Equals(u'74')))
1112 else:
1113- self.assertThat(current_temps[0].text, Eventually(Equals(u'21')))
1114- self.assertThat(current_temps[1].text, Eventually(Equals(u'23')))
1115+ self.assertThat(current_temps[0].text, Eventually(Equals(u'22')))
1116+ self.assertThat(current_temps[1].text, Eventually(Equals(u'24')))
1117
1118 def test_switch_scale(self):
1119 """Tests switching the scale in the settings"""
1120@@ -58,8 +58,8 @@
1121
1122 # choose second option, fahrenheit
1123 self._move_pointer_around()
1124- self.assertThat(lambda: units_selector.get_children()[3], Eventually(Not(Is(None))))
1125- imperial_option = units_selector.get_children()[3]
1126+ self.assertThat(lambda: units_selector.get_children()[2], Eventually(Not(Is(None))))
1127+ imperial_option = units_selector.get_children()[2]
1128 self.pointing_device.click_object(imperial_option)
1129 self.assertThat(units_selector.selectedIndex, Eventually(Equals(1)))
1130 self._click_sheet_confirm()
1131@@ -79,8 +79,8 @@
1132
1133 # click celsius option
1134 self._move_pointer_around()
1135- self.assertThat(lambda: units_selector.get_children()[4], Eventually(Not(Is(None))))
1136- metric_option = units_selector.get_children()[4]
1137+ self.assertThat(lambda: units_selector.get_children()[3], Eventually(Not(Is(None))))
1138+ metric_option = units_selector.get_children()[3]
1139 self.pointing_device.click_object(metric_option)
1140
1141 # confirm
1142@@ -105,8 +105,8 @@
1143
1144 # choose second option, fahrenheit
1145 self._move_pointer_around()
1146- self.assertThat(lambda: units_selector.get_children()[3], Eventually(Not(Is(None))))
1147- imperial_option = units_selector.get_children()[3]
1148+ self.assertThat(lambda: units_selector.get_children()[2], Eventually(Not(Is(None))))
1149+ imperial_option = units_selector.get_children()[2]
1150 self.pointing_device.click_object(imperial_option)
1151 self.assertThat(units_selector.selectedIndex, Eventually(Equals(1)))
1152
1153
1154=== modified file 'tests/autopilot/ubuntu_weather_app/tests/weatherdata.py'
1155--- tests/autopilot/ubuntu_weather_app/tests/weatherdata.py 2013-08-08 19:55:17 +0000
1156+++ tests/autopilot/ubuntu_weather_app/tests/weatherdata.py 2013-08-29 19:28:28 +0000
1157@@ -6,7 +6,6 @@
1158 # by the Free Software Foundation.
1159 locations_data = []
1160
1161-locations_data.append("""{"updated":1375990401745,"save":false,"db":{"updated":"2013-08-08T19:33:21.745Z","id":1},"data":[{"icon":"broken_clouds_day","timestamp":1375963200,"hourly":[],"windDeg":233,"pressure":1023.82,"current":{"icon":"clear_day","timestamp":1375987800,"pressure":1019,"service_id":2643743,"metric":{"temp":21.25,"windSpeed":null},"date":"2013-08-08 20:50","condition":{"icon":"01d","description":"Sky is Clear","id":800,"main":"Clear"},"humidity":53,"imperial":{"rain":null,"temp":70.25,"windSpeed":null},"service":"openweathermap"},"metric":{"tempMin":16.51,"windSpeed":13.5,"tempMax":21.25},"date":"2013-08-08","condition":{"icon":"04d","description":"overcast clouds","id":804,"main":"Clouds"},"humidity":44,"imperial":{"rain":null,"tempMin":61.718,"windSpeed":8.4,"tempMax":70.25}},{"icon":"rain_day","timestamp":1376049600,"hourly":[],"windDeg":269,"pressure":1022.18,"metric":{"rain":1.5,"tempMin":14.27,"windSpeed":7.416,"tempMax":22.75},"date":"2013-08-09","condition":{"icon":"10d","description":"light rain","id":500,"main":"Rain"},"humidity":68,"imperial":{"rain":0.05905511811023623,"tempMin":57.686,"windSpeed":4.614400000000001,"tempMax":72.95}},{"icon":"few_clouds_day","timestamp":1376136000,"hourly":[],"windDeg":275,"pressure":1027.61,"metric":{"tempMin":11.26,"windSpeed":5.796,"tempMax":21.17},"date":"2013-08-10","condition":{"icon":"02d","description":"few clouds","id":801,"main":"Clouds"},"humidity":63,"imperial":{"rain":null,"tempMin":52.268,"windSpeed":3.6064000000000007,"tempMax":70.106}},{"icon":"rain_day","timestamp":1376222400,"hourly":[],"windDeg":218,"pressure":1021.06,"metric":{"rain":1.5,"tempMin":14.67,"windSpeed":16.956,"tempMax":20.26},"date":"2013-08-11","condition":{"icon":"10d","description":"light rain","id":500,"main":"Rain"},"humidity":80,"imperial":{"rain":0.05905511811023623,"tempMin":58.406,"windSpeed":10.550400000000002,"tempMax":68.468}},{"icon":"few_clouds_day","timestamp":1376308800,"hourly":[],"windDeg":293,"pressure":1024.95,"metric":{"tempMin":10.61,"windSpeed":10.44,"tempMax":19.58},"date":"2013-08-12","condition":{"icon":"02d","description":"few clouds","id":801,"main":"Clouds"},"humidity":62,"imperial":{"rain":null,"tempMin":51.098,"windSpeed":6.496,"tempMax":67.244}},{"icon":"broken_clouds_day","timestamp":1376395200,"hourly":[],"windDeg":241,"pressure":1025.32,"metric":{"tempMin":10.71,"windSpeed":12.96,"tempMax":21.34},"date":"2013-08-13","condition":{"icon":"04d","description":"broken clouds","id":803,"main":"Clouds"},"humidity":60,"imperial":{"rain":null,"tempMin":51.278000000000006,"windSpeed":8.064000000000002,"tempMax":70.412}},{"icon":"clear_day","timestamp":1376481600,"hourly":[],"windDeg":327,"pressure":1031.59,"metric":{"tempMin":11.87,"windSpeed":14.832,"tempMax":21.43},"date":"2013-08-14","condition":{"icon":"01d","description":"sky is clear","id":800,"main":"Clear"},"humidity":0,"imperial":{"rain":null,"tempMin":53.366,"windSpeed":9.228800000000001,"tempMax":70.574}},{"icon":"rain_day","timestamp":1376568000,"hourly":[],"windDeg":247,"pressure":1032.73,"metric":{"tempMin":11.77,"windSpeed":15.840000000000002,"tempMax":23.18},"date":"2013-08-15","condition":{"icon":"10d","description":"light rain","id":500,"main":"Rain"},"humidity":0,"imperial":{"rain":null,"tempMin":53.186,"windSpeed":9.856000000000002,"tempMax":73.724}},{"icon":"clear_day","timestamp":1376654400,"hourly":[],"windDeg":294,"pressure":1031.85,"metric":{"tempMin":15.81,"windSpeed":12.708,"tempMax":24.87},"date":"2013-08-16","condition":{"icon":"01d","description":"sky is clear","id":800,"main":"Clear"},"humidity":0,"imperial":{"rain":null,"tempMin":60.458,"windSpeed":7.9072000000000005,"tempMax":76.766}},{"icon":"rain_day","timestamp":1376740800,"hourly":[],"windDeg":295,"pressure":1029.08,"metric":{"rain":1.02,"tempMin":16.39,"windSpeed":12.024,"tempMax":25.05},"date":"2013-08-17","condition":{"icon":"10d","description":"light rain","id":500,"main":"Rain"},"humidity":0,"imperial":{"rain":0.040157480314960636,"tempMin":61.502,"windSpeed":7.4816,"tempMax":77.09}}],"format":20130808,"location":{"service_id":2643743,"name":"London","country":"GB","service":"openweathermap"}}""")
1162-
1163-locations_data.append("""{"updated":1375990401770,"save":false,"db":{"updated":"2013-08-08T19:33:21.770Z","id":2},"data":[{"icon":"broken_clouds_day","timestamp":1375959600,"hourly":[],"windDeg":293,"pressure":1025.28,"current":{"icon":"scattered_clouds_day","timestamp":1375987800,"pressure":1018,"service_id":2911298,"metric":{"temp":17.5,"windSpeed":null},"date":"2013-08-08 20:50","condition":{"icon":"03d","description":"scattered clouds","id":802,"main":"Clouds"},"humidity":67,"imperial":{"rain":null,"temp":63.5,"windSpeed":null},"service":"openweathermap"},"metric":{"tempMin":13.44,"windSpeed":21.06,"tempMax":16.5},"date":"2013-08-08","condition":{"icon":"04d","description":"broken clouds","id":803,"main":"Clouds"},"humidity":71,"imperial":{"rain":null,"tempMin":56.192,"windSpeed":13.104000000000001,"tempMax":61.7}},{"icon":"few_clouds_day","timestamp":1376046000,"hourly":[],"windDeg":262,"pressure":1028.74,"metric":{"tempMin":13.02,"windSpeed":13.895999999999999,"tempMax":18.91},"date":"2013-08-09","condition":{"icon":"02d","description":"few clouds","id":801,"main":"Clouds"},"humidity":79,"imperial":{"rain":null,"tempMin":55.436,"windSpeed":8.6464,"tempMax":66.03800000000001}},{"icon":"rain_day","timestamp":1376132400,"hourly":[],"windDeg":228,"pressure":1028.09,"metric":{"rain":1,"tempMin":12.4,"windSpeed":14.076,"tempMax":20.13},"date":"2013-08-10","condition":{"icon":"10d","description":"light rain","id":500,"main":"Rain"},"humidity":80,"imperial":{"rain":0.03937007874015748,"tempMin":54.32,"windSpeed":8.758400000000002,"tempMax":68.23400000000001}},{"icon":"rain_day","timestamp":1376218800,"hourly":[],"windDeg":249,"pressure":1028.28,"metric":{"rain":1,"tempMin":15.2,"windSpeed":12.636,"tempMax":20.18},"date":"2013-08-11","condition":{"icon":"10d","description":"light rain","id":500,"main":"Rain"},"humidity":87,"imperial":{"rain":0.03937007874015748,"tempMin":59.36,"windSpeed":7.8624,"tempMax":68.324}},{"icon":"broken_clouds_day","timestamp":1376305200,"hourly":[],"windDeg":283,"pressure":1022.93,"metric":{"tempMin":14.51,"windSpeed":29.880000000000003,"tempMax":19.23},"date":"2013-08-12","condition":{"icon":"04d","description":"overcast clouds","id":804,"main":"Clouds"},"humidity":84,"imperial":{"rain":null,"tempMin":58.117999999999995,"windSpeed":18.592000000000002,"tempMax":66.614}},{"icon":"rain_day","timestamp":1376391600,"hourly":[],"windDeg":275,"pressure":1027.51,"metric":{"rain":1,"tempMin":14.66,"windSpeed":24.3,"tempMax":18.18},"date":"2013-08-13","condition":{"icon":"10d","description":"light rain","id":500,"main":"Rain"},"humidity":79,"imperial":{"rain":0.03937007874015748,"tempMin":58.388000000000005,"windSpeed":15.120000000000001,"tempMax":64.724}},{"icon":"rain_day","timestamp":1376478000,"hourly":[],"windDeg":306,"pressure":1029.36,"metric":{"rain":2.46,"tempMin":13.09,"windSpeed":25.2,"tempMax":17.76},"date":"2013-08-14","condition":{"icon":"10d","description":"light rain","id":500,"main":"Rain"},"humidity":0,"imperial":{"rain":0.09685039370078741,"tempMin":55.562,"windSpeed":15.680000000000001,"tempMax":63.968}},{"icon":"rain_day","timestamp":1376564400,"hourly":[],"windDeg":275,"pressure":1034.36,"metric":{"rain":3.75,"tempMin":15.32,"windSpeed":15.048,"tempMax":19.03},"date":"2013-08-15","condition":{"icon":"10d","description":"moderate rain","id":501,"main":"Rain"},"humidity":0,"imperial":{"rain":0.14763779527559057,"tempMin":59.576,"windSpeed":9.3632,"tempMax":66.254}},{"icon":"rain_day","timestamp":1376650800,"hourly":[],"windDeg":286,"pressure":1027.6,"metric":{"rain":2.84,"tempMin":15.45,"windSpeed":27.791999999999998,"tempMax":20.46},"date":"2013-08-16","condition":{"icon":"10d","description":"light rain","id":500,"main":"Rain"},"humidity":0,"imperial":{"rain":0.11181102362204724,"tempMin":59.81,"windSpeed":17.2928,"tempMax":68.828}},{"icon":"rain_day","timestamp":1376737200,"hourly":[],"windDeg":297,"pressure":1028.67,"metric":{"rain":2.18,"tempMin":14.79,"windSpeed":28.836,"tempMax":19.03},"date":"2013-08-17","condition":{"icon":"10d","description":"light rain","id":500,"main":"Rain"},"humidity":0,"imperial":{"rain":0.08582677165354331,"tempMin":58.622,"windSpeed":17.942400000000003,"tempMax":66.254}}],"format":20130808,"location":{"coord":{"lon":10,"lat":53.549999},"service_id":2911298,"name":"Hamburg","country":"DE","service":"openweathermap"}}""")
1164-
1165+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"}}""")
1166+
1167+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"}}""")

Subscribers

People subscribed via source and target branches