package org.prime.arquilian.components;
import org.jboss.arquillian.graphene.Graphene;
import org.jboss.arquillian.graphene.findby.FindByJQuery;
import org.jboss.arquillian.graphene.fragment.Root;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import java.util.List;
import static org.jboss.arquillian.graphene.Graphene.guardAjax;
import static org.jboss.arquillian.graphene.Graphene.guardNoRequest;
/**
* Created by rmpestano on 4/5/14.
*/
public class Datatable {
@Root
private WebElement datatable;
@FindByJQuery("span.ui-paginator-current")
private PaginatorCurrentPage currentPage;
@FindByJQuery("span.ui-paginator-pages")
private PaginatorPages paginatorPages;
@FindByJQuery("select.ui-paginator-rpp-options")
private PaginatorDropdown paginatorDropdown;
public PaginatorCurrentPage getCurrentPage() {
return currentPage;
}
public PaginatorPages getPaginatorPages() {
return paginatorPages;
}
public PaginatorDropdown getPaginatorDropdown() {
return paginatorDropdown;
}
public List<WebElement> getTableRowsWithTDs(){
String tableId = datatable.getAttribute("id");
return datatable.findElements(By.xpath("//tbody[contains(@id,'" + tableId + "')]//tr[@role='row']//td[@role='gridcell']"));
}
public List<WebElement> getTableRows(){
String tableId = datatable.getAttribute("id");
return datatable.findElements(By.xpath("//tbody[contains(@id,'" +tableId +"')]//tr[@role='row']"));
}
public void filterInputColumn(String colId, String query) {
WebElement column = datatable.findElement(By.xpath("//th[contains(@class,'ui-filter-column') and contains(@id,'" + colId + "')]//input"));
guardAjax(column).sendKeys(query);
}
public void clearFilterColumn(String colId){
WebElement column = datatable.findElement(By.xpath("//th[contains(@class,'ui-filter-column') and contains(@id,'" + colId + "')]//input"));
guardNoRequest(column).clear();
}
public void filterSelectColumn(String colId, String query) {
StringBuilder xpath = new StringBuilder("//th[contains(@class,'ui-filter-column') and contains(@id,'" + colId + "')]");
xpath.append("//div[contains(@class,'ui-selectonemenu-trigger')]//span[contains(@class,'ui-icon-triangle-1-s')]");
datatable.findElement(By.xpath(xpath.toString())).click();
Graphene.waitAjax().until().element(By.className("ui-selectonemenu-items-wrapper")).is().present();
WebElement selectItem = datatable.findElement(By.xpath("//li[contains(@class,'ui-selectonemenu-item') and contains(text(),'" + query +"')]"));
guardAjax(selectItem).click();
}
}