import { NgModule } from "@angular/core"; import { ComponentsModule } from "./components/components.module"; import { DragDropModule } from '@angular/cdk/drag-drop' import { UIModule } from "./ui/ui.module"; import { LayoutModule } from "./layouts/layout.module"; import { AtlasViewer } from "./atlasViewer/atlasViewer.component"; import { StoreModule, Store, select } from "@ngrx/store"; import { viewerState, dataStore,spatialSearchState,uiState, ngViewerState, pluginState, viewerConfigState } from "./services/stateStore.service"; import { GetNamesPipe } from "./util/pipes/getNames.pipe"; import { CommonModule } from "@angular/common"; import { GetNamePipe } from "./util/pipes/getName.pipe"; import { FormsModule } from "@angular/forms"; import { AngularMaterialModule } from 'src/ui/sharedModules/angularMaterial.module' import { AtlasViewerDataService } from "./atlasViewer/atlasViewer.dataService.service"; import { WidgetUnit } from "./atlasViewer/widgetUnit/widgetUnit.component"; import { WidgetServices } from './atlasViewer/widgetUnit/widgetService.service' import { fasTooltipScreenshotDirective,fasTooltipInfoSignDirective,fasTooltipLogInDirective,fasTooltipNewWindowDirective,fasTooltipQuestionSignDirective,fasTooltipRemoveDirective,fasTooltipRemoveSignDirective } from "./util/directives/glyphiconTooltip.directive"; import { TooltipModule } from "ngx-bootstrap/tooltip"; import { TabsModule } from 'ngx-bootstrap/tabs' import { ModalUnit } from "./atlasViewer/modalUnit/modalUnit.component"; import { AtlasViewerURLService } from "./atlasViewer/atlasViewer.urlService.service"; import { ToastComponent } from "./components/toast/toast.component"; import { GetFilenameFromPathnamePipe } from "./util/pipes/getFileNameFromPathName.pipe"; import { AtlasViewerAPIServices } from "./atlasViewer/atlasViewer.apiService.service"; import { PluginUnit } from "./atlasViewer/pluginUnit/pluginUnit.component"; import { NewViewerDisctinctViewToLayer } from "./util/pipes/newViewerDistinctViewToLayer.pipe"; import { ToastService } from "./services/toastService.service"; import { AtlasWorkerService } from "./atlasViewer/atlasViewer.workerService.service"; import { HelpDirective } from "./util/directives/help.directive"; import { ToastContainerDirective } from "./util/directives/toastContainer.directive"; import { DockedContainerDirective } from "./util/directives/dockedContainer.directive"; import { FloatingContainerDirective } from "./util/directives/floatingContainer.directive"; import { PluginFactoryDirective } from "./util/directives/pluginFactory.directive"; import { FloatingMouseContextualContainerDirective } from "./util/directives/floatingMouseContextualContainer.directive"; import { AuthService } from "./services/auth.service"; import { ViewerConfiguration, LOCAL_STORAGE_CONST } from "./services/state/viewerConfig.store"; import { FixedMouseContextualContainerDirective } from "./util/directives/FixedMouseContextualContainerDirective.directive"; import { DatabrowserService } from "./ui/databrowserModule/databrowser.service"; import { TransformOnhoverSegmentPipe } from "./atlasViewer/onhoverSegment.pipe"; import {HttpClientModule} from "@angular/common/http"; import { EffectsModule } from "@ngrx/effects"; import { UseEffects } from "./services/effect/effect"; import { MatDialogModule, MatTabsModule } from "@angular/material"; @NgModule({ imports : [ FormsModule, CommonModule, LayoutModule, ComponentsModule, DragDropModule, UIModule, AngularMaterialModule, /** * move to angular material module */ MatDialogModule, MatTabsModule, TooltipModule.forRoot(), TabsModule.forRoot(), EffectsModule.forRoot([ UseEffects ]), StoreModule.forRoot({ pluginState, viewerConfigState, ngViewerState, viewerState, dataStore, spatialSearchState, uiState, }), HttpClientModule ], declarations : [ AtlasViewer, WidgetUnit, ModalUnit, PluginUnit, /* directives */ fasTooltipScreenshotDirective, fasTooltipInfoSignDirective, fasTooltipLogInDirective, fasTooltipNewWindowDirective, fasTooltipQuestionSignDirective, fasTooltipRemoveDirective, fasTooltipRemoveSignDirective, HelpDirective, ToastContainerDirective, DockedContainerDirective, FloatingContainerDirective, PluginFactoryDirective, FloatingMouseContextualContainerDirective, FixedMouseContextualContainerDirective, /* pipes */ GetNamesPipe, GetNamePipe, TransformOnhoverSegmentPipe, GetFilenameFromPathnamePipe, NewViewerDisctinctViewToLayer ], entryComponents : [ WidgetUnit, ModalUnit, ToastComponent, PluginUnit, ], providers : [ AtlasViewerDataService, WidgetServices, AtlasViewerURLService, AtlasViewerAPIServices, ToastService, AtlasWorkerService, AuthService, /** * TODO * once nehubacontainer is separated into viewer + overlay, migrate to nehubaContainer module */ DatabrowserService ], bootstrap : [ AtlasViewer ] }) export class MainModule{ constructor( authServce: AuthService, store: Store<ViewerConfiguration>, /** * instantiate singleton * allow for pre fetching of dataentry * TODO only fetch when traffic is idle */ dbSerivce: DatabrowserService ){ authServce.authReloadState() store.pipe( select('viewerConfigState') ).subscribe(({ gpuLimit, animation }) => { if (gpuLimit) { window.localStorage.setItem(LOCAL_STORAGE_CONST.GPU_LIMIT, gpuLimit.toString()) } if (typeof animation !== 'undefined' && animation !== null) { window.localStorage.setItem(LOCAL_STORAGE_CONST.ANIMATION, animation.toString()) } }) } }