├── .editorconfig ├── .gitignore ├── LICENSE ├── README.md ├── bower.json ├── bower_components ├── handsontable │ ├── .bower.json │ ├── CHANGELOG.md │ ├── CNAME │ ├── CONTRIBUTING.md │ ├── Gruntfile.js │ ├── LICENSE │ ├── README.md │ ├── bower.json │ ├── dist │ │ ├── README.md │ │ ├── handsontable.css │ │ ├── handsontable.full.css │ │ ├── handsontable.full.js │ │ ├── handsontable.full.min.css │ │ ├── handsontable.full.min.js │ │ └── handsontable.js │ ├── handsontable.jquery.json │ ├── index.html │ ├── index.html.orig │ ├── package.json │ ├── sauce_connect.log │ └── update.json ├── jquery │ ├── .bower.json │ ├── MIT-LICENSE.txt │ ├── bower.json │ ├── dist │ │ ├── jquery.js │ │ ├── jquery.min.js │ │ └── jquery.min.map │ └── src │ │ ├── ajax.js │ │ ├── ajax │ │ ├── jsonp.js │ │ ├── load.js │ │ ├── parseJSON.js │ │ ├── parseXML.js │ │ ├── script.js │ │ ├── var │ │ │ ├── nonce.js │ │ │ └── rquery.js │ │ └── xhr.js │ │ ├── attributes.js │ │ ├── attributes │ │ ├── attr.js │ │ ├── classes.js │ │ ├── prop.js │ │ ├── support.js │ │ └── val.js │ │ ├── callbacks.js │ │ ├── core.js │ │ ├── core │ │ ├── access.js │ │ ├── init.js │ │ ├── parseHTML.js │ │ ├── ready.js │ │ └── var │ │ │ └── rsingleTag.js │ │ ├── css.js │ │ ├── css │ │ ├── addGetHookIf.js │ │ ├── curCSS.js │ │ ├── defaultDisplay.js │ │ ├── hiddenVisibleSelectors.js │ │ ├── support.js │ │ ├── swap.js │ │ └── var │ │ │ ├── cssExpand.js │ │ │ ├── getStyles.js │ │ │ ├── isHidden.js │ │ │ ├── rmargin.js │ │ │ └── rnumnonpx.js │ │ ├── data.js │ │ ├── data │ │ ├── Data.js │ │ ├── accepts.js │ │ └── var │ │ │ ├── data_priv.js │ │ │ └── data_user.js │ │ ├── deferred.js │ │ ├── deprecated.js │ │ ├── dimensions.js │ │ ├── effects.js │ │ ├── effects │ │ ├── Tween.js │ │ └── animatedSelector.js │ │ ├── event.js │ │ ├── event │ │ ├── ajax.js │ │ ├── alias.js │ │ └── support.js │ │ ├── exports │ │ ├── amd.js │ │ └── global.js │ │ ├── intro.js │ │ ├── jquery.js │ │ ├── manipulation.js │ │ ├── manipulation │ │ ├── _evalUrl.js │ │ ├── support.js │ │ └── var │ │ │ └── rcheckableType.js │ │ ├── offset.js │ │ ├── outro.js │ │ ├── queue.js │ │ ├── queue │ │ └── delay.js │ │ ├── selector-native.js │ │ ├── selector-sizzle.js │ │ ├── selector.js │ │ ├── serialize.js │ │ ├── sizzle │ │ └── dist │ │ │ ├── sizzle.js │ │ │ ├── sizzle.min.js │ │ │ └── sizzle.min.map │ │ ├── traversing.js │ │ ├── traversing │ │ ├── findFilter.js │ │ └── var │ │ │ └── rneedsContext.js │ │ ├── var │ │ ├── arr.js │ │ ├── class2type.js │ │ ├── concat.js │ │ ├── hasOwn.js │ │ ├── indexOf.js │ │ ├── pnum.js │ │ ├── push.js │ │ ├── rnotwhite.js │ │ ├── slice.js │ │ ├── strundefined.js │ │ ├── support.js │ │ └── toString.js │ │ └── wrap.js ├── moment │ ├── .bower.json │ ├── CHANGELOG.md │ ├── LICENSE │ ├── Moment.js.nuspec │ ├── README.md │ ├── benchmarks │ │ └── clone.js │ ├── bower.json │ ├── locale │ │ ├── af.js │ │ ├── ar-ma.js │ │ ├── ar-sa.js │ │ ├── ar-tn.js │ │ ├── ar.js │ │ ├── az.js │ │ ├── be.js │ │ ├── bg.js │ │ ├── bn.js │ │ ├── bo.js │ │ ├── br.js │ │ ├── bs.js │ │ ├── ca.js │ │ ├── cs.js │ │ ├── cv.js │ │ ├── cy.js │ │ ├── da.js │ │ ├── de-at.js │ │ ├── de.js │ │ ├── el.js │ │ ├── en-au.js │ │ ├── en-ca.js │ │ ├── en-gb.js │ │ ├── eo.js │ │ ├── es.js │ │ ├── et.js │ │ ├── eu.js │ │ ├── fa.js │ │ ├── fi.js │ │ ├── fo.js │ │ ├── fr-ca.js │ │ ├── fr.js │ │ ├── fy.js │ │ ├── gl.js │ │ ├── he.js │ │ ├── hi.js │ │ ├── hr.js │ │ ├── hu.js │ │ ├── hy-am.js │ │ ├── id.js │ │ ├── is.js │ │ ├── it.js │ │ ├── ja.js │ │ ├── ka.js │ │ ├── km.js │ │ ├── ko.js │ │ ├── lb.js │ │ ├── lt.js │ │ ├── lv.js │ │ ├── mk.js │ │ ├── ml.js │ │ ├── mr.js │ │ ├── ms-my.js │ │ ├── my.js │ │ ├── nb.js │ │ ├── ne.js │ │ ├── nl.js │ │ ├── nn.js │ │ ├── pl.js │ │ ├── pt-br.js │ │ ├── pt.js │ │ ├── ro.js │ │ ├── ru.js │ │ ├── sk.js │ │ ├── sl.js │ │ ├── sq.js │ │ ├── sr-cyrl.js │ │ ├── sr.js │ │ ├── sv.js │ │ ├── ta.js │ │ ├── th.js │ │ ├── tl-ph.js │ │ ├── tr.js │ │ ├── tzm-latn.js │ │ ├── tzm.js │ │ ├── uk.js │ │ ├── uz.js │ │ ├── vi.js │ │ ├── zh-cn.js │ │ └── zh-tw.js │ ├── meteor │ │ ├── README.md │ │ ├── export.js │ │ └── test.js │ ├── min │ │ ├── locales.js │ │ ├── locales.min.js │ │ ├── moment-with-locales.js │ │ ├── moment-with-locales.min.js │ │ └── moment.min.js │ ├── moment.js │ └── scripts │ │ └── npm_prepublish.sh ├── pikaday │ ├── .bower.json │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── bower.json │ ├── component.json │ ├── css │ │ ├── pikaday.css │ │ └── site.css │ ├── examples │ │ ├── amd.html │ │ ├── bound-container.html │ │ ├── calendars.html │ │ ├── container.html │ │ ├── jquery-amd.html │ │ ├── jquery.html │ │ ├── moment.html │ │ ├── positions.html │ │ ├── trigger.html │ │ └── weeknumbers.html │ ├── index.html │ ├── package.json │ ├── pikaday.js │ ├── plugins │ │ └── pikaday.jquery.js │ └── tests │ │ ├── methods.js │ │ └── module.js ├── ruleJS │ ├── .bower.json │ ├── Gruntfile.js │ ├── LICENSE │ ├── README.md │ ├── bower.json │ ├── dist │ │ ├── full │ │ │ ├── ruleJS.all.full.js │ │ │ ├── ruleJS.all.full.min.js │ │ │ ├── ruleJS.lib.full.js │ │ │ └── ruleJS.parser.full.js │ │ └── js │ │ │ ├── parser.js │ │ │ └── ruleJS.js │ ├── index.html │ └── package.json └── zeroclipboard │ ├── .bower.json │ ├── bower.json │ └── dist │ ├── .jshintrc │ ├── ZeroClipboard.Core.js │ ├── ZeroClipboard.Core.min.js │ ├── ZeroClipboard.Core.min.map │ ├── ZeroClipboard.js │ ├── ZeroClipboard.min.js │ ├── ZeroClipboard.min.map │ └── ZeroClipboard.swf ├── css ├── font-awesome │ ├── css │ │ ├── font-awesome.css │ │ └── font-awesome.min.css │ └── font │ │ ├── FontAwesome.otf │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.svg │ │ ├── fontawesome-webfont.ttf │ │ └── fontawesome-webfont.woff └── samples.css ├── index.html ├── lib ├── highlight │ ├── LICENSE │ ├── README.md │ ├── highlight.pack.js │ └── styles │ │ ├── github.css │ │ └── zenburn.css └── samples.js ├── src ├── handsontable.formula.css └── handsontable.formula.js └── test └── jasmine ├── SpecRunner.html ├── css └── SpecRunner.css ├── lib ├── jasmine-extensions.js ├── jasmine-html-hacks.js ├── jasmine │ ├── MIT.LICENSE │ ├── jasmine-helper.js │ ├── jasmine-html.js │ ├── jasmine.css │ ├── jasmine.js │ ├── jasmine_favicon.png │ ├── phantom-polyfill.js │ └── reporter.js ├── jquery.simulate.js ├── nodeShim.js └── x-html.html └── spec ├── SpecHelper.js ├── formulaSpec.js └── test-init.js /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig helps developers define and maintain consistent 2 | # coding styles between different editors and IDEs 3 | # editorconfig.org 4 | 5 | root = true 6 | 7 | 8 | [*] 9 | 10 | # Change these settings to your own preference 11 | indent_style = space 12 | indent_size = 2 13 | 14 | # We recommend you to keep these unchanged 15 | end_of_line = lf 16 | charset = utf-8 17 | trim_trailing_whitespace = true 18 | insert_final_newline = true 19 | 20 | [*.md] 21 | trim_trailing_whitespace = false 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 handsontable 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | :warning: This repository is deprecated. 2 | 3 | 4 |
5 | 6 | handsontable-RuleJS 7 | =================== 8 | 9 | Plugin for handsontable using RuleJS library (formulas parser). 10 | 11 | ## Usage 12 | 13 | __Important:__ Few things have been modified in external libraries, so please use all library files only from this repo. 14 | 15 | 16 | First, include the dependencies (all files you can find in `lib\` directory): 17 | 18 | 19 | * Handsontable (js + css) (ver. 0.12.3). 20 | 21 | ```html 22 | 23 | 24 | ``` 25 | 26 | 27 | * External libraries 28 | 29 | ```html 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | ``` 39 | 40 | 41 | * RuleJS library + plugin for handsontable 42 | 43 | ```html 44 | 45 | 46 | 47 | 48 | ``` 49 | 50 | Then, run `handsontable()` constructor on an empty div and use `formulas:true` in settings. 51 | 52 | ```html 53 |
54 | 70 | ``` 71 | 72 | 73 | ## Features 74 | 75 | 76 | * math functions: `+` `-` `*` `/` `^` 77 | * logical functions: `=` `>` `<` `>=` `<=` `<>` `NOT` 78 | * error handling: `#DIV/0!` `#ERROR` `#VALUE!` `#REF!` `#NAME?` `#N/A` 79 | * parser excel formulas ([list of supported formulas with links to documentation](http://handsontable.github.io/ruleJS/)) 80 | * absolute cell references: `$A$1` `$A1` `A$1` 81 | * nested functions 82 | * simple auto-fill 83 | * dynamic updates - alter table 84 | * auto fill (simple) 85 | 86 | 87 | ## Demo 88 | 89 | [link](http://handsontable.github.io/handsontable-ruleJS/) 90 | 91 |
92 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "handsontable-ruleJS", 3 | "description": "Formula parser plugin for handsontable using ruleJS library", 4 | "version": "0.0.1", 5 | "main": ["./src/handsontable.formula.js", "./src/handsontable.formula.css"], 6 | "repository": { 7 | "type": "git", 8 | "url": "https://github.com/handsontable/handsontable-ruleJS.git" 9 | }, 10 | "authors": [ 11 | "Handsoncode", "Handsoncode " 12 | ], 13 | "keywords": [ 14 | "handsontable-ruleJS", 15 | "handsontable-formula", 16 | "formula", 17 | "excel", 18 | "js-excel", 19 | "js-formula", 20 | "js-functions" 21 | ], 22 | "ignore": [ 23 | "**/.*", 24 | "bower_components", 25 | "css", 26 | "lib", 27 | "test" 28 | ], 29 | "dependencies": { 30 | "handsontable": "0.14.1", 31 | "ruleJS": "0.0.5", 32 | "jquery": "2.1.3" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /bower_components/handsontable/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "handsontable", 3 | "description": "Spreadsheet-like data grid editor that provides copy/paste functionality compatible with Excel/Google Docs", 4 | "version": "0.14.1", 5 | "main": [ 6 | "./dist/handsontable.full.js", 7 | "./dist/handsontable.full.css" 8 | ], 9 | "homepage": "http://handsontable.com/", 10 | "repository": { 11 | "type": "git", 12 | "url": "https://github.com/handsontable/handsontable.git" 13 | }, 14 | "authors": [ 15 | "Handsoncode", 16 | "Handsoncode " 17 | ], 18 | "keywords": [ 19 | "data", 20 | "grid", 21 | "table", 22 | "editor", 23 | "grid-editor", 24 | "data-grid", 25 | "data-table", 26 | "spreadsheet", 27 | "excel", 28 | "tabular-data", 29 | "edit-cell", 30 | "editable-table", 31 | "data-spreadsheet" 32 | ], 33 | "ignore": [ 34 | "**/.*", 35 | "components", 36 | "demo", 37 | "lib", 38 | "plugins", 39 | "node_modules", 40 | "src", 41 | "test" 42 | ], 43 | "dependencies": { 44 | "zeroclipboard": ">=2.1.6", 45 | "moment": "2.9.0", 46 | "pikaday": "1.3.0" 47 | }, 48 | "devDependencies": { 49 | "chroma-js": "~0.5.6" 50 | }, 51 | "_release": "0.14.1", 52 | "_resolution": { 53 | "type": "version", 54 | "tag": "0.14.1", 55 | "commit": "5cf353386e3ba410c66cc1bc265b1482a76fd71f" 56 | }, 57 | "_source": "git://github.com/handsontable/handsontable.git", 58 | "_target": "0.14.1", 59 | "_originalSource": "handsontable" 60 | } -------------------------------------------------------------------------------- /bower_components/handsontable/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | All releases are described at https://github.com/handsontable/handsontable/releases 2 | -------------------------------------------------------------------------------- /bower_components/handsontable/CNAME: -------------------------------------------------------------------------------- 1 | handsontable.com 2 | -------------------------------------------------------------------------------- /bower_components/handsontable/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to Handsontable 2 | 3 | Your contributions to the project are very welcome. If you would like to fix a bug or propose a new feature, you can submit a Pull Request. 4 | 5 | To help us merge your Pull Request, please make sure you follow these points: 6 | 7 | 1. Please make your fix on a separate branch. This makes merging much easier. 8 | 2. Do not edit files `handsontable.js`, `handsontable.css`, `handsontable.full.js`, `handsontable.full.css`. Instead, try to edit files inside the `src/` directory and then use `grunt` to make a build. More information about this on wiki page [Building](https://github.com/handsontable/handsontable/wiki/Building). 9 | 3. Very important: For any change that you make, **please try to also add a test case(s)** in `tests/jasmine/spec/` or `src/3rdparty/walkontable/test/jasmine/spec/`. This helps us understand the issue and make sure that it will stay fixed forever. See [Testing](https://github.com/handsontable/handsontable/wiki/Testing) 10 | 4. Describe the problem in the Pull Request description (of course you would do it, why do I mention that?) 11 | 12 | Thank you for your commitment! 13 | 14 | ## Team rules 15 | 16 | The Handsontable team utilizes Git-Flow. See [How we use Git-Flow](https://github.com/handsontable/handsontable/handsontable/wiki/How-we-use-Git-Flow) 17 | -------------------------------------------------------------------------------- /bower_components/handsontable/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2012-2014 Marcin Warpechowski 4 | Copyright (c) 2015 Handsoncode sp. z o.o. 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining 7 | a copy of this software and associated documentation files (the 8 | 'Software'), to deal in the Software without restriction, including 9 | without limitation the rights to use, copy, modify, merge, publish, 10 | distribute, sublicense, and/or sell copies of the Software, and to 11 | permit persons to whom the Software is furnished to do so, subject to 12 | the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be 15 | included in all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 18 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 20 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 21 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 22 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 23 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /bower_components/handsontable/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "handsontable", 3 | "description": "Spreadsheet-like data grid editor that provides copy/paste functionality compatible with Excel/Google Docs", 4 | "version": "0.14.1", 5 | "main": ["./dist/handsontable.full.js", "./dist/handsontable.full.css"], 6 | "homepage": "http://handsontable.com/", 7 | "repository": { 8 | "type": "git", 9 | "url": "https://github.com/handsontable/handsontable.git" 10 | }, 11 | "authors": [ 12 | "Handsoncode", "Handsoncode " 13 | ], 14 | "keywords": [ 15 | "data", 16 | "grid", 17 | "table", 18 | "editor", 19 | "grid-editor", 20 | "data-grid", 21 | "data-table", 22 | "spreadsheet", 23 | "excel", 24 | "tabular-data", 25 | "edit-cell", 26 | "editable-table", 27 | "data-spreadsheet" 28 | ], 29 | "ignore": [ 30 | "**/.*", 31 | "components", 32 | "demo", 33 | "lib", 34 | "plugins", 35 | "node_modules", 36 | "src", 37 | "test" 38 | ], 39 | "dependencies": { 40 | "zeroclipboard": ">=2.1.6", 41 | "moment": "2.9.0", 42 | "pikaday": "1.3.0" 43 | }, 44 | "devDependencies": { 45 | "chroma-js": "~0.5.6" 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /bower_components/handsontable/dist/README.md: -------------------------------------------------------------------------------- 1 | # Handsontable distributions 2 | 3 | ## Full distribution (recommended) 4 | 5 | The full distribution allows you to use Handsontable by just including 2 files: 6 | ```html 7 | 8 | 9 | ``` 10 | (It may also require jQuery, if you're using the Datepicker for date input) 11 | 12 | **handsontable.full.js** and **handsontable.full.css** are compiled with ___all___ the needed dependencies. 13 | 14 | Using this has the same effect as loading all the dependencies from the Bare distribution (see below). 15 | 16 | ## Bare distribution 17 | 18 | If you are a "Bob the Builder" kind of hacker, you will need to load Handsontable JS, CSS and their dependecies: 19 | ```html 20 | 21 | 22 | 23 | ``` 24 | 25 | **handsontable.js** and **handsontable.css** are compiled ___without___ the needed dependencies. 26 | -------------------------------------------------------------------------------- /bower_components/handsontable/handsontable.jquery.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "handsontable", 3 | "title": "Handsontable", 4 | "version": "0.14.1", 5 | "author": { 6 | "name": "Marcin Warpechowski", 7 | "email": "hello@handsontable.com", 8 | "url": "http://www.nextgen.pl/" 9 | }, 10 | "licenses": [ 11 | { 12 | "type": "MIT", 13 | "url": "https://raw.github.com/handsontable/handsontable/master/LICENSE" 14 | } 15 | ], 16 | "description": "Spreadsheet-like data grid editor that provides copy/paste functionality compatible with Excel/Google Docs", 17 | "homepage": "http://handsontable.com/", 18 | "docs": "https://github.com/handsontable/handsontable", 19 | "demo": "http://handsontable.com/", 20 | "download": "https://github.com/handsontable/handsontable/archive/master.zip", 21 | "keywords": [ 22 | "grid", 23 | "datagrid", 24 | "table", 25 | "ui", 26 | "input", 27 | "ajax", 28 | "handsontable", 29 | "spreadsheet" 30 | ], 31 | "bugs": "https://github.com/handsontable/handsontable/issues", 32 | "dependencies": { 33 | "jquery": ">=1.7", 34 | "bootstrap-typeahead.js": "2.1.1", 35 | "contextMenu": ">=1.5.25" 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /bower_components/handsontable/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "handsontable", 3 | "description": "Spreadsheet-like data grid editor that provides copy/paste functionality compatible with Excel/Google Docs", 4 | "homepage": "http://handsontable.com/", 5 | "repository": { 6 | "type": "git", 7 | "url": "https://github.com/handsontable/handsontable.git" 8 | }, 9 | "bugs": { 10 | "url": "https://github.com/handsontable/handsontable/issues" 11 | }, 12 | "author": "Handsoncode ", 13 | "version": "0.14.1", 14 | "keywords": [ 15 | "data", 16 | "grid", 17 | "table", 18 | "editor", 19 | "grid-editor", 20 | "data-grid", 21 | "data-table", 22 | "spreadsheet", 23 | "excel", 24 | "tabular-data", 25 | "edit-cell", 26 | "editable-table", 27 | "data-spreadsheet" 28 | ], 29 | "devDependencies": { 30 | "grunt": "~0.4.5", 31 | "grunt-replace": "~0.7.8", 32 | "grunt-contrib-clean": "~0.4.1", 33 | "grunt-contrib-concat": "~0.5.0", 34 | "grunt-contrib-watch": "~0.6.1", 35 | "grunt-contrib-jasmine": "~0.5.1", 36 | "grunt-contrib-connect": "~0.8.0", 37 | "grunt-contrib-uglify": "~0.5.1", 38 | "grunt-contrib-cssmin": "~0.10.0", 39 | "grunt-saucelabs": "~8.3.3", 40 | "grunt-gitinfo": "~0.1.6", 41 | "grunt-contrib-jshint": "~0.10.0", 42 | "time-grunt": "~1.0.0" 43 | }, 44 | "scripts": { 45 | "test": "grunt test -v" 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /bower_components/handsontable/update.json: -------------------------------------------------------------------------------- 1 | { 2 | "COMMENT": "This is a update.json file used by jsDelivr.com CDN", 3 | "packageManager": "github", 4 | "name": "handsontable", 5 | "repo": "handsontable/handsontable", 6 | "files": { 7 | "include": ["./dist/*.js", "./plugins/**/*.js", "./plugins/**/*.css"], 8 | "exclude": ["./plugins/**/*spec*"] 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /bower_components/jquery/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "version": "2.1.3", 4 | "main": "dist/jquery.js", 5 | "license": "MIT", 6 | "ignore": [ 7 | "**/.*", 8 | "build", 9 | "speed", 10 | "test", 11 | "*.md", 12 | "AUTHORS.txt", 13 | "Gruntfile.js", 14 | "package.json" 15 | ], 16 | "devDependencies": { 17 | "sizzle": "2.1.1-jquery.2.1.2", 18 | "requirejs": "2.1.10", 19 | "qunit": "1.14.0", 20 | "sinon": "1.8.1" 21 | }, 22 | "keywords": [ 23 | "jquery", 24 | "javascript", 25 | "library" 26 | ], 27 | "homepage": "https://github.com/jquery/jquery", 28 | "_release": "2.1.3", 29 | "_resolution": { 30 | "type": "version", 31 | "tag": "2.1.3", 32 | "commit": "8f2a9d9272d6ed7f32d3a484740ab342c02541e0" 33 | }, 34 | "_source": "git://github.com/jquery/jquery.git", 35 | "_target": "2.1.3", 36 | "_originalSource": "jquery" 37 | } -------------------------------------------------------------------------------- /bower_components/jquery/MIT-LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright 2014 jQuery Foundation and other contributors 2 | http://jquery.com/ 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining 5 | a copy of this software and associated documentation files (the 6 | "Software"), to deal in the Software without restriction, including 7 | without limitation the rights to use, copy, modify, merge, publish, 8 | distribute, sublicense, and/or sell copies of the Software, and to 9 | permit persons to whom the Software is furnished to do so, subject to 10 | the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 19 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 20 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 21 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /bower_components/jquery/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "version": "2.1.3", 4 | "main": "dist/jquery.js", 5 | "license": "MIT", 6 | "ignore": [ 7 | "**/.*", 8 | "build", 9 | "speed", 10 | "test", 11 | "*.md", 12 | "AUTHORS.txt", 13 | "Gruntfile.js", 14 | "package.json" 15 | ], 16 | "devDependencies": { 17 | "sizzle": "2.1.1-jquery.2.1.2", 18 | "requirejs": "2.1.10", 19 | "qunit": "1.14.0", 20 | "sinon": "1.8.1" 21 | }, 22 | "keywords": [ 23 | "jquery", 24 | "javascript", 25 | "library" 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /bower_components/jquery/src/ajax/jsonp.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "./var/nonce", 4 | "./var/rquery", 5 | "../ajax" 6 | ], function( jQuery, nonce, rquery ) { 7 | 8 | var oldCallbacks = [], 9 | rjsonp = /(=)\?(?=&|$)|\?\?/; 10 | 11 | // Default jsonp settings 12 | jQuery.ajaxSetup({ 13 | jsonp: "callback", 14 | jsonpCallback: function() { 15 | var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) ); 16 | this[ callback ] = true; 17 | return callback; 18 | } 19 | }); 20 | 21 | // Detect, normalize options and install callbacks for jsonp requests 22 | jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { 23 | 24 | var callbackName, overwritten, responseContainer, 25 | jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ? 26 | "url" : 27 | typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data" 28 | ); 29 | 30 | // Handle iff the expected data type is "jsonp" or we have a parameter to set 31 | if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) { 32 | 33 | // Get callback name, remembering preexisting value associated with it 34 | callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ? 35 | s.jsonpCallback() : 36 | s.jsonpCallback; 37 | 38 | // Insert callback into url or form data 39 | if ( jsonProp ) { 40 | s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName ); 41 | } else if ( s.jsonp !== false ) { 42 | s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName; 43 | } 44 | 45 | // Use data converter to retrieve json after script execution 46 | s.converters["script json"] = function() { 47 | if ( !responseContainer ) { 48 | jQuery.error( callbackName + " was not called" ); 49 | } 50 | return responseContainer[ 0 ]; 51 | }; 52 | 53 | // force json dataType 54 | s.dataTypes[ 0 ] = "json"; 55 | 56 | // Install callback 57 | overwritten = window[ callbackName ]; 58 | window[ callbackName ] = function() { 59 | responseContainer = arguments; 60 | }; 61 | 62 | // Clean-up function (fires after converters) 63 | jqXHR.always(function() { 64 | // Restore preexisting value 65 | window[ callbackName ] = overwritten; 66 | 67 | // Save back as free 68 | if ( s[ callbackName ] ) { 69 | // make sure that re-using the options doesn't screw things around 70 | s.jsonpCallback = originalSettings.jsonpCallback; 71 | 72 | // save the callback name for future use 73 | oldCallbacks.push( callbackName ); 74 | } 75 | 76 | // Call if it was a function and we have a response 77 | if ( responseContainer && jQuery.isFunction( overwritten ) ) { 78 | overwritten( responseContainer[ 0 ] ); 79 | } 80 | 81 | responseContainer = overwritten = undefined; 82 | }); 83 | 84 | // Delegate to script 85 | return "script"; 86 | } 87 | }); 88 | 89 | }); 90 | -------------------------------------------------------------------------------- /bower_components/jquery/src/ajax/load.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "../core/parseHTML", 4 | "../ajax", 5 | "../traversing", 6 | "../manipulation", 7 | "../selector", 8 | // Optional event/alias dependency 9 | "../event/alias" 10 | ], function( jQuery ) { 11 | 12 | // Keep a copy of the old load method 13 | var _load = jQuery.fn.load; 14 | 15 | /** 16 | * Load a url into a page 17 | */ 18 | jQuery.fn.load = function( url, params, callback ) { 19 | if ( typeof url !== "string" && _load ) { 20 | return _load.apply( this, arguments ); 21 | } 22 | 23 | var selector, type, response, 24 | self = this, 25 | off = url.indexOf(" "); 26 | 27 | if ( off >= 0 ) { 28 | selector = jQuery.trim( url.slice( off ) ); 29 | url = url.slice( 0, off ); 30 | } 31 | 32 | // If it's a function 33 | if ( jQuery.isFunction( params ) ) { 34 | 35 | // We assume that it's the callback 36 | callback = params; 37 | params = undefined; 38 | 39 | // Otherwise, build a param string 40 | } else if ( params && typeof params === "object" ) { 41 | type = "POST"; 42 | } 43 | 44 | // If we have elements to modify, make the request 45 | if ( self.length > 0 ) { 46 | jQuery.ajax({ 47 | url: url, 48 | 49 | // if "type" variable is undefined, then "GET" method will be used 50 | type: type, 51 | dataType: "html", 52 | data: params 53 | }).done(function( responseText ) { 54 | 55 | // Save response for use in complete callback 56 | response = arguments; 57 | 58 | self.html( selector ? 59 | 60 | // If a selector was specified, locate the right elements in a dummy div 61 | // Exclude scripts to avoid IE 'Permission Denied' errors 62 | jQuery("
").append( jQuery.parseHTML( responseText ) ).find( selector ) : 63 | 64 | // Otherwise use the full result 65 | responseText ); 66 | 67 | }).complete( callback && function( jqXHR, status ) { 68 | self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] ); 69 | }); 70 | } 71 | 72 | return this; 73 | }; 74 | 75 | }); 76 | -------------------------------------------------------------------------------- /bower_components/jquery/src/ajax/parseJSON.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | // Support: Android 2.3 6 | // Workaround failure to string-cast null input 7 | jQuery.parseJSON = function( data ) { 8 | return JSON.parse( data + "" ); 9 | }; 10 | 11 | return jQuery.parseJSON; 12 | 13 | }); 14 | -------------------------------------------------------------------------------- /bower_components/jquery/src/ajax/parseXML.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | // Cross-browser xml parsing 6 | jQuery.parseXML = function( data ) { 7 | var xml, tmp; 8 | if ( !data || typeof data !== "string" ) { 9 | return null; 10 | } 11 | 12 | // Support: IE9 13 | try { 14 | tmp = new DOMParser(); 15 | xml = tmp.parseFromString( data, "text/xml" ); 16 | } catch ( e ) { 17 | xml = undefined; 18 | } 19 | 20 | if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { 21 | jQuery.error( "Invalid XML: " + data ); 22 | } 23 | return xml; 24 | }; 25 | 26 | return jQuery.parseXML; 27 | 28 | }); 29 | -------------------------------------------------------------------------------- /bower_components/jquery/src/ajax/script.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "../ajax" 4 | ], function( jQuery ) { 5 | 6 | // Install script dataType 7 | jQuery.ajaxSetup({ 8 | accepts: { 9 | script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" 10 | }, 11 | contents: { 12 | script: /(?:java|ecma)script/ 13 | }, 14 | converters: { 15 | "text script": function( text ) { 16 | jQuery.globalEval( text ); 17 | return text; 18 | } 19 | } 20 | }); 21 | 22 | // Handle cache's special case and crossDomain 23 | jQuery.ajaxPrefilter( "script", function( s ) { 24 | if ( s.cache === undefined ) { 25 | s.cache = false; 26 | } 27 | if ( s.crossDomain ) { 28 | s.type = "GET"; 29 | } 30 | }); 31 | 32 | // Bind script tag hack transport 33 | jQuery.ajaxTransport( "script", function( s ) { 34 | // This transport only deals with cross domain requests 35 | if ( s.crossDomain ) { 36 | var script, callback; 37 | return { 38 | send: function( _, complete ) { 39 | script = jQuery(" 29 | 49 | 50 | -------------------------------------------------------------------------------- /bower_components/pikaday/examples/bound-container.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Pikaday - Container example 7 | 8 | 9 | 10 | 11 | 12 | Fork me on GitHub 13 | 14 |

