New requirement in VIM account creation

	- Added credentials field to uplaod files
	- Will convert the file content to base64 & send it in config
	  parameter with key credentials_base64

Change-Id: Ib891515377ea08b19de25d8e542113e3ded73724
Signed-off-by: SANDHYA.JS <sandhya.j@tataelxsi.co.in>
diff --git a/src/app/vim-accounts/new-vimaccount/NewVimaccountComponent.html b/src/app/vim-accounts/new-vimaccount/NewVimaccountComponent.html
index 7f719a2..f41a0df 100644
--- a/src/app/vim-accounts/new-vimaccount/NewVimaccountComponent.html
+++ b/src/app/vim-accounts/new-vimaccount/NewVimaccountComponent.html
@@ -134,6 +134,16 @@
                 </div>
                 <small class="text-info">{{'UPLOADCONFIGLABEL' | translate}}</small>
             </div>
+            <div class="col-sm-3">
+                <label>{{'PAGE.K8S.CREDENTIALS' | translate}}</label>
+            </div>
+            <div class="col-sm-3 form-group">
+                <div class="custom-file">
+                    <input [disabled]="!selectedVimType" type="file" #fileInputcreds class="fileupload custom-file-input"
+                        (change)="onFileSelected($event)" id="customcredsFile">
+                </div>
+                <small class="text-info">{{'UPLOADCREDSLABEL' | translate}}</small>
+            </div>
         </div>
         <div class="row" [hidden]="!selectedVimType">
             <div class="d-grid col-12">
diff --git a/src/app/vim-accounts/new-vimaccount/NewVimaccountComponent.ts b/src/app/vim-accounts/new-vimaccount/NewVimaccountComponent.ts
index 6619bfd..4697326 100644
--- a/src/app/vim-accounts/new-vimaccount/NewVimaccountComponent.ts
+++ b/src/app/vim-accounts/new-vimaccount/NewVimaccountComponent.ts
@@ -128,6 +128,12 @@
   /** Element ref for fileInput @public */
   @ViewChild('fileInputLabel', { static: true }) public fileInputLabel: ElementRef;
 
+  /** Element ref for filecredsInput @public */
+  @ViewChild('fileInputcreds', { static: true }) public fileInputcreds: ElementRef;
+
+  /** Element ref for filecredsInput @public */
+  @ViewChild('fileInputcredsLabel', { static: true }) public fileInputcredsLabel: ElementRef;
+
   /** Contains all methods related to shared @private */
   public sharedService: SharedService;
 
@@ -157,6 +163,9 @@
   /** Contains longitude value @public  */
   public longitude: string;
 
+  /** Contains credentials value in base64 @public  */
+  public credentialsAs64: string;
+
   /** Contains location value @public */
   public locationName: string;
 
@@ -330,6 +339,10 @@
           this.vimNewAccountForm.value.latitude;
       }
 
+      if (!isNullOrUndefined(this.credentialsAs64)) {
+        this.vimNewAccountForm.value.config.credentials_base64 = this.credentialsAs64;
+      }
+
       if (isNullOrUndefined(this.vimNewAccountForm.value.config.location)) {
         delete this.vimNewAccountForm.value.config.location;
       }
@@ -441,6 +454,22 @@
     this.fileInput.nativeElement.value = null;
   }
 
+  /** Drag and drop feature and fetchind the details of credential files  @private */
+  public onFileSelected(event: Event): void {
+    const input = event.target as HTMLInputElement;
+    if (input && input.files && input.files.length > 0) {
+      const file: File = input.files[0];
+      const reader: FileReader = new FileReader();
+      reader.onload = (e: ProgressEvent<FileReader>) => {
+        const tomlContent = e.target?.result as string;
+        this.credentialsAs64 = btoa(tomlContent);
+      };
+      reader.readAsText(file);
+    }
+    this.fileInputcredsLabel.nativeElement.innerText = input.files[0].name;
+    this.fileInputcreds.nativeElement.value = null;
+  }
+
   /** Check data is empty or not to load config @public */
   public checkData(): void {
     if (this.data !== '' && this.data.length > this.configLength) {
diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json
index 5827990..bc80975 100644
--- a/src/assets/i18n/de.json
+++ b/src/assets/i18n/de.json
@@ -154,6 +154,7 @@
     "NODATE": "Keine Datumsinformationen gefunden",
     "TYPEINFO": "Um einen neuen TYPW hinzuzufügen, geben Sie oben die Eingabe ein",
     "UPLOADCONFIGLABEL": "Bitte laden Sie eine Datei im .yaml- oder .yml-Format hoch",
+    "UPLOADCREDSLABEL": "Bitte laden Sie bei Bedarf die Anmeldedatendatei hoch",
     "CONFIGFILEUPLOADLABEL": "Oder geben Sie Konfigurationsparameter ein",
     "NEWVERSIONTAG": "Hier ist die neue Version {{appVersion}} von OSM!",
     "SCALEOUT": "Scale Out",
diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json
index 6d496de..e9ceb32 100644
--- a/src/assets/i18n/en.json
+++ b/src/assets/i18n/en.json
@@ -154,6 +154,7 @@
     "NODATE": "No date information found",
     "TYPEINFO": "To add a new TYPE, Please enter input above",
     "UPLOADCONFIGLABEL": "Please upload file with .yaml or .yml format",
+    "UPLOADCREDSLABEL": "Please upload credentials file if required",
     "CONFIGFILEUPLOADLABEL": "Or enter config parameters",
     "NEWVERSIONTAG": "Here is the new version {{appVersion}} of OSM!",
     "SCALEOUT": "Scale Out",
diff --git a/src/assets/i18n/es.json b/src/assets/i18n/es.json
index db9c80a..fe5e576 100644
--- a/src/assets/i18n/es.json
+++ b/src/assets/i18n/es.json
@@ -154,6 +154,7 @@
     "NODATE": "No se encontró información de fecha",
     "TYPEINFO": "Para agregar un nuevo TIPO, ingrese la entrada de arriba",
     "UPLOADCONFIGLABEL": "Cargue el archivo con formato .yaml o .yml",
+    "UPLOADCREDSLABEL": "Cargue el archivo de credenciales si es necesario",
     "CONFIGFILEUPLOADLABEL": "O ingrese los parámetros de configuración",
     "NEWVERSIONTAG": "¡Aquí está la nueva versión {{appVersion}} de OSM!",
     "SCALEOUT": "Desescalar",
diff --git a/src/assets/i18n/pt.json b/src/assets/i18n/pt.json
index 5f28681..cc68a22 100644
--- a/src/assets/i18n/pt.json
+++ b/src/assets/i18n/pt.json
@@ -154,6 +154,7 @@
     "NODATE": "Nenhuma informação de data encontrada",
     "TYPEINFO": "Para adicionar um novo TIPO, insira a entrada acima",
     "UPLOADCONFIGLABEL": "Faça o upload do arquivo no formato .yaml ou .yml",
+    "UPLOADCREDSLABEL": "Faça upload do arquivo de credenciais, se necessário",
     "CONFIGFILEUPLOADLABEL": "Ou insira os parâmetros de configuração",
     "NEWVERSIONTAG": "Aqui está a nova versão {{appVersion}} do OSM!",
     "SCALEOUT": "Dimensionar",