1 line
11 KiB
JavaScript
1 line
11 KiB
JavaScript
"use strict";var BitcoinModel,Bitcoin,FxModel,FxView,_typeof,TrainModel,TrainView,WeatherModel,Weather,WeatherSlim,popitout,popitoutSmall,EventModel=Backbone.Model.extend({initialize:function(){this.update()},getDays:function(t,e){var i=void 0,n=void 0;return i=t.getTime(),n=e.getTime(),(n-i)/864e5},update:function(){var t,e=new Date,i=36e5-e.getTime()%36e5,n={};n.days=Math.ceil(this.getDays(e,this.get("event"))),n.weeks=Math.ceil(this.getDays(e,this.get("event"))/7),this.set("data",n),t=function(){this.update()},setTimeout(t.bind(this),i+10)}}),EventView=Backbone.View.extend({tagName:"div",initialize:function(){_.bindAll(this,"render"),this.model.bind("change",this.render),this.id="e_"+Math.random().toString(36).substr(2,9),this.$events=$("#events"),this.$myEvent=null,this.$el=this.$events,this.initView(),this.render()},render:function(){var t=this.model.get("label"),e=this.model.get("data"),i=t+" "+e.days+" days / "+e.weeks+" weeks";this.$myEvent.empty().append(i)},initView:function(){var t="<div class='mui-col-xs-3 mui-col-md-3' id=\""+this.id+'"></div>';this.$html=$(t),this.$events.append(this.$html),this.$myEvent=$("#"+this.id)}});BitcoinModel=Backbone.Model.extend({initialize:function(){this.set("url","/btc");var t={lastGBP:0,lastUSD:0,lows:{gbp:0,usd:0},highs:{gbp:0,usd:0},eclass:""};this.set("btcdata",t),this.update()},update:function(){var t,e,i;this.getBTC(),t=new Date,e=6e4-t.getTime()%6e4,i=function(){this.update()},setTimeout(i.bind(this),e+10)},recalc:function(){var t=this.get("btcdata"),e=t.lastGBP,i=void 0,n=t.gbp,s=t.usd,o=t.lows,a=t.highs,r=t.eclass;0!==t.lastGBP?r=n>e?"up":"down":(o.gbp=n,o.usd=s,a.gbp=n,a.usd=s),e=n,i=s,n<o.gbp&&(o.gbp=n),s<o.usd&&(o.usd=s),a.gbp<n&&(a.gbp=n),a.usd<s&&(a.usd=s),t={lastGBP:e,lastUSD:i,lows:o,highs:a,eclass:r},this.set("btcdata",t)},getBTC:function(){var t=this,e=this.get("url");$.ajax({type:"GET",url:e,data:"",dataType:"json",timeout:1e4,headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"PUT, GET, POST, DELETE, OPTIONS","Access-Control-Allow-Headers":"Content-Type"},success:function(e){var i=e.bpi.GBP.rate_float,n=e.bpi.USD.rate_float,s=t.get("btcdata");s.gbp=i,s.usd=n,t.set("btcdata",s),t.recalc()},error:function(t,e){}})}}),Bitcoin=Backbone.View.extend({tagName:"div",initialize:function(){_.bindAll(this,"render"),this.model.bind("change",this.render),this.$btc=$("#btc")},render:function(){var t=this.model.get("btcdata"),e="High: $"+parseFloat(t.highs.usd.toFixed(2))+" / Low $"+parseFloat(t.lows.usd.toFixed(2));this.$btc.removeClass(),this.$btc.addClass(t.eclass),this.$btc.html("$"+parseFloat(t.lastUSD.toFixed(2))+" / £"+parseFloat(t.lastGBP.toFixed(2))),this.$btc.prop("title",e)}}),FxModel=Backbone.Model.extend({initialize:function(){this.set("url","/fx"),this.set("fxdata",{}),this.update()},update:function(){var t,e,i;this.getFX(),t=new Date,e=9e5-t.getTime()%9e5,i=function(){this.update()},setTimeout(i.bind(this),e+10)},getFX:function(){var t=this.get("url"),e=this;$.ajax({type:"GET",url:t,data:"",dataType:"json",timeout:1e4,headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"PUT, GET, POST, DELETE, OPTIONS","Access-Control-Allow-Headers":"Content-Type"},success:function(t){var i=1/t.rates.GBP,n=i*t.rates.SEK,s={usd:1,gbp:t.rates.GBP,sek:t.rates.SEK,gpbe:i,sekex:n};e.set("fxdata",s)},error:function(t,e){}})}}),FxView=Backbone.View.extend({tagName:"div",initialize:function(){_.bindAll(this,"render"),this.model.bind("change",this.render),this.$fx=$("#fx")},render:function(){var t=this.model.get("fxdata");this.$fx.html("£1 = $"+parseFloat(t.gpbe.toFixed(2))+" = "+parseFloat(t.sekex.toFixed(2))+" SEK")}}),_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},TrainModel=Backbone.Model.extend({initialize:function(){var t=this.get("from"),e=this.get("to"),i="/getnexttraintimes?from="+t+"&to="+e,n="/gettrains?from="+t+"&to="+e,s=t+e;this.set("url",i),this.set("routeUrl",n),this.set("target",s),this.set("visible",!1),this.update()},update:function(){var t,e,i;this.getTrain(),t=new Date,e=6e4-t.getTime()%6e4,i=function(){this.update()},setTimeout(i.bind(this),e+10)},getTrain:function(){var t=this.get("url"),e=this;$.ajax({type:"GET",url:t,data:"",dataType:"json",timeout:1e4,headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"PUT, GET, POST, DELETE, OPTIONS","Access-Control-Allow-Headers":"Content-Type"},success:function(t){e.set("trainData",t)},error:function(t,e){}})},getRoute:function(){var t=this.get("routeUrl"),e=this;this.get("visible")===!0?this.set("visible",!1):$.ajax({type:"GET",url:t,data:"",dataType:"json",timeout:1e4,headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"PUT, GET, POST, DELETE, OPTIONS","Access-Control-Allow-Headers":"Content-Type"},success:function(t){e.set("route",t),e.set("visible",!0)},error:function(t,e){}})}}),TrainView=Backbone.View.extend({tagName:"div",initialize:function(){_.bindAll(this,"render"),this.model.bind("change",this.render),this.$trains=$("#trains"),this.$traininfo=$("#traininfo"),this.$traintext=$("#trainResults"),this.$el=this.$trains,this.initView()},events:{click:"showTrains"},render:function(){var t,e,i,n,s,o,a,r,l,d,c,h,u,m,p,f,g,b,v,w,y,T,$,x=void 0,A=void 0,S=this.model.get("trainData"),C=this.model.get("visible"),E=this.model.get("route");if(x="on time"===S.eta.toLowerCase()?S.sta:S.eta,A="on time"===S.eta.toLowerCase()?"ontime":"delayed",this.$button.html(x),this.$button.removeClass("delayed").removeClass("ontime").addClass(A),C){if(t="<div>"+E.locationName+" TO "+E.filterLocationName+'</div>\n <table class="mui-table mui-table-bordered">\n <tr><th>Destination</th>\n <th>Time</th>\n <th>Status</th>\n <th>Platform</th></tr>\n ',"object"===_typeof(E.trainServices)&&null!==E.trainServices){e=!0,i=!1,n=void 0;try{for(s=E.trainServices[Symbol.iterator]();!(e=(o=s.next()).done);e=!0)a=o.value,r=a.destination[0],l=null!==r.via?"<em>"+r.via+"</em>":"",d=null!==a.platform?a.platform:"💠",c=null!==a.sta?a.sta:"D "+a.std,h=null!==a.eta?a.eta:a.etd,t=a.isCancelled?t+"<tr>\n <td>"+r.locationName+" "+l+"</td>\n <td>"+c+'</td>\n <td colspan="2">❌ '+a.cancelReason+"</td>\n \n </tr>":t+"<tr>\n <td>"+r.locationName+" "+l+"</td>\n <td>"+c+"</td>\n <td>"+h+"</td>\n <td>"+d+"</td>\n </tr>"}catch(t){i=!0,n=t}finally{try{!e&&s.return&&s.return()}finally{if(i)throw n}}}if("object"===_typeof(E.busServices)&&null!==E.busServices){u=!0,m=!1,p=void 0;try{for(f=E.busServices[Symbol.iterator]();!(u=(g=f.next()).done);u=!0)b=g.value,v=b.destination[0],w=null!==v.via?"<em>"+v.via+"</em>":"",y=null!==b.platform?b.platform:"",T=null!==b.sta?b.sta:"D "+b.std,$=null!==b.eta?b.eta:b.etd,t=t+"<tr>\n <td>🚌 "+v.locationName+" "+w+"</td>\n <td>"+T+"</td>\n <td>"+$+"</td>\n <td>"+y+"</td>\n </tr>"}catch(t){m=!0,p=t}finally{try{!u&&f.return&&f.return()}finally{if(m)throw p}}}t+="</table>",this.$traintext.empty().html(t),this.$traintext.removeClass("mui--hide").addClass("mui--show")}else this.$traintext.removeClass("mui--show").addClass("mui--hide")},initView:function(){var t,e=this,i=this.model.get("target"),n="<div class='mui-col-xs-12 mui-col-md-6'>"+i.toUpperCase()+': <button class="mui-btn mui-btn--flat" id="'+i+'"></button></div>';this.$html=$(n),this.$html.on("click",function(){e.model.getRoute()}),this.$trains.append(this.$html),this.$button=$("#"+i),t="click #$(target)",this.events[t]="showTrains"},showTrains:function(){}}),WeatherModel=Backbone.Model.extend({initialize:function(){var t=this.get("geo");this.set("url","https://api.darksky.net/forecast/9ad2a41d420f3cf4960571bb886f710c/"+t.coords.latitude.toString()+","+t.coords.longitude.toString()+"?units=uk2&exclude=minutely,hourly,alerts,flags"),this.update()},update:function(){var t,e,i;this.getWeather(),t=new Date,e=18e5-t.getTime()%18e5,i=function(){this.update()},setTimeout(i.bind(this),e+10)},getWeather:function(){var t=this;$.ajax({type:"GET",url:t.get("url"),data:"",dataType:"jsonp",timeout:1e4,context:$("body"),contentType:"application/json",headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"PUT, GET, POST, DELETE, OPTIONS","Access-Control-Allow-Headers":"Content-Type"},success:function(e){var i={temperature:e.currently.temperature,icon:e.currently.icon,summary:e.currently.summary,daily:e.daily.summary};t.set(i)},error:function(t,e){}})}}),Weather=Backbone.View.extend({tagName:"div",initialize:function(){_.bindAll(this,"render"),this.model.bind("change",this.render),this.$weatherText=$("#weatherDescription"),this.$weatherTemp=$("#temp"),this.$weatherIcon=$("#weatherIcon")},render:function(){var t='<i class="wi wi-forecast-io-'+this.model.get("icon")+'"></i>';this.$weatherTemp.empty().html(parseInt(this.model.get("temperature"))+"°c "),this.$weatherText.empty().html(this.model.get("summary")),this.$weatherIcon.empty().html(t)}}),WeatherSlim=Backbone.View.extend({tagName:"div",initialize:function(){_.bindAll(this,"render"),this.model.bind("change",this.render),this.$weather=$("#weather"),this.render()},render:function(){var t=this.model.get("summary"),e=this.model.get("temperature"),i=this.model.get("daily"),n=t+" "+e+"° <em>"+i+"</em>";this.$weather.empty().html(n)}}),function(){var t=function(t){var e=$("#passwordOut"),i=new EJS({url:"/template/password.ejs"}).render(t);e.empty(),e.append(i),e.show()},e=function(e,i){$.ajax({type:"GET",url:"/generate",data:"",dataType:"json",timeout:1e4,headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"PUT, GET, POST, DELETE, OPTIONS","Access-Control-Allow-Headers":"Content-Type"},success:function(e){t(e)},error:function(t,e){}})};$("#newPassword").on("click",function(){e()}),document.title="Slack"}(),popitout=function(t){var e=window.open(t,"name","height=600,width=570");return window.focus&&e.focus(),!1},popitoutSmall=function(t){var e=window.open(t,"name","height=400,width=520");return window.focus&&e.focus(),!1}; |