diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/insulin/ActivityGraph.java b/app/src/main/java/info/nightscout/androidaps/plugins/insulin/ActivityGraph.java deleted file mode 100644 index ee682272a1..0000000000 --- a/app/src/main/java/info/nightscout/androidaps/plugins/insulin/ActivityGraph.java +++ /dev/null @@ -1,78 +0,0 @@ -package info.nightscout.androidaps.plugins.insulin; - -import android.content.Context; -import android.graphics.Color; -import android.util.AttributeSet; - -import com.jjoe64.graphview.GraphView; -import com.jjoe64.graphview.series.DataPoint; -import com.jjoe64.graphview.series.LineGraphSeries; - -import java.util.ArrayList; -import java.util.List; - -import info.nightscout.androidaps.data.Iob; -import info.nightscout.androidaps.db.Treatment; -import info.nightscout.androidaps.interfaces.InsulinInterface; - -/** - * Created by mike on 21.04.2017. - */ - -public class ActivityGraph extends GraphView { - Context context; - - public ActivityGraph(Context context) { - super(context); - this.context = context; - } - - public ActivityGraph(Context context, AttributeSet attrs) { - super(context, attrs); - this.context = context; - } - - public void show(InsulinInterface insulin) { - removeAllSeries(); - mSecondScale = null; - double dia = insulin.getDia(); - int hours = (int) Math.floor(dia + 1); - - Treatment t = new Treatment(); - t.date = 0; - t.insulin = 1d; - - LineGraphSeries activitySeries = null; - LineGraphSeries iobSeries = null; - List activityArray = new ArrayList<>(); - List iobArray = new ArrayList<>(); - - for (long time = 0; time <= hours * 60 * 60 * 1000; time += 5 * 60 * 1000L) { - Iob iob = t.iobCalc(time, dia); - activityArray.add(new DataPoint(time / 60.0 / 1000, iob.activityContrib)); - iobArray.add(new DataPoint(time / 60.0 / 1000, iob.iobContrib)); - } - - DataPoint[] activityDataPoints = new DataPoint[activityArray.size()]; - activityDataPoints = activityArray.toArray(activityDataPoints); - addSeries(activitySeries = new LineGraphSeries<>(activityDataPoints)); - activitySeries.setThickness(8); - - getViewport().setXAxisBoundsManual(true); - getViewport().setMinX(0); - getViewport().setMaxX(hours * 60); - getGridLabelRenderer().setNumHorizontalLabels(hours + 1); - getGridLabelRenderer().setHorizontalAxisTitle("[min]"); - getGridLabelRenderer().setVerticalLabelsColor(activitySeries.getColor()); - - DataPoint[] iobDataPoints = new DataPoint[iobArray.size()]; - iobDataPoints = iobArray.toArray(iobDataPoints); - getSecondScale().addSeries(iobSeries = new LineGraphSeries<>(iobDataPoints)); - iobSeries.setDrawBackground(true); - iobSeries.setColor(Color.MAGENTA); - iobSeries.setBackgroundColor(Color.argb(70, 255, 0, 255)); - getSecondScale().setMinY(0); - getSecondScale().setMaxY(1); - getGridLabelRenderer().setVerticalLabelsSecondScaleColor(Color.MAGENTA); - } -} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/insulin/ActivityGraph.kt b/app/src/main/java/info/nightscout/androidaps/plugins/insulin/ActivityGraph.kt new file mode 100644 index 0000000000..a6575c1886 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/insulin/ActivityGraph.kt @@ -0,0 +1,56 @@ +package info.nightscout.androidaps.plugins.insulin + +import android.content.Context +import android.graphics.Color +import android.util.AttributeSet +import com.jjoe64.graphview.GraphView +import com.jjoe64.graphview.series.DataPoint +import com.jjoe64.graphview.series.LineGraphSeries +import info.nightscout.androidaps.db.Treatment +import info.nightscout.androidaps.interfaces.InsulinInterface +import info.nightscout.androidaps.utils.T +import java.util.* +import kotlin.math.floor + +class ActivityGraph : GraphView { + + constructor(context: Context) : super(context) + + constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) + + fun show(insulin: InsulinInterface) { + removeAllSeries() + mSecondScale = null + val hours = floor(insulin.dia + 1).toLong() + val t = Treatment().also { + it.date = 0 + it.insulin = 1.0 + } + val activityArray: MutableList = ArrayList() + val iobArray: MutableList = ArrayList() + var time: Long = 0 + while (time <= T.hours(hours).msecs()) { + val iob = t.iobCalc(time, insulin.dia) + activityArray.add(DataPoint(T.msecs(time).mins().toDouble(), iob.activityContrib)) + iobArray.add(DataPoint(T.msecs(time).mins().toDouble(), iob.iobContrib)) + time += T.mins(5).msecs() + } + addSeries(LineGraphSeries(Array(activityArray.size) { i -> activityArray[i] }).also { + it.thickness = 8 + gridLabelRenderer.verticalLabelsColor = it.color + }) + viewport.isXAxisBoundsManual = true + viewport.setMinX(0.0) + viewport.setMaxX((hours * 60).toDouble()) + gridLabelRenderer.numHorizontalLabels = (hours + 1).toInt() + gridLabelRenderer.horizontalAxisTitle = "[min]" + secondScale.addSeries(LineGraphSeries(Array(iobArray.size) { i -> iobArray[i] }).also { + it.isDrawBackground = true + it.color = Color.MAGENTA + it.backgroundColor = Color.argb(70, 255, 0, 255) + }) + secondScale.minY = 0.0 + secondScale.maxY = 1.0 + gridLabelRenderer.verticalLabelsSecondScaleColor = Color.MAGENTA + } +} \ No newline at end of file