001/* 002 * (C) Copyright 2015 Nuxeo SA (http://nuxeo.com/) and contributors. 003 * 004 * All rights reserved. This program and the accompanying materials 005 * are made available under the terms of the GNU Lesser General Public License 006 * (LGPL) version 2.1 which accompanies this distribution, and is available at 007 * http://www.gnu.org/licenses/lgpl-2.1.html 008 * 009 * This library is distributed in the hope that it will be useful, 010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 012 * Lesser General Public License for more details. 013 * 014 * Contributors: 015 * Nelson Silva <nsilva@nuxeo.com> 016 */ 017package org.nuxeo.functionaltests.pages.admincenter.activity; 018 019import org.nuxeo.functionaltests.EventListener; 020import org.openqa.selenium.By; 021import org.openqa.selenium.JavascriptExecutor; 022import org.openqa.selenium.WebDriver; 023 024import java.text.SimpleDateFormat; 025import java.util.Date; 026 027/** 028 * @since 7.10 029 */ 030public abstract class ActivityDashboardPage extends ActivityPage { 031 032 public static final String DATA_CHANGED_EVENT = "data-changed"; 033 034 private final String selector; 035 036 private final JavascriptExecutor js; 037 038 public ActivityDashboardPage(WebDriver driver, String selector) { 039 super(driver); 040 this.js = (JavascriptExecutor) driver; 041 this.selector = selector; 042 // ensure our elements are ready 043 findElementsWithTimeout(By.cssSelector(selector)); 044 } 045 046 public EventListener listenForDataChanges() { 047 return new EventListener(driver, ActivityDashboardPage.DATA_CHANGED_EVENT, selector); 048 } 049 050 public void setStartDate(Date date) { 051 String fmtDate = new SimpleDateFormat("yyyy-MM-dd").format(date); 052 StringBuilder sb = new StringBuilder(); 053 sb.append("var date = document.querySelectorAll(\"input[type='date']\")[0];"); 054 sb.append("date.value = '" + fmtDate + "';"); 055 // force set the date since change events might not be triggered 056 sb.append("var els = document.querySelectorAll('" + selector +"');"); 057 sb.append("for (var i=0; i<els.length; i++) { els[i].startDate = '" + fmtDate + "'; }"); 058 js.executeScript(sb.toString()); 059 } 060 061 public void setEndDate(Date date) { 062 String fmtDate = new SimpleDateFormat("yyyy-MM-dd").format(date); 063 StringBuilder sb = new StringBuilder(); 064 sb.append("var date = document.querySelectorAll(\"input[type='date']\")[1];"); 065 sb.append("date.value = '" + fmtDate + "';"); 066 // force set the date since change events might not be triggered 067 sb.append("var els = document.querySelectorAll('" + selector +"');"); 068 sb.append("for (var i=0; i<els.length; i++) { els[i].endDate = '" + fmtDate + "'; }"); 069 js.executeScript(sb.toString()); 070 } 071}