From 82d293155943379a7a4242a52eee2145c63466b5 Mon Sep 17 00:00:00 2001 From: Denis Date: Fri, 29 Jul 2016 23:25:29 +0200 Subject: [PATCH 1/3] fix code duplication --- app/src/main/java/org/isoron/uhabits/models/RepetitionList.java | 2 +- app/src/main/java/org/isoron/uhabits/utils/DateUtils.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/isoron/uhabits/models/RepetitionList.java b/app/src/main/java/org/isoron/uhabits/models/RepetitionList.java index 23866b939..e527048f5 100644 --- a/app/src/main/java/org/isoron/uhabits/models/RepetitionList.java +++ b/app/src/main/java/org/isoron/uhabits/models/RepetitionList.java @@ -130,7 +130,7 @@ public abstract class RepetitionList for (Repetition r : reps) { 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); long timestamp = date.getTimeInMillis(); diff --git a/app/src/main/java/org/isoron/uhabits/utils/DateUtils.java b/app/src/main/java/org/isoron/uhabits/utils/DateUtils.java index 67d5f8033..5684f5302 100644 --- a/app/src/main/java/org/isoron/uhabits/utils/DateUtils.java +++ b/app/src/main/java/org/isoron/uhabits/utils/DateUtils.java @@ -206,7 +206,7 @@ public abstract class DateUtils public static int getWeekday(long timestamp) { GregorianCalendar day = getCalendar(timestamp); - return day.get(DAY_OF_WEEK) % 7; + return javaWeekdayToLoopWeekday(day.get(DAY_OF_WEEK)); } /** From 67ae48b527824548082b5e5fac020148c571b1ed Mon Sep 17 00:00:00 2001 From: Denis Date: Fri, 29 Jul 2016 23:52:11 +0200 Subject: [PATCH 2/3] radius and color of the mark in the frequency view --- .../activities/common/views/FrequencyChart.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/isoron/uhabits/activities/common/views/FrequencyChart.java b/app/src/main/java/org/isoron/uhabits/activities/common/views/FrequencyChart.java index 7554c19bb..8c06e498b 100644 --- a/app/src/main/java/org/isoron/uhabits/activities/common/views/FrequencyChart.java +++ b/app/src/main/java/org/isoron/uhabits/activities/common/views/FrequencyChart.java @@ -235,10 +235,14 @@ public class FrequencyChart extends ScrollableChart private void drawMarker(Canvas canvas, RectF rect, Integer value) { float padding = rect.height() * 0.2f; - float radius = - (rect.height() - 2 * padding) / 2.0f / 4.0f * Math.min(value, 4); - - pGraph.setColor(colors[Math.min(3, Math.max(0, value - 1))]); + // maximal allowed mark radius + float maxRadius = (rect.height() - 2 * padding) / 2.0f; + // the real mark radius is scaled down by a factor depending on the value + float scale = Math.min(value, 4) / 4.0f; + float radius = maxRadius * scale; + + int colorIndex = Math.round((colors.length-1) * scale); + pGraph.setColor(colors[colorIndex]); canvas.drawCircle(rect.centerX(), rect.centerY(), radius, pGraph); } From 0ec03035f54ac5b86e3e28bb93ceaa3837b43681 Mon Sep 17 00:00:00 2001 From: Denis Date: Sat, 30 Jul 2016 20:24:47 +0200 Subject: [PATCH 3/3] maximal frequency of the data --- .../common/views/FrequencyChart.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/isoron/uhabits/activities/common/views/FrequencyChart.java b/app/src/main/java/org/isoron/uhabits/activities/common/views/FrequencyChart.java index 8c06e498b..fa1d38214 100644 --- a/app/src/main/java/org/isoron/uhabits/activities/common/views/FrequencyChart.java +++ b/app/src/main/java/org/isoron/uhabits/activities/common/views/FrequencyChart.java @@ -66,6 +66,7 @@ public class FrequencyChart extends ScrollableChart @NonNull private HashMap frequency; + private int maxFreq; public FrequencyChart(Context context) { @@ -90,9 +91,23 @@ public class FrequencyChart extends ScrollableChart public void setFrequency(HashMap frequency) { this.frequency = frequency; + maxFreq = getMaxFreq(frequency); postInvalidate(); } + private int getMaxFreq(HashMap 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) { this.isBackgroundTransparent = isBackgroundTransparent; @@ -237,8 +252,8 @@ public class FrequencyChart extends ScrollableChart float padding = rect.height() * 0.2f; // maximal allowed mark radius float maxRadius = (rect.height() - 2 * padding) / 2.0f; - // the real mark radius is scaled down by a factor depending on the value - float scale = Math.min(value, 4) / 4.0f; + // the real mark radius is scaled down by a factor depending on the maximal frequency + float scale = 1.0f/maxFreq * value; float radius = maxRadius * scale; int colorIndex = Math.round((colors.length-1) * scale);