handsontable-RuleJS =================== Plugin for handsontable using RuleJS library (formulas parser) ## Usage __Important:__ Few things have been modified in external libraries, so please use all library files only from this repo. First, include the dependencies (all files you can find in `lib\` directory): * Handsontable (js + css) (ver. 0.12.3). ```html <script src="lib/handsontable/handsontable.full.js"></script> <link rel="stylesheet" media="screen" href="lib/handsontable/handsontable.full.css"> ``` * External libraries ```html <script src="lib/RuleJS/lib/lodash/lodash.js"></script> <script src="lib/RuleJS/lib/underscore.string/underscore.string.js"></script> <script src="lib/RuleJS/lib/moment/moment.js"></script> <script src="lib/RuleJS/lib/numeral/numeral.js"></script> <script src="lib/RuleJS/lib/numericjs/numeric.js"></script> <script src="lib/RuleJS/lib/js-md5/md5.js"></script> <script src="lib/RuleJS/lib/jstat/jstat.js"></script> <script src="lib/RuleJS/lib/formulajs/formula.js"></script> ``` * RuleJS library + plugin for handsontable ```html <script src="lib/RuleJS/js/parser.js"></script> <script src="lib/RuleJS/js/ruleJS.js"></script> <script src="lib/handsontable/handsontable.formula.js"></script> <link rel="stylesheet" media="screen" href="lib/handsontable/handsontable.formula.css"> ``` Then, run `handsontable()` constructor on an empty div and use `formulas:true` in settings. ```html <div id="example1"></div> <script> var data = [ ['=$B$2', "Maserati", "Mazda", "Mercedes", "Mini", "=A$1"], [2009, 0, 2941, 4303, 354, 5814], [2010, 5, 2905, 2867, '=SUM(A4,2,3)', '=$B1'], [2011, 4, 2517, 4822, 552, 6127], [2012, '=SUM(A2:A5)', '=SUM(B5,E3)', '=A2/B2', 12, 4151] ]; $('#example1').handsontable({ data: data, colHeaders: true, rowHeaders: true, formulas: true }); </script> ``` ## Features * math functions: `+` `-` `*` `/` `^` * logical functions: `=` `>` `<` `>=` `<=` `<>` `NOT` * error handling: `#DIV/0!` `#ERROR` `#VALUE!` `#REF!` `#NAME?` `#N/A` * parser excel formulas ([list of supported formulas with links to documentation](http://handsontable.github.io/RuleJS/)) * absolute cell references: `$A$1` `$A1` `A$1` * nested functions * simple auto-fill * dynamic updates - alter table * auto fill (simple) ## Demo [link](http://handsontable.github.io/handsontable-RuleJS/)