Commit 73076946 authored by Wolf Vollprecht's avatar Wolf Vollprecht
Browse files

added experimental features for table inline editing and also latex formula editing

parent e4bc8cba
<!DOCTYPE html>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="file:////home/wolfv/Programs/uberwriter/data/media/formular_editor/mathquill/build/mathquill.css"></link>
</head>
<body>
<span class="mathquill-editable">f(x)=?</span>
<script type="text/javascript" src="file:///home/wolfv/Programs/uberwriter/data/media/formular_editor/mathquill/test/support/jquery-1.7.2.js"></script>
<script type="text/javascript" src="file:///home/wolfv/Programs/uberwriter/data/media/formular_editor/mathquill/build/mathquill.js"></script>
<script type="text/javascript">
</script>
</body>
</html>
\ No newline at end of file
mathquill @ ecb5c3cb
Subproject commit ecb5c3cb5384e92c72514840afe5ed99fea6b082
{
"directory": "demo/bower_components"
}
\ No newline at end of file
# EditorConfig helps developers define and maintain consistent
# coding styles between different editors and IDEs
# editorconfig.org
root = true
[*]
# Change these settings to your own preference
indent_style = space
indent_size = 2
# We recommend you to keep these unchanged
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false
# Set default behaviour, in case users don't have core.autocrlf set.
* text=crlf
\ No newline at end of file
node_modules
.idea
_SpecRunner.html
.grunt
.DS_Store
cars.sqlite
dev.html
node_modules
Gruntfile.js
dist/*
lib/*
{
"esnext": true,
"boss": false,
"browser": true,
"camelcase": true,
"curly": true,
"debug": false,
"devel": false,
"eqeqeq": false, // Should be true
"eqnull": true, // Should be false
"evil": false,
"forin": true,
"freeze": true,
"funcscope": false,
"immed": true,
"indent": 2,
"latedef": false,
"laxbreak": false,
"laxcomma": true, // Should be false
"loopfunc": false,
"maxdepth": 5,
"maxlen": 190,
"maxparams": 9,
"multistr": false,
"newcap": true,
"nonbsp": true,
"nonew": true,
"notypeof": false,
"predef": [],
"proto": false,
"shadow": true, // Should be false
"sub": false,
"supernew": false,
"undef": false,
"unused": false
}
language: node_js
node_js:
- "0.10"
before_script:
- "npm update -g npm"
- "export DISPLAY=:99.0"
- "sh -e /etc/init.d/xvfb start"
- "npm install -g grunt-cli"
All releases are described at https://github.com/handsontable/handsontable/releases
# Contributing to Handsontable
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.
To help us merge your Pull Request, please make sure you follow these points:
1. Please make your fix on a separate branch. This makes merging much easier.
2. Do not edit files in `dist/` directory (e.g: `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).
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)
4. **Very important:** Please review our [coding style](https://github.com/handsontable/handsontable/wiki/Coding-style) for instructions on how to maintain a fork and submit patches.
5. Describe the problem in the Pull Request description (of course you would do it, why do I mention that?)
Thank you for your commitment!
## Team rules
The Handsontable team utilizes Git-Flow. See [How we use Git-Flow](https://github.com/handsontable/handsontable/wiki/How-we-use-Git-Flow)
/**
* This file is used to build Handsontable from `src/*`
*
* Installation:
* 1. Install Grunt CLI (`npm install -g grunt-cli`)
* 1. Install Grunt 0.4.0 and other dependencies (`npm install`)
*
* Build:
* Execute `grunt` from root directory of this directory (where Gruntfile.js is)
* To execute automatically after each change, execute `grunt --force default watch`
* To execute build followed by the test run, execute `grunt test`
*
* Result:
* building Handsontable will create files:
* - dist/handsontable.js
* - dist/handsontable.css
* - dist/handsontable.full.js
* - dist/handsontable.full.css
* - dist/handsontable.full.min.js
* - dist/handsontable.full.min.css
*
* See http://gruntjs.com/getting-started for more information about Grunt
*/
var browsers = [
{
browserName: 'firefox',
platform: 'Windows 7'
},
{
browserName: 'chrome',
platform: 'Windows 7'
},
{
browserName: 'opera',
platform: 'Windows 7'
},
//{
// browserName: 'internet explorer',
// version: '8',
// platform: 'Windows 7'
//},
//{
// browserName: 'internet explorer',
// version: '9',
// platform: 'Windows 7'
//},
{
browserName: 'internet explorer',
version: '10',
platform: 'Windows 8'
}
];
module.exports = function (grunt) {
require('time-grunt')(grunt);
require('load-grunt-tasks')(grunt);
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
gitinfo: {},
meta: {
src: [
'src/*.js',
'src/editors/*.js',
'src/plugins/**/!(*.spec).js',
'src/renderers/*.js',
'src/validators/*.js',
'src/shims/*.js',
'src/3rdparty/*.js'
],
walkontable: [
'src/3rdparty/walkontable/src/*.js'
],
vendor: [
'lib/numeral/numeral.js'
]
},
watch: {
options: {
livereload: true // works with Chrome LiveReload extension. See: https://github.com/gruntjs/grunt-contrib-watch
},
files: [
'src/**/*(*.js|*.css|*.html)',
'!src/3rdparty/walkontable/test/**/*',
'lib/**/*(*.js|*.css)'
],
tasks: ['build-dev']
},
jasmine: {
handsontable: {
src: [
'dist/handsontable.js',
'demo/js/numeral.de-de.js',
'demo/js/backbone/lodash.underscore.js',
'demo/js/backbone/backbone.js',
'demo/js/backbone/backbone-relational/backbone-relational.js',
'demo/js/jquery-ui/js/jquery-ui.custom.js',
'plugins/removeRow/handsontable.removeRow.js'
],
options: {
specs: [
'test/jasmine/spec/*Spec.js',
'test/jasmine/spec/!(mobile)*/*Spec.js',
'src/plugins/*/test/*.spec.js',
'plugins/*/test/*.spec.js',
'test/jasmine/spec/MemoryLeakTest.js'
],
styles: [
'test/jasmine/css/SpecRunner.css',
'dist/handsontable.css',
'plugins/removeRow/handsontable.removeRow.css',
'demo/js/jquery-ui/css/ui-bootstrap/jquery-ui.custom.css',
'demo/js/pikaday/css/pikaday.css'
],
vendor: [
'demo/js/jquery.min.js',
'lib/numeral/numeral.js',
'lib/autoResize/autoResize.js',
'lib/copyPaste/copyPaste.js',
'lib/SheetClip/SheetClip.js',
'lib/jsonpatch/json-patch-duplex.js',
'demo/js/moment/moment.js',
'demo/js/pikaday/pikaday.js',
'demo/js/ZeroClipboard.js',
'test/jasmine/lib/jasmine-extensions.js'
],
helpers: [
'test/jasmine/spec/SpecHelper.js',
'test/jasmine/lib/nodeShim.js',
'test/jasmine/spec/test-init.js'
],
outfile: 'test/jasmine/SpecRunner.html',
template: 'test/jasmine/templates/SpecRunner.tmpl',
keepRunner: true
}
},
walkontable: {
src: [
//'dist/walkontable.js',
'dist/handsontable.js'
],
options: {
specs: [
'src/3rdparty/walkontable/test/jasmine/spec/*.spec.js'
],
styles: [
'src/3rdparty/walkontable/css/walkontable.css'
],
vendor: [
'demo/js/jquery.min.js',
'lib/numeral/numeral.js',
'lib/autoResize/autoResize.js',
'lib/copyPaste/copyPaste.js',
'lib/SheetClip/SheetClip.js',
'lib/jsonpatch/json-patch-duplex.js',
'demo/js/moment/moment.js',
'demo/js/pikaday/pikaday.js',
'demo/js/ZeroClipboard.js',
'demo/js/numeral.de-de.js'
],
helpers: [
'src/3rdparty/walkontable/test/jasmine/SpecHelper.js',
'test/jasmine/lib/nodeShim.js',
'src/3rdparty/walkontable/test/jasmine/test-init.js'
],
outfile: 'src/3rdparty/walkontable/test/jasmine/SpecRunner.html',
template: 'test/jasmine/templates/SpecRunner.tmpl',
keepRunner: true
}
},
mobile: {
src: [
'dist/handsontable.js',
'demo/js/numeral.de-de.js',
'demo/js/backbone/lodash.underscore.js',
'demo/js/backbone/backbone.js',
'demo/js/backbone/backbone-relational/backbone-relational.js',
'demo/js/jquery-ui/js/jquery-ui.custom.js',
'plugins/removeRow/handsontable.removeRow.js'
],
options: {
specs: [
'test/jasmine/spec/mobile/*Spec.js',
'src/plugins/*/test/mobile/*.spec.js'
],
styles: [
'test/jasmine/css/SpecRunner.css',
'dist/handsontable.css',
'plugins/removeRow/handsontable.removeRow.css',
'demo/js/jquery-ui/css/ui-bootstrap/jquery-ui.custom.css',
'demo/js/pikaday/css/pikaday.css'
],
vendor: [
'demo/js/jquery.min.js',
'lib/numeral/numeral.js',
'demo/js/ZeroClipboard.js',
'demo/js/moment/moment.js',
'demo/js/pikaday/pikaday.js',
'test/jasmine/lib/jasmine-extensions.js'
],
helpers: [
'test/jasmine/spec/SpecHelper.js',
'test/jasmine/spec/MobileSpecHelper.js',
'test/jasmine/lib/nodeShim.js',
'test/jasmine/spec/test-init.js'
],
outfile: 'test/jasmine/MobileSpecRunner.html',
template: 'test/jasmine/templates/SpecRunner.tmpl',
keepRunner: true
}
}
},
connect: {
server: {
options: {
port: 8080,
base: '.',
keepalive: true
}
},
sauce: {
options: {
port: 9999,
base: '.',
keepalive: false
}
}
},
'saucelabs-jasmine': {
handsontable: {
options: {
urls: ['http://localhost:9999/test/jasmine/SpecRunner.html'],
// build: process.env.TRAVIS_JOB_ID,
build: '<%= pkg.version %>-<%= gitinfo.local.branch.current.name %>',
concurrency: 3,
browsers: browsers,
testname: "Development test (Handsontable)"
}
},
walkontable: {
options: {
urls: ['http://localhost:9999/src/3rdparty/walkontable/test/jasmine/SpecRunner.html'],
// build: process.env.TRAVIS_JOB_ID,
build: '<%= pkg.version %>-<%= gitinfo.local.branch.current.name %>',
concurrency: 3,
browsers: browsers,
testname: "Development test (Walkontable)"
}
}
},
jshint: {
options: {
jshintrc: true
},
handsontable: '<%= meta.src %>',
walkontable: '<%= meta.walkontable %>'
},
hotBuilder: {
handsontable: {
files: {
'dist': 'package.json'
}
},
handsontableDev: {
files: {
'dist': 'package.json'
},
options: {
devMode: true
}
},
options: {
minify: true
}
}
});
// Default task.
grunt.registerTask('default', ['jshint', 'gitinfo', 'build']);
grunt.registerTask('build', ['hotBuilder:handsontable']);
grunt.registerTask('build-dev', ['hotBuilder:handsontableDev']);
grunt.registerTask('test', ['default', 'jasmine:handsontable', 'jasmine:walkontable', 'jasmine:mobile:build']);
grunt.registerTask('test:handsontable', ['default', 'jasmine:handsontable']);
grunt.registerTask('test:walkontable', ['default', 'jasmine:walkontable']);
grunt.registerTask('test:mobile', ['default', 'jasmine:mobile:build']);
grunt.registerTask('sauce', ['default', 'connect:sauce', 'saucelabs-jasmine:walkontable', 'saucelabs-jasmine:handsontable']);
grunt.registerTask('sauce:handsontable', ['default', 'connect:sauce', 'saucelabs-jasmine:handsontable']);
grunt.registerTask('sauce:walkontable', ['default', 'connect:sauce', 'saucelabs-jasmine:walkontable']);
grunt.loadTasks('tasks');
};
(The MIT License)
Copyright (c) 2012-2014 Marcin Warpechowski
Copyright (c) 2015 Handsoncode sp. z o.o. <hello@handsontable.com>
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
'Software'), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# Handsontable [![Build Status](https://travis-ci.org/handsontable/handsontable.png?branch=master)](https://travis-ci.org/handsontable/handsontable)
Handsontable is a minimalist approach to Excel-like table editor (data grid) for HTML & JavaScript.
Runs in IE 10+, Firefox, Chrome, Safari and Opera.
See the demos at http://handsontable.com/ or fork the example on [JSFiddle](http://jsfiddle.net/js_ziggle/hU6Kz/3228/).
## Usage
First, include all the dependencies. All the files that you need are in the `dist\` directory:
```html
<script src="dist/handsontable.full.js"></script>
<link rel="stylesheet" media="screen" href="dist/handsontable.full.css">
```
Then, create a new `Handsontable` object, passing a reference to an empty div as a first argument. After that, load some data if you wish:
```html
<div id="hot"></div>
<script>
var data = [
["", "Kia", "Nissan", "Toyota", "Honda"],
["2008", 10, 11, 12, 13],
["2009", 20, 11, 14, 13],
["2010", 30, 15, 12, 13]
];
var container = document.getElementById('hot');
var hot = new Handsontable(container,
{
data: data,
minSpareRows: 1,
colHeaders: true,
contextMenu: true
});
</script>
```
## API Reference
Check out the new wiki pages: [Options](https://github.com/handsontable/handsontable/wiki/Options), [Methods](https://github.com/handsontable/handsontable/wiki/Methods) and [Events](https://github.com/handsontable/handsontable/wiki/Events)
## Changelog
To see the list of recent changes, see [Releases](https://github.com/handsontable/handsontable/releases).
## Questions
Please use the :new: [Handsontable Google Group](https://groups.google.com/forum/?fromgroups=#!forum/handsontable) for posting general **Questions**.
Make sure the question was not answered before in [FAQ](https://github.com/handsontable/handsontable/wiki/FAQ) or [GitHub Issues](https://github.com/handsontable/handsontable/issues)
## Reporting bugs and feature requests
Please follow this guidelines when reporting bugs and feature requests:
1. Use [GitHub Issues](https://github.com/handsontable/handsontable/issues) board to report bugs and feature requests (not our email address)
2. Please **always** write steps to reproduce the error. That way we can focus on fixing the bug, not scratching our heads trying to reproduce it.
3. If possible, please add a JSFiddle link that shows the problem (start by forking [this fiddle](http://jsfiddle.net/js_ziggle/hU6Kz/3228/)). It saves us much time.
4. If you can't reproduce it on JSFiddle, please add a screenshot that shows the problem. JSFiddle is much more appreciated because it lets us start fixing straight away.
Thanks for understanding!
## Contributing
Please see [CONTRIBUTING.md](CONTRIBUTING.md)
## Contact
You can contact us at hello@handsontable.com.
## License
The MIT License (see the [LICENSE](https://github.com/handsontable/handsontable/blob/master/LICENSE) file for the full text)
{
"name": "handsontable",
"description": "Spreadsheet-like data grid editor that provides copy/paste functionality compatible with Excel/Google Docs",
"version": "0.15.0-beta6",
"main": ["./dist/handsontable.full.js", "./dist/handsontable.full.css"],
"homepage": "http://handsontable.com/",
"repository": {
"type": "git",
"url": "https://github.com/handsontable/handsontable.git"
},
"authors": [
"Handsoncode", "Handsoncode <hello@handsontable.com>"
],
"keywords": [
"data",
"grid",
"table",
"editor",
"grid-editor",
"data-grid",
"data-table",
"spreadsheet",
"excel",
"tabular-data",
"edit-cell",
"editable-table",
"data-spreadsheet"
],
"ignore": [
"**/.*",
"components",
"demo",
"node_modules",
"src",
"test"
],
"dependencies": {
"zeroclipboard": ">=2.1.6",
"moment": "2.9.0",
"pikaday": "1.3.0"
},
"devDependencies": {
"chroma-js": "~0.5.6"
}
}
<!doctype html>
<html>
<head>
<meta charset='utf-8'>
<title>Load &amp; Save (Ajax) - Handsontable</title>
<!--
Loading Handsontable (full distribution that includes all dependencies apart from jQuery)
-->
<link data-jsfiddle="common" rel="stylesheet" media="screen" href="../dist/handsontable.full.css">
<script data-jsfiddle="common" src="../dist/handsontable.full.js"></script>
<!--
Loading demo dependencies. They are used here only to enhance the examples on this page
-->