airbnb/chronos — pull request #142 by mrdmnd (2013-11-01 18:07:46+00:00)
Title: The Big UI Rewrite

### Summary
Creates a new UI for Chronos - the old one is too slow under our current roster of jobs. This is definitely a first draft of the new UI, but it's fully functional and should work well enough for now. On our current production setup, the new UI takes about 2.4 seconds to load all details for 500+ jobs, after which it is quite responsive.

### Usage
$ cd chronos/ui
$ . venv/bin/activate
$ pip install flask
$ python main.py (your_chronos_endpoint_here)

### Highlights

- A super-simple Flask webserver to host the UI, which provides (most of) the same functionality of the old UI.

- A sortable / filterable view onto jobs that eliminates the need for a separate details panel. Uses the excellent Tablesorter plugin from https://github.com/Mottie/tablesorter

- A streamlined create/edit job dialog modal which removes confusing / infrequently modified features (specifically, we don't allow UI users to create async jobs, and all jobs created with the UI will now specify an epsilon of 15M by default.)

- Built on top of Twitter Bootstrap, so anyone can fiddle with the CSS pretty easily if they want to hack on the visuals.

### Anti-features
- We're spinning up another webserver that reads from the Chronos endpoints. This is wholly unnecessary, but for speed of development, I decided it was a reasonable compromise. Eventually it makes sense to find a way to merge this into the main Chronos webserver.

### Screenshots
#### The base view
![screenshot 2013-11-01 10 58 52](https://f.cloud.github.com/assets/525770/1455792/c52157f2-431f-11e3-91e5-694aeb1f9c5d.png)
#### What you see when you click on a job name
![screenshot 2013-11-01 10 59 36](https://f.cloud.github.com/assets/525770/1455793/c88ff470-431f-11e3-8f01-29f0d6903ecf.png)
#### What you see when you edit a job
![screenshot 2013-11-01 10 59 51](https://f.cloud.github.com/assets/525770/1455794/cb235cea-431f-11e3-9c1a-259e17987ee9.png)
#### Sorting, searching (fuzzy) and filtering (equality as well as inequality) all work instantaneously
![screenshot 2013-11-01 11 00 20](https://f.cloud.github.com/assets/525770/1455795/d23dea68-431f-11e3-8527-e9d46e360627.png)
#### Creating a new job
![screenshot 2013-11-01 11 01 31](https://f.cloud.github.com/assets/525770/1455796/d4d24026-431f-11e3-926e-e2c8031ab55d.png)
#### Specify a job to delete it - this prevents accidental deletion until we have LDAP involved.
![screenshot 2013-11-01 11 01 56](https://f.cloud.github.com/assets/525770/1455798/d6d7a122-431f-11e3-9119-5b8752752359.png)

There are still a few things that need to be done (namely, input validation and sanitization) but for the most part this is working and should be merged ASAP so we can start rolling it out.

@krisr @andykram @brndnmtthws @florianleibert @hcai