From fbd81551a0f1bda6a388c0d03728058167a3650f Mon Sep 17 00:00:00 2001 From: guerler Date: Mon, 22 Aug 2016 11:46:04 -0400 Subject: [PATCH] Display currently selected chart type details in settings and groups --- .../visualizations/charts/static/app.css | 14 +++++++ .../visualizations/charts/static/app.js | 19 +++++----- .../static/charts/others/example/config.js | 1 + .../static/charts/others/example/logo.png | Bin 36257 -> 7438 bytes .../charts/static/components/model.js | 1 + .../charts/static/views/groups.js | 8 +++- .../charts/static/views/settings.js | 35 +++++++++++------- .../charts/static/views/types.js | 2 +- .../charts/static/views/viewport.js | 2 +- 9 files changed, 55 insertions(+), 27 deletions(-) diff --git a/config/plugins/visualizations/charts/static/app.css b/config/plugins/visualizations/charts/static/app.css index 84e382c521b2..fad7c66dc869 100644 --- a/config/plugins/visualizations/charts/static/app.css +++ b/config/plugins/visualizations/charts/static/app.css @@ -4,6 +4,20 @@ z-index: 100; } +.charts-description { + margin-bottom: 20px; +} + +.charts-description-image { + width: 50px; + height: 43px; + margin-right: 10px; +} + +.charts-description-text { + font-weight: normal; +} + .charts-tooltip { position: absolute; text-align: center; diff --git a/config/plugins/visualizations/charts/static/app.js b/config/plugins/visualizations/charts/static/app.js index 0b56fdda52fc..5cba869f83a5 100644 --- a/config/plugins/visualizations/charts/static/app.js +++ b/config/plugins/visualizations/charts/static/app.js @@ -35,19 +35,20 @@ define( [ 'mvc/ui/ui-modal', 'mvc/ui/ui-portlet', 'mvc/ui/ui-misc', 'utils/utils this[ view_id ].show(); }, - /** Returns root path */ - chartPath: function( chart_type ) { - var path = chart_type.split( /_(.+)/ ); - if ( path.length >= 2 ) { - return path[ 0 ] + '/' + path[ 1 ]; - } - console.debug( 'FAILED app:chartPath() - Invalid format: ' + chart_type ); - }, - /** Message */ showModal: function( title, body ) { var self = this; this.modal.show( { title: title, body: body, buttons: { 'Close': function() { self.modal.hide() } } } ); + }, + + /** Split chart type into path components */ + split: function( chart_type ) { + var path = chart_type.split( /_(.+)/ ); + if ( path.length >= 2 ) { + return path[ 0 ] + '/' + path[ 1 ]; + } else { + return chart_type; + } } }); }); \ No newline at end of file diff --git a/config/plugins/visualizations/charts/static/charts/others/example/config.js b/config/plugins/visualizations/charts/static/charts/others/example/config.js index 54e8515d42ce..419804720d27 100755 --- a/config/plugins/visualizations/charts/static/charts/others/example/config.js +++ b/config/plugins/visualizations/charts/static/charts/others/example/config.js @@ -5,6 +5,7 @@ define([], function() { library : 'Custom', tag : 'svg', keywords : 'others', + description : 'This is a developer example which demonstrates how to implement and configure a basic d3-based plugin for charts.', groups : { x : { type : 'data_column', is_numeric : true, label : 'Bubble x-position' }, y : { type : 'data_column', is_numeric : true, label : 'Bubble y-position' }, diff --git a/config/plugins/visualizations/charts/static/charts/others/example/logo.png b/config/plugins/visualizations/charts/static/charts/others/example/logo.png index 8ec8ba1c6e1c3ea53bdcd095f39ff04d5098146e..0c13459935bbbc23dec5b7c05450b19b106b22f4 100644 GIT binary patch delta 6456 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 lKe_Gy+jiMfb{UEJ6VGI@mfA&|T6o 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' ).append( this.repeat.$el.addClass( 'ui-margin-bottom' ) ).append( this.message.$el.addClass( 'ui-margin-bottom' ) ) ); + this.setElement( $( '
' ).append( this.description.$el ) + .append( this.repeat.$el.addClass( 'ui-margin-bottom' ) ) + .append( this.message.$el.addClass( 'ui-margin-bottom' ) ) ); this.listenTo( this.chart, 'change', function() { self.render() } ); this.listenTo( this.chart.groups, 'add remove reset', function() { self.chart.set( 'modified', true ) } ); this.listenTo( this.chart.groups, 'remove', function( group ) { self.repeat.del( group.id ) } ); diff --git a/config/plugins/visualizations/charts/static/views/settings.js b/config/plugins/visualizations/charts/static/views/settings.js index f256d56c2546..7e0a4641e622 100644 --- a/config/plugins/visualizations/charts/static/views/settings.js +++ b/config/plugins/visualizations/charts/static/views/settings.js @@ -1,27 +1,34 @@ /** This class renders the chart configuration form. */ -define( [ 'utils/utils', 'mvc/ui/ui-misc', 'mvc/form/form-view', 'mvc/form/form-data' ], function( Utils, Ui, Form, FormData ) { +define( [ 'utils/utils', 'mvc/ui/ui-misc', 'mvc/form/form-view', 'mvc/form/form-data', 'plugin/views/description' ], function( Utils, Ui, Form, FormData, Description ) { return Backbone.View.extend({ initialize: function( app, options ) { var self = this; + this.app = app; this.chart = app.chart; - this.setElement( '
' ); + this.description = new Description( this.app ); + this.message = new Ui.Message( { message: 'There are no options for this chart type.', persistent: true, status: 'info' } ); + this.setElement( $( '
' ).append( this.description.$el ).append( this.message.$el ).append( this.$form = $( '
' ) ) ); this.listenTo( this.chart, 'change', function() { self.render() } ); }, render: function() { var self = this; var inputs = Utils.clone( this.chart.definition.settings ); - FormData.visitInputs( inputs, function( input, name ) { - var model_value = self.chart.settings.get( name ); - model_value !== undefined && !input.hidden && ( input.value = model_value ); - }); - this.form = new Form({ - inputs : inputs, - cls : 'ui-portlet-plain', - onchange : function() { self.chart.settings.set( self.form.data.create() ); } - }); - this.chart.settings.set( self.form.data.create() ); - var view = _.size( inputs ) > 0 ? this.form : new Ui.Message( { message: 'There are no options for this chart type.', persistent: true, status: 'info' } ); - this.$el.empty().append( view.$el.addClass( 'ui-margin-bottom' ) ); + if ( _.size( inputs ) > 0 ) { + FormData.visitInputs( inputs, function( input, name ) { + var model_value = self.chart.settings.get( name ); + model_value !== undefined && !input.hidden && ( input.value = model_value ); + }); + this.form = new Form({ + inputs : inputs, + cls : 'ui-portlet-plain', + onchange : function() { self.chart.settings.set( self.form.data.create() ); } + }); + this.$form.empty().append( this.form.$el ); + this.message.$el.hide(); + } else { + this.$form.empty(); + this.message.$el.show(); + } } }); }); \ No newline at end of file diff --git a/config/plugins/visualizations/charts/static/views/types.js b/config/plugins/visualizations/charts/static/views/types.js index 8b61bd1cd14c..4899717392a0 100644 --- a/config/plugins/visualizations/charts/static/views/types.js +++ b/config/plugins/visualizations/charts/static/views/types.js @@ -98,7 +98,7 @@ define( [ 'utils/utils', 'mvc/ui/ui-misc', 'plugin/charts/overview' ], function( $el.append( this._template_item({ id : id, title : title, - url : app_root + 'charts/' + this.app.chartPath( id ) + '/logo.png' + url : app_root + 'charts/' + this.app.split( id ) + '/logo.png' })); } this.$el.append( $el ); diff --git a/config/plugins/visualizations/charts/static/views/viewport.js b/config/plugins/visualizations/charts/static/views/viewport.js index e9da79b096de..9bf1245899a1 100644 --- a/config/plugins/visualizations/charts/static/views/viewport.js +++ b/config/plugins/visualizations/charts/static/views/viewport.js @@ -110,7 +110,7 @@ define( [ 'mvc/ui/ui-portlet', 'mvc/ui/ui-misc', 'utils/utils' ], function( Port var n_panels = chart.settings.get( 'use_panels' ) === 'true' ? chart.groups.length : 1; this._createContainer( chart.definition.tag, n_panels ); chart.state( 'wait', 'Please wait...' ); - require( [ 'plugin/charts/' + this.app.chartPath( chart.get( 'type' ) ) + '/wrapper' ], function( ChartView ) { + require( [ 'plugin/charts/' + this.app.split( chart.get( 'type' ) ) + '/wrapper' ], function( ChartView ) { new ChartView( self.app, { process : process, chart : chart, canvas_list : self.canvas_list } ); }); }