fix calculation, conditional rendering
This commit is contained in:
parent
595bf0314c
commit
48316dbd4c
|
@ -327,7 +327,7 @@ public class HistoryBrowseActivity extends AppCompatActivity {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (showIob)
|
if (showIob)
|
||||||
secondGraphData.addIob(fromTime, toTime, useIobForScale, 1d);
|
secondGraphData.addIob(fromTime, toTime, useIobForScale, 1d, showPrediction);
|
||||||
if (showCob)
|
if (showCob)
|
||||||
secondGraphData.addCob(fromTime, toTime, useCobForScale, useCobForScale ? 1d : 0.5d);
|
secondGraphData.addCob(fromTime, toTime, useCobForScale, useCobForScale ? 1d : 0.5d);
|
||||||
if (showDev)
|
if (showDev)
|
||||||
|
|
|
@ -323,7 +323,8 @@ public class TemporaryBasal implements Interval, DbObjectBase {
|
||||||
if (isAbsolute) {
|
if (isAbsolute) {
|
||||||
netBasalRate = absoluteRate - basalRate;
|
netBasalRate = absoluteRate - basalRate;
|
||||||
} else {
|
} else {
|
||||||
netBasalRate = (percentRate - 100) / 100d * basalRate;
|
double abs = percentRate / 100d * profile.getBasal(calcdate);
|
||||||
|
netBasalRate = abs - basalRate;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (calcdate > dia_ago && calcdate <= time) {
|
if (calcdate > dia_ago && calcdate <= time) {
|
||||||
|
|
|
@ -1506,7 +1506,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SP.getBoolean("showiob", true))
|
if (SP.getBoolean("showiob", true))
|
||||||
secondGraphData.addIob(fromTime, now, useIobForScale, 1d);
|
secondGraphData.addIob(fromTime, now, useIobForScale, 1d, SP.getBoolean("showprediction", false));
|
||||||
if (SP.getBoolean("showcob", true))
|
if (SP.getBoolean("showcob", true))
|
||||||
secondGraphData.addCob(fromTime, now, useCobForScale, useCobForScale ? 1d : 0.5d);
|
secondGraphData.addCob(fromTime, now, useCobForScale, useCobForScale ? 1d : 0.5d);
|
||||||
if (SP.getBoolean("showdeviations", false))
|
if (SP.getBoolean("showdeviations", false))
|
||||||
|
|
|
@ -366,7 +366,7 @@ public class GraphData {
|
||||||
total = iobCobCalculatorPlugin.calculateFromTreatmentsAndTempsSynchronized(time, profile);
|
total = iobCobCalculatorPlugin.calculateFromTreatmentsAndTempsSynchronized(time, profile);
|
||||||
act = total.activity;
|
act = total.activity;
|
||||||
|
|
||||||
if(time<=now)
|
if (time <= now)
|
||||||
actArrayHist.add(new ScaledDataPoint(time, act, actScale));
|
actArrayHist.add(new ScaledDataPoint(time, act, actScale));
|
||||||
else
|
else
|
||||||
actArrayPred.add(new ScaledDataPoint(time, act, actScale));
|
actArrayPred.add(new ScaledDataPoint(time, act, actScale));
|
||||||
|
@ -403,7 +403,7 @@ public class GraphData {
|
||||||
}
|
}
|
||||||
|
|
||||||
// scale in % of vertical size (like 0.3)
|
// scale in % of vertical size (like 0.3)
|
||||||
public void addIob(long fromTime, long toTime, boolean useForScale, double scale) {
|
public void addIob(long fromTime, long toTime, boolean useForScale, double scale, boolean showPrediction) {
|
||||||
FixedLineGraphSeries<ScaledDataPoint> iobSeries;
|
FixedLineGraphSeries<ScaledDataPoint> iobSeries;
|
||||||
List<ScaledDataPoint> iobArray = new ArrayList<>();
|
List<ScaledDataPoint> iobArray = new ArrayList<>();
|
||||||
Double maxIobValueFound = Double.MIN_VALUE;
|
Double maxIobValueFound = Double.MIN_VALUE;
|
||||||
|
@ -432,38 +432,42 @@ public class GraphData {
|
||||||
iobSeries.setColor(MainApp.gc(R.color.iob));
|
iobSeries.setColor(MainApp.gc(R.color.iob));
|
||||||
iobSeries.setThickness(3);
|
iobSeries.setThickness(3);
|
||||||
|
|
||||||
List<DataPointWithLabelInterface> iobPred = new ArrayList<>();
|
if (showPrediction) {
|
||||||
|
AutosensResult lastAutosensResult;
|
||||||
|
AutosensData autosensData = IobCobCalculatorPlugin.getPlugin().getLastAutosensDataSynchronized("GraphData");
|
||||||
|
if (autosensData == null)
|
||||||
|
lastAutosensResult = new AutosensResult();
|
||||||
|
else
|
||||||
|
lastAutosensResult = autosensData.autosensResult;
|
||||||
|
boolean isTempTarget = TreatmentsPlugin.getPlugin().getTempTargetFromHistory(System.currentTimeMillis()) != null;
|
||||||
|
|
||||||
AutosensResult lastAutosensResult;
|
List<DataPointWithLabelInterface> iobPred = new ArrayList<>();
|
||||||
AutosensData autosensData = IobCobCalculatorPlugin.getPlugin().getLastAutosensDataSynchronized("GraphData");
|
IobTotal[] iobPredArray = IobCobCalculatorPlugin.getPlugin().calculateIobArrayForSMB(lastAutosensResult, SMBDefaults.exercise_mode, SMBDefaults.half_basal_exercise_target, isTempTarget);
|
||||||
if (autosensData == null)
|
for (IobTotal i : iobPredArray) {
|
||||||
lastAutosensResult = new AutosensResult();
|
iobPred.add(i.setColor(MainApp.gc(R.color.iobPredAS)));
|
||||||
else
|
maxIobValueFound = Math.max(maxIobValueFound, Math.abs(i.iob));
|
||||||
lastAutosensResult = autosensData.autosensResult;
|
}
|
||||||
boolean isTempTarget = TreatmentsPlugin.getPlugin().getTempTargetFromHistory(System.currentTimeMillis()) != null;
|
DataPointWithLabelInterface[] iobp = new DataPointWithLabelInterface[iobPred.size()];
|
||||||
IobTotal[] iobPredArray = IobCobCalculatorPlugin.getPlugin().calculateIobArrayForSMB(lastAutosensResult, SMBDefaults.exercise_mode, SMBDefaults.half_basal_exercise_target, isTempTarget);
|
iobp = iobPred.toArray(iobp);
|
||||||
|
addSeries(new PointsWithLabelGraphSeries<>(iobp));
|
||||||
|
|
||||||
for (IobTotal i : iobPredArray) {
|
|
||||||
iobPred.add(i.setColor(R.color.iobPredAS));
|
List<DataPointWithLabelInterface> iobPred2 = new ArrayList<>();
|
||||||
maxIobValueFound = Math.max(maxIobValueFound, Math.abs(i.iob));
|
IobTotal[] iobPredArray2 = IobCobCalculatorPlugin.getPlugin().calculateIobArrayForSMB(new AutosensResult(), SMBDefaults.exercise_mode, SMBDefaults.half_basal_exercise_target, isTempTarget);
|
||||||
|
for (IobTotal i : iobPredArray2) {
|
||||||
|
iobPred2.add(i.setColor(MainApp.gc(R.color.iobPred)));
|
||||||
|
maxIobValueFound = Math.max(maxIobValueFound, Math.abs(i.iob));
|
||||||
|
}
|
||||||
|
DataPointWithLabelInterface[] iobp2 = new DataPointWithLabelInterface[iobPred2.size()];
|
||||||
|
iobp2 = iobPred2.toArray(iobp2);
|
||||||
|
addSeries(new PointsWithLabelGraphSeries<>(iobp2));
|
||||||
|
|
||||||
|
if (L.isEnabled(L.AUTOSENS)) {
|
||||||
|
log.debug("IOB pred for AS=" + DecimalFormatter.to2Decimal(lastAutosensResult.ratio) + ": " + IobCobCalculatorPlugin.getPlugin().iobArrayToString(iobPredArray));
|
||||||
|
log.debug("IOB pred for AS=" + DecimalFormatter.to2Decimal(1) + ": " + IobCobCalculatorPlugin.getPlugin().iobArrayToString(iobPredArray2));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
log.debug("IOB pred for AS=" + DecimalFormatter.to2Decimal(lastAutosensResult.ratio) + ": " + IobCobCalculatorPlugin.getPlugin().iobArrayToString(iobPredArray));
|
|
||||||
|
|
||||||
IobTotal[] iobPredArray2 = IobCobCalculatorPlugin.getPlugin().calculateIobArrayForSMB(new AutosensResult(), SMBDefaults.exercise_mode, SMBDefaults.half_basal_exercise_target, isTempTarget);
|
|
||||||
|
|
||||||
for (IobTotal i : iobPredArray2) {
|
|
||||||
iobPred.add(i.setColor(R.color.iobPred));
|
|
||||||
maxIobValueFound = Math.max(maxIobValueFound, Math.abs(i.iob));
|
|
||||||
}
|
|
||||||
|
|
||||||
log.debug("IOB pred for AS=" + DecimalFormatter.to2Decimal(1) + ": " + IobCobCalculatorPlugin.getPlugin().iobArrayToString(iobPredArray2));
|
|
||||||
|
|
||||||
DataPointWithLabelInterface[] iobp = new DataPointWithLabelInterface[iobPred.size()];
|
|
||||||
iobp = iobPred.toArray(iobp);
|
|
||||||
addSeries(new PointsWithLabelGraphSeries<>(iobp));
|
|
||||||
|
|
||||||
|
|
||||||
if (useForScale) {
|
if (useForScale) {
|
||||||
maxY = maxIobValueFound;
|
maxY = maxIobValueFound;
|
||||||
minY = -maxIobValueFound;
|
minY = -maxIobValueFound;
|
||||||
|
|
Loading…
Reference in a new issue