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 () {