low and high line on graph
This commit is contained in:
parent
22aab61b02
commit
9f0ea19b44
2 changed files with 49 additions and 18 deletions
|
@ -143,16 +143,14 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<BgReading> getHoursOfBg(int hoursToFetch) {
|
public List<BgReading> getDataFromTime(long mills) {
|
||||||
try {
|
try {
|
||||||
Dao<BgReading, Long> daoBgreadings = getDaoBgReadings();
|
Dao<BgReading, Long> daoBgreadings = getDaoBgReadings();
|
||||||
List<BgReading> bgReadings;
|
List<BgReading> bgReadings;
|
||||||
QueryBuilder<BgReading, Long> queryBuilder = daoBgreadings.queryBuilder();
|
QueryBuilder<BgReading, Long> queryBuilder = daoBgreadings.queryBuilder();
|
||||||
queryBuilder.orderBy("timeIndex", false);
|
queryBuilder.orderBy("timeIndex", false);
|
||||||
Where where = queryBuilder.where();
|
Where where = queryBuilder.where();
|
||||||
long now = new Date().getTime();
|
where.ge("timeIndex", (long) Math.ceil(mills / 60000d));
|
||||||
long dayAgo = now - hoursToFetch * 60 * 60 * 1000l;
|
|
||||||
where.ge("timeIndex", (long) Math.ceil(dayAgo / 60000d));
|
|
||||||
PreparedQuery<BgReading> preparedQuery = queryBuilder.prepare();
|
PreparedQuery<BgReading> preparedQuery = queryBuilder.prepare();
|
||||||
bgReadings = daoBgreadings.query(preparedQuery);
|
bgReadings = daoBgreadings.query(preparedQuery);
|
||||||
return bgReadings;
|
return bgReadings;
|
||||||
|
|
|
@ -12,6 +12,8 @@ import android.widget.TextView;
|
||||||
|
|
||||||
import com.jjoe64.graphview.GraphView;
|
import com.jjoe64.graphview.GraphView;
|
||||||
import com.jjoe64.graphview.helper.DateAsXAxisLabelFormatter;
|
import com.jjoe64.graphview.helper.DateAsXAxisLabelFormatter;
|
||||||
|
import com.jjoe64.graphview.series.DataPoint;
|
||||||
|
import com.jjoe64.graphview.series.LineGraphSeries;
|
||||||
import com.jjoe64.graphview.series.PointsGraphSeries;
|
import com.jjoe64.graphview.series.PointsGraphSeries;
|
||||||
import com.squareup.otto.Subscribe;
|
import com.squareup.otto.Subscribe;
|
||||||
|
|
||||||
|
@ -23,6 +25,7 @@ import java.util.Calendar;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import info.nightscout.androidaps.Constants;
|
||||||
import info.nightscout.androidaps.MainApp;
|
import info.nightscout.androidaps.MainApp;
|
||||||
import info.nightscout.androidaps.R;
|
import info.nightscout.androidaps.R;
|
||||||
import info.nightscout.androidaps.db.BgReading;
|
import info.nightscout.androidaps.db.BgReading;
|
||||||
|
@ -86,15 +89,36 @@ public class OverviewFragment extends Fragment implements PluginBase {
|
||||||
if (profile != null && bgReading != null && bg != null) {
|
if (profile != null && bgReading != null && bg != null) {
|
||||||
bg.setText(bgReading.valueToUnitsToString(profile.getUnits()));
|
bg.setText(bgReading.valueToUnitsToString(profile.getUnits()));
|
||||||
BgReading.units = profile.getUnits();
|
BgReading.units = profile.getUnits();
|
||||||
}
|
} else
|
||||||
|
return;
|
||||||
|
|
||||||
// Skip if not initialized yet
|
// Skip if not initialized yet
|
||||||
if (bgGraph == null)
|
if (bgGraph == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
int hoursToFetch = 6;
|
// allign to hours
|
||||||
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
calendar.setTimeInMillis(new Date().getTime());
|
||||||
|
calendar.set(Calendar.SECOND, 0);
|
||||||
|
calendar.set(Calendar.MINUTE, 0);
|
||||||
|
calendar.add(Calendar.HOUR, 1);
|
||||||
|
|
||||||
List<BgReading> bgReadingsArray = MainApp.getDbHelper().getHoursOfBg(hoursToFetch);
|
int hoursToFetch = 6;
|
||||||
|
long toTime = calendar.getTimeInMillis();
|
||||||
|
long fromTime = toTime - hoursToFetch * 60 * 60 * 1000l;
|
||||||
|
|
||||||
|
Double lowLine = 80d; // TODO: make this customisable
|
||||||
|
Double highLine = 180d;
|
||||||
|
Double maxY = 400d; // TODO: add some scale support
|
||||||
|
|
||||||
|
String units = profile.getUnits();
|
||||||
|
if (units.equals(Constants.MMOL)) {
|
||||||
|
lowLine = 4d;
|
||||||
|
highLine = 10d;
|
||||||
|
maxY = 20d;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<BgReading> bgReadingsArray = MainApp.getDbHelper().getDataFromTime(fromTime);
|
||||||
BgReading[] bgReadings = new BgReading[bgReadingsArray.size()];
|
BgReading[] bgReadings = new BgReading[bgReadingsArray.size()];
|
||||||
bgReadings = bgReadingsArray.toArray(bgReadings);
|
bgReadings = bgReadingsArray.toArray(bgReadings);
|
||||||
|
|
||||||
|
@ -107,24 +131,33 @@ public class OverviewFragment extends Fragment implements PluginBase {
|
||||||
series.setSize(5);
|
series.setSize(5);
|
||||||
series.setColor(Color.GREEN);
|
series.setColor(Color.GREEN);
|
||||||
|
|
||||||
// allign to hours
|
// targets
|
||||||
Calendar calendar = Calendar.getInstance();
|
LineGraphSeries<DataPoint> seriesLow = new LineGraphSeries<DataPoint>(new DataPoint[]{
|
||||||
calendar.setTimeInMillis(new Date().getTime());
|
new DataPoint(fromTime, lowLine),
|
||||||
calendar.set(Calendar.SECOND, 0);
|
new DataPoint(toTime, lowLine)
|
||||||
calendar.set(Calendar.MINUTE, 0);
|
});
|
||||||
calendar.add(Calendar.HOUR, 1);
|
seriesLow.setColor(Color.RED);
|
||||||
|
bgGraph.addSeries(seriesLow);
|
||||||
|
|
||||||
|
LineGraphSeries<DataPoint> seriesHigh = new LineGraphSeries<DataPoint>(new DataPoint[]{
|
||||||
|
new DataPoint(fromTime, highLine),
|
||||||
|
new DataPoint(toTime, highLine)
|
||||||
|
});
|
||||||
|
seriesHigh.setColor(Color.RED);
|
||||||
|
bgGraph.addSeries(seriesHigh);
|
||||||
|
|
||||||
|
|
||||||
// set manual x bounds to have nice steps
|
// set manual x bounds to have nice steps
|
||||||
bgGraph.getViewport().setMaxX(calendar.getTimeInMillis());
|
bgGraph.getViewport().setMaxX(toTime);
|
||||||
bgGraph.getViewport().setMinX(calendar.getTimeInMillis() - hoursToFetch * 60 * 60 * 1000l);
|
bgGraph.getViewport().setMinX(fromTime);
|
||||||
bgGraph.getViewport().setXAxisBoundsManual(true);
|
bgGraph.getViewport().setXAxisBoundsManual(true);
|
||||||
bgGraph.getGridLabelRenderer().setLabelFormatter(new TimeAsXAxisLabelFormatter(getActivity(),"HH"));
|
bgGraph.getGridLabelRenderer().setLabelFormatter(new TimeAsXAxisLabelFormatter(getActivity(), "HH"));
|
||||||
bgGraph.getGridLabelRenderer().setNumHorizontalLabels(7); // only 7 because of the space
|
bgGraph.getGridLabelRenderer().setNumHorizontalLabels(7); // only 7 because of the space
|
||||||
|
|
||||||
String test = new SimpleDateFormat("HH").format(calendar.getTimeInMillis());
|
String test = new SimpleDateFormat("HH").format(calendar.getTimeInMillis());
|
||||||
|
|
||||||
// set manual y bounds to have nice steps
|
// set manual y bounds to have nice steps
|
||||||
// TODO: MGDL support, some scale support
|
bgGraph.getViewport().setMaxY(maxY);
|
||||||
bgGraph.getViewport().setMaxY(20);
|
|
||||||
bgGraph.getViewport().setMinY(0);
|
bgGraph.getViewport().setMinY(0);
|
||||||
bgGraph.getViewport().setYAxisBoundsManual(true);
|
bgGraph.getViewport().setYAxisBoundsManual(true);
|
||||||
bgGraph.getGridLabelRenderer().setNumVerticalLabels(11);
|
bgGraph.getGridLabelRenderer().setNumVerticalLabels(11);
|
||||||
|
|
Loading…
Reference in a new issue