import { Component, } from '@angular/core';

import { Observable } from 'rxjs';
import { Store } from '@ngrx/store';
import * as searchMultipleReducer from '../store/search-multiple.reducer';
import * as searchMultipleSelector from '../store/search-multiple.selector';
import * as coneSearchSelector from '../../shared/cone-search/store/cone-search.selector';
import { SearchMultipleQueryParams } from "../store/model";
import * as searchActions from '../../search/store/search.action';
import * as coneSearchActions from '../../shared/cone-search/store/cone-search.action';

@Component({
    selector: 'app-search-multiple',
    templateUrl: 'search-multiple.component.html'
})
export class SearchMultipleComponent {
    public currentStep: Observable<string>;
    public positionStepChecked: Observable<boolean>;
    public datasetsStepChecked: Observable<boolean>;
    public resultStepChecked: Observable<boolean>;
    public isValidConeSearch: Observable<boolean>;
    public noSelectedDatasets: Observable<boolean>;
    public queryParams: Observable<SearchMultipleQueryParams>;

    constructor(private store: Store<searchMultipleReducer.State>) {
        this.currentStep = store.select(searchMultipleSelector.getCurrentStep);
        this.positionStepChecked = store.select(searchMultipleSelector.getPositionStepChecked);
        this.datasetsStepChecked = store.select(searchMultipleSelector.getDatasetsStepChecked);
        this.resultStepChecked = store.select(searchMultipleSelector.getResultStepChecked);
        this.isValidConeSearch = store.select(coneSearchSelector.getIsValidConeSearch);
        this.noSelectedDatasets = store.select(searchMultipleSelector.getNoSelectedDatasets);
        this.queryParams = store.select(searchMultipleSelector.getQueryParams);
        this.store.dispatch(new searchActions.ResetSearchAction());
        this.store.dispatch(new coneSearchActions.DeleteConeSearchAction());
    }
}