Pikaday - Container example

15 | 16 |

A refreshing JavaScript Datepicker — lightweight, no dependencies, modular CSS.

17 | 18 |
19 |
20 | 21 | 22 |
23 |
24 |
25 |
26 |
27 | 28 |

What is this?

29 | 30 |

Since version 1.0 Pikaday is a stable and battle tested date-picker. Feel free to use it however you like but please report any bugs or feature requests to the GitHub issue tracker, thanks!

31 | 32 |

Copyright © 2014 David Bushell | BSD & MIT license | Example by Ramiro Rikkert

33 | 34 | 35 | 36 | 37 | 51 | 52 | -------------------------------------------------------------------------------- /bower_components/pikaday/examples/calendars.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Pikaday - ranges example 7 | 8 | 9 | 10 | 11 | 12 | Fork me on GitHub 13 | 14 |

Pikaday

15 | 16 |

A refreshing JavaScript Datepicker — lightweight, no dependencies, modular CSS.

17 | 18 | 19 |
20 | 2 months 21 |
22 | 3 months, main aligned to right 23 | 24 |

What is this?

25 | 26 |

Since version 1.0 Pikaday is a stable and battle tested date-picker. Feel free to use it however you like but please report any bugs or feature requests to the GitHub issue tracker, thanks!

