Przeglądaj źródła

Fixed refresh setting for absolute time

utkarshcmu 10 lat temu
rodzic
commit
712a420217

+ 7 - 2
public/app/features/dashboard/timeSrv.js

@@ -90,10 +90,15 @@ define([
       timer.cancel(this.refresh_timer);
     };
 
-    this.setTime = function(time) {
+    this.setTime = function(time, enableRefresh) {
       _.extend(this.time, time);
 
-      if (this.old_refresh && this.old_refresh !== this.dashboard.refresh) {
+      // disable refresh if zoom in or zoom out
+      if (!enableRefresh && moment.isMoment(time.to)) {
+        this.old_refresh = this.dashboard.refresh || this.old_refresh;
+        this.setAutoRefresh(false);
+      }
+      else if (this.old_refresh && this.old_refresh !== this.dashboard.refresh) {
         this.setAutoRefresh(this.old_refresh);
         this.old_refresh = null;
       }

+ 1 - 1
public/app/features/dashboard/timepicker/timepicker.ts

@@ -115,7 +115,7 @@ export class TimePickerCtrl {
       this.timeSrv.setAutoRefresh(this.refresh.value);
     }
 
-    this.timeSrv.setTime(this.timeRaw);
+    this.timeSrv.setTime(this.timeRaw, true);
     this.$rootScope.appEvent('hide-dash-editor');
   }
 

+ 8 - 1
public/test/specs/time_srv_specs.js

@@ -92,10 +92,17 @@ define([
         expect(_dashboard.refresh).to.be('30s');
       });
 
+      it('should restore refresh for absolute time range', function() {
+        _dashboard.refresh = '30s';
+
+        ctx.service.setTime({from: '2011-01-01', to: '2015-01-01' });
+        expect(_dashboard.refresh).to.be('30s');
+      });
+
       it('should restore refresh after relative time range is set', function() {
         _dashboard.refresh = '10s';
         ctx.service.setTime({from: moment([2011,1,1]), to: moment([2015,1,1])});
-        expect(_dashboard.refresh).to.be('10s');
+        expect(_dashboard.refresh).to.be(false);
         ctx.service.setTime({from: '2011-01-01', to: 'now' });
         expect(_dashboard.refresh).to.be('10s');
       });