Dependencies

JavaScript Runtime Dependencies

D3

D3: manipulating and visualizing documents based on data.

JQuery

JQuery: simplifies HTML document traversing, event handling, animating,
and Ajax interactions.

JQuery-UI

JQuery-UI: abstractions for low-level interaction and
animation, advanced effects and high-level, themeable widgets, built on top of the jQuery

Sizzle

sizzle: CSS selector engine designed to be easily dropped in to a
host library.

Codemirror

Codemirror2: in-browser code editor.

science.js

science.js: scientific and statistical
computing methods.

dsp.js

dsp.js: digital signal processing methods
including functions for signal analysis and generation, Oscillators(sine, saw, square, triangle),
Window functions (Hann, Hamming, etc), Envelopes(ADSR), IIR Filters(lowpass, highpass,
bandpass, notch), FFT and DFT transforms, Delays, Reverb.

Modernizr

modernizr: detect HTML5 and CSS3 features in browsers.

Lab Example: index.html.haml
uses Modernizer to check if the browser implents SVG and re-direct the user to an upgrade
page if the feature is not presnet.

MathJax

MathJax is a display engine for mathematics that works in all modern browsers.

Lab Example: lennard-jones-potential.html.haml
uses MathJax to display LaTeX formatted math equations.

OpenSans Font

OpenSans Font: used for most text display

Javascript Development Dependencies

node

node-inspector
- npm package for node-inspector

npm

npm, the Node Package Manager isnow bundled with Node and is
used to specify and manage external node pacage dependencies for a project.

More about using npm for development:

Lab Example: package.json
specifies node pakage dependencies for the Lab project.

RequireJS

RequireJS is a JavaScript file and module
loader. It is optimized for in-browser use, but it can be used in other
JavaScript environments, like Rhino and Node.

Lab Example:

All Lab’s modules use RequireJS for dependency management and build process. Its application is widely
described in this section.

CoffeeScript

CoffeeScript is a language the compiles to JavaScript. Many programmers
find it more expressive and productive. js2cofee can be used to convert
JavaScript to CoffeeScript. RequireJS Optimizer also can convert CoffeeScript to JavaScrit. So
you don’t have to manually do it when referencing CoffeeScript files using RequireJS.

Lab Examples:

  1. get-md2d-data.coffee
    is a coffeescript program used to run the MD2D engine from the command line and generate data used
    for physics validation tests.
  2. PlaybackComponentSVG
    is an object written in CoffeeScript that creates and manages the SVG-based Playback control widget
    for the Molecule Container.
  3. InteractivesController
    is an object written in plain JavaScript which references directly CoffeeScript file using RequireJS
    (Thermometer = require('cs!common/components/thermometer')).

This section covers RequireJS support of CoffeeScript files.

Ruby Development Dependencies

Bundler

Bundler is a Ruby Gem used to express and manage Ruby Gem dependencies.

Lab Example: Gemfile
is used to specify all the Ruby Gem dependencies to build and test the Lab project.

Haml

Haml is a Ruby Gem that processes HTML expressed in HAML markup into HTML.

Lab Example: index.html.haml
is used to generate the main index.html page.

Sass

Sass is a Ruby Gem that provides many powerful extensions to CSS3 and works
by processing files in either SASS-indented-syntax
or SCSS format (a su[erset of standard CSS3) and generating CSS stylesheets.

Lab Examples:

  1. index.sass
    is used to generate: index.css
  2. readme.scss
    is used to generate: readme.css

Guard

Guard is a Ruby Gem that can efficiently watch for changes on the file system and
automatically start the build process when needed.

Lab Example: Starting Guard with bin/guard loads and runs the configuration in Guardfile.

Thor

thor is a Ruby Gem for building self-documenting command line utilities.

Lab Example: cloud.thor are the
Ruby command-line interface scripts for providing access to the AwsLabServer
library for creating and managing AWS cloud servers.

Fog

fog is a Ruby Gem for working with many different cloud service providers.

Lab Example: AwsLabServer
is a library built on top of fog for creating and managing Lab server instances on AWS.

Additional Testing Dependencies

Vows

Vows is an asynchronous behaviour driven testing framework for Node.

Lab Examples:

  1. axis-test.js
    is used to test the drag UI logic for interactively re-scaling Graph axes.
  2. arrays-test.js
    is used to test the utility class for working with regular or Typed Arrays.

jsdom

Miscellaneous

livereload

livereload is project that has created extensions
for Chrome FireFox, and Safari to provide automatic browser reloading when the HTML,
CSS and JavaScript files are changed on the server. The older version 1 extensions
work with the guard-livereload gem.