Compare commits
4 Commits
weather
...
longitude-
Author | SHA1 | Date | |
---|---|---|---|
1152e61384 | |||
a462151406 | |||
feddff3fd6 | |||
2770c31e6d |
Binary file not shown.
@ -14,7 +14,5 @@
|
|||||||
<tizen:privilege name="http://tizen.org/privilege/filesystem.read"/>
|
<tizen:privilege name="http://tizen.org/privilege/filesystem.read"/>
|
||||||
<tizen:privilege name="http://tizen.org/privilege/filesystem.write"/>
|
<tizen:privilege name="http://tizen.org/privilege/filesystem.write"/>
|
||||||
<tizen:privilege name="http://tizen.org/privilege/mediastorage"/>
|
<tizen:privilege name="http://tizen.org/privilege/mediastorage"/>
|
||||||
<tizen:privilege name="http://tizen.org/privilege/location"/>
|
|
||||||
|
|
||||||
<tizen:profile name="wearable"/>
|
<tizen:profile name="wearable"/>
|
||||||
</widget>
|
</widget>
|
||||||
|
BIN
css/CourierPrimeBold.ttf
Normal file
BIN
css/CourierPrimeBold.ttf
Normal file
Binary file not shown.
BIN
css/CourierPrimeSansRegular.ttf
Normal file
BIN
css/CourierPrimeSansRegular.ttf
Normal file
Binary file not shown.
BIN
css/alba.regular.ttf
Normal file
BIN
css/alba.regular.ttf
Normal file
Binary file not shown.
BIN
css/fabiolo-smallcap-regular.ttf
Normal file
BIN
css/fabiolo-smallcap-regular.ttf
Normal file
Binary file not shown.
@ -1,11 +1,16 @@
|
|||||||
|
|
||||||
@font-face{
|
@font-face{
|
||||||
font-family: roboto;
|
font-family: courier;
|
||||||
src: url('JetBrainsMono-Bold.ttf');
|
src: url('CourierPrimeSansRegular.ttf');
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face{
|
||||||
|
font-family: fabiolo;
|
||||||
|
src: url('fabiolo-smallcap-regular.ttf')
|
||||||
}
|
}
|
||||||
|
|
||||||
.Roboto{
|
.Roboto{
|
||||||
font-family: roboto;
|
font-family: fabiolo;
|
||||||
}
|
}
|
||||||
|
|
||||||
html, body {
|
html, body {
|
||||||
@ -13,7 +18,7 @@ html, body {
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
overflow-y: hidden;
|
overflow-y: hidden;
|
||||||
font-family: "roboto";
|
font-family: "courier";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -22,7 +27,7 @@ html, body {
|
|||||||
display: -webkit-flex;
|
display: -webkit-flex;
|
||||||
-webkit-align-items: center;
|
-webkit-align-items: center;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
#canvas-layout {
|
#canvas-layout {
|
||||||
@ -45,7 +50,6 @@ hour&minutes
|
|||||||
*/
|
*/
|
||||||
#digital-body {
|
#digital-body {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
width: 70%;
|
|
||||||
width: 360px;
|
width: 360px;
|
||||||
height: 360px;
|
height: 360px;
|
||||||
top: 0px;
|
top: 0px;
|
||||||
@ -53,37 +57,58 @@ hour&minutes
|
|||||||
background-size: 100%;
|
background-size: 100%;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#str-just-hours {
|
||||||
|
text-transform: full-width;
|
||||||
|
font-size: 600%;
|
||||||
|
font-style: bold;
|
||||||
|
letter-spacing: -2px;
|
||||||
|
float: left;
|
||||||
|
color: white;
|
||||||
|
width: 90px;
|
||||||
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
#rec-time {
|
#rec-time {
|
||||||
margin: 0;
|
position: relative;
|
||||||
position: absolute;
|
display: inline-block;
|
||||||
top: 50%;
|
top: 40%;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
-ms-transform: translate(-50%, -50%);
|
-ms-transform: translate(-50%, -50%);
|
||||||
transform: translate(-50%, -50%);
|
transform: translate(-50%, -50%);
|
||||||
|
z-index: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#str-hours {
|
#str-hours {
|
||||||
font-size: 370%;
|
font-size: 450%;
|
||||||
font-style: bold;
|
font-style: bold;
|
||||||
|
letter-spacing: -10px;
|
||||||
float: left;
|
float: left;
|
||||||
color: white;
|
color: white;
|
||||||
|
width: 80px;
|
||||||
|
text-align: right;
|
||||||
|
transform: translate(-5px, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
#str-console {
|
#str-console {
|
||||||
font-size: 370%;
|
font-size: 250%;
|
||||||
font-style: bold;
|
|
||||||
float: left;
|
float: left;
|
||||||
color: white;
|
color: white;
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
|
transform: translate(-6px, 8px);
|
||||||
}
|
}
|
||||||
|
|
||||||
#str-minutes {
|
#str-minutes {
|
||||||
font-size: 370%;
|
font-size: 450%;
|
||||||
font-style: bold;
|
letter-spacing: -10px;
|
||||||
float: left;
|
float: left;
|
||||||
color: white;
|
color: white;
|
||||||
|
width: 70px;
|
||||||
|
text-align: left;
|
||||||
|
transform: translate(-15px, 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#str-ampm {
|
#str-ampm {
|
||||||
@ -91,3 +116,24 @@ hour&minutes
|
|||||||
color: white;
|
color: white;
|
||||||
padding-top: 20%;
|
padding-top: 20%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#str-event {
|
||||||
|
position: absolute;
|
||||||
|
display: inline-block;
|
||||||
|
top:60%;
|
||||||
|
left: 50%;
|
||||||
|
-ms-transform: translate(-50%, -50%);
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
font-size: 175%;
|
||||||
|
color: white;
|
||||||
|
text-align: center;
|
||||||
|
z-index: 2;
|
||||||
|
line-height: 100%;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
display: -webkit-box;
|
||||||
|
-webkit-line-clamp: 2; /* number of lines to show */
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -13,11 +13,14 @@
|
|||||||
<body>
|
<body>
|
||||||
|
|
||||||
<div id="digital-body">
|
<div id="digital-body">
|
||||||
|
<div id="str-just-hours"></div>
|
||||||
|
|
||||||
<div id="rec-time">
|
<div id="rec-time">
|
||||||
<div id="str-hours"></div>
|
<div id="str-hours"></div>
|
||||||
<div id="str-console">:</div>
|
<div id="str-console">:</div>
|
||||||
<div id="str-minutes"></div>
|
<div id="str-minutes"></div>
|
||||||
</div>
|
</div>
|
||||||
|
<div id="str-event"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="container">
|
<div id="container">
|
||||||
|
492
js/app.js
492
js/app.js
@ -14,25 +14,30 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/* 'downloads' for debugging,
|
/* 'downloads' for debugging,
|
||||||
* 'wgt-private' for any release */
|
* 'wgt-private' for any release */
|
||||||
var STORAGE_SPACE = "downloads";
|
var STORAGE_SPACE = "downloads";
|
||||||
var SHORT_WAIT = 10000;
|
var SHORT_WAIT = 10000;
|
||||||
var LONG_WAIT = 30000; // 600000
|
var LONG_WAIT = 30000; // 600000
|
||||||
var DESIGN = 0; // 0 - longitude, 1 - mission control
|
var DESIGN = 2; // 0 - longitude, 1 - mission control, 2 - longitude
|
||||||
var wait_time = LONG_WAIT;
|
var wait_time = LONG_WAIT;
|
||||||
var events = null;
|
var events = null;
|
||||||
var weather = null;
|
|
||||||
var deviceFingerprint = null;
|
var deviceFingerprint = null;
|
||||||
var eventsTimeStamp = 0;
|
var eventsTimeStamp = 0;
|
||||||
var navigatorTimeStamp = 0;
|
|
||||||
var flagDigital = true;
|
var flagDigital = true;
|
||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
var canvasLayout, canvasContent, ctxLayout, ctxContent, center, watchRadius;
|
var canvasLayout,
|
||||||
|
canvasContent,
|
||||||
|
ctxLayout,
|
||||||
|
ctxContent,
|
||||||
|
center,
|
||||||
|
watchRadius;
|
||||||
|
|
||||||
var flagConsole = true;
|
var flagConsole = true;
|
||||||
|
|
||||||
|
|
||||||
function deleteFile(name, callback) {
|
function deleteFile(name, callback) {
|
||||||
|
|
||||||
/* successful resolution of wgt-private */
|
/* successful resolution of wgt-private */
|
||||||
@ -54,9 +59,8 @@ var flagDigital = true;
|
|||||||
dir.deleteFile(dirfile.fullPath, function() {
|
dir.deleteFile(dirfile.fullPath, function() {
|
||||||
console.log("deleted");
|
console.log("deleted");
|
||||||
callback();
|
callback();
|
||||||
}, function(e) {
|
},
|
||||||
console.log(e)
|
function(e) {console.log(e)});
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,8 +76,7 @@ var flagDigital = true;
|
|||||||
console.log("error "+ JSON.stringify(e));
|
console.log("error "+ JSON.stringify(e));
|
||||||
}
|
}
|
||||||
|
|
||||||
tizen.ppm.requestPermission("http://tizen.org/privilege/mediastorage",
|
tizen.ppm.requestPermission("http://tizen.org/privilege/mediastorage", onsuccessPermission, onErrorPermission);
|
||||||
onsuccessPermission, onErrorPermission);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function clearDownloads() {
|
function clearDownloads() {
|
||||||
@ -83,11 +86,9 @@ var flagDigital = true;
|
|||||||
|
|
||||||
var onResolveSuccess = function(dir) {
|
var onResolveSuccess = function(dir) {
|
||||||
var onListFilesSuccess = function(files) {
|
var onListFilesSuccess = function(files) {
|
||||||
files
|
files.forEach(function(file) {
|
||||||
.forEach(function(file) {
|
|
||||||
if (!file.isDirectory) {
|
if (!file.isDirectory) {
|
||||||
dir.deleteFile(file.fullPath, onDeleteSuccess,
|
dir.deleteFile(file.fullPath, onDeleteSuccess, onError);
|
||||||
onError);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@ -95,11 +96,9 @@ var flagDigital = true;
|
|||||||
dir.listFiles(onListFilesSuccess, onError);
|
dir.listFiles(onListFilesSuccess, onError);
|
||||||
};
|
};
|
||||||
|
|
||||||
var onDeleteSuccess = function() {
|
var onDeleteSuccess = function() {};
|
||||||
};
|
|
||||||
|
|
||||||
tizen.filesystem.resolve('/opt/usr/media/Downloads', onResolveSuccess,
|
tizen.filesystem.resolve('/opt/usr/media/Downloads', onResolveSuccess, onError);
|
||||||
onError);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -140,44 +139,26 @@ var flagDigital = true;
|
|||||||
console.log("error "+ JSON.stringify(e));
|
console.log("error "+ JSON.stringify(e));
|
||||||
}
|
}
|
||||||
|
|
||||||
tizen.ppm.requestPermission("http://tizen.org/privilege/mediastorage",
|
tizen.ppm.requestPermission("http://tizen.org/privilege/mediastorage", onsuccessPermission, onErrorPermission);
|
||||||
onsuccessPermission, onErrorPermission);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function readWeatherJSON() {
|
function readJSON() {
|
||||||
/*
|
/* - requests permission to view media storage
|
||||||
* - requests permission to view media storage - resolves the file
|
* - resolves the file 'calendarevents'
|
||||||
* 'calendarevents' - opens stream and reads entire file as json
|
* - opens stream and reads entire file as json
|
||||||
*/
|
*/
|
||||||
|
|
||||||
getJsonFile("weather", function(newweather) {
|
getJsonFile("calendarevents", function(eventlist) {events = eventlist;});
|
||||||
weather = newweather;
|
|
||||||
console.log(weather);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function readCalendarJSON() {
|
|
||||||
/*
|
|
||||||
* - requests permission to view media storage - resolves the file
|
|
||||||
* 'calendarevents' - opens stream and reads entire file as json
|
|
||||||
*/
|
|
||||||
|
|
||||||
getJsonFile("calendarevents", function(eventlist) {
|
|
||||||
events = eventlist;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getNewFingerprintFromServer() {
|
function getNewFingerprintFromServer() {
|
||||||
getFileFromServer("devicefingerprint.json",
|
getFileFromServer("devicefingerprint.json", function() {
|
||||||
"https://longitudecalendar.com/", function() {
|
|
||||||
console.log("getting device fingerprint from server");
|
console.log("getting device fingerprint from server");
|
||||||
getJsonFile("devicefingerprint", function(df) {
|
getJsonFile("devicefingerprint", function(df) {deviceFingerprint = df; console.log(deviceFingerprint);});
|
||||||
deviceFingerprint = df;
|
|
||||||
console.log(deviceFingerprint);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function getDeviceFingerprint() {
|
function getDeviceFingerprint() {
|
||||||
// check if device id set already as global, if it is return
|
// check if device id set already as global, if it is return
|
||||||
if(deviceFingerprint !== null) {
|
if(deviceFingerprint !== null) {
|
||||||
@ -190,26 +171,20 @@ var flagDigital = true;
|
|||||||
if(df !== null) {
|
if(df !== null) {
|
||||||
deviceFingerprint = df;
|
deviceFingerprint = df;
|
||||||
} else {
|
} else {
|
||||||
// otherwise, ask the longitude server for a device fingerprint
|
// otherwise, ask the longitude server for a device fingerprint file
|
||||||
// file
|
|
||||||
getNewFingerprintFromServer();
|
getNewFingerprintFromServer();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getFileFromServer(route, server, callback) {
|
function getFileFromServer(route, callback) {
|
||||||
console.log("getting file");
|
console.log("getting file");
|
||||||
var server = server;
|
var server = "https://longitudecalendar.com/";
|
||||||
var downloadRequest = new tizen.DownloadRequest(server + route,
|
var downloadRequest = new tizen.DownloadRequest(server + route, STORAGE_SPACE);
|
||||||
STORAGE_SPACE);
|
tizen.systeminfo.getPropertyValue('NETWORK', function(networkInfo) {
|
||||||
tizen.systeminfo
|
|
||||||
.getPropertyValue(
|
|
||||||
'NETWORK',
|
|
||||||
function(networkInfo) {
|
|
||||||
if (networkInfo.networkType === 'NONE') {
|
if (networkInfo.networkType === 'NONE') {
|
||||||
console
|
console.log('Network connection is not available.Download is not possible.');
|
||||||
.log('Network connection is not available.Download is not possible.');
|
|
||||||
downloadRequest = null;
|
downloadRequest = null;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -232,21 +207,19 @@ var flagDigital = true;
|
|||||||
|
|
||||||
/* When the download is completed */
|
/* When the download is completed */
|
||||||
oncompleted: function(id, fullPath) {
|
oncompleted: function(id, fullPath) {
|
||||||
console.log('Completed with id: ' + id + ', full path: '
|
console.log('Completed with id: ' + id + ', full path: ' + fullPath);
|
||||||
+ fullPath);
|
|
||||||
callback();
|
callback();
|
||||||
},
|
},
|
||||||
|
|
||||||
/* When the download fails */
|
/* When the download fails */
|
||||||
onfailed: function(id, error) {
|
onfailed: function(id, error) {
|
||||||
console.log('Failed with id: ' + id + ', error name: '
|
console.log('Failed with id: ' + id + ', error name: ' + error.name);
|
||||||
+ error.name);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
tizen.download.start(downloadRequest, listener);
|
tizen.download.start(downloadRequest, listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function updateCalendar() {
|
function updateCalendar() {
|
||||||
|
|
||||||
if(deviceFingerprint === null) {
|
if(deviceFingerprint === null) {
|
||||||
console.log("no fingerprint, loading from file or server");
|
console.log("no fingerprint, loading from file or server");
|
||||||
@ -258,9 +231,7 @@ var flagDigital = true;
|
|||||||
function deleteCallback() {
|
function deleteCallback() {
|
||||||
console.log("done");
|
console.log("done");
|
||||||
console.log("getting new calendar events");
|
console.log("getting new calendar events");
|
||||||
getFileFromServer("device/" + deviceFingerprint.deviceName
|
getFileFromServer("device/" + deviceFingerprint.deviceName + "/calendarevents.json", readJSON);
|
||||||
+ "/calendarevents.json", "https://longitudecalendar.com/",
|
|
||||||
readCalendarJSON);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log("deleting calendarevents");
|
console.log("deleting calendarevents");
|
||||||
@ -269,41 +240,24 @@ var flagDigital = true;
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
function renderLine(context, p1, p2, thickness, color) {
|
||||||
* Deletes existing weather file gets current geo location gets weather
|
context.save();
|
||||||
* information of current geo location
|
context.beginPath();
|
||||||
*/
|
context.lineCap = "round";
|
||||||
|
context.lineWidth = thickness;
|
||||||
function updateLocation(position) {
|
context.moveTo(p1.x, p1.y);
|
||||||
|
context.lineTo(p2.x, p2.y);
|
||||||
console.log("succes");
|
context.strokeStyle = color;
|
||||||
|
context.stroke();
|
||||||
currentGpsPosLat = position.coords.latitude;
|
context.restore();
|
||||||
currentGpsPosLong = position.coords.longitude;
|
|
||||||
apiKey = "22ef6bf26472a340e8091f42fca3a14a"
|
|
||||||
console.log(currentGpsPosLat + " -- " + currentGpsPosLong);
|
|
||||||
|
|
||||||
console.log("deleting weather");
|
|
||||||
deleteFile("weather", deleteCallback);
|
|
||||||
|
|
||||||
function deleteCallback() {
|
|
||||||
getFileFromServer("data/2.5/weather?lat=" + currentGpsPosLat
|
|
||||||
+ "&lon=" + currentGpsPosLong + "&appid=" + apiKey,
|
|
||||||
"https://api.openweathermap.org/", readWeatherJSON)
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renders a circle with specific center, radius, and color
|
* Renders a circle with specific center, radius, and color
|
||||||
*
|
|
||||||
* @private
|
* @private
|
||||||
* @param {object}
|
* @param {object} context - the context for the circle to be placed in
|
||||||
* context - the context for the circle to be placed in
|
* @param {number} radius - the radius of the circle
|
||||||
* @param {number}
|
* @param {string} color - the color of the circle
|
||||||
* radius - the radius of the circle
|
|
||||||
* @param {string}
|
|
||||||
* color - the color of the circle
|
|
||||||
*/
|
*/
|
||||||
function renderCircle(context, center, radius, color) {
|
function renderCircle(context, center, radius, color) {
|
||||||
context.save();
|
context.save();
|
||||||
@ -317,14 +271,10 @@ var flagDigital = true;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Renders a circle with specific center, radius, and color
|
* Renders a circle with specific center, radius, and color
|
||||||
*
|
|
||||||
* @private
|
* @private
|
||||||
* @param {object}
|
* @param {object} context - the context for the circle to be placed in
|
||||||
* context - the context for the circle to be placed in
|
* @param {number} radius - the radius of the circle
|
||||||
* @param {number}
|
* @param {string} color - the color of the circle
|
||||||
* radius - the radius of the circle
|
|
||||||
* @param {string}
|
|
||||||
* color - the color of the circle
|
|
||||||
*/
|
*/
|
||||||
function renderRing(context, center, radius, width, color) {
|
function renderRing(context, center, radius, width, color) {
|
||||||
context.save();
|
context.save();
|
||||||
@ -337,13 +287,12 @@ var flagDigital = true;
|
|||||||
context.restore();
|
context.restore();
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderSimpleArc(context, center, radius, thickness, color,
|
|
||||||
startAngle, endAngle) {
|
function renderSimpleArc(context, center, radius, thickness, color, startAngle, endAngle) {
|
||||||
context.save();
|
context.save();
|
||||||
context.beginPath();
|
context.beginPath();
|
||||||
|
|
||||||
context.arc(center.x, center.y, radius, startAngle * Math.PI / 180.,
|
context.arc(center.x, center.y, radius, startAngle * Math.PI / 180., endAngle * Math.PI / 180.);
|
||||||
endAngle * Math.PI / 180.);
|
|
||||||
context.fillStyle = color;
|
context.fillStyle = color;
|
||||||
context.strokeStyle = color;
|
context.strokeStyle = color;
|
||||||
context.lineWidth = thickness;
|
context.lineWidth = thickness;
|
||||||
@ -352,17 +301,12 @@ var flagDigital = true;
|
|||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Renders a partial with specific center, radius, and color
|
* Renders a partial with specific center, radius, and color
|
||||||
*
|
|
||||||
* @private
|
* @private
|
||||||
* @param {object}
|
* @param {object} context - the context for the circle to be placed in
|
||||||
* context - the context for the circle to be placed in
|
* @param {number} radius - the radius of the circle
|
||||||
* @param {number}
|
* @param {string} color - the color of the circle
|
||||||
* radius - the radius of the circle
|
|
||||||
* @param {string}
|
|
||||||
* color - the color of the circle
|
|
||||||
*/
|
*/
|
||||||
function renderArc(context, center, radius, thickness, color, startAngle,
|
function renderArc(context, center, radius, thickness, color, startAngle, endAngle, hardStart, hardStop) {
|
||||||
endAngle, hardStart, hardStop) {
|
|
||||||
|
|
||||||
if(hardStart == undefined) {
|
if(hardStart == undefined) {
|
||||||
hardStart = false;
|
hardStart = false;
|
||||||
@ -383,8 +327,7 @@ var flagDigital = true;
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(arcsize < 2*seperation) {
|
if(arcsize < 2*seperation) {
|
||||||
renderCircle(context, polToCart(radius, startAngle + arcsize / 2),
|
renderCircle(context, polToCart(radius, startAngle + arcsize /2 ), 9, color);
|
||||||
9, color);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -408,8 +351,7 @@ var flagDigital = true;
|
|||||||
context.save();
|
context.save();
|
||||||
context.beginPath();
|
context.beginPath();
|
||||||
|
|
||||||
context.arc(center.x, center.y, radius, startAngle * Math.PI / 180.,
|
context.arc(center.x, center.y, radius, startAngle * Math.PI / 180., endAngle * Math.PI / 180.);
|
||||||
endAngle * Math.PI / 180.);
|
|
||||||
context.fillStyle = color;
|
context.fillStyle = color;
|
||||||
context.strokeStyle = color;
|
context.strokeStyle = color;
|
||||||
context.lineWidth = thickness;
|
context.lineWidth = thickness;
|
||||||
@ -451,28 +393,23 @@ var flagDigital = true;
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renders a needle with specific center, angle, start point, end point,
|
* Renders a needle with specific center, angle, start point, end point, width and color
|
||||||
* width and color
|
|
||||||
*
|
|
||||||
* @private
|
* @private
|
||||||
* @param {object}
|
* @param {object} context - the context for the needle to be placed in
|
||||||
* context - the context for the needle to be placed in
|
* @param {number} angle - the angle of the needle (0 ~ 360)
|
||||||
* @param {number}
|
* @param {number} startPoint - the start point of the needle (-1.0 ~ 1.0)
|
||||||
* angle - the angle of the needle (0 ~ 360)
|
* @param {number} startPoint - the end point of the needle (-1.0 ~ 1.0)
|
||||||
* @param {number}
|
* @param {number} width - the width of the needle
|
||||||
* startPoint - the start point of the needle (-1.0 ~ 1.0)
|
* @param {string} color - the color of the needle
|
||||||
* @param {number}
|
|
||||||
* startPoint - the end point of the needle (-1.0 ~ 1.0)
|
|
||||||
* @param {number}
|
|
||||||
* width - the width of the needle
|
|
||||||
* @param {string}
|
|
||||||
* color - the color of the needle
|
|
||||||
*/
|
*/
|
||||||
function renderNeedle(context, angle, startPoint, endPoint, width, color) {
|
function renderNeedle(context, angle, startPoint, endPoint, width, color) {
|
||||||
var radius = context.canvas.width / 2, centerX = context.canvas.width / 2, centerY = context.canvas.height / 2, dxi = radius
|
var radius = context.canvas.width / 2,
|
||||||
* Math.cos(angle) * startPoint, dyi = radius * Math.sin(angle)
|
centerX = context.canvas.width / 2,
|
||||||
* startPoint, dxf = radius * Math.cos(angle) * endPoint, dyf = radius
|
centerY = context.canvas.height / 2,
|
||||||
* Math.sin(angle) * endPoint;
|
dxi = radius * Math.cos(angle) * startPoint,
|
||||||
|
dyi = radius * Math.sin(angle) * startPoint,
|
||||||
|
dxf = radius * Math.cos(angle) * endPoint,
|
||||||
|
dyf = radius * Math.sin(angle) * endPoint;
|
||||||
|
|
||||||
context.save();
|
context.save();
|
||||||
context.beginPath();
|
context.beginPath();
|
||||||
@ -496,35 +433,46 @@ var flagDigital = true;
|
|||||||
sunColor = "#C0C0C0"
|
sunColor = "#C0C0C0"
|
||||||
}
|
}
|
||||||
|
|
||||||
sunDistance = document.body.clientWidth / 2 - 80;
|
sunDistance = document.body.clientWidth / 2 - 60;
|
||||||
renderCircle(ctxContent, polToCart(sunDistance, hourToAngle(hour
|
renderCircle(ctxContent, polToCart(sunDistance, hourToAngle(hour + minute / 60)), 16, sunColor);
|
||||||
+ minute / 60)), 22, sunColor);
|
}
|
||||||
|
|
||||||
|
function renderSmallSun(date, hour, minute, second) {
|
||||||
|
|
||||||
|
sunColor = "#FFD700";
|
||||||
|
|
||||||
|
sunDistance = document.body.clientWidth / 2 - 40;
|
||||||
|
renderCircle(ctxContent, polToCart(sunDistance, hourToAngle(hour + minute / 60)), 10, sunColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderEarth(date, minute, second) {
|
function renderEarth(date, minute, second) {
|
||||||
|
|
||||||
var earthColor = "#0077BE";
|
var earthColor = "#0077BE";
|
||||||
var earthDistance = document.body.clientWidth / 2 - 120;
|
var earthDistance = document.body.clientWidth / 2 - 120;
|
||||||
renderCircle(ctxContent, polToCart(earthDistance, minuteToAngle(minute
|
renderCircle(ctxContent, polToCart(earthDistance, minuteToAngle(minute + second / 60)), 10, earthColor);
|
||||||
+ second / 60)), 14, earthColor);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function renderAnalog(hour, minute, second) {
|
||||||
|
// hour
|
||||||
|
var hourAngle = hourToAngle(hour + minute / 60)*2+180;
|
||||||
|
renderLine(ctxContent, polToCart(document.body.clientWidth / 2 - 120, hourAngle), polToCart(document.body.clientWidth / 2 - 60, hourAngle), 18, '#ffffff');
|
||||||
|
renderLine(ctxContent, polToCart(document.body.clientWidth / 2 - 120, hourAngle), polToCart(document.body.clientWidth / 2 - 60, hourAngle), 12, '#000000');
|
||||||
|
// minute
|
||||||
|
var minuteAngle = minuteToAngle(minute + second / 60);
|
||||||
|
renderLine(ctxContent, polToCart(document.body.clientWidth / 2 - 120, minuteAngle), polToCart(document.body.clientWidth / 2 - 40, minuteAngle), 18, '#ffffff');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renders text at a specific center, radius, and color
|
* Renders text at a specific center, radius, and color
|
||||||
*
|
|
||||||
* @private
|
* @private
|
||||||
* @param {object}
|
* @param {object} context - the context for the text to be placed in
|
||||||
* context - the context for the text to be placed in
|
* @param {string} text - the text to be placed
|
||||||
* @param {string}
|
* @param {number} x - the x-coordinate of the text
|
||||||
* text - the text to be placed
|
* @param {number} y - the y-coordinate of the text
|
||||||
* @param {number}
|
* @param {number} textSize - the size of the text in pixel
|
||||||
* x - the x-coordinate of the text
|
* @param {string} color - the color of the text
|
||||||
* @param {number}
|
|
||||||
* y - the y-coordinate of the text
|
|
||||||
* @param {number}
|
|
||||||
* textSize - the size of the text in pixel
|
|
||||||
* @param {string}
|
|
||||||
* color - the color of the text
|
|
||||||
*/
|
*/
|
||||||
function renderText(context, text, x, y, textSize, color) {
|
function renderText(context, text, x, y, textSize, color) {
|
||||||
context.save();
|
context.save();
|
||||||
@ -540,58 +488,69 @@ var flagDigital = true;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Draws the basic layout of the watch
|
* Draws the basic layout of the watch
|
||||||
*
|
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
function drawWatchLayout() {
|
function drawWatchLayout() {
|
||||||
|
|
||||||
// Clear canvas
|
// Clear canvas
|
||||||
ctxLayout.clearRect(0, 0, ctxLayout.canvas.width,
|
ctxLayout.clearRect(0, 0, ctxLayout.canvas.width, ctxLayout.canvas.height);
|
||||||
ctxLayout.canvas.height);
|
|
||||||
|
|
||||||
// Draw the background circle
|
// Draw the background circle
|
||||||
/*
|
/*
|
||||||
* renderCircle(ctxLayout, center, watchRadius, "#000000"); grd =
|
renderCircle(ctxLayout, center, watchRadius, "#000000");
|
||||||
* ctxLayout.createLinearGradient(0, 0, watchRadius * 2, 0);
|
grd = ctxLayout.createLinearGradient(0, 0, watchRadius * 2, 0);
|
||||||
* grd.addColorStop(0, "#000000"); grd.addColorStop(0.5, "#454545");
|
grd.addColorStop(0, "#000000");
|
||||||
* grd.addColorStop(1, "#000000"); ctxLayout.fillStyle = grd;
|
grd.addColorStop(0.5, "#454545");
|
||||||
* renderCircle(ctxLayout, center, watchRadius * 0.945, grd);
|
grd.addColorStop(1, "#000000");
|
||||||
* renderCircle(ctxLayout, center, watchRadius * 0.7, "#000000");
|
ctxLayout.fillStyle = grd;
|
||||||
|
renderCircle(ctxLayout, center, watchRadius * 0.945, grd);
|
||||||
|
renderCircle(ctxLayout, center, watchRadius * 0.7, "#000000");
|
||||||
*/
|
*/
|
||||||
// Draw the dividers
|
// Draw the dividers
|
||||||
// 60 unit divider
|
// 60 unit divider
|
||||||
/*
|
/*
|
||||||
* for (i = 1; i <= 60; i++) { angle = (i - 15) * (Math.PI * 2) / 60;
|
for (i = 1; i <= 60; i++) {
|
||||||
* renderNeedle(ctxLayout, angle, 0.95, 1.0, 1, "#c4c4c4"); } // 12 unit
|
angle = (i - 15) * (Math.PI * 2) / 60;
|
||||||
* divider for (j = 1; j <= 12; j++) { angle = (j - 3) * (Math.PI * 2) /
|
renderNeedle(ctxLayout, angle, 0.95, 1.0, 1, "#c4c4c4");
|
||||||
* 12; renderNeedle(ctxLayout, angle, 0.7, 0.945, 10, "#c4c4c4"); }
|
}
|
||||||
|
|
||||||
|
// 12 unit divider
|
||||||
|
for (j = 1; j <= 12; j++) {
|
||||||
|
angle = (j - 3) * (Math.PI * 2) / 12;
|
||||||
|
renderNeedle(ctxLayout, angle, 0.7, 0.945, 10, "#c4c4c4");
|
||||||
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// renderText(ctxLayout, "TIZEN WATCH", center.x, center.y -
|
// renderText(ctxLayout, "TIZEN WATCH", center.x, center.y - (watchRadius * 0.4), 25, "#999999");
|
||||||
// (watchRadius * 0.4), 25, "#999999");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Draws the content of the watch
|
* Draws the content of the watch
|
||||||
*
|
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
function drawWatchContent() {
|
function drawWatchContent() {
|
||||||
var datetime = tizen.time.getCurrentDateTime();
|
var datetime = tizen.time.getCurrentDateTime();
|
||||||
// Clear canvas
|
|
||||||
ctxContent.clearRect(0, 0, ctxContent.canvas.width,
|
|
||||||
ctxContent.canvas.height);
|
|
||||||
|
|
||||||
var hour = datetime.getHours(), minute = datetime.getMinutes(), second = datetime
|
// Clear canvas
|
||||||
.getSeconds(), date = datetime.getDate();
|
ctxContent.clearRect(0, 0, ctxContent.canvas.width, ctxContent.canvas.height);
|
||||||
|
|
||||||
|
|
||||||
|
var hour = datetime.getHours(),
|
||||||
|
minute = datetime.getMinutes(),
|
||||||
|
second = datetime.getSeconds(),
|
||||||
|
date = datetime.getDate();
|
||||||
|
|
||||||
if(DESIGN === 0) {
|
if(DESIGN === 0) {
|
||||||
renderSun(date, hour, minute, second);
|
renderSun(date, hour, minute, second);
|
||||||
renderEarth(ctxContent, minute, second);
|
renderEarth(ctxContent, minute, second);
|
||||||
} else if(DESIGN === 1) {
|
} else if(DESIGN === 1) {
|
||||||
drawMissionControl();
|
drawDigitalWatch();
|
||||||
|
} else if(DESIGN === 2) {
|
||||||
|
renderSmallSun(date, hour, minute, second);
|
||||||
|
drawDigitalWatch();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* if no return from server yet */
|
/* if no return from server yet */
|
||||||
if(events === null) {
|
if(events === null) {
|
||||||
return;
|
return;
|
||||||
@ -601,8 +560,7 @@ var flagDigital = true;
|
|||||||
if(events.kind === "not found") {
|
if(events.kind === "not found") {
|
||||||
deviceFingerprint = null;
|
deviceFingerprint = null;
|
||||||
events = null;
|
events = null;
|
||||||
deleteFile("devicefingerprint", function() {
|
deleteFile("devicefingerprint", function() {});
|
||||||
});
|
|
||||||
wait_time = SHORT_WAIT;
|
wait_time = SHORT_WAIT;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -611,17 +569,7 @@ var flagDigital = true;
|
|||||||
wait_time = SHORT_WAIT;
|
wait_time = SHORT_WAIT;
|
||||||
if(deviceFingerprint === null) {
|
if(deviceFingerprint === null) {
|
||||||
} else {
|
} else {
|
||||||
renderText(ctxContent, "add new device on", center.x,
|
renderText(ctxContent, deviceFingerprint.deviceName, center.x, center.y, 20, "FF0000");
|
||||||
center.y - 70, 25, "FFFFFF");
|
|
||||||
renderText(ctxContent, "longitudecalendar.com", center.x,
|
|
||||||
center.y - 40, 25, "FFFFFF");
|
|
||||||
if (DESIGN === 0)
|
|
||||||
renderText(ctxContent, deviceFingerprint.deviceName,
|
|
||||||
center.x, center.y, 20, "FF0000");
|
|
||||||
else if (DESIGN === 1) {
|
|
||||||
renderText(ctxContent, deviceFingerprint.deviceName,
|
|
||||||
center.x, center.y + 40, 20, "FF0000")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -630,32 +578,29 @@ var flagDigital = true;
|
|||||||
var thickness = 18;
|
var thickness = 18;
|
||||||
} else if(DESIGN === 1) {
|
} else if(DESIGN === 1) {
|
||||||
var thickness = 50;
|
var thickness = 50;
|
||||||
|
} else if(DESIGN === 2) {
|
||||||
|
var thickness = 18;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log("switched to long wait");
|
|
||||||
wait_time = LONG_WAIT;
|
wait_time = LONG_WAIT;
|
||||||
|
|
||||||
|
var wroteEvent = false;
|
||||||
|
|
||||||
for(var event in events.events){
|
for(var event in events.events){
|
||||||
var startedBeforeToday = false;
|
var startedBeforeToday = false;
|
||||||
var endsAfterToday = false;
|
var endsAfterToday = false;
|
||||||
var e = events.events[event];
|
var e = events.events[event];
|
||||||
// check if not today
|
// check if not today
|
||||||
if (e.startDateTime.date.year !== tizen.time.getCurrentDateTime()
|
if(e.startDateTime.date.year !== tizen.time.getCurrentDateTime().getFullYear() ||
|
||||||
.getFullYear()
|
e.startDateTime.date.month !== tizen.time.getCurrentDateTime().getMonth() + 1 ||
|
||||||
|| e.startDateTime.date.month !== tizen.time
|
e.startDateTime.date.day !== tizen.time.getCurrentDateTime().getDate()){
|
||||||
.getCurrentDateTime().getMonth() + 1
|
|
||||||
|| e.startDateTime.date.day !== tizen.time
|
|
||||||
.getCurrentDateTime().getDate()) {
|
|
||||||
|
|
||||||
// if not today, check if it is an earlier event
|
// if not today, check if it is an earlier event
|
||||||
if (e.startDateTime.date.year < tizen.time.getCurrentDateTime()
|
if(e.startDateTime.date.year < tizen.time.getCurrentDateTime().getFullYear()) {
|
||||||
.getFullYear()) {
|
|
||||||
startedBeforeToday = true;
|
startedBeforeToday = true;
|
||||||
} else if (e.startDateTime.date.month < tizen.time
|
} else if(e.startDateTime.date.month < tizen.time.getCurrentDateTime().getMonth() + 1) {
|
||||||
.getCurrentDateTime().getMonth() + 1) {
|
|
||||||
startedBeforeToday = true;
|
startedBeforeToday = true;
|
||||||
} else if (e.startDateTime.date.day < tizen.time
|
} else if(e.startDateTime.date.day < tizen.time.getCurrentDateTime().getDate()) {
|
||||||
.getCurrentDateTime().getDate()) {
|
|
||||||
startedBeforeToday = true;
|
startedBeforeToday = true;
|
||||||
} else {
|
} else {
|
||||||
continue;
|
continue;
|
||||||
@ -663,22 +608,16 @@ var flagDigital = true;
|
|||||||
}
|
}
|
||||||
|
|
||||||
// check if not today
|
// check if not today
|
||||||
if (e.stopDateTime.date.year !== tizen.time.getCurrentDateTime()
|
if(e.stopDateTime.date.year !== tizen.time.getCurrentDateTime().getFullYear() ||
|
||||||
.getFullYear()
|
e.stopDateTime.date.month !== tizen.time.getCurrentDateTime().getMonth() + 1 ||
|
||||||
|| e.stopDateTime.date.month !== tizen.time
|
e.stopDateTime.date.day !== tizen.time.getCurrentDateTime().getDate()){
|
||||||
.getCurrentDateTime().getMonth() + 1
|
|
||||||
|| e.stopDateTime.date.day !== tizen.time
|
|
||||||
.getCurrentDateTime().getDate()) {
|
|
||||||
|
|
||||||
// if not check if later date
|
// if not check if later date
|
||||||
if (e.stopDateTime.date.year > tizen.time.getCurrentDateTime()
|
if(e.stopDateTime.date.year > tizen.time.getCurrentDateTime().getFullYear()) {
|
||||||
.getFullYear()) {
|
|
||||||
endsAfterToday = true;
|
endsAfterToday = true;
|
||||||
} else if (e.stopDateTime.date.month > tizen.time
|
} else if(e.stopDateTime.date.month > tizen.time.getCurrentDateTime().getMonth() + 1) {
|
||||||
.getCurrentDateTime().getMonth() + 1) {
|
|
||||||
endsAfterToday = true;
|
endsAfterToday = true;
|
||||||
} else if (e.stopDateTime.date.day > tizen.time
|
} else if(e.stopDateTime.date.day > tizen.time.getCurrentDateTime().getDate()) {
|
||||||
.getCurrentDateTime().getDate()) {
|
|
||||||
endsAfterToday = true;
|
endsAfterToday = true;
|
||||||
} else {
|
} else {
|
||||||
continue;
|
continue;
|
||||||
@ -690,47 +629,88 @@ var flagDigital = true;
|
|||||||
|
|
||||||
var startTime = 0;
|
var startTime = 0;
|
||||||
if(!startedBeforeToday) {
|
if(!startedBeforeToday) {
|
||||||
startTime = e.startDateTime.time.hour
|
startTime = e.startDateTime.time.hour + e.startDateTime.time.minute / 60;
|
||||||
+ e.startDateTime.time.minute / 60;
|
|
||||||
}
|
}
|
||||||
var stopTime = 24;
|
var stopTime = 24;
|
||||||
if(!endsAfterToday) {
|
if(!endsAfterToday) {
|
||||||
stopTime = e.stopDateTime.time.hour
|
stopTime = e.stopDateTime.time.hour + e.stopDateTime.time.minute / 60;
|
||||||
+ e.stopDateTime.time.minute / 60;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(DESIGN === 0) {
|
if(DESIGN === 0) {
|
||||||
var edge = document.body.clientWidth / 2 - thickness / 2 - 2;
|
var edge = document.body.clientWidth / 2 - thickness / 2 - 2;
|
||||||
renderArc(ctxContent, center, edge, thickness, e.color,
|
renderArc(ctxContent, center, edge, thickness, e.color, hourToAngle(startTime), hourToAngle(stopTime), startedBeforeToday, endsAfterToday);
|
||||||
hourToAngle(startTime), hourToAngle(stopTime),
|
|
||||||
startedBeforeToday, endsAfterToday);
|
|
||||||
} else if(DESIGN === 1) {
|
} else if(DESIGN === 1) {
|
||||||
var edge = document.body.clientWidth / 2 - thickness / 2 - 2;
|
var edge = document.body.clientWidth / 2 - thickness / 2 - 2;
|
||||||
renderArc(ctxContent, center, edge, thickness, e.color,
|
renderArc(ctxContent, center, edge, thickness, e.color, hourToAngle(startTime), hourToAngle(stopTime), true, true);
|
||||||
hourToAngle(startTime), hourToAngle(stopTime), true,
|
} else if(DESIGN === 2) {
|
||||||
true);
|
var edge = document.body.clientWidth / 2 - thickness / 2 - 2;
|
||||||
|
renderArc(ctxContent, center, edge, thickness, e.color, hourToAngle(startTime), hourToAngle(stopTime), startedBeforeToday, endsAfterToday);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(eventNow(e, hour, minute)) {
|
||||||
|
console.log("!!!writing name");
|
||||||
|
wroteEvent = true;
|
||||||
|
drawEventName(e.name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!wroteEvent) {
|
||||||
|
drawEventName("");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if(DESIGN === 0) {
|
if(DESIGN === 0) {
|
||||||
} else if(DESIGN === 1) {
|
} else if(DESIGN === 1) {
|
||||||
var inner = document.body.clientWidth / 2 - thickness;
|
var inner = document.body.clientWidth / 2 - thickness;
|
||||||
renderSimpleArc(ctxContent, center, 115, 8, "#FFFFFF",
|
renderSimpleArc(ctxContent, center, 115, 8, "#FFFFFF", hourToAngle(20), hourToAngle(20+0.999))
|
||||||
hourToAngle(hour), hourToAngle(hour + 0.999))
|
|
||||||
for(var i = 0; i < 24; i++) {
|
for(var i = 0; i < 24; i++) {
|
||||||
renderSimpleArc(ctxContent, center, edge, thickness, "#000000",
|
renderSimpleArc(ctxContent, center, edge, thickness, "#000000", i*15-0.8, i*15+0.8);
|
||||||
i * 15 - 0.8, i * 15 + 0.8);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
} else if(DESIGN === 2) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function drawMissionControl(datetime) {
|
|
||||||
var strHours = document.getElementById("str-hours"), strConsole = document
|
|
||||||
.getElementById("str-console"), strMinutes = document
|
|
||||||
.getElementById("str-minutes"), datetime = tizen.time
|
}
|
||||||
.getCurrentDateTime(), hour = datetime.getHours(), minute = datetime
|
|
||||||
.getMinutes();
|
function eventNow(event, hour, minute) {
|
||||||
|
if( ((event.startDateTime.time.hour < hour) ||
|
||||||
|
(event.startDateTime.time.hour <= hour &&
|
||||||
|
event.startDateTime.time.minute <= minute)) ) {
|
||||||
|
console.log("start before");
|
||||||
|
}
|
||||||
|
|
||||||
|
if( ((event.stopDateTime.time.hour > hour) ||
|
||||||
|
(event.stopDateTime.time.hour >= hour &&
|
||||||
|
event.stopDateTime.time.minute >= minute)) ) {
|
||||||
|
console.log("stop after");
|
||||||
|
}
|
||||||
|
|
||||||
|
if( ((event.startDateTime.time.hour < hour) ||
|
||||||
|
(event.startDateTime.time.hour <= hour &&
|
||||||
|
event.startDateTime.time.minute <= minute)) &&
|
||||||
|
((event.stopDateTime.time.hour > hour) ||
|
||||||
|
(event.stopDateTime.time.hour >= hour &&
|
||||||
|
event.stopDateTime.time.minute >= minute)) ){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function drawEventName(name) {
|
||||||
|
var strEvent = document.getElementById("str-event");
|
||||||
|
strEvent.innerHTML = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
function drawDigitalWatch(datetime) {
|
||||||
|
var strHours = document.getElementById("str-hours"),
|
||||||
|
strConsole = document.getElementById("str-console"),
|
||||||
|
strMinutes = document.getElementById("str-minutes"),
|
||||||
|
datetime = tizen.time.getCurrentDateTime(),
|
||||||
|
hour = datetime.getHours(),
|
||||||
|
minute = datetime.getMinutes();
|
||||||
|
|
||||||
strHours.innerHTML = hour;
|
strHours.innerHTML = hour;
|
||||||
strMinutes.innerHTML = minute;
|
strMinutes.innerHTML = minute;
|
||||||
@ -751,16 +731,16 @@ var flagDigital = true;
|
|||||||
strConsole.style.visibility = "hidden";
|
strConsole.style.visibility = "hidden";
|
||||||
flagConsole = true;
|
flagConsole = true;
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
strConsole.style.visibility = "visible";
|
strConsole.style.visibility = "visible";
|
||||||
flagConsole = false;
|
flagConsole = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets to background image as BACKGROUND_URL, and starts timer for normal
|
* Sets to background image as BACKGROUND_URL,
|
||||||
* digital watch mode.
|
* and starts timer for normal digital watch mode.
|
||||||
*
|
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
function initDigitalWatch() {
|
function initDigitalWatch() {
|
||||||
@ -777,29 +757,11 @@ var flagDigital = true;
|
|||||||
eventsTimeStamp = currentTime;
|
eventsTimeStamp = currentTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function loopNavigator(offset_ms) {
|
|
||||||
var d = new Date();
|
|
||||||
|
|
||||||
var options = {
|
|
||||||
enableHighAccuracy : true,
|
|
||||||
timeout : 5000
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
var currentTime = d.getTime();
|
|
||||||
if (navigatorTimeStamp + offset_ms < currentTime) {
|
|
||||||
navigator.geolocation.getCurrentPosition(updateLocation, errorCallback,
|
|
||||||
options);
|
|
||||||
|
|
||||||
navigatorTimeStamp = currentTime;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set default variables
|
* Set default variables
|
||||||
*
|
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
function setDefaultVariables() {
|
function setDefaultVariables() {
|
||||||
@ -824,12 +786,10 @@ var flagDigital = true;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Set default event listeners
|
* Set default event listeners
|
||||||
*
|
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
function setDefaultEvents() {
|
function setDefaultEvents() {
|
||||||
// add eventListener to update the screen immediately when the device
|
// add eventListener to update the screen immediately when the device wakes up
|
||||||
// wakes up
|
|
||||||
document.addEventListener("visibilitychange", function() {
|
document.addEventListener("visibilitychange", function() {
|
||||||
if (!document.hidden) {
|
if (!document.hidden) {
|
||||||
// Draw the content of the watch
|
// Draw the content of the watch
|
||||||
@ -840,7 +800,6 @@ var flagDigital = true;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Initiates the application
|
* Initiates the application
|
||||||
*
|
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
function init() {
|
function init() {
|
||||||
@ -852,20 +811,11 @@ var flagDigital = true;
|
|||||||
drawWatchLayout();
|
drawWatchLayout();
|
||||||
drawWatchContent();
|
drawWatchContent();
|
||||||
|
|
||||||
|
|
||||||
// Update the content of the watch every second
|
// Update the content of the watch every second
|
||||||
setInterval(function() {
|
setInterval(function() {
|
||||||
drawWatchContent();
|
drawWatchContent();
|
||||||
loopCalendar(wait_time);
|
loopCalendar(wait_time);
|
||||||
loopNavigator(wait_time);
|
|
||||||
|
|
||||||
}, 1000);
|
}, 1000);
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function errorCallback(error) {
|
|
||||||
console.log("error");
|
|
||||||
console.log(error);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
window.onload = init;
|
window.onload = init;
|
||||||
|
Reference in New Issue
Block a user