import { Component, OnInit } from '@angular/core';
import { Observable } from 'rxjs';
import { Store } from '@ngrx/store';

import { Database, Survey } from 'src/app/metamodel/store/models';
import * as databaseActions from 'src/app/metamodel/store/actions/database.actions';
import * as surveyActions from 'src/app/metamodel/store/actions/survey.actions';
import * as databaseSelector from 'src/app/metamodel/store/selectors/database.selector';
import * as surveySelector from 'src/app/metamodel/store/selectors/survey.selector';

@Component({
    selector: 'app-database-list',
    templateUrl: 'database-list.component.html'
})
export class DatabaseListComponent implements OnInit {
    public databaseListIsLoading: Observable<boolean>;
    public databaseListIsLoaded: Observable<boolean>;
    public databaseList: Observable<Database[]>;
    public surveyListIsLoading: Observable<boolean>;
    public surveyListIsLoaded: Observable<boolean>;
    public surveyList: Observable<Survey[]>;

    constructor(private store: Store<{ }>) {
        this.databaseListIsLoading = store.select(databaseSelector.selectDatabaseListIsLoading);
        this.databaseListIsLoaded = store.select(databaseSelector.selectDatabaseListIsLoaded);
        this.databaseList = store.select(databaseSelector.selectAllDatabases);
        this.surveyListIsLoading = store.select(surveySelector.selectSurveyListIsLoading);
        this.surveyListIsLoaded = store.select(surveySelector.selectSurveyListIsLoaded);
        this.surveyList = store.select(surveySelector.selectAllSurveys);
    }

    ngOnInit() {
        this.store.dispatch(databaseActions.loadDatabaseList());
        this.store.dispatch(surveyActions.loadSurveyList());
    }

    deleteDatabase(database: Database) {
        // this.store.dispatch(new databaseActions.DeleteDatabaseAction(database));
    }
}