You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

62 lines
1.7 KiB

/***************************************************************************
* Copyright (C) 2018 Intevation GmbH <intevation@intevation.de> *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
***************************************************************************/
/* Builtin functions for Okular's PDF JavaScript interpretation. */
/** AFSimple_Calculate
*
* cFunction is a string that identifies the operation.
* It is one of AVG, SUM, PRD, MIN, MAX
* cFields is an array of the names of the fields used to calculate.
*/
function AFSimple_Calculate( cFunction, cFields )
{
var ret = 0;
if ( cFunction === "PRD" )
{
ret = 1;
}
for (i = 0; i < cFields.length; i++)
{
var field = Doc.getField( cFields[i] );
var val = Number( field.value );
if ( cFunction === "SUM" || cFunction === "AVG" )
{
ret += val;
}
else if ( cFunction === "PRD" )
{
ret *= val;
}
else if ( cFunction === "MIN" )
{
if ( i === 0 || val < ret )
{
ret = val;
}
}
else if ( cFunction === "MAX" )
{
if ( i === 0 || val > ret )
{
ret = val;
}
}
}
if ( cFunction === "AVG" )
{
ret /= cFields.length;
}
event.value = ret;
}