mirror of
https://gitlab.silvrtree.co.uk/martind2000/old-silvrgit.git
synced 2025-01-11 07:45:09 +00:00
425 lines
11 KiB
JavaScript
425 lines
11 KiB
JavaScript
|
(function () {
|
||
|
|
||
|
var lastGBP = 0.0,
|
||
|
lastUSD = 0.0,
|
||
|
_fasttimer, _slowTimer, myBTC =3.49524333;
|
||
|
var lows = {
|
||
|
gbp: 0,
|
||
|
usd: 0
|
||
|
},
|
||
|
highs = {
|
||
|
gbp: 0,
|
||
|
usd: 0
|
||
|
};
|
||
|
|
||
|
|
||
|
var list = [{
|
||
|
title: '101B ends',
|
||
|
y: 2013,
|
||
|
m: 9,
|
||
|
d: 24,
|
||
|
add: 1001
|
||
|
},
|
||
|
{
|
||
|
title: 'Ends',
|
||
|
y: 2015,
|
||
|
m: 4,
|
||
|
d: 10
|
||
|
}];
|
||
|
var addDays = function (myDate, days) {
|
||
|
return new Date(myDate.getTime() + days * 24 * 60 * 60 * 1000);
|
||
|
};
|
||
|
|
||
|
var getDays = function (startdate, enddate) {
|
||
|
var r, s, e;
|
||
|
s = startdate.getTime();
|
||
|
e = enddate.getTime();
|
||
|
r = (e - s) / (24 * 60 * 60 * 1000);
|
||
|
return r;
|
||
|
};
|
||
|
var tick = function () {
|
||
|
var today = new Date();
|
||
|
var start101 = new Date();
|
||
|
var end101 = new Date();
|
||
|
var endContract = new Date();
|
||
|
var third = new Date();
|
||
|
start101.setFullYear(2013, 9, 24);
|
||
|
end101 = addDays(start101, 1001);
|
||
|
endContract.setFullYear(2015, 4, 10);
|
||
|
third.setFullYear(2013, 7, 25);
|
||
|
$('#one').text('101B ends: ' + Math.ceil(getDays(today,
|
||
|
end101)) + " days / " + Math.ceil(getDays(today,
|
||
|
end101) / 7) + " weeks");
|
||
|
$('#two').text('Ends: ' + Math.ceil(getDays(today,
|
||
|
endContract)) + " days / " + Math.ceil(getDays(today,
|
||
|
endContract) / 7) + " weeks");
|
||
|
$('#three').hide();
|
||
|
};
|
||
|
|
||
|
var get_weather = function () {
|
||
|
navigator.geolocation.getCurrentPosition(show_weather);
|
||
|
};
|
||
|
var show_weather = function (position) {
|
||
|
var latitude = position.coords.latitude;
|
||
|
var longitude = position.coords.longitude;
|
||
|
// let's show a map or do something interesting!
|
||
|
$.ajax({
|
||
|
type: 'GET',
|
||
|
url: 'https://api.forecast.io/forecast/0657dc0d81c037cbc89ca88e383b6bbf/' + latitude.toString() + ',' + longitude.toString(),
|
||
|
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) {
|
||
|
// console.log(data);
|
||
|
|
||
|
var calc = ((5.0 / 9.0 * (data.currently.temperature - 32)));
|
||
|
$('#weather').html(data.currently.summary + " " + parseInt(calc) + '°c ' + '<em>' + data.daily.summary + '</em>');
|
||
|
|
||
|
},
|
||
|
error: function (xhr, type) {
|
||
|
console.log("ajax error");
|
||
|
console.log(xhr);
|
||
|
console.log(type);
|
||
|
}
|
||
|
});
|
||
|
};
|
||
|
|
||
|
var updateBTC = function (g, u) {
|
||
|
var title, total, elm = $('#btc');
|
||
|
if (lastGBP !== 0) {
|
||
|
|
||
|
elm.removeClass();
|
||
|
if (g > lastGBP) {
|
||
|
elm.addClass('up');
|
||
|
} else if (g < lastGBP) {
|
||
|
elm.addClass('down');
|
||
|
}
|
||
|
|
||
|
} else {
|
||
|
lows.gbp = g;
|
||
|
lows.usd = u;
|
||
|
|
||
|
highs.gbp = g;
|
||
|
highs.usd = u;
|
||
|
}
|
||
|
|
||
|
lastGBP = g;
|
||
|
lastUSD = u;
|
||
|
|
||
|
if (g < lows.gbp) lows.gbp = g;
|
||
|
if (u < lows.usd) lows.usd = u;
|
||
|
|
||
|
if (highs.gbp < g) highs.gbp = g;
|
||
|
if (highs.usd < u) highs.usd = u;
|
||
|
|
||
|
total = myBTC * g;
|
||
|
|
||
|
title = "High: $" + parseFloat(highs.usd.toFixed(2)) + " / Low $" + parseFloat(lows.usd.toFixed(2));
|
||
|
elm.html("$" + parseFloat(u.toFixed(2)) + " / £" + parseFloat(g.toFixed(2)) + " (£" + parseFloat(total.toFixed(2)) + ")");
|
||
|
|
||
|
elm.prop('title', title);
|
||
|
};
|
||
|
|
||
|
|
||
|
var updateFX = function (data) {
|
||
|
var title, total, elm = $('#fx');
|
||
|
//title = "High: $" + parseFloat(highs.usd.toFixed(2)) + " / Low $" + parseFloat(lows.usd.toFixed(2));
|
||
|
elm.html("£1 = $" + parseFloat(data.gpbe.toFixed(2)) + " = " + parseFloat(data.sekex.toFixed(2)) + " SEK");
|
||
|
|
||
|
// elm.prop('title', title);
|
||
|
};
|
||
|
|
||
|
|
||
|
var btcValue = function () {
|
||
|
var url = '/btc';
|
||
|
|
||
|
$.ajax({
|
||
|
type: 'GET',
|
||
|
url: url,
|
||
|
data: '',
|
||
|
dataType: 'json',
|
||
|
|
||
|
timeout: 10000,
|
||
|
|
||
|
//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) {
|
||
|
// console.log(data);
|
||
|
var gbp = data.bpi.GBP.rate_float,
|
||
|
usd = data.bpi.USD.rate_float;
|
||
|
|
||
|
updateBTC(gbp, usd);
|
||
|
},
|
||
|
error: function (xhr, type) {
|
||
|
console.log("ajax error");
|
||
|
console.log(xhr);
|
||
|
console.log(type);
|
||
|
}
|
||
|
});
|
||
|
};
|
||
|
|
||
|
|
||
|
var getFX = function () {
|
||
|
var url = '/fx';
|
||
|
|
||
|
$.ajax({
|
||
|
type: 'GET',
|
||
|
url: url,
|
||
|
data: '',
|
||
|
dataType: 'json',
|
||
|
|
||
|
timeout: 10000,
|
||
|
|
||
|
//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) {
|
||
|
//console.log(data);
|
||
|
var gpbex = (1 / data.rates.GBP);
|
||
|
var sekex = (gpbex * data.rates.SEK);
|
||
|
var fxdata = {
|
||
|
usd: 1,
|
||
|
gbp: data.rates.GBP,
|
||
|
sek: data.rates.SEK,
|
||
|
gpbe: gpbex,
|
||
|
sekex: sekex
|
||
|
};
|
||
|
// console.log(fxdata);
|
||
|
//var fxdata = data.bpi.GBP.rate_float, usd = data.bpi.USD.rate_float;
|
||
|
|
||
|
updateFX(fxdata);
|
||
|
},
|
||
|
error: function (xhr, type) {
|
||
|
console.log("ajax error");
|
||
|
console.log(xhr);
|
||
|
console.log(type);
|
||
|
}
|
||
|
});
|
||
|
};
|
||
|
|
||
|
var getNextTrainTime = function(toStation,fromStation)
|
||
|
{
|
||
|
var url = '/getnexttraintimes?from=' + fromStation + '&to=' + toStation ;
|
||
|
var target = fromStation + toStation;
|
||
|
console.log('Target: ' + target);
|
||
|
$.ajax({
|
||
|
type: 'GET',
|
||
|
url: url,
|
||
|
data: '',
|
||
|
dataType: 'json',
|
||
|
|
||
|
timeout: 10000,
|
||
|
|
||
|
//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) {
|
||
|
console.log(data);
|
||
|
|
||
|
updateTrain(target,data);
|
||
|
//updateFX(fxdata);
|
||
|
},
|
||
|
error: function (xhr, type) {
|
||
|
console.log("ajax error");
|
||
|
console.log(xhr);
|
||
|
console.log(type);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
};
|
||
|
|
||
|
var updateTrain = function (n, obj) {
|
||
|
var elm = $('#'+n);
|
||
|
|
||
|
var output, status;
|
||
|
|
||
|
|
||
|
output = (obj.eta == "On Time") ? obj.eta : obj.sta;
|
||
|
status = (obj.eta == "On Time") ? 'delayed' : 'ontime';
|
||
|
|
||
|
elm.html(output);
|
||
|
|
||
|
elm.prop('class', status);
|
||
|
};
|
||
|
|
||
|
var getTrainsCB = function (results) {
|
||
|
var dest$ = $('#trainResults');
|
||
|
var html = new EJS({url: '/template/trains.ejs'}).render(results);
|
||
|
|
||
|
// console.log(html);
|
||
|
dest$.empty();
|
||
|
dest$.append(html);
|
||
|
// dest$.toggle();
|
||
|
|
||
|
};
|
||
|
|
||
|
var getTrains = function(from, to) {
|
||
|
var url = '/gettrains?from=' + from + "&to=" + to;
|
||
|
|
||
|
$.ajax({
|
||
|
type: 'GET',
|
||
|
url: url,
|
||
|
data: '',
|
||
|
dataType: 'json',
|
||
|
|
||
|
timeout: 10000,
|
||
|
|
||
|
//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) {
|
||
|
//console.log(data);
|
||
|
|
||
|
// updateTrain('glqdbe',data);
|
||
|
getTrainsCB(data);
|
||
|
},
|
||
|
error: function (xhr, type) {
|
||
|
console.log("ajax error");
|
||
|
console.log(xhr);
|
||
|
console.log(type);
|
||
|
}
|
||
|
});
|
||
|
};
|
||
|
|
||
|
var formatPassword = function (data) {
|
||
|
|
||
|
|
||
|
var dest$ = $('#passwordOut');
|
||
|
var html = new EJS({url: '/template/password.ejs'}).render(data);
|
||
|
|
||
|
console.log(html);
|
||
|
dest$.empty();
|
||
|
dest$.append(html);
|
||
|
dest$.show();
|
||
|
};
|
||
|
|
||
|
|
||
|
var generatePassword = function(from, to) {
|
||
|
var url = '/generate';
|
||
|
|
||
|
$.ajax({
|
||
|
type: 'GET',
|
||
|
url: url,
|
||
|
data: '',
|
||
|
dataType: 'json',
|
||
|
|
||
|
timeout: 10000,
|
||
|
|
||
|
//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) {
|
||
|
console.log(data);
|
||
|
|
||
|
formatPassword(data);
|
||
|
},
|
||
|
error: function (xhr, type) {
|
||
|
console.log("ajax error");
|
||
|
console.log(xhr);
|
||
|
console.log(type);
|
||
|
}
|
||
|
});
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
tick();
|
||
|
get_weather();
|
||
|
// btcValue();
|
||
|
// getFX();
|
||
|
//getDBEGLQ();
|
||
|
//getGLQDBE();
|
||
|
getNextTrainTime('glc','pyg');
|
||
|
getNextTrainTime('dbe','glq');
|
||
|
getNextTrainTime('ptk','glc');
|
||
|
getNextTrainTime('dbe','ptk');
|
||
|
|
||
|
|
||
|
|
||
|
// start 15 minute timer
|
||
|
|
||
|
_fastTimer = setInterval(function () {
|
||
|
//btcValue();
|
||
|
// getDBEGLQ();
|
||
|
// getGLQDBE();
|
||
|
getNextTrainTime('glc','pyg');
|
||
|
getNextTrainTime('dbe','glq');
|
||
|
getNextTrainTime('ptk','glc');
|
||
|
getNextTrainTime('dbe','ptk');
|
||
|
}, (60000));
|
||
|
|
||
|
_slowTimer = setInterval(function () {
|
||
|
|
||
|
// getFX();
|
||
|
get_weather();
|
||
|
}, (60000 * 15));
|
||
|
|
||
|
|
||
|
|
||
|
$('#glqdbeB').on('click',function(){
|
||
|
getTrains('glq','dbe');
|
||
|
});
|
||
|
|
||
|
$('#pygglcB').on('click',function(){
|
||
|
getTrains('pyg','glc');
|
||
|
});
|
||
|
|
||
|
$('#glcptkB').on('click',function(){
|
||
|
getTrains('glc','ptk');
|
||
|
});
|
||
|
|
||
|
$('#ptkdbeB').on('click',function(){
|
||
|
getTrains('ptk','dbe');
|
||
|
});
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
})();
|
||
|
|
||
|
var popitout = function (url) {
|
||
|
newwindow = window.open(url, 'name', 'height=600,width=570');
|
||
|
if (window.focus) {
|
||
|
newwindow.focus()
|
||
|
}
|
||
|
return false;
|
||
|
};
|
||
|
|
||
|
var popitoutSmall = function (url) {
|
||
|
newwindow = window.open(url, 'name', 'height=400,width=520');
|
||
|
if (window.focus) {
|
||
|
newwindow.focus()
|
||
|
}
|
||
|
return false;
|
||
|
};
|