27 | 28 |

Copyright © 2013 David Bushell | BSD & MIT license | Example by MoOx

29 | 30 | 31 | 32 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /bower_components/pikaday/examples/container.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Pikaday - Container example 7 | 8 | 9 | 10 | 11 | 12 | Fork me on GitHub 13 | 14 |

Pikaday - Container example

15 | 16 |

A refreshing JavaScript Datepicker — lightweight, no dependencies, modular CSS.

17 | 18 |
19 |
20 | 21 | 22 |
23 |
24 |
25 |
26 |
27 | 28 |

What is this?

29 | 30 |

Since version 1.0 Pikaday is a stable and battle tested date-picker. Feel free to use it however you like but please report any bugs or feature requests to the GitHub issue tracker, thanks!

31 | 32 |

Copyright © 2014 David Bushell | BSD & MIT license | Example by Ramiro Rikkert

33 | 34 | 35 | 36 | 37 | 51 | 52 | -------------------------------------------------------------------------------- /bower_components/pikaday/examples/jquery-amd.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Pikaday - jQuery + AMD example 7 | 8 | 9 | 10 | 11 | 12 | Fork me on GitHub 13 | 14 |

Pikaday - jQuery + AMD example

15 | 16 |

A refreshing JavaScript Datepicker — lightweight, no dependencies, modular CSS.

