Node.js port of Multi-user SocialCalc
Clone or download
audreyt * ethercalc 0.20180825.1
  Add lockfiles.
Latest commit fbdf9dc Aug 25, 2018
Permalink
Failed to load latest commit information.
.dotcloud * Add .dotclout/config. Nov 11, 2012
.openshift/cron/minutely formulas to send email and form/app builder merged Jan 28, 2016
apache add a hint for needed apache modules on apache2.4 Jan 15, 2016
app-graphics Graphics for new shell ui, app market Aug 18, 2015
bin Fix a typo in run.sh Aug 7, 2017
images Readd sc_commentbg.gif, it's still referenced by json files (#478) Dec 29, 2016
l10n fixed translation for all languages Nov 23, 2017
misc Do not try to put in history if name of calc is too long May 30, 2017
multi * Release: 20161220 Dec 19, 2016
nginx * Add robots.txt that prevents crawling Sep 16, 2016
src * Update to J 1.0.0 to fix #579. Jul 2, 2018
static * ethercalc 0.20180825.1 Aug 25, 2018
third-party cron - spreadsheet sets nextTimeTrigger.txt Jan 11, 2016
.gitignore removed timestamps.json and replaced .gitignore entry Mar 12, 2018
API.md add new API to list Dec 22, 2015
Changes.txt cron failed on last commit Jan 11, 2016
Dockerfile * Actual dockerfile as used on ethercalc.org Jun 12, 2018
LICENSE.txt Add Etherpad license May 17, 2016
Makefile * Use latest socialcalc github branch Aug 24, 2018
README.mkdn Update README.mkdn Jan 2, 2018
_start cron failed on last commit Jan 11, 2016
android-chrome-192x192.png Add Favicon Jul 4, 2016
app.js * Release: 20161220 Dec 19, 2016
apple-touch-icon.png Add Favicon Jul 4, 2016
browserconfig.xml Add Favicon Jul 4, 2016
db.js Filter extra blank line when restoring audit file Mar 22, 2018
docker-compose.yml Fix container error that deployed by docker-compose Mar 8, 2018
dotcloud.js * Release: 20161220 Dec 19, 2016
dotcloud.yml cron failed on last commit Jan 11, 2016
emailer.js * Make nodemailer optional; Jun 12, 2018
exports.js cron failed on last commit Jan 11, 2016
favicon-16x16.png Add Favicon Jul 4, 2016
favicon-32x32.png Add Favicon Jul 4, 2016
favicon.ico Add Favicon Jul 4, 2016
index.html Fixing - Do not emit en_US 404 errors. Closes #386. Nov 26, 2016
main.js * Regen. Jul 2, 2018
manifest.appcache autocomplete css - JQuery-ui css for widgets Select/Autocomplete etc Jul 14, 2016
manifest.json Add Favicon Jul 4, 2016
mstile-150x150.png Add Favicon Jul 4, 2016
mstile-310x310.png Add Favicon Jul 4, 2016
package-lock.json * ethercalc 0.20180825.1 Aug 25, 2018
package.json * Depend on newly-released socialcalc 2.3.0 Aug 25, 2018
panels.html Change Favicon paths for subdirectory Jul 5, 2016
player-broadcast.js * Release: 20161220 Dec 19, 2016
player-graph.js regenerate - for bugfix - Export in view mode not working #451 Nov 15, 2016
player.js * Rebuild Jun 6, 2018
privacy.png cron failed on last commit Jan 11, 2016
requirements.txt cron failed on last commit Jan 11, 2016
robots.txt * Add robots.txt that prevents crawling Sep 16, 2016
safari-pinned-tab.svg Add Favicon Jul 4, 2016
sc.js * Make nodemailer optional; Jun 12, 2018
server.js cron failed on last commit Jan 11, 2016
snapcraft.yaml add snapcraft.yaml file Sep 13, 2016
stackato.yml cron failed on last commit Jan 11, 2016
start.html * Upgrade EtherCalc to support latest ODS import during @italovignoli Aug 7, 2017
supervisord.conf cron failed on last commit Jan 11, 2016
webpack.config.js * Build multi.js for production Dec 7, 2014
yarn.lock * ethercalc 0.20180825.1 Aug 25, 2018

README.mkdn

EtherCalc

Installation

For global installation (may need root)

