diff --git a/generic_data/Functions/functions.xml b/generic_data/Functions/functions.xml index 460fdbf..ff3856a 100644 --- a/generic_data/Functions/functions.xml +++ b/generic_data/Functions/functions.xml @@ -1,71 +1,71 @@ <?xml version="1.0"?> <functions xml:id="functions"> - <function name="mean_(,)" args="1" kind="time"> + <function name="mean_(,)" args="1" kind="time" group="stat"> <prompt>input averaging time in secs</prompt> <info_brief>average</info_brief> <new_kernel>#sampling_classic</new_kernel> </function> - <function name="median_(,)" args="1" kind="time"> + <function name="median_(,)" args="1" kind="time" group="stat"> <prompt>input averaging time in secs</prompt> <info_brief>median average</info_brief> <new_kernel>#median</new_kernel> </function> - <function name="rms_(,)" args="1" kind="time"> + <function name="rms_(,)" args="1" kind="time" group="stat"> <prompt>input averaging time in secs</prompt> <info_brief>root mean square</info_brief> <new_kernel>#rms</new_kernel> </function> - <function name="min_(,)" args="1" kind="time"> + <function name="min_(,)" args="1" kind="time" group="stat"> <prompt>input window time in secs</prompt> <info_brief>min() function</info_brief> <new_kernel>#min</new_kernel> </function> - <function name="max_(,)" args="1" kind="time"> + <function name="max_(,)" args="1" kind="time" group="stat"> <prompt>input window time in secs</prompt> <info_brief>max() function</info_brief> <new_kernel>#max</new_kernel> </function> - <function name="var_(,)" args="1" kind="time"> + <function name="var_(,)" args="1" kind="time" group="stat"> <prompt>input window time in secs</prompt> <info_brief>variance() function</info_brief> <new_kernel>#var</new_kernel> </function> - <function name="skew_(,)" args="1" kind="time"> + <function name="skew_(,)" args="1" kind="time" group="stat"> <prompt>input window time in secs</prompt> <info_brief>skewness() function</info_brief> <new_kernel>#skew</new_kernel> </function> - <function name="mean_sm_(,)" args="1" kind="sliding"> + <function name="mean_sm_(,)" args="1" kind="sliding" group="stat"> <prompt>input averaging time in secs</prompt> <info_brief>average</info_brief> <new_kernel>#sliding_average</new_kernel> </function> - <function name="rms_sm_(,)" args="1" kind="sliding"> + <function name="rms_sm_(,)" args="1" kind="sliding" group="stat"> <prompt>input averaging time in secs</prompt> <info_brief>root mean square</info_brief> <new_kernel>#rms_sm</new_kernel> </function> - <function name="min_sm_(,)" args="1" kind="sliding"> + <function name="min_sm_(,)" args="1" kind="sliding" group="stat"> <prompt>input window time in secs</prompt> <info_brief>min() function</info_brief> <new_kernel>#min_sm</new_kernel> </function> - <function name="max_sm_(,)" args="1" kind="sliding"> + <function name="max_sm_(,)" args="1" kind="sliding" group="stat"> <prompt>input window time in secs</prompt> <info_brief>max() function</info_brief> <new_kernel>#max_sm</new_kernel> </function> - <function name="var_sm_(,)" args="1" kind="sliding"> + <function name="var_sm_(,)" args="1" kind="sliding" group="stat"> <prompt>input window time in secs</prompt> <info_brief>variance() function</info_brief> <new_kernel>#var_sm</new_kernel> </function> - <function name="skew_sm_(,)" args="1" kind="sliding"> + <function name="skew_sm_(,)" args="1" kind="sliding" group="stat"> <prompt>input window time in secs</prompt> <info_brief>skewness() function</info_brief> <new_kernel>#skew_sm</new_kernel> </function> - <function name="smooth_(,)" args="1" kind="sliding"> + <function name="smooth_(,)" args="1" kind="sliding" group="stat"> <prompt>input averaging time in secs</prompt> <info_brief>smooths with a boxcar average</info_brief> <new_kernel>#boxcar</new_kernel> @@ -74,29 +74,29 @@ <prompt>input number of points N to delay by</prompt> <info_brief>Delays array by N points back (N < 0) and forth (N > 0)</info_brief> </function>--> - <function name="shiftT_(,)" args="1" kind="amda"> + <function name="shiftT_(,)" args="1" kind="amda" group="space"> <prompt>input time interval T in secs to delay by</prompt> <info_brief>Shifts parameter by T secs back (T < 0) and forth (T > 0))</info_brief> <new_kernel>#timeShift</new_kernel> </function> - <function name="vAlfven(,)" args="2" kind="physics"> + <function name="vAlfven(,)" args="2" kind="physics" group="space"> <prompt_param>density[cm^⁻3], b_magnitude[nT]</prompt_param> <info_brief>Alfven velocity Valfven(density[cm^⁻3], b_magnitude[nT])</info_brief> <new_kernel>alfvenVelocity</new_kernel> </function> - <function name="perreault78(,,)" args="3" kind="physics"> + <function name="perreault78(,,)" args="3" kind="model" group="space"> <info_brief>Perreault and Akasofu 1978 model u = perreault78(E_mag, B_mag, theta_p)</info_brief> <new_kernel>perreault78</new_kernel> </function> - <function name="newell2007(,)" args="3" kind="physics"> + <function name="newell2007(,)" args="3" kind="model" group="space"> <info_brief>NEWELL et al 2007 solar wind-magnetosphere coupling function d_phi/d_t = newell2007(mu, B_mag, theta) </info_brief> <new_kernel>newell2007</new_kernel> </function> - <function name="fairfield70(,tilt_angle_60)" args="2" kind="physics"> + <function name="fairfield70(,tilt_angle_60)" args="2" kind="model" group="space"> <prompt_param>xyz_sm (Re), dipole tilt angle (deg)</prompt_param> <default_args>,tilt_angle_60</default_args> <info_brief>Distance (Re) from s/c location to Fairfield1970 model neutral sheet position.<br/> @@ -104,14 +104,14 @@ <new_kernel>fairfield70</new_kernel> </function> - <function name="fairfield80(,tilt_angle_60)" args="2" kind="physics"> + <function name="fairfield80(,tilt_angle_60)" args="2" kind="model" group="space"> <prompt_param>xyz_sm (Re), dipole tilt angle (deg)</prompt_param> <default_args>,tilt_angle_60</default_args> <info_brief>Distance (Re) from s/c location to Fairfield1980 model neutral sheet position.<br/> dZ = fairfield80(xyz_sm, tilt_angle),<br/> xyz_sm is the s/c SM coordinates (Re) and tilt angle is in degrees.<br/></info_brief> <new_kernel>fairfield80</new_kernel> </function> - <function name="lopez90(omni_kp,,,tilt_angle_60)" args="4" kind="physics"> + <function name="lopez90(omni_kp,,,tilt_angle_60)" args="4" kind="model" group="space"> <prompt_param>Kp, MLT (deg), R (Re), dipole tilt angle (deg)</prompt_param> <default_args>omni_kp,,,tilt_angle_60</default_args> <info_brief> @@ -127,108 +127,108 @@ <info_brief>frame transformation</info_brief> <new_kernel>#framesTransformation</new_kernel> </function>--> - <function name="angle(,)" args="2" kind="vectors"> + <function name="angle(,)" args="2" kind="vectors" group="math"> <info_brief>Angle between two vectors</info_brief> <new_kernel>angle</new_kernel> </function> - <function name="cross(,)" args="2" kind="vectors"> + <function name="cross(,)" args="2" kind="vectors" group="math"> <info_brief>Cross product</info_brief> <new_kernel>cross</new_kernel> </function> - <function name="dot(,)" args="2" kind="vectors"> + <function name="dot(,)" args="2" kind="vectors" group="math"> <info_brief>Dot product</info_brief> <new_kernel>dot</new_kernel> </function> - <function name="vector(,,)" args="3" kind="vectors"> + <function name="vector(,,)" args="3" kind="vectors" group="math"> <info_brief>Build vector from components</info_brief> <new_kernel>vector_</new_kernel> </function> - <function name="module()" kind="vectors"> + <function name="module()" kind="vectors" group="math"> <info_brief>Magnitude</info_brief> <new_kernel>magnitude</new_kernel> </function> - <function name="abs()" kind="math"> + <function name="abs()" kind="math" group="math"> <info_brief>Absolute value</info_brief> <new_kernel>abs</new_kernel> </function> - <function name="acos()" kind="math"> + <function name="acos()" kind="math" group="math"> <info_brief>Arc-cosine</info_brief> <new_kernel>acos</new_kernel> </function> - <function name="alog()" kind="math"> + <function name="alog()" kind="math" group="math"> <info_brief>Natural logarithm</info_brief> <new_kernel>log</new_kernel> </function> - <function name="alog10()" kind="math"> + <function name="alog10()" kind="math" group="math"> <info_brief>Logarithm to the base 10</info_brief> <new_kernel>log10</new_kernel> </function> - <function name="asin()" kind="math"> + <function name="asin()" kind="math" group="math"> <info_brief>Arc-sine</info_brief> <new_kernel>asin</new_kernel> </function> - <function name="atan()" kind="math"> + <function name="atan()" kind="math" group="math"> <info_brief>Arc-tangent</info_brief> <new_kernel>atan</new_kernel> </function> - <function name="atan2(,)" args="2" kind="math"> + <function name="atan2(,)" args="2" kind="math" group="math"> <info_brief>Arc-tangent</info_brief> <new_kernel>atan2</new_kernel> </function> - <function name="ceil()" kind="math"> + <function name="ceil()" kind="math" group="math"> <info_brief>Closest integer greater than or equal to its argument</info_brief> <new_kernel>Ceil</new_kernel> </function> - <function name="cos()" kind="math"> + <function name="cos()" kind="math" group="math"> <info_brief>cosine</info_brief> <new_kernel>cos</new_kernel> </function> - <function name="cosh()" kind="math"> + <function name="cosh()" kind="math" group="math"> <info_brief>Hyperbolic cosine</info_brief> <new_kernel>cosh</new_kernel> </function> - <function name="deriv_()" kind="math"> + <function name="deriv_()" kind="math" group="math"> <info_brief>deriv() function with possibly unequal point spacing</info_brief> <new_kernel>#deriv</new_kernel> </function> - <function name="exp()" kind="math"> + <function name="exp()" kind="math" group="math"> <info_brief>Natural exponential function</info_brief> <new_kernel>exp</new_kernel> </function> - <function name="fix()" kind="math"> + <function name="fix()" kind="math" group="math"> <info_brief>Integer</info_brief> <new_kernel>Fix</new_kernel> </function> - <function name="floor()" kind="math"> + <function name="floor()" kind="math" group="math"> <info_brief>Closest integer less than or equal to its argument</info_brief> <new_kernel>Floor</new_kernel> </function> - <function name="sign()" kind="math"> + <function name="sign()" kind="math" group="math"> <info_brief>Sign</info_brief> <new_kernel>Sign</new_kernel> </function> - <function name="sin()" kind="math"> + <function name="sin()" kind="math" group="math"> <info_brief>Sine</info_brief> <new_kernel>sin</new_kernel> </function> - <function name="sinh()" kind="math"> + <function name="sinh()" kind="math" group="math"> <info_brief>Hyperbolic sine</info_brief> <new_kernel>sinh</new_kernel> </function> - <function name="tan()" kind="math"> + <function name="tan()" kind="math" group="math"> <info_brief>Tangent</info_brief> <new_kernel>tan</new_kernel> </function> - <function name="tanh()" kind="math"> + <function name="tanh()" kind="math" group="math"> <info_brief>Hyperbolic tangent</info_brief> <new_kernel>tanh</new_kernel> </function> - <function name="sqrt()" kind="math"> + <function name="sqrt()" kind="math" group="math"> <info_brief>Square root</info_brief> <new_kernel>sqrt</new_kernel> </function> diff --git a/js/app/models/Function.js b/js/app/models/Function.js index 9de0131..74add0a 100644 --- a/js/app/models/Function.js +++ b/js/app/models/Function.js @@ -15,6 +15,7 @@ Ext.define('amdaModel.Function', { fields : [ {name: 'name', mapping: '@name', type:'string'}, {name: 'kind', mapping: '@kind', type: 'string', defaultValue: 'amda'}, + {name: 'group', mapping: '@group', type: 'string', defaultValue: 'space'}, {name: 'args', mapping: '@args', type: 'int', defaultValue: 1}, {name: 'argv', mapping: '@argv', type: 'string'}, {name: 'prompt', type: 'string', defaultValue: ''}, @@ -26,7 +27,8 @@ Ext.define('amdaModel.Function', { validations: [ {type: 'presence', field: 'name'}, {type: 'presence', field: 'kind'}, - {type: 'inclusion', field: 'kind', list: ['math','amda','time','sliding']} + {type: 'presence', field: 'group'}/*, + {type: 'inclusion', field: 'kind', list: ['amda','time']}*/ ], proxy: { diff --git a/js/app/views/CalculatorUI.js b/js/app/views/CalculatorUI.js index f1d18d0..2cb1c01 100644 --- a/js/app/views/CalculatorUI.js +++ b/js/app/views/CalculatorUI.js @@ -107,11 +107,12 @@ Ext.define('amdaUI.CalculatorUI', { scope: this, callback: function (records, operation, success) { - this.createAllFunctionBtns(); + this.createAllBtns(); } }); } else - this.createAllFunctionBtns(); + this.createAllBtns(); + }, @@ -152,12 +153,27 @@ Ext.define('amdaUI.CalculatorUI', { activeTab: 0, id: 'calc_tab_const_id' }, { - title: 'Functions', xtype: 'tabpanel', //iconCls: 'tabs', + title: 'Math', xtype: 'tabpanel', //iconCls: 'tabs', + enableTabScroll: true, tabPosition: 'bottom', + defaults: {frame: true, border: false, plain: true, layout: 'column', autoScroll: true}, + activeTab: 0, + id: 'calc_tab_math_id' + }, + { + title: 'Statistics', xtype: 'tabpanel', //iconCls: 'tabs', + enableTabScroll: true, tabPosition: 'bottom', + defaults: {frame: true, border: false, plain: true, layout: 'column', autoScroll: true}, + activeTab: 0, + id: 'calc_tab_stat_id' + }, + { + title: 'Space', xtype: 'tabpanel', //iconCls: 'tabs', enableTabScroll: true, tabPosition: 'bottom', defaults: {frame: true, border: false, plain: true, layout: 'column', autoScroll: true}, activeTab: 0, id: 'calc_tab_func_id' - }] + } + ] }; }, @@ -180,7 +196,6 @@ Ext.define('amdaUI.CalculatorUI', { }, this); } else { if ( currentBtn.initialConfig.prompt_param != "" ) { - console.log(currentBtn.initialConfig); Ext.Msg.alert('Input Parameters', currentBtn.initialConfig.prompt_param); } this.processFormula(sel, currentBtn, params, ")"); @@ -361,16 +376,28 @@ Ext.define('amdaUI.CalculatorUI', { return btns; }, - createAllFunctionBtns: function () - { - this.createFunctionBtns('MathFunctions', 'Simple Maths'); - this.createFunctionBtns('VectorFunctions', 'Vector Functions'); - this.createFunctionBtns('TimeFunctions', 'Statistics'); - this.createFunctionBtns('FunctionsSliding', 'Statistics/Sliding'); - this.createFunctionBtns('PhysicsFunctions', 'Physics'); - this.createFunctionBtns('AmdaFunctions', 'Special'); + createAllBtns: function () + { + // group math + amdaUI.CalculatorUI.functionStore.filter('group', 'math'); + this.createFunctionBtns('MathFunctions', 'Simple Maths','#calc_tab_math_id'); + this.createFunctionBtns('VectorFunctions', 'Vector Functions', '#calc_tab_math_id'); + amdaUI.CalculatorUI.functionStore.clearFilter(); + + // group space + amdaUI.CalculatorUI.functionStore.filter('group', 'space'); + this.createFunctionBtns('PhysicsFunctions', 'Derived', '#calc_tab_func_id'); + this.createFunctionBtns('ModelFunctions', 'Models', '#calc_tab_func_id'); + this.createFunctionBtns('AmdaFunctions', 'TimeShift', '#calc_tab_func_id'); + amdaUI.CalculatorUI.functionStore.clearFilter(); + + // group stat + amdaUI.CalculatorUI.functionStore.filter('group', 'stat'); + this.createFunctionBtns('TimeFunctions', 'Statistics', '#calc_tab_stat_id'); + this.createFunctionBtns('FunctionsSliding', 'Statistics/Sliding','#calc_tab_stat_id'); + amdaUI.CalculatorUI.functionStore.clearFilter(); }, - + createAllConstantBtns: function () { this.createConstantBtns('Space', 'Planets Constants'); @@ -431,9 +458,9 @@ Ext.define('amdaUI.CalculatorUI', { amdaUI.CalculatorUI.constantStore.clearFilter(); }, - createFunctionBtns: function (item, tabTitle) + createFunctionBtns: function (item, tabTitle, tabID) { - var funcTab = this.win.query('#calc_tab_func_id'); + var funcTab = this.win.query(tabID); if (funcTab.length < 1) return; @@ -449,16 +476,20 @@ Ext.define('amdaUI.CalculatorUI', { amdaUI.CalculatorUI.functionStore.filter('kind', 'amda'); break; case 'TimeFunctions' : - amdaUI.CalculatorUI.functionStore.filter('kind', 'time'); + amdaUI.CalculatorUI.functionStore.filter('kind', 'time'); break; case 'FunctionsSliding' : - amdaUI.CalculatorUI.functionStore.filter('kind', 'sliding'); + amdaUI.CalculatorUI.functionStore.filter('kind', 'sliding'); break; case 'VectorFunctions' : - amdaUI.CalculatorUI.functionStore.filter('kind', 'vector'); + amdaUI.CalculatorUI.functionStore.filter('kind', 'vector'); break; + case 'ModelFunctions' : + amdaUI.CalculatorUI.functionStore.filter('kind', 'model'); + width = .45; + break; case 'PhysicsFunctions' : - amdaUI.CalculatorUI.functionStore.filter('kind', 'physics'); + amdaUI.CalculatorUI.functionStore.filter('kind', 'physics'); width = .25; break; } @@ -469,6 +500,7 @@ Ext.define('amdaUI.CalculatorUI', { defaults: {xtype: 'button', columnWidth: width} }); + amdaUI.CalculatorUI.functionStore.each(function (f) { crtTab.add( { @@ -494,8 +526,8 @@ Ext.define('amdaUI.CalculatorUI', { params = b.initialConfig.defaultArgs.split(','); } // Formula Parsing for arguments - //var params = this.parseArgsInFormula(selectedText, 0); -// var params = selectedText ? selectedText.split(',') : []; +// var params = this.parseArgsInFormula(selectedText, 0); +// var params = selectedText ? selectedText.split(',') : []; if (params === -1) { Ext.Msg.alert("Invalid Selection", "Action aborted"); @@ -533,8 +565,8 @@ Ext.define('amdaUI.CalculatorUI', { }, this ); - //clear filter - amdaUI.CalculatorUI.functionStore.clearFilter(); + //clear filter + amdaUI.CalculatorUI.functionStore.clearFilter(); }, getItems: function (item) -- libgit2 0.21.2