You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ma...@apache.org on 2018/06/01 04:18:43 UTC
[incubator-superset] branch master updated: Allow multiple time
shifts (#5067)
This is an automated email from the ASF dual-hosted git repository.
maximebeauchemin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-superset.git
The following commit(s) were added to refs/heads/master by this push:
new 1d3e96b Allow multiple time shifts (#5067)
1d3e96b is described below
commit 1d3e96bce0b7c4160963ff5dcba5ea3d6ff2922c
Author: Beto Dealmeida <ro...@dealmeida.net>
AuthorDate: Thu May 31 21:18:36 2018 -0700
Allow multiple time shifts (#5067)
* Allow multiple time shifts
* Handle old form data
---
superset/assets/src/explore/controls.jsx | 17 +++++++++++++----
superset/assets/src/explore/visTypes.js | 2 +-
superset/viz.py | 18 ++++++++++++------
3 files changed, 26 insertions(+), 11 deletions(-)
diff --git a/superset/assets/src/explore/controls.jsx b/superset/assets/src/explore/controls.jsx
index b7327dd..bfc72fc 100644
--- a/superset/assets/src/explore/controls.jsx
+++ b/superset/assets/src/explore/controls.jsx
@@ -1575,11 +1575,20 @@ export const controls = {
},
time_compare: {
- type: 'TextControl',
+ type: 'SelectControl',
+ multi: true,
+ freeForm: true,
label: t('Time Shift'),
- default: null,
- description: t('Overlay a timeseries from a ' +
- 'relative time period. Expects relative time delta ' +
+ default: [],
+ choices: formatSelectOptions([
+ '1 day',
+ '1 week',
+ '28 days',
+ '30 days',
+ '1 year',
+ ]),
+ description: t('Overlay one or more timeseries from a ' +
+ 'relative time period. Expects relative time deltas ' +
'in natural language (example: 24 hours, 7 days, ' +
'56 weeks, 365 days)'),
},
diff --git a/superset/assets/src/explore/visTypes.js b/superset/assets/src/explore/visTypes.js
index 1ad5c89..bc7dbb7 100644
--- a/superset/assets/src/explore/visTypes.js
+++ b/superset/assets/src/explore/visTypes.js
@@ -74,7 +74,7 @@ export const sections = {
'of query results'),
controlSetRows: [
['rolling_type', 'rolling_periods', 'min_periods'],
- ['time_compare', null],
+ ['time_compare'],
['num_period_compare', 'period_ratio_type'],
['resample_how', 'resample_rule', 'resample_fillmethod'],
],
diff --git a/superset/viz.py b/superset/viz.py
index dcd924b..bd34e76 100644
--- a/superset/viz.py
+++ b/superset/viz.py
@@ -86,7 +86,7 @@ class BaseViz(object):
self._some_from_cache = False
self._any_cache_key = None
self._any_cached_dttm = None
- self._extra_chart_data = None
+ self._extra_chart_data = []
self.process_metrics()
@@ -1202,10 +1202,15 @@ class NVD3TimeSeriesViz(NVD3Viz):
def run_extra_queries(self):
fd = self.form_data
- time_compare = fd.get('time_compare')
- if time_compare:
+
+ time_compare = fd.get('time_compare') or []
+ # backwards compatibility
+ if not isinstance(time_compare, list):
+ time_compare = [time_compare]
+
+ for option in time_compare:
query_object = self.query_obj()
- delta = utils.parse_human_timedelta(time_compare)
+ delta = utils.parse_human_timedelta(option)
query_object['inner_from_dttm'] = query_object['from_dttm']
query_object['inner_to_dttm'] = query_object['to_dttm']
@@ -1218,10 +1223,11 @@ class NVD3TimeSeriesViz(NVD3Viz):
df2 = self.get_df_payload(query_object).get('df')
if df2 is not None:
+ label = '{} offset'. format(option)
df2[DTTM_ALIAS] += delta
df2 = self.process_data(df2)
- self._extra_chart_data = self.to_series(
- df2, classed='superset', title_suffix='---')
+ self._extra_chart_data.extend(self.to_series(
+ df2, classed='superset', title_suffix=label))
def get_data(self, df):
df = self.process_data(df)
--
To stop receiving notification emails like this one, please contact
maximebeauchemin@apache.org.