You are correct that the following hours cause the problem:
// Watching on data changing scope.$watch('data', function (newData, oldData) { if (newData !== oldData && scope.chart) { if (!scope._config.disabled && scope._config.autorefresh) { scope._config.refreshDataOnly && scope.chart.update ? scope.chart.update() : scope.api.refresh(); // if wanted to refresh data only, use chart.update method, otherwise use full refresh. } } }, scope._config.deepWatchData);
The fact is that if you add a log of this function to find out what old and new data is, the data actually changes.
When you click on one of the dots, nvd3 adds a color attribute to the data.
old data:
[{"key":"Battery Voltage","values":[{"x":1439419440000,"y":90,"series":0},{"x":1439419440000,"y":43,"series":0},{"x":1439419440000,"y":345,"series":0},{"x":1439167620000,"y":73,"series":0},{"x":1439167620000,"y":42,"series":0},{"x":1439167620000,"y":36,"series":0},{"x":1440010740000,"y":32,"series":0},{"x":1439419440000,"y":62,"series":0},{"x":1439167620000,"y":73,"series":0},{"x":1439167620000,"y":42,"series":0},{"x":1439167620000,"y":36,"series":0}]}]
new data:
[{"key":"Battery Voltage","values":[{"x":1439419440000,"y":90,"series":0,"color":"#1f77b4"},{"x":1439419440000,"y":43,"series":0,"color":"#1f77b4"},{"x":1439419440000,"y":345,"series":0},{"x":1439167620000,"y":73,"series":0},{"x":1439167620000,"y":42,"series":0},{"x":1439167620000,"y":36,"series":0},{"x":1440010740000,"y":32,"series":0},{"x":1439419440000,"y":62,"series":0,"color":"#1f77b4"},{"x":1439167620000,"y":73,"series":0},{"x":1439167620000,"y":42,"series":0},{"x":1439167620000,"y":36,"series":0}],"color":"#1f77b4","value":90}]
Each time you click a new point, a color attribute is added to the object, so the clock function works correctly.
I would suggest opening a question at https://github.com/krispo/angular-nvd3
** Edit. Just to clarify, the reason this happens when ng-click is added is because it causes the Angular digest loop to start, which will start the clock.