17 | 18 | 19 |
20 | 21 | 22 |

What is this?

23 | 24 |

Since version 1.0 Pikaday is a stable and battle tested date-picker. Feel free to use it however you like but please report any bugs or feature requests to the GitHub issue tracker, thanks!

25 | 26 |

Copyright © 2014 David Bushell | BSD & MIT license | Example by Ramiro Rikkert

27 | 28 | 29 | 30 | 53 | 54 | -------------------------------------------------------------------------------- /bower_components/pikaday/examples/jquery.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Pikaday - jQuery example 7 | 8 | 9 | 10 | 11 | 12 | Fork me on GitHub 13 | 14 |

Pikaday - jQuery example

15 | 16 |

A refreshing JavaScript Datepicker — lightweight, no dependencies, modular CSS.

17 | 18 | 19 |
20 | 21 | 22 |

What is this?

23 | 24 |

Since version 1.0 Pikaday is a stable and battle tested date-picker. Feel free to use it however you like but please report any bugs or feature requests to the GitHub issue tracker, thanks!

25 | 26 |

Copyright © 2014 David Bushell | BSD & MIT license | Example by Ramiro Rikkert

27 | 28 | 29 | 30 | 31 | 32 | 33 | 45 | 46 | -------------------------------------------------------------------------------- /bower_components/pikaday/examples/moment.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Pikaday - moment.js example 7 | 8 | 9 | 10 | 11 | 12 | Fork me on GitHub 13 | 14 |

