Skip to content

Commit

Permalink
ShowHabit: Refactor score chart
Browse files Browse the repository at this point in the history
  • Loading branch information
iSoron committed Jun 22, 2016
1 parent a060cbe commit a11ad6e
Show file tree
Hide file tree
Showing 25 changed files with 378 additions and 291 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@

@RunWith(AndroidJUnit4.class)
@SmallTest
public class HabitFrequencyViewTest extends BaseViewTest
public class FrequencyChartTest extends BaseViewTest
{
private HabitFrequencyView view;
private FrequencyChart view;

@Before
public void setUp()
Expand All @@ -42,7 +42,7 @@ public void setUp()
fixtures.purgeHabits(habitList);
Habit habit = fixtures.createLongHabit();

view = new HabitFrequencyView(targetContext);
view = new FrequencyChart(targetContext);
view.setHabit(habit);
refreshData(view);
measureView(dpToPixels(300), dpToPixels(100), view);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public class HabitHistoryViewTest extends BaseViewTest
{
private Habit habit;

private HabitHistoryView view;
private HistoryView view;

@Before
public void setUp()
Expand All @@ -50,7 +50,7 @@ public void setUp()
fixtures.purgeHabits(habitList);
habit = fixtures.createLongHabit();

view = new HabitHistoryView(targetContext);
view = new HistoryView(targetContext);
view.setHabit(habit);
measureView(dpToPixels(400), dpToPixels(200), view);
refreshData(view);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,18 +25,20 @@

import org.isoron.uhabits.*;
import org.isoron.uhabits.models.Habit;
import org.isoron.uhabits.utils.*;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(AndroidJUnit4.class)
@SmallTest
public class HabitScoreViewTest extends BaseViewTest
public class ScoreChartTest extends BaseViewTest
{
private Habit habit;

private HabitScoreView view;
private ScoreChart view;

@Override
@Before
public void setUp()
{
Expand All @@ -45,10 +47,10 @@ public void setUp()
fixtures.purgeHabits(habitList);
habit = fixtures.createLongHabit();

view = new HabitScoreView(targetContext);
view.setHabit(habit);
view = new ScoreChart(targetContext);
view.setScores(habit.getScores().getAll());
view.setPrimaryColor(ColorUtils.getColor(targetContext, habit.getColor()));
view.setBucketSize(7);
refreshData(view);
measureView(dpToPixels(300), dpToPixels(200), view);
}

Expand Down Expand Up @@ -79,8 +81,8 @@ public void testRender_withDifferentSize() throws Throwable
@Test
public void testRender_withMonthlyBucket() throws Throwable
{
view.setScores(habit.getScores().groupBy(DateUtils.TruncateField.MONTH));
view.setBucketSize(30);
view.refreshData();
view.invalidate();

assertRenders(view, "HabitScoreView/renderMonthly.png");
Expand All @@ -96,8 +98,8 @@ public void testRender_withTransparentBackground() throws Throwable
@Test
public void testRender_withYearlyBucket() throws Throwable
{
view.setScores(habit.getScores().groupBy(DateUtils.TruncateField.YEAR));
view.setBucketSize(365);
view.refreshData();
view.invalidate();

assertRenders(view, "HabitScoreView/renderYearly.png");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@

@RunWith(AndroidJUnit4.class)
@SmallTest
public class HabitStreakViewTest extends BaseViewTest
public class StreakChartTest extends BaseViewTest
{
private HabitStreakView view;
private StreakChart view;

@Override
@Before
Expand All @@ -43,7 +43,7 @@ public void setUp()
fixtures.purgeHabits(habitList);
Habit habit = fixtures.createLongHabit();

view = new HabitStreakView(targetContext);
view = new StreakChart(targetContext);
measureView(dpToPixels(300), dpToPixels(100), view);

view.setHabit(habit);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ public void invalidateNewerThan(long timestamp)
if (s.getTimestamp() >= timestamp) discard.add(s);

list.removeAll(discard);
getObservable().notifyListeners();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,8 @@ public void invalidateNewerThan(long timestamp)
.where("habit = ?", habit.getId())
.and("timestamp >= ?", timestamp)
.execute();

getObservable().notifyListeners();
}

@Nullable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
import org.isoron.uhabits.models.Habit;
import org.isoron.uhabits.models.HabitList;
import org.isoron.uhabits.tasks.BaseTask;
import org.isoron.uhabits.ui.habits.show.views.HabitHistoryView;
import org.isoron.uhabits.ui.habits.show.views.HistoryView;

import javax.inject.Inject;

Expand All @@ -43,7 +43,7 @@ public class HistoryEditorDialog extends AppCompatDialogFragment

private Listener listener;

HabitHistoryView historyView;
HistoryView historyView;

@Inject
HabitList habitList;
Expand All @@ -53,7 +53,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState)
{
Context context = getActivity();
HabitsApplication.getComponent().inject(this);
historyView = new HabitHistoryView(context, null);
historyView = new HistoryView(context, null);

if (savedInstanceState != null)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,11 @@
import android.os.*;
import android.support.v4.app.*;
import android.view.*;
import android.widget.*;

import org.isoron.uhabits.*;
import org.isoron.uhabits.models.*;
import org.isoron.uhabits.ui.habits.edit.*;
import org.isoron.uhabits.ui.habits.show.views.*;
import org.isoron.uhabits.utils.*;

import java.util.*;

Expand All @@ -39,44 +37,33 @@ public class ShowHabitFragment extends Fragment
{
Habit habit;

float todayScore;

float lastMonthScore;

float lastYearScore;

int activeColor;

int inactiveColor;

int previousScoreInterval;

private ShowHabitHelper helper;

protected ShowHabitActivity activity;

private List<HabitDataView> dataViews;

@BindView(R.id.sStrengthInterval)
Spinner sStrengthInterval;

@BindView(R.id.scoreView)
HabitScoreView habitScoreView;

@BindView(R.id.historyView)
HabitHistoryView habitHistoryView;
HistoryView historyView;

@BindView(R.id.punchcardView)
HabitFrequencyView habitFrequencyView;
FrequencyChart frequencyChart;

@BindView(R.id.streakChart)
StreakChart streakChart;

@BindView(R.id.streakView)
HabitStreakView habitStreakView;
@BindView(R.id.subtitleCard)
SubtitleCard subtitleCard;

@BindView(R.id.subtitle)
SubtitleCardView subtitleView;
@BindView(R.id.overviewCard)
OverviewCard overviewCard;

@BindView(R.id.overview)
OverviewCardView overview;
@BindView(R.id.strengthCard)
ScoreCard scoreCard;

@Override
public View onCreateView(LayoutInflater inflater,
Expand All @@ -92,15 +79,6 @@ public View onCreateView(LayoutInflater inflater,
habit = activity.getHabit();
helper.updateColors();

int defaultScoreInterval =
InterfaceUtils.getDefaultScoreInterval(getContext());
previousScoreInterval = defaultScoreInterval;
setScoreBucketSize(defaultScoreInterval);

sStrengthInterval.setSelection(defaultScoreInterval);
sStrengthInterval.setOnItemSelectedListener(
new OnItemSelectedListener());

createDataViews();
helper.updateCardHeaders(view);
setHasOptionsMenu(true);
Expand All @@ -118,14 +96,14 @@ public void onClickEditHistory()

private void createDataViews()
{
subtitleView.setHabit(habit);
overview.setHabit(habit);
subtitleCard.setHabit(habit);
overviewCard.setHabit(habit);
scoreCard.setHabit(habit);

dataViews = new LinkedList<>();
dataViews.add(habitScoreView);
dataViews.add(habitHistoryView);
dataViews.add(habitFrequencyView);
dataViews.add(habitStreakView);
dataViews.add(historyView);
dataViews.add(frequencyChart);
dataViews.add(streakChart);

for (HabitDataView dataView : dataViews)
dataView.setHabit(habit);
Expand Down Expand Up @@ -156,17 +134,6 @@ private boolean showEditHabitDialog()
return true;
}

private void setScoreBucketSize(int position)
{
if (getView() == null) return;

habitScoreView.setBucketSize(
HabitScoreView.DEFAULT_BUCKET_SIZES[position]);

InterfaceUtils.setDefaultScoreInterval(getContext(), position);
previousScoreInterval = position;
}

@Override
public void onModelChange()
{
Expand All @@ -190,23 +157,4 @@ public void onPause()
habit.getObservable().removeListener(this);
super.onPause();
}

private class OnItemSelectedListener
implements AdapterView.OnItemSelectedListener
{
@Override
public void onItemSelected(AdapterView<?> parent,
View view,
int position,
long id)
{
setScoreBucketSize(position);
}

@Override
public void onNothingSelected(AdapterView<?> parent)
{

}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ public ShowHabitHelper(ShowHabitFragment fragment)
void updateCardHeaders(View view)
{
updateColor(view, R.id.tvHistory);
updateColor(view, R.id.tvStrength);
updateColor(view, R.id.tvStreaks);
updateColor(view, R.id.tvWeekdayFreq);
updateColor(view, R.id.scoreLabel);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
import java.text.*;
import java.util.*;

public class HabitFrequencyView extends ScrollableDataView
public class FrequencyChart extends ScrollableChart
implements HabitDataView, ModelObservable.Listener
{
private Paint pGrid;
Expand Down Expand Up @@ -70,13 +70,13 @@ public class HabitFrequencyView extends ScrollableDataView

private HashMap<Long, Integer[]> frequency;

public HabitFrequencyView(Context context)
public FrequencyChart(Context context)
{
super(context);
init();
}

public HabitFrequencyView(Context context, AttributeSet attrs)
public FrequencyChart(Context context, AttributeSet attrs)
{
super(context, attrs);
this.primaryColor = ColorUtils.getColor(getContext(), 7);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,9 @@
import java.text.*;
import java.util.*;

public class HabitHistoryView extends ScrollableDataView implements
HabitDataView,
ToggleRepetitionTask.Listener,
ModelObservable.Listener
public class HistoryView extends ScrollableChart implements HabitDataView,
ToggleRepetitionTask.Listener,
ModelObservable.Listener
{
private Habit habit;

Expand Down Expand Up @@ -89,13 +88,13 @@ public class HabitHistoryView extends ScrollableDataView implements

private float headerOverflow = 0;

public HabitHistoryView(Context context)
public HistoryView(Context context)
{
super(context);
init();
}

public HabitHistoryView(Context context, AttributeSet attrs)
public HistoryView(Context context, AttributeSet attrs)
{
super(context, attrs);
init();
Expand Down Expand Up @@ -169,6 +168,7 @@ public void refreshData()
postInvalidate();
}

@Override
public void setHabit(Habit habit)
{
this.habit = habit;
Expand Down
Loading

0 comments on commit a11ad6e

Please sign in to comment.