import { Form } from '../../e2elib/lib/src/pageobjects/form.component';
|
import { ListBase } from '../../libappbase/listbase';
|
|
export class FormPeriod extends Form {
|
public lstStartOfPlanning = new ListStartOfPlanning();
|
public lstPeriod = new ListPeriod();
|
private readonly _months = ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC'];
|
|
public constructor() {
|
super('FormPeriods');
|
}
|
|
/**
|
* Get the start of planning date
|
*
|
* @returns Start date of planning date
|
*/
|
public async getStartOfPlanningDate(): Promise<Date> {
|
const row = await this.lstStartOfPlanning.getRowByIndex(0);
|
const cell = await row.getCell('Start of planning');
|
const startOfPlanning = await cell.getValue();
|
const dateValues = startOfPlanning.split('-');
|
const startOfPlanningDate = new Date();
|
startOfPlanningDate.setFullYear(Number(dateValues[2]), this._months.indexOf(dateValues[1].toUpperCase()), Number(dateValues[0]));
|
return startOfPlanningDate;
|
}
|
|
/**
|
* Get the end of planning date, calculated by start of planning + future planning periods
|
*
|
* @returns End date of planning date
|
*/
|
public async getEndOfPlanningDate(): Promise<Date> {
|
const startOfPlanningDate = await this.getStartOfPlanningDate();
|
const endOfPlanningDate = new Date(startOfPlanningDate);
|
const futurePeriod = await this.lstPeriod.getFuturePeriodByName('Planning periods');
|
const month = endOfPlanningDate.getMonth() + futurePeriod;
|
endOfPlanningDate.setMonth(month);
|
return endOfPlanningDate;
|
}
|
|
/**
|
* Get all the necessary values for the planning period.
|
*
|
* @returns PlanningPeriods
|
*/
|
public async getStartAndEndOfPlanning(): Promise<PlanningPeriods> {
|
const startOfPlanningDate = await this.getStartOfPlanningDate();
|
const endOfPlanningDate = await this.getEndOfPlanningDate();
|
const sopYear = startOfPlanningDate.getFullYear().toString();
|
const eopYear = endOfPlanningDate.getFullYear().toString();
|
const sopString = `${startOfPlanningDate.getDate().toString()}-${startOfPlanningDate.toLocaleString(undefined, {
|
month: 'short',
|
})}-${sopYear}`;
|
const eopString = `${endOfPlanningDate.getDate().toString()}-${endOfPlanningDate.toLocaleString(undefined, {
|
month: 'short',
|
})}-${eopYear}`;
|
|
return { startOfPlanningDate, endOfPlanningDate, sopYear, eopYear, sopString, eopString };
|
}
|
}
|
|
export interface PlanningPeriods {
|
startOfPlanningDate: Date;
|
endOfPlanningDate: Date;
|
sopYear: string;
|
eopYear: string;
|
sopString: string;
|
eopString: string;
|
}
|
|
export class ListStartOfPlanning extends ListBase {
|
public constructor() {
|
super('ListStartOfPlanning');
|
}
|
}
|
|
export class ListPeriod extends ListBase {
|
public constructor() {
|
super('ListPeriodSpec');
|
}
|
|
/**
|
* Get future periods number of period by name
|
*
|
* @param periodName Name of period
|
* @returns Future period number in months
|
*/
|
public async getFuturePeriodByName(periodName: string): Promise<number> {
|
const periodRow = await this.getRowByValue([{ columnID: 'Name', value: periodName }]);
|
return Number(await (await periodRow.getCell('# Future periods')).getValue());
|
}
|
}
|