1
0
Fork 0
master
Elfreda Kwawu 2024-04-16 18:15:54 -04:00
parent f63295adb7
commit f41e7c15ed
2 changed files with 33 additions and 92 deletions

View File

@ -37,9 +37,9 @@ function handleHeartRate(hrm) {
currentHR = hrm.bpm; currentHR = hrm.bpm;
let currentTime = Date.now(); let currentTime = Date.now();
let elaspedTime = currentTime - lastLogTime; let elaspedTime = currentTime - lastLogTime;
let nextLog = 5 * 1000 - (elaspedTime % (5 * 1000)); // Calculate time to next log let nextLog = 3000 - (elaspedTime % 3000); // Calculate time to next log (3 seconds)
if (elaspedTime >= 5 * 1000) { // Check if it's time for the next log if (elaspedTime >= 3000) { // Check if it's time for the next log
lastLogTime = currentTime - (elaspedTime % (5 * 1000)); // Set last log time to the previous 5-second boundary lastLogTime = currentTime - (elaspedTime % 3000); // Set last log time to the previous 3-second boundary
let date = new Date(lastLogTime); let date = new Date(lastLogTime);
let dateStr = require("locale").date(date); let dateStr = require("locale").date(date);
let timeStr = require("locale").time(date, 1); let timeStr = require("locale").time(date, 1);
@ -143,22 +143,8 @@ function saveDataToCSV() {
csvContent += `${entry.timestamp},${entry.heartRate},${entry.hrv}\n`; csvContent += `${entry.timestamp},${entry.heartRate},${entry.hrv}\n`;
}); });
// Check if the file already exists
let fileNum = 0;
let fileName = `heart_rate_data_${fileNum}.csv`;
while (require("Storage").read(fileName) !== undefined && fileNum <= MAX_LOGS) {
fileNum++;
fileName = `heart_rate_data_${fileNum}.csv`;
}
// Prompt user for confirmation before overwriting existing file
if (require("Storage").read(fileName) !== undefined) {
if (!confirm("Overwrite existing file?")) {
return; // Do not overwrite file if user cancels
}
}
// Write data to the CSV file // Write data to the CSV file
let fileName = "heart_rate_data.csv"; // Use consistent file name
require("Storage").write(fileName, csvContent); require("Storage").write(fileName, csvContent);
} }

View File

@ -9,87 +9,42 @@
<script> <script>
var dataElement = document.getElementById("data"); var dataElement = document.getElementById("data");
function getHeartRateData() { function saveHeartRateData() {
// show loading window Util.showModal("Saving...");
Util.showModal("Loading..."); var csvContent = "Timestamp,Heart Rate(bpm),HRV(ms)\n";
// get the data // Assuming logData contains the heart rate data
dataElement.innerHTML = ""; logData.forEach(entry => {
var promise = Promise.resolve(); csvContent += `${entry.timestamp},${entry.heartRate},${entry.hrv}\n`;
Puck.eval('require("Storage").list(/heart_rate_data\\.csv\\x01/)', files => { });
console.log("Files found:", files); // Print files to console var fileName = "heart_rate_data.csv"; // Set the desired file name
if (files.length == 0) { Util.saveCSV(fileName, csvContent, function(success) {
dataElement.innerHTML = "<p>No heart rate data found</p>"; if (success) {
dataElement.innerHTML = "<p>Heart rate data saved successfully</p>";
} else { } else {
files.forEach(fn => { dataElement.innerHTML = "<p>Error saving heart rate data</p>";
fn = fn.slice(0, -1); }
dataElement.innerHTML += `
<div class="card">
<div class="card-header">
<div class="card-title h5">${fn}</div>
</div>
<div class="card-footer">
<button class="btn btn-primary" fn="${fn}" act="save">Save</button>
<button class="btn" fn="${fn}" act="delete">Delete</button>
</div>
</div>`;
promise = promise.then(function() {
document.querySelector(`.btn[fn='${fn}'][act='save']`).addEventListener("click", function() {
Util.showModal("Downloading...");
console.log("Downloaded file path:", fn); // Print file path to console
Util.readStorageFile(fn, function(data) {
Util.saveCSV(fn.slice(0, -4), data);
});
});
document.querySelector(`.btn[fn='${fn}'][act='delete']`).addEventListener("click", function() {
Util.showModal("Deleting...");
Util.eraseStorageFile(fn, function() {
Util.hideModal(); Util.hideModal();
getHeartRateData();
}); });
}); }
return new Promise(resolve=>{
Puck.eval(`require("Storage").read(${JSON.stringify(fn)})`, csv=>{ function deleteHeartRateData() {
var el = document.querySelector(`.card-body[fn='${fn}']`); Util.showModal("Deleting...");
el.innerHTML = '<canvas width="400" height="100"></canvas>'; var fileName = "heart_rate_data.csv"; // Set the desired file name
var c = el.firstChild; Util.eraseStorageFile(fileName, function(success) {
var ctx = c.getContext("2d"); if (success) {
var lines = csv.split("\n"); dataElement.innerHTML = "<p>Heart rate data deleted successfully</p>";
var y = 50, sx = 400/lines.length, sy = 50/8;
function plot(n) {
var last;
ctx.beginPath();
lines.map((l,x)=>{
l = l.split(",");
var yc = y + parseFloat(l[n])*sy;
if (!last) {
ctx.moveTo(0, yc);
} else { } else {
ctx.lineTo(x*sx, yc); dataElement.innerHTML = "<p>Error deleting heart rate data</p>";
} }
last = l;
});
ctx.stroke();
};
ctx.strokeStyle = 'red';
plot(0);
ctx.strokeStyle = 'green';
plot(1);
ctx.strokeStyle = 'blue';
plot(2);
resolve();
});
});
});
});
}
// remove window
Util.hideModal(); Util.hideModal();
}); });
} }
// Called when app starts // Called when app starts
function onInit() { function onInit() {
getHeartRateData(); // Only show options to save or delete data
saveHeartRateData();
deleteHeartRateData();
} }
</script> </script>