diff --git a/js/app/models/PlotObjects/PlotBaseSerieObject.js b/js/app/models/PlotObjects/PlotBaseSerieObject.js new file mode 100644 index 0000000..b21c3a9 --- /dev/null +++ b/js/app/models/PlotObjects/PlotBaseSerieObject.js @@ -0,0 +1,176 @@ +/** + * Project : AMDA-NG + * Name : PlotBaseSerieObject.js + * @class amdaPlotObj.PlotBaseSerieObject + * @extends Ext.data.Model + * @brief Plot Base Serie Business Object Definition + * @author Benjamin Renard + * @version $Id: PlotBaseSerieObject.js benjamin $ + ****************************************************************************** + * FT Id : Date : Name - Description + ****************************************************************************** + * : :14/09/2015: BRE - file creation + */ + + +Ext.define('amdaPlotObj.PlotBaseSerieObject', { + extend: 'Ext.data.Model', + + requires: [ + 'amdaPlotObj.PlotObjectConfig' + ], + + fields : [ + {name: 'serie-yaxis', type: 'string'}, + {name: 'serie-lines-activated', type: 'boolean'}, + {name: 'serie-lines-style', type: 'string'}, + {name: 'serie-lines-width', type: 'float'}, + {name: 'serie-lines-color', type: 'string'}, + {name: 'serie-symbols-activated', type: 'boolean'}, + {name: 'serie-symbols-type', type: 'string'}, + {name: 'serie-symbols-size', type: 'float'}, + {name: 'serie-symbols-color', type: 'string'}, + {name: 'serie-colored-param', type: 'string'}, + + //Time tick + {name: 'serie-timetick-activated', type: 'boolean'}, + {name: 'serie-timetick-type', type: 'string'}, + {name: 'serie-timetick-step', type: 'float'}, + {name: 'serie-timetick-nbmajor', type: 'int'}, + {name: 'serie-timetick-nbminor', type: 'int'}, + {name: 'serie-timetick-color', type: 'string'}, + {name: 'serie-timetick-symbols-type', type: 'string'}, + {name: 'serie-timetick-symbols-size', type: 'float'}, + {name: 'serie-timetick-symbols-color', type: 'string'}, + {name: 'serie-timetick-firstsymbols-activated', type: 'boolean'}, + {name: 'serie-timetick-firstsymbols-type', type: 'string'}, + {name: 'serie-timetick-firstsymbols-size', type: 'float'}, + {name: 'serie-timetick-firstsymbols-color', type: 'string'}, + {name: 'serie-timetick-font-activated', type: 'boolean'}, + {name: 'serie-timetick-font-name', type: 'string'}, + {name: 'serie-timetick-font-size', type: 'int'}, + {name: 'serie-timetick-font-bold', type: 'boolean'}, + {name: 'serie-timetick-font-italic', type: 'boolean'}, + + //Interval tick + {name: 'serie-intervaltick-activated', type: 'boolean'}, + {name: 'serie-intervaltick-mode', type: 'string'}, + {name: 'serie-intervaltick-color', type: 'string'}, + {name: 'serie-intervaltick-symbols-type', type: 'string'}, + {name: 'serie-intervaltick-symbols-size', type: 'float'}, + {name: 'serie-intervaltick-symbols-color', type: 'string'}, + {name: 'serie-intervaltick-font-activated', type: 'boolean'}, + {name: 'serie-intervaltick-font-name', type: 'string'}, + {name: 'serie-intervaltick-font-size', type: 'int'}, + {name: 'serie-intervaltick-font-bold', type: 'boolean'}, + {name: 'serie-intervaltick-font-italic', type: 'boolean'}, + ], + + constructor: function(){ + var me = this; + me.callParent(arguments); + if ((arguments.length > 0) && arguments[0]) + { + } + else + { + //new object, set default fields values + me.setDefaultValues(); + } + this.dirty = false; + }, + + setDefaultValues: function() + { + this.set('serie-yaxis', amdaPlotObj.PlotObjectConfig.defaultValues.serie.yAxis); + this.set('serie-lines-activated', true); + this.set('serie-lines-style', amdaPlotObj.PlotObjectConfig.defaultValues.serie.lines.style); + this.set('serie-lines-width', amdaPlotObj.PlotObjectConfig.defaultValues.serie.lines.width); + this.set('serie-lines-color', amdaPlotObj.PlotObjectConfig.defaultValues.serie.lines.color); + this.set('serie-symbols-activated', false); + this.set('serie-symbols-type', amdaPlotObj.PlotObjectConfig.defaultValues.serie.symbols.type); + this.set('serie-symbols-size', amdaPlotObj.PlotObjectConfig.defaultValues.serie.symbols.size); + this.set('serie-symbols-color', amdaPlotObj.PlotObjectConfig.defaultValues.serie.symbols.color); + this.set('serie-colored-param', ''); + + this.set('serie-timetick-activated', false); + this.set('serie-timetick-type', amdaPlotObj.PlotObjectConfig.defaultValues.serie.timetick.type); + this.set('serie-timetick-step', amdaPlotObj.PlotObjectConfig.defaultValues.serie.timetick.step); + this.set('serie-timetick-nbmajor', amdaPlotObj.PlotObjectConfig.defaultValues.serie.timetick.nbmajor); + this.set('serie-timetick-nbminor', amdaPlotObj.PlotObjectConfig.defaultValues.serie.timetick.nbminor); + this.set('serie-timetick-color', amdaPlotObj.PlotObjectConfig.defaultValues.serie.timetick.color); + this.set('serie-timetick-symbols-type', amdaPlotObj.PlotObjectConfig.defaultValues.serie.timetick.symbols.type); + this.set('serie-timetick-symbols-size', amdaPlotObj.PlotObjectConfig.defaultValues.serie.timetick.symbols.size); + this.set('serie-timetick-symbols-color', amdaPlotObj.PlotObjectConfig.defaultValues.serie.timetick.symbols.color); + this.set('serie-timetick-firstsymbols-activated', true); + this.set('serie-timetick-firstsymbols-type', amdaPlotObj.PlotObjectConfig.defaultValues.serie.timetick.firstsymbols.type); + this.set('serie-timetick-firstsymbols-size', amdaPlotObj.PlotObjectConfig.defaultValues.serie.timetick.firstsymbols.size); + this.set('serie-timetick-firstsymbols-color', amdaPlotObj.PlotObjectConfig.defaultValues.serie.timetick.firstsymbols.color); + this.set('serie-timetick-font-activated', false); + this.set('serie-timetick-font-name', amdaPlotObj.PlotObjectConfig.defaultValues.serie.timetick.font.name); + this.set('serie-timetick-font-size', amdaPlotObj.PlotObjectConfig.defaultValues.serie.timetick.font.size); + this.set('serie-timetick-font-bold', false); + this.set('serie-timetick-font-italic', false); + + this.set('serie-intervaltick-activated', false); + this.set('serie-intervaltick-mode', amdaPlotObj.PlotObjectConfig.defaultValues.serie.intervaltick.mode); + this.set('serie-intervaltick-color', amdaPlotObj.PlotObjectConfig.defaultValues.serie.intervaltick.color); + this.set('serie-intervaltick-symbols-type', amdaPlotObj.PlotObjectConfig.defaultValues.serie.intervaltick.symbols.type); + this.set('serie-intervaltick-symbols-size', amdaPlotObj.PlotObjectConfig.defaultValues.serie.intervaltick.symbols.size); + this.set('serie-intervaltick-symbols-color', amdaPlotObj.PlotObjectConfig.defaultValues.serie.intervaltick.symbols.color); + this.set('serie-intervaltick-font-activated', false); + this.set('serie-intervaltick-font-name', amdaPlotObj.PlotObjectConfig.defaultValues.serie.intervaltick.font.name); + this.set('serie-intervaltick-font-size', amdaPlotObj.PlotObjectConfig.defaultValues.serie.intervaltick.font.size); + this.set('serie-intervaltick-font-bold', false); + this.set('serie-intervaltick-font-italic', false); + }, + + getJsonValues : function() + { + var serieValues = new Object(); + + serieValues['serie-yaxis'] = this.get('serie-yaxis'); + serieValues['serie-lines-activated'] = this.get('serie-lines-activated'); + serieValues['serie-lines-style'] = this.get('serie-lines-style'); + serieValues['serie-lines-width'] = this.get('serie-lines-width'); + serieValues['serie-lines-color'] = this.get('serie-lines-color'); + serieValues['serie-symbols-activated'] = this.get('serie-symbols-activated'); + serieValues['serie-symbols-type'] = this.get('serie-symbols-type'); + serieValues['serie-symbols-size'] = this.get('serie-symbols-size'); + serieValues['serie-symbols-color'] = this.get('serie-symbols-color'); + serieValues['serie-colored-param'] = this.get('serie-colored-param'); + + serieValues['serie-timetick-activated'] = this.get('serie-timetick-activated'); + serieValues['serie-timetick-type'] = this.get('serie-timetick-type'); + serieValues['serie-timetick-step'] = this.get('serie-timetick-step'); + serieValues['serie-timetick-nbmajor'] = this.get('serie-timetick-nbmajor'); + serieValues['serie-timetick-nbminor'] = this.get('serie-timetick-nbminor'); + serieValues['serie-timetick-color'] = this.get('serie-timetick-color'); + serieValues['serie-timetick-symbols-type'] = this.get('serie-timetick-symbols-type'); + serieValues['serie-timetick-symbols-size'] = this.get('serie-timetick-symbols-size'); + serieValues['serie-timetick-symbols-color'] = this.get('serie-timetick-symbols-color'); + serieValues['serie-timetick-firstsymbols-activated'] = this.get('serie-timetick-firstsymbols-activated'); + serieValues['serie-timetick-firstsymbols-type'] = this.get('serie-timetick-firstsymbols-type'); + serieValues['serie-timetick-firstsymbols-size'] = this.get('serie-timetick-firstsymbols-size'); + serieValues['serie-timetick-firstsymbols-color'] = this.get('serie-timetick-firstsymbols-color'); + serieValues['serie-timetick-font-activated'] = this.get('serie-timetick-font-activated'); + serieValues['serie-timetick-font-name'] = this.get('serie-timetick-font-name'); + serieValues['serie-timetick-font-size'] = this.get('serie-timetick-font-size'); + serieValues['serie-timetick-font-bold'] = this.get('serie-timetick-font-bold'); + serieValues['serie-timetick-font-italic'] = this.get('serie-timetick-font-italic'); + + serieValues['serie-intervaltick-activated'] = this.get('serie-intervaltick-activated'); + serieValues['serie-intervaltick-mode'] = this.get('serie-intervaltick-mode'); + serieValues['serie-intervaltick-color'] = this.get('serie-intervaltick-color'); + serieValues['serie-intervaltick-symbols-type'] = this.get('serie-intervaltick-symbols-type'); + serieValues['serie-intervaltick-symbols-size'] = this.get('serie-intervaltick-symbols-size'); + serieValues['serie-intervaltick-symbols-color'] = this.get('serie-intervaltick-symbols-color'); + serieValues['serie-intervaltick-font-activated'] = this.get('serie-intervaltick-font-activated'); + serieValues['serie-intervaltick-font-name'] = this.get('serie-intervaltick-font-name'); + serieValues['serie-intervaltick-font-size'] = this.get('serie-intervaltick-font-size'); + serieValues['serie-intervaltick-font-bold'] = this.get('serie-intervaltick-font-bold'); + serieValues['serie-intervaltick-font-italic'] = this.get('serie-intervaltick-font-italic'); + + return serieValues; + } +}); \ No newline at end of file diff --git a/js/app/models/PlotObjects/PlotObjectConfig.js b/js/app/models/PlotObjects/PlotObjectConfig.js index ad85de0..9dcba9b 100644 --- a/js/app/models/PlotObjects/PlotObjectConfig.js +++ b/js/app/models/PlotObjects/PlotObjectConfig.js @@ -112,7 +112,29 @@ Ext.define('amdaPlotObj.PlotObjectConfig', { name : 'sans-serif', size: '12' } - } + }, + intervaltick : { + mode: 'start-time', + color : '#FF0000', + symbols : { + type: 'full-circle', + size: 10, + color: '#FF0000' + }, + font : { + name : 'sans-serif', + size: '12' + } + }, + errorbar : { + type: 'min-max', + lines : { + style : 'plain', + width : 1, + color : 'auto' + } + }, + projection : 'XY' }, spectro : { yAxis : 'y-left' @@ -339,6 +361,15 @@ Ext.define('amdaPlotObj.PlotObjectConfig', { {'key' : 'yparam', 'value' : 'Y Parameter'} ], + availableOrbitSerieProjections : [ + {'key' : 'XY', 'value' : 'XY'}, + {'key' : 'XZ', 'value' : 'XZ'}, + {'key' : 'YZ', 'value' : 'YZ'}, + {'key' : 'XR', 'value' : 'XR'}, + {'key' : 'YR', 'value' : 'YR'}, + {'key' : 'ZR', 'value' : 'ZR'} + ], + availableDimsOnXAxis : [ {'key' : '0', 'value' : 'First dimension'}, {'key' : '1', 'value' : 'Second dimension'} @@ -349,6 +380,18 @@ Ext.define('amdaPlotObj.PlotObjectConfig', { {'key' : 'time-step', 'value' : 'Time step'}, {'key' : 'nb-major', 'value' : 'Num. of major symb.'} ], + + availableIntervalTickModes : [ + {'key' : 'symbol-only', 'value' : 'Symbol only'}, + {'key' : 'interval-index', 'value' : 'Interval index'}, + {'key' : 'start-time', 'value' : 'Start time'}, + {'key' : 'start-stop-time', 'value' : 'Start/Stop times'} + ], + + availableErrorBarTypes : [ + {'key' : 'min-max', 'value' : 'Min./Max. Parameters'}, + {'key' : 'delta', 'value' : 'Delta parameter'} + ], availableLegendSeriesTypes : [ {'key' : 'text-line-symbol', 'value' : 'Text, Line & Symbols'}, diff --git a/js/app/models/PlotObjects/PlotOrbitSerieObject.js b/js/app/models/PlotObjects/PlotOrbitSerieObject.js new file mode 100644 index 0000000..e203a58 --- /dev/null +++ b/js/app/models/PlotObjects/PlotOrbitSerieObject.js @@ -0,0 +1,42 @@ +/** + * Project : AMDA-NG + * Name : PlotOrbitSerieObject.js + * @class amdaPlotObj.PlotOrbitSerieObject + * @extends amdaPlotObj.PlotBaseSerieObject + * @brief Plot Orbit Serie Business Object Definition + * @author Benjamin Renard + * @version $Id: PlotOrbitSerieObject.js benjamin $ + ****************************************************************************** + * FT Id : Date : Name - Description + ****************************************************************************** + * : :14/09/2015: BRE - file creation + */ + + +Ext.define('amdaPlotObj.PlotOrbitSerieObject', { + extend: 'amdaPlotObj.PlotBaseSerieObject', + + fields : [ + {name: 'serie-projection', type: 'string'} + ], + + constructor: function(){ + var me = this; + me.callParent(arguments); + }, + + setDefaultValues: function() + { + this.set('serie-projection', amdaPlotObj.PlotObjectConfig.defaultValues.serie.projection); + this.callParent(arguments); + }, + + getJsonValues : function() + { + var serieValues = this.callParent(arguments); + + serieValues['serie-projection'] = this.get('serie-projection'); + + return serieValues; + } +}); \ No newline at end of file diff --git a/js/app/models/PlotObjects/PlotParamObject.js b/js/app/models/PlotObjects/PlotParamObject.js index aa4994a..09593c9 100644 --- a/js/app/models/PlotObjects/PlotParamObject.js +++ b/js/app/models/PlotObjects/PlotParamObject.js @@ -20,6 +20,7 @@ Ext.define('amdaPlotObj.PlotParamObject', { requires: [ 'amdaPlotObj.PlotObjectConfig', 'amdaPlotObj.PlotSerieObject', + 'amdaPlotObj.PlotOrbitSerieObject', 'amdaPlotObj.PlotSpectroObject', 'amdaPlotObj.PlotStatusBarObject', 'amdaPlotObj.PlotTickBarObject', @@ -69,6 +70,8 @@ Ext.define('amdaPlotObj.PlotParamObject', { { case 'serie' : return new amdaPlotObj.PlotSerieObject(data); + case 'orbit-serie' : + return new amdaPlotObj.PlotOrbitSerieObject(data); case 'spectro' : return new amdaPlotObj.PlotSpectroObject(data); case 'status-bar' : @@ -145,7 +148,13 @@ Ext.define('amdaPlotObj.PlotParamObject', { switch (plotType) { case 'xyPlot' : - info = this.get('param-id')+' = f('+this.get('param-drawing-object').get('serie-xaxis-param')+', t)'; + if (this.get('param-drawing-type') == 'orbit-serie') + { + var projection = amdaPlotObj.PlotObjectConfig.getValueByKey(amdaPlotObj.PlotObjectConfig.availableOrbitSerieProjections, this.get('param-drawing-object').get('serie-projection')); + info = this.get('param-id')+', '+projection; + } + else + info = this.get('param-id')+' = f('+this.get('param-drawing-object').get('serie-xaxis-param')+', t)'; break; case 'instantPlot' : info = this.get('param-id'); diff --git a/js/app/models/PlotObjects/PlotSerieObject.js b/js/app/models/PlotObjects/PlotSerieObject.js index 43dcee2..6f8d355 100644 --- a/js/app/models/PlotObjects/PlotSerieObject.js +++ b/js/app/models/PlotObjects/PlotSerieObject.js @@ -2,7 +2,7 @@ * Project : AMDA-NG * Name : PlotSerieObject.js * @class amdaPlotObj.PlotSerieObject - * @extends Ext.data.Model + * @extends amdaPlotObj.PlotBaseSerieObject * @brief Plot Serie Business Object Definition * @author Benjamin Renard * @version $Id: PlotSerieObject.js benjamin $ @@ -14,137 +14,62 @@ Ext.define('amdaPlotObj.PlotSerieObject', { - extend: 'Ext.data.Model', - - requires: [ - 'amdaPlotObj.PlotObjectConfig' - ], + extend: 'amdaPlotObj.PlotBaseSerieObject', fields : [ - {name: 'serie-yaxis', type: 'string'}, - {name: 'serie-lines-activated', type: 'boolean'}, - {name: 'serie-lines-style', type: 'string'}, - {name: 'serie-lines-width', type: 'float'}, - {name: 'serie-lines-color', type: 'string'}, - {name: 'serie-symbols-activated', type: 'boolean'}, - {name: 'serie-symbols-type', type: 'string'}, - {name: 'serie-symbols-size', type: 'float'}, - {name: 'serie-symbols-color', type: 'string'}, - {name: 'serie-colored-param', type: 'string'}, - //Only used for xyPlot {name: 'serie-xaxis-param', type: 'string'}, {name: 'serie-resampling-mode', type: 'string'}, - //Time tick - {name: 'serie-timetick-activated', type: 'boolean'}, - {name: 'serie-timetick-type', type: 'string'}, - {name: 'serie-timetick-step', type: 'float'}, - {name: 'serie-timetick-nbmajor', type: 'int'}, - {name: 'serie-timetick-nbminor', type: 'int'}, - {name: 'serie-timetick-color', type: 'string'}, - {name: 'serie-timetick-symbols-type', type: 'string'}, - {name: 'serie-timetick-symbols-size', type: 'float'}, - {name: 'serie-timetick-symbols-color', type: 'string'}, - {name: 'serie-timetick-firstsymbols-activated', type: 'boolean'}, - {name: 'serie-timetick-firstsymbols-type', type: 'string'}, - {name: 'serie-timetick-firstsymbols-size', type: 'float'}, - {name: 'serie-timetick-firstsymbols-color', type: 'string'}, - {name: 'serie-timetick-font-activated', type: 'boolean'}, - {name: 'serie-timetick-font-name', type: 'string'}, - {name: 'serie-timetick-font-size', type: 'int'}, - {name: 'serie-timetick-font-bold', type: 'boolean'}, - {name: 'serie-timetick-font-italic', type: 'boolean'} + + //Only used for timePlot + {name: 'serie-errorbar-activated', type: 'boolean'}, + {name: 'serie-errorbar-type', type: 'string'}, + {name: 'serie-errorbar-lines-style', type: 'string'}, + {name: 'serie-errorbar-lines-width', type: 'float'}, + {name: 'serie-errorbar-lines-color', type: 'string'}, + {name: 'serie-errorbar-minparam', type: 'string'}, + {name: 'serie-errorbar-maxparam', type: 'string'}, + {name: 'serie-errorbar-deltaparam', type: 'string'} ], constructor: function(){ var me = this; me.callParent(arguments); - if ((arguments.length > 0) && arguments[0]) - { - } - else - { - //new object, set default fields values - me.setDefaultValues(); - } - this.dirty = false; }, setDefaultValues: function() { - this.set('serie-yaxis', amdaPlotObj.PlotObjectConfig.defaultValues.serie.yAxis); - this.set('serie-lines-activated', true); - this.set('serie-lines-style', amdaPlotObj.PlotObjectConfig.defaultValues.serie.lines.style); - this.set('serie-lines-width', amdaPlotObj.PlotObjectConfig.defaultValues.serie.lines.width); - this.set('serie-lines-color', amdaPlotObj.PlotObjectConfig.defaultValues.serie.lines.color); - this.set('serie-symbols-activated', false); - this.set('serie-symbols-type', amdaPlotObj.PlotObjectConfig.defaultValues.serie.symbols.type); - this.set('serie-symbols-size', amdaPlotObj.PlotObjectConfig.defaultValues.serie.symbols.size); - this.set('serie-symbols-color', amdaPlotObj.PlotObjectConfig.defaultValues.serie.symbols.color); - this.set('serie-colored-param', ''); - - this.set('serie-timetick-activated', false); - this.set('serie-timetick-type', amdaPlotObj.PlotObjectConfig.defaultValues.serie.timetick.type); - this.set('serie-timetick-step', amdaPlotObj.PlotObjectConfig.defaultValues.serie.timetick.step); - this.set('serie-timetick-nbmajor', amdaPlotObj.PlotObjectConfig.defaultValues.serie.timetick.nbmajor); - this.set('serie-timetick-nbminor', amdaPlotObj.PlotObjectConfig.defaultValues.serie.timetick.nbminor); - this.set('serie-timetick-color', amdaPlotObj.PlotObjectConfig.defaultValues.serie.timetick.color); - this.set('serie-timetick-symbols-type', amdaPlotObj.PlotObjectConfig.defaultValues.serie.timetick.symbols.type); - this.set('serie-timetick-symbols-size', amdaPlotObj.PlotObjectConfig.defaultValues.serie.timetick.symbols.size); - this.set('serie-timetick-symbols-color', amdaPlotObj.PlotObjectConfig.defaultValues.serie.timetick.symbols.color); - this.set('serie-timetick-firstsymbols-activated', true); - this.set('serie-timetick-firstsymbols-type', amdaPlotObj.PlotObjectConfig.defaultValues.serie.timetick.firstsymbols.type); - this.set('serie-timetick-firstsymbols-size', amdaPlotObj.PlotObjectConfig.defaultValues.serie.timetick.firstsymbols.size); - this.set('serie-timetick-firstsymbols-color', amdaPlotObj.PlotObjectConfig.defaultValues.serie.timetick.firstsymbols.color); - this.set('serie-timetick-font-activated', false); - this.set('serie-timetick-font-name', amdaPlotObj.PlotObjectConfig.defaultValues.serie.timetick.font.name); - this.set('serie-timetick-font-size', amdaPlotObj.PlotObjectConfig.defaultValues.serie.timetick.font.size); - this.set('serie-timetick-font-bold', false); - this.set('serie-timetick-font-italic', false); + this.set('serie-errorbar-activated', false); + this.set('serie-errorbar-type', amdaPlotObj.PlotObjectConfig.defaultValues.serie.errorbar.type); + this.set('serie-errorbar-lines-style', amdaPlotObj.PlotObjectConfig.defaultValues.serie.errorbar.lines.style); + this.set('serie-errorbar-lines-width', amdaPlotObj.PlotObjectConfig.defaultValues.serie.errorbar.lines.width); + this.set('serie-errorbar-lines-color', amdaPlotObj.PlotObjectConfig.defaultValues.serie.errorbar.lines.color); + this.set('serie-errorbar-minparam', ''); + this.set('serie-errorbar-maxparam', ''); + this.set('serie-errorbar-deltaparam', ''); this.set('serie-xaxis-param', ''); this.set('serie-resampling-mode', amdaPlotObj.PlotObjectConfig.defaultValues.serie.resamplingMode); + + this.callParent(arguments); }, getJsonValues : function() { - var serieValues = new Object(); + var serieValues = this.callParent(arguments); - serieValues['serie-yaxis'] = this.get('serie-yaxis'); - serieValues['serie-lines-activated'] = this.get('serie-lines-activated'); - serieValues['serie-lines-style'] = this.get('serie-lines-style'); - serieValues['serie-lines-width'] = this.get('serie-lines-width'); - serieValues['serie-lines-color'] = this.get('serie-lines-color'); - serieValues['serie-symbols-activated'] = this.get('serie-symbols-activated'); - serieValues['serie-symbols-type'] = this.get('serie-symbols-type'); - serieValues['serie-symbols-size'] = this.get('serie-symbols-size'); - serieValues['serie-symbols-color'] = this.get('serie-symbols-color'); - serieValues['serie-colored-param'] = this.get('serie-colored-param'); serieValues['serie-xaxis-param'] = this.get('serie-xaxis-param'); serieValues['serie-resampling-mode'] = this.get('serie-resampling-mode'); - if (this.get('serie-timetick-activated')) - { - serieValues['serie-timetick'] = new Object(); - serieValues['serie-timetick']['serie-timetick-type'] = this.get('serie-timetick-type'); - serieValues['serie-timetick']['serie-timetick-step'] = this.get('serie-timetick-step'); - serieValues['serie-timetick']['serie-timetick-nbmajor'] = this.get('serie-timetick-nbmajor'); - serieValues['serie-timetick']['serie-timetick-nbminor'] = this.get('serie-timetick-nbminor'); - serieValues['serie-timetick']['serie-timetick-color'] = this.get('serie-timetick-color'); - serieValues['serie-timetick']['serie-timetick-symbols-type'] = this.get('serie-timetick-symbols-type'); - serieValues['serie-timetick']['serie-timetick-symbols-size'] = this.get('serie-timetick-symbols-size'); - serieValues['serie-timetick']['serie-timetick-symbols-color'] = this.get('serie-timetick-symbols-color'); - serieValues['serie-timetick']['serie-timetick-firstsymbols-activated'] = this.get('serie-timetick-firstsymbols-activated'); - serieValues['serie-timetick']['serie-timetick-firstsymbols-type'] = this.get('serie-timetick-firstsymbols-type'); - serieValues['serie-timetick']['serie-timetick-firstsymbols-size'] = this.get('serie-timetick-firstsymbols-size'); - serieValues['serie-timetick']['serie-timetick-firstsymbols-color'] = this.get('serie-timetick-firstsymbols-color'); - serieValues['serie-timetick']['serie-timetick-font-activated'] = this.get('serie-timetick-font-activated'); - serieValues['serie-timetick']['serie-timetick-font-name'] = this.get('serie-timetick-font-name'); - serieValues['serie-timetick']['serie-timetick-font-size'] = this.get('serie-timetick-font-size'); - serieValues['serie-timetick']['serie-timetick-font-bold'] = this.get('serie-timetick-font-bold'); - serieValues['serie-timetick']['serie-timetick-font-italic'] = this.get('serie-timetick-font-italic'); - } - + serieValues['serie-errorbar-activated'] = this.get('serie-errorbar-activated'); + serieValues['serie-errorbar-type'] = this.get('serie-errorbar-type'); + serieValues['serie-errorbar-lines-style'] = this.get('serie-errorbar-lines-style'); + serieValues['serie-errorbar-lines-width'] = this.get('serie-errorbar-lines-width'); + serieValues['serie-errorbar-lines-color'] = this.get('serie-errorbar-lines-color'); + serieValues['serie-errorbar-minparam'] = this.get('serie-errorbar-minparam'); + serieValues['serie-errorbar-maxparam'] = this.get('serie-errorbar-maxparam'); + serieValues['serie-errorbar-deltaparam'] = this.get('serie-errorbar-deltaparam'); + return serieValues; } }); \ No newline at end of file diff --git a/js/app/views/PlotComponents/PlotBaseSerieForm.js b/js/app/views/PlotComponents/PlotBaseSerieForm.js new file mode 100644 index 0000000..13ca377 --- /dev/null +++ b/js/app/views/PlotComponents/PlotBaseSerieForm.js @@ -0,0 +1,93 @@ +/** + * Project : AMDA-NG + * Name : PlotBaseSerieForm.js + * @class amdaPlotComp.PlotBaseSerieForm + * @extends amdaPlotComp.PlotStandardForm + * @brief Form to define specifics base serie options + * @author Benjamin Renard + * @version $Id: PlotBaseSerieForm.js benjamin $ + */ + +Ext.define('amdaPlotComp.PlotBaseSerieForm', { + extend: 'amdaPlotComp.PlotStandardForm', + + setObject : function(object) { + this.object = object.get('param-drawing-object'); + this.loadRecord(this.object); + this.updateOptions(this.crtTree.getSelectedPlotType()); + }, + + updateOptions: function(plotType) { + var isScatter = (plotType == 'xyPlot'); + + var timeTickTypeField = this.getForm().findField('serie-timetick-type'); + var timeTickFieldSet = timeTickTypeField.findParentByType('fieldset'); + + timeTickFieldSet.setVisible(isScatter); + + if (isScatter) + { + //Update Time Tick field + var timeTickStepField = this.getForm().findField('serie-timetick-step'); + var timeTickNbMajorField = this.getForm().findField('serie-timetick-nbmajor'); + switch (timeTickTypeField.getValue()) + { + case 'time-step' : + timeTickStepField.setVisible(true); + timeTickNbMajorField.setVisible(false); + break; + case 'nb-major' : + timeTickStepField.setVisible(false); + timeTickNbMajorField.setVisible(true); + break; + case 'auto' : + default : + timeTickStepField.setVisible(false); + timeTickNbMajorField.setVisible(false); + } + } + }, + + getTimeTickItems: function() { + var me = this; + return [ + this.addStandardCombo('serie-timetick-type', 'Type', amdaPlotObj.PlotObjectConfig.availableTimeTickTypes, function(name, value, oldValue) { + me.updateOptions(me.crtTree.getSelectedPlotType()); + }), + this.addStandardFloat('serie-timetick-step', 'Time step (sec.)'), + this.addStandardFloat('serie-timetick-nbmajor', 'Number of major ticks'), + this.addStandardFloat('serie-timetick-nbminor', 'Number of minor ticks'), + this.addStandardColor('serie-timetick-color', 'Color', amdaPlotObj.PlotObjectConfig.availableColors), + this.addStandardFieldSet('Symbols', '', this.addStandardSymbolsItems('serie-timetick-symbols')), + this.addStandardFieldSet('First symbol', 'serie-timetick-firstsymbols-activated', this.addStandardSymbolsItems('serie-timetick-firstsymbols')), + this.addStandardFont('serie-timetick-font') + ]; + }, + + getIntervalTickItems: function() { + var me = this; + + return [ + this.addStandardCombo('serie-intervaltick-mode', 'Mode', amdaPlotObj.PlotObjectConfig.availableIntervalTickModes), + this.addStandardColor('serie-intervaltick-color', 'Color', amdaPlotObj.PlotObjectConfig.availableColors), + this.addStandardFieldSet('Symbols', '', this.addStandardSymbolsItems('serie-intervaltick-symbols')), + this.addStandardFont('serie-intervaltick-font') + ]; + }, + + getFormItems: function() { + var me = this; + + return [ + this.addStandardCombo('serie-yaxis', 'Y axis', amdaPlotObj.PlotObjectConfig.availableYAxes, function(name, value, oldValue) { + me.object.set('serie-yaxis', value); + me.crtTree.refresh(); + }), + this.addStandardParamDropTarget('serie-colored-param', 'Colored Parameter'), + this.addStandardFieldSet('Lines', 'serie-lines-activated', this.addStandardLineItems('serie-lines')), + this.addStandardFieldSet('Symbols', 'serie-symbols-activated', this.addStandardSymbolsItems('serie-symbols')), + this.addStandardFieldSet('Time ticks', 'serie-timetick-activated', this.getTimeTickItems()), + this.addStandardFieldSet('Interval ticks', 'serie-intervaltick-activated', this.getIntervalTickItems()) + ]; + } +}); \ No newline at end of file diff --git a/js/app/views/PlotComponents/PlotConstantForm.js b/js/app/views/PlotComponents/PlotConstantForm.js index 73dc2a8..e34969e 100644 --- a/js/app/views/PlotComponents/PlotConstantForm.js +++ b/js/app/views/PlotComponents/PlotConstantForm.js @@ -33,7 +33,8 @@ Ext.define('amdaPlotComp.PlotConstantForm', { if (me.object.get('constant-axis-id') != value) { me.updateOptions(value, me.crtTree.getSelectedPlotType()); - me.crtTree.getView().refresh(); + me.object.set('constant-axis-id', value); + me.crtTree.refresh(); } }), this.addStandardDate('constant-time-value', 'Value'), diff --git a/js/app/views/PlotComponents/PlotFillForm.js b/js/app/views/PlotComponents/PlotFillForm.js index 0622174..3c38fc9 100644 --- a/js/app/views/PlotComponents/PlotFillForm.js +++ b/js/app/views/PlotComponents/PlotFillForm.js @@ -81,7 +81,8 @@ Ext.define('amdaPlotComp.PlotFillForm', { if (me.object.get('fill-type') != value) { me.updateOptions(); - me.crtTree.getView().refresh(); + me.object.set('fill-type', value); + me.crtTree.refresh(); } }), this.addStandardCombo('fill-firstserie-id', 'First serie Id', []), diff --git a/js/app/views/PlotComponents/PlotLayoutForm.js b/js/app/views/PlotComponents/PlotLayoutForm.js index 0670825..3c12023 100644 --- a/js/app/views/PlotComponents/PlotLayoutForm.js +++ b/js/app/views/PlotComponents/PlotLayoutForm.js @@ -92,7 +92,8 @@ Ext.define('amdaPlotComp.PlotLayoutForm', { if (me.object.get('page-layout-type') != value) { me.updateLayoutOptions(); - me.crtTree.getView().refresh(); + me.object.set('page-layout-type', value); + me.crtTree.refresh(); } }), this.layoutOptionsContainer diff --git a/js/app/views/PlotComponents/PlotLegendSeriesForm.js b/js/app/views/PlotComponents/PlotLegendSeriesForm.js index bd075df..a8c1f39 100644 --- a/js/app/views/PlotComponents/PlotLegendSeriesForm.js +++ b/js/app/views/PlotComponents/PlotLegendSeriesForm.js @@ -44,7 +44,8 @@ Ext.define('amdaPlotComp.PlotLegendSeriesForm', { return [ this.addStandardFieldSet('Activate legend', 'legend-series-activated', legendItems, function(name, value, oldValue) { - me.crtTree.getView().refresh(); + me.object.set('legend-series-activated', value); + me.crtTree.refresh(); }) ]; } diff --git a/js/app/views/PlotComponents/PlotLegendTextForm.js b/js/app/views/PlotComponents/PlotLegendTextForm.js index 4553839..0408543 100644 --- a/js/app/views/PlotComponents/PlotLegendTextForm.js +++ b/js/app/views/PlotComponents/PlotLegendTextForm.js @@ -24,7 +24,8 @@ Ext.define('amdaPlotComp.PlotLegendTextForm', { this.addStandardText('legend-text-value', 'Text'), this.addStandardColor('legend-text-color', 'Color', amdaPlotObj.PlotObjectConfig.availableColors), this.addStandardCombo('legend-text-position', 'Position', amdaPlotObj.PlotObjectConfig.availableLegendTextPositions, function(name, value, oldValue) { - me.crtTree.getView().refresh(); + me.object.set('legend-text-position', value); + me.crtTree.refresh(); }), this.addStandardFont('legend-text-font') ]; diff --git a/js/app/views/PlotComponents/PlotOrbitSerieForm.js b/js/app/views/PlotComponents/PlotOrbitSerieForm.js new file mode 100644 index 0000000..c022525 --- /dev/null +++ b/js/app/views/PlotComponents/PlotOrbitSerieForm.js @@ -0,0 +1,32 @@ +/** + * Project : AMDA-NG + * Name : PlotOrbitSerieForm.js + * @class amdaPlotComp.PlotOrbitSerieForm + * @extends amdaPlotComp.PlotBaseSerieForm + * @brief Form to define specifics orbit serie options + * @author Benjamin Renard + * @version $Id: PlotOrbitSerieForm.js benjamin $ + */ + +Ext.define('amdaPlotComp.PlotOrbitSerieForm', { + extend: 'amdaPlotComp.PlotBaseSerieForm', + + getFormItems: function() { + var me = this; + + var baseSerieItems = this.callParent(arguments); + + var orbitSerieItems = [ + this.addStandardCombo('serie-projection', 'Projection', amdaPlotObj.PlotObjectConfig.availableOrbitSerieProjections, function(name, value, oldValue) { + me.object.set('serie-projection', value); + me.crtTree.refresh(); + }), + ]; + + Ext.each(baseSerieItems, function(item) { + orbitSerieItems.push(item); + }); + + return orbitSerieItems; + } +}); \ No newline at end of file diff --git a/js/app/views/PlotComponents/PlotPageForm.js b/js/app/views/PlotComponents/PlotPageForm.js index c59cbda..f54571a 100644 --- a/js/app/views/PlotComponents/PlotPageForm.js +++ b/js/app/views/PlotComponents/PlotPageForm.js @@ -29,13 +29,16 @@ Ext.define('amdaPlotComp.PlotPageForm', { return [ //this.addStandardCombo('page-mode', 'Mode', amdaPlotObj.PlotObjectConfig.availablePageModes), this.addStandardCombo('page-orientation', 'Orientation', amdaPlotObj.PlotObjectConfig.availablePageOrientations, function(name, value, oldValue) { - me.crtTree.getView().refresh(); + me.object.set('page-orientation', value); + me.crtTree.refresh(); }), this.addStandardCombo('page-dimension', 'Dimension', amdaPlotObj.PlotObjectConfig.availablePageDimensions, function(name, value, oldValue) { - me.crtTree.getView().refresh(); + me.object.set('page-dimension', value); + me.crtTree.refresh(); }), this.addStandardCheck('page-superpose-mode', 'Epoch Superposed Mode', function(name, value, oldValue) { - me.crtTree.getView().refresh(); + me.object.set('page-superpose-mode', value); + me.crtTree.refresh(); }), this.addStandardFieldSet('Title', '', titleItems), this.addStandardFieldSet('Margins', 'page-margins-activated', marginItems), diff --git a/js/app/views/PlotComponents/PlotPanelForm.js b/js/app/views/PlotComponents/PlotPanelForm.js index 122dc8c..8f483b6 100644 --- a/js/app/views/PlotComponents/PlotPanelForm.js +++ b/js/app/views/PlotComponents/PlotPanelForm.js @@ -125,18 +125,22 @@ Ext.define('amdaPlotComp.PlotPanelForm', { me.crtTree.buildPanelAxesNode(me.object); me.crtTree.buildPanelAdditionalObjectsNode(me.object); } - me.crtTree.getView().refresh(); + me.object.set('panel-plot-type', value); + me.crtTree.refresh(); me.updateOptions(value); } }), this.addStandardCheck('panel-scatter-isotropic', 'Isotropic', function(name, value, oldValue) { - me.crtTree.getView().refresh(); + me.object.set('panel-scatter-isotropic', value); + me.crtTree.refresh(); }), this.addStandardText('panel-epoch-centertimeid', 'Epoch Center Time Id', function(name, value, oldValue) { - me.crtTree.getView().refresh(); + me.object.set('panel-epoch-centertimeid', value); + me.crtTree.refresh(); }), this.addStandardDate('panel-instant-time', 'Instant time', function(name, value, oldValue) { - me.crtTree.getView().refresh(); + me.object.set('panel-instant-time', value); + me.crtTree.refresh(); }), this.addStandardColor('panel-background-color', 'Background Color', amdaPlotObj.PlotObjectConfig.availableBackgroundColors), this.addStandardFieldSet('Manual Bounds', '', boundsItems), diff --git a/js/app/views/PlotComponents/PlotParamForm.js b/js/app/views/PlotComponents/PlotParamForm.js index 94ca60b..cbfd3a5 100644 --- a/js/app/views/PlotComponents/PlotParamForm.js +++ b/js/app/views/PlotComponents/PlotParamForm.js @@ -13,6 +13,7 @@ Ext.define('amdaPlotComp.PlotParamForm', { requires: [ 'amdaPlotComp.PlotSerieForm', + 'amdaPlotComp.PlotOrbitSerieForm', 'amdaPlotComp.PlotSpectroForm', 'amdaPlotComp.PlotStatusBarForm', 'amdaPlotComp.PlotTickBarForm', @@ -54,6 +55,9 @@ Ext.define('amdaPlotComp.PlotParamForm', { case 'serie' : this.drawingOptionsFormsManager.register(new amdaPlotComp.PlotSerieForm({id : formId})); break; + case 'orbit-serie' : + this.drawingOptionsFormsManager.register(new amdaPlotComp.PlotOrbitSerieForm({id : formId})); + break; case 'spectro' : this.drawingOptionsFormsManager.register(new amdaPlotComp.PlotSpectroForm({id : formId})); break; @@ -108,7 +112,8 @@ Ext.define('amdaPlotComp.PlotParamForm', { if (me.object.get('param-drawing-type') != value) { me.object.changeDrawingType(value); - me.crtTree.getView().refresh(); + me.object.set('param-drawing-type', value); + me.crtTree.refresh(); me.updateDrawingOptions(value); } }), diff --git a/js/app/views/PlotComponents/PlotSerieForm.js b/js/app/views/PlotComponents/PlotSerieForm.js index b4eda52..bd80a0e 100644 --- a/js/app/views/PlotComponents/PlotSerieForm.js +++ b/js/app/views/PlotComponents/PlotSerieForm.js @@ -2,87 +2,76 @@ * Project : AMDA-NG * Name : PlotSerieForm.js * @class amdaPlotComp.PlotSerieForm - * @extends amdaPlotComp.PlotStandardForm + * @extends amdaPlotComp.PlotBaseSerieForm * @brief Form to define specifics serie options * @author Benjamin Renard * @version $Id: PlotSerieForm.js benjamin $ */ Ext.define('amdaPlotComp.PlotSerieForm', { - extend: 'amdaPlotComp.PlotStandardForm', - - setObject : function(object) { - this.object = object.get('param-drawing-object'); - this.loadRecord(this.object); - this.updateOptions(this.crtTree.getSelectedPlotType()); - }, + extend: 'amdaPlotComp.PlotBaseSerieForm', updateOptions: function(plotType) { var isScatter = (plotType == 'xyPlot'); var xParamField = this.getForm().findField('serie-xaxis-param'); var resamplingModeField = this.getForm().findField('serie-resampling-mode'); - var timeTickTypeField = this.getForm().findField('serie-timetick-type'); - var timeTickFieldSet = timeTickTypeField.findParentByType('fieldset'); xParamField.setVisible(isScatter); resamplingModeField.setVisible(isScatter); - timeTickFieldSet.setVisible(isScatter); - if (isScatter) + var errorBarTypeField = this.getForm().findField('serie-errorbar-type'); + var errorBarFieldSet = errorBarTypeField.findParentByType('fieldset'); + + errorBarFieldSet.setVisible(!isScatter); + + if (!isScatter) { - //Update Time Tick field - var timeTickStepField = this.getForm().findField('serie-timetick-step'); - var timeTickNbMajorField = this.getForm().findField('serie-timetick-nbmajor'); - switch (timeTickTypeField.getValue()) - { - case 'time-step' : - timeTickStepField.setVisible(true); - timeTickNbMajorField.setVisible(false); - break; - case 'nb-major' : - timeTickStepField.setVisible(false); - timeTickNbMajorField.setVisible(true); - break; - case 'auto' : - default : - timeTickStepField.setVisible(false); - timeTickNbMajorField.setVisible(false); - } + var errorMinField = this.getForm().findField('serie-errorbar-minparam'); + var errorMaxField = this.getForm().findField('serie-errorbar-maxparam'); + var errorDeltaField = this.getForm().findField('serie-errorbar-deltaparam'); + + errorMinField.setVisible(errorBarTypeField.getValue() == 'min-max'); + errorMaxField.setVisible(errorBarTypeField.getValue() == 'min-max'); + errorDeltaField.setVisible(errorBarTypeField.getValue() == 'delta'); } + + this.callParent(arguments); }, - getTimeTickItems: function() { + getErrorBarItems: function() { var me = this; + return [ - this.addStandardCombo('serie-timetick-type', 'Type', amdaPlotObj.PlotObjectConfig.availableTimeTickTypes, function(name, value, oldValue) { - me.updateOptions(me.crtTree.getSelectedPlotType()); + this.addStandardCombo('serie-errorbar-type', 'Type', amdaPlotObj.PlotObjectConfig.availableErrorBarTypes, function(name, value, oldValue) { + me.updateOptions(me.crtTree.getSelectedPlotType()); }), - this.addStandardFloat('serie-timetick-step', 'Time step (sec.)'), - this.addStandardFloat('serie-timetick-nbmajor', 'Number of major ticks'), - this.addStandardFloat('serie-timetick-nbminor', 'Number of minor ticks'), - this.addStandardColor('serie-timetick-color', 'Color', amdaPlotObj.PlotObjectConfig.availableColors), - this.addStandardFieldSet('Symbols', '', this.addStandardSymbolsItems('serie-timetick-symbols')), - this.addStandardFieldSet('First symbol', 'serie-timetick-firstsymbols-activated', this.addStandardSymbolsItems('serie-timetick-firstsymbols')), - this.addStandardFont('serie-timetick-font') + this.addStandardParamDropTarget('serie-errorbar-minparam', 'Min. Parameter'), + this.addStandardParamDropTarget('serie-errorbar-maxparam', 'Max. Parameter'), + this.addStandardParamDropTarget('serie-errorbar-deltaparam', 'Delta Parameter'), + this.addStandardFieldSet('Bar Lines', '', this.addStandardLineItems('serie-errorbar-lines')) ]; }, getFormItems: function() { var me = this; - return [ - this.addStandardParamDropTarget('serie-xaxis-param', 'X Parameter', function(name, value, oldValue) { - me.crtTree.getView().refresh(); - }), - this.addStandardCombo('serie-resampling-mode', 'Reference parameter for resampling', amdaPlotObj.PlotObjectConfig.availableResamplingModes), - this.addStandardCombo('serie-yaxis', 'Y axis', amdaPlotObj.PlotObjectConfig.availableYAxes, function(name, value, oldValue) { - me.crtTree.getView().refresh(); - }), - this.addStandardParamDropTarget('serie-colored-param', 'Colored Parameter'), - this.addStandardFieldSet('Lines', 'serie-lines-activated', this.addStandardLineItems('serie-lines')), - this.addStandardFieldSet('Symbols', 'serie-symbols-activated', this.addStandardSymbolsItems('serie-symbols')), - this.addStandardFieldSet('Time ticks', 'serie-timetick-activated', this.getTimeTickItems()) + var baseSerieItems = this.callParent(arguments); + + var serieItems = [ + this.addStandardParamDropTarget('serie-xaxis-param', 'X Parameter', function(name, value, oldValue) { + me.object.set('serie-xaxis-param', value); + me.crtTree.refresh(); + }), + this.addStandardCombo('serie-resampling-mode', 'Reference parameter for resampling', amdaPlotObj.PlotObjectConfig.availableResamplingModes) ]; + + Ext.each(baseSerieItems, function(item) { + serieItems.push(item); + }); + + serieItems.push(this.addStandardFieldSet('Error Bar', 'serie-errorbar-activated', this.getErrorBarItems())); + + return serieItems; } }); \ No newline at end of file diff --git a/js/app/views/PlotComponents/PlotSpectroForm.js b/js/app/views/PlotComponents/PlotSpectroForm.js index 0eaaa89..57d6e2c 100644 --- a/js/app/views/PlotComponents/PlotSpectroForm.js +++ b/js/app/views/PlotComponents/PlotSpectroForm.js @@ -20,7 +20,8 @@ Ext.define('amdaPlotComp.PlotSpectroForm', { var me = this; return [ this.addStandardCombo('spectro-yaxis', 'Y axis', amdaPlotObj.PlotObjectConfig.availableYAxes, function(name, value, oldValue) { - me.crtTree.getView().refresh(); + me.object.set('spectro-yaxis', value); + me.crtTree.refresh(); }) ]; } diff --git a/js/app/views/PlotComponents/PlotTree.js b/js/app/views/PlotComponents/PlotTree.js index 0edfe04..2013a81 100644 --- a/js/app/views/PlotComponents/PlotTree.js +++ b/js/app/views/PlotComponents/PlotTree.js @@ -37,6 +37,10 @@ Ext.define('amdaPlotComp.PlotTree', { this.callParent(arguments); }, + refresh: function() { + this.getView().refresh(); + }, + buildTree: function(tabObject) { if (this.store.getRootNode().hasChildNodes()) this.store.getRootNode().removeAll(); @@ -747,7 +751,8 @@ Ext.define('amdaPlotComp.PlotTree', { rootVisible: false, hideHeaders: true, viewConfig:{ - plugins: this.getDragAndDropPluginConfig() + plugins: this.getDragAndDropPluginConfig(), + preserveScrollOnRefresh: true }, listeners: { select: me.onNodeSelect, -- libgit2 0.21.2