events and weather

This commit is contained in:
martind2000 2017-04-11 14:30:48 +01:00
parent 0bc4ba7bf8
commit 996c2d6d1f
11 changed files with 4577 additions and 138 deletions

View File

@ -1,100 +1,4 @@
(function() {
let lastGBP = 0.0,
lastUSD = 0.0,
_fasttimer, _slowTimer, myBTC = 3.49524333;
let lows = {
gbp: 0,
usd: 0
},
highs = {
gbp: 0,
usd: 0
};
let list = [{
title: '101B ends',
y: 2013,
m: 9,
d: 24,
add: 1001
},
{
title: 'Ends',
y: 2016,
m: 4,
d: 4
}];
let self = this;
let addDays = function(myDate, days) {
return new Date(myDate.getTime() + days * 24 * 60 * 60 * 1000);
};
let getDays = function(startdate, enddate) {
let r, s, e;
s = startdate.getTime();
e = enddate.getTime();
r = (e - s) / (24 * 60 * 60 * 1000);
return r;
};
let tick = function() {
let today = new Date();
let start101 = new Date();
let end101;
let endContract = new Date();
let third = new Date();
start101.setFullYear(2013, 9, 24);
end101 = addDays(start101, 1001);
endContract.setFullYear(2017, 6, 5);
third.setFullYear(2013, 7, 25);
/*$('#one').text('101B ends: ' + Math.ceil(getDays(today,
end101)) + ' days / ' + Math.ceil(getDays(today,
end101) / 7) + ' weeks');*/
$('#one').hide();
$('#two').text('Ends: ' + Math.ceil(getDays(today,
endContract)) + ' days / ' + Math.ceil(getDays(today,
endContract) / 7) + ' weeks');
$('#three').hide();
};
let get_weather = function() {
navigator.geolocation.getCurrentPosition(show_weather);
};
this.bind('displayWeather', function(data) {
$('#weather').html(data.currently.summary + ' ' + data.currently.temperature + '&deg;c&nbsp;<em>' + data.daily.summary + '</em>');
});
var show_weather = function(position) {
let latitude = position.coords.latitude;
let longitude = position.coords.longitude;
// let's show a map or do something interesting!
$.ajax({
type: 'GET',
url: 'https://api.forecast.io/forecast/9ad2a41d420f3cf4960571bb886f710c/' + latitude.toString() + ',' + longitude.toString() + '?units=uk2',
data: '',
dataType: 'jsonp',
timeout: 10000,
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(data) {
self.trigger('displayWeather', data);
},
error: function(xhr, type) {
console.log('ajax error');
console.log(xhr);
console.log(type);
}
});
};
let formatPassword = function(data) {
let dest$ = $('#passwordOut');
@ -132,15 +36,6 @@
});
};
tick();
get_weather();
_slowTimer = setInterval(function() {
get_weather();
}, (60000 * 15));
$('#newPassword').on('click', function() {
generatePassword();
});

55
app/js/modules/events.js Normal file
View File

@ -0,0 +1,55 @@
/**
* Created by mdonnel on 10/04/2017.
*/
let EventModel = Backbone.Model.extend({
initialize: function () {
this.update();
},
getDays : function(startdate, enddate) {
let r, s, e;
s = startdate.getTime();
e = enddate.getTime();
r = (e - s) / (24 * 60 * 60 * 1000);
return r;
},
update: function () {
const now = new Date
const mod = 3600000 - (now.getTime() % 3600000)
let data = {};
data.days = Math.ceil(this.getDays(now, this.get('event')));
data.weeks = Math.ceil(this.getDays(now, this.get('event')) / 7);
this.set('data', data);
const clockFn = function () {
this.update()
}
setTimeout(clockFn.bind(this), mod + 10)
}
});
let 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 () {
let label = this.model.get('label');
let data = this.model.get('data');
let str = `${label} ${data.days} days / ${data.weeks} weeks`;
this.$myEvent.empty().append(str);
},
initView: function () {
let html = `<div class='mui-col-xs-3 mui-col-md-3' id="${this.id}"></div>`;
this.$html = $(html);
this.$events.append(this.$html);
this.$myEvent = $(`#${this.id}`);
}
});

View File