Pikaday + moment.js

15 | 16 |

A refreshing JavaScript Datepicker — lightweight, no dependencies, modular CSS.

17 | 18 | 19 |
20 | 21 |
22 |
23 | 24 |

What is this?

25 | 26 |

Since version 1.0 Pikaday is a stable and battle tested date-picker. Feel free to use it however you like but please report any bugs or feature requests to the GitHub issue tracker, thanks!

27 | 28 |

Copyright © 2014 David Bushell | BSD & MIT license | Example by Ramiro Rikkert

29 | 30 | 31 | 32 | 33 | 52 | 53 | -------------------------------------------------------------------------------- /bower_components/pikaday/examples/trigger.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Pikaday - custom trigger element example 7 | 8 | 9 | 10 | 11 | 12 | Fork me on GitHub 13 | 14 |

Pikaday - custom trigger example

15 | 16 |

A refreshing JavaScript Datepicker — lightweight, no dependencies, modular CSS.

17 | 18 | 19 |
20 | 21 |
22 | 23 | 24 | 25 |

What is this?

26 | 27 |

Since version 1.0 Pikaday is a stable and battle tested date-picker. Feel free to use it however you like but please report any bugs or feature requests to the GitHub issue tracker, thanks!

28 | 29 |

Copyright © 2014 David Bushell | BSD & MIT license | Example by Ramiro Rikkert

30 | 31 | 32 | 33 | 45 | 46 | -------------------------------------------------------------------------------- /bower_components/pikaday/examples/weeknumbers.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Pikaday - weeknumbers example 7 | 8 | 9 | 10 | 11 | 12 | Fork me on GitHub 13 | 14 |

Pikaday - showing weeknumbers

15 | 16 |

A refreshing JavaScript Datepicker — lightweight, no dependencies, modular CSS.

17 | 18 | 19 | 20 | 21 |

What is this?

22 | 23 |

Since version 1.0 Pikaday is a stable and battle tested date-picker. Feel free to use it however you like but please report any bugs or feature requests to the GitHub issue tracker, thanks!

24 | 25 |

Copyright © 2014 David Bushell | BSD & MIT license | Example by Ramiro Rikkert

26 | 27 | 28 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /bower_components/pikaday/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Pikaday 7 | 8 | 9 | 10 | 11 | 12 |

Pikaday

13 | 14 |

A refreshing JavaScript Datepicker — lightweight, no dependencies, modular CSS.

15 | 16 |

Pikaday source on GitHub

17 | 18 | 19 |
20 | 21 | 22 |

What is this?

23 | 24 |

Since version 1.0 Pikaday is a stable and battle tested date-picker. Feel free to use it however you like but please report any bugs or feature requests to the GitHub issue tracker, thanks!

25 | 26 |

Copyright © 2014 David Bushell | BSD & MIT license

