NG-UI BUG 1118 YAML not supported in config text-area when launching NS

 * Fixed the textarea that can accept the yaml/yml/json values.

Change-Id: I019d4fec3ea2584b72f5d8a539226bc0abff4cf7
Signed-off-by: Barath Kumar R <barath.r@tataelxsi.co.in>
diff --git a/src/app/packages/instantiate-net-slice-template/InstantiateNetSliceTemplateComponent.ts b/src/app/packages/instantiate-net-slice-template/InstantiateNetSliceTemplateComponent.ts
index ed5e414..330edf8 100644
--- a/src/app/packages/instantiate-net-slice-template/InstantiateNetSliceTemplateComponent.ts
+++ b/src/app/packages/instantiate-net-slice-template/InstantiateNetSliceTemplateComponent.ts
@@ -207,8 +207,11 @@
         });
         delete this.netSliceInstantiateForm.value.config;
       } else {
-        this.notifierService.notify('error', this.translateService.instant('INVALIDCONFIG'));
-        return;
+        const getConfigJson: string = jsyaml.load(this.netSliceInstantiateForm.value.config, { json: true });
+        Object.keys(getConfigJson).forEach((item: string) => {
+          this.netSliceInstantiateForm.value[item] = getConfigJson[item];
+        });
+        delete this.netSliceInstantiateForm.value.config;
       }
     }
     this.isLoadingResults = true;
@@ -259,24 +262,40 @@
   /** Config file process @private */
   public configFile(files: FileList): void {
     if (files && files.length === 1) {
-      this.sharedService.getFileString(files, 'yaml').then((fileContent: string): void => {
-        const getConfigJson: string = jsyaml.load(fileContent, { json: true });
-        // tslint:disable-next-line: no-backbone-get-set-outside-model
-        this.netSliceInstantiateForm.get('config').setValue(JSON.stringify(getConfigJson));
-      }).catch((err: string): void => {
-        if (err === 'typeError') {
-          this.notifierService.notify('error', this.translateService.instant('YAMLFILETYPEERRROR'));
-        } else {
-          this.notifierService.notify('error', this.translateService.instant('ERROR'));
-        }
-        this.fileInputConfigLabel.nativeElement.innerText = this.translateService.instant('CHOOSEFILE');
-        this.fileInputConfig.nativeElement.value = null;
-      });
+      const fileFormat: string = this.sharedService.fetchFileExtension(files).toLocaleLowerCase();
+      if (fileFormat === 'yaml' || fileFormat === 'yml') {
+        this.sharedService.getFileString(files, 'yaml').then((fileContent: string): void => {
+          const getConfigJson: string = jsyaml.load(fileContent, { json: true });
+          // tslint:disable-next-line: no-backbone-get-set-outside-model
+          this.netSliceInstantiateForm.get('config').setValue(JSON.stringify(getConfigJson));
+        }).catch((err: string): void => {
+          if (err === 'typeError') {
+            this.notifierService.notify('error', this.translateService.instant('YAMLFILETYPEERRROR'));
+          } else {
+            this.notifierService.notify('error', this.translateService.instant('ERROR'));
+          }
+          this.fileInputConfigLabel.nativeElement.innerText = this.translateService.instant('CHOOSEFILE');
+          this.fileInputConfig.nativeElement.value = null;
+        });
+      } else if (fileFormat === 'json') {
+        this.sharedService.getFileString(files, 'json').then((fileContent: string): void => {
+          const getConfigJson: string = jsyaml.load(fileContent, { json: true });
+          // tslint:disable-next-line: no-backbone-get-set-outside-model
+          this.netSliceInstantiateForm.get('config').setValue(JSON.stringify(getConfigJson));
+        }).catch((err: string): void => {
+          if (err === 'typeError') {
+            this.notifierService.notify('error', this.translateService.instant('JSONFILETYPEERRROR'));
+          } else {
+            this.notifierService.notify('error', this.translateService.instant('ERROR'));
+          }
+          this.fileInputConfigLabel.nativeElement.innerText = this.translateService.instant('CHOOSEFILE');
+          this.fileInputConfig.nativeElement.value = null;
+        });
+      }
     } else if (files && files.length > 1) {
       this.notifierService.notify('error', this.translateService.instant('DROPFILESVALIDATION'));
     }
     this.fileInputConfigLabel.nativeElement.innerText = files[0].name;
     this.fileInputConfig.nativeElement.value = null;
   }
