-
-
Save bolav/061e6c0ca63ed7e49a14 to your computer and use it in GitHub Desktop.
MainJava.js fixed
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var logMain = true; // Main output | |
var logDebug = true; // Detailed debug output | |
var Observable = require("FuseJS/Observable"); | |
var moment = require('moment'); | |
var timestampFormat = 'YYYY-MM-DD HH:mm:ss.SS'; | |
function alert(){ | |
if ( arguments.length>0 & arguments[0]) { | |
var logText = ""; | |
for(var i=1; i<arguments.length; i++) { | |
logText = logText + arguments[i]; | |
} | |
console.log("JS: " + logText); | |
} | |
} | |
// | |
// * * * Database Handling * * * Database Handling * * * Database Handling * * * Database Handling * * * Database Handling | |
// | |
var sqlite = require('SQLite'); | |
var db = sqlite.open("WorkoutDatabase.sqlite"); | |
db.execute("create table if not exists workout (wid string primary key, wtime string, Year integer, Month integer, Day integer, Length real)"); | |
db.execute("create table if not exists laps (lid string primary key, ltime string, wid string, LapTimeS string, LaptimeN interger)"); | |
function addWorkoutToDb ( w_id,w_timestamp, w_length ) { | |
var r = db.query("select * from workout where wid=?", w_id ); | |
if (r.length == 0 ) { | |
db.execute("insert into workout values (?,?,?,?,?,?)", w_id, moment(w_timestamp).format('HH:mm:ss'), | |
moment.utc(w_timestamp).format('YYYY'), moment.utc(w_timestamp).format('MM') , | |
moment.utc(w_timestamp).format('DD') , w_length ); | |
alert(logDebug,"DB New workout ID: ", w_id); | |
} | |
} | |
function updateWorkoutInDb ( w_id, w_length ) { | |
db.execute("update workout set Length=? where wid=?", w_length, w_id ); | |
alert(logDebug,"DB Length updated for workout ID: ", w_id, " to: ", w_length); | |
} | |
function sumWorkoutFromDb ( w_id, w_month) { | |
// var r = db.query(workoutDB, "select * from workout where Month=" + w_month ); // Returns data as expected. | |
console.log("w_month: " + w_month); | |
var r = db.query("select * from workout where Month=?", w_month ); // Returns empty list | |
alert(logDebug,"Records in month ", w_month, ": ",JSON.stringify(r)); | |
var s = db.query("select sum(Length) AS sum from workout where Month=?", w_month ); | |
alert(logDebug,"DB Length Sum for Month ", w_month, ": ",JSON.stringify(s)); | |
} | |
function addLoopToDb ( l_timestamp, w_id, l_durationS, l_durationN ) { | |
var l_id = moment(l_timestamp).format('YYYYMMDDHHmmssSS'); | |
var r = db.query("select * from laps where lid=?", l_id ); | |
if (r.length == 0 ) { | |
db.execute("insert into laps values (?,?,?,?,?)", l_id, | |
moment(l_timestamp).format(timestampFormat), w_id, l_durationS, 1*l_durationN); | |
alert(logDebug,"DB New loop ID: ", l_id, " w_id: ", w_id); | |
} | |
} | |
var workoutTimeStart = moment(); | |
var workoutTimeStop = moment(); | |
var loopTimestamp = moment(); | |
var lastLoopTimestamp = 0; | |
var workoutDuration = -1; | |
var workoutId = moment(); | |
var looptime = 0; | |
var looptimestring = Observable(""); | |
var lloopstring = Observable(""); | |
var cloopstring = Observable(""); | |
// | |
// *** Stopwatch *** Stopwatch *** Stopwatch *** Stopwatch *** Stopwatch *** | |
// | |
var Stopwatch = require('Stopwatch'); | |
var laps = Observable(); | |
var running = Observable(false); | |
var timeString = Observable(""); | |
function pad(d) { | |
return (d < 10) ? '0' + d.toString() : d.toString(); | |
} | |
function updateTimeString(){ | |
var seconds = Stopwatch.GetSeconds(); | |
var millis = seconds * 1000; | |
mins = Math.floor(seconds / 60); | |
secs = Math.floor(seconds) % 60, | |
hundredths = Math.floor((millis % 10e2) / 10); | |
timeString.value = pad(mins) + ":" + pad(secs) + ":" + pad(hundredths); | |
} | |
function updateTimeStringLoop(){ | |
updateTimeString(); | |
setTimeout(updateTimeStringLoop, 10); | |
} | |
updateTimeStringLoop(); | |
function addLapOrReset(){ | |
if (running.value){ | |
if (Stopwatch.GetSeconds() > 0) | |
laps.insertAt(0, { | |
title:("Lap " + (laps.length + 1)), | |
time: timeString.value | |
}); | |
loopTimestamp = moment(); | |
loopTime = loopTimestamp.diff(lastLoopTimestamp); | |
cloopstring.value = "" + moment(loopTimestamp).format('YYYYMMDDHHmmssSS') ; | |
lloopstring.value = "" + moment(lastLoopTimestamp).format('YYYYMMDDHHmmssSS'); | |
looptimestring.value = "" + moment.utc(loopTime).format('HH:mm:ss.SS'); | |
lastLoopTimestamp = loopTimestamp; | |
addLoopToDb(loopTimestamp, workoutId, looptimestring.value, loopTime); | |
} else { | |
if ( workoutDuration >=0 ) { | |
workoutTimeStop = moment(); | |
loopTimestamp = workoutTimeStop; | |
loopTime = loopTimestamp.diff(lastLoopTimestamp); | |
looptimestring.value = "" + moment.utc(loopTime).format('HH:mm:ss.SS'); | |
Stopwatch.Stop(); | |
loopId = moment(loopTimestamp).format('YYYYMMDDHHmmssSS'); | |
addLoopToDb(loopTimestamp, workoutId, looptimestring.value, loopTime); | |
updateWorkoutInDb(workoutId,12.345); | |
sumWorkoutFromDb(workoutId,3); | |
laps.clear(); | |
updateTimeString(); | |
} | |
workoutDuration = -1; | |
} | |
} | |
function removeLap(arg){ | |
laps.tryRemove(arg.data); | |
} | |
function stopStart(){ | |
running.value = !running.value; | |
if (running.value) { | |
workoutTimeStart = moment(); | |
lastLoopTimestamp = workoutTimeStart; | |
Stopwatch.Start(); | |
if (workoutDuration < 0) { // New workout. Set workout ID. | |
workoutId = workoutTimeStart.format('YYYYMMDDHHmmssSS'); | |
workoutDuration = 0; | |
alert(logDebug,"* * * New Workout: Id: ", workoutId ); | |
addWorkoutToDb(workoutId, workoutTimeStart, 0 ); | |
} | |
alert(logDebug,"Workout started: ", moment(workoutTimeStart).format("YYYY-MM-DD HH-mm-ss"), " Duration: ", workoutDuration ); | |
} else { | |
workoutTimeStop = moment(); | |
workoutDuration += workoutTimeStop.diff(workoutTimeStart); | |
Stopwatch.Pause(); | |
alert(logDebug,"Workout paused: ", moment(workoutTimeStop).format("YYYY-MM-DD HH-mm-ss"), " Duration: ", workoutDuration); | |
} | |
} | |
alert(logDebug, "\n* * * * gps Log Started * * * * \n"); | |
module.exports = { | |
timeString: timeString, | |
laps: laps, | |
addLapOrReset: addLapOrReset, | |
removeLap: removeLap, | |
stopStart: stopStart, | |
running: running, | |
cloopstring: cloopstring, | |
lloopstring: lloopstring, | |
looptimestring: looptimestring, | |
moment: moment, | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment