diff --git a/superset/assets/spec/javascripts/dashboard/components/HeaderActionsDropdown_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/HeaderActionsDropdown_spec.jsx
index f89c9ed942eb..cd1c0156c28c 100644
--- a/superset/assets/spec/javascripts/dashboard/components/HeaderActionsDropdown_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/components/HeaderActionsDropdown_spec.jsx
@@ -71,9 +71,9 @@ describe('HeaderActionsDropdown', () => {
expect(wrapper.find(MenuItem)).toHaveLength(1);
});
- it('should not render the RefreshIntervalModal', () => {
+ it('should render the RefreshIntervalModal', () => {
const wrapper = setup(overrideProps);
- expect(wrapper.find(RefreshIntervalModal)).toHaveLength(0);
+ expect(wrapper.find(RefreshIntervalModal)).toHaveLength(1);
});
it('should render the URLShortLinkModal', () => {
@@ -105,9 +105,9 @@ describe('HeaderActionsDropdown', () => {
expect(wrapper.find(MenuItem)).toHaveLength(2);
});
- it('should not render the RefreshIntervalModal', () => {
+ it('should render the RefreshIntervalModal', () => {
const wrapper = setup(overrideProps);
- expect(wrapper.find(RefreshIntervalModal)).toHaveLength(0);
+ expect(wrapper.find(RefreshIntervalModal)).toHaveLength(1);
});
it('should render the URLShortLinkModal', () => {
diff --git a/superset/assets/spec/javascripts/dashboard/components/RefreshIntervalModal_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/RefreshIntervalModal_spec.jsx
index 8dfb4016f07c..9e0c39879d4e 100644
--- a/superset/assets/spec/javascripts/dashboard/components/RefreshIntervalModal_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/components/RefreshIntervalModal_spec.jsx
@@ -25,6 +25,8 @@ describe('RefreshIntervalModal', () => {
const mockedProps = {
triggerNode: ,
refreshFrequency: 10,
+ onChange: jest.fn(),
+ editMode: true,
};
it('is valid', () => {
expect(
@@ -39,4 +41,10 @@ describe('RefreshIntervalModal', () => {
const wrapper = mount();
expect(wrapper.prop('refreshFrequency')).toEqual(10);
});
+ it('should change refreshFrequency with edit mode', () => {
+ const wrapper = mount();
+ wrapper.instance().handleFrequencyChange({ value: 30 });
+ expect(mockedProps.onChange).toHaveBeenCalled();
+ expect(mockedProps.onChange).toHaveBeenCalledWith(30, mockedProps.editMode);
+ });
});
diff --git a/superset/assets/src/dashboard/actions/dashboardState.js b/superset/assets/src/dashboard/actions/dashboardState.js
index db4d3695a6c2..02270809abd3 100644
--- a/superset/assets/src/dashboard/actions/dashboardState.js
+++ b/superset/assets/src/dashboard/actions/dashboardState.js
@@ -151,8 +151,8 @@ export function onSave() {
}
export const SET_REFRESH_FREQUENCY = 'SET_REFRESH_FREQUENCY';
-export function setRefreshFrequency(refreshFrequency) {
- return { type: SET_REFRESH_FREQUENCY, refreshFrequency };
+export function setRefreshFrequency(refreshFrequency, isPersistent = false) {
+ return { type: SET_REFRESH_FREQUENCY, refreshFrequency, isPersistent };
}
export function saveDashboardRequestSuccess() {
diff --git a/superset/assets/src/dashboard/components/HeaderActionsDropdown.jsx b/superset/assets/src/dashboard/components/HeaderActionsDropdown.jsx
index b96096517964..af82267f1d22 100644
--- a/superset/assets/src/dashboard/components/HeaderActionsDropdown.jsx
+++ b/superset/assets/src/dashboard/components/HeaderActionsDropdown.jsx
@@ -103,8 +103,8 @@ class HeaderActionsDropdown extends React.PureComponent {
this.props.updateCss(css);
}
- changeRefreshInterval(refreshInterval) {
- this.props.setRefreshFrequency(refreshInterval);
+ changeRefreshInterval(refreshInterval, isPersistent) {
+ this.props.setRefreshFrequency(refreshInterval, isPersistent);
this.props.startPeriodicRender(refreshInterval * 1000);
}
@@ -177,13 +177,20 @@ class HeaderActionsDropdown extends React.PureComponent {
- {editMode && (
- {t('Set auto-refresh interval')}}
- />
- )}
+
+
+ {editMode
+ ? t('Set auto-refresh interval')
+ : t('Auto-refresh dashboard')}
+
+ }
+ />
+
{editMode && (