mirror of
https://github.com/oliexdev/openScale.git
synced 2025-08-15 05:04:22 +02:00
show or hide a yearly diagram
This commit is contained in:
@@ -360,6 +360,13 @@ public class OpenScale {
|
|||||||
return scaleDB.getScaleDataOfMonth(selectedUserId, year, month);
|
return scaleDB.getScaleDataOfMonth(selectedUserId, year, month);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ArrayList<ScaleData> getScaleDataOfYear(int year) {
|
||||||
|
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||||
|
int selectedUserId = prefs.getInt("selectedUserId", -1);
|
||||||
|
|
||||||
|
return scaleDB.getScaleDataOfYear(selectedUserId, year);
|
||||||
|
}
|
||||||
|
|
||||||
public void startSearchingForBluetooth(int btScales, String deviceName, Handler callbackBtHandler) {
|
public void startSearchingForBluetooth(int btScales, String deviceName, Handler callbackBtHandler) {
|
||||||
Log.d("OpenScale", "Bluetooth Server started! I am searching for device ...");
|
Log.d("OpenScale", "Bluetooth Server started! I am searching for device ...");
|
||||||
|
|
||||||
|
@@ -267,6 +267,40 @@ public class ScaleDatabase extends SQLiteOpenHelper {
|
|||||||
return scaleDataList;
|
return scaleDataList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ArrayList<ScaleData> getScaleDataOfYear(int userId, int year) {
|
||||||
|
ArrayList<ScaleData> scaleDataList = new ArrayList<ScaleData>();
|
||||||
|
|
||||||
|
String sortOrder = COLUMN_NAME_DATE_TIME + " DESC";
|
||||||
|
|
||||||
|
Calendar start_cal = Calendar.getInstance();
|
||||||
|
Calendar end_cal = Calendar.getInstance();
|
||||||
|
|
||||||
|
start_cal.set(year, Calendar.JANUARY, 1, 0, 0, 0);
|
||||||
|
end_cal.set(year, Calendar.DECEMBER, 1, 0, 0, 0);
|
||||||
|
|
||||||
|
Cursor cursorScaleDB = dbRead.query(
|
||||||
|
TABLE_NAME, // The table to query
|
||||||
|
projection, // The columns to return
|
||||||
|
COLUMN_NAME_DATE_TIME + " >= ? AND " + COLUMN_NAME_DATE_TIME + " < ? AND " + COLUMN_NAME_USER_ID + "=? AND " + COLUMN_NAME_ENABLE + "=1", // The columns for the WHERE clause
|
||||||
|
new String[]{formatDateTime.format(start_cal.getTime()), formatDateTime.format(end_cal.getTime()), Integer.toString(userId)}, // The values for the WHERE clause
|
||||||
|
null, // don't group the rows
|
||||||
|
null, // don't filter by row groups
|
||||||
|
sortOrder // The sort order
|
||||||
|
);
|
||||||
|
|
||||||
|
cursorScaleDB.moveToFirst();
|
||||||
|
|
||||||
|
while (!cursorScaleDB.isAfterLast()) {
|
||||||
|
scaleDataList.add(readAtCursor(cursorScaleDB));
|
||||||
|
|
||||||
|
cursorScaleDB.moveToNext();
|
||||||
|
}
|
||||||
|
|
||||||
|
cursorScaleDB.close();
|
||||||
|
|
||||||
|
return scaleDataList;
|
||||||
|
}
|
||||||
|
|
||||||
public ArrayList<ScaleData> getScaleDataList(int userId) {
|
public ArrayList<ScaleData> getScaleDataList(int userId) {
|
||||||
ArrayList<ScaleData> scaleDataList = new ArrayList<ScaleData>();
|
ArrayList<ScaleData> scaleDataList = new ArrayList<ScaleData>();
|
||||||
|
|
||||||
|
@@ -31,6 +31,7 @@ import android.view.LayoutInflater;
|
|||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.health.openscale.R;
|
import com.health.openscale.R;
|
||||||
@@ -73,6 +74,7 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener {
|
|||||||
private FloatingActionButton diagramMuscle;
|
private FloatingActionButton diagramMuscle;
|
||||||
private FloatingActionButton diagramWaist;
|
private FloatingActionButton diagramWaist;
|
||||||
private FloatingActionButton diagramHip;
|
private FloatingActionButton diagramHip;
|
||||||
|
private FloatingActionButton enableMonth;
|
||||||
private SharedPreferences prefs;
|
private SharedPreferences prefs;
|
||||||
|
|
||||||
private OpenScale openScale;
|
private OpenScale openScale;
|
||||||
@@ -109,6 +111,8 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener {
|
|||||||
diagramWaist = (FloatingActionButton) graphView.findViewById(R.id.diagramWaist);
|
diagramWaist = (FloatingActionButton) graphView.findViewById(R.id.diagramWaist);
|
||||||
diagramHip = (FloatingActionButton) graphView.findViewById(R.id.diagramHip);
|
diagramHip = (FloatingActionButton) graphView.findViewById(R.id.diagramHip);
|
||||||
|
|
||||||
|
enableMonth = (FloatingActionButton) graphView.findViewById(R.id.enableMonth);
|
||||||
|
|
||||||
diagramWeight.setOnClickListener(new onClickListenerDiagramLines());
|
diagramWeight.setOnClickListener(new onClickListenerDiagramLines());
|
||||||
diagramFat.setOnClickListener(new onClickListenerDiagramLines());
|
diagramFat.setOnClickListener(new onClickListenerDiagramLines());
|
||||||
diagramWater.setOnClickListener(new onClickListenerDiagramLines());
|
diagramWater.setOnClickListener(new onClickListenerDiagramLines());
|
||||||
@@ -116,6 +120,8 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener {
|
|||||||
diagramWaist.setOnClickListener(new onClickListenerDiagramLines());
|
diagramWaist.setOnClickListener(new onClickListenerDiagramLines());
|
||||||
diagramHip.setOnClickListener(new onClickListenerDiagramLines());
|
diagramHip.setOnClickListener(new onClickListenerDiagramLines());
|
||||||
|
|
||||||
|
enableMonth.setOnClickListener(new onClickListenerDiagramLines());
|
||||||
|
|
||||||
prefs = PreferenceManager.getDefaultSharedPreferences(graphView.getContext());
|
prefs = PreferenceManager.getDefaultSharedPreferences(graphView.getContext());
|
||||||
|
|
||||||
if(!prefs.getBoolean("weightEnable", true)) {
|
if(!prefs.getBoolean("weightEnable", true)) {
|
||||||
@@ -167,19 +173,21 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener {
|
|||||||
@Override
|
@Override
|
||||||
public void updateOnView(ArrayList<ScaleData> scaleDataList)
|
public void updateOnView(ArrayList<ScaleData> scaleDataList)
|
||||||
{
|
{
|
||||||
generateColumnData();
|
generateGraphs();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void generateLineData(Calendar calMonth)
|
private void generateLineData(int field)
|
||||||
{
|
{
|
||||||
scaleDataList = openScale.getScaleDataOfMonth(calYears.get(Calendar.YEAR), calMonth.get(Calendar.MONTH));
|
SimpleDateFormat day_date = new SimpleDateFormat("D", Locale.getDefault());
|
||||||
|
|
||||||
SimpleDateFormat day_date = new SimpleDateFormat("dd", Locale.getDefault());
|
if (field == Calendar.DAY_OF_MONTH) {
|
||||||
|
day_date = new SimpleDateFormat("dd", Locale.getDefault());
|
||||||
|
}
|
||||||
|
|
||||||
Calendar calDays = (Calendar)calMonth.clone();
|
Calendar calDays = (Calendar)calLastSelected.clone();
|
||||||
|
|
||||||
calDays.set(Calendar.DAY_OF_MONTH, 1);
|
calDays.set(field, 1);
|
||||||
int maxDays = calDays.getActualMaximum(Calendar.DAY_OF_MONTH);
|
int maxDays = calDays.getActualMaximum(field);
|
||||||
|
|
||||||
List<AxisValue> axisValues = new ArrayList<AxisValue>();
|
List<AxisValue> axisValues = new ArrayList<AxisValue>();
|
||||||
|
|
||||||
@@ -188,7 +196,7 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener {
|
|||||||
|
|
||||||
axisValues.add(new AxisValue(i, day_name.toCharArray()));
|
axisValues.add(new AxisValue(i, day_name.toCharArray()));
|
||||||
|
|
||||||
calDays.add(Calendar.DAY_OF_MONTH, 1);
|
calDays.add(field, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<PointValue> valuesWeight = new ArrayList<PointValue>();
|
List<PointValue> valuesWeight = new ArrayList<PointValue>();
|
||||||
@@ -205,12 +213,12 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener {
|
|||||||
{
|
{
|
||||||
calDB.setTime(scaleEntry.date_time);
|
calDB.setTime(scaleEntry.date_time);
|
||||||
|
|
||||||
valuesWeight.add(new PointValue(calDB.get(Calendar.DAY_OF_MONTH)-1, scaleEntry.weight));
|
valuesWeight.add(new PointValue(calDB.get(field)-1, scaleEntry.weight));
|
||||||
valuesFat.add(new PointValue(calDB.get(Calendar.DAY_OF_MONTH)-1, scaleEntry.fat));
|
valuesFat.add(new PointValue(calDB.get(field)-1, scaleEntry.fat));
|
||||||
valuesWater.add(new PointValue(calDB.get(Calendar.DAY_OF_MONTH)-1, scaleEntry.water));
|
valuesWater.add(new PointValue(calDB.get(field)-1, scaleEntry.water));
|
||||||
valuesMuscle.add(new PointValue(calDB.get(Calendar.DAY_OF_MONTH)-1, scaleEntry.muscle));
|
valuesMuscle.add(new PointValue(calDB.get(field)-1, scaleEntry.muscle));
|
||||||
valuesWaist.add(new PointValue(calDB.get(Calendar.DAY_OF_MONTH)-1, scaleEntry.waist));
|
valuesWaist.add(new PointValue(calDB.get(field)-1, scaleEntry.waist));
|
||||||
valuesHip.add(new PointValue(calDB.get(Calendar.DAY_OF_MONTH)-1, scaleEntry.hip));
|
valuesHip.add(new PointValue(calDB.get(field)-1, scaleEntry.hip));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -289,6 +297,12 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener {
|
|||||||
diagramHip.setBackgroundTintList(ColorStateList.valueOf(Color.parseColor("#d3d3d3")));
|
diagramHip.setBackgroundTintList(ColorStateList.valueOf(Color.parseColor("#d3d3d3")));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(prefs.getBoolean(String.valueOf(enableMonth.getId()), true)) {
|
||||||
|
enableMonth.setBackgroundTintList(ColorStateList.valueOf(ChartUtils.COLOR_BLUE));
|
||||||
|
} else {
|
||||||
|
enableMonth.setBackgroundTintList(ColorStateList.valueOf(Color.parseColor("#d3d3d3")));
|
||||||
|
}
|
||||||
|
|
||||||
LineChartData lineData = new LineChartData(lines);
|
LineChartData lineData = new LineChartData(lines);
|
||||||
lineData.setAxisXBottom(new Axis(axisValues).
|
lineData.setAxisXBottom(new Axis(axisValues).
|
||||||
setHasLines(true).
|
setHasLines(true).
|
||||||
@@ -301,11 +315,8 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener {
|
|||||||
setTextColor(Color.BLACK)
|
setTextColor(Color.BLACK)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
chartTop.setLineChartData(lineData);
|
chartTop.setLineChartData(lineData);
|
||||||
|
defaultTopViewport = new Viewport(0, chartTop.getCurrentViewport().top+4, axisValues.size()-1, chartTop.getCurrentViewport().bottom-4);
|
||||||
defaultTopViewport = new Viewport(0, chartTop.getCurrentViewport().top+4, maxDays-1, chartTop.getCurrentViewport().bottom-4);
|
|
||||||
|
|
||||||
chartTop.setMaximumViewport(defaultTopViewport);
|
chartTop.setMaximumViewport(defaultTopViewport);
|
||||||
chartTop.setCurrentViewport(defaultTopViewport);
|
chartTop.setCurrentViewport(defaultTopViewport);
|
||||||
@@ -343,9 +354,27 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener {
|
|||||||
chartBottom.setValueSelectionEnabled(true);
|
chartBottom.setValueSelectionEnabled(true);
|
||||||
chartBottom.setZoomEnabled(false);
|
chartBottom.setZoomEnabled(false);
|
||||||
chartBottom.selectValue(new SelectedValue(calLastSelected.get(Calendar.MONTH), 0, SelectedValue.SelectedValueType.COLUMN));
|
chartBottom.selectValue(new SelectedValue(calLastSelected.get(Calendar.MONTH), 0, SelectedValue.SelectedValueType.COLUMN));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void generateGraphs() {
|
||||||
|
// show monthly diagram
|
||||||
|
if (prefs.getBoolean(String.valueOf(enableMonth.getId()), true)) {
|
||||||
|
chartBottom.setVisibility(View.VISIBLE);
|
||||||
|
chartTop.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 0, 0.7f));
|
||||||
|
|
||||||
generateLineData(calLastSelected);
|
generateColumnData();
|
||||||
|
scaleDataList = openScale.getScaleDataOfMonth(calYears.get(Calendar.YEAR), calLastSelected.get(Calendar.MONTH));
|
||||||
|
|
||||||
|
generateLineData(Calendar.DAY_OF_MONTH);
|
||||||
|
// show only yearly diagram and hide monthly diagram
|
||||||
|
} else {
|
||||||
|
chartBottom.setVisibility(View.GONE);
|
||||||
|
chartTop.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
|
||||||
|
|
||||||
|
scaleDataList = openScale.getScaleDataOfYear(calYears.get(Calendar.YEAR));
|
||||||
|
|
||||||
|
generateLineData(Calendar.DAY_OF_YEAR);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class ChartBottomValueTouchListener implements ColumnChartOnValueSelectListener {
|
private class ChartBottomValueTouchListener implements ColumnChartOnValueSelectListener {
|
||||||
@@ -357,7 +386,8 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener {
|
|||||||
|
|
||||||
calLastSelected = cal;
|
calLastSelected = cal;
|
||||||
|
|
||||||
generateLineData(cal);
|
scaleDataList = openScale.getScaleDataOfMonth(calYears.get(Calendar.YEAR), calLastSelected.get(Calendar.MONTH));
|
||||||
|
generateLineData(Calendar.DAY_OF_MONTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -419,7 +449,7 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener {
|
|||||||
prefs.edit().putBoolean(String.valueOf(actionButton.getId()), true).commit();
|
prefs.edit().putBoolean(String.valueOf(actionButton.getId()), true).commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
generateColumnData();
|
generateGraphs();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,11 @@
|
|||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<android.support.design.widget.CoordinatorLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
@@ -139,3 +144,17 @@
|
|||||||
android:layout_weight="0.3" />
|
android:layout_weight="0.3" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<android.support.design.widget.FloatingActionButton
|
||||||
|
android:id="@+id/enableMonth"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_margin="16dp"
|
||||||
|
android:clickable="true"
|
||||||
|
android:src="@drawable/lastmonth"
|
||||||
|
app:backgroundTint="#33B5E5"
|
||||||
|
app:rippleColor="#33B5E5"
|
||||||
|
app:layout_anchor="@id/chart_top"
|
||||||
|
app:layout_anchorGravity="top|right|end" />
|
||||||
|
|
||||||
|
</android.support.design.widget.CoordinatorLayout>
|
||||||
|
Reference in New Issue
Block a user