the shared device URL is now updated dynamically when the user changes tabs or triggers a graph redraw via moving or resizing the currently selected daterange on the graph. the URL now captures the currently selected graph, the start and end timestamps of the current daterange and forwards these parameters to shared_device.html, which recreates the unique view that was used to generate the URL. also added missing exception handling to data_helper.py to address an issue where attempting to load missing data would return an error.