Mercurial > hg > ng2-query-ismi
comparison src/app/query-state.ts @ 58:3b4046e0cc02 default
Merge from ng2-table branch.
d7c947909ab888c013171b8c037e4f9fab30fe57
author | casties |
---|---|
date | Wed, 29 Mar 2017 17:19:12 +0200 |
parents | d7c947909ab8 |
children |
comparison
equal
deleted
inserted
replaced
49:781a5387ca93 | 58:3b4046e0cc02 |
---|---|
1 import {QueryStep} from './query-step'; | 1 import {QueryStep} from './query-step'; |
2 import {ResultType} from './result-type'; | 2 import {ResultType} from './result-type'; |
3 import {QueryMode, getQueryModeById} from './query-mode'; | |
3 | 4 |
4 export class QueryState { | 5 export class QueryState { |
5 public steps: QueryStep[] = []; | 6 public steps: QueryStep[] = []; |
6 | 7 |
7 public resultCypherQuery: string; | 8 public resultCypherQuery: string; |
13 public results: any[]; | 14 public results: any[]; |
14 public numResults: number; | 15 public numResults: number; |
15 public resultTypes: string; | 16 public resultTypes: string; |
16 public resultType: ResultType; | 17 public resultType: ResultType; |
17 public resultInfo: string; | 18 public resultInfo: string; |
18 public resultAttributes: string[]; | 19 public resultAttributes: string[]; |
19 public resultRelations: any[]; | 20 public resultRelations: any[]; |
20 public resultColumns: any[]; | 21 public resultColumns: any[]; |
21 | 22 |
23 | |
24 /** | |
25 * Sets the query state from a string. | |
26 */ | |
27 setStateFromString(newStateString: string) { | |
28 try { | |
29 // state string is json | |
30 let newState = JSON.parse(newStateString); | |
31 // state should be list of steps | |
32 if (!Array.isArray(newState)) return; | |
33 let newSteps: QueryStep[] = []; | |
34 newState.forEach((elem) => { | |
35 // step is an array [mode, params] | |
36 if (!Array.isArray(elem)) return; | |
37 let mode = elem[0]; | |
38 // get QueryMode object | |
39 let qm: QueryMode = getQueryModeById(mode); | |
40 let params = elem[1]; | |
41 if (qm != null && params != null) { | |
42 // construct QueryStep | |
43 let qs = new QueryStep(qm, params); | |
44 newSteps.push(qs); | |
45 } | |
46 }); | |
47 if (newSteps.length > 0) { | |
48 // set new state | |
49 this.steps = newSteps; | |
50 } | |
51 } catch (e) { | |
52 console.error("Unable to set state from string: "+newStateString); | |
53 } | |
54 } | |
55 | |
56 getNumSteps() { | |
57 return this.steps.length; | |
58 } | |
59 | |
60 /** | |
61 * Returns the current query state as a string. | |
62 */ | |
63 getStateAsString(): string { | |
64 let stateList = this.steps.map((qs) => [qs.mode.id, qs.params]); | |
65 let stateStr = JSON.stringify(stateList); | |
66 return stateStr; | |
67 } | |
68 | |
69 /** | |
70 * Returns the cypher query as text for display. | |
71 */ | |
22 getQueryText() { | 72 getQueryText() { |
23 let text = this.resultCypherQuery; | 73 let text = this.resultCypherQuery; |
24 let hasParams = false; | 74 let hasParams = false; |
25 for (let k in this.cypherQueryParams) { | 75 for (let k in this.cypherQueryParams) { |
26 if (!hasParams) { | 76 if (!hasParams) { |