Skip to content

Latest commit

 

History

History
 
 

v5-unity

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Online Python Tutor v5 "unity" -- the goal for this version is to
significantly clean up, modernize, and modularize the OPT codebase to
ease future development.

Specifically, this version of the codebase improves upon the older v3/
code by using TypeScript and refactoring the code for better modularity.
To see how, compare the TypeScript files found here in js/ and the older
messier JavaScript files in ../v3/js/

The main caveat, though, is that there's the extra complexity of a
Webpack- and TypeScript-based compilation step. See these files for more
info:

- package.json      <-- Node.js dependencies for npm
- webpack.config.js <-- Webpack configuration file

Note that this directory (like v3/) contains only the web frontend code
and the Python execution backend (mainly in pg_logger.py). For the
backends that run *other* (i.e., non-Python) languages, see
../v4-cokapi/

---
After everything has been installed properly (see below):

To start the Webpack automatic file watching and code compilation
environment, run:

  npm run webpack


To start the webserver, run:

  npm start

then visit here to load an HTML page in your browser:
  http://localhost:8003/visualize.html

To make a production (minified, cache-busted) build for deployment, run:

  npm run production-build


(TODO: the --optimize-minimize doesn't seem to work right now; dunno why, ergh)
---
This workflow was most recently tested on 2017-02-11 with these versions of major tools:

typescript 2.1.6
webpack 2.2.1

---
To get started, install:

1.) Node.js / npm
2.) Global npm dependency installs (run these commands in the v5-unity/ directory):

  sudo npm install webpack -g
  npm link webpack            # link to the local node_modules/ dir
  sudo npm install webpack-dev-server -g
  sudo npm install -g typescript
  npm link typescript         # link to the local node_modules/ dir
  sudo npm install -g tsd

3.) Run "npm install" in this directory to install node dependencies

4.) Run "tsd install" in this directory to install TypeScript definition files

5.) Install bottle.py to run the local webserver (I suppose we could use node too, but oh wells!)

  sudo pip install bottle

6.) [Optional] follow ../tests/frontend-regression-tests/README.txt to install
    dependencies for visual regression testing

======
History:

I started porting v3/ over to v5-unity/ on 2016-06-12 since the headache
of manually maintaining so many JS/CSS files and their intricate
dependencies was starting to get out of hand ... i've waited for years
to port to a more sustainable and modern development setup ...

I decided to go with Webpack for the module system and to upgrade the
appropriate versions of libraries to match, without breaking crufty
legacy code (hopefully)


======
Older (possibly-outdated) notes from mid-2016:

Requires these global installations:
- Node.js / npm
- webpack: http://webpack.github.io/ and webpack-dev-server
  sudo npm install webpack -g
  sudo npm install webpack-dev-server -g

  [you might need to install webpack locally (without the -g) ... weird]

If you run: webpack-dev-server --progress --colors

then your code will automatically recompile and be refreshed here:
http://localhost:8080/webpack-dev-server/visualize.html
(but this is kinda flaky, ugh)

Instead, use this to continually compile:
webpack --watch

and run the server with Bottle:
python bottle_server.py

---
Ported the code base over to TypeScript for enhanced static checking

For developing using TypeScript:
  sudo npm install -g typescript # install globally
  npm link typescript            # link to the local node_modules/ dir
  npm install tsd -g             # tsd type definitions manager
  tsd install require --save
  tsd install jQuery --save
  tsd install jquery.bbq --save
  tsd install ace --save
  tsd install qtip2 --save
  tsd install jqueryui --save
  tsd install d3 --save
  tsd install diff-match-patch --save
  tsd install jquery.simplemodal --save

  (then in the future, simply run 'tsd install' to install definition
   modules saved in tsd.json)

Currently using: Version 1.8.10