mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-09-08 22:24:23 +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) {
|
(function webpackUniversalModuleDefinition(root, factory) {
|
||||||
if(typeof exports === 'object' && typeof module === 'object')
|
if(typeof exports === 'object' && typeof module === 'object')
|
||||||
module.exports = factory();
|
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 */
|
/* 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:
|
Returns a Parser object of the following structure:
|
||||||
|
|
||||||
|
@ -958,4 +960,4 @@ var Parser = (function(){
|
||||||
}
|
}
|
||||||
Parser.prototype = parser;parser.Parser = Parser;
|
Parser.prototype = parser;parser.Parser = Parser;
|
||||||
return new 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) {
|
var ruleJS = (function (root) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
@ -914,7 +917,7 @@ var ruleJS = (function (root) {
|
||||||
'ODD', 'OR',
|
'ODD', 'OR',
|
||||||
'PI', 'POWER',
|
'PI', 'POWER',
|
||||||
'ROUND', 'ROUNDDOWN', 'ROUNDUP',
|
'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',
|
'TAN', 'TANH', 'TRUE', 'TRUNC',
|
||||||
'XOR'
|
'XOR'
|
||||||
],
|
],
|
||||||
|
@ -1040,13 +1043,44 @@ var ruleJS = (function (root) {
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case '+':
|
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;
|
break;
|
||||||
case '-':
|
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;
|
break;
|
||||||
case '/':
|
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) {
|
if (result == Infinity) {
|
||||||
throw Error('DIV_ZERO');
|
throw Error('DIV_ZERO');
|
||||||
} else if (isNaN(result)) {
|
} else if (isNaN(result)) {
|
||||||
|
@ -1054,11 +1088,24 @@ var ruleJS = (function (root) {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case '*':
|
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;
|
break;
|
||||||
case '^':
|
case '^':
|
||||||
result = Math.pow(number1, number2);
|
result = Math.pow(number1, number2);
|
||||||
break;
|
break;
|
||||||
|
case 'e':
|
||||||
|
result = number1 * Math.pow(10, number2);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
@ -1232,6 +1279,22 @@ var ruleJS = (function (root) {
|
||||||
error = null;
|
error = null;
|
||||||
|
|
||||||
try {
|
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);
|
parser.setObj(element);
|
||||||
result = parser.parse(formula);
|
result = parser.parse(formula);
|
||||||
|
@ -1304,4 +1367,4 @@ var ruleJS = (function (root) {
|
||||||
parse: parse
|
parse: parse
|
||||||
};
|
};
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Reference in a new issue