Nice work, we've definitely had clients looking for this type of functionality.
My suggestion to improve upon this would be to use websockets to initiate a connection that would be updated in real-time as opposed to the scheduled refresh every 30 seconds. This is how the 2600hz operator console gets after similar data and it actually works quite well!