diff --git a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt index 7532687..65af8cb 100644 --- a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt +++ b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt @@ -11,7 +11,7 @@ import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.dp2px -fun LineChart.init() { +fun LineChart.init(labelCount: Int) { this.setNoDataText("无数据,无法渲染...") this.setNoDataTextColor(R.color.orangeTextColor) this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(BaseApplication.obtainInstance()).toFloat() @@ -30,9 +30,10 @@ val xAxis: XAxis = this.xAxis xAxis.textColor = R.color.mainTextColor.convertColor(BaseApplication.obtainInstance()) xAxis.textSize = 10f + xAxis.labelCount = labelCount //x轴标签数量 xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 xAxis.setDrawAxisLine(true) //是否绘制轴线 - xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.setDrawGridLines(true) //设置x轴上每个点对应的线 xAxis.granularity = 1f //禁止放大后x轴标签重绘 xAxis.position = XAxis.XAxisPosition.BOTTOM this.extraBottomOffset = 5f //解决X轴显示不完全问题 diff --git a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt index 7532687..65af8cb 100644 --- a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt +++ b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt @@ -11,7 +11,7 @@ import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.dp2px -fun LineChart.init() { +fun LineChart.init(labelCount: Int) { this.setNoDataText("无数据,无法渲染...") this.setNoDataTextColor(R.color.orangeTextColor) this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(BaseApplication.obtainInstance()).toFloat() @@ -30,9 +30,10 @@ val xAxis: XAxis = this.xAxis xAxis.textColor = R.color.mainTextColor.convertColor(BaseApplication.obtainInstance()) xAxis.textSize = 10f + xAxis.labelCount = labelCount //x轴标签数量 xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 xAxis.setDrawAxisLine(true) //是否绘制轴线 - xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.setDrawGridLines(true) //设置x轴上每个点对应的线 xAxis.granularity = 1f //禁止放大后x轴标签重绘 xAxis.position = XAxis.XAxisPosition.BOTTOM this.extraBottomOffset = 5f //解决X轴显示不完全问题 diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt index 8a50d25..e81b7da 100644 --- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt @@ -1,13 +1,16 @@ package com.casic.smarttube.utils +import com.casic.smarttube.R +import com.casic.smarttube.base.BaseApplication import com.casic.smarttube.extensions.init -import com.casic.smarttube.model.LineChartEntryModel import com.casic.smarttube.widgets.LineChartMarkerView import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.data.Entry import com.github.mikephil.charting.data.LineData import com.github.mikephil.charting.data.LineDataSet import com.github.mikephil.charting.formatter.ValueFormatter import com.github.mikephil.charting.interfaces.datasets.ILineDataSet +import com.pengxh.kt.lite.extensions.convertColor /** @@ -21,24 +24,24 @@ * 折线图 * */ fun setLineChartData( - chart: LineChart, xAxisDate: MutableList, entryModel: LineChartEntryModel + chart: LineChart, xAxisDate: MutableList, entries: List ) { //每次加载数据都初始化折线图 - chart.init() - if (entryModel.entries.isEmpty()) { + chart.init(xAxisDate.size) + if (entries.isEmpty()) { return } //绑定数据 val lineDataSets: MutableList = ArrayList() //设置数据 - val dataSet = LineDataSet(entryModel.entries, entryModel.entries[0].data.toString()) + val dataSet = LineDataSet(entries, entries[0].data.toString()) dataSet.setDrawCircles(true) //线条颜色 - dataSet.color = entryModel.lineColor + dataSet.color = R.color.redTextColor.convertColor(BaseApplication.obtainInstance()) //圆点颜色 - dataSet.setCircleColor(entryModel.lineColor) + dataSet.setCircleColor(R.color.redTextColor.convertColor(BaseApplication.obtainInstance())) dataSet.setDrawFilled(true) - dataSet.fillColor = entryModel.lineColor + dataSet.fillColor = R.color.redTextColor.convertColor(BaseApplication.obtainInstance()) dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER lineDataSets.add(dataSet) diff --git a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt index 7532687..65af8cb 100644 --- a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt +++ b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt @@ -11,7 +11,7 @@ import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.dp2px -fun LineChart.init() { +fun LineChart.init(labelCount: Int) { this.setNoDataText("无数据,无法渲染...") this.setNoDataTextColor(R.color.orangeTextColor) this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(BaseApplication.obtainInstance()).toFloat() @@ -30,9 +30,10 @@ val xAxis: XAxis = this.xAxis xAxis.textColor = R.color.mainTextColor.convertColor(BaseApplication.obtainInstance()) xAxis.textSize = 10f + xAxis.labelCount = labelCount //x轴标签数量 xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 xAxis.setDrawAxisLine(true) //是否绘制轴线 - xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.setDrawGridLines(true) //设置x轴上每个点对应的线 xAxis.granularity = 1f //禁止放大后x轴标签重绘 xAxis.position = XAxis.XAxisPosition.BOTTOM this.extraBottomOffset = 5f //解决X轴显示不完全问题 diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt index 8a50d25..e81b7da 100644 --- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt @@ -1,13 +1,16 @@ package com.casic.smarttube.utils +import com.casic.smarttube.R +import com.casic.smarttube.base.BaseApplication import com.casic.smarttube.extensions.init -import com.casic.smarttube.model.LineChartEntryModel import com.casic.smarttube.widgets.LineChartMarkerView import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.data.Entry import com.github.mikephil.charting.data.LineData import com.github.mikephil.charting.data.LineDataSet import com.github.mikephil.charting.formatter.ValueFormatter import com.github.mikephil.charting.interfaces.datasets.ILineDataSet +import com.pengxh.kt.lite.extensions.convertColor /** @@ -21,24 +24,24 @@ * 折线图 * */ fun setLineChartData( - chart: LineChart, xAxisDate: MutableList, entryModel: LineChartEntryModel + chart: LineChart, xAxisDate: MutableList, entries: List ) { //每次加载数据都初始化折线图 - chart.init() - if (entryModel.entries.isEmpty()) { + chart.init(xAxisDate.size) + if (entries.isEmpty()) { return } //绑定数据 val lineDataSets: MutableList = ArrayList() //设置数据 - val dataSet = LineDataSet(entryModel.entries, entryModel.entries[0].data.toString()) + val dataSet = LineDataSet(entries, entries[0].data.toString()) dataSet.setDrawCircles(true) //线条颜色 - dataSet.color = entryModel.lineColor + dataSet.color = R.color.redTextColor.convertColor(BaseApplication.obtainInstance()) //圆点颜色 - dataSet.setCircleColor(entryModel.lineColor) + dataSet.setCircleColor(R.color.redTextColor.convertColor(BaseApplication.obtainInstance())) dataSet.setDrawFilled(true) - dataSet.fillColor = entryModel.lineColor + dataSet.fillColor = R.color.redTextColor.convertColor(BaseApplication.obtainInstance()) dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER lineDataSets.add(dataSet) diff --git a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt index 6b641a6..7938806 100644 --- a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt @@ -101,7 +101,6 @@ }).build().show() } 2 -> { - //TODO 批量删除待完善 MultiSelectDialog.Builder() .setContext(this@GroupDeviceActivity) .setTitle("选择设备") diff --git a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt index 7532687..65af8cb 100644 --- a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt +++ b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt @@ -11,7 +11,7 @@ import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.dp2px -fun LineChart.init() { +fun LineChart.init(labelCount: Int) { this.setNoDataText("无数据,无法渲染...") this.setNoDataTextColor(R.color.orangeTextColor) this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(BaseApplication.obtainInstance()).toFloat() @@ -30,9 +30,10 @@ val xAxis: XAxis = this.xAxis xAxis.textColor = R.color.mainTextColor.convertColor(BaseApplication.obtainInstance()) xAxis.textSize = 10f + xAxis.labelCount = labelCount //x轴标签数量 xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 xAxis.setDrawAxisLine(true) //是否绘制轴线 - xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.setDrawGridLines(true) //设置x轴上每个点对应的线 xAxis.granularity = 1f //禁止放大后x轴标签重绘 xAxis.position = XAxis.XAxisPosition.BOTTOM this.extraBottomOffset = 5f //解决X轴显示不完全问题 diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt index 8a50d25..e81b7da 100644 --- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt @@ -1,13 +1,16 @@ package com.casic.smarttube.utils +import com.casic.smarttube.R +import com.casic.smarttube.base.BaseApplication import com.casic.smarttube.extensions.init -import com.casic.smarttube.model.LineChartEntryModel import com.casic.smarttube.widgets.LineChartMarkerView import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.data.Entry import com.github.mikephil.charting.data.LineData import com.github.mikephil.charting.data.LineDataSet import com.github.mikephil.charting.formatter.ValueFormatter import com.github.mikephil.charting.interfaces.datasets.ILineDataSet +import com.pengxh.kt.lite.extensions.convertColor /** @@ -21,24 +24,24 @@ * 折线图 * */ fun setLineChartData( - chart: LineChart, xAxisDate: MutableList, entryModel: LineChartEntryModel + chart: LineChart, xAxisDate: MutableList, entries: List ) { //每次加载数据都初始化折线图 - chart.init() - if (entryModel.entries.isEmpty()) { + chart.init(xAxisDate.size) + if (entries.isEmpty()) { return } //绑定数据 val lineDataSets: MutableList = ArrayList() //设置数据 - val dataSet = LineDataSet(entryModel.entries, entryModel.entries[0].data.toString()) + val dataSet = LineDataSet(entries, entries[0].data.toString()) dataSet.setDrawCircles(true) //线条颜色 - dataSet.color = entryModel.lineColor + dataSet.color = R.color.redTextColor.convertColor(BaseApplication.obtainInstance()) //圆点颜色 - dataSet.setCircleColor(entryModel.lineColor) + dataSet.setCircleColor(R.color.redTextColor.convertColor(BaseApplication.obtainInstance())) dataSet.setDrawFilled(true) - dataSet.fillColor = entryModel.lineColor + dataSet.fillColor = R.color.redTextColor.convertColor(BaseApplication.obtainInstance()) dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER lineDataSets.add(dataSet) diff --git a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt index 6b641a6..7938806 100644 --- a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt @@ -101,7 +101,6 @@ }).build().show() } 2 -> { - //TODO 批量删除待完善 MultiSelectDialog.Builder() .setContext(this@GroupDeviceActivity) .setTitle("选择设备") diff --git a/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt b/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt index c717fcd..219f80d 100644 --- a/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt @@ -6,7 +6,6 @@ import com.casic.smarttube.R import com.casic.smarttube.extensions.dateToMonthDay import com.casic.smarttube.extensions.getQuarterOfYear -import com.casic.smarttube.model.LineChartEntryModel import com.casic.smarttube.utils.ChartViewHelper import com.casic.smarttube.vm.DeviceViewModel import com.casic.smarttube.widgets.DateSelectDialog @@ -86,7 +85,10 @@ 3 -> { //近7日 deviceViewModel.obtainDeviceHistoryData( - groupId, devCode, time.timestampToLastWeekDate(), time.timestampToCompleteDate() + groupId, + devCode, + time.timestampToLastWeekDate(), + time.timestampToCompleteDate() ) } 4 -> { @@ -127,13 +129,11 @@ } deviceViewModel.historyDataModel.observe(this, { if (it.code == 200) { - //两条线,电量和浓度线 val xAxisLabels: MutableList = ArrayList() - - val strengthEntryModel = LineChartEntryModel() //每个entries都是一条折线 val strengthEntries: ArrayList = ArrayList() - it.data!!.forEachIndexed { i, rowsBean -> + it.data.reverse() + it.data.forEachIndexed { i, rowsBean -> // x 轴坐标 // 2022-07-06 16:41:00 需要改为 07-06 16:41 xAxisLabels.add(rowsBean.uptime.dateToMonthDay()) @@ -143,9 +143,7 @@ Entry(i.toFloat(), rowsBean.stregnth!!.toFloat(), "浓度") ) } - strengthEntryModel.lineColor = R.color.redTextColor.convertColor(this) - strengthEntryModel.entries = strengthEntries - ChartViewHelper.setLineChartData(dataLineChart, xAxisLabels, strengthEntryModel) + ChartViewHelper.setLineChartData(dataLineChart, xAxisLabels, strengthEntries) } }) }