import { Component, OnInit } from '@angular/core'; import { Observable } from 'rxjs'; import { Store } from '@ngrx/store'; import { Dataset } from '../../metamodel/model'; import { SearchMultipleQueryParams } from "../store/model"; import { ConeSearch } from "../../shared/cone-search/store/model"; import * as searchMultipleActions from '../store/search-multiple.action'; import * as datasetActions from '../../metamodel/action/dataset.action'; import * as fromSearchMultiple from '../store/search-multiple.reducer'; import * as fromMetamodel from '../../metamodel/reducers'; import * as searchMultipleSelector from '../store/search-multiple.selector'; import * as metamodelSelector from '../../metamodel/selectors'; import * as coneSearchSelector from '../../shared/cone-search/store/cone-search.selector'; import { ScrollTopService } from '../../shared/service/sroll-top.service'; import {InitSearchByUrlAction} from "../store/search-multiple.action"; interface StoreState { searchMultiple: fromSearchMultiple.State; metamodel: fromMetamodel.State; } @Component({ selector: 'app-datasets', templateUrl: 'datasets.component.html' }) export class DatasetsComponent implements OnInit { public datasetSearchMetaIsLoading: Observable<boolean>; public datasetSearchMetaIsLoaded: Observable<boolean>; public currentStep: Observable<string>; public datasetList: Observable<Dataset[]>; public isValidConeSearch: Observable<boolean>; public coneSearch: Observable<ConeSearch>; public queryParams: Observable<SearchMultipleQueryParams>; constructor(private store: Store<StoreState>, private scrollTopService: ScrollTopService) { this.datasetSearchMetaIsLoading = store.select(metamodelSelector.getDatasetSearchMetaIsLoading); this.datasetSearchMetaIsLoaded = store.select(metamodelSelector.getDatasetSearchMetaIsLoaded); this.currentStep = store.select(searchMultipleSelector.getCurrentStep); this.datasetList = store.select(metamodelSelector.getDatasetList); this.isValidConeSearch = this.store.select(coneSearchSelector.getIsValidConeSearch); this.coneSearch = this.store.select(coneSearchSelector.getConeSearch); this.queryParams = this.store.select(searchMultipleSelector.getQueryParams); } ngOnInit() { // Create a micro task that is processed after the current synchronous code // This micro task prevent the expression has changed after view init error Promise.resolve(null).then(() => this.store.dispatch(new searchMultipleActions.InitSearchByUrlAction())); Promise.resolve(null).then(() => this.store.dispatch(new searchMultipleActions.ChangeStepAction('datasets'))); this.store.dispatch(new datasetActions.LoadDatasetSearchMetaAction()); this.scrollTopService.setScrollTop(); } checkStep(): void { this.store.dispatch(new searchMultipleActions.DatasetsCheckedAction()); } updateDatasetList(datasetList: string[]) { console.log(datasetList); } }