Skip to content

Commit

Permalink
first commit
Browse files Browse the repository at this point in the history
  • Loading branch information
TomaszRewak committed Jun 2, 2024
0 parents commit c2f19e9
Show file tree
Hide file tree
Showing 457 changed files with 102,790 additions and 0 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
.pytest_cache/
node_modules/
example/build/
*/dist/index.js
49 changes: 49 additions & 0 deletions .vscode/spread-grid.code-workspace
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
{
"folders": [
{
"name": "lib",
"path": "../lib"
},
{
"name": "tests",
"path": "../tests"
},
{
"name": "example",
"path": "../example"
},
{
"name": "docs",
"path": "../docs"
},
{
"name": "react",
"path": "../react"
},
{
"name": "dash",
"path": "../dash"
},
{
"name": "verification",
"path": "../verification"
},
{
"name": "root",
"path": ".."
}
],
"settings": {
"jest.disabledWorkspaceFolders": [
"root",
"dash",
"docs",
"react",
"example"
],
"jest.runMode": "on-demand",
"editor.tabSize": 4,
"editor.detectIndentation": false,
"editor.formatOnSave": true
},
}
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2024 Tomasz Rewak

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.
48 changes: 48 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@

## Docs

Documentation and examples can be fuond at [spread-grid.tomasz-rewak.com](https://spread-grid.tomasz-rewak.com/).

## About

Spread Grid is a javascript library that allows you to create high performance, customizable, and deeply interactive grid-based applications and visualizations with ease.

<p align="center">
<a href="https://spread-grid.tomasz-rewak.com/examples/plotter">See live ↗</a>
</p>
<p align="center">
<img src="https://github.com/TomaszRewak/js-spread-grid/blob/master/resources/screenshot.png?raw=true" width=800/>
</p>

The main focus of this library is to provide a simple and intuitive API that lets you create complex grid-based tools.

It's worth noting that the main goal of this library is efficiency, functionality, and performance. It's not necessarily intended for visually-rich and design-oriented applications. By principle it does not provide some of the bells and whistles that other libraries may do, like animations and transitions. Those features were traded off in favor of speed and performance - that are usually more important in case of heavy-duty internal-tooling applications. That being said, visually appealing applications can still be created with this library.

The ideal use-case for this framework is for creating data-dense tools that help users to monitor and interact with large amounts of data in real-time systems.

The main features of this library include:
- fast grid rendering
- cell styling
- selection
- multi-cell copying
- column and row resizing
- in-grid editing
- data sorting and filtering
- column and row pinning
- mouse-based grid interaction with easy cell identification

The full list of capabilities can be found in the following sections of the documentation.

You can explore the practical applications of this library by navigating to the examples section of the documentation. A good starting point would be the [App Manager](https://spread-grid.tomasz-rewak.com/examples/app-manager), [Heatmap](https://spread-grid.tomasz-rewak.com/examples/heatmap), or [Plotter](https://spread-grid.tomasz-rewak.com/examples/plotter) examples.

## State of the project

This project is currently in the beta stage. It's already quite stable and feature-rich, but there are still some features that are missing and some bugs that need to be fixed. I don't expect any major changes in the core API, though.

The code itself is currently in the "make it work" and "make it fast" stage. The "make it pretty" stage will come later.

## Running the project

After npm-installing individual sub-packages (`dash`, `docs`, `example`, `lib`, `react` and `tests`), you can start working on the project by running the `./workspaces.sh` command in the root directory.

It will create a `tmux` session with all the necessary processes running. It will also open a VSCode workspace with all the sub-packages opened.
34 changes: 34 additions & 0 deletions dash/.Rbuildignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# ignore JS config files/folders
node_modules/
coverage/
src/
lib/
.babelrc
.builderrc
.eslintrc
.npmignore
.editorconfig
.eslintignore
.prettierrc
.circleci
.github

# demo folder has special meaning in R
# this should hopefully make it still
# allow for the possibility to make R demos
demo/.*\.js
demo/.*\.html
demo/.*\.css

# ignore Python files/folders
setup.py
usage.py
setup.py
requirements.txt
MANIFEST.in
CHANGELOG.md
test/
# CRAN has weird LICENSE requirements
LICENSE.txt
^.*\.Rproj$
^\.Rproj\.user$
2 changes: 2 additions & 0 deletions dash/.eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*.css
registerServiceWorker.js
121 changes: 121 additions & 0 deletions dash/.eslintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
{
"extends": ["eslint:recommended", "prettier"],
"parser": "babel-eslint",
"parserOptions": {
"ecmaVersion": 6,
"sourceType": "module",
"ecmaFeatures": {
"arrowFunctions": true,
"blockBindings": true,
"classes": true,
"defaultParams": true,
"destructuring": true,
"forOf": true,
"generators": true,
"modules": true,
"templateStrings": true,
"jsx": true
}
},
"env": {
"browser": true,
"es6": true,
"jasmine": true,
"jest": true,
"node": true
},
"globals": {
"jest": true
},
"plugins": [
"react",
"import"
],
"rules": {
"accessor-pairs": ["error"],
"block-scoped-var": ["error"],
"consistent-return": ["error"],
"curly": ["error", "multi", "consistent"],
"default-case": ["error"],
"dot-location": ["off"],
"dot-notation": ["error"],
"eqeqeq": ["error"],
"guard-for-in": ["off"],
"import/named": ["off"],
"import/no-duplicates": ["error"],
"import/no-named-as-default": ["error"],
"new-cap": ["error"],
"no-alert": [1],
"no-caller": ["error"],
"no-case-declarations": ["error"],
"no-console": ["off"],
"no-div-regex": ["error"],
"no-dupe-keys": ["error"],
"no-else-return": ["error"],
"no-empty-pattern": ["error"],
"no-eq-null": ["error"],
"no-eval": ["off"],
"no-extend-native": ["error"],
"no-extra-bind": ["error"],
"no-extra-boolean-cast": ["error"],
"no-inline-comments": ["error"],
"no-implicit-coercion": ["error"],
"no-implied-eval": ["error"],
"no-inner-declarations": ["off"],
"no-invalid-this": ["error"],
"no-iterator": ["error"],
"no-labels": ["error"],
"no-lone-blocks": ["error"],
"no-loop-func": ["error"],
"no-multi-str": ["error"],
"no-native-reassign": ["error"],
"no-new": ["error"],
"no-new-func": ["error"],
"no-new-wrappers": ["error"],
"no-param-reassign": ["error"],
"no-process-env": ["warn"],
"no-proto": ["error"],
"no-redeclare": ["error"],
"no-return-assign": ["error"],
"no-script-url": ["error"],
"no-self-compare": ["error"],
"no-sequences": ["error"],
"no-shadow": ["off"],
"no-throw-literal": ["error"],
"no-undefined": ["error"],
"no-unused-expressions": ["error"],
"no-use-before-define": ["error", "nofunc"],
"no-useless-call": ["error"],
"no-useless-concat": ["error"],
"no-with": ["error"],
"prefer-const": ["error"],
"radix": ["error"],
"react/jsx-no-duplicate-props": ["error"],
"react/jsx-no-undef": ["error"],
"react/jsx-uses-react": ["error"],
"react/jsx-uses-vars": ["error"],
"react/no-did-update-set-state": ["error"],
"react/no-direct-mutation-state": ["error"],
"react/no-is-mounted": ["error"],
"react/no-unknown-property": ["error"],
"react/prefer-es6-class": ["error", "always"],
"react/prop-types": "error",
"valid-jsdoc": ["off"],
"yoda": ["error"],
"spaced-comment": ["error", "always", {
"block": {
"exceptions": ["*"]
}
}],
"no-unused-vars": ["error", {
"args": "after-used",
"argsIgnorePattern": "^_",
"caughtErrorsIgnorePattern": "^e$"
}],
"no-magic-numbers": ["error", {
"ignoreArrayIndexes": true,
"ignore": [-1, 0, 1, 2, 3, 100, 10, 0.5]
}],
"no-underscore-dangle": ["off"]
}
}
Loading

0 comments on commit c2f19e9

Please sign in to comment.