From f8d3725988f049ef4c372ebdb6b82c6bd10e73e4 Mon Sep 17 00:00:00 2001
From: Benjamin Renard <benjamin.renard@akka.eu>
Date: Thu, 3 Dec 2020 11:07:32 +0100
Subject: [PATCH] Give the possibility to define a default value for promted args (used for default frames selection #5110)

---
 generic_data/Functions/functions.xml |  4 ++--
 js/app/models/Function.js            |  1 +
 js/app/views/CalculatorUI.js         | 50 ++++++++++++++++++++++++++++++++++++--------------
 3 files changed, 39 insertions(+), 16 deletions(-)

diff --git a/generic_data/Functions/functions.xml b/generic_data/Functions/functions.xml
index 52c737a..da0dd2a 100644
--- a/generic_data/Functions/functions.xml
+++ b/generic_data/Functions/functions.xml
@@ -154,8 +154,8 @@
     </function>
     <function name="framesTransformation(,,,)" args="1" kind="frames" group="space">
 	<prompts>
-        	<prompt type="list" subtype="frames">Input frame:</prompt>
-        	<prompt type="list" subtype="frames">Output frame:</prompt>
+        	<prompt type="list" subtype="frames" default="GSM">Input frame:</prompt>
+        	<prompt type="list" subtype="frames" default="GSE">Output frame:</prompt>
                 <prompt type="boolean">The vector represent a position in space?</prompt>
 	</prompts>
         <info_brief>Frames transformation</info_brief>
diff --git a/js/app/models/Function.js b/js/app/models/Function.js
index 0202408..42a2b34 100644
--- a/js/app/models/Function.js
+++ b/js/app/models/Function.js
@@ -12,6 +12,7 @@ Ext.define('amdaModel.PromptArg', {
 	fields : [
 		{name: 'type', mapping: '@type', type:'string', defaultValue: 'float'},
 		{name: 'subtype', mapping: '@subtype', type:'string', defaultValue: null},
+                {name: 'default', mapping: '@default', type:'string', defaultValue: ''},
 		{name: 'prompt', mapping: '/', type: 'string', defaultValue: ''}
 	]
 });
diff --git a/js/app/views/CalculatorUI.js b/js/app/views/CalculatorUI.js
index 8be348d..8239f85 100644
--- a/js/app/views/CalculatorUI.js
+++ b/js/app/views/CalculatorUI.js
@@ -37,16 +37,16 @@ Ext.define('amdaUI.PromptArgsWin', {
         prompts.each(function(promptObj, index) {
             switch (promptObj.get('type')) {
                 case 'float':
-                    me.addFloatField(promptObj.get('prompt'), index);
+                    me.addFloatField(promptObj.get('prompt'), index, promptObj.get('default'));
                     break;
                 case 'list':
-                    me.addComboField(promptObj.get('prompt'), promptObj.get('subtype'), index);
+                    me.addComboField(promptObj.get('prompt'), promptObj.get('subtype'), index, promptObj.get('default'));
                     break;
                 case 'boolean':
-                    me.addBooleanField(promptObj.get('prompt'), index);
+                    me.addBooleanField(promptObj.get('prompt'), index, promptObj.get('default'));
                     break;
                 case 'string':
-                    me.addStringField(promptObj.get('prompt'), index);
+                    me.addStringField(promptObj.get('prompt'), index, promptObj.get('default'));
                     break;
                 default:
                     console.log('Unknown arg type: ' + promptObj.get('type'));
@@ -56,17 +56,26 @@ Ext.define('amdaUI.PromptArgsWin', {
         this.show();
     },
 
-    addFloatField: function(label, index) {
-        this.fieldsForm.add({
+    addFloatField: function(label, index, defaultVal) {
+        var field = this.fieldsForm.add({
             xtype: 'numberfield',
             name: 'arg' + index,
             fieldLabel: label,
             decimalPrecision : 20,
-            allowBlank: false
+            allowBlank: false,
+            hideTrigger: true,
+            keyNavEnabled: false,
+            mouseWheelEnabled: false
         });
+	if (defaultVal != "") {
+		defaultVal = parseFloat(defaultVal);
+		if (!isNaN(defaultVal)) {
+			field.setValue(defaultVal);
+		}
+	}
     },
 
-    addComboField: function(label, listtype, index) {
+    addComboField: function(label, listtype, index, defaultVal) {
         var argslistStore = amdaUI.CalculatorUI.argslistStore;
         if (!argslistStore) {
             return;
@@ -93,7 +102,7 @@ Ext.define('amdaUI.PromptArgsWin', {
             data : listData
         });
 
-        this.fieldsForm.add({
+        var field = this.fieldsForm.add({
              xtype: 'combo',
              name: 'arg' + index,
              fieldLabel: label,
@@ -103,24 +112,36 @@ Ext.define('amdaUI.PromptArgsWin', {
              valueField: 'key',
              editable: false
         });
+
+        if (defaultVal != "") {
+            field.setValue(defaultVal);
+        }
     },
 
-    addBooleanField: function(label, index) {
-        this.fieldsForm.add({
+    addBooleanField: function(label, index, defaultVal) {
+        var field = this.fieldsForm.add({
             xtype: 'checkbox',
             name: 'arg' + index,
             boxLabel: label,
             inputValue: '1',
             uncheckedValue: '0'
         });
+
+        if (defaultVal != "") {
+            field.setValue(defaultVal != '0');
+        }
     },
 
-    addStringField: function(label, index) {
-        this.fieldsForm.add({
+    addStringField: function(label, index, defaultVal) {
+        var field = this.fieldsForm.add({
             xtype: 'textfield',
             name: 'arg' + index,
             fieldLabel: label
         });
+
+        if (defaultVal != "") {
+            field.setValue(defaultVal);
+        }
     },
 
     init : function(config) {
@@ -128,7 +149,8 @@ Ext.define('amdaUI.PromptArgsWin', {
             layout: {
                 type: 'vbox',
                 pack: 'start',
-                align: 'stretch'
+                align: 'stretch',
+                defaultMargins: {top: 5, right: 5, bottom: 0, left: 5}
             }
         });
 
--
libgit2 0.21.2