-
 }
diff --git a/src/app/packages/instantiate-ns/InstantiateNsComponent.ts b/src/app/packages/instantiate-ns/InstantiateNsComponent.ts
index 515a24b..74569f1 100644
--- a/src/app/packages/instantiate-ns/InstantiateNsComponent.ts
+++ b/src/app/packages/instantiate-ns/InstantiateNsComponent.ts
@@ -197,8 +197,11 @@
         });
         delete this.instantiateForm.value.config;
       } else {
-        this.notifierService.notify('error', this.translateService.instant('INVALIDCONFIG'));
-        return;
+        const getConfigJson: string = jsyaml.load(this.instantiateForm.value.config, { json: true });
+        Object.keys(getConfigJson).forEach((item: string) => {
+          this.instantiateForm.value[item] = getConfigJson[item];
+        });
+        delete this.instantiateForm.value.config;
       }
     }
     const apiURLHeader: APIURLHEADER = {
@@ -246,19 +249,35 @@
   /** Config file process @private */
   public configFile(files: FileList): void {
     if (files && files.length === 1) {
-      this.sharedService.getFileString(files, 'yaml').then((fileContent: string): void => {
-        const getConfigJson: string = jsyaml.load(fileContent, { json: true });
-        // tslint:disable-next-line: no-backbone-get-set-outside-model
-        this.instantiateForm.get('config').setValue(JSON.stringify(getConfigJson));
-      }).catch((err: string): void => {
-        if (err === 'typeError') {
-          this.notifierService.notify('error', this.translateService.instant('YAMLFILETYPEERRROR'));
-        } else {
-          this.notifierService.notify('error', this.translateService.instant('ERROR'));
-        }
-        this.fileInputConfigLabel.nativeElement.innerText = this.translateService.instant('CHOOSEFILE');
-        this.fileInputConfig.nativeElement.value = null;
-      });
+      const fileFormat: string = this.sharedService.fetchFileExtension(files).toLocaleLowerCase();
+      if (fileFormat === 'yaml' || fileFormat === 'yml') {
+        this.sharedService.getFileString(files, 'yaml').then((fileContent: string): void => {
+          // tslint:disable-next-line: no-backbone-get-set-outside-model
+          this.instantiateForm.get('config').setValue(fileContent);
+        }).catch((err: string): void => {
+          if (err === 'typeError') {
+            this.notifierService.notify('error', this.translateService.instant('YAMLFILETYPEERRROR'));
+          } else {
+            this.notifierService.notify('error', this.translateService.instant('ERROR'));
+          }
+          this.fileInputConfigLabel.nativeElement.innerText = this.translateService.instant('CHOOSEFILE');
+          this.fileInputConfig.nativeElement.value = null;
+        });
+      } else if (fileFormat === 'json') {
+        this.sharedService.getFileString(files, 'json').then((fileContent: string): void => {
+          const getConfigJson: string = jsyaml.load(fileContent, { json: true });
+          // tslint:disable-next-line: no-backbone-get-set-outside-model
+          this.instantiateForm.get('config').setValue(JSON.stringify(getConfigJson));
+        }).catch((err: string): void => {
+          if (err === 'typeError') {
+            this.notifierService.notify('error', this.translateService.instant('JSONFILETYPEERRROR'));
+          } else {
+            this.notifierService.notify('error', this.translateService.instant('ERROR'));
+          }
+          this.fileInputConfigLabel.nativeElement.innerText = this.translateService.instant('CHOOSEFILE');
+          this.fileInputConfig.nativeElement.value = null;
+        });
+      }
     } else if (files && files.length > 1) {
       this.notifierService.notify('error', this.translateService.instant('DROPFILESVALIDATION'));
     }