From 344c89459f597cfd69d83eb3d3963f63955cdec5 Mon Sep 17 00:00:00 2001
From: xgui3783 <xgui3783@gmail.com>
Date: Thu, 13 Aug 2020 14:06:14 +0200
Subject: [PATCH] bugfix: pmap for new KgDsPrvw API (#628)

---
 src/glue.spec.ts                                       |  6 ++----
 src/glue.ts                                            | 10 +++++-----
 src/services/state/uiState.store.helper.ts             |  1 +
 src/ui/databrowserModule/constants.ts                  |  2 +-
 src/ui/databrowserModule/preview/preview.base.ts       |  9 ++++++---
 .../preview/previewDatasetFile.directive.ts            |  9 ++++++++-
 .../regionMenu/regionMenu.template.html                |  1 +
 7 files changed, 24 insertions(+), 14 deletions(-)

diff --git a/src/glue.spec.ts b/src/glue.spec.ts
index 8db3fe572..f1fc2ade8 100644
--- a/src/glue.spec.ts
+++ b/src/glue.spec.ts
@@ -253,7 +253,7 @@ describe('> glue.ts', () => {
         // debounce at 100ms
         tick(200)
 
-        const req = ctrl.expectOne(`${DS_PREVIEW_URL}/${datasetId}/${encodeURIComponent(filename)}`)
+        const req = ctrl.expectOne(`${DS_PREVIEW_URL}/${encodeURIComponent('minds/core/dataset/v1.0.0')}/${datasetId}/${encodeURIComponent(filename)}`)
         req.flush(nifti)
       }))
 
