diff --git a/src/main.module.ts b/src/main.module.ts index f163f11d2f07ae6a10a9fef30c54adc205a5bf40..c55025199c41b7e7c32a17da846975f26f86fd96 100644 --- a/src/main.module.ts +++ b/src/main.module.ts @@ -26,8 +26,7 @@ import { LocalFileService } from "./services/localFile.service"; import { NgViewerUseEffect } from "./services/state/ngViewerState.store"; import { ViewerStateUseEffect } from "./services/state/viewerState.store"; import { UIService } from "./services/uiService.service"; -import { DatabrowserModule, OVERRIDE_IAV_DATASET_PREVIEW_DATASET_FN, DataBrowserFeatureStore, GET_KGDS_PREVIEW_INFO_FROM_ID_FILENAME } from "src/ui/databrowserModule"; -import { DatabrowserService } from "./ui/databrowserModule/databrowser.service"; +import { DatabrowserModule, OVERRIDE_IAV_DATASET_PREVIEW_DATASET_FN, DataBrowserFeatureStore, GET_KGDS_PREVIEW_INFO_FROM_ID_FILENAME, DatabrowserService } from "src/ui/databrowserModule"; import { ViewerStateControllerUseEffect } from "./ui/viewerStateController/viewerState.useEffect"; import { DockedContainerDirective } from "./util/directives/dockedContainer.directive"; import { DragDropDirective } from "./util/directives/dragDrop.directive"; @@ -57,6 +56,7 @@ import 'src/theme.scss' import { DatasetPreviewGlue, datasetPreviewMetaReducer, IDatasetPreviewGlue, GlueEffects } from './glue'; import { viewerStateHelperReducer, viewerStateFleshOutDetail, viewerStateMetaReducers, ViewerStateHelperEffect } from './services/state/viewerState.store.helper'; import { take } from 'rxjs/operators'; +import { TOS_OBS_INJECTION_TOKEN } from './ui/kgtos/kgtos.component'; import { UiEffects } from './services/state/uiState/ui.effects'; export function debug(reducer: ActionReducer<any>): ActionReducer<any> { @@ -247,12 +247,17 @@ export const GET_STATE_SNAPSHOT_TOKEN = new InjectionToken('GET_STATE_SNAPSHOT_T deps: [ DatasetPreviewGlue ] }, DatasetPreviewGlue, + + { + provide: TOS_OBS_INJECTION_TOKEN, + useFactory: (dbService: DatabrowserService) => dbService.kgTos$, + deps: [ DatabrowserService ] + } /** * TODO * once nehubacontainer is separated into viewer + overlay, migrate to nehubaContainer module */ - DatabrowserService, ], bootstrap : [ AtlasViewer, diff --git a/src/ui/databrowserModule/databrowser.module.ts b/src/ui/databrowserModule/databrowser.module.ts index b941f8ce5a44d2212d60a7bd2acf35eafecc774e..36896a9ef523193b0f5e1a7a29326a0dc2db4eec 100644 --- a/src/ui/databrowserModule/databrowser.module.ts +++ b/src/ui/databrowserModule/databrowser.module.ts @@ -44,6 +44,7 @@ import { PreviewCardComponent } from "./preview/previewCard/previewCard.componen import { LayerBrowserModule } from "../layerbrowser"; import { DatabrowserDirective } from "./databrowser/databrowser.directive"; import { ContributorModule } from "./contributor"; +import { DatabrowserService } from "./databrowser.service"; const previewEmitFactory = ( overrideFn: (file: any, dataset: any) => void) => { @@ -127,6 +128,7 @@ const previewEmitFactory = ( overrideFn: (file: any, dataset: any) => void) => { ], providers: [ KgSingleDatasetService, + DatabrowserService, { provide: IAV_DATASET_SHOW_DATASET_DIALOG_CMP, useValue: SingleDatasetView diff --git a/src/ui/databrowserModule/index.ts b/src/ui/databrowserModule/index.ts index a82fb38598b0d164ae5a105e0b99c1ce115218b9..faf02cbcb5592be67a504be04d1719dcb79aa177 100644 --- a/src/ui/databrowserModule/index.ts +++ b/src/ui/databrowserModule/index.ts @@ -5,6 +5,7 @@ export { } from './databrowser.module' export { DataBrowserFeatureStore, DATESTORE_FEATURE_KEY } from './store.module' +export { DatabrowserService } from './databrowser.service' export { DATASTORE_DEFAULT_STATE, diff --git a/src/ui/databrowserModule/singleDataset/singleDataset.base.ts b/src/ui/databrowserModule/singleDataset/singleDataset.base.ts index 4ff7e76f005846960807a4fc0d18bed3755ab012..be8f58cb8caf4339f7e4fc8eac166da51f94525d 100644 --- a/src/ui/databrowserModule/singleDataset/singleDataset.base.ts +++ b/src/ui/databrowserModule/singleDataset/singleDataset.base.ts @@ -1,5 +1,5 @@ -import { ChangeDetectorRef, Input, OnInit, TemplateRef, OnChanges, OnDestroy } from "@angular/core"; -import { Observable, Subject, Subscription, of, combineLatest } from "rxjs"; +import { ChangeDetectorRef, Input, TemplateRef, OnChanges, OnDestroy } from "@angular/core"; +import { Observable, Subject, Subscription, combineLatest } from "rxjs"; import { IDataEntry, IFile, IPublication } from 'src/services/state/dataStore.store' import { HumanReadableFileSizePipe } from "src/util/pipes/humanReadableFileSize.pipe"; import { DatabrowserService } from "../databrowser.service"; @@ -10,7 +10,7 @@ import { getKgSchemaIdFromFullId } from "../util/getKgSchemaIdFromFullId.pipe"; import { MatSnackBar } from "@angular/material/snack-bar"; import { ARIA_LABELS } from 'common/constants' -import { switchMap, catchError, distinctUntilChanged, filter } from "rxjs/operators"; +import { switchMap, distinctUntilChanged, filter } from "rxjs/operators"; import { IContributor } from "../contributor"; export { @@ -110,7 +110,7 @@ export class SingleDatasetBase implements OnChanges, OnDestroy { this.favedDataentries$ = this.dbService.favedDataentries$ this.subscriptions.push( - combineLatest( + combineLatest([ this.kgSchema$.pipe( distinctUntilChanged(), filter(v => !!v) @@ -119,13 +119,11 @@ export class SingleDatasetBase implements OnChanges, OnDestroy { distinctUntilChanged(), filter(v => !!v) ) - ).pipe( + ]).pipe( switchMap(([kgSchema, kgId]) => { this.fetchFlag = true this.cdr.markForCheck() - return this.singleDatasetService.getInfoFromKg({ kgSchema, kgId }).pipe( - catchError((err, obs) => of(null)) - ) + return this.singleDatasetService.getInfoFromKg({ kgSchema, kgId }) }) ).subscribe(dataset => { if (!dataset) return @@ -145,6 +143,12 @@ export class SingleDatasetBase implements OnChanges, OnDestroy { this.fetchFlag = false this.cdr.markForCheck() + }, + err => { + this.fetchFlag = false + this.name = `[This dataset cannot be fetched right now]` + this.description = ` ` + this.cdr.markForCheck() }) ) diff --git a/src/ui/kgtos/kgtos.component.ts b/src/ui/kgtos/kgtos.component.ts index e887d95f297b0e848df8f087169b09a14bd76444..52a3a4239f2c5a636fa0becdd1306f9621fa8921 100644 --- a/src/ui/kgtos/kgtos.component.ts +++ b/src/ui/kgtos/kgtos.component.ts @@ -1,6 +1,7 @@ -import { Component } from "@angular/core"; +import { Component, Inject, InjectionToken, Optional } from "@angular/core"; import { Observable } from "rxjs"; -import { DatabrowserService } from "../databrowserModule/databrowser.service"; + +export const TOS_OBS_INJECTION_TOKEN = new InjectionToken<Observable<string>>('TOS_STRING') @Component({ selector: 'kgtos-component', @@ -15,8 +16,8 @@ export class KGToS { public kgTos$: Observable<string> constructor( - private dbService: DatabrowserService, + @Optional() @Inject(TOS_OBS_INJECTION_TOKEN) kgTos$ ) { - this.kgTos$ = this.dbService.kgTos$ + this.kgTos$ = kgTos$ } }