App-SocialCalc-Multiplayer
view release on metacpan or search on metacpan
socialcalc/formula1.js view on Meta::CPAN
PushOperand(resulttypesum, Math.sqrt(sk / count));
}
else {
PushOperand("e#DIV/0!", 0);
}
break;
case "DVAR":
if (count > 1) {
PushOperand(resulttypesum, sk / (count - 1));
}
else {
PushOperand("e#DIV/0!", 0);
}
break;
case "DVARP":
if (count > 1) {
PushOperand(resulttypesum, sk / count);
}
else {
PushOperand("e#DIV/0!", 0);
}
break;
case "DGET":
if (count == 1) {
PushOperand(resulttypesum, sum);
}
else if (count == 0) {
PushOperand("e#VALUE!", 0);
}
else {
PushOperand("e#NUM!", 0);
}
break;
}
return;
}
SocialCalc.Formula.FunctionList["DAVERAGE"] = [SocialCalc.Formula.DSeriesFunctions, 3, "dfunc", "", "stat"];
SocialCalc.Formula.FunctionList["DCOUNT"] = [SocialCalc.Formula.DSeriesFunctions, 3, "dfunc", "", "stat"];
SocialCalc.Formula.FunctionList["DCOUNTA"] = [SocialCalc.Formula.DSeriesFunctions, 3, "dfunc", "", "stat"];
SocialCalc.Formula.FunctionList["DGET"] = [SocialCalc.Formula.DSeriesFunctions, 3, "dfunc", "", "stat"];
SocialCalc.Formula.FunctionList["DMAX"] = [SocialCalc.Formula.DSeriesFunctions, 3, "dfunc", "", "stat"];
SocialCalc.Formula.FunctionList["DMIN"] = [SocialCalc.Formula.DSeriesFunctions, 3, "dfunc", "", "stat"];
SocialCalc.Formula.FunctionList["DPRODUCT"] = [SocialCalc.Formula.DSeriesFunctions, 3, "dfunc", "", "stat"];
SocialCalc.Formula.FunctionList["DSTDEV"] = [SocialCalc.Formula.DSeriesFunctions, 3, "dfunc", "", "stat"];
SocialCalc.Formula.FunctionList["DSTDEVP"] = [SocialCalc.Formula.DSeriesFunctions, 3, "dfunc", "", "stat"];
SocialCalc.Formula.FunctionList["DSUM"] = [SocialCalc.Formula.DSeriesFunctions, 3, "dfunc", "", "stat"];
SocialCalc.Formula.FunctionList["DVAR"] = [SocialCalc.Formula.DSeriesFunctions, 3, "dfunc", "", "stat"];
SocialCalc.Formula.FunctionList["DVARP"] = [SocialCalc.Formula.DSeriesFunctions, 3, "dfunc", "", "stat"];
/*
#
# colnum = SocialCalc.Formula.FieldToColnum(sheet, col1num, ncols, row1num, fieldname, fieldtype)
#
# If fieldname is a number, uses it, otherwise looks up string in cells in row to find field number
#
# If not found, returns 0.
#
*/
SocialCalc.Formula.FieldToColnum = function(sheet, col1num, ncols, row1num, fieldname, fieldtype) {
var colnum, cell, value;
if (fieldtype.charAt(0) == "n") { // number - return it if legal
colnum = fieldname - 0; // make sure a number
if (colnum <= 0 || colnum > ncols) {
return 0;
}
return Math.floor(colnum);
}
if (fieldtype.charAt(0) != "t") { // must be text otherwise
return 0;
}
fieldname = fieldname ? fieldname.toLowerCase() : "";
for (colnum=0; colnum < ncols; colnum++) { // look through column headers for a match
cell = sheet.GetAssuredCell(SocialCalc.crToCoord(col1num+colnum, row1num));
value = cell.datavalue;
value = (value+"").toLowerCase(); // ignore case
if (value == fieldname) { // match
return colnum+1;
}
}
return 0; // looked at all and no match
}
/*
#
# HLOOKUP(value, range, row, [rangelookup])
# VLOOKUP(value, range, col, [rangelookup])
# MATCH(value, range, [rangelookup])
#
*/
SocialCalc.Formula.LookupFunctions = function(fname, operand, foperand, sheet) {
var lookupvalue, range, offset, rangelookup, offsetvalue, rangeinfo;
var c, r, cincr, rincr, previousOK, csave, rsave, cell, value, valuetype, cr, lookupvalue;
var scf = SocialCalc.Formula;
var operand_value_and_type = scf.OperandValueAndType;
var lookup_result_type = scf.LookupResultType;
var typelookupplus = scf.TypeLookupTable.plus;
var PushOperand = function(t, v) {operand.push({type: t, value: v});};
lookupvalue = operand_value_and_type(sheet, foperand);
if (typeof lookupvalue.value == "string") {
lookupvalue.value = lookupvalue.value.toLowerCase();
}
( run in 0.524 second using v1.01-cache-2.11-cpan-ceb78f64989 )