Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 72 additions & 0 deletions src/org/labkey/test/components/react/QueryChartDialog.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import org.labkey.test.Locator;
import org.labkey.test.WebDriverWrapper;
import org.labkey.test.components.ColorPickerInput;
import org.labkey.test.components.bootstrap.ModalDialog;
import org.labkey.test.components.html.Checkbox;
import org.labkey.test.components.html.Input;
Expand Down Expand Up @@ -577,6 +578,72 @@ public void clickDeleteChart(boolean confirmDelete)
}
}

public boolean hasFillColorOption()
{
return elementCache().fillColorPicker.isDisplayed();
}

public QueryChartDialog setFillColor(String hexColor)
{
return setColor(elementCache().fillColorPicker, hexColor);
}

public boolean hasLineColorOption()
{
return elementCache().lineColorPicker.isDisplayed();
}

public QueryChartDialog setLineColor(String hexColor)
{
return setColor(elementCache().lineColorPicker, hexColor);
}

public boolean hasPointColorOption()
{
return elementCache().pointColorPicker.isDisplayed();
}

public QueryChartDialog setPointColor(String hexColor)
{
return setColor(elementCache().pointColorPicker, hexColor);
}

private QueryChartDialog setColor(WebElement colorPickerContainer, String hexColor)
{
Locator.tagWithClassContaining("button", "color-picker__button").findElement(colorPickerContainer).click();
ColorPickerInput colorInput = new ColorPickerInput.ColorPickerInputFinder(getDriver()).findWhenNeeded();
colorInput.setHexValue(hexColor);
colorPickerContainer.click(); // need to click outside the color picker to close it
return this;
}

public boolean hasColorPaletteOption()
{
return elementCache().reactSelectByLabel("Color Palette", true) != null;
}

public QueryChartDialog selectColorPalette(String option)
{
elementCache().reactSelectByLabel("Color Palette").select(option);
return this;
}

public boolean hasLineColorAndStyleSelectOption()
{
return elementCache().reactSelectByLabel("Line Color and Style", true) != null;
}

public QueryChartDialog selectLineColorAndStyleOption(String option, String hexColor)
{
var seriesDropdown = elementCache().reactSelectByLabel("Line Color and Style");
// series select component uses a custom option renderer
seriesDropdown.setOptionLocator((String type) -> Locator.byClass("chart-builder-type-option").withAttribute("data-series-shape", type));
seriesDropdown.select(option);
if (hexColor != null)
setColor(elementCache().seriesColorPicker, hexColor);
return this;
}

@Override
protected ElementCache newElementCache()
{
Expand All @@ -602,6 +669,11 @@ protected class ElementCache extends ModalDialog.ElementCache
final Checkbox inheritableCheckbox = Checkbox.Checkbox(Locator.input("inheritable")).findWhenNeeded(settingsPanel);
final Checkbox fullWidthCheckbox = Checkbox.Checkbox(Locator.input("use-full-width")).findWhenNeeded(settingsPanel);

final WebElement fillColorPicker = Locator.byClass("color-picker").withAttribute("data-name", "boxFillColor").refindWhenNeeded(settingsPanel);
final WebElement lineColorPicker = Locator.byClass("color-picker").withAttribute("data-name", "lineColor").refindWhenNeeded(settingsPanel);
final WebElement pointColorPicker = Locator.byClass("color-picker").withAttribute("data-name", "pointFillColor").refindWhenNeeded(settingsPanel);
final WebElement seriesColorPicker = Locator.byClass("color-picker").withAttribute("data-name", "seriesColor").refindWhenNeeded(settingsPanel);

public ReactSelect reactSelectByLabel(String label)
{
return reactSelectByLabel(label, false);
Expand Down