diff --git a/src/LexSetup.tsx b/src/LexSetup.tsx index 6282cbf..7024864 100644 --- a/src/LexSetup.tsx +++ b/src/LexSetup.tsx @@ -6,19 +6,16 @@ import * as XML from 'xml2js'; import { xmlToEntries } from './LexAccessors'; import { LexEditor } from './LexEditor'; -export class LexSetup extends React.Component { - xmlBuilder = new XML.Builder(); +export class LexXMLSelect extends React.Component { constructor(props: any) { super(props); this.state = { - xmlLoaded: false, dirty: false, xmlFiles: [], xmlFileName: 'new_es.xml' + xmlFiles: [], xmlFileName: 'new_es.xml' }; } public componentDidMount() { this.getXMLFiles(); - this.loadXML(); } - render() { let files: string[] = [].concat(this.state.xmlFiles); if (files.indexOf(this.state.xmlFileName as string) === -1) { @@ -27,15 +24,15 @@ export class LexSetup extends React.Component { let dropOptions = files.map((k: any, i: any, c: any) => { return { key: i, value: k, text: k }; }); - let selectFile = ( + let onFileChange = (e: any, d: any) => { + this.setState({ xmlFileName: d.value as string }); + this.props.onFileSelected(d.value); + }; + return ( { - this.setState({ xmlFileName: d.value as string }); - }} - onAddItem={(e, d) => { - this.setState({ xmlFileName: d.value as string }); - }} + onChange={onFileChange} + onAddItem={onFileChange} value={this.state.xmlFileName} compact={true} selection={true} @@ -47,6 +44,35 @@ export class LexSetup extends React.Component { }} /> ); + } + + private getXMLFiles() { + fetch('api/xmlfiles') + .then((response) => response.text()) + .then((jsonStr) => { + let xmlFiles = JSON.parse(jsonStr); + this.setState({ xmlFiles }); + }) + .catch((e) => { + console.log('errored :', e); + }); + } +} + +export class LexSetup extends React.Component { + xmlBuilder = new XML.Builder(); + xmlFileName = 'new_es.xml'; + constructor(props: any) { + super(props); + this.state = { + xmlLoaded: false, dirty: false, xmlFiles: [], + }; + } + public componentDidMount() { + this.loadXML(); + } + + render() { let saveButton = this.state.dirty ? (