Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.
SOLVED

Scripting Help

Avatar

Level 1

Could someone please convert the excel formula below into Formscript or Javascript language for me? Sorry, but I've run out of patience.

=((([Cellname]-TRUNC([Cellname]))/60)*100)+TRUNC([Cellname])

Thanks

1 Accepted Solution

Avatar

Correct answer by
Level 10

Hi,

You could also try the following.

Set up a decimal field (different from a numeric field) for the user to input the number. Call this "input"

Then set up a second field to do the calculation and spit out the answer; call this "output".

In the script I have used variables (instead of invisible fields). These hold interim results for the duration of the script.

This is FormCalc:

var inputNr = input   // sets the variable inputNr as the full number the user inputted

var inputTrunc = Floor(inputNr)   // truncates the number to an integer without rounding

$ = ((inputNr - inputTrunc) / 60)*100 + inputTrunc    // does the calculation you want

Hope that helps,

Niall

View solution in original post

4 Replies

Avatar

Level 4

I made 4 fields, 2 visible and 2 invisible

Field 1: User enters Data

Field 2: invisible; calculated: Dezimalfield1 * 1; with no aftercommas (right pannel)

Field 3: (this is the [Cellname]-TRUNC([Cellname]): invisible; calculated: Dezimalfield1 - Dezimalfield2

Field 3: validate (javascript)

if (this.rawValue < 0)
{this.rawValue = this.rawValue + 1}
else {true;}

Field 4 (Solution): calculated: Dezimalfield3 *100 / 60 + Dezimalfield1 - Dezimalfield3

Hope you are alright with this one too, though it's quite complicated

Message was edited by: ocen12

Delte the text of the Decimalfield4 calculate and use instead on validate:


if (this.rawValue == Dezimalfield3.rawValue *100 / 60 + Dezimalfield1.rawValue - Dezimalfield3.rawValue)
{true;}
else
{this.rawValue = Dezimalfield3.rawValue *100 / 60 + Dezimalfield1.rawValue - Dezimalfield3.rawValue;}

Reason: it took the values of Decimalfield3 before validation. The values I tried worked...
(Learned another thing. Calculated fields populate with not validated values.)

Avatar

Correct answer by
Level 10

Hi,

You could also try the following.

Set up a decimal field (different from a numeric field) for the user to input the number. Call this "input"

Then set up a second field to do the calculation and spit out the answer; call this "output".

In the script I have used variables (instead of invisible fields). These hold interim results for the duration of the script.

This is FormCalc:

var inputNr = input   // sets the variable inputNr as the full number the user inputted

var inputTrunc = Floor(inputNr)   // truncates the number to an integer without rounding

$ = ((inputNr - inputTrunc) / 60)*100 + inputTrunc    // does the calculation you want

Hope that helps,

Niall

Avatar

Level 1

Thanks very much for that. I went with Niall's solution.

Here's another couple though:

=TRUNC([Cellname]/60)+([Cellname]-TRUNC([Cellname]/60))*60)/100)

=([Cellname]-TRUNC[Cellname])*100+TRUNC[Cellname]*60