Skip to main content
Participating Frequently
January 16, 2025
Answered

Only Showing Text Fields when requested and script optimization.

  • January 16, 2025
  • 1 reply
  • 230 views

When my dropdown menu selects a rank, specific text field become visible. The issue is, when a rank that has more visible text fields is selected before one with less, you can still see the text fields.

 

if (event.value == "Rank | 1") {
    this.getField("pilot_info_rank_dc").value = "0";
    this.getField("SMT_trait_name1.0").display = display.visible;

}else if (event.value == "Rank | 2") {
    this.getField("pilot_info_rank_dc").value = "20";
    this.getField("SMT_trait_name1.0").display = display.visible;
    this.getField("SMT_mod_name1.0").display = display.visible;

}else if (event.value == "Rank | 3") {
    this.getField("pilot_info_rank_dc").value = "60";
    this.getField("SMT_trait_name1.0").display = display.visible;
    this.getField("SMT_mod_name1.0").display = display.visible;
    this.getField("SMT_mod_name1.1").display = display.visible;

}else if (event.value == "Rank | 4") {
    this.getField("pilot_info_rank_dc").value = "120";
    this.getField("SMT_trait_name1.0").display = display.visible;
    this.getField("SMT_mod_name1.0").display = display.visible;
    this.getField("SMT_mod_name1.1").display = display.visible;
    this.getField("SMT_mod_name1.2").display = display.visible;

}else if (event.value == "Rank | 5") {
    this.getField("pilot_info_rank_dc").value = "200";
    this.getField("SMT_trait_name1.0").display = display.visible;
    this.getField("SMT_trait_name1.1").display = display.visible;
    this.getField("SMT_mod_name1.0").display = display.visible;
    this.getField("SMT_mod_name1.1").display = display.visible;
    this.getField("SMT_mod_name1.2").display = display.visible;

}else if (event.value == "AI | Simple") {
    this.getField("pilot_info_rank_dc").value = "0";

}else if (event.value == "AI | Intermediate") {
    this.getField("pilot_info_rank_dc").value = "25";
    this.getField("SMT_mod_name1.0").display = display.visible;

}else if (event.value == "AI | Advanced") {
    this.getField("pilot_info_rank_dc").value = "50";
    this.getField("SMT_mod_name1.0").display = display.visible;
    this.getField("SMT_mod_name1.1").display = display.visible;

}

Im not sure if adding a simple ".display-display.hidden" to the beginning would work.

 

Also, this is spaghetti code to the extreme. Could someone help me optimize this?

Correct answer PDF Automation Station

Hide all the fields at the beginning of the script.  You only need to use the root of the field names:

this.getField("SMT_trait_name1").display = display.hidden;
this.getField("SMT_mod_name1").display = display.hidden;

1 reply

PDF Automation Station
Community Expert
Community Expert
January 16, 2025

Hide all the fields at the beginning of the script.  You only need to use the root of the field names:

this.getField("SMT_trait_name1").display = display.hidden;
this.getField("SMT_mod_name1").display = display.hidden;