Fixed 'Unknown sdkid' error in dashboard 97/16897/1
authorSebastien Douheret <sebastien.douheret@iot.bzh>
Wed, 3 Oct 2018 09:46:00 +0000 (11:46 +0200)
committerSebastien Douheret <sebastien.douheret@iot.bzh>
Wed, 3 Oct 2018 09:53:51 +0000 (11:53 +0200)
Steps to reproduce problem:
 - open XDS dashboard,
 - display SDKs page list (click on SDKs in the left panel)
 - display Build page (click on Build in the left panel)
 - keep selected Project and SDK and just click on Build button
 - error 'Unknown sdkid' must be displayed

Problem partially comes from the fact that default/current sdk in
sdk.service is the first sdk and not the first Installed sdk.

Change-Id: I21b9310e8ad67ff71afb5b704b39f5f98bc8707b
Signed-off-by: Sebastien Douheret <sebastien.douheret@iot.bzh>
webapp/src/app/@core-xds/services/sdk.service.ts
webapp/src/app/pages/build/settings/sdk-select-dropdown.component.ts

index f854744..f7e8c2f 100644 (file)
@@ -103,7 +103,8 @@ export class SdkService {
 
         // TODO: get previous val from xds-config service / cookie
         if (this._sdksList.length > 0) {
-          this.current = this._sdksList[0];
+          const installedSdks = this._sdksList.filter(sd => sd.status === StatusType.INSTALLED);
+          this.current = installedSdks.length > 0 ? installedSdks[0] : this._sdksList[0];
           this.curSdkSubject.next(this.current);
         }
 
index a9eafe7..64de039 100644 (file)
@@ -25,19 +25,15 @@ import { ISdk, SdkService, StatusType } from '../../../@core-xds/services/sdk.se
   template: `
       <div class="form-group">
       <label>SDK</label>
-      <select class="form-control">
-        <option *ngFor="let sdk of sdks" (click)="select(sdk)">{{sdk.name}}</option>
+      <select class="form-control" [(ngModel)]="curSdk" (click)="select()">
+        <option *ngFor="let sdk of sdks" [ngValue]="sdk">{{sdk.name}}</option>
       </select>
     </div>
     `,
 })
 export class SdkSelectDropdownComponent implements OnInit {
 
-  // FIXME investigate to understand why not working with sdks as input
-  // <xds-sdk-select-dropdown [sdks]="(sdks$ | async)"></xds-sdk-select-dropdown>
-  // @Input() sdks: ISdk[];
   sdks: ISdk[];
-
   curSdk: ISdk;
 
   constructor(private sdkSvr: SdkService) { }
@@ -50,13 +46,16 @@ export class SdkSelectDropdownComponent implements OnInit {
         this.sdks = s.filter(ss => ss.status === StatusType.INSTALLED);
         if (this.curSdk === null || s.indexOf(this.curSdk) === -1) {
           this.sdkSvr.setCurrent(this.curSdk = this.sdks.length ? this.sdks[0] : null);
+          this.curSdk = this.sdkSvr.getCurrent();
         }
       }
     });
   }
 
   select(s) {
-    this.sdkSvr.setCurrent(this.curSdk = s);
+    if (this.curSdk) {
+      this.sdkSvr.setCurrent(this.curSdk);
+    }
   }
 }