Level 1

0% to

Level 2

Tip /

to gain points, level up, and earn exciting badges like the new
Mission!

View all

Adobe Summit 2023 [19th to 23rd March, Las Vegas and Virtual] | Complete AEM Session & Lab list
SOLVED

## script for calculated-read only field that will change color based on condition

Level 1

I need help creating a script that would make a calculated-read only field change color if a condition is met.  Should the script placed in the calculated event?

The fields are as follows:

CourseNum (auto sum calculates 11 numeric different fields)

A1P (numeric calculated read only field)

AP (numeric calculated read only field)

HIGHA (the sum of A1P and AP) - this is also a calculated read-only field

So the condition would be:

if CourseNum >20 and HIGHA >=50%

then change the background color of HIGHA to yellow

otherwise it should be white

1 Accepted Solution

Level 7

it's your if statement. The "or" is the last operation used. So, you're actually saying, "if year is 4 and (B1P+BP)>".45" OR if (B1P+BP)<".30" and CourseNum>="20", then change the background."

Try:

if (form1.#subform[0]...YearLevel == 4 & ((B1P+BP)>".45" or (B1P+BP)<".30") & CourseNum>="20")

8 Replies

Level 5

It should be the following script in javascript not formcalc:

//Perhaps you have to delete the % of the second value if the % it's only in the display pattern

if(CourseNum.rawValue > "20" && HIGHA.rawValue >= "50%")

{

HIGHA.fillColor = "245,245,0";

}else

{

HIGHA.fillColor = "255,255,255";

}

Mandy

Level 1

update - I've provided a screen shot below.  I'm a newbie, so my terminology may not be correct as I describe my question.

When the user enters data in the "number of students" row - the "percent of class total" is auto-calculated.  Depending on the year level, class size, and percent of class the percent range the fields in the chart belwo change colour (see screen shot).  My problem is that more than one field changes colour once the data is enetered although the script specifics the year level.  In the shot below only <5% should be highlighted, but the 30-45% is also highlighted because it is true (but only if the year level was 4).  How can I revise the script to ensure checks the year first on the year?

The script for the 5% is as follows:

form1.#subform[0].#subform[1].#subform[2].YEAR1[2].TextField20::calculate - (FormCalc, client)

if (form1.#subform[0].#subform[1].#subform[2].Row[0].YearLevel == 1 & (EP+FP)>".05" & CourseNum>="20") then

\$.fillColor = "255,225,0";

else

\$.fillColor = "255,255,255";

endif

The script for the 30-45% is as follows:

form1.#subform[0].#subform[1].#subform[2].YEAR4.TextField17::calculate - (FormCalc, client)

if (form1.#subform[0].#subform[1].#subform[2].Row[0].YearLevel == 4 & (B1P+BP)>".45" or (B1P+BP)<".30" & CourseNum>="20")

then

\$.fillColor = "225,225,0";

else

\$.fillColor = "255,255,255";

endif

Hoping someone can shed some light as I've looked up a lot of stuff and can't find anything.

Level 7

it's your if statement. The "or" is the last operation used. So, you're actually saying, "if year is 4 and (B1P+BP)>".45" OR if (B1P+BP)<".30" and CourseNum>="20", then change the background."

Try:

if (form1.#subform[0]...YearLevel == 4 & ((B1P+BP)>".45" or (B1P+BP)<".30") & CourseNum>="20")

Level 1

Thank you for taking the time to answer!!!!!

Level 7

No problem! Thanks for marking as the answer.

Level 1

I'm having the same issue now that my script includes more than one option from the drop-down list.  Using the example above, I now have included the option of year 4,6, or 8:

form1.#subform[0].#subform[1].#subform[2].YEAR4.TextField17::calculate - (FormCalc, client)

if (form1.#subform[0].#subform[1].#subform[2].Row[0].YearLevel == "4" or "6" or "8" & ((B1P+BP)>".45" or (B1P+BP)<".30") & CourseNum>="20")

then

\$.fillColor = "225,225,0";

else

\$.fillColor = "255,255,255";

endif

Hope you can help.

Level 7

I'm thinking you're giving the user the option of picking 4, 6, or 8 and all of those being valid choices. If so, try parenthesis around that part of your condition.

if((form1.#subform[0]...YearLevel eq "4" or "6" or "8") & ((B1P+BP)...

I don't use Formcalc enough to tell you if using "or" like that is going to work, though. You may have to spell out the entire condition.

if ((form1.#subform[0]...YearLevel eq "4" or form1.#subform[0]...YearLevel eq "6" or ... eq "8") & ((B1P+BP)...

Level 1

Thanks once again!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

You are correct (for anyone who did not understand my question) - it is a drop down-list where 3 of the 8  options have the same condition to follow.

The second suggestion of spelling out the entire condition worked like a charm.