From da9d21b496fd5cd18eae501db8dad5f177932f52 Mon Sep 17 00:00:00 2001 From: Pierre-Gilles Leymarie Date: Sun, 29 Jan 2017 15:45:03 +0100 Subject: [PATCH] add weather box svg icons + controller + style --- assets/img/landscape-gladys-weather.jpg | Bin 0 -> 41097 bytes assets/img/weather-icon/cloud.svg | 9 + assets/img/weather-icon/rain.svg | 11 ++ assets/img/weather-icon/snow.svg | 14 ++ assets/img/weather-icon/sun.svg | 15 ++ assets/img/weather-icon/white/cloud.svg | 9 + assets/img/weather-icon/white/rain.svg | 12 ++ assets/img/weather-icon/white/sun.svg | 15 ++ assets/js/app/translate/translate.config.js | 12 +- assets/js/app/weather/weather.controller.js | 107 ++++++++++ assets/js/app/weather/weather.service.js | 31 +++ assets/styles/global.css | 3 + assets/styles/weather.css | 208 ++++++++++++++++++++ tasks/pipeline.js | 2 + 14 files changed, 447 insertions(+), 1 deletion(-) create mode 100644 assets/img/landscape-gladys-weather.jpg create mode 100644 assets/img/weather-icon/cloud.svg create mode 100644 assets/img/weather-icon/rain.svg create mode 100644 assets/img/weather-icon/snow.svg create mode 100644 assets/img/weather-icon/sun.svg create mode 100644 assets/img/weather-icon/white/cloud.svg create mode 100644 assets/img/weather-icon/white/rain.svg create mode 100644 assets/img/weather-icon/white/sun.svg create mode 100644 assets/js/app/weather/weather.controller.js create mode 100644 assets/js/app/weather/weather.service.js create mode 100644 assets/styles/global.css create mode 100644 assets/styles/weather.css diff --git a/assets/img/landscape-gladys-weather.jpg b/assets/img/landscape-gladys-weather.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ec37b258d5b649b65734063e0acb9ed9433db1ff GIT binary patch literal 41097 zcmZ6x2V4_P7dILe6%~;p2+|>d5D)?BO_~sTODLg8ZvmtPr0FAwbONDCmo5nb5;_Px zO7GGFp{X?K2m%TU-bJ7He)qeZ`Av3bPWhiRvuAeB?(eDJpFvFOPh6cqAShH2L<#yo z$L~!Lts2VSJrHybL;*CjfVa~D7~7tUX}1OlhJJ932e}-Ay`1dU{4iS_WE17RFn*7+LPHu&}YP+!5#H1P)$tVNn4A0a0OTX>oCB z>HnKw`S*JeE#mlkm=n=iY;_BX;694LW`fO0O%hbnEW#< z0o94>M4HYsGYo|JRo^onPX1dI5@i=MrCn0HOafan=6uNy9A zsh3yc|1w=6p84Q<(ivJ>ZWGb70sR*QvIAr@aV1^=T21b$g@K<_(ewbIb#8(#0f0Kh z{xY3`djM#=r^-M@GkeAn_6P)`0r^z!$p*DBhd(qWMth;=-l`?}oVk303Iuv|fgYHs zAWjenh!!AF$JuQ8=WIZLb3l@)!7PBBTPW~DkwH1QJgMj*xBb~r*ySg_I_tj&@VJ2f z0l3fqVR}si3R$_Z?=+MyFc`$vY7ug<>Em6>_EUboBKxQI4dqvHW_9_}g#12n;mptN z@4WKsnfoivefRk=$!0Z1BtSV$j}CA*Kd=J;yrZHAod+PkJO_8hcZ(~c$dw5z%{S63 zZ&|JrogTRhMZf7VxcJY%pi5W&0sV3FdjkN^--Gk--%&@gGwvSea&i=OeBtEn48$>2 zPIC3Lo`Ux>Q~~;KP~^?<3Qp3YBB#Q9d#K(oHA8OEvTZO&-e+tt*wN>iHjTigi2R89!kDVe#$$P|&jF*4wIz zagxzz7mFIFPtB!5^C5B$!{QHddX`O4akF)8VwZacg11tuPKY7FKS?4|HYPKwT>0Cc z`zjDhj40_T>uAAhtY_1fTa#Od`(9K}G}ogNwQG;cESAf9I|WC3=y~J1ik`FRT%sK@ z6ba_P*I(Ti#>IzVc%*E$fH@H6{j6PQ^kG}ws7kO=AUNn(`@pv6-l)E1pa6S#@?{U7 zrU>tfckL#{UG*ALVAQ|i4~iMx$=%sG9`a&xJHzP;Q{GoXujeAsnt?d_4;6|TvX^C- z#$nP)40PQ8`>E1AaaufR40BmVqz-|rW3#IwQm6RJlV21^sq?9&K|2x?@6m{Y?vH@8 zUnfZ+qD2MnBykHnd|J?>%EI?cnVCH_s(U5cC%LSaaf@Hba`r(jo_EQ><(3%fp$7IL z!nT_f#N4n`DlG9H4jN|`o_?Is5`XF>(^?|G{qb%F<2Tt3Px@=Ki@AP=!?NdwgE!*P z2+>$8N0C0=&n*(>;d-7pcQL|yDE}2s-6Dss2R9haLK7qy@0ZOntMdxk-!rIXz%e8y zVo>)kI@Dqv%p&Y*&Ob`LmqI{t--~s4!}LNIdS|V00Uo)GKQdD&}#b^sN z2C=MZHhE~~?XFO}oJLqJ|E8YPijp9QHoR*{Guz;8C`)6&%)_`n>xC;a)N>S7)2A!+ zRr}|^XJ?K&r=(+ltyE79cUv`X|2wGdXqh+k8}?nz{}Q#muws^eXToUBek=!7 zUP>J>Dx+_{USX+6=#QST{CDlHU;HxL1%XoNphZR!a@;3@n4W?{^}ici6-v+2_k7a& zj05kSh$BCeUt1-L+?D-Yrsh@C(*)NL-k*Kjs)QKWUs=998P_9&VIgD&$9KONlN`b>J#n79=`{w0mzfJI3mgj2<0tvnID+QKOA zFRH?E3|URBt_#OcMm~Hy>~~BYivDCV{NM}YlXmXoTG};sX&fah}2i9uh3qOIug3Jx%_$PL(MshuAHjq8?wUcnVrU-t~$wP3!XGE`P zKHzRlW}0Ve7Isr?a0c#Y?O0&--51=#J6JIkZ<#II9n^NqDmU*kyCkxgB3jE)ALa;N zQm%zS+j&DBgAA2R=tj3PR40%PHhP!nrk5$A6CH}Ln50&VXI1JM&QY_h!OYT5oY{jL zBVwYwZpXz8dJmZA8*Da?$qA)6=;Qm$J{C9kZhZ^bs(8lO)J?O|pV=PLar4zb=b;zV z4DU4EF~gOYquq3jW=5Zc^*6IPu#(H*s;O3Gb-0Yd&0P!c`bn zTubU_^9d7Yd}BF~I2-5ZSKuucq-nmqymp~q1V%r^b{N#+ktGg4$XmO4b>fQzL3zD{Q@IDndCaSQ=Td8FQsENHDRjbCiBBH^un@> zR9_aaAu>$npiN57#}3zKm21!cG{-qoaZ7s;XRV!{>#d>!r-}-{Kt;NGE+yqXMTw~b z4Uf}lgx%Ka2a*Q<6?W~-7Z#s!*oR_4W40PmM z54OMfUB2_+?a<(*$D`kftDW!eXu0)Q>$8mH>dW$9)8ffzo$|x2C7|jvhfK?E4w1EW z-`#8+bKEZLXCfO4NgrKVTm7UgxwjfIG!)6$9_l@L_s5=8C41{2bRgY&xyN*{8V5%? zz4|Yg*i{x!0B_hOy=4>$~+84PPX3==vsg+#E(@$U>yf?=Vk@H*Xd`O*X{>3$w#A znp;{ICzRfH%;+z;FIE#XVj@FZnv^^KX7yv%u*l+spUcN`AEDJpx^sH`_HuJ2TW0e& zls2n#-OEZac}gF10^OS4Zu!1RdgH%)9OoWy^SU?Zh3ZrHGGaG_D%f)!Rj7m`Nn|Ovp%0mVaBH)2kjHoHXpL4mH{nnH&y>t2;k@ z!j>Z!vVz@iHHDK0vTMoGYIAV`QZ8z~I7jBa(IAPDAtJ&R2~m%^!p~Hob`2bT#VqDC@~VBX zSl`z{fxb7jed3F29m}R;y_QE?O)@R_H+0HsFgNc%EKyF@iQsnhO`=J*&xV?1@Po3| z9=w9-RW0`yVC#8l5~7(%Z{Vmm*XW~qu5iWR?uf0uH-$RZS&ph)+)9yyIR*ETFz)JwiVhhgO#u{=Nf^g?BBK4FOEr@f-%*UO>Adq zyOozenx0#2jXjmFg8WSbSd7Y03-PL*}+N*J6+jHENvX6n)MnOL2Z zwzxN-wIj05^$%S0O^n)QbE)JX$e{;B~g-BwAA%%5yblxM(RicsW-as14vXx zjUCb3HQ?R9d=OY_k6Zrf)GKDn%z%!B`8XV~TbZplU!9!x}a&y}vJvJNe%$=ztEy{1flqIxpcF>F}_o^e!Nj|*Ro3Gpi5 zT@6NG-honU(^)^>*A@NdAGo@DC|_SLcBJ?vQ|Mq`4jZuVy;qt4ZO%*KcFV1l?JW5( zC10Uq`|~_=sev}o&uI73f$z5p;IYOJUJxI9i=DeubU)|Ccrg=&?=D(1QHmyAq--Vb zJ1)6CEpDSU+WD6F2anxRg_v*C!aEKNM3h0q$ntEObDhL+O3F~#`vBON$B6{36inJ~ z>b|mK#v@e&Z-g{YuhxS; zUR%|cuPog=wAqo@fLn#KD~X0`q|6K^lUH|h(>}@xkyQ3iA!B!~AI?T!aVgsPJYl#N zQfZUWc!JK_()`tpU~6pom~i0CGI)4oY6yeM*&FWf(uJ1pV3vzgw;Eo8qxq|7lj_a2Q?1fjrGl|$qx}R?F z*)`%+jH~4*Mne=TZFMyxZmns(Y2`Js?79k!D{>^NA|vY`ooI+A)ARGne0;oyuT0G8 z&e6UudI&DOy*}?5Cu3R?yu9@IBu`j$PvN1%;tc7F`mao=)W*sxVz-ZyxtM6J>w{iER9 z8%`@9TG-?*cgI(~{d5(BbiQMk^(xb(sSUiVdZ~j3BlFuR@cW@>tupx#afWVOA4jKCBEeAbSgiF5Q1%N zCR@YcrjXP424~Bn!BT~Z(8MM;>DuuolvC5}{k6Cu7d@e@YHithm{YBXATeq>S^a3s zrC^;-{>0pD)jS#D|FBUPb_bHBRW6tR`161Ry!auOm_^I^t^(hB=<_q8BgkJO|N#l;tRtWe@Bu_D)xRCGmDFHphsU zj)y*)#_eD34xI-JfxQZn!f!X8{0e^46{?}#<#)Hq>f^;NcQxMO+9zIy%ipr_Bg}@^ z7*B0%Fi9^8#hu>z&*%~=v`U@&-BR`j&HaU;z6FdkFk`LrMz@TeEQ+tzmI_HaxfAOH zEV;#ta55oW;Oy1ZI*o^7Q);H*QSpc?OnPGclPWQOl*6L*StVd-73 zedBbg^N}c>4=|^4$O9{#4)ru;wUkduiHV@rj^g7$bD@F_@kUQbwBMdI*@@*AV$i{Q zEgP}&^VDB9M<22VAJLS_(HF~X7`F6lc=cu=Csq-TP@iZU2|PVKXpXMDy|Vb7i`Q=r zYmFqn{eo9>8*PLpQKoVx>y$EX^b-ZrP3}fPV1`n%@fNtjVF~6ObCH2+Zoceoh+h)Y z(u(;@LT6C#sK9C8kM?#*jxmHEFHX@)e?|tx%EHv2%l*>_`j_|h?YgR%ZxK`y zH=mnbyH8ni{t<`+$XrsMI}bW{5%e3hXQY1wJ(2$f#yo>6;gPz)NuNykcXLROAp@XO(t4VObtIH* z#FsL1*g?T*TyNNB7&aqE*;@q{YLf zIc!hn=%qzRZ$Iyop##{p!Arfo7${i04Qf174xF479}TW4QCiQ0R}oGlsl*<@(#wl$0ONal|EFl1EVFwHAg)P z{my-bB{yDDm6o6TnTCP`MuTe65Zv@f3%Zfgl~u1Nxe<)<2XFcxL3@^bWLOi_k|*}l z?xGKTpx~G~y8<=T3t8@2tdBF_-=eLQ*eFU`gsWlnyP#Hbl)3mKt>c!2ZhOL1ik2K* z!uvw!s9h5itaL@9G6jvdu-XK6EFrb9+6;F!n$_g}tBqt<+EETDSGGALcef972THN` z7DQN8x;j?6I=W-QTRK}))e5}Chh9)weiY`Z_Z|icjE7c}4A*`CBV&Mi^+OM!XoG@AbNw zo`tScnjYyyRk>*5!=>%J?;k^0qrti8MQ}nlHFDa}1?%MQ6y8!3r6)muh^de4=axnH{08YwH4)mfw&6jFv5VmSZ9aXt z01L|z^ygE|!&5rZ*p*hu*8WtJ66S@@2@_z_u}+fTGm(!4>m8vf#2~2&)g$7iyGbM) zQWzyulVZXgO_PS{?z77iu|8r8MV>WB#KggPsJ ztc{*tx1EjN612np^VuBZDW~z5qj~X0c3gAwzPD-=OlLv4V>7|NT0_ija<^=d^~0Rz z_IRSkIJ)@HumK~dOyLL2e1gdfe=gvhnkWlh(1>Rj?|SU=>1>*ChRK$2(<~MwBp++8 z0o0T)RM@bQ{-<;h(fd7|oBnca2^|H7y&N4cR9P|5sf5I#Ztnu-8wEHArIe87oS`qi zjZ`mHxe|vKdrbnHkC1Y8J`QJLMzegxRFG2Wvs~j6St$K0j&nizy*~5QQgqp!O&^UU z)*;=x3}~!MNK!9r(phlG&H!q9UX0e-ujo)8bB*^;eV~Y@SZ?-*L%M&$mJAPuQC*@Y z|Et=EG@r+todB|9odN^=MZ8E+LC{^E1%Ge~gr^71Nn}?Gq}dK+9>koM0)Yl#HtOyx zY+Q1d^mXRb7D$?yv=t*`11*0U|4?T86B40oK=caIH~Rrl-(67i({NIUY6h^dfYY?W zDe8Ls9Az9#JnKqroyuma3!RsDRbg^$(Hh*))!DmNGZ?*1BX4PR)knQ{rNFhR7b-k! z-I~(XQL95jt~sZ|X`4{+z7?S62nz1K5J9Re+~z8~osg==HCe5D^(l=kPt+*TyZS;y zZ|)4t;~t*Eq@-_o*(j?f2{1QJdLTHrs!3m)_uBR`@4VbMwwK2hQ9ytMpgyxwV*UZ; zeU%r$cB@aea_>sX)2&$SZx90qG`4c*XKU;hNlCMFR|jcj(4q7J`ctzh{~&kwSW=YA zim5p|K$Qo(Daw@}dP$0+Cr@MImy&nVu~U@d$J<1;zJ|c7377g>33Gm_W8c?!)@ip^9I&xNmR$tjzY?+QmFm z<#tH^3aphoU#;X0telIIAw`D{=tTwoMIr5djrQPz)U|YYixi2ITI4kf|=~Qzf>F#l?>T< ziu}S94K&98M(O{nRx~)1^&jsU-T%aK+yNvhb6Cr2n4L+d2-V~%q8l*E6o2WDKb)!HU^?plOZguGPf^GpO2xlae}ySi{B5M>T!*^+zci>Y$`cAd^oKL06trhm$Rj{51x?Q%&_D=eY9Q62vMeCwCY)ByZv#gs5yz4o75=v{oyWby2O02Cb9FaA-q_ZOqaXhPK=4gkjg z3-v!48tZ3V8~>9`d))8`f$V?daAxiQMuYbF6>#;}|9`~qe*#$7{z#?;RE7SDj2vZu zupa-_2xy@_c#SURDEvQjis#@lz@stwhwhJjrGMQ$H$14*IKwEEDW1gv9q39nx}=GU zShiQ|V=q+!qLUEmV{Klf?V-6#i?yXx<;CKp1(+w^sWT)Qkag6<=J+I89;F6naL|n> znu{EW9wRm#o0fS++*+P_6XM;1GwsSZw(M;-&Axpp-gT-lqWqyBs0r6EtTh}e+TV8S zN87M-xa0FAD?G}{CZYj=N}gXVn}OaO=@An3VS`(?saZ^w4?}zTG%?`CYri}!)ZZi~ zj3Kn(JF(=IvgClfA$b`!5j#853awNbXI6Qb7>ycvznOEj%pFr@t5=v0#=GwhCylYe z-Qf*&VoqjGhI@DA_QBp2UmQ-2hTPTF zwNld9)|ebLbWkjSlp0KrF5b$m6|?)$AF;7g!fH;^TKM+kaL2;Rd44?TbjNyYNdrQ( z8QIoh{eTA-7%IVm=m~_|&|6S&`l-5LMp}zLp*Lp0Q!~jb--gA^UnF|QE!vpZnHz?h zD!rj7xX`&-cd)1A)zYnax~*mGi-KY8aKj9*SV9`%eG_4g)%F!>2m1r9T|TBh8HD-i zX4oJunE`_MTv1;$SmeI5zGd8RzVu>DY^6Qy)i-0=r0-DPQOe}#ThdbtL;N?vDqJ+J z!3Z-6QODEH8qz*Isa4Uodie|8Qc@X2$68b|7N#Id~ayS5PX8&g~$S)ucC%n)|ff z=%oz`Z))RF(f9MZJ85QWMBo15#Oj6^wxUPlc6)eLLc8YHNH67rY_fw;d2JQhA{u_% zGud>Qt?`3t&2Zq>h%%xm$K94R!65h6$Fx6gVxCyxF}=BH&US5vPbf3@8>`(D;^OQ~ zcPUzO$SP}nr6*2th@hK;4A*@c1OE8kOu{-eZbrsnCQX~6{6$jPwvY7eetiI@pk7AEiIsW$c;8sMg<7QeEkQPe-_;!-ZpU8<|h%unXimoxqk_*MO}$ z^Vnc_MV;nX5~(Lc@18l=`rh5{a$NErqDKBq#R{O{bDIrhCi&{*+a`fN@CKA?z%zEK z$orFbtp!Q%hdW6vxx&mAvIoTW$|!RQmo|t=*P2~lIo@6T3K=tnAH7I#LF(JDW&R0% zwdN2-uNihR;ASt3U2`+IJx78$2R%m2{cTy$?0wX`TK6_{ zIDTE?LyKe+?7-qcARlkME1~u2ozbHuG8m%;4x?1;=BG(G5u9cfuhD?*hEYWElvB6N znLOAqj$t$JCTjS3OQ-n1-Zf8U2rhVfqmjmK%Xz#-smlGwx8Rdz8~dNvP-ODdbp1`p zd~sVMHeHi*!J9K$IuQ&W=^LZ7pK1}o?cAB~t{H#dwqyUW?yzEHD7-h`*nMiTGvR2j z83N-?DiHDQnEsT%Sj{LIsjbr9^W;-!b#_ z@~g$Q?yy*W^ZxekQfJD7+{l$aJ?d_rFNmT2;-P<=nnupBBc^d#1PbBs+-AkkYo zx)s>^=lM4NY<92{UFnUtKST(al0T!58`Rt0Oo-bxeq8=oj)`7V;A)q<+RHY*Y%604 zaVVP~f4MQUGYXL?Xgs7BS}w`l%=7C87T~aplba8IHb@snUj^nd*A+j#Qd{sW4cMDO zkNfqT#{kUpT~CJp?sVCCI)>@xh0I=65gV8Zn+Fm*S@Uy?y|r0)sRHWcc(2My^|*@7 zAiUUbc;`{e{v1Rg7!K+fs{Z|&`={Cey&Dva#D{uFNAs&*hVC1@ch|NutxYm>A^ZWNn&apd|VPFN?;~AHcY_Z z#^rYFGg|!yc_h2vR=Ig##km94OxD+*Tk5iF75ec5*tqim8+dt_-NJ6;ZsQI#9m7}o zvW2>kp;w~zhfR~D){vVMh|G_%c{8>Z3_Icw5mdshy41)i*Duvw5hj^cKII=X zLQ{=K2E91BsUL)G&kum}J)MhEyQ(!4PqcC{oTu)=JOn0}kGBG_66q|R&9j~*DE}FD z-!mh`UsXV278-}!lG_sZxEwSR_pWgguWqFc$1>|~A(&f+YVSE5PN(3$`(p=Ns?)`% z`rFx0=M`WulG?Fm9%>e2*aKHVdG_qj)RlOClpku1>!$|i^hn3V#YUT7p-B*0w1v@N z@r$mH{4GV|yjon~scPU%9Gl=I1@J&A#_T`w?3OLOnRU-tN)E_MAyEXXm)=Mdd7UT7 zC!1)t!cO~6|0hItp~#rUPCp@2=a_{~-*)du&5SMR?#54zp9r6-s?03DGq!Y=CH~Tm zg{6{|7*r-yNJ>n<{Dkd(l*MF(mXts|g0t&eEsuQX>ruSbRqHQ50h>pEI75O80gQn> zz)$@w;>mh3dz@z*(mUU?M{uy~x0QjpwrnMvHOWAFVoQl)}F=Wf!&WbW@Nw{*mh06!YxHHJeDaUreJ< z?&QTp^;8)mBr$=9wcd7}n-W$^>&IUbejfQc_f}V1)>q#nAB7xkpsB5po ztP;ylZtUN9k3L`}u=c7%(*^{4>(Db?rdrSd#bTbKBxeHAidhVN5b?q_vK=I%5PAxd?S`*^?Y-=%qni+S6socOE6q@ zrcXG#93j&v91AASvFk6c=(Ps1JIyI1@LR?IB5&`^PkKxb?Zjpa%+=r{AmS=NzP4C0 z2l#Bm+(&2N>D8`v%jmuq%rxQ1RQ|~LS6pcpgwb-qe<=Q$)uwpf*E)HVeVOi6(I>w_ zM*{=TNInmhHZtftR}TacBdhiLszousLDpl-krQj5n@_J>_f%NKOgPkNIqur`B7!{h z%v<18~^s7K}R$rei38Cl59{$*!be|uc=uPwJRcZ57ApofgpfZ)ochE>;SM5U! z%D?%>wQRWZ@{obx5-cx6IJy&=PI-tLZJifHoE95;*#`>+H@c%w6Z-4YYwFP=go$@L zPv_?&X|tXTPn6$lrE0Ch8;q1CJvJ|OWzjdNstuN zveP?nMBn>-E8#WeL~fMecQW%7y{ijS)GGIaW*dDxZ$ zWLQ6~__7Tl&6$_v%h>G)0-NOl13AA{4-JdUm+y%ur@DJj9-`UPT0^h*E3hJi5{frs zFM0<{cs(jloNa0d6z+j@IQA6d`}qPw4vCJg@i*w;sHz#yy6{wFa@Uxp2d^haw=gBU ze53rw^1HHd&XcDtgwG?B_-7X`_>tbhEKM{R1Wa_V(h$wr5xJJ({fXX=NQSDfR_tjvJU0xQ}8SigNceOa$BUdV{e_iql_X=lwk~k0o z%aw=gUpH7&UM$dOy-sr{Mv&Ox>TqCCn`GrSc(56POUjE#bKf8mTT3DCs*bne)0)3| z_r1X^l;(E0Q7WDKkX-ryQofn*P9F8OFA2GC>FRM;LyKJ2$AxLIAxZnDboV|PxU5X9NG z2>+O^{0)-aQbJ&`t+h-32T+c^{AWW0Vs!XrPjP!M@OuyRW*!?>DG?nXk_9p6J3K7Hvu#}p{WcFyA z?XIVnPzW_(g&O)Dy7J`V+RyupnQPhnxhv{n*M6 zS}9J)99ZHV9TPloXsM{yhgCgU{PnXZGjeL^B0uM?5yjc5d~Cfj`!xrFQbMYdO%=B0 z8^l;UqcYzD!I&vfmHx*6vwU;KAoGQy$n5xqq zW>2eInHSbc`wpKh(chHy8}te+O~@p#RX-Pkw|Hpe@eNTik`JX(xJ@PEQ$Foy&Vxw5 z@AJ*V@~AL8vW=XaxJ^=Ra<8Ceb~Fd;mY99!ussK zY6L>8A&ZfxD~43d;SImK=z}v+xh-8tn8A->yOVPSyE?|?=zL^&lJ0Cu_I>waZTeh3 z#>V@pqyJMlyM*JXa$)m81%C+act(4a=nmhjDerf4!d2kOKl~U==$abb=6G$a#8UmB zR^jp=K7;#n zUssJzbYq+W7K2Ye`W>A1b5xa!{eYm-H7-ahc(zQms5>6}#~vfM#}DM)P9zHX z@vY*!dp>UTtFw7QC)w037&_*>?#&d`wi*o6p_Syfg>E8-)|!dil| zqhG3rJv)T|I`!a{o@s{WJvMYB)uvDQt8HJITvgy^gqt^KPDv;{Y#-c6R(0_Y?}13l z-4}{XT!Hr{+~8K}5en-Q8rYLe&2n3p;aXx>`Hl?GG}rK!ao-tB+ye`}#cMp3c!McR z4yI;{AGX6awzUwd3C-J5Qjp5(bZUGiJ`Ijv#u6JV)zf~1Vj~v6>K^RN*OEso#4=rH z7#S=kO>JbqGnG|_1me+>x^L5l8*{dHkW00Pu8lEG{)f`it6PXm$jMf#>i0 z7R);*ky!^b{qEL-*$z+ojjjo1&_Q9U#Yp*^JT?AUy49ai-O;n%Yr9Ssr`5(Zr29hB zU&4gebA0|S-{im64 zU-1@epHLO^>9S7k_3_5TpWaz~?rtozJRna#5wp16?2<0Pw@Yf(3A!OzU(qU&4kgQ* z3sx_d$Ornav|1@ShVqC1WG6`wPF^0>)|_k~S{#2247a~@eM{(vHLJh=Mec^L7NpLE zl#@JiX!@K07a!I>*R1+U8Jf4km&Y>?rn<5g8x?_7CamFzYc3j-pczPQH(i>Q6=%5@EP@I;y;WSx z9@dYLNIKg_WRrWd$&QdFQPM!SNi=xLhas9pCSkE^bI3E$e+hE+OUkz!BJK_XNsI#{ zZ};RJ2Qj3{cOjD&llqmG;<8cSFE*oQfV=rfU44N z#aF?=xjG0~FFrZG_T+SkmA%$I*lJGav^DMf)2EH;EV9ZtF_R5*Bi_JP<9$G z>G1a29b&V>yr$vOsH;)Kn!O^g9MevSm+D=WOy-ErPBC&q}|71m)rCkZTW zO-SboBtj`^La1TgtmB{CxZ_{*o-+3w26i@9%OWqjha?Pq z7M!p%ux}B>Wr!|$?0R6GqFS^9nG-6yZr4pbDh}o)!>$ny!3MzgQ;xd5Y7@#s04IEq zB#T2}~7>Vk|5A)U#rpfolgnezv#rt*j?v^rn z%P?)2po%az+_UP%kXi;)H$s$8kVvhN3NB$1vrl@I%zo7bwH0y&O~vdjiLm&(YtHgy z%k~l81Ltl~Eay;^-fr}RgT=PDn~}w=_c<}M#<4{=@bhSeL_)M+@rdG9Z_}vjr{l5)Nze?nXz!Wv+JrmsE&m0V9!1LyJjq_By9VyIOwGa+JJ;^GiaqUb?wLkYm*@8$|1e z72e8yx4ZKFRDMk|gVAjrlnRuVf?$@WxL_a~lk+3{qV)uJwWEpK(BaiC=?T|ooS54p zF(|6Le8bVq(yiZKSI8h&Fn`f#m#6z9o3Snz^box5?>;dtcq? z>eSM6%fFdyj%ufoteV&@o3nx%JzHLOD!`*R4^EycPr`1JCr2ekJj&nt59!qmRxgPV z`X>8gmV_}Ie3E;nN)RbC&k6`s%gudG&~@Xf_E$Tztv9K-O1GJCh^D3b6!1dwEH|ME zWcM^*MBU~@NwaDgmQu$@bJ#uXc5uXd*jz+>wh){!mv?128qztPu;H`uZbX{8y)P8Q3c0;?cgLB=G1jKeYfbr|niBOH zRo2tQ76jtS_N2GM{`0vnLrCvlX8y2>v`@r;Ow2xmab`r*eZ?4xUKu+5{;G|+@rA`$ zh8wpVUZ^Gm`w%76gxZ~wR(DClNX8evg;@YVG8VC>Y-Url83rO}=m z;-Oo(M>7DcpJ}8U=hwRPgM|8W5zId!pqbr z;qu(>ZMlNd)cdFjbi2+oc?Ydk8r3ZIei81eq<;&ht)OjZoxX? zWJ8pOGn!394WCTcf{z)rJ;;!>S(JS%JK1o8V%sPTD^$nINcXINSnpIefpNM6AGGu= z@j(~}JgbxDK)$ZF`o|B6LrC6L0;C9CB--an5S2Xk7p{+KPK;80o*%-gT?D1M8y%qO zvY<@!V1u8QtAtA&NR9y?tNi%RQ!dI)!h39nMpnHeY>6R7oHtGqWEXs11aNxlqFoDd z35_i;-5f_do!7oO_pa?(lf^t7_05-D0!18g0dZ~_R<-M?6K(>Ik8s%9X+{YKBV0Lg zp%WK-yFI4CJ-r#~%#**nk| zKTg&Yec@o8BpO}{9-b2UCzU!4qs-_48@|5b+|v>MkwkBSAP0jXzL45>G->;(f6*28 z5D_W*=<~o!&+C3jq=xsk@_p^XO%dCId8(;ziwe1ISvF2J-m=imp&o z1&S_LYHn=%Y)HgTt}WDITI;scRuuYzW6M$G@t~bK_fPHhEn8Mw&CNK;xu@*`O4Zp% z3KgxwIdfDD!+AEQ@b3e;LQh#TJR7D5Thf!m4K_?^R$|~ty#gY1f@}|6Y?XIuao2*} z$;-cBb({6TUg-&EcvLc*h9UQ5Ln0JnpS1126S3h`(Zv>j9Jr5jbB=KPDU|xIm|*d_ zzhafRF~e?YN-Ta9&NuiQbS%9_XpA)GCrtI`w#F(}u8`iQA8LEQbN{jXWzf>RPDHoT z7}x00;xV@sL9iqTJPu}?dm9+a?s#;JU||gOv8xb%o40fDWGD2PWJB!NVe+X>n8%3- z>%)>c76Qj@r%GUK9MCYR4DcnrIy?wtDIpNA(9{4tT)|IJw4eL&e1Z{t7}yYOD16hzkcoxr~XLjPUp)d zvBjlNmnc+v5p-LCKtfzFn|U@>$7uB{eGhK|&p0^5qiyErTHdKN$Kf#qPjBUqgW3QO zw@-uV3~AaDM-8sJR+|VJ>8xf}Z^ONACv1ypRo!tIC4>Q2-f{4U*920?^BB!IHf>=c#|$^cS9VL)9ZomJ+6xX7vL3Fdw8v6= z;BlLFho=1j>DQdXOXPELQ=eON6{Xkk=$oSlUxOjdxup``*X;Q;wmb-0$Fqndlmcmt zR9fC|8Jt_sGhCSLb%~$Qc&XyR$9A@l@Nwenuj1xd&*m(K!L%&qD#zja$fs?Sb(N6_ zgcm|WO1Sh@d-*nDX|^JuI@Yp%(<5vK{$UvHlQAbmvUMIP3zD_rhcqqrIwr)+*BARh zv~h4#V~2w3t4M6tV$yFA$87>$eW-=FtA$S%zPrY+?W3Ojr5A<)lC{9YMKAc-rI%40 zc0rOpGSuw^aPQ_E(w?+vfkUv*%Z+JeHr_qho#DXOvIPC$UC_Sh-j?jHJsj*fTKlW9 z%q^qtn|+C#YOAA8qsP*d&9~`;%N1QZ{&hOIj>0smiSG64rQX~r$tO&BG@n9trL$Cd zf2u(G)&VXgM4BuVi*Odn<1Zt(-G#jD?;2q7;3Z zs@r|e=P{<=ej=D^nk*?9@*{0t3f5A;Vs0T>E&pT3f5S#t+o?U7fne8-$#&-5OvO9= z264YJt%F%iKV9~K8KH@9veocV9iE+1rRF~q8@udeVnNF7nTUqSFdq_SI0 zJJeV8X7TC1J+3FEJBRbMV`k{89sC7?ecIduVIKAF$W7Dh!X7M$OIk~~5@foob)#?P zf~noXT%a@m7pF1|i`8f?#@quIZ1KJygYT$It_#hyUuOIbn#iucB==F+BUaer-z`%M zYar3ir}JZ)T!CnoPl2EkcIZ%@F+&Y|-&%HIX@%I%==MN}_FU6~+aa9LOR8&*X=JHQ z{S2>%Nlfq6o^B}im0|ta%*x-4Mg|Bd_bh2l;|>@^Mg5nRp?vmx*md@|FvBF-R^REBHs>*u#S!MRz)|33hnKx4m4tzGEyTDbJn zu&ZlhPF4@KtI1Ox?T=#}yj84QN~<1it(SUiTb=S-CGTfJD0QT*T*)biGTr3m{>GLT ztfrP|#--V=G*exymae`&Jn`gBOS7WKN0N%})|%4Y@_!58vX>QUt)AD4rC7DD_?Q}2 z$Gcu0Yc*@Rl+2a!Wm`0Aarrpo$!v5nB$SE_3rEbN`qszc?*$wbkW zQteyK)T%jn6j^r3%~)y_xRzO2<91G#Eo#eRu_qxp6GE}bk+Ml7vm0W4WRgVsK+(ii zM#p<)wmdZT-p?M!#c2+;mBjHOV-;Y@URBQWJ8^C6CWVK-3dOTks;gQqvNul861A10 z*wt>;s<=!#WQyao*B#nh87pH2AyXBsTAY$fuG3|jiltR~D*phkg1Tz1t#earId(=W zTGv&Cty#6)Hq+Shajkpe=Q#P+*0&eRtjSnaaHT~503OQ8Ld%xctAfp^&Ezou0Ou4W ztkvxeKfX&!bYiSujrmRN>5eazP`50K*>a^<3c0)aFt^VPO{2P|O0OcSvY2kpEB^qh z$y}ZLN^n_KH&!^VH8AEK6I_H(PH=fU`2~3u$t03S+1x~v)rgXMS2jCkZ?)?-_q#Zn zb)_=;-)n<5J*|(%(zo^+*4-_2TYHU);MB`!d*P}}f}?OzcX+Jpm-yXfb#{ieAs5J& z3e}I2#?mUUbxeE}txRbu+^SJq+OF9WPa?Bzt693dDZ9(%j?n0)uvaYR<=zvmYsR}d zRVl4(jW^xC*01obDOE1TZ&aMRt3|m@e)P1pDKFoXsPDw8oal2XLNz$*6{!>mJzm<|>uNt^xu)9?> z>-=SRZ6vK{Qqbv4uZ3M@LE1TnIslM>t%OMeT|(j zYu(d-Hf?9^b*+bg6=hQ{92r-+&wAsF?CR#pn-sydnXI1YJ+G|^TU!^Bmr`*knt5!z zc{}9dx$xzDR9vc+jJ9;De3fylSt_FW4V&^|?(tmtPvk4GPIL)2b3yt5I9t*J`p~?zsu3 zc4h3Ua&6k~U7XsO=GgJNR=E|d^GeB@gxe-M+R;pj4%e|vnPJ-WD{gg5vZU2pjh07N z^3E$+Hkxf(1$OE8X~VMZOSCsijW&~vpLFbwLt?rW&TQmK$%%^X3oHvVJc)^tNRNNF zmo5E2v0IoV`;pV!@83rTZ()yb7J6SE=1*;_uY-TtUuoh^-P#M=`71QE@#ERIugQZN z&61U-)>U`6e?Bi0R@B7RHWwRhWreAgM`_7Qx;o94F4eCW`{cCW8g{*G=GRqLvy0x> zzAkFh7ERb|_@ubj5nOGKmhxKNvDV3Cx~43d72T9miLM%WRn`4GBI;K1z)xTe@SxWUGn?THfnjSv`2Vq*l-QRjA0~uJ@?+8B4pI zvQ^|wy5oG7H_g_lvWrrX?CVl*lF2FKXJr2Xi-&)?X9hRLWKWDhqROsZw%SNlp$Ps; z%lTc)EK3_5g?B3FGnyVqJg1qSNh;8-0dB`XFAIwN<;6FSa^Wz9~8?tM+xQGnHD%t5H^}>LJ5+x@Jm2 zj;)y-D{;N4PG$0{y5+O2a$|I^)-++V$CD!FtddDho;H(Kv&OGSPF1|!4cWJTDQ3HG zB{(};)vcR+FMHnn(zBNqNgUlzu+l^!*)E;iY6()?6`9SF*pQQyoF>YmsgO|I-g4^|EPS-%}3P_1|Ha&$n7VT${AM%i7oRZ0tkXc=Bg-Q(L8u)o86+D{9!p z+qNfLVZEDq^3@o!)-!CG^K!0To8zY>@5*hBwM(UB+Dj$5TDNvBW`@&v-w|D=?+ePB zwW^w)Rd1DS?Q2!p@^!T?(VE!M@?OpNtt%GGX&y%-mQCF#lRKj;b19~~cXs993gE4I zYm-z@jTS{)Kjm9@<@`MOq2yL--LGtBE5cB&t7fjL#=IJJuO2xPS^of&Sge1nRK}n2 zoOE`!EVGu?#*8&|d2Nd!TWdN~CM=6DI+uKgm6!2`k`ishhebrCzq_hJqh+gUYRs8j ztgU6nw2}wda>rAPA+gl0TXn}LjU$XCkyK^&8rU<{)zd$-!K>`OhD=^f%vmt(>*Tg9 zzPs4u%b~NE%ahmaTL$;`ZH{^t%fPl)>ziiy>h7A3@{pQszSOiVSsPlrm3S?**`GHj zk726cFDIKXY_{z(xY;^=o9%3mjbD1%CjRQSh-%ieC$(xqZBemGY4K98OI4=TqVs3U zth#M~6zs{1OgU|-#+}l9zlKV3R$Omp=G~fou-@J@rKaUf#ga|c()E>VH+ofzBc<&Y zPaAcm>Z;vR<;cC_&eLDG@@A{G>g#x(d|hvAyVY4Nx5s<`0Iy>si+P2b$ywRD)*dG4 z-a3}Wh0^%dYUNcl)vEa7$$BL0pX6Hj?UgsqTgfkzg~sVBCf!-bjfh2&3KdZbcw=g` zqHaqr*`FL$ic>9~JRZ|7&P}XV*{7=YId&<1&0k@ofva-u6ko~R*<z`5{}jHq%y5CTdX&{{U8Oj@s?Je)qJM zRu!y=$ysu>xGr~eMouDCgz`mK`&`AOO}3Mai}_d0#`mjKc`B^-EPuAbS&VXsui{?3 zZ(G=WkyljJ>aBx1sf#UD?QF`|b+fun)j6_8Keem;`wOyAUSf^}@=9&mDywv(|Jncu z0RjRBKLG7n(%7xo^NN*<%y6c?=$7t_4QJ9S!l3i45?A9!vsl>i&xmK?D&_n0k!rL?vNWmGl7X|g{;GYc@v_2K@8-D)) zKGVHeUGC#kyLfK6EF$k#=AO~9zW)GvrZ(LdEr-Ew-`6d&zyI0*2mt{B20sA*0P-JS z+->__B;7Ghrw{&I!r!*9{{Vv!AuXA8#VSj~in4K0XB>a{JwC%8%YUK2?9M#h86!s^ z-u36(~%{ z9&d3DlM;5yP}ju_d16Gs>XGBm{{Vp8j^$dbRamEMc3b^Hvo=?>!)s|C}5XXQ4 z={b4-0MrK?g-h_&Q~e^e?_PM*m`%KMs9td4Ht>6u%A=m$doTW;#5{Eg<5(3>g8UO! zmf{f5y(F72T!p6WTyas6%5hF3Xvi+t1hO8Wjz%U#ibyxr5-h8XWQ=$?BpxQtj5EXh zarERe5{Gn-g#s!KLFM*CYKgNdj>9Pt7>klve9(c*zDG=Bb9b95W5FLrBs1S5YUe~J z?w(kg;%0ZoCyi7+)Cq<=yhi8|$OLnHX*(VA$L6H3w~_}T0Qs@yivttPBZnxAGl~fh zEW#V&3@tMojt99sgMm_FTK2?RYIxoO_9qs*7=U&x9xaH-ZeC^@LPy@Ox7&##I3lcyV?s0 zjm8B2SJRT*VUIJ8nR!_M08=3x@HnLGWICWb^+HfPqC<%af~p&`fiqQY%P?|jiak?4 z8hD^34VZD(7~S0dX&X8MEI^|kb##4mC`Luz02c3iqZrG4IGF7}3a>{z4r~Mf2jv~e z=Y*w(GwO-Z5q54N9N4qREF?sPnx|;IWHsUq)UoD~J3~Z))r|gT;m72nVg9 z{m_egQg9`=%n8(TDqfR8`h*B*P0i!^PZhU3PA5GxXN{euz^X<^!Fe0Js*l-M{{V>G zcb5pq5Ro*gE<6?0O5xdk7asN1L&+abPZ@cmp+pA}kQTTjL;TU1X$*}W#4tP@Xi=6k zwzY<(=5+Z#j*%14AotMq-m zL^SmzcX;ihe@_!VnA^S6dyj5JxZ^H95@l?p@Y(+8M8hmW`p67C9S=h^CQs7sFM+Cg zQIr1RQU`kJkUht>%>sQms#K=ew39$8NzfvFShPcu_CiA=xox0THX-VrO@L3CgazXf zQ{tN*F&=U*ftzg~NDS!CVnQT&1w#EiM2=++krAtv=MUbT7YAJvN^u8+p%XCXpgN)K z8;AthFVx8x_mn#Kllf|!6bz1}&?`;``tWCy;!B$S;nRJjqsC)M&GzP@m;pLZB7{0BjQI;%#7*aVgAIA0Oggy2)kf*JTI6v}-@AJd2Yq%YhTtL`RpWUwaD93nIe?oNJ5$6)}_+#uq*5paYiN4UkL zG9ID-02$xnhBr8Jn`6kpANb0}SF(kbRma77ts7V}2K+0W4(FVQiZf6Z*I){oGVj^+tGbRYf7C%xTd5LQO z03}fozybWw#})*d?HVHql4Sv{%4mqkn>`SD&}fLskjQY;;F(jlp?L?2rZCzvtR(0I z27tcmx)$7j?ZAEO(GegW9d5|v@Va>Wb14ctBN*Z&kIKvt1~LzE8~jmy(UiF9@kUb1 zxvup4(8n41u41|-4xCUDm=fVdNx}J$fH@#f03AF4?`BmG%}_F`r)9fp9UY~(#^F}R z#8~#-IH=+~ONZ@aWbkJ+sCCv1ha$)AH*FQ@t3>Zqz?Ihx&Krk{B;QVIgT+}{Z^Joa zmb(r6#fqL^a7?n!^8$y%Mb)@P=vt_pL`nwQp&X~v{ImWvPakm!P9>ueSBbmv3L_u5 z1+NOu6z`}+=a9o7AM-|E@#c=$<&n^B5&O!gwwEWE`~m|e8Nwf##GAk-^m1%!%9sBD zil$)$ZMgw~M|Zi#;@}rQBr@Tc$&OZ(ZT1Z2L}44sMS$@rMn2~mCV+1KYRh&>Mgxq9 zkKTl`=Y&DEcN5$q=!`I)X=q5bOW|tZ2?h+Y?H+~QKSaKf90Y8%0;f#`KQGa9+o?io?K>fmDsX7afprt zlDcukcPESjvo9>Z3bB{LR~aLVDqtsrgy#SUjI4ycJ*{-u@q#$YlvKtTawT;DJCz&Y zs6aeXe6j%Di$5j{bY3yk0!b+KP7!{S!4oX9b9oTuS0-5=Kqudmxr47f&&gMGyUMO0 zS57F81xE1gzuUTFQNXGy_ES}6KWd+|9M=^801nD_Qmc0hs#EMxkoRJr&G(=ViQ>8a zzf%PEyKjx-G0Z2)hGQnNix~Jwpm0JM@sFZiW?kn`1P8Unwnp>GP&=Y8;|-KB_q!$1FU#q2?X`0GKVF@J0{i%?B_) z@{QuUW$Vn^7_0F%2ygcDj~0|mCdEFzam%J(19V3C^!chO-n~OOh#CpF+wouc*KLxgUcJqNBit584G$4YUWQgS|AA2Vhock`FSvxB??$rHiw^WL3G~(S{Q!^VqGy&MWQddrG%+QCQ9I((J78RO z6QEY?qmWxHQqI;zaK2P}w{LTFA=908(YV= zL0uD!ynknZvi-JK?o3Lpc!f$!hJ^|{=!*txg}bt~Ri_2hP8$7&KOfrj?5}Sx+EjKk zf#3VhliP|I<1bQQRDgKIekvo|V-U!Esw#qoC5t1+s6Jpi^Tv;|uGsZZElT|(pk;%vwKLV}U zZrgTS>|3(kmR43)R_y7VhjA%}X*V+e0D9`4@y?%e>T%+pH3wH#`TqdA`hSlVcq_x; zt0?>x$NvDTU{Am=tK__-_mF|p>{GFg_@d>Aw>A9M;X|lYEN$SssJSQXWl?(lg8m1e zV|GxgpV&Xg?6iZc{^I`txW1fFGa?|75KRG*pdIU`x=}+ErVjW@dw~rdwg>)AMHpfS z6eSkO1Jr`_<=Ee_V@3BT6e7e>t)A?9vHE5yA>YLexQ^&b$NB!w%2-6>>Or?f?YhBF z+k^VBjAbFpP6ynjn3-BqxB0n`nQ1A9Aovf{1FWYbQ zJ{`3Ejgh=B~!jrSFsX?&P~B05R<6b{iTOg_eK zkIz*sha`ZTfe>gSbY(1Zk&uxFrkjD>{{R$yv?kc)BO-pTuP}ZGU)ZqwJQcgteXN_) z%KKi8FZWH`f3Z>ql}#Vjl@Cb_#s2`3lVcDgX^D}gx`9&8M(xo6z>~B}FHy><<%wy? znMm_08S==Pk35MlDr(9wnQ{Y2=zI|j3y@3K%3YLkSM*6AVi`;=F6xK@Lf>t4QE_ayE~_69CZnZayhc;C%A=KHwr7i*ey~6?NQwqy8Z{v4}L?i87V`8Y4WjGm&bZR0@TYbAJ=q z4)@(kjtQ^(PFS0%f4#RV-i=I5zl$SiPUUHpz}_$u;Gd$yoTv z1yBC~rR68MgvW4RWAR;N1|8HwP6(B%;)|$~UrGkm03r;Zq_djc`0_*p@Zy(R7ot4? zHAyE$DB#9&PBE0L(;krbL)>6&W-vI$Bh(3FM_5yAAt z-N6xl2k}j!@}C6Jfs=+IiFN&{4kQCa<=a|uRT6*V=t4w9IU-+I$$9x#@Le|IR!K;= zry~&O%s7MzJ3#WpSaU)`oB+{Kt;V!sIW3^m@lFd8i>xp6!0JPe*xC&XtGa4YP!9h9 z!9M>02UkvI^IJrVa0{wLEzpdFPt_v90CK)UT$i965HrhNNKNWWQ@u+C{qYy?DE|QD zgTk7x)tQ$Q8U@r$yUHYP9ma_7l;rlSC*Lz34@3?;5i%B$uil%}0Pz7JkdCR?IBt!GlpfNh*H z$cGF`7A^QF809f+dt?9r85_v{2uIulk~QBTT0|ZiAWY821n!fNG#%)%CVxo>;OMY< ziVhBrOmiZeK;^0tyDzylnLO$N2f-gq(7En(Pw?S#)SxsPB4hDe^oX|rV%`jhz*1ipEzRgL_bJS(GG~8 z1w!4+sFGJhvUxUnY( zoXg1m^8Wy3yBMeatNzAOa?=eaEa7AsOlOxFkE0Uc$}|Qba%DKfCfP$t7Tp%}N0MNUR24-=sjNWxrnq2J@S?7$wLsvD_#hsdrj$X66&yLD2y$u` zFhwCJr6faGu8_lp)5vZ-(+CAfhVD+ovdV!_tE;NjR0T?RE75tAE((P)SFaU*+p=vq zuRAKuIGI$CWG3c7o~ATzL&;<0WDeR7zUD)x7$!3Z73F72b))n!qk;1K}XGlt@- zS0zxW84}h(sl`#rPX7R6-IPw8mmC*OM`LzY%Al^9Q-Mc^9?FGY+A2D6Wp-Uf!XK%$ zod|W;o=>jP{L=}{^Cgk==378hiC2RzqQgcN`JuZchZ+UH1jcCa^2s#u$|r#YE~rR& zEq)7MwRTQz*y5?qiOu+NQ4<6^i5QkFZT{$CoOeOU89t~-Z2;oMMEiMxmN99W`Hb46 z513Q+46;r~aG5pSc)o~EGBKQOAwnqBRKIOLz$g=^$zw`npr zPi{(~>!M)b^FT&*)zuAkObG8)l{IBXR&Hvl^wDu%N9GflszEUfwJMIDRaSLa_Yj(( zrWI8TteAxC0p_U~l+wf>xz#WO-W7eYe&zH!?2 z8m5>5IU9L0a9p)ciNz%783$$303~x&SNk{nRqU_sHtn*qBt?%ERPL#C?CF`61=Rwq zRYiL%+ht{CWWhKtQ4$qQ%Fe9a$Zaa6mz^+|#Z?(efE6UJn!S{9MQ6GOW}+_6I}#ATX(o*}HH zYKsGxAdrd25+Xs6aamHzFvo!8A6X@$XbAM@7YCa4VS)p!ewiehLu<$mVCu^p@rmpt z`h>-fF%eV!UBN>(0lpakoFvpSI;q1HHpXMBQabQtXX-{B+&L=be+AZLM^zJ5G zKnwun5rnBZxv()~$E&q;d*uwLRm`yT9@w|ij#(J?1wmDO{ za6^(Kv!7^~!!5E73tS*JN%%5j3UQM4CIqBSId>phy^g8c%WxGy0J>)<{kKHUGmjoZ0hCEEyMwQ8Uv#4) zGeG|U+!lu8-fE)*7{}g6DSS{55g6KAio=f-W13i^PC!W;!yoQSTE7J&?`I5I<1-K) zgraHyvQ)HMWfD@HUGxl+aml%U(dAnkiQDdgL@LMBWuc8B|K z@j;N!rss};SpAO0{2acWxE#<1TTRfIJBX%%VOEbq@ircu~l4$Q+;? zSzNFJlAycUL_`>tVqU)_Wr**_V$y`@L%l&*{jOOEX2${r8O3N{>I!&qICq+=lR z*{KJ-&?%YEIgTOf;DiKBpk@8eZf`{oY3#8|5tiu^AY+UOmXxIIA zY;3p>R0NMt#^|3+_$QEJE($bV>B;9r;;XC0bkaOl*wsEl7-*U-5dffWRZ!xC6@JRu z2DfEXGO}~~DumsZb!F0N*<>d>5(O_>C`HUM1G-#fL8rlElpa8kB`N&-mRVz{Fxieb z0E+HC$Y-2oEK{erB!cmg^LK+)31KCUW)YBSbb^ee`#o{Fzp6j%r|P+s=OY-#rHNSp zcoIQ~l?iaR%R&L<=uP&6O7TpaUJ9v|6O~Td{@RLxb$y0398s>SwFc~(0i&tnw_Knu zr5hJ^U#Ct;ZfbI=Qr#}ICj+=Lo=|(iLUoC^f*SJ+Y^u~8fl&jtiTfN;Fhh0L_Uq+D zE)JyGHsB;^{E&`1nBCUfo@fJ5nEwE>>8n}Lp>7=0j-Gs0@){&GWpTToC66qh^xcJy z+mKHMjypgElNr~mX{!TZ_Fk4kW0p}Q3k!a3DpK{tsy7KfIUeVs;)X2v)Jd`p=JmZwfhQ`~rT{7JucMfPmANwzF{x%o^=t1L*h||%$ zK_m@Ue`N;A?Y&_<5y}1OQHM-5h@sJbn}@L)AuOF!6b8t=w#e8XDn?p-5fSpS4b5$8 z@l14A_$$>GR8*=PVo)Si0#MPrC_i{FstyG#nKp%~+=FX&vLJ@D4&?QmL$De;luM1$ z60K|y-bojcI+YS9un#kfgaDD0-~&p00aA=IA5JBr8$o3#A5)Ge^mJAQvuzPHC6O$PLBPex9Ze!|FRHK2( z4{PrwAN_tg82Z^Z7B5JG)GqYV)>vf8?dKi;0Qk9b2b7~16a5l3{wSsGV*!s3wwZ=F z$ITHEWCU_tilXMa=!+C)Wc-%azsx6lH4|v4 z6+1rkDf7J?TLffd(2VUPG#UU(Y#yNwC5j#AA8(LTRte~04COFK; z7EQkE2F3u#dFpe-x|DH13E|t5agZ3`{Xj^bEWjwA{bU9&Z~=%gh{v*W9bu;Pk>*tJ zPafEb6Ou*cIY^D9&U124+?+*&>Hg@M9T*u_gGNudox~O`PUc(p81AEz_Tms5n8YB6m(KsgmvJCkFJL^H_Qov5RVH8Bij#Qy-JRCZBT zs)C9C0Mpo}R8{*OHFeya)fVY`DAe>@xgSKdqzHtFc95gCt0%Gdp3?`pj?uhAWaE=u zgL?3|S*7hUpKm6Bh<=%f{{TaIxG3a=_7Hc)nnqbGwuYLcEam?_eH)O`^XxCoKg-?Px z@{cr3V;=ew@I=VGevpJ^q94s9GM9-k=;24HP%!{LF8+?R<9oQ5^7>d zh!vBc!5q0GZ!?#Z>YmSGa+;?=zk-2xCakXfbZ->V1XLM1-elbMaGyoHhKPYzQ!xXg zhrfa@2xKY>wV*NW^-QJRu@^@m}2IY`Me)qY`5b(~QTL^ns4j z4F&nEe%~%gOCVrl28?lvxhBTXP9S}(l9#x|GC{zBll8R$5puG^e(&1H9Nu}MmVTx_ zsP6RQBuSCr)g57O=n;^lfncLYG1RF>KU9pqC>aeHpdu_A!~FIr$c!Kir6ZsUIbdEB4mkMs=Jv6e^{@@Z62Q{6Ka|~K%1%s# zne2`bdX1(rWM-3m6EPIAxbOQE(G!kBU=j(5aN^>frg9)PBe<}X&z3LDsAnKXW|<-_ z84HfzM|02d;rrn_0OzEydwEqAn8TXlSPcNw;W0MD_Ba$%^ za4#BgSikmO;9?%{H(noHP|A)B0gE`6=#kBTo$hkWdruxs{WyoGA~!}lKOIn;jidq& zjBJ~VsbpTEi}3MMm%o_Lm=nJSDE^UiVYKwq=CV^PF3UId1i` z?U9eF+fFk8=d0kMpC?4f6OmyKs)qswTS0eicr1CcNMnF8#VEO!+>)S+o4wWoBmgoZ zLPdcEg4?S*aN#uqo#|-dHZj7Yaqd%l<+ChwluVs@SOrj!WY{R$vlOxT$hyvY)b0kL21D}$^ zpW7U`;|b0`sTMg6jE@oX3OQpSGUbE9E*vm>0CW1O+duTf`f5;RctGi}E=jPQZDoN@*elts1H*HibHVH}c{YbbkvUwkmRVOZkroDxTs~zkJ6m?1DMPVXDJujS)WGLJZde<0vpQ?_*_y54My&-hXQ|HpL+b7@zxcC-Swp zta*W#w#AZ7mLgG;Kv3D-lSd04FH>Y8wpihe)cS9lk~{$JMkaB zp+MvklwNz}+FqT?c?5?{cNYd-JV=LAcP~`LWXa~1Nyli&D;V_A#|awoUf&!kBRG?M{H$0wBtoP!4-$ZOyB z0hwnkABr+I0qMY1OEx^xpSbD7AsEQya9l`3h1{S$-?D^bzZ7LWSx-*qaXr^E6>)1X zdmm>L?N6iWW%m=9I8ReT(Tumgy4a~?{{Yv|(f9a7WA1&nAU2o>c8Me%@-8(TnM)RI zVEcf2v&F_3$})3+({|nVC5it4=@vD&B`Oej_@LJscc1{N zAQV7m1AzVf#&Z!drD*TLNNxfm(gmt3;D*7}L)OTE^_cxKX%h-WwJ)N|4l#;2w`0k) z(o&FTaZxIu1aZKS1O#4T;&#)$oebNIvO_S(j}%FpnV0n|XvRT{-AC0C+y_v`8Ue4j zl85-Sn9676gh4LU-2GA3+93H3Y`^zrW@lP7cN?;Ni~$67Hp#zE(&AiJJXq_C6ab8g zev!=ZQpbp&NJvI+(nNuM!$w(f!a`n%jG|-IC5(?Y>s>Ve0Jj(%la_)S6(4tt9N`&8 zo8z?1#NTkZA0>-q{ZCRo65YJXgUG(Dm<6^kC}I#WF(h~V>{NZo8?#6qyO>843hl=c zw4drf1qex|I!np+^qtKw6)gEq*yV_uQ(8ntMp-HjIGj#iF@G^Jw}I6hV8CRNjzN}A zHka~kW}&H<;I`xHfdo!X`gtY~RHMSY5Z~1~9-|`BXoe0}c}pnGECVJ(EFhDN5g52| z(s!dQhb|yt7KixofCK?e*`rpQ*vp!pDL`Tnj3YSXlg0)Xgr(x_D4-=EWsU+60zE=8 zCv0UcPZT6ZI$DFYyWmc36k41y0SZ6G%2$NoZ9e&VAkgSeM@ z6EU|+OGT3$AWRGiA)YPuZjrCSKw;hfQ35$4Pe9wRmFvl3$&?z}&9)@Pi*nUsC7NV_ zBTzbz!5N++B}*ts4kA8{~pNba1;YRJ$m zp5G=-vc_67^JASflwVpb12?(J?BSAfB*DO(aneA@4=d`1OcIxx5{J9SKUN=3Nd8%P zimmywW6KGEaY_Shz&d0An7?;qA&?(VOy#)h3OMm*jAkVf5@^Nz!R{Sr#qV=RKeLQ7 zNQp(HK#`2&E?hg*eb@f4+T(^;lL93Mj7QTb$MbPm@=M%KUglGVI74qiiIj*EG!&Je z;<9^xb%t>F7)2qBo!+ER)eU1^D;ul_7JvLm?%nV3NSw0`SNdX49ksgNA%oJEKxY&B za)w;7k;xbXxJo{l^BrAGV9Al^k~vNi!Vo8M+%~*yLN?^|0X&aMHx_h8C^7P!g0hIe zl}OBq#~~7FF*~D6ohq7F)S5d~At$bhhtpnu3PM8LcMdF$>W06Hl_>NJW6*pF{{Upg z$m3)PexETs(}SUR=72Wb9FF@ekbgADegXdgl6@SO`6ngyABx%{04DwDIbiyKB_Pf< z98(JeO$q=S0w2B6YP0_RB1r+6<9`LdaT1ocZt$_pfaWgN0ebE~N;Ci&$@~=Omm$fJ zw6jRDV{j=?1@6u~;#o-&^oTKIA1EOCfj=84&v4wwa}BL27bm=^%iHFbGm+;gL7DOD zT(LZqrIZ}r=hZPWqzTOs3Eb@o8gHI@C1+QhF+z7NHCl+zL8MJwABCBNFWH{R!fIz7_qZpGe zfwPWBwJcCDXR7Vc=k9lsL(K5d{sKzE3=P#htv9t4D=;t6$Wgr2y zuc*~vI6cH=jw~{ngS#6JlfZ?G+DN`kkS8Wq>50>D;V<_U3KEv=a%qoFB2pyE1OOu% zxhocIlM*ux5aV+SG3JCMUm+wmgpC~xh9mz7h^@KL$Cu_=4FB!vYF%E90kJ8DX+s0me zY-fr805&Ib=TM~~kVJxMFkom~>H#)U8A>rRFqLXwMGTY2`gr3Q&9bz2A0UhYIUC00 zHprdJ+(uc>5B+WlPC2AD~9%ZfAhM-i0v1(u zW5c#_F&pEEOLpQl-hPJuNc(dw*rY_nWp`#3QITRIL&xcqk#Hh^D}cv9!ET6*MK+!w zsLE11nYydqfQ+|pq4BU=fZD;C)MRP^s*HsJ3_+;7sWZJB<5fdaN$w81Vpvt~Q-TO1 zH6%w*i-nllLFEZ>B-H@c9m!Cejd+B2 z9g;B}OkLTXlhEe`*Jc125J$9X^Y>#@5Zj+L6*k>M@n8cmC;wfUcZ*q3Px=sJ*GsKF{OtQ!GGaOQX)G@1Ew$2;YIIoN&__g z#z1B!I-EwkK(Pf3c_Rpj$7zH?7Ntr!vPeIeFrnZ-nk;D`(+5za3F8ouq-H#v9&x!m z3Lc(9L~a4wR=OfHjHnDuySS+Obg3I?LE0-Iq9#uG$jH4zO}_MF2!JB>=9+zSJ^{xR z=8z}MDZ82g)=$)UsX3@6fcdD&sA}93nsovAqF(M#c8J!2F^_hiG)oqx3Sb@o02Byd zVrq2^q}G)ikvC3wS$x1j(Jg1ADb0Z(=LCFzten^J!R4s1w!XZiw)w*DqQA69njf4rwh;H ztVOp2TKA(OL6yv`YezlE89?OvVk4}jN}daUly2EBbfSbJ@c#fE{O%r4dM7gV4EnbK zKL%KRERu|)5Hi9tFS|n8*M*hc%hcAqR3{l2v8jl9a8Y5jnzMs`VID20Ko{c~aO8m@ zoKSL84CWvo9tg~k)&zb)qbtM)kmjkPJd|P1>!b25M0N^ky8vL5ToV5KD$d>Nr{c z34km^OHm+)0=(1)fl3(iv?b?_B1jxjG&N4_$IWyfx`C>?2%sdy^15l`*aJkCF7X_0 zqGgcngdQ;5;l_!?r5E8XI4P6VBp4E2Tf6SMSlYKP5%j7gdWEfIch?)Rd-y1Nu_hD^ z^ZV4N=F}eYw#_XWd_BF>808{W1=S&I-=8kPY9N!&m!qImgR;+8pt;CQeX$~%k-1Tw=D`i<4)rtb!X%abiCj2UzI-2;PYSj&@F+OPA zsXKIzRrba9B#dkEA;4McZq5f zpD2sWO68Gqa$jT%DyYt06?;)xt8>QE$z$S@+TM+781+}7slA;WRt zry>lb!GPq6BBPDho4E#eI@~JOS_D82`W;b-=^!}a@j^qyCzT0JYF!co?KI+piZ>4w zWkBxF%aV*-IXAK(7GRmX^khR2Ea{)3Ri(if1yB>mR0iFkmWlpo+Lt4e1?q0Use^>} z1lexk^BS&2hzW%SivBKvdaMU++-uFSv z#D^LpV^*ls;EP|66kOPX2vOakHd#O5{{S_$i6t7dt+D`za5#4&#E=CF2lH9@aYfwL z;87N+2jsaqsxLvr{`EW{_2LmS9HtyMVGH~#5Yss>H(9w5zeal`C^8P_alt|!=3+VI zPSD*khyV@J;#O~S5$bwTBmrVY?hu62rYn>1ReHQ;IPL#*Bn@xfZV#DL500P>X|g zkP1k=VsG4tE^AV<#A?*htbiKownQ3frBH#X9uBum?FUureLMxgP6Gm;af^olaR^8e z9Y_~`^;1+i(GU#<*5-Bu{{SQmuc$|HH=rVjZLDftIns#5>8E;l=v&~3YUmXrIesas z^0EFbLL`z)*NH=m3UdjKtYnNtoJv~LY2ttnxL>^!5(8*#RC-KZ-Oi}jzk)APwGC(E z$sR?S04@WL_e2|qw|Wh)+>C`778>wU*NOa70c#x+=_ET1Q@$WNZ;ZUh_pa1N8F)5G$dMuo52|YwZo8X z&cG>Th?HKjatJOer1E&djDxiT5rl@=*ozOvT(#@+MavU#q6-{``u_k02!X4nh@)9H znv?`&3s(AbTcjKs$c|bf0VVok+&slyGjO*pP^ClJN%b35E-B!yE20lxc3+CxAB(7r zgQSx305Dqms@+sBaa6CSy6{$0(V~1FA6&b_kLMc%hppjw6_piwHZmLN*Vn z;>xQWpKHiQV^JYy?+6%~0W-2-7Ba`EZ9|{{1P|h>nkE+tye@-OH4%s`!s@jI-@Qm) zrHVDSywQ=<@j>l!w#Ql)y4fIUSdxJSg}ab3q=EBU5_*aeF|}X6f-E{nui`*l2l7I# z!2`&$y07q2GSr4-X#9cE5ar3I6;f$uyRJ!{&4S&|r3plq6*bX6!3hH6M&gM#H5>~d z9+!UfW<^m3hhM}k+8P7LiVuB91Z!LOt)R7O!EVPV$rgCnS5T@8#E~xbSE*ZB?mkEm zG(>B~0%!p&La+|t5vbste+-S>XsK(JW)JX3ZABYPl^We?(#15aZQi+Q!H_$AzEiJq zB#!a&QZX_S6cyKjMcj7=A0*d>jAdBJDMuJPBYbA@;zIp94xm3b5|2oW+GG;l!2%@w zV{eiWj9y^hSqW&J=ni&58BDRkqH`Xkkk(qtd z6`|C3rfY`p=2SEyl027rM1thE1!n$gro2%XB^a8HTtaY90t$!%+V`RbC?CIy0M@9z z7*KxYKW~a(r|pbokVK8fLbjo&!2u(?EC4c)vwv4Vvky*_%1GU;01oWEwkT#8z2;~U zxxYln${f!v65y+GWRuSf!JnE%0Art!<#(fcKevX?8htF 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 E*}uQ+KL7v# literal 0 HcmV?d00001 diff --git a/assets/img/weather-icon/cloud.svg b/assets/img/weather-icon/cloud.svg new file mode 100644 index 0000000000..db99682e2c --- /dev/null +++ b/assets/img/weather-icon/cloud.svg @@ -0,0 +1,9 @@ + + + + + diff --git a/assets/img/weather-icon/rain.svg b/assets/img/weather-icon/rain.svg new file mode 100644 index 0000000000..5cf8575a8b --- /dev/null +++ b/assets/img/weather-icon/rain.svg @@ -0,0 +1,11 @@ + + + + + diff --git a/assets/img/weather-icon/snow.svg b/assets/img/weather-icon/snow.svg new file mode 100644 index 0000000000..3f6021df26 --- /dev/null +++ b/assets/img/weather-icon/snow.svg @@ -0,0 +1,14 @@ + + + + + diff --git a/assets/img/weather-icon/sun.svg b/assets/img/weather-icon/sun.svg new file mode 100644 index 0000000000..3fa4545435 --- /dev/null +++ b/assets/img/weather-icon/sun.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/assets/img/weather-icon/white/cloud.svg b/assets/img/weather-icon/white/cloud.svg new file mode 100644 index 0000000000..74d7ecdbe5 --- /dev/null +++ b/assets/img/weather-icon/white/cloud.svg @@ -0,0 +1,9 @@ + + + + + diff --git a/assets/img/weather-icon/white/rain.svg b/assets/img/weather-icon/white/rain.svg new file mode 100644 index 0000000000..d044874c22 --- /dev/null +++ b/assets/img/weather-icon/white/rain.svg @@ -0,0 +1,12 @@ + + + + + diff --git a/assets/img/weather-icon/white/sun.svg b/assets/img/weather-icon/white/sun.svg new file mode 100644 index 0000000000..8faeff8ec4 --- /dev/null +++ b/assets/img/weather-icon/white/sun.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/assets/js/app/translate/translate.config.js b/assets/js/app/translate/translate.config.js index 3f711dab73..e5389100d9 100644 --- a/assets/js/app/translate/translate.config.js +++ b/assets/js/app/translate/translate.config.js @@ -16,6 +16,11 @@ var translationsEN = { EVENT: { CREATED_SUCCESS_NOTIFICATION: 'Event created with success : ', CREATED_FAIL_NOTIFICATION: 'Failed to create event : ' + }, + WEATHER: { + day: 'Day', + night: 'Night', + HUMIDITY: 'Humidity' } }; @@ -37,7 +42,12 @@ var translationsFR = { EVENT: { CREATED_SUCCESS_NOTIFICATION: 'Event créé avec succès : ', CREATED_FAIL_NOTIFICATION: 'Erreur lors de la création de l\'event : ' - } + }, + WEATHER: { + day: 'Jour', + night: 'Nuit', + HUMIDITY: 'Humidité' + } }; diff --git a/assets/js/app/weather/weather.controller.js b/assets/js/app/weather/weather.controller.js new file mode 100644 index 0000000000..e627721362 --- /dev/null +++ b/assets/js/app/weather/weather.controller.js @@ -0,0 +1,107 @@ +/** + * Gladys Project + * http://gladysproject.com + * Software under licence Creative Commons 3.0 France + * http://creativecommons.org/licenses/by-nc-sa/3.0/fr/ + * You may not use this software for commercial purposes. + * @author :: Pierre-Gilles Leymarie + */ + +(function () { + 'use strict'; + + angular + .module('gladys') + .controller('WeatherCtrl', WeatherCtrl); + + WeatherCtrl.$inject = ['weatherService', 'geoLocationService', 'cacheService', '$timeout']; + + function WeatherCtrl(weatherService, geoLocationService, cacheService, $timeout) { + + /* jshint validthis: true */ + var vm = this; + vm.weather = []; + var EXPIRATION = 30*60*60*1000; + + activate(); + + function activate() { + refresh(); + + // Start the timer + $timeout(tick, 1000); + return ; + } + + function tick () { + vm.currentTime = Date.now(); + $timeout(tick, 1000); + } + + function refresh() { + + // first get GEOLOCATION from cache if exist + var coords = cacheService.get('GEOLOCATION_USER'); + + // if geoloc exist in cache + if(coords) { + return getWeather(coords); + } + // if not, get geoloc from browser + else { + return geoLocationService.getCurrentPosition() + .then(function(data) { + + if(data.coords && data.coords.latitude && data.coords.longitude) { + + var geoloc = { + latitude: data.coords.latitude, + longitude: data.coords.longitude, + accuracy: data.coords.accuracy + }; + + // save geoloc in cache + cacheService.set('GEOLOCATION_USER', geoloc, EXPIRATION); + return getWeather(geoloc); + } else { + + return null; + } + }); + } + } + + function getWeather(coords) { + + var latitude = coords.latitude; + var longitude = coords.longitude; + + return weatherService.get({latitude: latitude, longitude: longitude}) + .then(function(data) { + vm.weather[0] = data.data; + + // get weather in + return weatherService.get({latitude: latitude, longitude: longitude, offset: 24}); + }) + .then(function(data) { + + vm.weather[1] = data.data; + + // get weather in 48h + return weatherService.get({latitude: latitude, longitude: longitude, offset: 48}); + }) + .then(function(data) { + + vm.weather[2] = data.data; + + // get weather in 72h + return weatherService.get({latitude: latitude, longitude: longitude, offset: 72}); + }) + .then(function(data) { + + vm.weather[3] = data.data; + }); + } + + } +})(); \ No newline at end of file diff --git a/assets/js/app/weather/weather.service.js b/assets/js/app/weather/weather.service.js new file mode 100644 index 0000000000..ad63eab5c3 --- /dev/null +++ b/assets/js/app/weather/weather.service.js @@ -0,0 +1,31 @@ +/** + * Gladys Project + * http://gladysproject.com + * Software under licence Creative Commons 3.0 France + * http://creativecommons.org/licenses/by-nc-sa/3.0/fr/ + * You may not use this software for commercial purposes. + * @author :: Pierre-Gilles Leymarie + */ + +(function () { + 'use strict'; + + angular + .module('gladys') + .factory('weatherService', weatherService); + + weatherService.$inject = ['$http']; + + function weatherService($http) { + + var service = { + get: get + }; + + return service; + + function get(options) { + return $http({method: 'GET', url: '/weather', params: options }); + } + } +})(); \ No newline at end of file diff --git a/assets/styles/global.css b/assets/styles/global.css new file mode 100644 index 0000000000..44bf0119ba --- /dev/null +++ b/assets/styles/global.css @@ -0,0 +1,3 @@ +.box-full-width .box-body{ + padding: 0; +} \ No newline at end of file diff --git a/assets/styles/weather.css b/assets/styles/weather.css new file mode 100644 index 0000000000..1caaa660e8 --- /dev/null +++ b/assets/styles/weather.css @@ -0,0 +1,208 @@ +.row-no-gutter { + margin-right: 0; + margin-left: 0; +} + +.row-no-gutter [class*="col-"] { + padding-right: 0; + padding-left: 0; +} + +.city-selected { + position: relative; + overflow: hidden; + min-height: 200px; + background: #3D6AA2; +} + +article { + position: relative; + z-index: 2; + color: #fff; + padding: 20px; + + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; + -webkit-align-content: flex-start; + -ms-flex-line-pack: start; + align-content: flex-start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; +} + +.info .city, +.night { + font-size: 24px; + font-weight: 200; + position: relative; + + + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-align-self: auto; + -ms-flex-item-align: auto; + align-self: auto; +} + +/*.info .city:after { + content: ''; + width: 15px; + height: 2px; + background: #fff; + position: relative; + display: inline-block; + vertical-align: middle; + margin-left: 10px; +}*/ + +.city span { + color: #fff; + font-size: 13px; + font-weight: bold; + + text-transform: lowercase; + text-align: left; +} + +.night { + font-size: 15px; + text-transform: uppercase; +} + +.icon { + width: 84px; + height: 84px; + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + -webkit-align-self: center; + -ms-flex-item-align: center; + align-self: center; + + overflow: visible; + +} + + +.temp { + font-size: 73px; + display: block; + position: relative; + font-weight: bold; +} + +svg { + color: #fff; + fill: currentColor; + width: 32px; + height: 32px; +} + +.svg path { + color: #fff; + fill: white; +} + +img svg { + fill: currentColor; +} + +.svg { + color: #fff; + fill: currentColor; +} + +#Layer_1 path{ + color: #0000; + fill: white; +} + +.wind svg { + width: 18px; + height: 18px; + margin-top: 20px; + margin-right: 10px; + vertical-align: bottom; +} + +.wind span { + font-size: 13px; + text-transform: uppercase; +} + +.city-selected:hover figure { + opacity: 0.4; +} + + +figure { + width: 100%; + height: 100%; + position: absolute; + left: 0; + top: 0; + background-position: center; + background-size: cover; + opacity: 0.1; + z-index: 1; + + -webkit-transition: all 0.5s ease; + -moz-transition: all 0.5s ease; + -ms-transition: all 0.5s ease; + -o-transition: all 0.5s ease; + transition: all 0.5s ease; +} + +.days .row [class*="col-"]:nth-child(2) .day { + border-width: 0 1px 0 1px; + border-style: solid; + border-color: #eaeaea; +} + +.days .row [class*="col-"] { + -webkit-transition: all 0.5s ease; + -moz-transition: all 0.5s ease; + -ms-transition: all 0.5s ease; + -o-transition: all 0.5s ease; + transition: all 0.5s ease; +} + +.days .row [class*="col-"]:hover{ + background: #eaeaea; +} + +.day { + padding: 10px 0px; + text-align: center; + +} + +.day h1 { + font-size: 14px; + text-transform: uppercase; + margin-top: 10px; +} + +.day .svg { + color: #000; + width: 32px; + height: 32px; +} \ No newline at end of file diff --git a/tasks/pipeline.js b/tasks/pipeline.js index 3af2062722..981509f7c9 100755 --- a/tasks/pipeline.js +++ b/tasks/pipeline.js @@ -26,9 +26,11 @@ var cssFilesToInject = [ 'styles/search.css', 'styles/store.css', 'styles/scenario.css', + 'styles/global.css', 'styles/angular-chart/angular-chart.min.css', 'styles/bootstrap-slider/bootstrap-slider.min.css', 'styles/device.css', + 'styles/weather.css', 'styles/leaflet/leaflet.css', // all styles, disabled by default