mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-09-07 21:55:20 +08:00
Add copyright, lisence, and include original modifications [SCI-9314]
This commit is contained in:
parent
8684e2d361
commit
8b589185b5
3 changed files with 75 additions and 7 deletions
3
vendor/assets/javascripts/formula.js
vendored
3
vendor/assets/javascripts/formula.js
vendored
|
@ -1,3 +1,6 @@
|
|||
// Copyright (c) 2014 Sutoiku, Inc.
|
||||
// The MIT License (MIT)
|
||||
|
||||
(function webpackUniversalModuleDefinition(root, factory) {
|
||||
if(typeof exports === 'object' && typeof module === 'object')
|
||||
module.exports = factory();
|
||||
|
|
4
vendor/assets/javascripts/parser.js
vendored
4
vendor/assets/javascripts/parser.js
vendored
|
@ -1,4 +1,6 @@
|
|||
/* parser generated by jison 0.4.15 */
|
||||
// The MIT License (MIT)
|
||||
// Copyright (c) 2012-2014 Marcin Warpechowski <hello@handsontable.com>
|
||||
/*
|
||||
Returns a Parser object of the following structure:
|
||||
|
||||
|
@ -958,4 +960,4 @@ var Parser = (function(){
|
|||
}
|
||||
Parser.prototype = parser;parser.Parser = Parser;
|
||||
return new Parser;
|
||||
})();
|
||||
})();
|
||||
|
|
75
vendor/assets/javascripts/ruleJS.js
vendored
75
vendor/assets/javascripts/ruleJS.js
vendored
|
@ -1,3 +1,6 @@
|
|||
// * Licensed under the MIT license
|
||||
// * Copyright (c) 2012-2014 Marcin Warpechowski <hello@handsontable.com>
|
||||
|
||||
var ruleJS = (function (root) {
|
||||
'use strict';
|
||||
|
||||
|
@ -914,7 +917,7 @@ var ruleJS = (function (root) {
|
|||
'ODD', 'OR',
|
||||
'PI', 'POWER',
|
||||
'ROUND', 'ROUNDDOWN', 'ROUNDUP',
|
||||
'SIN', 'SINH', 'SPLIT', 'SQRT', 'SQRTPI', 'SUM', 'SUMIF', 'SUMIFS', 'SUMPRODUCT', 'SUMSQ', 'SUMX2MY2', 'SUMX2PY2', 'SUMXMY2',
|
||||
'SIN', 'SINH', 'SLOPE', 'SPLIT', 'STDEVP', 'STDEVS', 'SQRT', 'SQRTPI', 'SUM', 'SUMIF', 'SUMIFS', 'SUMPRODUCT', 'SUMSQ', 'SUMX2MY2', 'SUMX2PY2', 'SUMXMY2', 'VARP', 'VARS',
|
||||
'TAN', 'TANH', 'TRUE', 'TRUNC',
|
||||
'XOR'
|
||||
],
|
||||
|
@ -1040,13 +1043,44 @@ var ruleJS = (function (root) {
|
|||
|
||||
switch (type) {
|
||||
case '+':
|
||||
result = number1 + number2;
|
||||
//(sci-2587) MODIFICATION TO AVOID JAVASCRIPT IEEE MANTISSA&EXPONENT FLOATS INNACURACY
|
||||
try{
|
||||
var number1_big = new Big(number1);
|
||||
var result_big = number1_big.plus(number2);
|
||||
result = parseFloat(result_big);
|
||||
} catch(e) {
|
||||
result = number1 + number2;
|
||||
}
|
||||
//MODIFICATION END
|
||||
|
||||
//ORIGINAL: result = number1 + number2;
|
||||
break;
|
||||
case '-':
|
||||
result = number1 - number2;
|
||||
//(sci-2587) MODIFICATION TO AVOID JAVASCRIPT IEEE MANTISSA&EXPONENT FLOATS INNACURACY
|
||||
try{
|
||||
var number1_big = new Big(number1);
|
||||
var result_big = number1_big.minus(number2);
|
||||
result = parseFloat(result_big);
|
||||
} catch(e) {
|
||||
result = number1 - number2;
|
||||
}
|
||||
//MODIFICATION END
|
||||
|
||||
//ORIGINAL: result = number1 - number2;
|
||||
break;
|
||||
case '/':
|
||||
result = number1 / number2;
|
||||
//(sci-2587) MODIFICATION TO AVOID JAVASCRIPT IEEE MANTISSA&EXPONENT FLOATS INNACURACY
|
||||
try{
|
||||
var number1_big = new Big(number1);
|
||||
var result_big = number1_big.div(number2);
|
||||
result = parseFloat(result_big);
|
||||
} catch(e){
|
||||
result = number1 / number2;
|
||||
}
|
||||
//MODIFICATION END
|
||||
|
||||
//ORIGINAL: result = number1 / number2;
|
||||
|
||||
if (result == Infinity) {
|
||||
throw Error('DIV_ZERO');
|
||||
} else if (isNaN(result)) {
|
||||
|
@ -1054,11 +1088,24 @@ var ruleJS = (function (root) {
|
|||
}
|
||||
break;
|
||||
case '*':
|
||||
result = number1 * number2;
|
||||
//(sci-2587) MODIFICATION TO AVOID JAVASCRIPT IEEE MANTISSA&EXPONENT FLOATS INNACURACY
|
||||
try{
|
||||
var number1_big = new Big(number1);
|
||||
var result_big = number1_big.times(number2);
|
||||
result = parseFloat(result_big);
|
||||
} catch(e) {
|
||||
result = number1 * number2;
|
||||
}
|
||||
//MODIFICATION END
|
||||
|
||||
//ORIGINAL: result = number1 * number2;
|
||||
break;
|
||||
case '^':
|
||||
result = Math.pow(number1, number2);
|
||||
break;
|
||||
case 'e':
|
||||
result = number1 * Math.pow(10, number2);
|
||||
break;
|
||||
}
|
||||
|
||||
return result;
|
||||
|
@ -1232,6 +1279,22 @@ var ruleJS = (function (root) {
|
|||
error = null;
|
||||
|
||||
try {
|
||||
// Preprocess E-notation, eg. replaces -5.32e-3 with -0.00532
|
||||
// Excel does it too as well, so we're good
|
||||
formula = formula.replace(/(?:([0-9]+(\.[0-9]+)?)+(E|e)((-|\+)?[0-9]+))/g, function(expr) {
|
||||
var spl = expr.split('E')
|
||||
var m = helper.number(spl[0]);
|
||||
var e = helper.number(spl[1]);
|
||||
|
||||
return Big(m).times(Big(10).pow(e)).toFixed();
|
||||
})
|
||||
|
||||
// Preprocess the following aliases for formulas
|
||||
// or parser won't accept them
|
||||
formula = formula.replace('STDEV.P', 'STDEVP');
|
||||
formula = formula.replace('STDEV.S', 'STDEVS');
|
||||
formula = formula.replace('VAR.P', 'VARP');
|
||||
formula = formula.replace('VAR.S', 'VARS');
|
||||
|
||||
parser.setObj(element);
|
||||
result = parser.parse(formula);
|
||||
|
@ -1304,4 +1367,4 @@ var ruleJS = (function (root) {
|
|||
parse: parse
|
||||
};
|
||||
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Add table
Reference in a new issue