From 1a164919715d6eaf1a999b97daaa53acb94a827d Mon Sep 17 00:00:00 2001 From: Bogdan Date: Thu, 1 Dec 2016 14:57:39 -0500 Subject: [PATCH 1/2] Display full table name (schema + name) if possible. (#1728) --- superset/models.py | 13 ++++++++----- superset/views.py | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/superset/models.py b/superset/models.py index 9364db5a1bce..a5e3d3a57269 100644 --- a/superset/models.py +++ b/superset/models.py @@ -435,7 +435,8 @@ def __repr__(self): @property def table_names(self): - return ", ".join({"{}".format(s.datasource) for s in self.slices}) + return ", ".join( + {"{}".format(s.datasource.name) for s in self.slices}) @property def url(self): @@ -896,7 +897,7 @@ class SqlaTable(Model, Queryable, AuditMixinNullable, ImportMixin): name='_customer_location_uc'),) def __repr__(self): - return self.table_name + return self.name @property def description_markeddown(self): @@ -904,9 +905,9 @@ def description_markeddown(self): @property def link(self): - table_name = escape(self.table_name) + name = escape(self.name) return Markup( - '{table_name}'.format(**locals())) + '{name}'.format(**locals())) @property def schema_perm(self): @@ -920,7 +921,9 @@ def get_perm(self): @property def name(self): - return self.table_name + if not self.schema: + return self.table_name + return "{}.{}".format(self.schema, self.table_name) @property def full_name(self): diff --git a/superset/views.py b/superset/views.py index fb3de0bd89f5..a375056a3927 100755 --- a/superset/views.py +++ b/superset/views.py @@ -701,7 +701,7 @@ def pre_add(self, table): "Table [{}] could not be found, " "please double check your " "database connection, schema, and " - "table name".format(table.table_name)) + "table name".format(table.name)) def post_add(self, table): table.fetch_metadata() From 2d0ebeae1bfd5e385000c9aa952891cf474821c6 Mon Sep 17 00:00:00 2001 From: vera-liu Date: Thu, 1 Dec 2016 11:59:44 -0800 Subject: [PATCH 2/2] [explorev2] Make chart container more responsive (#1724) * Make chart container more responsive **Leave chart empty when theres error **Make all boolean fields auto-query chart when changed * Replace forEach with some * Added fields to autoQueryFields --- .../explorev2/components/ChartContainer.jsx | 47 +++++++++++-------- .../components/ExploreViewContainer.jsx | 10 ++-- .../javascripts/explorev2/stores/store.js | 23 +++++++++ 3 files changed, 54 insertions(+), 26 deletions(-) diff --git a/superset/assets/javascripts/explorev2/components/ChartContainer.jsx b/superset/assets/javascripts/explorev2/components/ChartContainer.jsx index 0917d57126d3..904b16f1b89f 100644 --- a/superset/assets/javascripts/explorev2/components/ChartContainer.jsx +++ b/superset/assets/javascripts/explorev2/components/ChartContainer.jsx @@ -144,6 +144,32 @@ class ChartContainer extends React.Component { return title; } + renderChart() { + if (this.props.alert) { + return ( + + {this.props.alert} + + + ); + } + if (this.props.isChartLoading) { + return (loading); + } + return ( +
{ this.chartContainerRef = ref; }} + className={this.props.viz_type} + style={{ 'overflow-x': 'scroll' }} + /> + ); + } + render() { return (
@@ -187,26 +213,7 @@ class ChartContainer extends React.Component {
} > - {this.props.alert && - - {this.props.alert} - - - } - {this.props.isChartLoading ? - (loading) - : - (
{ this.chartContainerRef = ref; }} - className={this.props.viz_type} - style={{ 'overflow-x': 'scroll' }} - />) - } + {this.renderChart()}
); diff --git a/superset/assets/javascripts/explorev2/components/ExploreViewContainer.jsx b/superset/assets/javascripts/explorev2/components/ExploreViewContainer.jsx index 6d79f8a8f645..ce44b11ee0ce 100644 --- a/superset/assets/javascripts/explorev2/components/ExploreViewContainer.jsx +++ b/superset/assets/javascripts/explorev2/components/ExploreViewContainer.jsx @@ -33,12 +33,10 @@ class ExploreViewContainer extends React.Component { } componentWillReceiveProps(nextProps) { - let refreshChart = false; - autoQueryFields.forEach((field) => { - if (nextProps.form_data[field] !== this.props.form_data[field]) { - refreshChart = true; - } - }); + const refreshChart = Object.keys(nextProps.form_data).some((field) => ( + nextProps.form_data[field] !== this.props.form_data[field] + && autoQueryFields.indexOf(field) !== -1) + ); if (refreshChart) { this.onQuery(nextProps.form_data); } diff --git a/superset/assets/javascripts/explorev2/stores/store.js b/superset/assets/javascripts/explorev2/stores/store.js index 0c02435bc06f..817602d02053 100644 --- a/superset/assets/javascripts/explorev2/stores/store.js +++ b/superset/assets/javascripts/explorev2/stores/store.js @@ -1748,4 +1748,27 @@ export function initialState(vizType = 'table', datasourceType = 'table') { export const autoQueryFields = [ 'datasource', 'viz_type', + 'bar_stacked', + 'show_markers', + 'show_bar_value', + 'order_bars', + 'show_controls', + 'reduce_x_ticks', + 'include_series', + 'pie_label_type', + 'show_brush', + 'include_search', + 'show_bubbles', + 'show_legend', + 'x_axis_showminmax', + 'rich_tooltip', + 'y_axis_zero', + 'y_log_scale', + 'x_log_scale', + 'donut', + 'labels_outside', + 'contribution', + 'size', + 'row_limit', + 'max_bubble_size', ];