27 | 28 | 29 | 30 | 42 | 43 | -------------------------------------------------------------------------------- /bower_components/pikaday/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pikaday", 3 | "version": "1.3.0", 4 | "description": "A refreshing JavaScript Datepicker — lightweight, no dependencies, modular CSS", 5 | "keywords": [ 6 | "datepicker", 7 | "calendar", 8 | "date" 9 | ], 10 | "homepage": "http://dbushell.github.io/Pikaday/", 11 | "bugs": "https://github.com/dbushell/Pikaday/issues", 12 | "licenses": [ 13 | { 14 | "type": "BSD", 15 | "url": "http://opensource.org/licenses/BSD-3-Clause" 16 | }, 17 | { 18 | "type": "MIT", 19 | "url": "http://opensource.org/licenses/MIT" 20 | } 21 | ], 22 | "main": "pikaday.js", 23 | "repository": { 24 | "type": "git", 25 | "url": "https://github.com/dbushell/Pikaday.git" 26 | }, 27 | "optionalDependencies": { 28 | "moment": "2.x" 29 | }, 30 | "devDependencies": { 31 | "mocha": "~1.18.2", 32 | "expect.js": "^0.3.1" 33 | }, 34 | "testling": { 35 | "harness": "mocha", 36 | "files": "tests/*.js", 37 | "browsers": [ 38 | "ie/7..latest", 39 | "chrome/latest", 40 | "firefox/3.6", "firefox/latest", 41 | "safari/latest", 42 | "opera/latest" 43 | ] 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /bower_components/pikaday/plugins/pikaday.jquery.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Pikaday jQuery plugin. 3 | * 4 | * Copyright © 2013 David Bushell | BSD & MIT license | https://github.com/dbushell/Pikaday 5 | */ 6 | 7 | (function (root, factory) 8 | { 9 | 'use strict'; 10 | 11 | if (typeof exports === 'object') { 12 | // CommonJS module 13 | factory(require('jquery'), require('../pikaday')); 14 | } else if (typeof define === 'function' && define.amd) { 15 | // AMD. Register as an anonymous module. 16 | define(['jquery', 'pikaday'], factory); 17 | } else { 18 | // Browser globals 19 | factory(root.jQuery, root.Pikaday); 20 | } 21 | }(this, function ($, Pikaday) 22 | { 23 | 'use strict'; 24 | 25 | $.fn.pikaday = function() 26 | { 27 | var args = arguments; 28 | 29 | if (!args || !args.length) { 30 | args = [{ }]; 31 | } 32 | 33 | return this.each(function() 34 | { 35 | var self = $(this), 36 | plugin = self.data('pikaday'); 37 | 38 | if (!(plugin instanceof Pikaday)) { 39 | if (typeof args[0] === 'object') { 40 | var options = $.extend({}, args[0]); 41 | options.field = self[0]; 42 | self.data('pikaday', new Pikaday(options)); 43 | } 44 | } else { 45 | if (typeof args[0] === 'string' && typeof plugin[args[0]] === 'function') { 46 | plugin[args[0]].apply(plugin, Array.prototype.slice.call(args,1)); 47 | } 48 | } 49 | }); 50 | }; 51 | 52 | })); 53 | -------------------------------------------------------------------------------- /bower_components/pikaday/tests/methods.js: -------------------------------------------------------------------------------- 1 | var Pikaday = require('../'), 2 | expect = require('expect.js'); 3 | 4 | describe('Pikaday public method', function () 5 | { 6 | 'use strict'; 7 | 8 | describe('#toString()', function () 9 | { 10 | it('should return empty string when date not set', function () 11 | { 12 | var pikaday = new Pikaday(); 13 | expect(pikaday.toString()).to.be.empty; 14 | }); 15 | 16 | it('should return date string, formatted by moment, when date is set', function() { 17 | var date = new Date(2014, 3, 25), 18 | pikaday = new Pikaday({ 19 | format: 'DD-MM-YY' 20 | }); 21 | 22 | pikaday.setDate(date); 23 | expect(pikaday.toString()).to.eql('25-04-14'); 24 | }); 25 | }); 26 | }); -------------------------------------------------------------------------------- /bower_components/pikaday/tests/module.js: -------------------------------------------------------------------------------- 1 | var Pikaday = require('../'), 2 | expect = require('expect.js'); 3 | 4 | describe('Pikaday', function () 5 | { 6 | 'use strict'; 7 | 8 | it('should expose as a CommonJS module', function () 9 | { 10 | expect(Pikaday).to.be.a('function'); 11 | }); 12 | 13 | it('should NOT leak to the global object', function () 14 | { 15 | expect(window).to.not.have.property('Pikaday'); 16 | }); 17 | 18 | it('should be possible to create a new instance', function () 19 | { 20 | expect(function () { 21 | new Pikaday(); 22 | }).to.not.throwException(); 23 | }); 24 | }); -------------------------------------------------------------------------------- /bower_components/ruleJS/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ruleJS", 3 | "description": "Javascript parser excel-like formulas", 4 | "version": "0.0.4", 5 | "main": [ 6 | "./dist/full/ruleJS.all.full.js" 7 | ], 8 | "repository": { 9 | "type": "git", 10 | "url": "https://github.com/handsontable/ruleJS.git" 11 | }, 12 | "authors": [ 13 | "Handsoncode", 14 | "Handsoncode " 15 | ], 16 | "keywords": [ 17 | "parser", 18 | "formula", 19 | "excel", 20 | "js-excel", 21 | "js-formula", 22 | "js-functions" 23 | ], 24 | "ignore": [ 25 | "**/.*", 26 | "node_modules", 27 | "src", 28 | "lib", 29 | "test" 30 | ], 31 | "homepage": "https://github.com/handsontable/ruleJS", 32 | "_release": "0.0.4", 33 | "_resolution": { 34 | "type": "version", 35 | "tag": "0.0.4", 36 | "commit": "8a35eff77583d66aa84962766676cad7f784f4af" 37 | }, 38 | "_source": "git://github.com/handsontable/ruleJS.git", 39 | "_target": "0.0.4", 40 | "_originalSource": "ruleJS" 41 | } -------------------------------------------------------------------------------- /bower_components/ruleJS/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2012-2014 Marcin Warpechowski 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /bower_components/ruleJS/README.md: -------------------------------------------------------------------------------- 1 | RuleJS 2 | ======= 3 | Like excel library to parse formulas ([demo](http://handsontable.github.io/RuleJS/)) 4 | 5 | ## How to run 6 | - npm install 7 | - grunt start (open in browser http://localhost:8080) 8 | 9 | ## License 10 | The MIT License (see the [LICENSE](https://github.com/Berus/RuleJS/blob/master/LICENSE) file for the full text) 11 | 12 | 13 | -------------------------------------------------------------------------------- /bower_components/ruleJS/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ruleJS", 3 | "description": "Javascript parser excel-like formulas", 4 | "version": "0.0.3", 5 | "main": ["./dist/full/ruleJS.all.full.js"], 6 | "repository": { 7 | "type": "git", 8 | "url": "https://github.com/handsontable/ruleJS.git" 9 | }, 10 | "authors": [ 11 | "Handsoncode", "Handsoncode " 12 | ], 13 | "keywords": [ 14 | "parser", 15 | "formula", 16 | "excel", 17 | "js-excel", 18 | "js-formula", 19 | "js-functions" 20 | ], 21 | "ignore": [ 22 | "**/.*", 23 | "node_modules", 24 | "src", 25 | "lib", 26 | "test" 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /bower_components/ruleJS/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ruleJS", 3 | "description": "ruleJS - Javascript parser excel-like formulas.", 4 | "version": "0.0.3", 5 | "devDependencies": { 6 | "grunt": "~0.4.5", 7 | "grunt-contrib-jshint": "~0.10.0", 8 | "grunt-contrib-nodeunit": "~0.3.3", 9 | "grunt-contrib-uglify": "~0.4.0", 10 | "grunt-contrib-connect": "~0.3.0", 11 | "grunt-replace": "~0.4.4", 12 | "grunt-contrib-clean": "~0.4.1", 13 | "grunt-contrib-concat": "~0.3.0", 14 | "grunt-contrib-watch": "~0.4.4", 15 | "grunt-contrib-jasmine": "~0.5.1", 16 | "grunt-contrib-copy": "~0.5.0", 17 | "http-server": "~0.6.1", 18 | "grunt-config": "~0.1.5", 19 | "grunt-inject": "0.1.1", 20 | "grunt-jison": "*" 21 | }, 22 | "scripts": { 23 | "test": "grunt test -v" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /bower_components/zeroclipboard/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "zeroclipboard", 3 | "description": "The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie and a JavaScript interface.", 4 | "version": "2.2.0", 5 | "main": [ 6 | "dist/ZeroClipboard.js", 7 | "dist/ZeroClipboard.swf" 8 | ], 9 | "keywords": [ 10 | "flash", 11 | "clipboard", 12 | "copy", 13 | "cut", 14 | "paste", 15 | "zclip", 16 | "clip", 17 | "clippy" 18 | ], 19 | "license": "https://github.com/zeroclipboard/zeroclipboard/blob/master/LICENSE", 20 | "authors": [ 21 | { 22 | "name": "Jon Rohan", 23 | "url": "http://jonrohan.me/" 24 | }, 25 | { 26 | "name": "James M. Greene", 27 | "email": "james.m.greene@gmail.com", 28 | "url": "http://greene.io/" 29 | } 30 | ], 31 | "homepage": "http://zeroclipboard.org/", 32 | "repository": { 33 | "type": "git", 34 | "url": "https://github.com/zeroclipboard/zeroclipboard.git" 35 | }, 36 | "location": "git://github.com/zeroclipboard/zeroclipboard.git", 37 | "ignore": [ 38 | "*", 39 | "/dist/.jshintrc", 40 | "!/bower.json", 41 | "!/dist/**" 42 | ], 43 | "_release": "2.2.0", 44 | "_resolution": { 45 | "type": "version", 46 | "tag": "v2.2.0", 47 | "commit": "039fb799c916d3730fbc898c2f5ef24581c7e9b7" 48 | }, 49 | "_source": "git://github.com/zeroclipboard/zeroclipboard.git", 50 | "_target": ">=2.1.6", 51 | "_originalSource": "zeroclipboard" 52 | } -------------------------------------------------------------------------------- /bower_components/zeroclipboard/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "zeroclipboard", 3 | "description": "The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie and a JavaScript interface.", 4 | "version": "2.2.0", 5 | "main": [ 6 | "dist/ZeroClipboard.js", 7 | "dist/ZeroClipboard.swf" 8 | ], 9 | "keywords": [ 10 | "flash", 11 | "clipboard", 12 | "copy", 13 | "cut", 14 | "paste", 15 | "zclip", 16 | "clip", 17 | "clippy" 18 | ], 19 | "license": "https://github.com/zeroclipboard/zeroclipboard/blob/master/LICENSE", 20 | "authors": [ 21 | { 22 | "name": "Jon Rohan", 23 | "url": "http://jonrohan.me/" 24 | }, 25 | { 26 | "name": "James M. Greene", 27 | "email": "james.m.greene@gmail.com", 28 | "url": "http://greene.io/" 29 | } 30 | ], 31 | "homepage": "http://zeroclipboard.org/", 32 | "repository": { 33 | "type": "git", 34 | "url": "https://github.com/zeroclipboard/zeroclipboard.git" 35 | }, 36 | "location": "git://github.com/zeroclipboard/zeroclipboard.git", 37 | "ignore": [ 38 | "*", 39 | "/dist/.jshintrc", 40 | "!/bower.json", 41 | "!/dist/**" 42 | ] 43 | } -------------------------------------------------------------------------------- /bower_components/zeroclipboard/dist/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | /* Enforcing options */ 3 | "bitwise": true, 4 | "camelcase": true, 5 | "curly": true, 6 | "eqeqeq": true, 7 | "es3": true, 8 | "es5": false, 9 | "forin": true, 10 | "freeze": true, 11 | "immed": true, 12 | "indent": 2, 13 | "latedef": true, 14 | "newcap": true, 15 | "noarg": true, 16 | "noempty": true, 17 | "nonbsp": true, 18 | "nonew": true, 19 | "plusplus": false, 20 | "quotmark": "double", 21 | "undef": true, 22 | "unused": true, 23 | "strict": true, 24 | "trailing": true, 25 | "maxparams": 4, 26 | "maxdepth": 5, 27 | "maxstatements": false, 28 | "maxlen": false, /* IDEAL: 120? */ 29 | 30 | 31 | /* Relaxing options */ 32 | "asi": false, 33 | "boss": false, 34 | "debug": false, 35 | "eqnull": true, 36 | "esnext": false, 37 | "evil": false, 38 | "expr": false, 39 | "funcscope": false, 40 | "gcl": false, 41 | "globalstrict": false, 42 | "iterator": false, 43 | "lastsemic": false, 44 | "laxbreak": false, 45 | "laxcomma": false, 46 | "loopfunc": false, 47 | "maxerr": 50, 48 | "moz": false, 49 | "multistr": false, 50 | "notypeof": false, 51 | "proto": false, 52 | "scripturl": false, 53 | "smarttabs": false, 54 | "shadow": false, 55 | "sub": false, 56 | "supernew": false, 57 | "validthis": false, 58 | "noyield": false, 59 | 60 | /* Environments */ 61 | "browser": true, 62 | 63 | /* Global variables */ 64 | "globals": { 65 | /* AMD */ 66 | "define": false, 67 | /* CommonJS */ 68 | "module": false 69 | } 70 | } -------------------------------------------------------------------------------- /bower_components/zeroclipboard/dist/ZeroClipboard.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/handsontable/handsontable-ruleJS/adb2e1c5e9c5632f86105ab7b944f86fc33d7ebf/bower_components/zeroclipboard/dist/ZeroClipboard.swf -------------------------------------------------------------------------------- /css/font-awesome/font/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/handsontable/handsontable-ruleJS/adb2e1c5e9c5632f86105ab7b944f86fc33d7ebf/css/font-awesome/font/FontAwesome.otf -------------------------------------------------------------------------------- /css/font-awesome/font/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/handsontable/handsontable-ruleJS/adb2e1c5e9c5632f86105ab7b944f86fc33d7ebf/css/font-awesome/font/fontawesome-webfont.eot -------------------------------------------------------------------------------- /css/font-awesome/font/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/handsontable/handsontable-ruleJS/adb2e1c5e9c5632f86105ab7b944f86fc33d7ebf/css/font-awesome/font/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /css/font-awesome/font/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/handsontable/handsontable-ruleJS/adb2e1c5e9c5632f86105ab7b944f86fc33d7ebf/css/font-awesome/font/fontawesome-webfont.woff -------------------------------------------------------------------------------- /lib/highlight/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2006, Ivan Sagalaev 2 | All rights reserved. 3 | Redistribution and use in source and binary forms, with or without 4 | modification, are permitted provided that the following conditions are met: 5 | 6 | * Redistributions of source code must retain the above copyright 7 | notice, this list of conditions and the following disclaimer. 8 | * Redistributions in binary form must reproduce the above copyright 9 | notice, this list of conditions and the following disclaimer in the 10 | documentation and/or other materials provided with the distribution. 11 | * Neither the name of highlight.js nor the names of its contributors 12 | may be used to endorse or promote products derived from this software 13 | without specific prior written permission. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY 16 | EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY 19 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | -------------------------------------------------------------------------------- /lib/highlight/styles/github.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | github.com style (c) Vasily Polovnyov 4 | 5 | */ 6 | 7 | pre code { 8 | display: block; padding: 0.5em; 9 | color: #333; 10 | background: #f8f8ff 11 | } 12 | 13 | pre .comment, 14 | pre .template_comment, 15 | pre .diff .header, 16 | pre .javadoc { 17 | color: #998; 18 | font-style: italic 19 | } 20 | 21 | pre .keyword, 22 | pre .css .rule .keyword, 23 | pre .winutils, 24 | pre .javascript .title, 25 | pre .nginx .title, 26 | pre .subst, 27 | pre .request, 28 | pre .status { 29 | color: #333; 30 | font-weight: bold 31 | } 32 | 33 | pre .number, 34 | pre .hexcolor, 35 | pre .ruby .constant { 36 | color: #099; 37 | } 38 | 39 | pre .string, 40 | pre .tag .value, 41 | pre .phpdoc, 42 | pre .tex .formula { 43 | color: #d14 44 | } 45 | 46 | pre .title, 47 | pre .id { 48 | color: #900; 49 | font-weight: bold 50 | } 51 | 52 | pre .javascript .title, 53 | pre .lisp .title, 54 | pre .clojure .title, 55 | pre .subst { 56 | font-weight: normal 57 | } 58 | 59 | pre .class .title, 60 | pre .haskell .type, 61 | pre .vhdl .literal, 62 | pre .tex .command { 63 | color: #458; 64 | font-weight: bold 65 | } 66 | 67 | pre .tag, 68 | pre .tag .title, 69 | pre .rules .property, 70 | pre .django .tag .keyword { 71 | color: #000080; 72 | font-weight: normal 73 | } 74 | 75 | pre .attribute, 76 | pre .variable, 77 | pre .lisp .body { 78 | color: #008080 79 | } 80 | 81 | pre .regexp { 82 | color: #009926 83 | } 84 | 85 | pre .class { 86 | color: #458; 87 | font-weight: bold 88 | } 89 | 90 | pre .symbol, 91 | pre .ruby .symbol .string, 92 | pre .lisp .keyword, 93 | pre .tex .special, 94 | pre .input_number { 95 | color: #990073 96 | } 97 | 98 | pre .built_in, 99 | pre .lisp .title, 100 | pre .clojure .built_in { 101 | color: #0086b3 102 | } 103 | 104 | pre .preprocessor, 105 | pre .pi, 106 | pre .doctype, 107 | pre .shebang, 108 | pre .cdata { 109 | color: #999; 110 | font-weight: bold 111 | } 112 | 113 | pre .deletion { 114 | background: #fdd 115 | } 116 | 117 | pre .addition { 118 | background: #dfd 119 | } 120 | 121 | pre .diff .change { 122 | background: #0086b3 123 | } 124 | 125 | pre .chunk { 126 | color: #aaa 127 | } 128 | 129 | pre .tex .formula { 130 | opacity: 0.5; 131 | } 132 | -------------------------------------------------------------------------------- /lib/highlight/styles/zenburn.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Zenburn style from voldmar.ru (c) Vladimir Epifanov 4 | based on dark.css by Ivan Sagalaev 5 | 6 | */ 7 | 8 | pre code { 9 | display: block; padding: 0.5em; 10 | background: #3F3F3F; 11 | color: #DCDCDC; 12 | } 13 | 14 | pre .keyword, 15 | pre .tag, 16 | pre .django .tag, 17 | pre .django .keyword, 18 | pre .css .class, 19 | pre .css .id, 20 | pre .lisp .title { 21 | color: #E3CEAB; 22 | } 23 | 24 | pre .django .template_tag, 25 | pre .django .variable, 26 | pre .django .filter .argument { 27 | color: #DCDCDC; 28 | } 29 | 30 | pre .number, 31 | pre .date { 32 | color: #8CD0D3; 33 | } 34 | 35 | pre .dos .envvar, 36 | pre .dos .stream, 37 | pre .variable, 38 | pre .apache .sqbracket { 39 | color: #EFDCBC; 40 | } 41 | 42 | pre .dos .flow, 43 | pre .diff .change, 44 | pre .python .exception, 45 | pre .python .built_in, 46 | pre .literal, 47 | pre .tex .special { 48 | color: #EFEFAF; 49 | } 50 | 51 | pre .diff .chunk, 52 | pre .ruby .subst { 53 | color: #8F8F8F; 54 | } 55 | 56 | pre .dos .keyword, 57 | pre .python .decorator, 58 | pre .class .title, 59 | pre .haskell .label, 60 | pre .function .title, 61 | pre .ini .title, 62 | pre .diff .header, 63 | pre .ruby .class .parent, 64 | pre .apache .tag, 65 | pre .nginx .built_in, 66 | pre .tex .command, 67 | pre .input_number { 68 | color: #efef8f; 69 | } 70 | 71 | pre .dos .winutils, 72 | pre .ruby .symbol, 73 | pre .ruby .symbol .string, 74 | pre .ruby .symbol .keyword, 75 | pre .ruby .symbol .keymethods, 76 | pre .ruby .string, 77 | pre .ruby .instancevar { 78 | color: #DCA3A3; 79 | } 80 | 81 | pre .diff .deletion, 82 | pre .string, 83 | pre .tag .value, 84 | pre .preprocessor, 85 | pre .built_in, 86 | pre .sql .aggregate, 87 | pre .javadoc, 88 | pre .smalltalk .class, 89 | pre .smalltalk .localvars, 90 | pre .smalltalk .array, 91 | pre .css .rules .value, 92 | pre .attr_selector, 93 | pre .pseudo, 94 | pre .apache .cbracket, 95 | pre .tex .formula { 96 | color: #CC9393; 97 | } 98 | 99 | pre .shebang, 100 | pre .diff .addition, 101 | pre .comment, 102 | pre .java .annotation, 103 | pre .template_comment, 104 | pre .pi, 105 | pre .doctype { 106 | color: #7F9F7F; 107 | } 108 | 109 | pre .coffeescript .javascript, 110 | pre .xml .css, 111 | pre .xml .javascript, 112 | pre .xml .vbscript, 113 | pre .tex .formula { 114 | opacity: 0.5; 115 | } 116 | 117 | -------------------------------------------------------------------------------- /src/handsontable.formula.css: -------------------------------------------------------------------------------- 1 | td.formula { 2 | background-color: yellow; 3 | } 4 | td.formula-error { 5 | background-color: red; 6 | } 7 | -------------------------------------------------------------------------------- /test/jasmine/SpecRunner.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Jasmine Spec Runner 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /test/jasmine/css/SpecRunner.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Currently, the test suite is designed to be run with the minimum screen width of 600px 3 | * This stylesheet makes sure that this condition is met when using PhantomJS 4 | */ 5 | 6 | html { 7 | font-family: Arial, Helvetica, sans-serif; 8 | font-size: 12px; 9 | min-width: 600px; 10 | } -------------------------------------------------------------------------------- /test/jasmine/lib/jasmine-extensions.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Jasmine matchers by Aaron Powell (https://github.com/aaronpowell) 3 | * Source: http://www.aaron-powell.com/posts/2011-12-23-useful-jasmine-extensions.html 4 | */ 5 | 6 | beforeEach(function() { 7 | this.addMatchers({ 8 | toBeInArray: function(arr) { 9 | return ~arr.indexOf(this.actual); 10 | }, 11 | toBeInDateRange: function(min, max) { 12 | var actual = this.actual.getTime(); 13 | return actual <= max.getTime() && actual >= min.getTime(); 14 | }, 15 | toBeInNumericalRange: function (min, max) { 16 | var actual = this.actual; 17 | return actual <= max && actual >= min; 18 | } 19 | }); 20 | }); 21 | -------------------------------------------------------------------------------- /test/jasmine/lib/jasmine-html-hacks.js: -------------------------------------------------------------------------------- 1 | function applyHtmlReporterHacks(htmlReporter) { 2 | var appendSummaryToSuiteDiv = jasmine.HtmlReporter.SpecView.prototype.appendSummaryToSuiteDiv; 3 | jasmine.HtmlReporter.SpecView.prototype.appendSummaryToSuiteDiv = function () { 4 | appendSummaryToSuiteDiv.call(this); 5 | 6 | var time = (this.spec.finishedAt.getTime() - this.spec.startedAt.getTime() ) / 1000; 7 | this.spec.durationSec = time; 8 | this.summary.innerHTML += ' (' + time.toFixed(2) + ' s)'; 9 | 10 | var suite = this.spec.suite; 11 | while (suite.parentSuite) { 12 | suite = suite.parentSuite; 13 | } 14 | 15 | if (!suite.longestDuration) { 16 | suite.longestDuration = this.spec; 17 | } 18 | else if (this.spec.durationSec > suite.longestDuration.durationSec) { 19 | suite.longestDuration = this.spec; 20 | } 21 | }; 22 | 23 | var refresh = jasmine.HtmlReporter.SuiteView.prototype.refresh; 24 | jasmine.HtmlReporter.SuiteView.prototype.refresh = function () { 25 | refresh.call(this); 26 | if (this.suite.longestDuration) { 27 | this.element.firstChild.innerHTML += " (longest " + this.suite.longestDuration.durationSec.toFixed(2) + ' s)'; 28 | } 29 | }; 30 | 31 | var reportSpecStarting = htmlReporter.reportSpecStarting; 32 | htmlReporter.reportSpecStarting = function (spec) { 33 | reportSpecStarting(spec); 34 | spec.startedAt = new Date(); 35 | }; 36 | 37 | var reportSpecResults = htmlReporter.reportSpecResults; 38 | htmlReporter.reportSpecResults = function (spec) { 39 | spec.finishedAt = new Date(); 40 | reportSpecResults(spec) 41 | }; 42 | } -------------------------------------------------------------------------------- /test/jasmine/lib/jasmine/MIT.LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2008-2011 Pivotal Labs 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /test/jasmine/lib/jasmine/jasmine-helper.js: -------------------------------------------------------------------------------- 1 | /*global jasmine:false, window:false, document:false*/ 2 | 3 | (function(){ 4 | 'use strict'; 5 | 6 | var jasmineEnv = jasmine.getEnv(); 7 | 8 | jasmineEnv.updateInterval = 1000; 9 | var htmlReporter = new jasmine.HtmlReporter(); 10 | jasmineEnv.addReporter(htmlReporter); 11 | 12 | jasmineEnv.specFilter = function(spec) { 13 | return htmlReporter.specFilter(spec); 14 | }; 15 | 16 | var currentWindowOnload = window.onload; 17 | 18 | if (document.readyState !== 'complete') { 19 | window.onload = function() { 20 | if (currentWindowOnload) { 21 | currentWindowOnload(); 22 | } 23 | jasmineEnv.execute(); 24 | }; 25 | } else { 26 | jasmineEnv.execute(); 27 | } 28 | 29 | 30 | }()); 31 | 32 | -------------------------------------------------------------------------------- /test/jasmine/lib/jasmine/jasmine_favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/handsontable/handsontable-ruleJS/adb2e1c5e9c5632f86105ab7b944f86fc33d7ebf/test/jasmine/lib/jasmine/jasmine_favicon.png -------------------------------------------------------------------------------- /test/jasmine/lib/jasmine/phantom-polyfill.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind 4 | 5 | if (!Function.prototype.bind) { 6 | Function.prototype.bind = function (oThis) { 7 | if (typeof this !== "function") { 8 | // closest thing possible to the ECMAScript 5 internal IsCallable function 9 | throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable"); 10 | } 11 | 12 | var aArgs = Array.prototype.slice.call(arguments, 1), 13 | fToBind = this, 14 | FNOP = function () {}, 15 | fBound = function () { 16 | return fToBind.apply(this instanceof FNOP && oThis ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments))); 17 | }; 18 | 19 | FNOP.prototype = this.prototype; 20 | fBound.prototype = new FNOP(); 21 | 22 | return fBound; 23 | }; 24 | } 25 | -------------------------------------------------------------------------------- /test/jasmine/lib/nodeShim.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Default Phantom reporter uses Node type, which IE8 does not support, so we have to mock it 3 | */ 4 | 5 | if(typeof Node == 'undefined'){ 6 | Node = function(){}; 7 | } 8 | -------------------------------------------------------------------------------- /test/jasmine/spec/test-init.js: -------------------------------------------------------------------------------- 1 | afterEach(function () { 2 | window.scrollTo(0, 0) 3 | }); 4 | --------------------------------------------------------------------------------