import { $, ElementFinder<% if (authenticationTypeOauth2) { _%>, element, by, browser<% } %>  } from 'protractor';

import AlertPage from './alert-page';

export default class SignInPage extends AlertPage {

  loginForm: ElementFinder = $('#login-page');
<%_ if (!authenticationTypeOauth2) { _%>
  username: ElementFinder = this.loginForm.$('#username');
  password: ElementFinder = this.loginForm.$('#password');
  loginButton: ElementFinder = this.loginForm.$('button[type=submit]');
<%_ } else { _%>
  username: ElementFinder = element(by.name('username'));
  password: ElementFinder = element(by.name('password'));
  loginButton: ElementFinder = element(by.css('input[type=submit]'));
<%_ } _%>
  title: ElementFinder = this.loginForm.$('#login-title');
  closeButton: ElementFinder = this.loginForm.$('.close');

  async getTitle() {
    return this.title.getAttribute('id');
  }

<%_ if (!authenticationTypeOauth2) { _%>
  async login(username: string, password: string) {
    await this.username.sendKeys(username);
    await this.password.sendKeys(password);
    await this.loginButton.click();
  }
<%_ } else { _%>
  async login(username: string, password: string) {
    await browser.sleep(1000);
    if (await this.username.isPresent()) {
      await this.username.sendKeys(username);
      await this.password.sendKeys(password);
      await this.loginButton.click();
    }
  }
<%_ } _%>
}
