Skip to content
Snippets Groups Projects
result-multiple.component.ts 5.41 KiB
Newer Older
  • Learn to ignore specific revisions
  • Tifenn Guillas's avatar
    Tifenn Guillas committed
    import { Component, OnInit, OnDestroy } from '@angular/core';
    
    import { Observable } from 'rxjs';
    import { Store } from '@ngrx/store';
    
    
    import { DatasetCount, SearchMultipleQueryParams } from '../store/model';
    
    import { Attribute, Dataset, Project } from '../../metamodel/model';
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
    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 attributeActions from '../../metamodel/action/attribute.action';
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
    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';
    
    interface StoreState {
        searchMultiple: fromSearchMultiple.State;
        metamodel: fromMetamodel.State;
    }
    
    @Component({
        selector: 'app-result-multiple',
        templateUrl: 'result-multiple.component.html'
    })
    export class ResultMultipleComponent implements OnInit, OnDestroy {
        public datasetSearchMetaIsLoading: Observable<boolean>;
        public datasetSearchMetaIsLoaded: Observable<boolean>;
        public projectList: Observable<Project[]>;
        public datasetList: Observable<Dataset[]>;
    
        // public attributeListIsLoading: Observable<boolean>;
        // public attributeListIsLoaded: Observable<boolean>;
        // public attributeList: Observable<Attribute[]>;
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
        public currentStep: Observable<string>;
        public coneSearch: Observable<ConeSearch>;
        public selectedDatasets: Observable<string[]>;
        // public searchData: Observable<any[]>;
        // public dataLength: Observable<number>;
        // public selectedData: Observable<number[] | string[]>;
        public queryParams: Observable<SearchMultipleQueryParams>;
    
        public datasetsCountIsLoading: Observable<boolean>;
        public datasetsCountIsLoaded: Observable<boolean>;
        public datasetsCount: Observable<DatasetCount[]>;
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
    
        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.projectList = store.select(metamodelSelector.getProjectList);
            this.datasetList = store.select(metamodelSelector.getDatasetList);
    
            // this.attributeListIsLoading = store.select(searchMultipleSelector.getAttributeListIsLoading);
            // this.attributeListIsLoaded = store.select(searchMultipleSelector.getAttributeListIsLoaded);
            // this.attributeList = store.select(searchMultipleSelector.getAttributeList);
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
            this.coneSearch = this.store.select(coneSearchSelector.getConeSearch);
            this.selectedDatasets = this.store.select(searchMultipleSelector.getSelectedDatasets);
            // this.searchData = this.store.select(searchSelector.getSearchData);
            // this.dataLength = this.store.select(searchSelector.getDataLength);
            // this.selectedData = this.store.select(searchSelector.getSelectedData);
            this.queryParams = this.store.select(searchMultipleSelector.getQueryParams);
    
            this.datasetsCountIsLoading = this.store.select(searchMultipleSelector.getDatasetsCountIsLoading);
            this.datasetsCountIsLoaded = this.store.select(searchMultipleSelector.getDatasetsCountIsLoaded);
            this.datasetsCount = this.store.select(searchMultipleSelector.getDatasetsCount);
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
        }
    
        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 searchActions.ResultChecked()));
            Promise.resolve(null).then(() => this.store.dispatch(new searchMultipleActions.ChangeStepAction('result')));
            Promise.resolve(null).then(() => this.store.dispatch(new searchMultipleActions.InitSearchByUrlAction()));
            this.store.dispatch(new datasetActions.LoadDatasetSearchMetaAction());
            this.scrollTopService.setScrollTop();
        }
    
    
        getDatasetsCount(): void {
            this.store.dispatch(new searchMultipleActions.RetrieveDatasetsCountAction());
        }
    
    
        retrieveMeta(dname: string): void {
            this.store.dispatch(new attributeActions.LoadAttributeSearchMetaAction(dname));
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
        // getSearchData(pagination: [number, number, number, string]): void {
        //     this.store.dispatch(new searchActions.RetrieveDataAction(pagination));
        //     this.store.dispatch(new searchActions.GetDataLengthAction());
        // }
        //
        // addSearchData(data: number | string): void {
        //     this.store.dispatch(new searchActions.AddSelectedDataAction(data));
        // }
        //
        // deleteSearchData(data: number | string): void {
        //     this.store.dispatch(new searchActions.DeleteSelectedDataAction(data));
        // }
        //
        // executeProcess(typeProcess: string): void {
        //     this.store.dispatch(new searchActions.ExecuteProcessAction(typeProcess));
        // }
    
        ngOnDestroy() {
    
            this.store.dispatch(new searchMultipleActions.DestroyResultsAction());