From 57a3af64bd16fd464ed331522d9a4433ab634d18 Mon Sep 17 00:00:00 2001 From: Daniel Hauk <haukda60920@th-nuernberg.de> Date: Tue, 4 Jun 2019 15:11:03 +0200 Subject: [PATCH] chart for humidity --- main/AndroidManifest.xml | 4 -- .../hbox/history/ChartListViewAdapter.kt | 34 ++++++++++---- .../example/hbox/history/HistoryFragment.kt | 1 - .../axisFormatter/HumidityFormatter.kt | 14 ++++++ ...tsFormatter.kt => TemperatureFormatter.kt} | 3 +- .../history/axisStyler/HumidityAxisStyler.kt | 46 +++++++++++++++++++ .../axisStyler/TemperatureAxisStyler.kt | 4 +- .../dataSetStyler/HumidityDataSetStyler.kt | 21 +++++++++ ...tStyler.kt => TemperatureDataSetStyler.kt} | 2 +- 9 files changed, 109 insertions(+), 20 deletions(-) create mode 100644 main/java/com/example/hbox/history/axisFormatter/HumidityFormatter.kt rename main/java/com/example/hbox/history/axisFormatter/{NullDigitsFormatter.kt => TemperatureFormatter.kt} (79%) create mode 100644 main/java/com/example/hbox/history/axisStyler/HumidityAxisStyler.kt create mode 100644 main/java/com/example/hbox/history/dataSetStyler/HumidityDataSetStyler.kt rename main/java/com/example/hbox/history/dataSetStyler/{TemperaturDataSetStyler.kt => TemperatureDataSetStyler.kt} (94%) diff --git a/main/AndroidManifest.xml b/main/AndroidManifest.xml index f0ac5f8..ac9fc8a 100644 --- a/main/AndroidManifest.xml +++ b/main/AndroidManifest.xml @@ -14,10 +14,6 @@ android:supportsRtl="true" android:theme="@style/AppTheme"> <activity - android:name=".control.SettingsActivity" - android:label="@string/title_activity_settings"> - </activity> - adb<activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> diff --git a/main/java/com/example/hbox/history/ChartListViewAdapter.kt b/main/java/com/example/hbox/history/ChartListViewAdapter.kt index 67dc518..baa351c 100644 --- a/main/java/com/example/hbox/history/ChartListViewAdapter.kt +++ b/main/java/com/example/hbox/history/ChartListViewAdapter.kt @@ -2,14 +2,14 @@ package com.history import android.annotation.SuppressLint import android.content.Context -import android.graphics.Color -import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.BaseAdapter +import com.example.hbox.history.axisStyler.HumidityAxisStyler import com.example.hbox.history.axisStyler.TemperatureAxisStyler -import com.example.hbox.history.dataSetStyler.TemperaturDataSetStyler +import com.example.hbox.history.dataSetStyler.HumidityDataSetStyler +import com.example.hbox.history.dataSetStyler.TemperatureDataSetStyler import com.example.hbox.history.limitLinesFormatter.WeekdayLimitLinesCreator import com.github.mikephil.charting.charts.LineChart import com.github.mikephil.charting.data.Entry @@ -33,15 +33,29 @@ class ChartListViewAdapter(private val context: Context, private val sensorList: sensorList[position].data?.forEach { entries.add(Entry(it.date.toFloat(), it.value)) } - - // style dataset val lineDataSet = LineDataSet(entries, sensorList[position].name) - TemperaturDataSetStyler.styleDataSet(lineDataSet) - // style axis - TemperatureAxisStyler.styleXAxis(view.xAxis) - TemperatureAxisStyler.styleYAxisLeft(view.axisLeft) - TemperatureAxisStyler.styleYAxisRight(view.axisRight) + when(sensorList[position].type) { + "temperature" -> { + // style dataset + TemperatureDataSetStyler.styleDataSet(lineDataSet) + + // style axis + TemperatureAxisStyler.styleXAxis(view.xAxis) + TemperatureAxisStyler.styleYAxisLeft(view.axisLeft) + TemperatureAxisStyler.styleYAxisRight(view.axisRight) + } + "humidity" -> { + // style dataset + HumidityDataSetStyler.styleDataSet(lineDataSet) + + // style axis + HumidityAxisStyler.styleXAxis(view.xAxis) + HumidityAxisStyler.styleYAxisLeft(view.axisLeft) + HumidityAxisStyler.styleYAxisRight(view.axisRight) + } + } + // add weekdays WeekdayLimitLinesCreator.create(view.xAxis, sensorList[position]) diff --git a/main/java/com/example/hbox/history/HistoryFragment.kt b/main/java/com/example/hbox/history/HistoryFragment.kt index 34d48b2..62cc123 100644 --- a/main/java/com/example/hbox/history/HistoryFragment.kt +++ b/main/java/com/example/hbox/history/HistoryFragment.kt @@ -13,7 +13,6 @@ import com.google.gson.Gson import com.history.ChartListViewAdapter import com.history.History import com.history.Sensor -import org.json.JSONObject import java.net.HttpURLConnection import java.net.URL diff --git a/main/java/com/example/hbox/history/axisFormatter/HumidityFormatter.kt b/main/java/com/example/hbox/history/axisFormatter/HumidityFormatter.kt new file mode 100644 index 0000000..18684f9 --- /dev/null +++ b/main/java/com/example/hbox/history/axisFormatter/HumidityFormatter.kt @@ -0,0 +1,14 @@ +package com.example.hbox.history.axisFormatter + +import com.github.mikephil.charting.components.AxisBase +import com.github.mikephil.charting.formatter.IAxisValueFormatter +import java.text.DecimalFormat + +class HumidityFormatter : IAxisValueFormatter { + override fun getFormattedValue(value: Float, axis: AxisBase?): String { + + val df = DecimalFormat("#") + //df.roundingMode = RoundingMode.CEILING + return df.format(value) + " %" + } +} \ No newline at end of file diff --git a/main/java/com/example/hbox/history/axisFormatter/NullDigitsFormatter.kt b/main/java/com/example/hbox/history/axisFormatter/TemperatureFormatter.kt similarity index 79% rename from main/java/com/example/hbox/history/axisFormatter/NullDigitsFormatter.kt rename to main/java/com/example/hbox/history/axisFormatter/TemperatureFormatter.kt index c55ca47..be3896d 100644 --- a/main/java/com/example/hbox/history/axisFormatter/NullDigitsFormatter.kt +++ b/main/java/com/example/hbox/history/axisFormatter/TemperatureFormatter.kt @@ -2,10 +2,9 @@ package com.example.hbox.history.axisFormatter import com.github.mikephil.charting.components.AxisBase import com.github.mikephil.charting.formatter.IAxisValueFormatter -import com.github.mikephil.charting.utils.ColorTemplate import java.text.DecimalFormat -class NullDigitsFormatter : IAxisValueFormatter { +class TemperatureFormatter : IAxisValueFormatter { override fun getFormattedValue(value: Float, axis: AxisBase?): String { val df = DecimalFormat("#") diff --git a/main/java/com/example/hbox/history/axisStyler/HumidityAxisStyler.kt b/main/java/com/example/hbox/history/axisStyler/HumidityAxisStyler.kt new file mode 100644 index 0000000..d1fdef9 --- /dev/null +++ b/main/java/com/example/hbox/history/axisStyler/HumidityAxisStyler.kt @@ -0,0 +1,46 @@ +package com.example.hbox.history.axisStyler + +import android.graphics.Color +import com.example.hbox.history.axisFormatter.HumidityFormatter +import com.example.hbox.history.axisFormatter.TemperatureFormatter +import com.example.hbox.history.axisFormatter.TimeFormatter +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis + +class HumidityAxisStyler { + companion object { + fun styleXAxis(xAxis: XAxis) : XAxis { + xAxis.position = XAxis.XAxisPosition.BOTTOM + return xAxis.apply { + valueFormatter = TimeFormatter() + setDrawAxisLine(false) + setDrawGridLines(false) + setDrawLimitLinesBehindData(true) + textSize = 14f + } + } + + fun styleYAxisRight(yAxis: YAxis) : YAxis { + return yAxis.apply { + setDrawAxisLine(false) + setDrawLabels(false) + setDrawGridLines(false) + } + } + + fun styleYAxisLeft(yAxis: YAxis) : YAxis { + return yAxis.apply { + setDrawAxisLine(false) + textSize = 14f + valueFormatter = HumidityFormatter() + axisMinimum = 20f + axisMaximum = 90f + setDrawGridLines(true) + gridColor = Color.DKGRAY + setLabelCount(8,true) + + } + } + } + +} \ No newline at end of file diff --git a/main/java/com/example/hbox/history/axisStyler/TemperatureAxisStyler.kt b/main/java/com/example/hbox/history/axisStyler/TemperatureAxisStyler.kt index e0ad55d..c59c305 100644 --- a/main/java/com/example/hbox/history/axisStyler/TemperatureAxisStyler.kt +++ b/main/java/com/example/hbox/history/axisStyler/TemperatureAxisStyler.kt @@ -1,7 +1,7 @@ package com.example.hbox.history.axisStyler import android.graphics.Color -import com.example.hbox.history.axisFormatter.NullDigitsFormatter +import com.example.hbox.history.axisFormatter.TemperatureFormatter import com.example.hbox.history.axisFormatter.TimeFormatter import com.github.mikephil.charting.components.XAxis import com.github.mikephil.charting.components.YAxis @@ -31,7 +31,7 @@ class TemperatureAxisStyler { return yAxis.apply { setDrawAxisLine(false) textSize = 14f - valueFormatter = NullDigitsFormatter() + valueFormatter = TemperatureFormatter() axisMinimum = 16f axisMaximum = 32f setDrawGridLines(true) diff --git a/main/java/com/example/hbox/history/dataSetStyler/HumidityDataSetStyler.kt b/main/java/com/example/hbox/history/dataSetStyler/HumidityDataSetStyler.kt new file mode 100644 index 0000000..c7c1475 --- /dev/null +++ b/main/java/com/example/hbox/history/dataSetStyler/HumidityDataSetStyler.kt @@ -0,0 +1,21 @@ +package com.example.hbox.history.dataSetStyler + +import android.graphics.Color +import com.github.mikephil.charting.data.LineDataSet + +class HumidityDataSetStyler { + companion object { + fun styleDataSet (lineDataSet : LineDataSet) : LineDataSet { + return lineDataSet.apply{ + lineWidth = 0f + color = Color.argb(255,15,15,255) + fillColor = Color.argb(255,15,15,255) + fillAlpha = 100 + mode = LineDataSet.Mode.CUBIC_BEZIER + setDrawFilled(true) + setDrawCircles(false) + setDrawValues(false) + } + } + } +} \ No newline at end of file diff --git a/main/java/com/example/hbox/history/dataSetStyler/TemperaturDataSetStyler.kt b/main/java/com/example/hbox/history/dataSetStyler/TemperatureDataSetStyler.kt similarity index 94% rename from main/java/com/example/hbox/history/dataSetStyler/TemperaturDataSetStyler.kt rename to main/java/com/example/hbox/history/dataSetStyler/TemperatureDataSetStyler.kt index 758918e..8d26bb1 100644 --- a/main/java/com/example/hbox/history/dataSetStyler/TemperaturDataSetStyler.kt +++ b/main/java/com/example/hbox/history/dataSetStyler/TemperatureDataSetStyler.kt @@ -3,7 +3,7 @@ package com.example.hbox.history.dataSetStyler import android.graphics.Color import com.github.mikephil.charting.data.LineDataSet -class TemperaturDataSetStyler { +class TemperatureDataSetStyler { companion object { fun styleDataSet (lineDataSet : LineDataSet) : LineDataSet { return lineDataSet.apply{ -- GitLab