Hello, I need some help using code to run different calculations based on the user’s specific dropdown selection.
User input form is as follows:
-
User selects a Leave Type (#dropdown1)
-
User selects a Start Date (#datePicker1)
-
User selects an End Date (#datePicker2)
-
Number of Leave Days field (#input3) should show the respective number of leave days based on the Start Date and End Date AND Leave Type
Below is the list of Leave Types users can select:
Example 1: User selects any type of leave BUT Half-Day Annual Leave (Morning), Half-Day Annual Leave (Afternoon) or Maternity Leave
E.g. User selects Full-Day Annual Leave
• Number of Leave Days from 24 April to 27 April = 2 → 25 and 26 April are weekends
• Calculations using the code below for any Leave Type is accurate and functional (credits to @tony-brunsman https://www.wix.com/corvid/forum/community-discussion/calculate-number-of-days-between-two-datepickers-excluding-weekends-and-disabled-dates?origin=member_posts_page )
// Calculate number of leave days EXCLUDING WEEKENDS AND DISABLED DATES
export function datePicker1_change(event) {
var date1 = $w('#datePicker1').value
}
export function datePicker2_change(event) {
let d1 = $w("#datePicker1").value;
let d2 = $w("#datePicker2").value;
let disDates = $w("#datePicker2").disabledDates;
let disDOW = $w("#datePicker2").disabledDaysOfWeek;
let leaveDays = 0,
isDisabled = false;
let incrDate = d1,
dow = 0;
do {
isDisabled = false;
dow = incrDate.getDay();
disDates.forEach((disDate) => {
// need to loop through array to do this comparison
if (disDate.toDateString() === incrDate.toDateString()) {
isDisabled = true;
}
})
if (isDisabled === false && disDOW.indexOf(dow) === -1) {
leaveDays = leaveDays + 1;
}
incrDate.setDate(incrDate.getDate() + 1);
} while (incrDate <= d2);
$w("#input3").value = leaveDays;
}
export function button1_click(event) {
//Add your code for this event here:
var leaveDays = datePicker2_change(event);
$w('#input3').expand()
$w('#input3').value = leaveDays.toString();
}
Example 2: User selects Half-Day Annual Leave (Morning) or Half-Day Annual Leave (Afternoon)
Process is as follows:
-
User selects either Half-Day Annual Leave (Morning) or Half-Day Annual Leave (Afternoon) (#dropdown1)
-
User selects Start Date (#datePicker1)
-
End Date field (#datePicker2) is disabled
-
End Date field (#datePicker2) displays the same date as the Start Date
-
Calculate Number of Leave Days button (#button1) is disabled
-
Number of Leave Days field (#input3) expands on change of Start Date to display “0.5” ONLY
Example 3: User selects Maternity Leave
Process is as follows:
- User selects Maternity Leave (#dropdown1)
- User selects Start Date (#datePicker1)
- User selects End Date (#datePicker2)
- User clicks Calculate Number of Leave Days button (#button1) and Number of Leave Days field (#input3) expands
- Number of Leave Days field (#input3) should show 4 → 25 and 26 April are weekends → all weekends and public holidays are included in the calculation for number of Maternity Leave days
Please advise on how to run specific codes for calculating the number of leave days based on the user’s dropdown selection for Example 2 and Example 3.
Much help is appreciated. Thank you.