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) {