364 lines
9.4 KiB
JavaScript
364 lines
9.4 KiB
JavaScript
|
|
(function() {
|
|
|
|
|
|
//read settings
|
|
var settings = Object.assign({
|
|
// default values
|
|
shorten: true,
|
|
showMeridians: true,
|
|
shortenMeridians:false,
|
|
}, require("Storage").readJSON("worldclkinfosettings.json", true) || {});
|
|
|
|
//All offsets from UTC in minutes. Positive: behind UTC. Negative: Ahead of UTC.
|
|
|
|
const londonTimeOffset=60;
|
|
const mumbaiTimeOffset=330;
|
|
const nycTimeOffset=-240;
|
|
const tokyoTimeOffset=540;
|
|
const dubaiTimeOffset=240;
|
|
const laTimeOffset=-420;
|
|
const parisTimeOffset=120;
|
|
const hongKongTimeOffset=480
|
|
|
|
var showCityName=false;
|
|
|
|
function getWorldDateString(cityName){
|
|
//Gets difference between UTC and local time
|
|
var date=new Date();
|
|
var currOffset = date.getTimezoneOffset();
|
|
|
|
var timeOffset;
|
|
|
|
switch (cityName) {
|
|
case "London":
|
|
timeOffset=londonTimeOffset;
|
|
break;
|
|
case "Mumbai":
|
|
timeOffset=mumbaiTimeOffset;
|
|
break;
|
|
case "New York":
|
|
timeOffset=nycTimeOffset;
|
|
break;
|
|
case "Tokyo":
|
|
timeOffset=tokyoTimeOffset;
|
|
break;
|
|
case "Dubai":
|
|
timeOffset=dubaiTimeOffset;
|
|
break;
|
|
case "Los Angeles":
|
|
timeOffset=laTimeOffset;
|
|
break;
|
|
case "Paris":
|
|
timeOffset=parisTimeOffset;
|
|
break;
|
|
case "Hong Kong":
|
|
timeOffset=hongKongTimeOffset;
|
|
break;
|
|
default:
|
|
//Nothing else matches
|
|
timeOffset=0
|
|
|
|
}
|
|
|
|
//go to UTC time
|
|
date.setMinutes(date.getMinutes() + currOffset);
|
|
//from there, go to city time
|
|
date.setMinutes(date.getMinutes() + timeOffset);
|
|
|
|
var meridian=require("locale").meridian(date);
|
|
|
|
var clockStr;
|
|
if(settings.showMeridians==true){
|
|
if(settings.shortenMeridians==true){
|
|
//get A - am, or P - pm
|
|
clockStr = require("locale").time(date, 1 /*omit seconds*/)+meridian[0];
|
|
|
|
}else{
|
|
clockStr = require("locale").time(date, 1 /*omit seconds*/)+" "+meridian;
|
|
}
|
|
|
|
}else{
|
|
|
|
clockStr = require("locale").time(date, 1 /*omit seconds*/);
|
|
|
|
}
|
|
|
|
|
|
var finalCityStr;
|
|
|
|
if(settings.shorten==true){
|
|
|
|
switch (cityName) {
|
|
case "Los Angeles":
|
|
finalCityStr="LA";
|
|
break;
|
|
case "New York":
|
|
finalCityStr="NYC";
|
|
break;
|
|
case "Hong Kong":
|
|
finalCityStr="HK";
|
|
break;
|
|
default:
|
|
//Nothing else matches
|
|
finalCityStr=cityName;
|
|
}
|
|
|
|
}else{
|
|
|
|
finalCityStr=cityName;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//var finalStr=finalCityStr+"\n"+clockStr+"\n";
|
|
if(showCityName){
|
|
//show city
|
|
var finalStr=finalCityStr;
|
|
}else{
|
|
var finalStr=clockStr;
|
|
}
|
|
return finalStr;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return {
|
|
name: "World Clocks",
|
|
items: [
|
|
|
|
{ name : "London",
|
|
get : () => {
|
|
return {
|
|
text : getWorldDateString("London"),
|
|
//blank image
|
|
img : atob("GBiBAAD/AAPnwAbDYBiBGBEAiD///H///kMAwsIAQ4IAQYIAQf///////4IAQYIAQcIAQ0MAwn///j///BEAiBiBGAbDYAPnwAD/AA==")
|
|
};
|
|
},
|
|
show : function() {
|
|
this.interval = setTimeout(()=>{
|
|
this.emit("redraw");
|
|
this.interval = setInterval(()=>{
|
|
this.emit("redraw");
|
|
}, 60000);
|
|
}, 60000 - (Date.now() % 60000));
|
|
},
|
|
hide : function() {
|
|
clearInterval(this.interval);
|
|
this.interval = undefined;
|
|
},
|
|
run : function() {
|
|
//toggle showCityName
|
|
|
|
showCityName=!showCityName;
|
|
this.emit("redraw");
|
|
}
|
|
|
|
},
|
|
|
|
{ name : "Mumbai",
|
|
get : () => {
|
|
return {
|
|
text : getWorldDateString("Mumbai"),
|
|
//blank image
|
|
img : atob("GBiBAAD/AAPnwAbDYBiBGBEAiD///H///kMAwsIAQ4IAQYIAQf///////4IAQYIAQcIAQ0MAwn///j///BEAiBiBGAbDYAPnwAD/AA==")
|
|
};
|
|
},
|
|
show : function() {
|
|
this.interval = setTimeout(()=>{
|
|
this.emit("redraw");
|
|
this.interval = setInterval(()=>{
|
|
this.emit("redraw");
|
|
}, 60000);
|
|
}, 60000 - (Date.now() % 60000));
|
|
},
|
|
hide : function() {
|
|
clearInterval(this.interval);
|
|
this.interval = undefined;
|
|
},
|
|
run : function() {
|
|
//toggle showCityName
|
|
|
|
showCityName=!showCityName;
|
|
this.emit("redraw");
|
|
}
|
|
},
|
|
|
|
{ name : "New York",
|
|
get : () => {
|
|
return {
|
|
text : getWorldDateString("New York"),
|
|
//blank image
|
|
img : atob("GBiBAAD/AAPnwAbDYBiBGBEAiD///H///kMAwsIAQ4IAQYIAQf///////4IAQYIAQcIAQ0MAwn///j///BEAiBiBGAbDYAPnwAD/AA==")
|
|
};
|
|
},
|
|
show : function() {
|
|
this.interval = setTimeout(()=>{
|
|
this.emit("redraw");
|
|
this.interval = setInterval(()=>{
|
|
this.emit("redraw");
|
|
}, 60000);
|
|
}, 60000 - (Date.now() % 60000));
|
|
},
|
|
hide : function() {
|
|
clearInterval(this.interval);
|
|
this.interval = undefined;
|
|
},
|
|
run : function() {
|
|
//toggle showCityName
|
|
|
|
showCityName=!showCityName;
|
|
this.emit("redraw");
|
|
}
|
|
},
|
|
|
|
{ name : "Tokyo",
|
|
get : () => {
|
|
return {
|
|
text : getWorldDateString("Tokyo"),
|
|
//blank image
|
|
img : atob("GBiBAAD/AAPnwAbDYBiBGBEAiD///H///kMAwsIAQ4IAQYIAQf///////4IAQYIAQcIAQ0MAwn///j///BEAiBiBGAbDYAPnwAD/AA==")
|
|
};
|
|
},
|
|
show : function() {
|
|
this.interval = setTimeout(()=>{
|
|
this.emit("redraw");
|
|
this.interval = setInterval(()=>{
|
|
this.emit("redraw");
|
|
}, 60000);
|
|
}, 60000 - (Date.now() % 60000));
|
|
},
|
|
hide : function() {
|
|
clearInterval(this.interval);
|
|
this.interval = undefined;
|
|
},
|
|
run : function() {
|
|
//toggle showCityName
|
|
|
|
showCityName=!showCityName;
|
|
this.emit("redraw");
|
|
}
|
|
},
|
|
|
|
{ name : "Dubai",
|
|
get : () => {
|
|
return {
|
|
text : getWorldDateString("Dubai"),
|
|
//blank image
|
|
img : atob("GBiBAAD/AAPnwAbDYBiBGBEAiD///H///kMAwsIAQ4IAQYIAQf///////4IAQYIAQcIAQ0MAwn///j///BEAiBiBGAbDYAPnwAD/AA==")
|
|
};
|
|
},
|
|
show : function() {
|
|
this.interval = setTimeout(()=>{
|
|
this.emit("redraw");
|
|
this.interval = setInterval(()=>{
|
|
this.emit("redraw");
|
|
}, 60000);
|
|
}, 60000 - (Date.now() % 60000));
|
|
},
|
|
hide : function() {
|
|
clearInterval(this.interval);
|
|
this.interval = undefined;
|
|
},
|
|
run : function() {
|
|
//toggle showCityName
|
|
|
|
showCityName=!showCityName;
|
|
this.emit("redraw");
|
|
}
|
|
},
|
|
{ name : "Los Angeles",
|
|
get : () => {
|
|
return {
|
|
text : getWorldDateString("Los Angeles"),
|
|
//blank image
|
|
img : atob("GBiBAAD/AAPnwAbDYBiBGBEAiD///H///kMAwsIAQ4IAQYIAQf///////4IAQYIAQcIAQ0MAwn///j///BEAiBiBGAbDYAPnwAD/AA==")
|
|
};
|
|
},
|
|
show : function() {
|
|
this.interval = setTimeout(()=>{
|
|
this.emit("redraw");
|
|
this.interval = setInterval(()=>{
|
|
this.emit("redraw");
|
|
}, 60000);
|
|
}, 60000 - (Date.now() % 60000));
|
|
},
|
|
hide : function() {
|
|
clearInterval(this.interval);
|
|
this.interval = undefined;
|
|
},
|
|
run : function() {
|
|
//toggle showCityName
|
|
|
|
showCityName=!showCityName;
|
|
this.emit("redraw");
|
|
}
|
|
},
|
|
|
|
{ name : "Paris",
|
|
get : () => {
|
|
return {
|
|
text : getWorldDateString("Paris"),
|
|
//blank image
|
|
img : atob("GBiBAAD/AAPnwAbDYBiBGBEAiD///H///kMAwsIAQ4IAQYIAQf///////4IAQYIAQcIAQ0MAwn///j///BEAiBiBGAbDYAPnwAD/AA==")
|
|
};
|
|
},
|
|
show : function() {
|
|
this.interval = setTimeout(()=>{
|
|
this.emit("redraw");
|
|
this.interval = setInterval(()=>{
|
|
this.emit("redraw");
|
|
}, 60000);
|
|
}, 60000 - (Date.now() % 60000));
|
|
},
|
|
hide : function() {
|
|
clearInterval(this.interval);
|
|
this.interval = undefined;
|
|
},
|
|
run : function() {
|
|
//toggle showCityName
|
|
|
|
showCityName=!showCityName;
|
|
this.emit("redraw");
|
|
}
|
|
},
|
|
{ name : "Hong Kong",
|
|
get : () => {
|
|
return {
|
|
text : getWorldDateString("Hong Kong"),
|
|
//blank image
|
|
img : atob("GBiBAAD/AAPnwAbDYBiBGBEAiD///H///kMAwsIAQ4IAQYIAQf///////4IAQYIAQcIAQ0MAwn///j///BEAiBiBGAbDYAPnwAD/AA==")
|
|
};
|
|
},
|
|
show : function() {
|
|
this.interval = setTimeout(()=>{
|
|
this.emit("redraw");
|
|
this.interval = setInterval(()=>{
|
|
this.emit("redraw");
|
|
}, 60000);
|
|
}, 60000 - (Date.now() % 60000));
|
|
},
|
|
hide : function() {
|
|
clearInterval(this.interval);
|
|
this.interval = undefined;
|
|
},
|
|
run : function() {
|
|
//toggle showCityName
|
|
|
|
showCityName=!showCityName;
|
|
this.emit("redraw");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
]
|
|
};
|
|
})
|