Mercurial > hg > ng2-query-ismi
diff 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 |
line wrap: on
line diff
--- a/src/app/query-state.ts Mon Mar 20 18:50:31 2017 +0100 +++ b/src/app/query-state.ts Wed Mar 29 17:19:12 2017 +0200 @@ -1,5 +1,6 @@ import {QueryStep} from './query-step'; import {ResultType} from './result-type'; +import {QueryMode, getQueryModeById} from './query-mode'; export class QueryState { public steps: QueryStep[] = []; @@ -15,10 +16,59 @@ public resultTypes: string; public resultType: ResultType; public resultInfo: string; - public resultAttributes: string[]; + public resultAttributes: string[]; public resultRelations: any[]; public resultColumns: any[]; + + /** + * Sets the query state from a string. + */ + setStateFromString(newStateString: string) { + try { + // state string is json + let newState = JSON.parse(newStateString); + // state should be list of steps + if (!Array.isArray(newState)) return; + let newSteps: QueryStep[] = []; + newState.forEach((elem) => { + // step is an array [mode, params] + if (!Array.isArray(elem)) return; + let mode = elem[0]; + // get QueryMode object + let qm: QueryMode = getQueryModeById(mode); + let params = elem[1]; + if (qm != null && params != null) { + // construct QueryStep + let qs = new QueryStep(qm, params); + newSteps.push(qs); + } + }); + if (newSteps.length > 0) { + // set new state + this.steps = newSteps; + } + } catch (e) { + console.error("Unable to set state from string: "+newStateString); + } + } + + getNumSteps() { + return this.steps.length; + } + + /** + * Returns the current query state as a string. + */ + getStateAsString(): string { + let stateList = this.steps.map((qs) => [qs.mode.id, qs.params]); + let stateStr = JSON.stringify(stateList); + return stateStr; + } + + /** + * Returns the cypher query as text for display. + */ getQueryText() { let text = this.resultCypherQuery; let hasParams = false;