mirror of
https://github.com/oliexdev/openScale.git
synced 2025-08-13 12:14:19 +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);
|
||||
}
|
||||
|
||||
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) {
|
||||
Log.d("OpenScale", "Bluetooth Server started! I am searching for device ...");
|
||||
|
||||
|
@@ -267,6 +267,40 @@ public class ScaleDatabase extends SQLiteOpenHelper {
|
||||
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) {
|
||||
ArrayList<ScaleData> scaleDataList = new ArrayList<ScaleData>();
|
||||
|
||||
|
@@ -31,6 +31,7 @@ import android.view.LayoutInflater;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.health.openscale.R;
|
||||
@@ -73,6 +74,7 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener {
|
||||
private FloatingActionButton diagramMuscle;
|
||||
private FloatingActionButton diagramWaist;
|
||||
private FloatingActionButton diagramHip;
|
||||
private FloatingActionButton enableMonth;
|
||||
private SharedPreferences prefs;
|
||||
|
||||
private OpenScale openScale;
|
||||
@@ -109,6 +111,8 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener {
|
||||
diagramWaist = (FloatingActionButton) graphView.findViewById(R.id.diagramWaist);
|
||||
diagramHip = (FloatingActionButton) graphView.findViewById(R.id.diagramHip);
|
||||
|
||||
enableMonth = (FloatingActionButton) graphView.findViewById(R.id.enableMonth);
|
||||
|
||||
diagramWeight.setOnClickListener(new onClickListenerDiagramLines());
|
||||
diagramFat.setOnClickListener(new onClickListenerDiagramLines());
|
||||
diagramWater.setOnClickListener(new onClickListenerDiagramLines());
|
||||
@@ -116,6 +120,8 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener {
|
||||
diagramWaist.setOnClickListener(new onClickListenerDiagramLines());
|
||||
diagramHip.setOnClickListener(new onClickListenerDiagramLines());
|
||||
|
||||
enableMonth.setOnClickListener(new onClickListenerDiagramLines());
|
||||
|
||||
prefs = PreferenceManager.getDefaultSharedPreferences(graphView.getContext());
|
||||
|
||||
if(!prefs.getBoolean("weightEnable", true)) {
|
||||
@@ -167,19 +173,21 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener {
|
||||
@Override
|
||||
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);
|
||||
int maxDays = calDays.getActualMaximum(Calendar.DAY_OF_MONTH);
|
||||
calDays.set(field, 1);
|
||||
int maxDays = calDays.getActualMaximum(field);
|
||||
|
||||
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()));
|
||||
|
||||
calDays.add(Calendar.DAY_OF_MONTH, 1);
|
||||
calDays.add(field, 1);
|
||||
}
|
||||
|
||||
List<PointValue> valuesWeight = new ArrayList<PointValue>();
|
||||
@@ -205,12 +213,12 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener {
|
||||
{
|
||||
calDB.setTime(scaleEntry.date_time);
|
||||
|
||||
valuesWeight.add(new PointValue(calDB.get(Calendar.DAY_OF_MONTH)-1, scaleEntry.weight));
|
||||
valuesFat.add(new PointValue(calDB.get(Calendar.DAY_OF_MONTH)-1, scaleEntry.fat));
|
||||
valuesWater.add(new PointValue(calDB.get(Calendar.DAY_OF_MONTH)-1, scaleEntry.water));
|
||||
valuesMuscle.add(new PointValue(calDB.get(Calendar.DAY_OF_MONTH)-1, scaleEntry.muscle));
|
||||
valuesWaist.add(new PointValue(calDB.get(Calendar.DAY_OF_MONTH)-1, scaleEntry.waist));
|
||||
valuesHip.add(new PointValue(calDB.get(Calendar.DAY_OF_MONTH)-1, scaleEntry.hip));
|
||||
valuesWeight.add(new PointValue(calDB.get(field)-1, scaleEntry.weight));
|
||||
valuesFat.add(new PointValue(calDB.get(field)-1, scaleEntry.fat));
|
||||
valuesWater.add(new PointValue(calDB.get(field)-1, scaleEntry.water));
|
||||
valuesMuscle.add(new PointValue(calDB.get(field)-1, scaleEntry.muscle));
|
||||
valuesWaist.add(new PointValue(calDB.get(field)-1, scaleEntry.waist));
|
||||
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")));
|
||||
}
|
||||
|
||||
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);
|
||||
lineData.setAxisXBottom(new Axis(axisValues).
|
||||
setHasLines(true).
|
||||
@@ -301,11 +315,8 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener {
|
||||
setTextColor(Color.BLACK)
|
||||
);
|
||||
|
||||
|
||||
|
||||
chartTop.setLineChartData(lineData);
|
||||
|
||||
defaultTopViewport = new Viewport(0, chartTop.getCurrentViewport().top+4, maxDays-1, chartTop.getCurrentViewport().bottom-4);
|
||||
defaultTopViewport = new Viewport(0, chartTop.getCurrentViewport().top+4, axisValues.size()-1, chartTop.getCurrentViewport().bottom-4);
|
||||
|
||||
chartTop.setMaximumViewport(defaultTopViewport);
|
||||
chartTop.setCurrentViewport(defaultTopViewport);
|
||||
@@ -343,9 +354,27 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener {
|
||||
chartBottom.setValueSelectionEnabled(true);
|
||||
chartBottom.setZoomEnabled(false);
|
||||
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 {
|
||||
@@ -357,7 +386,8 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener {
|
||||
|
||||
calLastSelected = cal;
|
||||
|
||||
generateLineData(cal);
|
||||
scaleDataList = openScale.getScaleDataOfMonth(calYears.get(Calendar.YEAR), calLastSelected.get(Calendar.MONTH));
|
||||
generateLineData(Calendar.DAY_OF_MONTH);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -419,7 +449,7 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener {
|
||||
prefs.edit().putBoolean(String.valueOf(actionButton.getId()), true).commit();
|
||||
}
|
||||
|
||||
generateColumnData();
|
||||
generateGraphs();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,10 +1,15 @@
|
||||
<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:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:weightSum="1">
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:weightSum="1">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
@@ -138,4 +143,18 @@
|
||||
android:layout_marginTop="10dp"
|
||||
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