This is an automated email from the ASF dual-hosted git repository.
beto 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 8346e62 Sort Chart Types based on Usage (#6849)
8346e62 is described below
commit 8346e62dec7f5676757ac0aae0abf8afd92ba7b2
Author: Thomas Wang <[email protected]>
AuthorDate: Tue Mar 5 11:32:10 2019 -0800
Sort Chart Types based on Usage (#6849)
* initial commit for VIZ-58
* address @kristw's comments
* per @mistercrunch's comment to use a static list for now
* fix javascript test errors
* fix lint errors
* per @betodealmeida's comments
* remove unnecessary loop
---
.../explore/components/controls/VizTypeControl.jsx | 46 +++++++++++++++++++++-
1 file changed, 44 insertions(+), 2 deletions(-)
diff --git a/superset/assets/src/explore/components/controls/VizTypeControl.jsx
b/superset/assets/src/explore/components/controls/VizTypeControl.jsx
index 86f2f80..0264b1c 100644
--- a/superset/assets/src/explore/components/controls/VizTypeControl.jsx
+++ b/superset/assets/src/explore/components/controls/VizTypeControl.jsx
@@ -69,6 +69,49 @@ export default class VizTypeControl extends
React.PureComponent {
this.searchRef.focus();
}
}
+ buildVizTypeLookup(types) {
+ const lookup = new Map();
+ types.forEach((type) => {
+ lookup.set(type.key, type);
+ });
+ return lookup;
+ }
+ sortVizTypes(types) {
+ const defaultOrder = [
+ 'line', 'big_number', 'table', 'filter_box', 'dist_bar', 'area', 'bar',
+ 'deck_polygon', 'pie', 'time_table', 'pivot_table', 'histogram',
+ 'big_number_total', 'deck_scatter', 'deck_hex', 'time_pivot', 'deck_arc',
+ 'heatmap', 'deck_grid', 'dual_line', 'deck_screengrid', 'line_multi',
+ 'treemap', 'box_plot', 'separator', 'sunburst', 'sankey', 'word_cloud',
+ 'mapbox', 'kepler', 'cal_heatmap', 'rose', 'bubble', 'deck_geojson',
+ 'horizon', 'markup', 'deck_multi', 'compare', 'partition', 'event_flow',
+ 'deck_path', 'directed_force', 'world_map', 'paired_ttest', 'para',
+ 'iframe', 'country_map',
+ ];
+
+ const sorted = [];
+ const loadedKeys = new Set();
+ const vizTypeLookup = this.buildVizTypeLookup(types);
+
+ // Sort based on the `defaultOrder`
+ defaultOrder.forEach((key) => {
+ const vizType = vizTypeLookup.get(key);
+ if (typeof vizType !== 'undefined') {
+ sorted.push(vizType);
+ loadedKeys.add(key);
+ }
+ });
+
+ // Load the rest of Viz Types not mandated by the `defualtOrder`
+ types.forEach((vizType) => {
+ if (!loadedKeys.has(vizType.key)) {
+ sorted.push(vizType);
+ loadedKeys.add(vizType.key);
+ }
+ });
+
+ return sorted;
+ }
renderItem(entry) {
const { value } = this.props;
const { key, value: type } = entry;
@@ -94,8 +137,7 @@ export default class VizTypeControl extends
React.PureComponent {
const { value } = this.props;
const registry = getChartMetadataRegistry();
-
- const types = registry.entries();
+ const types = this.sortVizTypes(registry.entries());
const filteredTypes = filter.length > 0
? types.filter(type => type.value.name.toLowerCase().includes(filter))
: types;