@@ -270,8 +270,6 @@ describe('> glue.ts', () => {
 
         const glue = TestBed.inject(DatasetPreviewGlue)
 
-        
-
         store.setState({
           uiState: {
             previewingDatasetFiles: [ file1 ]
@@ -282,7 +280,7 @@ describe('> glue.ts', () => {
         // debounce at 100ms
         tick(200)
 
-        const req = ctrl.expectOne(`${DS_PREVIEW_URL}/${datasetId}/${encodeURIComponent(filename)}`)
+        const req = ctrl.expectOne(`${DS_PREVIEW_URL}/${encodeURIComponent('minds/core/dataset/v1.0.0')}/${datasetId}/${encodeURIComponent(filename)}`)
         req.flush(nifti)
 
         const { name, volumeMetadata } = nifti
diff --git a/src/glue.ts b/src/glue.ts
index 1e2cc043c..bee292f7e 100644
--- a/src/glue.ts
+++ b/src/glue.ts
@@ -120,8 +120,8 @@ export class DatasetPreviewGlue implements IDatasetPreviewGlue, OnDestroy{
   }
 
   static GetDatasetPreviewId(data: IDatasetPreviewData ){
-    const { datasetId, filename } = data
-    return `${datasetId}:${filename}`
+    const { datasetSchema = 'untitled', datasetId, filename } = data
+    return `${datasetSchema}/${datasetId}:${filename}`
   }
 
   static GetDatasetPreviewFromId(id: string): IDatasetPreviewData{
@@ -196,12 +196,12 @@ export class DatasetPreviewGlue implements IDatasetPreviewGlue, OnDestroy{
   }
 
   private fetchedDatasetPreviewCache: Map<string, any> = new Map()
-  public getDatasetPreviewFromId({ datasetId, filename }: IDatasetPreviewData){
-    const dsPrvId = DatasetPreviewGlue.GetDatasetPreviewId({ datasetId, filename })
+  public getDatasetPreviewFromId({ datasetSchema = 'minds/core/dataset/v1.0.0', datasetId, filename }: IDatasetPreviewData){
+    const dsPrvId = DatasetPreviewGlue.GetDatasetPreviewId({ datasetSchema, datasetId, filename })
     const cachedPrv = this.fetchedDatasetPreviewCache.get(dsPrvId)
     const filteredDsId = /[a-f0-9-]+$/.exec(datasetId)
     if (cachedPrv) return of(cachedPrv)
-    return this.http.get(`${DS_PREVIEW_URL}/${filteredDsId}/${encodeURIComponent(filename)}`, { responseType: 'json' }).pipe(
+    return this.http.get(`${DS_PREVIEW_URL}/${encodeURIComponent(datasetSchema)}/${filteredDsId}/${encodeURIComponent(filename)}`, { responseType: 'json' }).pipe(
       map(json => {
         return {
           ...json,
diff --git a/src/services/state/uiState.store.helper.ts b/src/services/state/uiState.store.helper.ts
index 376c4d788..2f712457a 100644
--- a/src/services/state/uiState.store.helper.ts
+++ b/src/services/state/uiState.store.helper.ts
@@ -33,6 +33,7 @@ export enum EnumWidgetTypes{
 }
 
 export interface IDatasetPreviewData{
+  datasetSchema?: string
   datasetId: string
   filename: string
 }
diff --git a/src/ui/databrowserModule/constants.ts b/src/ui/databrowserModule/constants.ts
index 617d39598..58ec6aa08 100644
--- a/src/ui/databrowserModule/constants.ts
+++ b/src/ui/databrowserModule/constants.ts
@@ -95,4 +95,4 @@ export interface DatasetPreview {
   filename: string
 }
 
-export const GET_KGDS_PREVIEW_INFO_FROM_ID_FILENAME: InjectionToken<({ datasetId, filename }) => Observable<any>> = new InjectionToken('GET_KGDS_PREVIEW_INFO_FROM_ID_FILENAME')
+export const GET_KGDS_PREVIEW_INFO_FROM_ID_FILENAME: InjectionToken<({ datasetSchema, datasetId, filename }) => Observable<any>> = new InjectionToken('GET_KGDS_PREVIEW_INFO_FROM_ID_FILENAME')
diff --git a/src/ui/databrowserModule/preview/preview.base.ts b/src/ui/databrowserModule/preview/preview.base.ts
index 3caeef0ff..b1191fdd3 100644
--- a/src/ui/databrowserModule/preview/preview.base.ts
+++ b/src/ui/databrowserModule/preview/preview.base.ts
@@ -16,6 +16,9 @@ export class PreviewBase implements OnChanges{
   @Input()
   datasetId: string
 
+  @Input()
+  datasetSchema: string = 'minds/core/dataste/v1.0.0'
+
   previewtype: EnumPreviewFileTypes
 
   fetchingFlag: boolean = false
@@ -28,10 +31,10 @@ export class PreviewBase implements OnChanges{
      * if already complete, do not attempt to fetch
      */
 
-    const { datasetId, filename } = this
+    const { datasetId, filename, datasetSchema } = this
     if (!filename || !datasetId) return
     this.fetchingFlag = true
-    this.getDatasetPreviewFromId({ datasetId, filename })
+    this.getDatasetPreviewFromId({ datasetSchema, datasetId, filename })
       .subscribe(
         file => {
           this.fetchingFlag = false
@@ -42,7 +45,7 @@ export class PreviewBase implements OnChanges{
   }
 
   constructor(
-    private getDatasetPreviewFromId: ({ datasetId, filename }) => Observable<any>
+    private getDatasetPreviewFromId: ({ datasetSchema, datasetId, filename }) => Observable<any>
   ){
     
   }
diff --git a/src/ui/databrowserModule/preview/previewDatasetFile.directive.ts b/src/ui/databrowserModule/preview/previewDatasetFile.directive.ts
index f3f649ddf..d52c6aab0 100644
--- a/src/ui/databrowserModule/preview/previewDatasetFile.directive.ts
+++ b/src/ui/databrowserModule/preview/previewDatasetFile.directive.ts
@@ -38,7 +38,14 @@ export class PreviewDatasetFile extends PreviewBase implements OnChanges{
   }
 
   @Input('iav-dataset-preview-dataset-file-kgschema')
-  kgSchema: string = `minds/core/dataset/v1.0.0`
+  set kgSchema(val){
+    if (!val) return
+    this.datasetSchema = val
+  }
+
+  get kgSchema(){
+    return this.datasetSchema
+  }
 
   @Input('iav-dataset-preview-dataset-file-fullid')
   fullId: string
diff --git a/src/ui/parcellationRegion/regionMenu/regionMenu.template.html b/src/ui/parcellationRegion/regionMenu/regionMenu.template.html
index 75d64eafe..9cde285d0 100644
--- a/src/ui/parcellationRegion/regionMenu/regionMenu.template.html
+++ b/src/ui/parcellationRegion/regionMenu/regionMenu.template.html
@@ -26,6 +26,7 @@
         [color]="previewDirective.active ? 'primary' : 'basic'"
         *ngFor="let originDataset of (region.originDatasets || []); let index = index"
         iav-dataset-preview-dataset-file
+        [iav-dataset-preview-dataset-file-kgschema]="originDataset.kgSchema"
         [iav-dataset-preview-dataset-file-kgid]="originDataset.kgId"
         [iav-dataset-preview-dataset-file-filename]="originDataset.filename"
         #previewDirective="iavDatasetPreviewDatasetFile"
-- 
GitLab