Ver código fonte

Fix an issue with frozen column count and unhiding. (#11929) (#11932)

* Fix an issue with frozen column count and unhiding.

Unhiding logic should take into account that there can be hidden frozen
columns that are not the column currently getting shown.
tags/8.10.3^0
Anna Koskinen 4 anos atrás
pai
commit
d58be4ef41
Nenhuma conta vinculada ao e-mail do autor do commit

+ 3
- 1
client/src/main/java/com/vaadin/client/widgets/Grid.java Ver arquivo

@@ -5336,7 +5336,9 @@ public class Grid<T> extends ResizeComposite implements HasSelectionHandlers<T>,
int escalatorFrozenColumns = grid.escalator
.getColumnConfiguration().getFrozenColumnCount();
if (gridFrozenColumns > escalatorFrozenColumns
&& escalatorFrozenColumns == columnIndex) {
&& escalatorFrozenColumns == columnIndex
&& grid.getColumns()
.indexOf(this) < gridFrozenColumns) {
grid.escalator.getColumnConfiguration()
.setFrozenColumnCount(++escalatorFrozenColumns);
}

+ 40
- 0
uitest/src/main/java/com/vaadin/tests/components/grid/GridUnhideColumnsWithFrozen.java Ver arquivo

@@ -0,0 +1,40 @@
package com.vaadin.tests.components.grid;

import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.Component;
import com.vaadin.ui.Grid;
import com.vaadin.ui.Label;

public class GridUnhideColumnsWithFrozen extends AbstractTestUI {

@Override
protected void setup(VaadinRequest request) {
Grid<Integer> grid = new Grid<>();
for (int i = 0; i < 15; i++) {
String columnId = String.valueOf(i);
Grid.Column<Integer, Component> column = addColumn(grid, columnId);
column.setHidable(true);
if (i == 3 || i == 4) {
column.setHidden(true);
}
column.setCaption(columnId);
column.setId(columnId);
}
grid.setFrozenColumnCount(4);
grid.setItems(0);
addComponent(grid);
}

private Grid.Column<Integer, Component> addColumn(Grid<Integer> grid,
String columnId) {
return grid.addComponentColumn(i -> new Label(columnId));
}

@Override
protected String getTestDescription() {
return "Columns 0-3 have been set frozen, unhiding column 4 before column 3"
+ " should not make column 4 frozen.";
}

}

+ 38
- 0
uitest/src/test/java/com/vaadin/tests/components/grid/GridUnhideColumnsWithFrozenTest.java Ver arquivo

@@ -0,0 +1,38 @@
package com.vaadin.tests.components.grid;

import static org.junit.Assert.assertEquals;

import java.util.List;

import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;

import com.vaadin.testbench.elements.GridElement;
import com.vaadin.tests.tb3.SingleBrowserTest;

public class GridUnhideColumnsWithFrozenTest extends SingleBrowserTest {

@Test
public void visibleFrozenColumnCount() {
openTestURL();

GridElement grid = $(GridElement.class).first();
List<WebElement> frozen = grid.getHeader()
.findElements(By.className("frozen"));
assertEquals("Unexpected frozen column count before unhiding", 3,
frozen.size());

grid.findElement(By.className("v-grid-sidebar-button")).click();
List<WebElement> hidden = findElement(
By.className("v-grid-sidebar-content"))
.findElements(By.className("hidden"));
assertEquals("Unexpected amount of hidden columns", 2, hidden.size());
assertEquals("Unexpected hidden column", "4", hidden.get(1).getText());
hidden.get(1).click();

frozen = grid.getHeader().findElements(By.className("frozen"));
assertEquals("Unexpected frozen column count after unhiding", 3,
frozen.size());
}
}

Carregando…
Cancelar
Salvar