1
0
mirror of https://github.com/oliexdev/openScale.git synced 2025-08-23 00:33:09 +02:00

set the graph viewport dynamically

This commit is contained in:
OliE
2015-01-02 11:51:01 +01:00
parent dcd0e9a491
commit 36ac100e01
3 changed files with 56 additions and 3 deletions

View File

@@ -159,6 +159,10 @@ public class OpenScale {
return scaleDB.getAllDBEntriesOfMonth(year, month);
}
public float getMaxValueOfDBEntries(int year, int month) {
return scaleDB.getMaxValueOfDBEntries(year, month);
}
public void startBluetoothServer(String deviceName) {
Log.d("OpenScale", "Bluetooth Server started! I am searching for device ...");

View File

@@ -146,6 +146,48 @@ public class ScaleDatabase extends SQLiteOpenHelper {
return numOfMonth;
}
public float getMaxValueOfDBEntries(int year, int month) {
SQLiteDatabase db = getReadableDatabase();
Calendar start_cal = Calendar.getInstance();
Calendar end_cal = Calendar.getInstance();
start_cal.set(year, month, 1, 0, 0, 0);
end_cal.set(year, month, 1, 0, 0, 0);
end_cal.add(Calendar.MONTH, 1);
String[] projection = {
"MAX(" + COLUMN_NAME_WEIGHT + ")",
"MAX(" + COLUMN_NAME_FAT + ")",
"MAX(" + COLUMN_NAME_WATER + ")",
"MAX(" + COLUMN_NAME_MUSCLE + ")"
};
Cursor cursorScaleDB = db.query(
TABLE_NAME, // The table to query
projection, // The columns to return
COLUMN_NAME_DATE_TIME + " >= ? AND " + COLUMN_NAME_DATE_TIME + " < ? ", // The columns for the WHERE clause
new String[]{formatDateTime.format(start_cal.getTime()), formatDateTime.format(end_cal.getTime())}, // The values for the WHERE clause
null, // don't group the rows
null, // don't filter by row groups
null // The sort order
);
cursorScaleDB.moveToFirst();
float maxValue = -1;
for (int i=0; i<4; i++)
{
if (maxValue < cursorScaleDB.getFloat(i))
{
maxValue = cursorScaleDB.getFloat(i);
}
}
return maxValue;
}
public ArrayList<ScaleData> getAllDBEntriesOfMonth(int year, int month) {
SQLiteDatabase db = getReadableDatabase();

View File

@@ -117,15 +117,16 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener {
private void generateLineData(Calendar cal)
{
scaleDBEntries = openScale.getAllDataOfMonth(yearCal.get(Calendar.YEAR), cal.get(Calendar.MONTH));
float maxValue = openScale.getMaxValueOfDBEntries(yearCal.get(Calendar.YEAR), cal.get(Calendar.MONTH));
SimpleDateFormat day_date = new SimpleDateFormat("dd", Locale.getDefault());
cal.set(Calendar.DAY_OF_MONTH, 1);
int max_days = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
int maxDays = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
List<AxisValue> axisValues = new ArrayList<AxisValue>();
for (int i=0; i<max_days; i++) {
for (int i=0; i<maxDays; i++) {
String day_name = day_date.format(cal.getTime());
axisValues.add(new AxisValue(i, day_name.toCharArray()));
@@ -212,7 +213,13 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener {
chartTop.setLineChartData(lineData);
chartTop.setViewportCalculationEnabled(false);
Viewport v = new Viewport(0, 110, max_days, 0);
if (maxValue == 0.0) {
maxValue = 100;
} else {
maxValue += 20;
}
Viewport v = new Viewport(0, (int)maxValue, maxDays, 0);
chartTop.setMaximumViewport(v);
chartTop.setCurrentViewport(v, true);