npm i -g ethercalc
ethercalc

For local non-root installation

npm i
make

Nodejs older than 6.0

downgrade Nodemailer to v2.7.2

Or install with our Docker image, which comes with support for webworker-threads:

# Install docker and docker-compose
sudo ./misc/linux-install-docker-and-compose.sh

# Run ethercalc on port 80 ( http://localhost/ )
docker-compose up -d

Config database

set env vars:
  REDIS_PORT REDIS_HOST REDIS_SOCKPATH REDIS_PASS REDIS_DB OPENSHIFT_DATA_DIR

Defaults:
  REDIS_HOST = localhost   
  REDIS_PORT = 6379   
  OPENSHIFT_DATA_DIR= process.cwd!

OPENSHIFT_DATA_DIR is used if redis is not Running.

Code is here:
https://github.com/audreyt/ethercalc/blob/df758d4c2f5cbcb00b50e9289a8ba237d4f8fa86/src/db.ls#L5

Send email

Optional - Send email formulas requires OAuth2 & cron  e.g. =email(to, subject, body), =emailAt(time, to, subject, body)

OAuth2 - Set environment vars
1) Tutorial: follow the tutorial to get the 4 environment vars http://masashi-k.blogspot.com.au/2013/06/sending-mail-with-gmail-using-xoauth2.html
2) Set 4 environment vars - see [src/emailer.ls] vars: user, clientId, clientSecret, refreshToken
Tested using gmail, have not tested with other providors

Cron - Required for emailAt formulas.
See *curl* in [.openshift/cron/minutely/timetrigger] for openshift version (openshift](openshift.redhat.com)
The curl checks the database for unsent emails and updates the database after sending.

REST API

Please see API.md for the API Blueprint, or the online version at Apiary.

Runtime Flags

Listening Interface: --host / --port

Specify a specific host and/or a different port for the service.

By default EtherCalc listens at 0.0.0.0:8000 (all IPv4 interfaces).

Using SSL: --keyfile / --certfile

openssl genrsa -out ethercalc-key.pem 1024
openssl req -new -key ethercalc-key.pem -out certrequest.csr
openssl x509 -req -in certrequest.csr -signkey ethercalc-key.pem -out ethercalc-cert.pem
ethercalc --keyfile ethercalc-key.pem --certfile ethercalc-cert.pem

Prefers polling over Websocket: --polling

Useful when running behind a proxy without WebSocket support.

Enable Cross-Origin Resource Sharing: --cors

Useful when setting up EtherCalc as a public REST API server.

URL Prefix: --basepath /path/prefix

Useful when running under an URL rewriter. If running with a nginx reverse proxy, please add this section:

    location /zappa/socket/__local/ {
        rewrite (.*) /path/prefix$1;
    }

Access Control: --key secret

Offers read-write vs. read-only modes. See issues #1 and #4 for details on setting this up.

Disable server-side WebWorkers: --vm

Runs a single-thread background loop with vm.createContext instead of webworker-threads.

Useful for running custom functions in server side that requires full VM access.

Expires inactive spreadsheets: --expire 86400

Deletes a spreadsheet's content after N seconds of inactivity. Activities include accessing with REST API as well as Web UI, including moving the active cell cursor on an opened page.

Licensing

Common Public Attribution License (Socialtext Inc.)

  • socialcalcspreadsheetcontrol.js
  • socialcalctableeditor.js

Artistic License 2.0 (Socialtext Inc.)

  • formatnumber2.js
  • formula1.js
  • socialcalc-3.js
  • socialcalcconstants.js
  • socialcalcpopup.js

Artistic License 2.0 (Framasoft)

  • l10n/fr.json

MIT License (John Resig, The Dojo Foundation)

  • static/jquery.js

MIT License (HubSpot, Inc.)

  • static/vex-theme-flat-attack.css
  • static/vex.combined.min.js
  • static/vex.css

MIT License (Stuart Knightley, David Duponchel, Franz Buchinger, Ant'onio Afonso)

  • static/jszip.js

Apache License 2.0 (SheetJS)

  • static/shim.js
  • static/xlsx.js
  • static/xlsxworker.js
  • start.html (xlsx2socialcalc.js)

CC0 Public Domain (唐鳳)

  • src/*.ls

Mozilla Public License Version 2.0 (LibreOffice contributors)

  • images/sc_*.png