Skip to content

Commit

Permalink
#151 filtering parameter in history activity
Browse files Browse the repository at this point in the history
  • Loading branch information
thomcz committed Nov 19, 2017
1 parent 69c2cdb commit 1110946
Show file tree
Hide file tree
Showing 14 changed files with 274 additions and 68 deletions.
4 changes: 3 additions & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,8 @@ sonarqube {
}
/*dependencies {
compile 'com.android.support.constraint:constraint-layout:+'
}*/
}*/ dependencies {
implementation 'com.android.support.constraint:constraint-layout:+'
}


5 changes: 5 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,11 @@
android:name=".ui.view.activity.WebActivity"
android:label="@string/title_activity_web_view"
android:theme="@style/AppTheme"/>
<activity
android:name=".ui.view.activity.ParameterSelectionActivity"
android:label="@string/title_activity_parameter_selection"
android:theme="@style/AppTheme">
</activity>
</application>

</manifest>
12 changes: 2 additions & 10 deletions app/src/main/java/hrv/band/app/ui/presenter/HistoryViewModel.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@
import hrv.calc.parameter.HRVParameterEnum;
import lecho.lib.hellocharts.view.ColumnChartView;

import hrv.band.app.ui.view.util.DateUtil;

/**
* Copyright (c) 2017
* Created by Thomas Czogalik on 17.09.2017
Expand All @@ -32,14 +30,8 @@ public HistoryViewModel(Application application) {
appDatabase = AppDatabase.getDatabaseInstance(this.getApplication());
}

public LiveData<List<Measurement>> getTodayMeasurements(Date date) {
return appDatabase.measurementDao().loadData(DateUtil.getStartOfDay(date), DateUtil.getEndOfDay(date));
}
public LiveData<List<Measurement>> getWeekMeasurements(Date date) {
return appDatabase.measurementDao().loadData(DateUtil.getStartOfWeek(date), DateUtil.getEndOfWeek(date));
}
public LiveData<List<Measurement>> getMonthMeasurements(Date date) {
return appDatabase.measurementDao().loadData(DateUtil.getStartOfMonth(date), DateUtil.getEndOfMonth(date));
public LiveData<List<Measurement>> getMeasurements(Date startDate, Date endDate) {
return appDatabase.measurementDao().loadData(startDate, endDate);
}

public void drawChart(AbstractChartDrawStrategy chartStrategy, ColumnChartView chart,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@

import android.app.DatePickerDialog;
import android.arch.lifecycle.ViewModelProviders;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.annotation.Nullable;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
Expand All @@ -20,6 +23,7 @@
import java.util.List;

import hrv.band.app.R;
import hrv.band.app.model.HRVParameterSettings;
import hrv.band.app.model.Measurement;
import hrv.band.app.ui.presenter.HistoryViewModel;
import hrv.band.app.ui.view.activity.history.chartstrategy.ChartDrawDayStrategy;
Expand All @@ -42,12 +46,22 @@
public abstract class HistoryActivity extends AppCompatActivity
implements DatePickerDialog.OnDateSetListener {

public static final String PARAMETER_VALUE = "parameter_value";
public static final String DATE_VALUE = "date_value";
public static final String SELECTION_VALUE = "selection_value";
public static final int PARAMETER_VALUE_REQUEST = 1;
protected HistoryViewModel historyViewModel;

protected ColumnChartView chart;
protected TextView dateView;
protected TextView parameterTextView;
protected HistoryViewAdapter adapter;

protected HRVParameterEnum hrvParameter;
protected Date date;




@Override
protected void onCreate(Bundle savedInstanceState) {
Expand All @@ -67,7 +81,28 @@ protected void onCreate(Bundle savedInstanceState) {
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);

setMeasurementsObserver(new Date());
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
hrvParameter = new ArrayList<>(HRVParameterSettings.DefaultSettings.visibleHRVParameters).get(sharedPreferences.getInt(PARAMETER_VALUE, 0));

parameterTextView = findViewById(R.id.history_parameter);
parameterTextView.setText(hrvParameter.toString());
date = new Date();
setMeasurementsObserver(date);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Check which request we're responding to
if (requestCode == PARAMETER_VALUE_REQUEST && resultCode == RESULT_OK) {
long longDate = data.getLongExtra(DATE_VALUE, 0);
hrvParameter = new ArrayList<>(HRVParameterSettings.DefaultSettings.visibleHRVParameters).get(data.getIntExtra(SELECTION_VALUE, 0));
if (longDate != 0) {
date = new Date(longDate);
} else {
date = new Date();
}
setMeasurementsObserver(date);
}
}

public abstract void setMeasurementsObserver(Date date);
Expand All @@ -78,7 +113,8 @@ protected void onCreate(Bundle savedInstanceState) {
public void onDateSet(DatePicker view, int year, int month, int day) {
Calendar c = Calendar.getInstance();
c.set(year, month, day, 0, 0, 0);
setMeasurementsObserver(c.getTime());
date = c.getTime();
setMeasurementsObserver(date);
}

@Override
Expand All @@ -98,6 +134,11 @@ public boolean onOptionsItemSelected(MenuItem item) {
case R.id.menu_ic_calender:
new CalenderPickerFragment().show(getSupportFragmentManager(), "datePicker");
return true;
case R.id.menu_ic_value_settings:
Intent intent = new Intent(this, ParameterSelectionActivity.class);
intent.putExtra(DATE_VALUE, date.getTime());
startActivityForResult(intent, PARAMETER_VALUE_REQUEST);
return true;
default:
return super.onOptionsItemSelected(item);
}
Expand All @@ -118,33 +159,38 @@ public static class HistoryTodayActivity extends HistoryActivity {

@Override
public void setMeasurementsObserver(final Date date) {
historyViewModel.getTodayMeasurements(date).observe(this, new android.arch.lifecycle.Observer<List<Measurement>>() {
historyViewModel.getMeasurements(DateUtil.getStartOfDay(date), DateUtil.getEndOfDay(date)).observe(this, new android.arch.lifecycle.Observer<List<Measurement>>() {

@Override
public void onChanged(@Nullable List<Measurement> measurements) {
adapter.addItems(measurements);
historyViewModel.drawChart(new ChartDrawDayStrategy(), chart, measurements, HRVParameterEnum.BAEVSKY, getApplicationContext());
historyViewModel.drawChart(new ChartDrawDayStrategy(), chart, measurements, hrvParameter, getApplicationContext());
dateView.setText(formatDate(getApplicationContext(), date, "dd.MM.yyyy"));
parameterTextView.setText(hrvParameter.toString());
}
});
}



@Override
public boolean shouldDateBeDisplayedInList() {
return false;
}

}
public static class HistoryWeekActivity extends HistoryActivity {

@Override
public void setMeasurementsObserver(final Date date) {
historyViewModel.getWeekMeasurements(date).observe(this, new android.arch.lifecycle.Observer<List<Measurement>>() {
historyViewModel.getMeasurements(DateUtil.getStartOfWeek(date), DateUtil.getEndOfWeek(date)).observe(this, new android.arch.lifecycle.Observer<List<Measurement>>() {
@Override
public void onChanged(@Nullable List<Measurement> measurements) {
adapter.addItems(measurements);
historyViewModel.drawChart(new ChartDrawWeekStrategy(), chart, measurements, HRVParameterEnum.BAEVSKY, getApplicationContext());
historyViewModel.drawChart(new ChartDrawWeekStrategy(), chart, measurements, hrvParameter, getApplicationContext());
Date startOfWeek = DateUtil.getStartOfWeek(date);
Date endOfWeek = DateUtil.getEndOfWeek(date);
dateView.setText(DateUtil.formatDate(getApplicationContext(), startOfWeek, "dd.MM") + " - " + DateUtil.formatDate(getApplicationContext(), endOfWeek, "dd.MM.yyyy"));
dateView.setText(String.format("%s - %s", DateUtil.formatDate(getApplicationContext(), startOfWeek, "dd.MM"), DateUtil.formatDate(getApplicationContext(), endOfWeek, "dd.MM.yyyy")));
parameterTextView.setText(hrvParameter.toString());
}
});
}
Expand All @@ -154,15 +200,15 @@ public boolean shouldDateBeDisplayedInList() {
}
}
public static class HistoryMonthActivity extends HistoryActivity {

@Override
public void setMeasurementsObserver(final Date date) {
historyViewModel.getMonthMeasurements(date).observe(this, new android.arch.lifecycle.Observer<List<Measurement>>() {
historyViewModel.getMeasurements(DateUtil.getStartOfMonth(date), DateUtil.getEndOfMonth(date)).observe(this, new android.arch.lifecycle.Observer<List<Measurement>>() {
@Override
public void onChanged(@Nullable List<Measurement> measurements) {
adapter.addItems(measurements);
historyViewModel.drawChart(new ChartDrawMonthStrategy(date), chart, measurements, HRVParameterEnum.BAEVSKY, getApplicationContext());
historyViewModel.drawChart(new ChartDrawMonthStrategy(date), chart, measurements, hrvParameter, getApplicationContext());
dateView.setText(DateUtil.formatDate(getApplicationContext(), date, "MM.yyyy"));
parameterTextView.setText(hrvParameter.toString());
}
});
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
package hrv.band.app.ui.view.activity;

import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;

import hrv.band.app.R;
import hrv.band.app.ui.view.adapter.ParameterValueAdapter;

import static hrv.band.app.ui.view.activity.HistoryActivity.DATE_VALUE;
import static hrv.band.app.ui.view.activity.HistoryActivity.PARAMETER_VALUE;
import static hrv.band.app.ui.view.activity.HistoryActivity.SELECTION_VALUE;

public class ParameterSelectionActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_parameter_selection);
setupToolbar();

final long longDate = getIntent().getLongExtra(DATE_VALUE, 0);
ListView listView = findViewById(R.id.parameter_values);
listView.setAdapter(new ParameterValueAdapter(this));
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
setHRVParameterValue(view, i);
setActivityResult(i);
finish();
}

private void setActivityResult(int i) {
Intent intent = new Intent();
intent.putExtra(DATE_VALUE, longDate);
intent.putExtra(SELECTION_VALUE, i);
setResult(RESULT_OK, intent);
}

private void setHRVParameterValue(View view, int i) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(view.getContext());
SharedPreferences.Editor prefsEditor = sharedPreferences.edit();
prefsEditor.putInt(PARAMETER_VALUE, i);
prefsEditor.apply();
}
});

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_hrv_parameters, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}

@Override
public void onBackPressed() {
finish();
}
private void setupToolbar() {
Toolbar toolbar = findViewById(R.id.toolbar);

setSupportActionBar(toolbar);
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayShowHomeEnabled(true);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@
* Copyright (c) 2017
* Created by Thomas Czogalik on 19.01.2017
* <p>
* Adapter for displaying available HRV values in the {@link OverviewFragment}.
* Adapter for displaying available HRV values in the {@link hrv.band.app.ui.view.activity.ParameterSelectionActivity}.
*/
public class OverviewValueAdapter extends BaseAdapter {
public class ParameterValueAdapter extends BaseAdapter {

/**
* The context of the activity holding this adapter.
Expand All @@ -29,7 +29,7 @@ public class OverviewValueAdapter extends BaseAdapter {

private List<HRVParameterEnum> parameterEnumList;

public OverviewValueAdapter(Context context) {
public ParameterValueAdapter(Context context) {
this.context = context;
parameterEnumList = new ArrayList<>(HRVParameterSettings.DefaultSettings.visibleHRVParameters);
}
Expand All @@ -42,13 +42,13 @@ public View getView(int position, View convertView, ViewGroup parent) {
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.overview_value_item, parent, false);
holder = new ViewHolder();
holder.firstLine = (TextView) convertView.findViewById(R.id.firstLine);
holder.parameterText = convertView.findViewById(R.id.parameter_value_text);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}

holder.firstLine.setText(parameterEnumList.get(position).toString());
holder.parameterText.setText(parameterEnumList.get(position).toString());
return convertView;
}

Expand All @@ -71,6 +71,6 @@ public long getItemId(int position) {
* The ViewHolder of this adapter.
*/
private static class ViewHolder {
private TextView firstLine;
private TextView parameterText;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import hrv.band.app.ui.view.activity.history.chartstrategy.ChartDrawDayStrategy;
import hrv.band.app.ui.view.activity.history.chartstrategy.ChartDrawMonthStrategy;
import hrv.band.app.ui.view.activity.history.chartstrategy.ChartDrawWeekStrategy;
import hrv.band.app.ui.view.util.DateUtil;
import hrv.calc.parameter.HRVParameterEnum;
import lecho.lib.hellocharts.view.ColumnChartView;

Expand Down Expand Up @@ -68,19 +69,19 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container,
}

private void getMeasurements(final Date date) {
historyViewModel.getTodayMeasurements(date).observe(getActivity(), new android.arch.lifecycle.Observer<List<Measurement>>() {
historyViewModel.getMeasurements(DateUtil.getStartOfDay(date), DateUtil.getEndOfDay(date)).observe(getActivity(), new android.arch.lifecycle.Observer<List<Measurement>>() {
@Override
public void onChanged(@Nullable List<Measurement> measurements) {
historyViewModel.drawChart(new ChartDrawDayStrategy(), todayChart, measurements, HRVParameterEnum.BAEVSKY ,getActivity());
}
});
historyViewModel.getWeekMeasurements(date).observe(getActivity(), new android.arch.lifecycle.Observer<List<Measurement>>() {
historyViewModel.getMeasurements(DateUtil.getStartOfWeek(date), DateUtil.getEndOfWeek(date)).observe(getActivity(), new android.arch.lifecycle.Observer<List<Measurement>>() {
@Override
public void onChanged(@Nullable List<Measurement> measurements) {
historyViewModel.drawChart(new ChartDrawWeekStrategy(), weekChart, measurements, HRVParameterEnum.BAEVSKY ,getActivity());
}
});
historyViewModel.getMonthMeasurements(date).observe(getActivity(), new android.arch.lifecycle.Observer<List<Measurement>>() {
historyViewModel.getMeasurements(DateUtil.getStartOfMonth(date), DateUtil.getStartOfMonth(date)).observe(getActivity(), new android.arch.lifecycle.Observer<List<Measurement>>() {
@Override
public void onChanged(@Nullable List<Measurement> measurements) {
historyViewModel.drawChart(new ChartDrawMonthStrategy(date), monthChart, measurements, HRVParameterEnum.BAEVSKY ,getActivity());
Expand Down
Loading

0 comments on commit 1110946

Please sign in to comment.