annotate app/query-select.component.ts @ 14:7dc7ea95ca26

show result types below query steps.
author Robert Casties <casties@mpiwg-berlin.mpg.de>
date Thu, 21 Jan 2016 16:49:55 +0100
parents 98b435bb6c0c
children f84ff6781e57
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
6cd6c09032aa object type query with results!
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 6
diff changeset
1 import {Component, Output, EventEmitter, OnInit} from 'angular2/core';
1
59b7c3afcc6b first interface and http request.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
2
59b7c3afcc6b first interface and http request.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
3 import {QueryService} from './query.service';
59b7c3afcc6b first interface and http request.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
4 import {QueryMode} from './query-mode';
5
b06a5d61afed new query state stuff.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 4
diff changeset
5 import {QueryStep} from './query-step';
7
6cd6c09032aa object type query with results!
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 6
diff changeset
6 import {QueryState} from './query-state';
1
59b7c3afcc6b first interface and http request.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
7
0
39ec75917ef7 first checkin
casties
parents:
diff changeset
8
39ec75917ef7 first checkin
casties
parents:
diff changeset
9 @Component({
39ec75917ef7 first checkin
casties
parents:
diff changeset
10 selector: 'query-select',
39ec75917ef7 first checkin
casties
parents:
diff changeset
11 template: `
14
7dc7ea95ca26 show result types below query steps.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 13
diff changeset
12 <p *ngIf="resultInfo">&nbsp;&nbsp;&nbsp;result: {{resultInfo}}</p>
11
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
13 <div>
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
14 <form (ngSubmit)="onSubmit()">
3
c741a00d38de first list of object types :-)
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 1
diff changeset
15 <select (change)="onSelectMode($event)">
7
6cd6c09032aa object type query with results!
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 6
diff changeset
16 <option></option>
1
59b7c3afcc6b first interface and http request.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
17 <option *ngFor="#mode of queryModes" [value]="mode.id">
59b7c3afcc6b first interface and http request.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
18 {{mode.label}}
0
39ec75917ef7 first checkin
casties
parents:
diff changeset
19 </option>
39ec75917ef7 first checkin
casties
parents:
diff changeset
20 </select>
10
66dce99cef4e attribute contains works now.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 8
diff changeset
21
11
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
22 <span *ngIf="selectedMode.id=='type_is' || selectedMode.id=='relation_is'">
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
23 <select *ngIf="queryOptions" [(ngModel)]="selectedOption" (change)="onSelectOption($event)">
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
24 <option></option>
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
25 <option *ngFor="#option of queryOptions" [value]="option">
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
26 {{option}}
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
27 </option>
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
28 </select>
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
29 </span>
10
66dce99cef4e attribute contains works now.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 8
diff changeset
30
11
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
31 <span *ngIf="selectedMode.id=='att_contains' || selectedMode.id=='att_contains_norm'">
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
32 <select [(ngModel)]="selectedOption">
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
33 <option></option>
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
34 <option *ngFor="#option of queryOptions" [value]="option">
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
35 {{option}}
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
36 </option>
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
37 </select>
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
38 <span>contains</span>
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
39 <input type="text" [(ngModel)]="queryInput"/>
10
66dce99cef4e attribute contains works now.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 8
diff changeset
40 </span>
66dce99cef4e attribute contains works now.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 8
diff changeset
41 <button type="submit">Submit</button>
11
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
42 </form>
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
43 </div>
8
fa646ee46c19 more query generation.
casties
parents: 7
diff changeset
44 `,
14
7dc7ea95ca26 show result types below query steps.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 13
diff changeset
45 inputs: ['queryStep', 'index']
8
fa646ee46c19 more query generation.
casties
parents: 7
diff changeset
46 //outputs: ['queryChanged'] // this should work but doesn't
0
39ec75917ef7 first checkin
casties
parents:
diff changeset
47 })
1
59b7c3afcc6b first interface and http request.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
48
59b7c3afcc6b first interface and http request.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
49 export class QuerySelectComponent implements OnInit {
8
fa646ee46c19 more query generation.
casties
parents: 7
diff changeset
50 public queryStep: QueryStep;
fa646ee46c19 more query generation.
casties
parents: 7
diff changeset
51 public index: number;
14
7dc7ea95ca26 show result types below query steps.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 13
diff changeset
52 public resultInfo: string;
8
fa646ee46c19 more query generation.
casties
parents: 7
diff changeset
53 public queryModes: QueryMode[];
fa646ee46c19 more query generation.
casties
parents: 7
diff changeset
54 public selectedMode: QueryMode;
10
66dce99cef4e attribute contains works now.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 8
diff changeset
55 public queryOptions: string[];
66dce99cef4e attribute contains works now.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 8
diff changeset
56 public selectedOption: string;
66dce99cef4e attribute contains works now.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 8
diff changeset
57 public queryInput: string;
1
59b7c3afcc6b first interface and http request.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
58
7
6cd6c09032aa object type query with results!
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 6
diff changeset
59 @Output('queryChanged') queryChanged = new EventEmitter<QueryState>();
6cd6c09032aa object type query with results!
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 6
diff changeset
60
1
59b7c3afcc6b first interface and http request.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
61 constructor(private _queryService: QueryService) {}
59b7c3afcc6b first interface and http request.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
62
59b7c3afcc6b first interface and http request.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
63 ngOnInit() {
4
351c3df28602 work on result component.
casties
parents: 3
diff changeset
64 this.setup();
1
59b7c3afcc6b first interface and http request.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
65 }
59b7c3afcc6b first interface and http request.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
66
4
351c3df28602 work on result component.
casties
parents: 3
diff changeset
67 setup() {
8
fa646ee46c19 more query generation.
casties
parents: 7
diff changeset
68 console.log("query-select setup step=", this.queryStep);
1
59b7c3afcc6b first interface and http request.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
69 this.queryModes = this._queryService.getQueryModes();
14
7dc7ea95ca26 show result types below query steps.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 13
diff changeset
70 var step = this._queryService.state.steps[this.index-1];
7dc7ea95ca26 show result types below query steps.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 13
diff changeset
71 if (step != null) {
7dc7ea95ca26 show result types below query steps.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 13
diff changeset
72 this.resultInfo = step.resultInfo;
7dc7ea95ca26 show result types below query steps.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 13
diff changeset
73 }
7
6cd6c09032aa object type query with results!
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 6
diff changeset
74 // select first mode (too early?)
5
b06a5d61afed new query state stuff.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 4
diff changeset
75 this.selectedMode = this.queryModes[0];
b06a5d61afed new query state stuff.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 4
diff changeset
76 this.query2Options = this._queryService.getQueryOptions(this.selectedMode);
1
59b7c3afcc6b first interface and http request.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
77 }
0
39ec75917ef7 first checkin
casties
parents:
diff changeset
78
3
c741a00d38de first list of object types :-)
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 1
diff changeset
79 onSelectMode(event: any) {
1
59b7c3afcc6b first interface and http request.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
80 var selected = event.target.value;
5
b06a5d61afed new query state stuff.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 4
diff changeset
81 this.selectedMode = this.queryModes.find(mode => mode.id === selected);
10
66dce99cef4e attribute contains works now.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 8
diff changeset
82 this.queryOptions = this._queryService.getQueryOptions(this.selectedMode);
5
b06a5d61afed new query state stuff.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 4
diff changeset
83 }
b06a5d61afed new query state stuff.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 4
diff changeset
84
b06a5d61afed new query state stuff.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 4
diff changeset
85 onSelectOption(event: any) {
b06a5d61afed new query state stuff.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 4
diff changeset
86 var selected = event.target.value;
b06a5d61afed new query state stuff.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 4
diff changeset
87 console.debug("selected option:", selected);
11
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
88 this.selectedOption = selected;
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
89 this.onSubmit();
0
39ec75917ef7 first checkin
casties
parents:
diff changeset
90 }
10
66dce99cef4e attribute contains works now.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 8
diff changeset
91
66dce99cef4e attribute contains works now.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 8
diff changeset
92 onSubmit() {
66dce99cef4e attribute contains works now.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 8
diff changeset
93 console.debug("Submit! selectedMode=", this.selectedMode, " selectedOption=", this.selectedOption, " queryInput=", this.queryInput);
11
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
94 var step: QueryStep;
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
95 if (this.selectedMode.id == 'type_is') {
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
96 var opt = this.selectedOption;
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
97 if (opt) {
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
98 step = {'mode': this.selectedMode, 'objectType': opt};
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
99 }
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
100 } else if (this.selectedMode.id == 'relation_is') {
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
101 var opt = this.selectedOption;
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
102 if (opt) {
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
103 step = {'mode': this.selectedMode, 'relationType': opt};
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
104 }
13
98b435bb6c0c more query work.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 11
diff changeset
105 } else if (this.selectedMode.id == 'att_contains') {
10
66dce99cef4e attribute contains works now.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 8
diff changeset
106 var att = this.selectedOption;
66dce99cef4e attribute contains works now.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 8
diff changeset
107 var val = this.queryInput;
66dce99cef4e attribute contains works now.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 8
diff changeset
108 if (att && val) {
11
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
109 step = {'mode': this.selectedMode, 'attribute': att, 'value': val};
10
66dce99cef4e attribute contains works now.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 8
diff changeset
110 }
13
98b435bb6c0c more query work.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 11
diff changeset
111 } else if (this.selectedMode.id == 'att_contains_norm') {
98b435bb6c0c more query work.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 11
diff changeset
112 var att = this.selectedOption;
98b435bb6c0c more query work.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 11
diff changeset
113 var val = this.queryInput;
98b435bb6c0c more query work.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 11
diff changeset
114 if (att && val) {
14
7dc7ea95ca26 show result types below query steps.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 13
diff changeset
115 // run search term through normalizer
13
98b435bb6c0c more query work.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 11
diff changeset
116 this._queryService.fetchNormalizedString(val)
98b435bb6c0c more query work.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 11
diff changeset
117 .subscribe(
98b435bb6c0c more query work.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 11
diff changeset
118 data => {
98b435bb6c0c more query work.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 11
diff changeset
119 console.debug("openmind norm data=", data);
98b435bb6c0c more query work.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 11
diff changeset
120 step = {'mode': this.selectedMode, 'attribute': att, 'value': val, 'normValue': data.normalized_text};
98b435bb6c0c more query work.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 11
diff changeset
121 this._queryService.setQueryStep(this.index, step);
14
7dc7ea95ca26 show result types below query steps.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 13
diff changeset
122 // query has changed now
13
98b435bb6c0c more query work.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 11
diff changeset
123 this.queryChanged.emit(this._queryService.getState());
98b435bb6c0c more query work.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 11
diff changeset
124 },
98b435bb6c0c more query work.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 11
diff changeset
125 err => console.error("openmind norm error=", err),
98b435bb6c0c more query work.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 11
diff changeset
126 () => console.debug("openmind norm query Complete")
98b435bb6c0c more query work.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 11
diff changeset
127 );
14
7dc7ea95ca26 show result types below query steps.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 13
diff changeset
128 // query has not been set yet
13
98b435bb6c0c more query work.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 11
diff changeset
129 return;
98b435bb6c0c more query work.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 11
diff changeset
130 }
10
66dce99cef4e attribute contains works now.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 8
diff changeset
131 }
11
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
132
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
133 if (step != null) {
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
134 this._queryService.setQueryStep(this.index, step);
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
135 this.queryChanged.emit(this._queryService.getState());
6989cd00e8d7 relations work now as well as longer queries.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 10
diff changeset
136 }
10
66dce99cef4e attribute contains works now.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 8
diff changeset
137 }
0
39ec75917ef7 first checkin
casties
parents:
diff changeset
138 }