Select or unselect Checkboxes based on user input

Select or unselect Checkboxes based on user input

Requirement

Select or unselect a checkbox based on the user's input in another field.

Use Case

A travel management application allows for booking travel packages for tourists. Some need a whole package, while others may only need accommodation or tour guides. Based on the options selected by the tourists, we will select or unselect checkboxes.
 
See how it works

Steps to follow

1. Create the form with the following details:
Form
Form Link Name
Field Type
Field Name
Field Link Name
Let's go!
Let_s_go
Drop Down
From
From
Drop Down
To
To
Date
Date of Travel
Date_of_Travel
Drop Down
Travel Days
Travel_Days
Check box - Options listing as below:
  • Complete Package
  • Accommodation
  • Food
  • Tour Guides
  • Tickets
  • Car Rentals
Facilities Needed
Facilities_Needed
Single Line
Previously Selected
Previously_Selected


The Facilities Needed field is a checkbox, which will list all common facilities needed during a tour or a vacation, with options like Accommodation, Food, Tour Guides, Tickets, and Car Rentals. Complete Package option would include everything in the list. When a tourist selects this option, automatically every other checkbox is selected. Similarly, when a tourist unselects this, every option is unselected, making it open for them to choose just the options they want.
 
The Previously Selected field is used to track the options selected by the tourists to allow them better selection of the options. This is not necessary for them, so let's create a workflow to hide the field.
 
2. Create a workflow to hide the Previously Selected field on the load of the form.
 
3. Add the below code in the Deluge Editor to hide it.
  1. hide Previously_Selected;

4. Now, we shall proceed to our checkboxes. Let's create a workflow to execute on the input of the Facilities Needed field.
 
3. Add the below code in the Deluge Editor:
  1. //Get the previous selection
  2. selectedList = input.Facilities_Needed;
  3. //Get the number of options selected
  4. size = selectedList.size();
  5. //When current selection has Complete Package select all
  6. if(selectedList.contains("Complete Package") && !input.Previously_Selected.contains("Complete Package"))
  7. {
  8.  Facilities_Needed.selectall();
  9.  input.Previously_Selected = selectedList;
  10. }
  11. //When the Previously Selected has Complete Package deselect all
  12. else if(input.Previously_Selected.contains("Complete Package") && !selectedList.contains("Complete Package"))
  13. {
  14.  Facilities_Needed.deselectall();
  15.  input.Previously_Selected = selectedList;
  16. }
  17. //When Previously Selected and Facilities Needed do not have Complete Package and all the 5 options are selected, select all
  18. else if(size == 5 && !Previously_Selected.contains("Complete Package") && !selectedList.contains("Complete Package"))
  19. {
  20.  Facilities_Needed.selectall();
  21. //Append Complete Package to the Previously Selected field for next selection
  22.  input.Previously_Selected = selectedList.toString() + ",Complete Package";
  23. }
  24. //When Previously Selected has Complete Package and all the 5 options are selected, deselect Complete Package
  25. else if(size == 5 && input.Previously_Selected.contains("Complete Package"))
  26. {
  27.  Facilities_Needed.deselect("Complete Package");
  28. //Remove Complete Package from the Previously Selected field for next selection
  29.  input.Previously_Selected = selectedList.toString().replaceAll("Complete Package","");
  30. }

See how it works