Put data names in sample tooltips instead of x and y

This commit is contained in:
JoePfeiffer 2024-09-27 10:19:38 -06:00
parent a1eb7fa0c4
commit 37c1bcb590
3 changed files with 39 additions and 31 deletions

View File

@ -26,7 +26,7 @@ public class CAPlot extends Plot<CADataType, CADataBranch, CAPlotConfiguration>
// Create the series for each component // Create the series for each component
List<XYSeries> allSeries = new ArrayList<>(); List<XYSeries> allSeries = new ArrayList<>();
for (int i = 0; i < components.size(); i++) { for (int i = 0; i < components.size(); i++) {
XYSeries series = createSingleSeries(startIndex*1000 + i, type, unit, branch, branchIdx, branchName, baseName, XYSeries series = createSingleSeries(startIndex*1000 + i, type, unit, branch, branchIdx, branchName, dataIndex, baseName,
components.get(i), componentNames.get(i)); components.get(i), componentNames.get(i));
allSeries.add(series); allSeries.add(series);
} }
@ -35,10 +35,10 @@ public class CAPlot extends Plot<CADataType, CADataBranch, CAPlotConfiguration>
} }
private XYSeries createSingleSeries(int key, CADataType type, Unit unit, private XYSeries createSingleSeries(int key, CADataType type, Unit unit,
CADataBranch branch, int branchIdx, String branchName, String baseName, CADataBranch branch, int branchIdx, String branchName, int dataIndex, String baseName,
RocketComponent component, String componentName) { RocketComponent component, String componentName) {
// Default implementation for regular DataBranch // Default implementation for regular DataBranch
MetadataXYSeries series = new MetadataXYSeries(key, false, true, branchIdx, unit.getUnit(), MetadataXYSeries series = new MetadataXYSeries(key, false, true, branchIdx, dataIndex, unit.getUnit(),
branchName, baseName); branchName, baseName);
// Create a new description that includes the component name // Create a new description that includes the component name

View File

@ -202,16 +202,24 @@ public abstract class Plot<T extends DataType, B extends DataBranch<T>, C extend
return null; return null;
} }
MetadataXYSeries ser = (MetadataXYSeries) collection.getSeries(series); MetadataXYSeries ser = (MetadataXYSeries) collection.getSeries(series);
String unitY = ser.getUnit();
String unitX = domainUnit.getUnit();
double dataY = dataset.getYValue(series, item);
double dataX = dataset.getXValue(series, item);
// Determine the appropriate name based on the time and series // Determine the appropriate name based on the time and series
String name = getNameBasedOnIdxAndSeries(ser, item); String name = getNameBasedOnIdxAndSeries(ser, item);
return formatSampleTooltip(name, dataX, unitX, dataY, unitY); int dataTypeIdx = ser.getDataIdx();
DataType type = config.getType(dataTypeIdx);
String nameX = config.getDomainAxisType().getName();
String unitX = domainUnit.getUnit();
double dataX = dataset.getXValue(series, item);
String nameY = type.toString();
double dataY = dataset.getYValue(series, item);
String unitY = ser.getUnit();
return formatSampleTooltip(name,
nameX, dataX, unitX,
nameY, dataY, unitY);
} }
}; };
@ -297,32 +305,33 @@ public abstract class Plot<T extends DataType, B extends DataBranch<T>, C extend
return type; return type;
} }
protected String formatSampleTooltip(String dataName, double dataX, String unitX, double dataY, String unitY, protected String formatSampleTooltip(String dataName,
boolean addYValue) { String nameX, double dataX, String unitX,
String nameY, double dataY, String unitY) {
final String strFormat = "%s: %s %s<br>";
DecimalFormat df_y = DecimalFormatter.df(dataY, 2, false);
DecimalFormat df_x = DecimalFormatter.df(dataX, 2, false); DecimalFormat df_x = DecimalFormatter.df(dataX, 2, false);
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append(String.format("<html>" + sb.append("<html>");
"<b><i>%s</i></b><br>", dataName));
if (addYValue) { sb.append(String.format("<b><i>%s</i></b><br>", dataName));
sb.append(String.format("Y: %s %s<br>", df_y.format(dataY), unitY));
sb.append(String.format(strFormat, nameX, df_x.format(dataX), unitX));
if (!Double.isNaN(dataY)) {
DecimalFormat df_y = DecimalFormatter.df(dataY, 2, false);
sb.append(String.format(strFormat, nameY, df_y.format(dataY), unitY));
} }
sb.append(String.format("X: %s %s<br>" + sb.append("</html>");
"</html>", df_x.format(dataX), unitX));
return sb.toString(); return sb.toString();
} }
protected String formatSampleTooltip(String dataName, double dataX, String unitX, double dataY, String unitY) { protected String formatSampleTooltip(String dataName, String nameX, double dataX, String unitX) {
return formatSampleTooltip(dataName, dataX, unitX, dataY, unitY, true); return formatSampleTooltip(dataName, nameX, dataX, unitX, "", Double.NaN, "");
}
protected String formatSampleTooltip(String dataName, double dataX, String unitX) {
return formatSampleTooltip(dataName, dataX, unitX, 0, "", false);
} }
protected static class LegendItems implements LegendItemSource { protected static class LegendItems implements LegendItemSource {

View File

@ -282,14 +282,13 @@ public class SimulationPlot extends Plot<FlightDataType, FlightDataBranch, Simul
double intercept = (maxThis * minLeft - maxLeft * minThis)/(maxThis - minThis); double intercept = (maxThis * minLeft - maxLeft * minThis)/(maxThis - minThis);
XYSeriesCollection collection = data[axisno]; XYSeriesCollection collection = data[axisno];
for (XYSeries series : (List<XYSeries>)(collection.getSeries())) { for (MetadataXYSeries series : (List<MetadataXYSeries>)(collection.getSeries())) {
Plot.MetadataXYSeries metaSeries = (Plot.MetadataXYSeries) series;
if (metaSeries.getBranchIdx() != branch) { if (series.getBranchIdx() != branch) {
continue; continue;
} }
int dataTypeIdx = metaSeries.getDataIdx(); int dataTypeIdx = series.getDataIdx();
FlightDataType type = config.getType(dataTypeIdx); FlightDataType type = config.getType(dataTypeIdx);
String yName = type.toString(); String yName = type.toString();
List<Double> range = dataBranch.get(type); List<Double> range = dataBranch.get(type);
@ -319,9 +318,9 @@ public class SimulationPlot extends Plot<FlightDataType, FlightDataBranch, Simul
// Convert units // Convert units
String unitX = config.getDomainAxisUnit().getUnit(); String unitX = config.getDomainAxisUnit().getUnit();
String unitY = metaSeries.getUnit(); String unitY = series.getUnit();
String unitT = FlightDataType.TYPE_TIME.getUnitGroup().getDefaultUnit().toString(); String unitT = FlightDataType.TYPE_TIME.getUnitGroup().getDefaultUnit().toString();
String tooltipText = formatEventTooltip(getNameBasedOnIdxAndSeries(metaSeries, sampleIdx), events, String tooltipText = formatEventTooltip(getNameBasedOnIdxAndSeries(series, sampleIdx), events,
tName, t, unitT, tName, t, unitT,
xName, xcoord, unitX, xName, xcoord, unitX,
yName, ycoord, unitY); yName, ycoord, unitY);