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
List<XYSeries> allSeries = new ArrayList<>();
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));
allSeries.add(series);
}
@ -35,10 +35,10 @@ public class CAPlot extends Plot<CADataType, CADataBranch, CAPlotConfiguration>
}
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) {
// 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);
// 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;
}
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
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;
}
protected String formatSampleTooltip(String dataName, double dataX, String unitX, double dataY, String unitY,
boolean addYValue) {
protected String formatSampleTooltip(String dataName,
String nameX, double dataX, String unitX,
String nameY, double dataY, String unitY) {
DecimalFormat df_y = DecimalFormatter.df(dataY, 2, false);
final String strFormat = "%s: %s %s<br>";
DecimalFormat df_x = DecimalFormatter.df(dataX, 2, false);
StringBuilder sb = new StringBuilder();
sb.append(String.format("<html>" +
"<b><i>%s</i></b><br>", dataName));
sb.append("<html>");
if (addYValue) {
sb.append(String.format("Y: %s %s<br>", df_y.format(dataY), unitY));
sb.append(String.format("<b><i>%s</i></b><br>", dataName));
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>" +
"</html>", df_x.format(dataX), unitX));
sb.append("</html>");
return sb.toString();
}
protected String formatSampleTooltip(String dataName, double dataX, String unitX, double dataY, String unitY) {
return formatSampleTooltip(dataName, dataX, unitX, dataY, unitY, true);
}
protected String formatSampleTooltip(String dataName, double dataX, String unitX) {
return formatSampleTooltip(dataName, dataX, unitX, 0, "", false);
protected String formatSampleTooltip(String dataName, String nameX, double dataX, String unitX) {
return formatSampleTooltip(dataName, nameX, dataX, unitX, "", Double.NaN, "");
}
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);
XYSeriesCollection collection = data[axisno];
for (XYSeries series : (List<XYSeries>)(collection.getSeries())) {
Plot.MetadataXYSeries metaSeries = (Plot.MetadataXYSeries) series;
for (MetadataXYSeries series : (List<MetadataXYSeries>)(collection.getSeries())) {
if (metaSeries.getBranchIdx() != branch) {
if (series.getBranchIdx() != branch) {
continue;
}
int dataTypeIdx = metaSeries.getDataIdx();
int dataTypeIdx = series.getDataIdx();
FlightDataType type = config.getType(dataTypeIdx);
String yName = type.toString();
List<Double> range = dataBranch.get(type);
@ -319,9 +318,9 @@ public class SimulationPlot extends Plot<FlightDataType, FlightDataBranch, Simul
// Convert units
String unitX = config.getDomainAxisUnit().getUnit();
String unitY = metaSeries.getUnit();
String unitY = series.getUnit();
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,
xName, xcoord, unitX,
yName, ycoord, unitY);