[]
        
(Showing Draft Content)

GC.Spread.CalcEngine.Functions.Function

Class: Function

CalcEngine.Functions.Function

Hierarchy

Table of contents

Constructors

Properties

Methods

Constructors

constructor

new Function(name, minArgs?, maxArgs?, functionDescription?)

Represents an abstract base class for defining functions.

example

class FactorialFunction extends GC.Spread.CalcEngine.Functions.Function {
    constructor () {
        super('FACTORIAL', 1, 1, {
            description: "Function to calculate the Fibonacci number.",
            parameters: [{ name: 'n' }]
        });
    }
    evaluate (n) {
        var fib = [0, 1];
        for (var i = 2; i <= n; i++) {
          fib[i] = fib[i - 1] + fib[i - 2];
        }
        return fib[n];
    }
}
spread.addCustomFunction(new FactorialFunction());
spread.getActiveSheet().setFormula(0, 0, '=FACTORIAL(10)');

Parameters

Name Type Description
name string The name of the function.
minArgs? number -
maxArgs? number -
functionDescription? IFunctionDescription -

Properties

maxArgs

maxArgs: number

Represents the maximum number of arguments for the function.


minArgs

minArgs: number

Represents the minimum number of arguments for the function.


name

name: string

Represents the name of the function.


typeName

typeName: string

Represents the type name string used for supporting serialization.

Methods

acceptsArray

acceptsArray(argIndex): boolean

Determines whether the function accepts array values for the specified argument.

function

Parameters

Name Type Description
argIndex number Index of the argument.

Returns

boolean

true if the function accepts array values for the specified argument; otherwise, false.


acceptsError

acceptsError(argIndex): boolean

Indicates whether the function can process Error values.

function

Parameters

Name Type Description
argIndex number Index of the argument.

Returns

boolean

true if the function can process Error values for the specified argument; otherwise, false.


acceptsMissingArgument

acceptsMissingArgument(argIndex): boolean

Indicates whether the Evaluate method can process missing arguments.

Parameters

Name Type Description
argIndex number Index of the argument

Returns

boolean

true if the Evaluate method can process missing arguments; otherwise, false.


acceptsReference

acceptsReference(argIndex): boolean

Determines whether the function accepts Reference values for the specified argument.

function

Parameters

Name Type Description
argIndex number Index of the argument.

Returns

boolean

true if the function accepts Reference values for the specified argument; otherwise, false.


description

description(): IFunctionDescription

Returns the description of the function.

function

Returns

IFunctionDescription

The description of the function.


evaluate

evaluate(...args): any

Returns the result of the function applied to the arguments.

Parameters

Name Type Description
...args any Arguments for the function evaluation

Returns

any

The result of the function applied to the arguments.


findBranchArgument

findBranchArgument(test): number

Finds the branch argument.

example

function EqualsFunction() {
    this.name = 'Equals';
    this.maxArgs = 3;
    this.minArgs = 3;
}
EqualsFunction.prototype = new GC.Spread.CalcEngine.Functions.Function();
EqualsFunction.prototype.evaluate = function(logicalTest, valueIfTrue, valueIfFalse) {
    return logicalTest ? valueIfTrue : valueIfFalse;
}
EqualsFunction.prototype.isBranch = function() {
    return true;
}
EqualsFunction.prototype.findTestArgument = function() {
    return 0;
}
EqualsFunction.prototype.findBranchArgument = function(logicalTestResult) {
    if (logicalTestResult === true) {
        return 1;
    }
    return 2;
}
var equalsFunction = new EqualsFunction();
var spread = GC.Spread.Sheets.findControl("ss") || GC.Spread.Sheets.findControl("sampleDiv");
spread.addCustomFunction(equalsFunction);

Parameters

Name Type Description
test any The test.

Returns

number

Indicates the index of the argument that would be treated as the branch condition.


findTestArgument

findTestArgument(): number

Finds the test argument when this function is branched.

example

function EqualsFunction() {
    this.name = 'Equals';
    this.maxArgs = 3;
    this.minArgs = 3;
}
EqualsFunction.prototype = new GC.Spread.CalcEngine.Functions.Function();
EqualsFunction.prototype.evaluate = function(logicalTest, valueIfTrue, valueIfFalse) {
    return logicalTest ? valueIfTrue : valueIfFalse;
}
EqualsFunction.prototype.isBranch = function() {
    return true;
}
EqualsFunction.prototype.findTestArgument = function() {
    return 0;
}
EqualsFunction.prototype.findBranchArgument = function(logicalTestResult) {
    if (logicalTestResult === true) {
        return 1;
    }
    return 2;
}
var equalsFunction = new EqualsFunction();
var spread = GC.Spread.Sheets.findControl("ss") || GC.Spread.Sheets.findControl("sampleDiv");
spread.addCustomFunction(equalsFunction);

Returns

number

Indicates the index of the argument that would be treated as the test condition.


isBranch

isBranch(): boolean

Gets a value that indicates whether this function is branched by arguments as conditional.

example

function EqualsFunction() {
    this.name = 'Equals';
    this.maxArgs = 3;
    this.minArgs = 3;
}
EqualsFunction.prototype = new GC.Spread.CalcEngine.Functions.Function();
EqualsFunction.prototype.evaluate = function(logicalTest, valueIfTrue, valueIfFalse) {
    return logicalTest ? valueIfTrue : valueIfFalse;
}
EqualsFunction.prototype.isBranch = function() {
    return true;
}
EqualsFunction.prototype.findTestArgument = function() {
    return 0;
}
EqualsFunction.prototype.findBranchArgument = function(logicalTestResult) {
    if (logicalTestResult === true) {
        return 1;
    }
    return 2;
}
var equalsFunction = new EqualsFunction();
var spread = GC.Spread.Sheets.findControl("ss") || GC.Spread.Sheets.findControl("sampleDiv");
spread.addCustomFunction(equalsFunction);

Returns

boolean

true if this instance is branched; otherwise, false.


isContextSensitive

isContextSensitive(): boolean

Determines whether the evaluation of the function is dependent on the context in which the evaluation occurs.

Returns

boolean

true if the evaluation of the function is dependent on the context; otherwise, false.


isVolatile

isVolatile(): boolean

Determines whether the function is volatile while it is being evaluated.

Returns

boolean

true if the function is volatile; otherwise, false.