Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

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

Learn more

View all

Sign in to view all badges

SOLVED

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

51sunshine
Level 1
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
jasotastic81
Correct answer by
Level 7
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")

View solution in original post

8 Replies
Mandy_Wiesener
Level 5
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";

}

Hope it's helpful?

Mandy

51sunshine
Level 1
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

LC sample.jpg

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

Thanks for your help.

jasotastic81
Correct answer by
Level 7
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")

View solution in original post

51sunshine
Level 1
Level 1

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

jasotastic81
Level 7
Level 7

No problem! Thanks for marking as the answer.

51sunshine
Level 1
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.

jasotastic81
Level 7
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)...

51sunshine
Level 1
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.