forked from upstream-mirrors/OpenTracks
When ChartView is empty, always show the elevation series meta data.
This commit is contained in:
@@ -487,24 +487,23 @@ public class ChartView extends View {
|
|||||||
synchronized (chartData) {
|
synchronized (chartData) {
|
||||||
|
|
||||||
canvas.save();
|
canvas.save();
|
||||||
|
|
||||||
canvas.drawColor(Color.WHITE);
|
canvas.drawColor(Color.WHITE);
|
||||||
|
|
||||||
if (chartData.isEmpty()) {
|
|
||||||
drawXAxis(canvas);
|
|
||||||
clearYAxisMarkers(canvas);
|
|
||||||
drawYAxis(canvas);
|
|
||||||
canvas.restore();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
canvas.save();
|
canvas.save();
|
||||||
|
|
||||||
clipToGraphArea(canvas);
|
clipToGraphArea(canvas);
|
||||||
drawDataSeries(canvas);
|
drawDataSeries(canvas);
|
||||||
drawWaypoints(canvas);
|
drawWaypoints(canvas);
|
||||||
drawGrid(canvas);
|
drawGrid(canvas);
|
||||||
|
|
||||||
canvas.restore();
|
canvas.restore();
|
||||||
|
|
||||||
drawAxesAndMarkers(canvas);
|
drawSeriesTitles(canvas);
|
||||||
|
drawXAxis(canvas);
|
||||||
|
canvas.translate(getScrollX(), 0);
|
||||||
|
drawYAxis(canvas);
|
||||||
|
|
||||||
canvas.restore();
|
canvas.restore();
|
||||||
|
|
||||||
if (showPointer) {
|
if (showPointer) {
|
||||||
@@ -588,28 +587,6 @@ public class ChartView extends View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Draws the axes and markers.
|
|
||||||
*
|
|
||||||
* @param canvas the canvas
|
|
||||||
*/
|
|
||||||
private void drawAxesAndMarkers(Canvas canvas) {
|
|
||||||
drawSeriesTitles(canvas);
|
|
||||||
drawXAxis(canvas);
|
|
||||||
drawXAxisMarkers(canvas);
|
|
||||||
|
|
||||||
canvas.translate(getScrollX(), 0);
|
|
||||||
clearYAxisMarkers(canvas);
|
|
||||||
drawYAxis(canvas);
|
|
||||||
int x = leftBorder - spacer;
|
|
||||||
for (int i = series.length - 1; i >= 0; i--) {
|
|
||||||
ChartValueSeries chartValueSeries = series[i];
|
|
||||||
if (chartValueSeries.isEnabled() && chartValueSeries.hasData()) {
|
|
||||||
x -= drawYAxisMarkers(chartValueSeries, canvas, x) + spacer;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Draws series titles.
|
* Draws series titles.
|
||||||
*
|
*
|
||||||
@@ -619,14 +596,13 @@ public class ChartView extends View {
|
|||||||
int[] titleDimensions = getTitleDimenions();
|
int[] titleDimensions = getTitleDimenions();
|
||||||
int lines = titleDimensions[0];
|
int lines = titleDimensions[0];
|
||||||
int lineHeight = titleDimensions[1];
|
int lineHeight = titleDimensions[1];
|
||||||
int i = 0;
|
for (int i = 0; i < series.length; i++) {
|
||||||
for (ChartValueSeries chartValueSeries : series) {
|
ChartValueSeries chartValueSeries = series[i];
|
||||||
if (chartValueSeries.isEnabled() && chartValueSeries.hasData()) {
|
if (chartValueSeries.isEnabled() && chartValueSeries.hasData() || allowIfEmpty(i)) {
|
||||||
i++;
|
|
||||||
String title = getContext().getString(chartValueSeries.getTitleId(metricUnits));
|
String title = getContext().getString(chartValueSeries.getTitleId(metricUnits));
|
||||||
Paint paint = chartValueSeries.getTitlePaint();
|
Paint paint = chartValueSeries.getTitlePaint();
|
||||||
int x = (int) (0.5 * width) + getScrollX();
|
int x = (int) (0.5 * width) + getScrollX();
|
||||||
int y = topBorder - spacer - (lines - i) * (lineHeight + spacer);
|
int y = topBorder - spacer - (lines - i - 1) * (lineHeight + spacer);
|
||||||
canvas.drawText(title, x, y, paint);
|
canvas.drawText(title, x, y, paint);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -639,8 +615,9 @@ public class ChartView extends View {
|
|||||||
private int[] getTitleDimenions() {
|
private int[] getTitleDimenions() {
|
||||||
int lines = 0;
|
int lines = 0;
|
||||||
int lineHeight = 0;
|
int lineHeight = 0;
|
||||||
for (ChartValueSeries chartValueSeries : series) {
|
for (int i = 0; i < series.length; i++) {
|
||||||
if (chartValueSeries.isEnabled() && chartValueSeries.hasData()) {
|
ChartValueSeries chartValueSeries = series[i];
|
||||||
|
if (chartValueSeries.isEnabled() && chartValueSeries.hasData() || allowIfEmpty(i)) {
|
||||||
lines++;
|
lines++;
|
||||||
String title = getContext().getString(chartValueSeries.getTitleId(metricUnits));
|
String title = getContext().getString(chartValueSeries.getTitleId(metricUnits));
|
||||||
Rect rect = getRect(chartValueSeries.getTitlePaint(), title);
|
Rect rect = getRect(chartValueSeries.getTitlePaint(), title);
|
||||||
@@ -664,6 +641,12 @@ public class ChartView extends View {
|
|||||||
String label = getXAxisLabel();
|
String label = getXAxisLabel();
|
||||||
Rect rect = getRect(axisPaint, label);
|
Rect rect = getRect(axisPaint, label);
|
||||||
canvas.drawText(label, rightEdge + spacer, y + ((int) rect.height() / 2), axisPaint);
|
canvas.drawText(label, rightEdge + spacer, y + ((int) rect.height() / 2), axisPaint);
|
||||||
|
|
||||||
|
ArrayList<Double> intervals = getXIntervals();
|
||||||
|
NumberFormat numberFormat = intervals.get(0) < 1 ? X_FRACTION_FORMAT : X_NUMBER_FORMAT;
|
||||||
|
for (int i = 1; i < intervals.size(); i++) {
|
||||||
|
drawXAxisMarker(canvas, intervals.get(i), numberFormat);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -679,19 +662,6 @@ public class ChartView extends View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Draws the x axis markers.
|
|
||||||
*
|
|
||||||
* @param canvas the canvas
|
|
||||||
*/
|
|
||||||
private void drawXAxisMarkers(Canvas canvas) {
|
|
||||||
ArrayList<Double> intervals = getXIntervals();
|
|
||||||
NumberFormat numberFormat = intervals.get(0) < 1 ? X_FRACTION_FORMAT : X_NUMBER_FORMAT;
|
|
||||||
for (int i = 1; i < intervals.size(); i++) {
|
|
||||||
drawXAxisMarker(canvas, intervals.get(i), numberFormat);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Draws a x axis marker.
|
* Draws a x axis marker.
|
||||||
*
|
*
|
||||||
@@ -734,22 +704,24 @@ public class ChartView extends View {
|
|||||||
return intervals;
|
return intervals;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Clears the y axis markers.
|
|
||||||
*
|
|
||||||
* @param canvas the canvas
|
|
||||||
*/
|
|
||||||
private void clearYAxisMarkers(Canvas canvas) {
|
|
||||||
canvas.drawRect(0, topBorder, leftBorder, topBorder + effectiveHeight + spacer, clearPaint);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Draws the y axis.
|
* Draws the y axis.
|
||||||
*
|
*
|
||||||
* @param canvas the canvas
|
* @param canvas the canvas
|
||||||
*/
|
*/
|
||||||
private void drawYAxis(Canvas canvas) {
|
private void drawYAxis(Canvas canvas) {
|
||||||
|
// Clears the y axis markers.
|
||||||
|
canvas.drawRect(0, topBorder, leftBorder, topBorder + effectiveHeight + spacer, clearPaint);
|
||||||
canvas.drawLine(leftBorder, topBorder, leftBorder, topBorder + effectiveHeight, axisPaint);
|
canvas.drawLine(leftBorder, topBorder, leftBorder, topBorder + effectiveHeight, axisPaint);
|
||||||
|
|
||||||
|
int x = leftBorder - spacer;
|
||||||
|
for (int i = 0; i < series.length; i++) {
|
||||||
|
int index = series.length - 1 - i;
|
||||||
|
ChartValueSeries chartValueSeries = series[index];
|
||||||
|
if (chartValueSeries.isEnabled() && chartValueSeries.hasData() || allowIfEmpty(index)) {
|
||||||
|
x -= drawYAxisMarkers(chartValueSeries, canvas, x) + spacer;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -907,8 +879,9 @@ public class ChartView extends View {
|
|||||||
yAxisOffset = (int) (density * Y_AXIS_OFFSET);
|
yAxisOffset = (int) (density * Y_AXIS_OFFSET);
|
||||||
|
|
||||||
int markerLength = 0;
|
int markerLength = 0;
|
||||||
for (ChartValueSeries chartValueSeries : series) {
|
for (int i = 0; i < series.length; i ++) {
|
||||||
if (chartValueSeries.isEnabled() && chartValueSeries.hasData()) {
|
ChartValueSeries chartValueSeries = series[i];
|
||||||
|
if (chartValueSeries.isEnabled() && chartValueSeries.hasData() || allowIfEmpty(i)) {
|
||||||
Rect rect = getRect(chartValueSeries.getMarkerPaint(), chartValueSeries.getLargestMarker());
|
Rect rect = getRect(chartValueSeries.getMarkerPaint(), chartValueSeries.getLargestMarker());
|
||||||
markerLength += rect.width() + spacer;
|
markerLength += rect.width() + spacer;
|
||||||
}
|
}
|
||||||
@@ -996,4 +969,13 @@ public class ChartView extends View {
|
|||||||
paint.getTextBounds(string, 0, string.length(), rect);
|
paint.getTextBounds(string, 0, string.length(), rect);
|
||||||
return rect;
|
return rect;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if the index is allowed when the chartData is empty.
|
||||||
|
*
|
||||||
|
* @param index the index
|
||||||
|
*/
|
||||||
|
private boolean allowIfEmpty(int index) {
|
||||||
|
return index == ELEVATION_SERIES && chartData.isEmpty();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user