Merge "Support new package file management scheme - lots of changes" into v2.0
diff --git a/skyquake/plugins/composer/src/src/libraries/model/DescriptorModelMetaFactory.js b/skyquake/plugins/composer/src/src/libraries/model/DescriptorModelMetaFactory.js
index 69098ec..1ba8912 100644
--- a/skyquake/plugins/composer/src/src/libraries/model/DescriptorModelMetaFactory.js
+++ b/skyquake/plugins/composer/src/src/libraries/model/DescriptorModelMetaFactory.js
@@ -102,19 +102,15 @@
 function serialize_leaf_list(data) {
 	data = data[this.name];
 	if (data) {
-		commaSeparatedValues = data.reduce((d, v) => {
-			let leaf = Serializer.leaf.call(this, d);
-			let value = leaf & leaf[this.name];
-			if (value && value.length) {
-				if (v.length) {
-					v += ', ';
-				}
-				v += value;
+		data = data.reduce((result, value) => {
+			if (value !== '' && value !== null && value !== undefined && typeof value !== 'object') {
+				result.push(value);
 			}
-		}, "");
-		if (commaSeparatedValues.length) {
+			return result;
+		}, []);
+		if (data.length){
 			let obj = {};
-			obj[this.name] = commaSeparatedValues;
+			obj[this.name] = data;
 			return obj;
 		}
 	}
diff --git a/skyquake/plugins/launchpad/src/instantiate/instantiateInputParams.jsx b/skyquake/plugins/launchpad/src/instantiate/instantiateInputParams.jsx
index d1e295c..6273d8c 100644
--- a/skyquake/plugins/launchpad/src/instantiate/instantiateInputParams.jsx
+++ b/skyquake/plugins/launchpad/src/instantiate/instantiateInputParams.jsx
@@ -105,12 +105,13 @@
   }
   inputParametersHTML = (props) => {
     let inputParameters = props.inputParameters;
+    const handleChange = (i, event) => props.updateInputParam(i, event.target.value);
     return inputParameters && inputParameters.map(function(input, i) {
         return (
                 <div className="configure-nsd_section" key={i}>
                   <h3 className="launchpadCard_title">Input Parameters</h3>
                   <div className="inputControls">
-                      <TextInput label={ input.label || input.xpath } type="text" onChange={props.updateInputParam.bind(self, i)} />
+                      <TextInput label={ input.label || input.xpath } type="text" onChange={handleChange.bind(this, i)} />
                   </div>
                 </div>
         )
diff --git a/skyquake/plugins/launchpad/src/instantiate/instantiateStore.js b/skyquake/plugins/launchpad/src/instantiate/instantiateStore.js
index 3ec2a80..0e91ee3 100644
--- a/skyquake/plugins/launchpad/src/instantiate/instantiateStore.js
+++ b/skyquake/plugins/launchpad/src/instantiate/instantiateStore.js
@@ -189,10 +189,10 @@
         });
         return window.location.hash = 'launchpad/' + tokenizedHash[2];
     }
-    launchNSRError(error) {
+    launchNSRError(data) {
         var msg = 'Something went wrong while trying to instantiate. Check the error logs for more information';
-        if(error) {
-            msg = error;
+        if (data.error) {
+            msg = data.error;
         }
         Alt.actions.global.showNotification.defer(msg);
         Alt.actions.global.hideScreenLoader.defer();