view src/app/query-app.component.ts @ 48:f8d6f8479e77 ng2-final

first working version with angular 2.4 (using old table w/o pager).
author casties
date Mon, 20 Mar 2017 18:12:48 +0100
parents b65a031c4967
children 308c96f734c8
line wrap: on
line source

import {Component} from '@angular/core';
//import {HTTP_PROVIDERS} from '@angular/http';

import {QueryState} from './query-state';
import {QueryStep} from './query-step';

import {QueryService} from './query.service';
import {NormalizationService} from './normalization.service';

import {QuerySelectComponent} from './query-select.component';
import {QueryResultComponent} from './query-result.component';
//import {QueryResultTableComponent} from './query-result-table.component';

@Component({
    selector: 'query-app',
    template: `
    <div class="container">    
        <h1>ISMI-Lab Query Builder</h1>
    </div>
    <div class="container">    
        <div>Select a query step:</div>
        <query-select *ngFor="let step of queryStepList; let i=index;"
            [queryStep]="step" [index]="i" 
            (queryChanged)="onQueryChanged($event)"></query-select>
        <div>
          <button (click)="addQueryStep()">add step</button>
          <button (click)="removeQueryStep()">remove step</button>
        </div>
    </div>
    <div class="container">
        <query-result *ngIf="queryState?.results"
            [resultInfo]="queryState.resultInfo"
            [queryState]="queryState">
        </query-result>
    </div>
        `,
    //directives: [QuerySelectComponent, QueryResultTableComponent],
    //providers: [QueryService, NormalizationService, HTTP_PROVIDERS]
})
    
export class QueryAppComponent { 
    public queryState: QueryState;
    public queryStepList: string[];
        
    constructor(private _queryService: QueryService) {
        this._queryService.setup();
        this.queryStepList = [];
        this.addQueryStep();
    }
    
    addQueryStep() {
        this.queryStepList.push('step');
    }
    
    removeQueryStep() {
        this.queryStepList.pop();
        this._queryService.state.steps.pop();
    }
    
    onQueryChanged(event: any) {
        console.debug("app.onquerychanged! event=", event);
        this._queryService.runQuery();
        this.queryState = this._queryService.getState();
    }
}