@ -6,23 +6,24 @@
*
*/
var WeatherModel = Backbone.Model.extend({
let WeatherModel = Backbone.Model.extend({
initialize: function() {
this.set('url','https://api.darksky.net/forecast/9ad2a41d420f3cf4960571bb886f710c/' + this.get('lat').toString() + ',' + this.get('long').toString() + '?units=uk2&exclude=minutely,hourly,daily,alerts,flags');
console.log(this.get('url'));
// this.update();
let geo = this.get('geo');
this.set('url','https://api.darksky.net/forecast/9ad2a41d420f3cf4960571bb886f710c/' + geo.coords.latitude.toString() + ',' + geo.coords.longitude.toString() + '?units=uk2&exclude=minutely,hourly,alerts,flags');
this.update();
},
update: function() {
this.getWeather();
var now = new Date;
var mod = 1800000 - (now.getTime() % 1800000);
var weatherTrigger = function() {
let now = new Date;
let mod = 1800000 - (now.getTime() % 1800000);
let weatherTrigger = function() {
this.update();
};
setTimeout(weatherTrigger.bind(this), mod + 10);
},
getWeather: function() {
var self = this;
let self = this;
$.ajax({
type: 'GET',
url: self.get('url'),
@ -40,7 +41,8 @@ var WeatherModel = Backbone.Model.extend({
var stored = {
temperature: data.currently.temperature,
icon: data.currently.icon,
summary: data.currently.summary
summary: data.currently.summary,
daily: data.daily.summary
};
self.set(stored);
},
@ -53,7 +55,7 @@ var WeatherModel = Backbone.Model.extend({
}
});
var Weather = Backbone.View.extend({
let Weather = Backbone.View.extend({
tagName: 'div',
initialize: function() {
_.bindAll(this, 'render');
@ -74,3 +76,24 @@ var Weather = Backbone.View.extend({
}
});
let WeatherSlim = Backbone.View.extend({
tagName: 'div',
initialize: function() {
_.bindAll(this, 'render');
this.model.bind('change', this.render);
this.$weather = $('#weather');
this.render();
},
render: function() {
let summary = this.model.get('summary');
let temp = this.model.get('temperature');
let daily = this.model.get('daily');
let ws = `${summary} ${temp}&deg;&nbsp;<em>${daily}</em>`;
this.$weather.empty().html(ws);
}
});

4463
app/libs/moment.js Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -16,5 +16,6 @@
"tests"
],
"dependencies": {
"moment": "^2.18.1"
}
}
}

View File

@ -20,19 +20,10 @@ let filePath = {
let dest = 'app/live';
let fontOptions = { };
/*
<script src="libs/ejs.js"></script>
<script src="libs/underscore.js"></script>
<script src="libs/backbone.js"></script>
<script src="js/modules/bitcoin.js"></script>
<script src="js/modules/fx.js"></script>
<script src="js/modules/train.js"></script>
<script src="app.js"></script>
*/
gulp.task('appJS', function() {
return gulp.src(['app/js/modules/bitcoin.js','app/js/modules/fx.js','app/js/modules/train.js','app/app.js'])
return gulp.src(['app/js/modules/events.js', 'app/js/modules/bitcoin.js', 'app/js/modules/fx.js', 'app/js/modules/train.js','app/js/modules/weather.js', 'app/app.js'])
.pipe(stripDebug())
.pipe(jshint('.jshintrc'))
.pipe(jshint.reporter('default'))

File diff suppressed because one or more lines are too long

View File

@ -12,10 +12,8 @@
<div class="mui--appbar-height">
</div>
<div id="container" class="mui-panel">
<div class="mui-row">
<div class="mui-col-md-3" id="one"></div>
<div class="mui-col-md-3 " id="two"></div>
<div class="mui-col-md-3 " id="three"></div>
<div class="mui-row" id="events">
</div>
</div>
@ -371,6 +369,11 @@
<script src="live/js/app.js"></script>
<script>
(function (w) {
navigator.geolocation.getCurrentPosition((show_weather) => {
w.weather = new WeatherSlim({model: new WeatherModel({geo:show_weather})});
});
w.contractEnds = new EventView({model:new EventModel({event:new Date(2017, 6, 5), label: 'Contract Ends:'})});
w.bitcoin = new Bitcoin({model: new BitcoinModel()});
w.fx = new FxView({model: new FxModel()});
w.dbqglqView = new TrainView({model: new TrainModel({from: 'dbe', to: 'glq'})});

View File

@ -12,10 +12,8 @@
<div class="mui--appbar-height">
</div>
<div id="container" class="mui-panel">
<div class="mui-row">
<div class="mui-col-md-3" id="one"></div>
<div class="mui-col-md-3 " id="two"></div>
<div class="mui-col-md-3 " id="three"></div>
<div class="mui-row" id="events">
</div>
</div>
@ -376,15 +374,22 @@
</body>
<script src="libs/ejs.js"></script>
<script src="libs/moment.js"></script>
<script src="libs/underscore.js"></script>
<script src="libs/backbone.js"></script>
<script src="js/modules/events.js"></script>
<script src="js/modules/bitcoin.js"></script>
<script src="js/modules/fx.js"></script>
<script src="js/modules/train.js"></script>
<script src="js/modules/weather.js"></script>
<script src="app.js"></script>
<script>
(function (w) {
navigator.geolocation.getCurrentPosition((show_weather) => {
w.weather = new WeatherSlim({model: new WeatherModel({geo:show_weather})});
});
w.contractEnds = new EventView({model:new EventModel({event:new Date(2017, 6, 5), label: 'Contract Ends:'})});
w.bitcoin = new Bitcoin({model: new BitcoinModel()});
w.fx = new FxView({model: new FxModel()});
w.dbqglqView = new TrainView({model: new TrainModel({from: 'dbe', to: 'glq'})});
@ -392,6 +397,8 @@
w.glqhymView = new TrainView({model: new TrainModel({from: 'glq', to: 'hym'})});
w.hymglqView = new TrainView({model: new TrainModel({from: 'hym', to: 'glq'})});
})(window);
</script>

View File

@ -132,6 +132,7 @@ app.route('/poly').get(polys);
app.get('/slack', function(req, res) {
res.render('pages/slackV2-min');
//res.render('pages/slackV2');
});
app.get('/temp', function(req, res) {