meal-prepare.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. //для monitor/meal.json параметры: monitor/pumphistory-24h-zoned.json settings/profile.json monitor/clock-zoned.json monitor/glucose.json settings/basal_profile.json monitor/carbhistory.json
  2. function generate(pumphistory_data, profile_data, clock_data, glucose_data, basalprofile_data, carbhistory = false) {
  3. if (typeof(profile_data.carb_ratio) === 'undefined' || profile_data.carb_ratio < 0.1) {
  4. return {"error":"Error: carb_ratio " + profile_data.carb_ratio + " out of bounds"};
  5. }
  6. var carb_data = { };
  7. if (carbhistory) {
  8. carb_data = carbhistory;
  9. }
  10. if (typeof basalprofile_data[0] === 'undefined') {
  11. return { "error":"Error: bad basalprofile_data: " + JSON.stringify(basalprofile_data) };
  12. }
  13. var inputs = {
  14. history: pumphistory_data
  15. , profile: profile_data
  16. , basalprofile: basalprofile_data
  17. , clock: clock_data
  18. , carbs: carb_data
  19. , glucose: glucose_data
  20. };
  21. var recentCarbs = trio_meal(inputs);
  22. if (glucose_data.length < 4) {
  23. console.error("Not enough glucose data to calculate carb absorption; found:", glucose_data.length);
  24. // We're returning a sensable default to match Swift
  25. /*
  26. recentCarbs.mealCOB = 0;
  27. recentCarbs.reason = "not enough glucose data to calculate carb absorption";
  28. */
  29. return {
  30. carbs: 0,
  31. mealCOB: 0,
  32. currentDeviation: 0,
  33. maxDeviation: 0,
  34. minDeviation: 0,
  35. slopeFromMaxDeviation: 0,
  36. slopeFromMinDeviation: 0,
  37. allDeviations: [],
  38. lastCarbTime: 0
  39. };
  40. }
  41. return recentCarbs;
  42. }