diff --git a/rd_ui/app/scripts/visualizations/base.js b/rd_ui/app/scripts/visualizations/base.js
index 6d63adfec7..340b469bfb 100644
--- a/rd_ui/app/scripts/visualizations/base.js
+++ b/rd_ui/app/scripts/visualizations/base.js
@@ -2,25 +2,24 @@
var VisualizationProvider = function() {
this.visualizations = {};
this.visualizationTypes = {};
+ var defaultConfig = {
+ defaultOptions: {},
+ skipTypes: false,
+ editorTemplate: null
+ }
- this.registerVisualization = function(type, name, rendererTemplate, editorTemplate, defaultOptions, skipTypes) {
- var visualization = {
- rendererTemplate: rendererTemplate,
- editorTemplate: editorTemplate,
- type: type,
- name: name,
- defaultOptions: defaultOptions || {}
- };
+ this.registerVisualization = function(config) {
+ var visualization = _.extend({}, defaultConfig, config);
// TODO: this is prone to errors; better refactor.
if (_.isEmpty(this.visualizations)) {
this.defaultVisualization = visualization;
}
- this.visualizations[type] = visualization;
+ this.visualizations[config.type] = visualization;
- if (!skipTypes) {
- this.visualizationTypes[name] = type;
+ if (!config.skipTypes) {
+ this.visualizationTypes[config.name] = config.type;
};
};
@@ -47,7 +46,7 @@
var Visualization = $resource('/api/visualizations/:id', {id: '@id'});
Visualization.visualizations = this.visualizations;
Visualization.visualizationTypes = this.visualizationTypes;
- Visualization.renderVisualizationsTemplate = this.getSwitchTemplate('rendererTemplate');
+ Visualization.renderVisualizationsTemplate = this.getSwitchTemplate('renderTemplate');
Visualization.editorTemplate = this.getSwitchTemplate('editorTemplate');
Visualization.defaultVisualization = this.defaultVisualization;
diff --git a/rd_ui/app/scripts/visualizations/chart.js b/rd_ui/app/scripts/visualizations/chart.js
index 7be1d98552..60ef89408c 100644
--- a/rd_ui/app/scripts/visualizations/chart.js
+++ b/rd_ui/app/scripts/visualizations/chart.js
@@ -10,7 +10,14 @@
'stacking': null
}
};
- VisualizationProvider.registerVisualization('CHART', 'Chart', renderTemplate, editTemplate, defaultOptions);
+
+ VisualizationProvider.registerVisualization({
+ type: 'CHART',
+ name: 'Chart',
+ renderTemplate: renderTemplate,
+ editorTemplate: editTemplate,
+ defaultOptions: defaultOptions
+ });
}]);
chartVisualization.directive('chartRenderer', function () {
diff --git a/rd_ui/app/scripts/visualizations/cohort.js b/rd_ui/app/scripts/visualizations/cohort.js
index 07c6d24a1c..4226c4a387 100644
--- a/rd_ui/app/scripts/visualizations/cohort.js
+++ b/rd_ui/app/scripts/visualizations/cohort.js
@@ -2,7 +2,11 @@
var cohortVisualization = angular.module('redash.visualization');
cohortVisualization.config(['VisualizationProvider', function(VisualizationProvider) {
- VisualizationProvider.registerVisualization('COHORT', 'Cohort', '', null);
+ VisualizationProvider.registerVisualization({
+ type: 'COHORT',
+ name: 'Cohort',
+ renderTemplate: ''
+ });
}]);
cohortVisualization.directive('cohortRenderer', function() {
diff --git a/rd_ui/app/scripts/visualizations/table.js b/rd_ui/app/scripts/visualizations/table.js
index 1513ce1eb0..98ee06d997 100644
--- a/rd_ui/app/scripts/visualizations/table.js
+++ b/rd_ui/app/scripts/visualizations/table.js
@@ -2,7 +2,12 @@
var tableVisualization = angular.module('redash.visualization');
tableVisualization.config(['VisualizationProvider', function(VisualizationProvider) {
- VisualizationProvider.registerVisualization('TABLE', 'Table', '', null, {}, true);
+ VisualizationProvider.registerVisualization({
+ type: 'TABLE',
+ name: 'Table',
+ renderTemplate: '',
+ skipTypes: true
+ });
}]);
tableVisualization.directive('gridRenderer', function () {