From 89085d35ddf23811f370e8621d94261bbf93a102 Mon Sep 17 00:00:00 2001 From: Christian Mayer Date: Wed, 16 May 2018 17:01:26 +0200 Subject: [PATCH] Add text output for generated filter in Demo UI This adds a text area to output the serialized GeoStyler filter in the FilterDemoUi. --- src/app/Demo/FilterUi/FilterDemoui.tsx | 71 ++++++++++++++++++++++---- 1 file changed, 60 insertions(+), 11 deletions(-) diff --git a/src/app/Demo/FilterUi/FilterDemoui.tsx b/src/app/Demo/FilterUi/FilterDemoui.tsx index 17c192626..c808f8a99 100644 --- a/src/app/Demo/FilterUi/FilterDemoui.tsx +++ b/src/app/Demo/FilterUi/FilterDemoui.tsx @@ -1,12 +1,15 @@ import * as React from 'react'; -import { Button } from 'antd'; +import { Button, Input } from 'antd'; +const { TextArea } = Input; import GeoJsonDataParser from 'geostyler-geojson-parser'; import DataProvider from '../../../DataProvider/DataProvider'; -import ComparisonFilter from '../../../Component/Filter/ComparisonFilter/ComparisonFilter'; +import ComparisonFilterUi from '../../../Component/Filter/ComparisonFilter/ComparisonFilterUi'; import UploadButton from '../../../Component/UploadButton/UploadButton'; +import { ComparisonFilter } from 'geostyler-style'; + import './FilterDemoUi.css'; /** @@ -14,19 +17,22 @@ import './FilterDemoUi.css'; */ class FilterDemoUi extends React.Component { + /** The GeoStyler compliant ComparisonFilter object */ + gsFilter: ComparisonFilter; + constructor(props: any) { super(props); this.state = { inputData: null, - internalData: null, - comparisonFilters: [], - addButtonVisible: false + gsData: null, + gsFilterString: '', + comparisonFilters: [] }; } /** - * + * Parses the uploaded / imported GeoJSON and forwards it to the DataProvider * @param e */ parseGeoJson = (e: any) => { @@ -68,9 +74,8 @@ class FilterDemoUi extends React.Component { internalDataPromise.then((internalData) => { this.setState({ - internalData: internalData, - comparisonFilters: [{id: 1}], - addButtonVisible: true + gsData: internalData, + comparisonFilters: [{id: 1}] }); }); @@ -85,6 +90,22 @@ class FilterDemoUi extends React.Component { this.setState({comparisonFilters: this.state.comparisonFilters.concat([{id: lastId + 1}])}); } + /** + * Reacts if the underlying ComparisonFilter changes and save it as member. + */ + onFilterChange = (compFilter: ComparisonFilter) => { + this.gsFilter = compFilter; + } + + /** + * Serializes the ComparisonFilter object and stores it in the state obejct. + */ + createFilter = () => { + this.setState({ + gsFilterString: JSON.stringify(this.gsFilter, null, 2) + }); + } + render() { return ( @@ -98,7 +119,7 @@ class FilterDemoUi extends React.Component { /> { - this.state.addButtonVisible ? + this.state.comparisonFilters.length > 0 ? : + null + } + + { + this.state.comparisonFilters.length > 0 ? +