tabulata calculates and aggregates list-based data. Its function expressions are versatile and easy to read and use.
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
docs
prototype
website
LICENCE.txt
README.md

README.md

Tabulata

Tabulata is a web application built in Javascript which calculates and aggregates list-based data. Its function expressions are versatile and easy to read and use.

For a quick overview of the functionality, see http://www.tabulata.info/

A working installation of tabulata including the examples is available at http://tabulata.jit.su/

Technical Design

Tabulata has a slim server backend built in Node.js using Express. Persistence is done using Redis (which was chosen due to having a very easy interface). The client is written using Javascript and jQuery. It uses JSON-REST to fetch content from the backend. Calculation is done client-side (but could be done also server-side).

The client divides responsabilitiy between frontend (GUI, rendering) and backend (calculation). The backend code is designed to be executed as a WebWorker, though currently it's not to facilitate development. PEG.js is used to parse the tabulata expressions (which are then translated into Javascript to be executed). The grammar is defined in prototype/docs/tabulata-expression.peg.

Source Files Organization

Installation and Running

  1. Tabulata uses Node.js and Redis. Have them installed.

  2. Edit the config file prototype/config/config.json, if necessary

  3. Install packages and run node:

    npm install
    node app
    

Future Plans

  • Use a client-side framework for event handling, rendering
  • Make WebWorker working again
  • Offer results as JSON feed
  • Many GUI improvements
  • More help when constructing expressions: custom keyboard, especially for tablet users
  • Include custom calculation functions
  • Use precise Numbers library

License

GNU Affero General Public License


Copyright (C) 2012 Samuel Rutishauser (samuel@rutishauser.name)

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see http://www.gnu.org/licenses/.