Merge pull request #151 from sciamano/freq2

relative size of the marks in the frequency view
pull/157/head
Alinson S. Xavier 9 years ago committed by GitHub
commit 2e53b75705

@ -66,6 +66,7 @@ public class FrequencyChart extends ScrollableChart
@NonNull @NonNull
private HashMap<Long, Integer[]> frequency; private HashMap<Long, Integer[]> frequency;
private int maxFreq;
public FrequencyChart(Context context) public FrequencyChart(Context context)
{ {
@ -90,9 +91,23 @@ public class FrequencyChart extends ScrollableChart
public void setFrequency(HashMap<Long, Integer[]> frequency) public void setFrequency(HashMap<Long, Integer[]> frequency)
{ {
this.frequency = frequency; this.frequency = frequency;
maxFreq = getMaxFreq(frequency);
postInvalidate(); postInvalidate();
} }
private int getMaxFreq(HashMap<Long, Integer[]> frequency)
{
int maxValue = 1;
for (Integer[] values : frequency.values())
{
for (Integer value : values)
{
maxValue = Math.max(value, maxValue);
}
}
return maxValue;
}
public void setIsBackgroundTransparent(boolean isBackgroundTransparent) public void setIsBackgroundTransparent(boolean isBackgroundTransparent)
{ {
this.isBackgroundTransparent = isBackgroundTransparent; this.isBackgroundTransparent = isBackgroundTransparent;
@ -235,10 +250,14 @@ public class FrequencyChart extends ScrollableChart
private void drawMarker(Canvas canvas, RectF rect, Integer value) private void drawMarker(Canvas canvas, RectF rect, Integer value)
{ {
float padding = rect.height() * 0.2f; float padding = rect.height() * 0.2f;
float radius = // maximal allowed mark radius
(rect.height() - 2 * padding) / 2.0f / 4.0f * Math.min(value, 4); float maxRadius = (rect.height() - 2 * padding) / 2.0f;
// the real mark radius is scaled down by a factor depending on the maximal frequency
pGraph.setColor(colors[Math.min(3, Math.max(0, value - 1))]); float scale = 1.0f/maxFreq * value;
float radius = maxRadius * scale;
int colorIndex = Math.round((colors.length-1) * scale);
pGraph.setColor(colors[colorIndex]);
canvas.drawCircle(rect.centerX(), rect.centerY(), radius, pGraph); canvas.drawCircle(rect.centerX(), rect.centerY(), radius, pGraph);
} }

@ -130,7 +130,7 @@ public abstract class RepetitionList
for (Repetition r : reps) for (Repetition r : reps)
{ {
Calendar date = DateUtils.getCalendar(r.getTimestamp()); Calendar date = DateUtils.getCalendar(r.getTimestamp());
int weekday = date.get(Calendar.DAY_OF_WEEK) % 7; int weekday = DateUtils.getWeekday(r.getTimestamp());
date.set(Calendar.DAY_OF_MONTH, 1); date.set(Calendar.DAY_OF_MONTH, 1);
long timestamp = date.getTimeInMillis(); long timestamp = date.getTimeInMillis();

@ -206,7 +206,7 @@ public abstract class DateUtils
public static int getWeekday(long timestamp) public static int getWeekday(long timestamp)
{ {
GregorianCalendar day = getCalendar(timestamp); GregorianCalendar day = getCalendar(timestamp);
return day.get(DAY_OF_WEEK) % 7; return javaWeekdayToLoopWeekday(day.get(DAY_OF_WEEK));
} }
/** /**

Loading…
Cancel
Save