Skip to content

Instantly share code, notes, and snippets.

@bolav
Last active March 7, 2016 10:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bolav/061e6c0ca63ed7e49a14 to your computer and use it in GitHub Desktop.
Save bolav/061e6c0ca63ed7e49a14 to your computer and use it in GitHub Desktop.
MainJava.js fixed
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