/**
|
* @file Panel for weekly recurrence
|
* @author Pethaperumal Natarajan (Pethaperumal.NATARAJAN.intern@3ds.com)
|
*/
|
|
import { ButtonSOP } from '../../../libappsop/buttonsop';
|
import { CheckboxSOP } from '../../../libappsop/checkboxsop';
|
import { DateTimeSelectorSOP } from '../../../libappsop/datetimeselectorsop';
|
import { EditFieldSOP } from '../../../libappsop/editfieldsop';
|
import { PanelSOP } from '../../../libappsop/panelsop';
|
import { UtilSOP } from '../../../libappsop/utilsop';
|
|
export class PanelRecurrenceWeekly extends PanelSOP {
|
// Buttons
|
public readonly btnMonday = new ButtonSOP('btnMonday');
|
public readonly btnTuesday = new ButtonSOP('btnTuesday');
|
public readonly btnWednesday = new ButtonSOP('btnWednesday');
|
public readonly btnThursday = new ButtonSOP('btnThursday');
|
public readonly btnFriday = new ButtonSOP('btnFriday');
|
public readonly btnSaturday = new ButtonSOP('btnSaturday');
|
public readonly btnSunday = new ButtonSOP('btnSunday');
|
|
// Edit Fields
|
public readonly efRepeatFrequency = new EditFieldSOP('edtEveryNrOfWeeks');
|
public readonly efNrOfOccurrencesToEnd = new EditFieldSOP('edtNrOfOccurrences');
|
|
// Checkboxes
|
public readonly cbNoEndDate = new CheckboxSOP('ckbNoEndDate');
|
public readonly cbEndAfter = new CheckboxSOP('ckbEndAfter');
|
public readonly cbEndBy = new CheckboxSOP('ckbEndBy');
|
|
// Date Time Selector
|
public readonly dtsRecurrenceEndDate = new DateTimeSelectorSOP('dsEndOfPeriod');
|
|
public constructor() {
|
super('pnlRecurrenceDetails');
|
}
|
|
/**
|
* Click day buttons to indicate repeat on days. Pass empty array to toggle off all day buttons.
|
*
|
* @param toggleOnDays One or more day number to toggle on.
|
*/
|
public async setRepeatWeeklyOnDays(toggleOnDays: number[]): Promise<void> {
|
await this.toggleRepeatOnDayButton(this.btnMonday, toggleOnDays.includes(1)); // Checks if day index part of passed in "days", the method will correctly click button to toggle on/off
|
await this.toggleRepeatOnDayButton(this.btnTuesday, toggleOnDays.includes(2));
|
await this.toggleRepeatOnDayButton(this.btnWednesday, toggleOnDays.includes(3));
|
await this.toggleRepeatOnDayButton(this.btnThursday, toggleOnDays.includes(4));
|
await this.toggleRepeatOnDayButton(this.btnFriday, toggleOnDays.includes(5));
|
await this.toggleRepeatOnDayButton(this.btnSaturday, toggleOnDays.includes(6));
|
await this.toggleRepeatOnDayButton(this.btnSunday, toggleOnDays.includes(0));
|
}
|
|
private async toggleRepeatOnDayButton(btnDay: ButtonSOP, toggleOn: boolean): Promise<void> {
|
if ((await btnDay.isToggled()) !== toggleOn) {
|
await btnDay.click();
|
}
|
}
|
}
|
|
const stepPanelRecurrenceWeekly = {
|
setRepeatWeeklyOnDays: (toggleOnDays: number[]): string => {
|
const action = toggleOnDays.length === 0 ? 'ensure no Repeat on days button pressed' : `ensure only Repeat on days button pressed for ${UtilSOP.getDaysString(toggleOnDays)}`;
|
return `In panel Repetition details, ${action}.`;
|
},
|
};
|
|
export { stepPanelRecurrenceWeekly as StepPanelRecurrenceWeekly };
|