Port sonar to Backbone.

Review Request #7526 — Created July 15, 2015 and submitted — Latest diff uploaded

Information

student-sonar
master
316d206...

Reviewers

This very large change does a bunch of things. Primarily, the use of web
components and custom elements has been swapped out for backbone.js. The
reasoning behind this was multifold. First, the way that data gets passed in to
custom elements (via attributes) was a little annoying for building
highly-interactive pages. Second, adding custom elements involved a surprising
amount of boilerplate code, made worse by the fact that some browsers needed
shims for CSS. Finally, the specs for webcomponents are still in quite a bit of
flux, and it's looking like things are going to change significantly in the
next year or so.

This also:
- Tweaks some of the layout to fill the window better (sometimes some pages
would have @header-height worth of their content hidden at the bottom).
- Adds a REST API for the database using express-restify-mongoose. This is
extended a bit to add user-based access control. Why restify doesn't include
that is a mystery to me.
- Adds some new schema for groups and some additional data into user which will
be used in a future change.
- Adds a cute spinner that shows while content is loading.
- Changed around URLs to use fewer querystring parameters.

Checked all existing behavior. Saw that things worked pretty much as expected.