** April 4, 2013 **
iperf display implemented
- scaled to 50,000,000
- update rate is every 2s
- the display does not draw until receiving 2 buffers of data (this way if there is a stale buffer it doesn't get displayed)
- duration is 10000 seconds. seems like there is no need for a button to restart?
- displaying 10s data
- if the data underruns (either because the server response is too slow or because the iperf data stops being updated) the display draws 0s
- seeing the data stall a lot (timestamp and end-time remain the same through many fetches)

** April 4, 2013 **
Fix issues:
	305 - "close x" now unselects flow. double click to delete a flow
	323 - gui now recovers on timeout errors and polls again
	324 - fixed problem with added flows not displaying
	325 - fixed logic displaying flows in topology view

** March 28, 2013 **
- add and delete flow implemented
- to add flow
	- mouse down in src edge switch
	- drag to dst edge switch
	- release/confirm to create flow
- to delete flow
	- select flow in flow chooser
	- click "close" button in flow table
	- confirm
- same "pending" style as other actions

** March 28, 2013 **
- basic flow chooser
	- click in "eye" to show full list
	- click on "eye" in full list to monitor that flow in the top slot (and show the flow in topology)
		- other flows get pushed down one slot
		- when a flow is pushed off the list, it is no longer displayed in topology
- bug fix for link disappearing after being added
- color improvements
- draw vector while linking to make it clearer what's going to happen

** March 27, 2013 **
- click onos node "eye" icon to highlight switches associated with that controller
- double click onos node else where to activate/deactivate
- double click core switch to activate/deactivate
- mouse down on switch, drag to other switch, mouse up to make link up/down
	allowed links are
		aggregation->core (link up/down)
		core->core (link up/down)
- pending states for links, switches and controllers after executing command
	object pulses until state change or timeout (12s)
- merge from upstream/master

** March 25, 2013 **
- First pass at flow chooser
	- Uses mock data
	- Select flow to show the flow in topology view
	- Selected flow currently always shows "marching ants" Once iperf is setup the movement will only be when there is iperf traffic
	- Still need to do popup flow chooser to "monitor" flows in the flow panel

** March 23, 2013 **
- Link and switch state updates dynamically
- Link direction is indicated with arrow heads

** March 22, 2013 **
- Workarounds for Chrome v25 rendering bugs
- Fixed broken proxy functionality in restapi2.py
- webui should now work when hosted from a different server than the controller (where it uses gui3.onlab.us:8080) and also when run from the same server (where it uses localhost:8080)

** March 20, 2013 **
- URL parameters control functions as follows:
	http://localhost:9000/ons-demo/index.html
		uses the ONOS_HOST defined in restapi2.py. currently http://gui3.onlab.us:8080
	http://localhost:9000/ons-demo/index.html?proxy
		uses the index.html host to proxy to ONOS_HOST (works around cross site scripting restrictions to allow the WebUI to be served from a different server than the one that hosts the controller)
	http://localhost:9000/ons-demo/index.html?mock
		uses the mock JSON responses under ons-dmo/data
- clicking a controller behavior change
	1) if all controllers are selected, deselects all controllers except the one clicked
	2) if only the clicked controller is selected, selects all controllers again
- Update configuration files to match test bed
- Update sample JSON files from test bed

** March 19, 2013 **
- aggregation switch sample data DPIDs do not match official switch config.
	- switch config hacked 00:00:00:00:00:00:01:01 ==> 00:00:00:00:00:00:01:00 etc.
- layout does not dynamically adjust when window is resized
	- refresh browser window after resizing to fix layout
