Add time to sample tooltip when available

This commit is contained in:
JoePfeiffer 2024-09-27 11:00:43 -06:00
parent 37c1bcb590
commit 4b2d4ca837

View File

@ -3,6 +3,7 @@ package info.openrocket.swing.gui.plot;
import info.openrocket.core.l10n.Translator; import info.openrocket.core.l10n.Translator;
import info.openrocket.core.simulation.DataBranch; import info.openrocket.core.simulation.DataBranch;
import info.openrocket.core.simulation.DataType; import info.openrocket.core.simulation.DataType;
import info.openrocket.core.simulation.FlightDataType;
import info.openrocket.core.startup.Application; import info.openrocket.core.startup.Application;
import info.openrocket.core.unit.Unit; import info.openrocket.core.unit.Unit;
import info.openrocket.core.unit.UnitGroup; import info.openrocket.core.unit.UnitGroup;
@ -197,6 +198,7 @@ public abstract class Plot<T extends DataType, B extends DataBranch<T>, C extend
StandardXYToolTipGenerator tooltipGenerator = new StandardXYToolTipGenerator() { StandardXYToolTipGenerator tooltipGenerator = new StandardXYToolTipGenerator() {
@Override @Override
public String generateToolTip(XYDataset dataset, int series, int item) { public String generateToolTip(XYDataset dataset, int series, int item) {
XYSeriesCollection collection = data[finalAxisno]; XYSeriesCollection collection = data[finalAxisno];
if (collection.getSeriesCount() == 0) { if (collection.getSeriesCount() == 0) {
return null; return null;
@ -209,15 +211,24 @@ public abstract class Plot<T extends DataType, B extends DataBranch<T>, C extend
int dataTypeIdx = ser.getDataIdx(); int dataTypeIdx = ser.getDataIdx();
DataType type = config.getType(dataTypeIdx); DataType type = config.getType(dataTypeIdx);
String nameT = FlightDataType.TYPE_TIME.getName();
double dataT = Double.NaN;
List<Double> time = allBranches.get(ser.getBranchIdx()).get((T)FlightDataType.TYPE_TIME);
if (null != time) {
dataT = time.get(item);
}
String unitT = FlightDataType.TYPE_TIME.getUnitGroup().getDefaultUnit().toString();
String nameX = config.getDomainAxisType().getName(); String nameX = config.getDomainAxisType().getName();
String unitX = domainUnit.getUnit();
double dataX = dataset.getXValue(series, item); double dataX = dataset.getXValue(series, item);
String unitX = domainUnit.getUnit();
String nameY = type.toString(); String nameY = type.toString();
double dataY = dataset.getYValue(series, item); double dataY = dataset.getYValue(series, item);
String unitY = ser.getUnit(); String unitY = ser.getUnit();
return formatSampleTooltip(name, return formatSampleTooltip(name,
nameT, dataT, unitT,
nameX, dataX, unitX, nameX, dataX, unitX,
nameY, dataY, unitY); nameY, dataY, unitY);
} }
@ -306,6 +317,7 @@ public abstract class Plot<T extends DataType, B extends DataBranch<T>, C extend
} }
protected String formatSampleTooltip(String dataName, protected String formatSampleTooltip(String dataName,
String nameT, double dataT, String unitT,
String nameX, double dataX, String unitX, String nameX, double dataX, String unitX,
String nameY, double dataY, String unitY) { String nameY, double dataY, String unitY) {
@ -318,20 +330,28 @@ public abstract class Plot<T extends DataType, B extends DataBranch<T>, C extend
sb.append(String.format("<b><i>%s</i></b><br>", dataName)); sb.append(String.format("<b><i>%s</i></b><br>", dataName));
sb.append(String.format(strFormat, nameX, df_x.format(dataX), unitX)); // If I was given valid Y data, put it in tooltip
if (!Double.isNaN(dataY)) { if (!Double.isNaN(dataY)) {
DecimalFormat df_y = DecimalFormatter.df(dataY, 2, false); DecimalFormat df_y = DecimalFormatter.df(dataY, 2, false);
sb.append(String.format(strFormat, nameY, df_y.format(dataY), unitY)); sb.append(String.format(strFormat, nameY, df_y.format(dataY), unitY));
} }
// Assuming X data is valid
sb.append(String.format(strFormat, nameX, df_x.format(dataX), unitX));
// If I've got time data, and my domain isn't time, add time to tooltip
if (!Double.isNaN(dataT) && !nameX.equals(nameT)) {
DecimalFormat df_t = DecimalFormatter.df(dataT, 2, false);
sb.append(String.format(strFormat, nameT, df_t.format(dataT), unitT));
}
sb.append("</html>"); sb.append("</html>");
return sb.toString(); return sb.toString();
} }
protected String formatSampleTooltip(String dataName, String nameX, double dataX, String unitX) { protected String formatSampleTooltip(String dataName, String nameX, double dataX, String unitX) {
return formatSampleTooltip(dataName, nameX, dataX, unitX, "", Double.NaN, ""); return formatSampleTooltip(dataName, "", Double.NaN, "", nameX, dataX, unitX, "", Double.NaN, "");
} }
protected static class LegendItems implements LegendItemSource { protected static class LegendItems implements LegendItemSource {