Made web app a bit more useful

This commit is contained in:
greg 2017-10-01 23:25:36 -07:00
parent 89482e5b5a
commit 29d307ff53
3 changed files with 24 additions and 11 deletions

View File

@ -13,7 +13,7 @@ fn js_bundle() -> Result<NamedFile, ()> {
NamedFile::open("static/bundle.js").map_err(|_| ())
}
#[derive(Serialize, Deserialize)]
#[derive(Debug, Serialize, Deserialize)]
struct Input {
source: String,
}
@ -25,6 +25,7 @@ struct Output {
#[post("/input", format = "application/json", data = "<input>")]
fn interpreter_input(input: Json<Input>) -> Json<Output> {
println!("INPUT {:?}", input);
let output = Output { text: "test interpreter output".to_string() };
Json(output)
}

View File

@ -1,6 +1,7 @@
<!DOCTYPE html>
<html>
<head>
<title>Schala Metainterpreter Web Evaluator</title>
</head>
<body>
<div id="main">

View File

@ -7,7 +7,7 @@ const serverAddress = "http://localhost:8000";
class CodeArea extends React.Component {
constructor(props) {
super(props);
this.state = {value: ""};
this.state = {value: "", lastOutput: null};
this.handleChange = this.handleChange.bind(this);
this.submit = this.submit.bind(this);
}
@ -17,25 +17,36 @@ class CodeArea extends React.Component {
}
submit(event) {
/*
console.log("This", this.state.value);
console.log("Event", this.state.value);
const source = this.state.value;
const options = {
url: `${serverAddress}/input`,
json: true,
body: {source: this.state.value}
body: { source }
};
request.post(options, (error, response, body) => {
console.log("resp", response);
console.log("body", body);
this.setState({lastOutput: body.text})
});
*/
}
renderOutput() {
if (!this.state.lastOutput) {
return null;
}
return <textarea readOnly value={ this.state.lastOutput } />;
}
render() {
return (<div>
<textarea value={ this.state.value } onChange={this.handleChange}>
</textarea>
<button onClick={ this.submit }>Run!</button>
<div className="input">
<textarea value={ this.state.value } onChange={this.handleChange}>
</textarea>
<button onClick={ this.submit }>Run!</button>
</div>
<div className="output">
{ this.renderOutput() }
</div>
</div>);
}
}