/* * (C) Copyright 2015-2016 Nuxeo SA (http://nuxeo.com/) and others. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * Contributors: * Nelson Silva <nsilva@nuxeo.com> */ package org.nuxeo.functionaltests.pages.admincenter.activity; import java.text.SimpleDateFormat; import java.util.Date; import org.nuxeo.functionaltests.EventListener; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; /** * @since 7.10 */ public abstract class ActivityDashboardPage extends ActivityPage { public static final String DATA_CHANGED_EVENT = "data-changed"; private final String selector; private final JavascriptExecutor js; public ActivityDashboardPage(WebDriver driver, String selector) { super(driver); this.js = (JavascriptExecutor) driver; this.selector = selector; // ensure our elements are ready findElementsWithTimeout(By.cssSelector(selector)); } public EventListener listenForDataChanges() { return new EventListener(driver, ActivityDashboardPage.DATA_CHANGED_EVENT, selector); } public void setStartDate(Date date) { String fmtDate = new SimpleDateFormat("yyyy-MM-dd").format(date); StringBuilder sb = new StringBuilder(); sb.append("var date = document.querySelectorAll(\"input[type='date']\")[0];"); sb.append("date.value = '" + fmtDate + "';"); // force set the date since change events might not be triggered sb.append("var els = document.querySelectorAll('" + selector + "');"); sb.append("for (var i=0; i<els.length; i++) { els[i].startDate = '" + fmtDate + "'; }"); js.executeScript(sb.toString()); } public void setEndDate(Date date) { String fmtDate = new SimpleDateFormat("yyyy-MM-dd").format(date); StringBuilder sb = new StringBuilder(); sb.append("var date = document.querySelectorAll(\"input[type='date']\")[1];"); sb.append("date.value = '" + fmtDate + "';"); // force set the date since change events might not be triggered sb.append("var els = document.querySelectorAll('" + selector + "');"); sb.append("for (var i=0; i<els.length; i++) { els[i].endDate = '" + fmtDate + "'; }"); js.executeScript(sb.toString()); } }