Skip to content

Commit fe1e09a

Browse files
authored
Add legend to spectrum plot and automation coverage. (#1012)
1 parent 92b8690 commit fe1e09a

2 files changed

Lines changed: 46 additions & 3 deletions

File tree

signalData/resources/web/signaldata/QCView/SpectrumPlot.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ Ext4.define('LABKEY.SignalData.SpectrumPlot', {
5151
}
5252

5353
var layers = [];
54+
var legendData = [];
5455
var colors = this.colors;
55-
5656
var xleft = this.leftRight[0], xright = this.leftRight[1],
5757
low = this.lowHigh[0], high = this.lowHigh[1];
5858

@@ -84,6 +84,10 @@ Ext4.define('LABKEY.SignalData.SpectrumPlot', {
8484
c++;
8585

8686
layers.push(pointLayer);
87+
legendData.push({
88+
text: contents[i].runName,
89+
color: color
90+
});
8791
}
8892

8993
this.update('');
@@ -101,7 +105,11 @@ Ext4.define('LABKEY.SignalData.SpectrumPlot', {
101105
width: width,
102106
height: height,
103107
layers: layers,
104-
legendPos: 'none',
108+
legendPos: 'right',
109+
legendData: legendData,
110+
margins: {
111+
right: 200
112+
},
105113
labels: {
106114
x: {value: this.xLabel},
107115
y: {value: this.yLabel}

signalData/test/src/org/labkey/test/tests/signaldata/SignalDataRawTest.java

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,14 @@
2525
import org.labkey.test.BaseWebDriverTest;
2626
import org.labkey.test.Locator;
2727
import org.labkey.test.categories.Daily;
28+
import org.labkey.test.components.ext4.Window;
2829
import org.labkey.test.pages.ReactAssayDesignerPage;
2930
import org.labkey.test.pages.signaldata.SignalDataAssayBeginPage;
3031
import org.labkey.test.pages.signaldata.SignalDataRunViewerPage;
3132
import org.labkey.test.pages.signaldata.SignalDataUploadPage;
3233
import org.labkey.test.params.FieldDefinition;
3334
import org.labkey.test.util.DataRegionTable;
3435
import org.labkey.test.util.Ext4Helper;
35-
import org.labkey.test.components.ext4.Window;
3636
import org.labkey.test.util.PostgresOnlyTest;
3737
import org.labkey.test.util.data.TestDataUtils;
3838
import org.labkey.test.util.signaldata.SignalDataInitializer;
@@ -47,6 +47,7 @@
4747

4848
import static org.junit.Assert.assertArrayEquals;
4949
import static org.junit.Assert.assertEquals;
50+
import static org.junit.Assert.assertTrue;
5051

5152
@Category({Daily.class})
5253
public class SignalDataRawTest extends BaseWebDriverTest implements PostgresOnlyTest
@@ -128,6 +129,40 @@ public void testRunViewer()
128129
assertEquals("Wrong number of lines in plot", 2, plotLines.size());
129130
}
130131

132+
@Test
133+
public void testSpectrumPlotLegend()
134+
{
135+
List<String> filenames = List.of(RESULT_FILENAME_1, RESULT_FILENAME_2, RESULT_FILENAME_3);
136+
List<String> expectedRunNames = filenames.stream().map(this::resultNameFromFilename).toList();
137+
138+
log("Select " + filenames.size() + " runs for the spectrum plot");
139+
SignalDataAssayBeginPage beginPage = navigateToAssayLandingPage(SignalDataInitializer.RAW_SignalData_ASSAY);
140+
for (String filename : filenames)
141+
beginPage.selectData(filename, DEFAULT_RUN);
142+
143+
SignalDataRunViewerPage runsPage = beginPage.viewRuns();
144+
for (String runName : expectedRunNames)
145+
runsPage.checkRunViewerCheckbox(runName);
146+
147+
WebElement plotEl = runsPage.showPlot();
148+
149+
log("Verify one plotted line per run");
150+
List<WebElement> plotLines = Locator.tagWithClass("path", "line").findElements(plotEl);
151+
assertEquals("Wrong number of lines in spectrum plot", filenames.size(), plotLines.size());
152+
153+
log("Verify legend renders with one item per run");
154+
List<WebElement> legendItems = Locator.tagWithClass("g", "legend-item").findElements(plotEl);
155+
assertEquals("Wrong number of legend items in spectrum plot", filenames.size(), legendItems.size());
156+
157+
log("Verify legend labels match run names");
158+
List<String> legendLabels = Locator.tag("tspan").findElements(plotEl).stream()
159+
.map(WebElement::getText)
160+
.filter(t -> !t.isBlank())
161+
.toList();
162+
assertTrue("Legend labels " + legendLabels + " do not contain all expected run names " + expectedRunNames,
163+
legendLabels.containsAll(expectedRunNames));
164+
}
165+
131166
private String resultNameFromFilename(String filename)
132167
{
133168
//Trim extension

0 commit comments

Comments
 (0)